项目三数码管动态显

上传人:san****019 文档编号:70335562 上传时间:2019-01-16 格式:PPT 页数:48 大小:1.73MB
返回 下载 相关 举报
项目三数码管动态显_第1页
第1页 / 共48页
项目三数码管动态显_第2页
第2页 / 共48页
项目三数码管动态显_第3页
第3页 / 共48页
项目三数码管动态显_第4页
第4页 / 共48页
项目三数码管动态显_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《项目三数码管动态显》由会员分享,可在线阅读,更多相关《项目三数码管动态显(48页珍藏版)》请在金锄头文库上搜索。

1、单片机应用技术,项目三 数码管显示,教学目的,掌握数字、字符转换成显示段码的软件译码方法; 掌握静态显示的原理; 掌握动态显示的原理; 掌握数码管程序设计的方法。,工作模块6 数码管循环显示 09,利用AT89S51 单片机的P1 端口的P1.0P1.7 连接到一个共阴数码管的ah 的笔段上,数码管的公共端接地。在数码管上循环显示 09 数字。,数码管显示程序(C程序),#include unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; unsigned char dispcount; voi

2、d 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+) P1=tabledispcount; delay (); ,思 考?,如何在数码管上循环显示 9 0数字?,认识数码管(P132),数码管结构图,数码管电路图,共阴数码管,共阳数码管,74LS245,74LS245是8路同相三态双向数据总线驱动芯片,具有双向三态功能,既可以输出,也可以输入数据。

3、 /G为低电平有效; DIR=“1”,信号由 A 向 B 传输。 引出端符号: A 总线端 B 总线端 /G 三态允许端(低电平 有效) DIR 方向控制端,关系运算符和关系表达式(P77),所谓“关系运算”实际上是两个值作一个比较,判断其比较的结果是否符合给定的条件。 关系运算的结果只有2种可能,即“真”和“假”。 例如: 32的结果为真,而32 的结果为假。,关系运算符,C语言一共提供了6种关系运算符: 小于: “”; 小于等于: “”; 大于: “”; 大于等于: “”; 等于: “”; 不等于: “!”。,关系表达式,用关系运算符将两个表达式连接起来的式子,称为关系表达式。 例如:ab

4、,a+bb+c,(a=3)=(b=5) 在 C 语言中,没有专门的逻辑型变量,如果运算的结果是“真”,用数值“1”表示,而运算的结果是“假”则用数值“0”表示。 例如:x1=32的结果是x1等于1 原因是32的结果是“真”,即其结果为1,该结果被“”号赋给了x1。 又如:x2=3=2的结果是 x2=0,请自行分析。,逻辑运算符,C语言提供了三种逻辑运算符: “&”(逻辑与);整体与 “|”(逻辑或); 整体或 “!”(逻辑非)。 整体取反,逻辑表达式,用逻辑运算符将关系表达式或逻辑量连接起来的式子,称为逻辑表达式。 C语言编译系统在给出逻辑运算的结果时: 用“1”表示真,而用“0”表示假。 在

5、判断一个量是否是“真”时,以0代表“假”,而以非0代表“真”,这一点务必要注意。 若a=10,则!a的值为0,因为10被作为真处理; 如果a=-2,结果与上完全相同,初学时常会误以为负值为假,所以这里特别提醒注意; 若a=10,b=20,则a&b的值为1,a|b的结果也为1。,if语句(P54),用if语句构成分支结构。 分支结构又称选择结构,它体现了程序的判断能力。 这种结构根据程序的判断结果,来确定某些操作是做还是不做,或者从多个操作中选择一个操作来执行。,单分支if语句,单分支if语句的基本形式为: if(表达式)语句 如果表达式的结果为真,则执行语句,否则不执行。 单分支if语句,双分

6、支if语句,双分支if语句语句的基本形式为: if(表达式)语句1 else 语句2 如果表达式的结果为真,则执行语句1,否则执行语句2 双分支if语句,多分支if语句,多分支if语句的基本形式为: if(表达式 1) 语句1 else if(表达式 2) 语句2 else if(表达式 3) 语句3 else if(表达式 m) 语句m else 语句n,if语句的嵌套,当if语句中的语句体又包含一个或多个if语句,称为if语句的嵌套。其一般形式如下: if(表达式) if(表达式1) 语句11 else 语句12 else if(表达式2) 语句21 else 语句22 应当注意if与el

7、se的配对关系,C语言规定:else总是与它上面的最近的if配对,swich语句,Switch的一般形式如下: switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句n+1 当表达式的值与某一个case后面的常量表达式相等时,就执行此case后面的语句; 若所有的case中的常量表达式的值都没有与表达式值匹配的,就执行default后面的语句; 每一个case的常量表达式的值必须不相同; 各个case和default的出现次序不影响执行结果。,swich语句特别说明,执行完一个case后面的语句后,并不会自动

8、跳出 switch,转而去执行其后面的语句; 通常在每一段case的结束加入“break;”语句,使程序退出switch结构,即终止switch语句的执行。 如: switch (x) case 1: y=1; case 2: y=2; case 3: y=0; 假如x的值是1,y=?,循环结构控制语句,在一个实用的程序中,循环结构是必不可少的。 循环是反复执行某一部分程序行的操作。通过下面C语言程序,来看如何利用这些循环语句编写循环程序。 void Delay() void main() unsigned char i, j; while(1) for (i=0;i255;i+) ; 这段程

9、序中有两处用到了循环语句,首先是主程序使用了: while(1) 这样的循环语句写法,在中的所有程序将会不断地循环执行,直到断电为止;其次是延时程序,使用了for循环语句的形式。,while语句,当型循环,即当给定的条件成立时,执行循环体部分,执行完毕回来再次判断条件,如果条件成立继续循环,否则退出循环。其一般形式如下: while(表达式) 循环体语句 当表达式为非0值(真)时,执行while语句中的内嵌语句。 其特点是:先判断表达式,后执行语句。,do-while语句,直到型循环,即先执行循环体,然后判断给定的条件,只要条件成立就继续循环,直到判断出给定的条件不成立时退出循环。其一般形式如

10、下: do 循环体语句 while(表达式) do-while语句特点是先执行循环体,然后判断循环条件是否成立。 对同一个问题,既可以用while语句处理,也可以用do-while语句处理,但是这两个语句是有区别的。,for语句,C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。for语句的一般形式为: for(表达式1;表达式2;表达式3) 循环体语句 执行步骤如下: (1)先求解表达式1; (2)求解表达式2,其值为真,则执行for语句中指定的内嵌语句(循环体),然后执行第(3)步,如果为假,则结束循环; (3)求解

11、表达式3; (4)转回第2步继续执行。,break语句,break语句强行结束循环,转向执行循环语句的下一条语句。 在一个循环程序中, 可以通过循环语句中的表达式来控制循环程序是否结束。除此之外,还可以通过break语句从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。 一般形式: break; 注意:break语句不能用于循环语句和switch语句之外的任何其他语句中;break语句是结束整个循环过程,不再判断执行循环的条件是否成立。,continue语句,continue语句作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。 对于for循环

12、,跳过循环体其余语句,转向循环变量增值表达式的计算;对于while和do-while循环,跳过循环体其余语句,但转向循环继续条件的判定。 一般形式: continue; 注意:continue只能用于循环语句中;continue语句只结束本次循环,而不是终止整个循环的执行。,工作模块7 LED动态扫描显示,动态显示,也称扫描显示; 显示器由6个共阴极LED数码管构成; P0口输出显示段码,经由一片74LS245驱动输出给LED管; P1口输出位码(片选),经由74LS05输出给LED管。,LED动态扫描显示电路(P135),动态显示特点,在多位LED显示时,为了降低成本和功耗,将所有位的段选控

13、制端并联起来,由一个8位端口控制(本任务中用P0口);各位数码管的公共端(com端),用作“位选端”,由另一个端口进行显示位的控制(本任务中用P1口)。 由于段选端是公用的,要让各位数码管显示不同的字符,就必须采用扫描方式,即动态扫描显示方式。动态扫描是采用分时的方流点亮各位数码管的显示方式,它在某一时间段,只让其中一位数码管的“位选端”(com端)有效,并送出相应的字型编码。,动态扫描过程,首先从段选线上送出字型编码,再控制位选端,字符就显示在指定数码管上,其他位选端无效的数码管都处于熄灭状态,持续1.5ms时间,然后关闭所有显示; 接下来又送出新的字型编码,按照上述过程又显示在另外一位数码

14、管上,直到每一位数码管都扫描完为止,这一过程即为动态扫描显示。 数码管其实是轮流依次点亮的,但由于人的视觉驻留效应,因此当每个数码管点亮的时间小到一定程度时,人就感觉不出字符的移动或闪烁,觉得每位数码管都一直在显示,达到一种稳定的视觉效果。,思考题,如何修改程序,实现六位LED数码管只显示其中的两位?,定义段码表,#include unsigned char code Tab=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C; unsigned char code Col=0xfe,0xfd,0xfb,0xf7,0xef,0

15、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=0xff; /关数码管 Delay(); ,一维数组(P86),在C语言中数组必须要先定义,后使用。一维数组的定义方式为: 类型说明符 数组名整型表达式; 类型说明符是任一种标准数据类型或构造数据类型,是数组中各个元素的数据类型。 数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 例如: int a9; /定义整型数组a,有9个元素,下标从0到8。 float b5; /定义实型数组b,有5个元素,下标从0到4。 char ch10; /定义字符数组ch,有10个元素,下标从0到9。,注意事项,数组的类型是指构成数组的元素的类型。对于同一个数组,其所有元素的数据类型都是相同的。 数组名的书写规则应符合标识符的命名规则,并且不能与其它变量同名。 常量表达式可以是符号常量或常量表达式,但是不能包含变量,即不能对数组的大小作动

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号