数码管显示控制.ppt

上传人:sccc 文档编号:5720327 上传时间:2023-08-13 格式: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 D0,数码管编码规则

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

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

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

6、 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)小于:“”;(2)小于等于:“”;(3)大于:“”;(4)大于等于:“”

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

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

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

10、先求解表达式1;(2)求解表达式2,其值为真,则执行for语句中指定的内嵌语句(循环体),然后执行第(3)步如果为假,则结束循环;(3)求解表达式3;(4)转回第2步继续执行。,break语句:break语句结束整个循环过程,不再判断循环条件是否成立。break语句只能用于循环语句和switch语句中。,continue语句:continue语句只结束本次循环,而不是终止整个循环的执行。continue语句只能用于循环语句中;,多个数码管动态扫描显示,目录,显示器由 6 个共阴极 LED 数码管构成,使用 AT89S52 单片机,P0 口输出显示段码,经由一片 74LS245 驱动输出给 LE

11、D 数码管,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.0P1.5依次接位码口16,如下图所示。,电路图改进措施,二、多个数码管动态显示程序设计,1多个数码管动态显示功能实现分析,动态扫描 逐个控制各个数码管的COM端使各个数码管轮

12、流点亮。在轮流点亮数码管的扫描过程中,每位数码管的点亮时间极为短暂(约1ms)。但由于人的视觉暂留现象及发光二极管的余辉,给人的印象就是一组稳定的显示数据。,(1)优点可以节省I/O端口资源;硬件电路也较简单。(2)缺点显示稳定度不如静态显示方式;占用了更多的CPU时间。,2.动态扫描优缺点,3.动态扫描程序如下示,#include/包含AT89X52.H头文件unsigned char code Tab=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;unsigned char code Col=0 xfe,0 xfd,

13、0 xfb,0 xf7,0 xef,0 xdf;/位码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=0 xff;/关数码管 Delay();,三、C语言数组,1一维数组(必须要先定义,后使用),格式:类型说明符 数组名整型表达式;使用说明:1.同一数组,数据类型须相同;2.数组名书写规则与标示符相同;3.数组大小不许动态定义;4.数组元素默认初始值为0;

14、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计数器显示(静态显示),目录,利用AT89S52单片机来制作一个099计数器。要求使用一个手动计数按钮,实现099的计数,并且通过两个共阴数码管显示计数结果,数码管显示采用静态显示方式。,工作任务,一、0-99计数显示电路设计,1.电路构成(1)单片机最小应用系

15、统;(2)2个共阴极数码管;(3)1个开关电路;(4)P0口输出时的上拉电阻。,2.引脚分配(1)P1.0 管脚接一个按钮,作为手动计数的按钮(2)P2.0P2.6 接一个共阴数码管,作为099计数的个位数显示(3)P0.0P0.6 接一个共阴数码管,作为099计数的十位数显示,二、0-99计数显示程序设计,静态显示的概念 指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。,2.静态显示的优缺点(1)优点较小的电流就可以获得较高的亮度;占用CPU时间较少;编程简单;显示便于检测和控制。(2)缺点占用较多的I/O口线;硬件电路复杂,成本高;只适合显示位数较少的场合。,3.计数显示实现分

16、析(1)单片机对按键的识别的过程处理;(2)单片机对正确识别的按键进行计数,计数满时,又从0开始计数;(3)单片机对计数值要进行数码显示,计数值是16进制数,我们要把其拆开成十位和个位数字分别送出显示。计数值对10求余,可得个位数字;计数值对10整除,可得十位数字;(4)通过查表方式,分别显示出个位和十位数字。,4.099计数显示c语言程序,#include/包含AT89X52.H头文件unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char Count;

17、/定义变量放置计数数值void delay10ms(void)/定义10ms延时函数,void main(void)/主函数 Count=0;/计数变量初始为0 P0=tableCount/10;/十位数码管显示0 P2=tableCount%10;/个位数码管显示0 while(1)/按键扫描,计数显示处理 if(P1_0=0)/键按下?delay10ms();/延时去抖动 if(P1_0=0)/确定键按下 Count+;/计数加1 if(Count=100)/计数到100?Count=0;/到100回0,P0=tableCount/10;/显示十位数 P2=tableCount%10;/显

18、示个位数 while(P1_0=0);/等键释放,C 语言程序是由一个个函数构成的,函数是C程序的基本模块,是构成结构化程序的基本单元。一个C语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,有且仅有一个main()函数。C语言程序总是从main()函数开始执行。,三、C语言函数,1.函数的分类(1)从用户的角度一类是标准函数(系统提供的库函数,用户可直接使用);一类是用户自定义函数(用户根据根据问题需要自己定义,以解决用户的专门问题)。,(2)从函数定义的形式上划分无参数函数;有参数函;空函数。,函数定义的一般形式:函数类型说明符 函数名(形式参数表)函数体,a)无

19、参数函数无参数函数的定义形式为:函数类型说明符 函数名()函数体语句如本例中的void main()就是一个无参数函数。b)有参数函数有参数函数的定义形式为:函数类型说明符 函数名(形式参数表)函数体语句,2函数的调用函数调用的一般形式如下:函数名(实参列表);,(1)说明:1)在实参表中,实参的个数与顺序必须和形参的个数与顺序相同,实参的数据类型必须和对应的形参数据类型相同。2)无参数调用时,调用的函数名后括号不能省略。3)函数间可以互相调用,但不能调用main()函数。,(2)函数三种调用方式1)函数语句。形式:函数名();eg:delay10ms();2)函数表达式。eg:result=

20、3*max(a,b);3)函数参数。被调函数作为一个函数的实参。eg:m=max(max(a,b),c);,(3)一个函数调用另一个函数必须要具备的条件1)如果使用库函数,一般还需在文件开头用#include命令将调用库函数所需的有关信息包含到本文件中来。2)如果自定义函数,且该函数与调用它的函数(主调函数)在同一个文件中,一般应在主调函数中对被调用函数作声明,除非被调函数的定义在主调函数之前。如果不是在本文件中定义的函数,那么在程序开始要用extern修饰符进行函数原型说明。,3函数的返回值在C语言中,一般使用 return 语句由被调函数向主调函数返回值,该语句有下列用途:(1)它能立即从

21、所在的函数中退出,返回到调用它的程序中去;(2)返回一个值给调用它的函数。返回语句一般有如下的形式:return;return 表达式;return(表达式);函数返回值类型:自定义函数的返回值类型;如无定义,系统默认为一 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

22、等等。其中7446、7447 必须使用共阳极七段显示器,7448、7449、4511等则使用共阴极七段显示器。,1)LT:试灯输入,是为了检查数码管各段是否能正常发光而设置的。当LT=0时,无论输入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:12MHzvoid 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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号