第5讲 十进制计数器设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
十进制计数器设计
程序设计
十进制计数器设计
上机操作: 利用C语言编写程序,实现一个0~9999的计数器。
十进制计数器设计
小
结
1、数组; 2、break、continue语句; 3、数码管动态显示。
十进制计数器设计
END
十进制计数器设计
C1
30pF
U1 X1
19 XTAL1 CRYSTAL 18 XTAL2 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 7 1 2 6 4 5 3
静态显示
静态显示是指显示驱动电路具有输出锁存功能, 待显示的字符编码被CPU送出后,数码管会一直显 示该字符不变,CPU不需要再控制数码管,如果要 显示新的字符,CPU只要再次送出即可。 采用静态显示方式,较小的电流就可以获得较高 的亮度,且占用CPU时间较少,编程简单,显示便 于检测和控制,但其占用的I/O口线较多,硬件电 路复杂,成本高,只适合显示位数较少的场合。
R2
10k
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89S52
74LS47是由与非门、输入缓冲器和7 个与或非门组成的BCD-7段数 码管译码器/驱动器,是输出低电平有效的七段字形译码器。 能将4位二进制编码—十进制数(BCD码)转化成七段字形码,然 后去驱动一个七段显示器。 也就是说74LS47可以直接把数字转换为数码管的显示数字,从而 可以简化程序,节约单片机的IO开销。
十进制计数器设计
动态显示
在多位LED显示时,为了降低成本和功耗,将所 有位的段选控制端并联起来,由一个8位端口控制 (本任务中用P1口);各位数码管的公共端( com端),用作“位选端”,由另一个端口进行 显示位的控制(本任务中用P2口)。 由于段选端是公用的,要让各位数码管显示不同 的字符,就必须采用扫描方式,即动态扫描显示 方式。动态扫描是采用分时的方法轮流点亮各位 数码管的显示方式,它在某一时间段,只让其中 一位数码管的“位选端”(com端)有效,并送 出相应的字型编码。
一维数组的初始化: 在定义数组时对数组全部元素初始化 int a[5]={1,2,3,4,5}; 只对数组部分元素初始化 int a[5]={1,2}; 定义时,全部元素不赋初值 int a[5]; 定义时,可以不指明数组元素的个数 uchar bitTab[ ]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};
十进制计数器设计
一维数组(P68)
一维数组的引用: 数组名[下标] 说明: 通常下标只能为整型常量或整型表达式。 如果下标是实数,C编译器自动将它转换为整型,舍弃小数部分。 C语言中规定,不能一次引用整个数组,只能逐个引用数组元素。 C语言并不对越界使用数组进行检查。
十进制计数器设计
一维数组(P68)
十进制计数器设计
二维数组(P69)
•
•
1.二维数组的定义
类型说明符 [存储器类型] 数组名[整型表达式1] [整型表达式2]
• 二维数组定义的一般形式为:
• • • • • • • • 例如: float a[3][4]; 定义a为一个3×4(3行4列)的浮点型数组,该数组共有12个数组元素。 二维数组的第1个下标表示行数,第2个下标表示列数。与一维数组类似, 二维数组的每个下标都从0开始。 关于二维数组的定义有以下几点说明: (1)类型说明符、数组名、整型表达式的意义与一维数组相同。 (2)二维数组的元素在内存中的存放顺序是“按行存放”,即在内存中 先顺序存放第1行的元素,再存放第2行的元素,依此类推。 (3)可以把二维数组看成是一种特殊的一维数组,其特殊之处在于它的 每个元素又是一个一维数组。
continue;
注意:continue只能用于循环语句中;continue语句只 结束本次循环,而不是终止整个循环的执行。
十进制计数器设计
一维数组(P68)
在C语言中数组必须要先定义,后使用。一维数组的定义 方式为:
类型说明符 [存储器类型] 数组名[整型表达式]; 类型说明符是任一种标准数据类型或构造数据类型,是数组中各 个元素的数据类型。 数组名是用户定义的数组标识符。 方括号中的整型表达式表示数据元素的个数,也称为数组的长度
break;
注意:break语句不能用于循环语句和switch语句之外的 任何其他语句中;break语句是结束整个循环过程,不再 判断执行循环的条件是否成立。
十进制计数器设计
continue语句(P65)
continue语句作用为结束本次循环,即跳过循环体中下面 尚未执行的语句,接着进行下一次是否执行循环的判定。 对于for循环,跳过循环体其余语句,转向循环变量增值 表达式的计算;对于while和do-while循环,跳过循环体 其余语句,但转向循环继续条件的判定。 一般形式:
十进制计数器设计
字符数组(P70)
char ch[ ]={„C‟, „ ‟,‟p‟, „r‟,‟o‟,‟g‟,‟r‟,‟a‟,‟m‟}; char ch[ ]={“C program”}; char ch[ ]=“C program”; 用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字 符串结束标志‘\0‟。
数码管其实是轮流依次点亮的,但由于人的视觉驻留效应 ,因此当每个数码管点亮的时间小到一定程度时,人就感 觉不出字符的移动或闪烁,觉得每位数码管都一直在显示 ,达到一种稳定的视觉效果。
十进制计数器设计
硬 件 电 路
十进制计数器设计
软件设计相关知识
break语句(P65)
break语句强行结束循环,转向执行循环语句的下一条语 句。 在一个循环程序中, 可以通过循环语句中的表达式来控 制循环程序是否结束。除此之外,还可以通过break语句 从循环体内跳出循环体,即提前结束循环,接着执行循环 下面的语句。 一般形式:
十进制计数器设计
动态扫描过程
首先从段选线上送出字型编码,再控制位选端,字符就显 示在指定数码管上,其他位选端无效的数码管都处于熄灭 状态,持续1.5ms时间,然后关闭所有显示; 接下来又送出新的字型编码,按照上述过程又显示在另外 一位数码管上,直到每一位数码管都扫描完为止,这一过 程即为动态扫描显示。
十进制计数器设计
二维数组(P69)
• 2.二维数组的引用
• • • • • • 二维数组元素的引用形式为: 数组名[下标1][下标2] 例如: a[1][2] 说明:下标可以是大于或等于0的整型常量、整型变量或整型表达式 引用数组元素时下标不要越界,也就是说下标值从0开始,但不要超 过行、列的范围。例如: int a[3][4]; … a[3][4]=10; 定义a为3×4的数组,它可用的行下标最大值为2,列下标的最大值 为3。用a[3][4]超过了数组的范围,是错误的。
• • • •
十进制计数器设计
二维数组(P69)
• 3.二维数组的赋值
• 对二维数组的赋值跟一维数组一样,也有3种方法。 • (1)在定义数组的同时为数组元素赋初值。 • (2)可以把所有的数据写在一个花括号内,系统按数组的排列次序 对各个元素赋初值。 • (3)如果对全部元素赋初值,则定义数组时对第一维的长度可以不 指定,但第二维的长度不能省。 • 例:int tab[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; • int tab[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
十进制计数器设计
十进制计数器设计
十进制计数器设计
本次课重点
了解C语言中的数组的使用; 了解break、continue语句的使用;
掌握数码管动态显示程序设计。
十进制计数器设计
任 务: 设计一个四位数码管显示的 十进制计数器,能够使用按键进 行点动和连续加减计数。
十进制计数器设计
硬件设计相关知识
U2
A B C D BI/RBO RBI LT 74LS47 QA QB QC QD QE QF QG 13 12 11 10 9 1百度文库 14
R1
10k
C2
30pF
9
RST
C3
10uF 29 30 31 PSEN ALE EA
U3
7 1 2 6 4 5 3 A B C D BI/RBO RBI LT 74LS47 QA QB QC QD QE QF QG 13 12 11 10 9 15 14
例如:
int a[9]; //定义整型数组a,有9个元素,下标从0到8。 float b[5]; //定义实型数组b,有5个元素,下标从0到4。 char ch[10]; //定义字符数组ch,有10个元素,下标从0到9。
十进制计数器设计
注意事项
数组的类型是指构成数组的元素的类型。对于同一个数 组,其所有元素的数据类型都是相同的。 数组名的书写规则应符合标识符的命名规则,并且不能 与其它变量同名。 常量表达式可以是符号常量或常量表达式,但是不能包 含变量,即不能对数组的大小作动态定义。