工作模块3 数码管的显示控制(课件)-《单片机技术应用》同步教学(人大版)

2024-07-10
| 48页
| 58人阅读
| 1人下载
普通

内容正文:

工作模块3---数码管显示控制 同学们,大家好!上一讲我们学习了矩阵键盘识别原理,并绘制了接口电路,今天我们利用矩阵键盘实现数字键盘的功能 1 情境导入 在乘坐电梯时,到了目标楼层,就会有一个电子显示器件显示当前楼层,这个就是数码管,如图3.1所示。在家中或者办公室中,会使用一个电子时钟显示当前时间,这个显示器件也是数码管,如图3.2所示。许多场合,都会用到数码管来显示数字,有时用到1个,有时用到多个。当走上电子技术员或者单片机工程师工作岗位后,也会经常用到数码管,学习单片机控制数码管的显示,有着非常现实的意义。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 内容图谱 矩阵键盘程序设计总体思路:单片机采用编程扫描法来监视键盘的输入,采用反转法获取键值。 具体编程步骤如下: 任务描述 某电子科技有限公司要生产一批计算器,显示模块采用数码管显示,现在你作为公司技术员,要实现显示模块的开发制作。初期任务是通过单片机控制1位数码管的显示,显示内容是数字从0-9,数字切换的时间间隔是1秒,设计电路原理图,编写程序,并仿真功能。 初级能力:实现单片机控制一位共阳极数码管显示的功能。 高级能力:能够设计单品机驱动共阳极数码管和共阴极数码管的硬件电路,并编写显示程序。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 执行思路 矩阵键盘程序设计总体思路:单片机采用编程扫描法来监视键盘的输入,采用反转法获取键值。 具体编程步骤如下: 实施过程 3-1-1 Proteus ISIS设计电路原理图 共阳极数码管 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 实施过程 3-1-1 Proteus ISIS设计电路原理图 序号 元件名称 元件型号 元件参数 1 单片机 AT89C52 2 瓷片电容 CAP 30pF 3 电解电容 CAP-ELEC 22uF 4 晶振 CRTSTAL 12MHZ 5 按键 BUTTON 6 电阻 RES 10k、470 7 排阻 Respack-8 10K 8 数码管 7SEG-MAP1-CA 共阳极数码管 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 实施过程 3-1-1 绘制原理图重点 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 知识链接 3-1 数码管结构 数码管是一个8字的结构,8字的每个笔划都一个发光二极管,每个笔划称为一个段,因此“8”字一共是7段。在使用过程中还经常会用到小数点,加上小数点,其实是8段的数码管。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.1 数码管的结构 数码管的每个段本质都是一个发光二极管,而每个发光二极管分别有阳极和阴极,因此,数码管根据公共端的不同,可以分成共阴极和共阳极的数码管,如图3.13a,b所示,而且数码管的每个段,都给它一定的编号,分别是a,b,c,d,e,f,g段 ,外加一个dp点字段。一共是8个段,对应数码管的8个引脚,com端有两个引脚,需要接在一起,如图3.12 C所示。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.2 数码管的结构 以共阳极的数码管显示字形2为例,共阳极的数码管,公共端为高电平,需要某个段发光,则需要给相应的段送0,因此如果需要显示2,则可以得到相应的字形码如图3.13所示。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.2 数码管的结构 通过上面的分析,可以很容易得到共阳极数码管对于“2”的字形码为 10100100, 表示为BCD码即为:0xa4; 同理,共阴极数码管的“2”的字形码,即为相应共阳极字形码按位取反得到,即为0x5B,(0xff - 0xa4 = 0x5B)。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 表3-2 LED数码管显示字型码表 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 静态显示方式 每个数码管的段选线必须与一个八位I/O端口相连,公共端恒定接地或电源。静态显示是各位数码管恒定导通或截止。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。 静态显示 知识链接 3.3 数组的使用 具有相同类型的一批数据作为一个整体,叫做数组(Array),数组均由连续的存储单元组成,数组可以是一维的,也可以是多维的。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.1一维数组 1.一维数组的定义 定义形式:类型符 数组名 [常量表达式]; int arr[15]; //类型符:整型数据类型;数组名:arr,元素个数:15 char arr[20];//类型符:字符型数据类型;数组名:arr,元素个数:20 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.1一维数组 2.一维数组的初始化 数组初始化时,可以先定义数组再给数组赋值,也可以在定义数组的同时赋值,例如: int a[4] = {20, 45, 400, 22}; 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.1一维数组 3.数组的使用 先定义数组,才可以引用数组中的每个元素。数组元素的引用方式∶数组名[数组元素下标]。 disnum[0]=0xc0;disnum[1]=0xf9;disnum[2]=0xa4 也可以是整型表达式 例如b[i];c[6*i] 数组元素下标从0开始,长度为n的数组合法下标取值范围∶0 至n-1。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.1一维数组 void main() //主函数 { unsigned char i; int sum,ave,MCU_scores[6]={84,83,89,93,91,60}; sum=0; for(i=0;i<6;i++) //变量i,循环6次 { sum=sum+MCU_scores[i]; } Ave=sum/15; } } 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.2二维数组 1.二维数组的定义 类型说明符 数组名[ 常量表达式][ 常量表达式]; int a[3][4]; 表示定义了 3 行 4 列总共有 12 个元素的数组 a。这 12 个元素的名字依次是:a[0][0]、a[0][1]、a[0][2]、a[0][3];a[1][0]、a[1][1]、a[1][2]、a[1][3];a[2][0]、a[2][1]、a[2][2]、a[2][3]。。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.2二维数组 2.二维数组初始化 1) 分行给二维数组赋初值。 int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; 2) 也可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。比如 int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; 3) 也可以只对部分元素赋初值。比如: int a[3][4] = {{1, 2}, {5}, {9}}; 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.2二维数组 3.二维数组的使用 二维数组有行和列,数组的元素也是一个一个的输出。在一维数组中是用一个 for 循环进行输出,而二维数组元素的输出要使用两个 for 循环嵌套。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.3字符数组 1.字符数组 用来存放字符的数组称为字符数组, char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m'}; // 给部分数组元素赋值 char d[]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' }; //对全体元素赋值时可以省去长度 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.3字符数组 1.字符数组 C语言规定,可以将字符串直接赋值给字符数组 char str[10] = {"abcdefg"}; 或者char str[10] = "abcdefg"; 数组第 0 个元素为'a',第 1 个元素为'b',第 2 个元素为'c',后面的元素以此类推。为了方便,也可以不指定数组长度。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.3.3字符数组 2.字符串数组 字符串是一系列连续的字符的组合,字符串总是以'\0'空字符作为结尾,所以'\0'也被称为字符串结束标志,或者字符串结束符。该字符既不能显示,也没有控制功能。 例如,"abc123"从表面看起来只包含了 6 个字符,其实不然,C语言会在最后隐式地添加一个'\0',这个过程是在后台默默地进行的。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 实施过程 3-1-2 一位数码管显示参考程序 #include<reg51.h> //头文件 #define uchar unsigned char //定义常量uchar #define uint unsigned int //定义常量uint uchar code disnum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //code是把数组存储在程序存储区,这是共阳极数码管从0-9的字形编码 void delay(unsigned int i) //函数定义 { unsigned int j,k; //定义无符号整型变量j和k for(k=0;k<i;k++) //双重for循环语句实现延时 for(j=0;j<125;j++); } void main() //主函数 { uchar i; for(i=0;i<10;i++) //变量i,循环10次 { P0=disnum[i]; delay(1000); } } P0=disnum[i];语句是把数组disnum中的每一个元素赋值给P0,数码管的每一段是LED灯,把不同位置的LED灯点亮,就会构成要显示的数字。 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 实施过程 3-1-2 一位数码管显示参考程序 #include<reg51.h> //头文件 #define uchar unsigned char //定义常量uchar #define uint unsigned int //定义常量uint uchar code disnum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //code是把数组存储在程序存储区,这是共阳极数码管从0-9的字形编码 void delay(unsigned int i) //函数定义 { unsigned int j,k; //定义无符号整型变量j和k for(k=0;k<i;k++) //双重for循环语句实现延时 for(j=0;j<125;j++); } void main() //主函数 { uchar i; for(i=0;i<10;i++) //变量i,循环10次 { P0=disnum[i]; delay(1000); } } 定义数组disnum时,前面加上code,是把数组存储在程序存储区,节省数据存储区,但是定义在程序存储区,数组的元素不能更改。 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 控制要求:请设计单片机控制共阴极数码管的电路,并编写程序。 扩展任务 我们总结一下今天的学习内容:学习了1. 矩阵键盘的编程扫描法 2.采用反转法进行矩阵键盘键值识别 3.编写了矩阵键盘实现数字键盘的程序 课后作业:1. 请采用定时中断扫描实现数字键盘; 2.请编写获得键值采用扫描法的程序。 共阴极数码管与共阳极数码管硬件电路区别 扩展任务 小贴士:单片机驱动共阴极数码管电路图与共阳极电路图对比,区别有: 1.P0口接了上拉电阻后,数码管的控制引脚不用再接限流电阻; 2.共阴极数码管的型号是7SEG-MPX1-CC; 3.共阴极数码管的公共端接地。 我们总结一下今天的学习内容:学习了1. 矩阵键盘的编程扫描法 2.采用反转法进行矩阵键盘键值识别 3.编写了矩阵键盘实现数字键盘的程序 课后作业:1. 请采用定时中断扫描实现数字键盘; 2.请编写获得键值采用扫描法的程序。 任务3-2描述 通过单片机控制8位数码管的显示,使8位数码管同时稳定显示数字0-7,设计电路原理图,编写程序,并仿真功能。 初级能力:实现本次任务的显示功能。 高级能力:能够设计不同方案的硬件电路,并编写显示不同内容的程序。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 执行思路 思考并设计单片机连接8位数码管的电路,数码管的静态显示无论从电路和程序方面都无法实现8位数码管的控制,探索数码管的动态显示方式,灵活运用C语言的基本语句,编写数码管显示的程序。 矩阵键盘程序设计总体思路:单片机采用编程扫描法来监视键盘的输入,采用反转法获取键值。 具体编程步骤如下: 实施过程 3-2-1 Proteus ISIS设计电路原理图 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 知识链接 3.4 数码管动态显示原理 每位数码管都有8根段码线,一根位选线(公共端),按照静态显示的原理,一片STC89C51或者STC89C52RC等单片机,最多只能接4位数码管,当需要控制多位数码管的时候,I/O资源就不够。而在实际生产中,多需要控制多位数码管时,一般采用数码管的动态显示控制方式。。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 3.4 数码管的静态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。若数码管的数目不大于8位,则控制显示器公共极电位只需8位口(称为位选口),控制各位显示器所显示的字形也需要一个8位口(段选 口)。。 3.4 数码管的静态显示 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 补充:在使用电路板时,为了增加引脚的复用,经常使用74HC573数据锁存芯片 74HC573是8位数据锁存器。 1是低电压激活芯片 2~9脚是数据的输入脚从D0到D7 10脚是接地 11脚是高电压激活芯片 12~19脚是数据的输出脚 20是电源 数据锁存:当输入的数据消失时,在芯片的输出端,数据仍然保持;这个概念在并行数据扩展中经常使用到。 ◆OE:output_enable,输出使能; ◆LE:latch_enable,数据锁存使能,atch是锁存的意思; ◆Dn:第n路输入数据; ◆On:第n路输出数据; 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 补充:在使用电路板时,为了增加引脚的复用功能,经常使用74HC573锁存芯片 74HC573真值表,意思如下: 第一行/第二行:当OE=0、LE=1时,输出端数据等于输入端数据; 第三行:当OE=0、LE=0时,输出端保持不变; 第四行:当OE=1是无论Dn、LE为何,输出端为高阻态; 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 补充:在使用电路板时,为了增加引脚的复用功能,经常使用74HC573锁存芯片 高阻态 就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁。高阻态的概念在RS232和RS422通讯中还可以用到。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 知识链接 74HC573芯片 高阻态 就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁。高阻态的概念在RS232和RS422通讯中还可以用到。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 实施过程 3-2-2 数码管动态显示程序 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 实施过程 3-2-2 数码管动态显示程序 P0=~(0x01<<(i-1));<<:按位左移运算符,这条语句的功能是把0x01字节依次左移0位,1位,2位直到7位。 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 实施过程 3-2-2 数码管动态显示程序 数码管在动态显示时,要点亮一位数码管,段选信号和位选信号要配合,或者同时,或者时间间隔非常短,ms以内。每完成一位数码管显示时,要关一次数码管,可采用对公共端送关显示的信号,即共阳极数码管送0,共阴极数码管送1,否则数码管会将上一个字符显示在下一个字符位置上很短的时间,形成拖影,导致显示效果不好。 (1)判别有无键按下; (2)软件延时消抖; (3)再次确认有无键按下; (4)取得键值:反转法或键盘扫描取得闭合键的行、列号,并计算法或 查表法得到键值; (5)松手检测:判断闭合键是否释放,如没释放则继续等待; (6)键盘处理:将闭合键的键值保存,同时转去执行该闭合键的功能。 下面我们来编程! 扩展任务 控制要求:请再设计一款控制4位共阳极数码管动态显示的电路,不考虑单片机的引脚复用,并编写同时稳定显示中秋日期“0815”数字的程序。 数码管7SEG-MPX4-CA; 添加74LS245缓冲芯片,可进行数据双向传输,一般用于驱动LED灯或其他设备;添加NPN三极管PN2222(实物可以选择9013) 我们总结一下今天的学习内容:学习了1. 矩阵键盘的编程扫描法 2.采用反转法进行矩阵键盘键值识别 3.编写了矩阵键盘实现数字键盘的程序 课后作业:1. 请采用定时中断扫描实现数字键盘; 2.请编写获得键值采用扫描法的程序。 74HC245数字芯片引脚图 扩展任务 数据缓冲 :加强驱动能力74LS244/74LS245/74LS373/74LS573都具备数据缓冲的能力。 第1脚DIR(T/R),为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。   第2~9脚,第11~18脚“A”信号输入输出端,如果IR=“1”OE=“0”则A1输入B1输出,如果DIR=“0”OE=“0”则B1输入A1输出。 第19脚OE,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用。    我们总结一下今天的学习内容:学习了1. 矩阵键盘的编程扫描法 2.采用反转法进行矩阵键盘键值识别 3.编写了矩阵键盘实现数字键盘的程序 课后作业:1. 请采用定时中断扫描实现数字键盘; 2.请编写获得键值采用扫描法的程序。 扩展任务 我们总结一下今天的学习内容:学习了1. 矩阵键盘的编程扫描法 2.采用反转法进行矩阵键盘键值识别 3.编写了矩阵键盘实现数字键盘的程序 课后作业:1. 请采用定时中断扫描实现数字键盘; 2.请编写获得键值采用扫描法的程序。 扩展任务 我们总结一下今天的学习内容:学习了1. 矩阵键盘的编程扫描法 2.采用反转法进行矩阵键盘键值识别 3.编写了矩阵键盘实现数字键盘的程序 课后作业:1. 请采用定时中断扫描实现数字键盘; 2.请编写获得键值采用扫描法的程序。 内容梳理与总结 本工作模块完成了2个任务,介绍了数码管的结构和显示方式。知识点介绍了数组的使用,通过一系列的任务,训练了数码管的控制程序设计方法以及仿真电路的绘制与仿真方法。 要掌握的重点内容包括∶ 数码管的静态显示和动态显示程序编写方法。静态显示时,在数码管的段选线送上字形编码即可;数码管动态显示时,既要考虑段选线,也要考虑位选线。段选线控制数码管显示的字形,位选线控制着数码管的亮与灭。 我们先看矩阵键盘接口电路。P30-P33接行线,P34-P37接列线。 再 见 同学们,大家好!我是主讲教师杨敬娜。上一讲我们学习了矩阵键盘识别原理,并绘制了接口电路,今天我们利用矩阵键盘实现数字键盘的功能 48 $$

资源预览图

工作模块3 数码管的显示控制(课件)-《单片机技术应用》同步教学(人大版)
1
工作模块3 数码管的显示控制(课件)-《单片机技术应用》同步教学(人大版)
2
工作模块3 数码管的显示控制(课件)-《单片机技术应用》同步教学(人大版)
3
工作模块3 数码管的显示控制(课件)-《单片机技术应用》同步教学(人大版)
4
工作模块3 数码管的显示控制(课件)-《单片机技术应用》同步教学(人大版)
5
工作模块3 数码管的显示控制(课件)-《单片机技术应用》同步教学(人大版)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。