数码管显示控制.ppt

上传人:本田雅阁 文档编号:3341660 上传时间:2019-08-14 格式:PPT 页数:35 大小:779.54KB
返回 下载 相关 举报
数码管显示控制.ppt_第1页
第1页 / 共35页
数码管显示控制.ppt_第2页
第2页 / 共35页
数码管显示控制.ppt_第3页
第3页 / 共35页
数码管显示控制.ppt_第4页
第4页 / 共35页
数码管显示控制.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《数码管显示控制.ppt》由会员分享,可在线阅读,更多相关《数码管显示控制.ppt(35页珍藏版)》请在三一文库上搜索。

1、目录,数码管循环显示09,C语言语句结构,多个数码管动态扫描显示,099计数器显示(静态显示),七段字形译码器74LS47应用,数码管循环显示09,目 录,利用AT89S52单片机的P1口的P2.0P2.6七个引脚 ,使其依次连接到一个共阴极LED数码管的ah七个位段控制引脚上,数码管的公共端接地,编写程序使数码管上循环显示 09 十个数字。,工作任务,预备知识:,单片机系统中人机交流的显示部分主要有以下三种构成方式: 1、LED发光二极管显示(已学); 2、LED数码管显示(本章学习); 3、LCD液晶显示;,1LED数码管 LED数码管是将8个发光二极管封装而成的,每段为一发光二极管,其字

2、形结构如图(a)所示。选择不同字段发光,可显示出不同的字形,例如,当a、b、c、d、e、f、g字段亮时,显示出字符“8”;当a、f、g、c、d字段亮时,显示出字符“5”。图(b)所示为单个LED数码管的引脚排列图,图中com引脚是单个LED数码管的公共端。,(a)字型结构图,返回本节,共阳极数码管 内部8个LED的阳极连接在一起作为公共引出端; 只有在公共端接高电平时,该数码管才会亮。 共阴极数码管 内部8个LED的阴极连接在一起作为公共引出端; 只有在公共端接低电平时,该数码管才会亮。,LED数码管引脚及内部结构,返回本节,2. 数码管的字型编码,D7 D6 D5 D4 D3 D2 D1 D

3、0,数码管编码规则,LED数码管字型编码表,返回本节,3. 数码管的显示方法 (1)动态显示。 一位一位地轮流点亮各位数码管的显示方式。 即在某一时段,只选中一位数码管的“位选端”,并送出相应的字型编码,在下一时段按顺序选通另外一位数码管,并送出相应的字型编码。依此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。这一过程称为动态扫描显示。 (2)静态显示。 指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。 各位数码管相互独立,公共端恒定接地(共阴极)或+5V(共阳极)。每个数码管的八个位段分别与一个八位I/O端口相连。I/O端口只要有字型码输出,数码管就显示给定字符,并保

4、持不变,直到I/O口输出新的段码。,返回本节,(1) 74LS245 74LS245是8路同相三态双向数据总线驱动芯片,具有双向三态功能,既可以输出,也可以输入数据。结构如图所示。 A、B : 总线端,: ( )三态允许端(低电平有效) DIR : ( ) 方向控制端(DIR=“1”,信号由 A 向 B 传输;反之,信号由B传向A),4。电路设计,返回本节,(2). 数码管显示电路设计 按照工作任务要求,数码管显示电路是由单片机最小应用系统、一片1位的共阴极LED数码管、一片74LS245驱动芯片外加限流电阻RN1(RX8关键词)构成,如图所示。,返回本节,5.程序设计,1.数码管显示功能实现

5、分析 由于显示的数字 09 的字型码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字09 的顺序,把每个数字的字型码按顺序排好!建立表格(用数组来实现)如下所示:,unsigned char code table= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;,2. 数码管显示程序如下: #include /包含AT89X52.H头文件 unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; unsigned char

6、dispcount; void delay (void) unsigned char i,j,k; for(i=40;i0;i-) for(j=40;j0;j-) for(k=248;k0;k-); ,返回本节,void main(void) while(1) for(dispcount=0;dispcount10;dispcount+) /显示09十个数字 P2=tabledispcount; /找到段码送P2口输出,数码管显示字符 delay (); ,返回本节,3.2 C语言语句结构,目 录,一、关系运算符和关系表达式,1. 关系运算符 C语言一共提供了6种关系运算符: (1)小于:“”

7、; (2)小于等于:“”; (3)大于:“”; (4)大于等于:“”; (5)等于:“”; (6)不等于:“!”。,2. 关系表达式 用关系运算符将两个表达式连接起来的式子,称为关系表达式。 关系表达式的值只有两种可能,即“真”和“假”,分别用“1” 和“0”来表示,关系运算” 两个值作一个比较,判断其比较的结果是否符合 给定的条件。关系运算的结果只有2种可能,即“真”和“假”。,二、逻辑运算符和逻辑表达式,关系运算符 描述的是单个条件。,1. 逻辑运算符 (1)“&”(逻辑与)是二元运算符,当且仅当两个运算量的值都为“真” 时,运算结果是“真”,否则为假; (2)“|”(逻辑或)是二元运算符

8、,当且仅当两个运算量的值都为“假”时 ,运算结果是“假”,否则为真; (3)“!”(逻辑非)是一元运算符,当运算量的值为“真”时,运算结果是 “假”,当运算量的值为“假”时,运算结果是“真”。,2. 逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子,称为逻辑表 达式。 一般逻辑表达式用于描述多个条件的组合。,注意:对于参与运算的量,只要是非零,就被当作是“真”。,四、switch 语句,在多分支程序中,当分支较多时,使用 if 嵌套程序冗长而且可读性 降低。此时可使用 C 语言提供的 switch 语句。,switch(表达式) case 常量表达式1:语句1 case 常量表达式2

9、:语句2 case 常量表达式n:语句n default: 语句n+1 ,注意事项: (1)各个case的常量表达式的值必须不同; (2)注意break语句的使用; (3)default子句可以省略不写(除非有必要)。,五、循环结构控制语句,1.while语句 其特点是:先判断表达式,后执行语句。,2. do-while语句 do-while语句特点是先执行循环体,然后判断循环条件是否成立。,其一般形式如下: do 循环体语句 while(表达式); 注意“ ;”不可少。,while和do-while 区别:前者若条件不成立,则不执行循环 体;而后者即使条件不成立,也要 执行循环体语句1次。,

10、3. for语句 for(表达式1;表达式2;表达式3)语句 两无限循环:for(;) ;while(1);,for 语句求解步骤: (1)先求解表达式1; (2)求解表达式2,其值为真,则执行for语句中指定的内嵌语句 (循环体),然后执行第(3)步如果为假,则结束循环; (3)求解表达式3; (4)转回第2步继续执行。,break语句: break语句结束整个循环过程,不再判断循环条件是否成立。 break语句只能用于循环语句和switch语句中。,continue语句: continue语句只结束本次循环,而不是终止整个循环的执行。 continue语句只能用于循环语句中;,多个数码管动

11、态扫描显示,目 录,显示器由 6 个共阴极 LED 数码管构成,使用 AT89S52 单片机,P0 口输出显示段码,经由一片 74LS245 驱动输出给 LED 数码管,P1 口输出位码(片选)给 LED 数码管。通过动态扫描程序使 6 个数码管显示 “123456”。,工作任务:,一、多个数码管动态显示电路设计,1.电路构成 (1)单片机最小应用系统 (2)一片74LS245驱动芯片构成 (3)限流排阻(RX8) (4)6位数码管,2.管脚分配 (1)P0口输出显示段码 P0.0P0.6通过一片74LS245依次接段码口ag, P0口I/O输出一定要外接上拉电阻; (2)P1口输出位码 P1

12、.0P1.5依次接位码口16, 如下图所示。,电路图改进措施,二、多个数码管动态显示程序设计,1多个数码管动态显示功能实现分析,动态扫描 逐个控制各个数码管的COM端使各个数码管轮流点亮。在轮流点亮数码管的扫描过程中,每位数码管的点亮时间极为短暂(约1ms)。但由于人的视觉暂留现象及发光二极管的余辉,给人的印象就是一组稳定的显示数据。,(1)优点 可以节省I/O端口资源; 硬件电路也较简单。 (2)缺点 显示稳定度不如静态显示方式; 占用了更多的CPU时间。,2. 动态扫描优缺点,3. 动态扫描程序如下示,#include /包含AT89X52.H头文件 unsigned char code

13、Tab=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; unsigned char code Col=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; /位码 void Delay() unsigned char i; for(i=0;i250;i+); void main() /同时显示123456 unsigned char j; while(1) for(j=1;j7;j+) P0=Tabj; P1=Colj-1; /开(共阴)数码管 Delay(); P1=0xff; /关数码管 Delay(); ,三、C语言数组,1一

14、维数组(必须要先定义,后使用),格式:类型说明符 数组名整型表达式; 使用说明: 1.同一数组,数据类型须相同; 2.数组名书写规则与标示符相同; 3.数组大小不许动态定义; 4.数组元素默认初始值为0; 5.C语言不对越界使用函数进行检测。,2二维数组,格式:类型说明符 数组名常量表达式1常量表达式2; 二维数组初始化与一维数组类似。 可以按行分开赋值,如: int table43=1,2,3,4,5,6,7,8,9,10,11,12; 亦可按行连续赋值,如: int table43= 1,2,3,4,5,6,7,8,9,10,11,12;,099计数器显示(静态显示),目 录,利用AT89

15、S52单片机来制作一个099计数器。 要求使用一个手动计数按钮,实现099的计数,并且通过两个共阴数码管显示计数结果,数码管显示采用静态显示方式。,工作任务,一、0-99计数显示电路设计,1.电路构成 (1)单片机最小应用系统; (2)2个共阴极数码管; (3)1个开关电路; (4)P0口输出时的上拉电阻。,2.引脚分配 (1) P1.0 管脚接一个按钮,作为手动计数的按钮 (2)P2.0P2.6 接一个共阴数码管,作为099计数的个位数显示 (3)P0.0P0.6 接一个共阴数码管,作为099计数的十位数显示,二、0-99计数显示程序设计,静态显示的概念 指数码管显示某一字符时,相应的发光二

16、极管恒定导通或恒定截止。,2. 静态显示的优缺点 (1)优点 较小的电流就可以获得较高的亮度; 占用CPU时间较少; 编程简单; 显示便于检测和控制。 (2)缺点 占用较多的I/O口线; 硬件电路复杂,成本高; 只适合显示位数较少的场合。,3. 计数显示实现分析 (1)单片机对按键的识别的过程处理; (2)单片机对正确识别的按键进行计数,计数满时,又从0开始计数; (3)单片机对计数值要进行数码显示,计数值是16进制数,我们要把其拆开成十位和个位数字分别送出显示。 计数值对10求余,可得个位数字; 计数值对10整除,可得十位数字; (4)通过查表方式,分别显示出个位和十位数字。,4. 099计

17、数显示c语言程序,#include /包含AT89X52.H头文件 unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; unsigned char Count; /定义变量放置计数数值 void delay10ms(void) /定义10ms延时函数 ,void main(void) /主函数 Count=0; /计数变量初始为0 P0=tableCount/10; /十位数码管显示0 P2=tableCount%10; /个位数码管显示0 while(1) /按键扫描,计数显示处理 if(P

18、1_0=0) /键按下? delay10ms(); /延时去抖动 if(P1_0=0) /确定键按下 Count+; /计数加1 if(Count=100) /计数到100? Count=0; /到100回0 ,P0=tableCount/10; /显示十位数 P2=tableCount%10; /显示个位数 while(P1_0=0); /等键释放 ,C 语言程序是由一个个函数构成的,函数是C程序的基本模块,是构成结构化程序的基本单元。 一个C语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,有且仅有一个main()函数。C语言程序总是从main()函数开始执行。,

19、三、C语言函数,1.函数的分类 (1)从用户的角度 一类是标准函数(系统提供的库函数,用户可直接使用); 一类是用户自定义函数(用户根据根据问题需要自己定义,以解决用户的专门问题)。,(2)从函数定义的形式上划分 无参数函数; 有参数函; 空函数。,函数定义的一般形式: 函数类型说明符 函数名(形式参数表) 函数体 ,a) 无参数函数 无参数函数的定义形式为: 函数类型说明符 函数名( )函数体语句 如本例中的void main()就是一个无参数函数。 b)有参数函数 有参数函数的定义形式为: 函数类型说明符 函数名(形式参数表)函数体语句,2函数的调用 函数调用的一般形式如下: 函数名 (实

20、参列表);,(1)说明: 1)在实参表中,实参的个数与顺序必须和形参的个数与顺序相同, 实参的数据类型必须和对应的形参数据类型相同。 2)无参数调用时,调用的函数名后括号不能省略。 3)函数间可以互相调用,但不能调用main()函数。,(2)函数三种调用方式 1)函数语句。 形式:函数名(); eg:delay10ms(); 2)函数表达式。 eg: result=3*max(a,b); 3)函数参数。被调函数作为一个函数的实参。 eg:m=max(max(a,b),c);,(3)一个函数调用另一个函数必须要具备的条件 1)如果使用库函数,一般还需在文件开头用#include命令将调用库函数所

21、需的有关信息包含到本文件中来。 2)如果自定义函数,且该函数与调用它的函数(主调函数)在同一个文件中,一般应在主调函数中对被调用函数作声明,除非被调函数的定义在主调函数之前。如果不是在本文件中定义的函数,那么在程序开始要用extern修饰符进行函数原型说明。,3函数的返回值 在C语言中,一般使用 return 语句由被调函数向主调函数返回值,该语句有下列用途: (1)它能立即从所在的函数中退出,返回到调用它的程序中去; (2)返回一个值给调用它的函数。 返回语句一般有如下的形式: return; return 表达式; return(表达式); 函数返回值类型: 自定义函数的返回值类型; 如无

22、定义,系统默认为一 int 型的值。,七段字形译码器74LS47应用,目 录,74LS47是4位二进制编码十进制数(BCD码)从A、B、C和D引脚输入,译码成七段字形码,从QA、QB、QC、QD、QE、QF和QG引脚输出。 74LS47是输出低电平有效的七段字形译码器。 输入端由高到低依次为DCBA。,常用的BCD 码译码器有TTL 之7446、7447、7448、7449 与CMOS 之4511 等等。其中7446、7447 必须使用共阳极七段显示器,7448、7449、4511等则使用共阴极七段显示器。,1)LT:试灯输入,是为了检查数码管各段是否能正常发光而设置的。当LT=0时,无论输入

23、A,B,C,D为何种状态,译码器输出均为低电平,若驱动的数码管正常,是显示8。 2)BI:灭灯输入,是为控制多位数码显示的灭灯所设置的。BI=0时。不论LT和输入A,B,C,D为何种状态,译码器输出均为高电平,使共阳极7段数码管熄灭。 3)RBI:灭零输入,它是为使不希望显示的0熄灭而设定的。当对每一位A=B=C=D=0时,本应显示0,但是在RBI=0作用下,使译码器输出全1。其结果和加入灭灯信号的结果一样,将0熄灭。 4)RBO:灭零输出,它和灭灯输入BI共用一端,两者配合使用,可以实现多位数码显示的灭零控制。,#include #define uchar unsigned char /delay :1ms /crystal:12MHz void delay_1ms(uchar m) uchar a,b,c; for(a=m;a!=0;a-) for(b=2;b!=0;b-) for(c=247;c!=0;c-); ,void main() uchar i=0; P2=(i/10)99) i=0; while(P1_0=0); P2=(i/10)4)|(i%10); ,程序代码如下:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1