实验目的:
将大板(HC6800-ES开发板)的按键加一四位显示程序移植到小板(KR-51开发板)上。
实验说明:
独立按键实现数码管的数字移动,即每按下按键一次,数字加一,以十进制方式进位,满十进一,最高四位数。
实验步骤:
连接好单片机,用keil进行编程,用宏晶科技软件进行烧录,程序烧录完成后,即可实现此功能。
实验分析:
已知我们已经有了大板的程序,要实现将大板的按键加一四位显示程序移植到小板,就要弄清大板和小板结构和代码的差异,从而来修改已有的代码,完成实验。
1.结构:
①大板:
大板是八位数码管②小板:
小板是四位数码管下面列表总结一下大板和小板的结构差异:
名称 | 大板 | 小板 |
---|---|---|
数码管位数 | 八位 | 四位 |
段选信号 | 共阴 | 共阳 |
位选信号 | 使用3-8译码器 | 接到了stc端口 |
下面再区分一下段选信号和位选信号,以及共阴和共阳:
1.比如要控制8个数码管 ,依次是1、2…… 8。你要选择控制哪个数码管 (比如第1个),这就是位选,有选择位置的意思。然后呢,要让第1个数码管显示“1”。你就要控制第一个数码管的“a、b……g”也就是让b、c=0,a、d、e、f、g=1(或者b、c=1,a、d、e、f、g=0),这就是段选,即选择数码管的哪一笔段。
2.共阴级输入高电平有效,即1为段亮,0为不亮;共阳级输入低电平有效,即0为段亮,1为不亮 。
2.代码:
①数码管定义部分:
- 定义位选信号:LSA、LSB、LSC、LSD四个端口,用来显示数码管的1-4位。
- 选用P3.2的独立按键。
- 定义段选信号:小板为共阳极,输入低电平有效,将0-9字形码改成共阳极的。
-
u8 number为数码管初始值,即0000。
②延时函数部分:
③动态数码管显示部分:
- 从高位到低位依次为P2.0-P2.3,LSA、LSB、LSC、LSD分别置0,其余位为1时,这样从左向右四个数码管才会显示。
-
消隐函数要全部置为1,因为小板共阳,置1不亮,则须将大板的共阴置0的消隐代码0x00改为0xff。
④主体函数部分:
实验结果:
实验反思:
1.刚开始不明白为什么定义的位选信号大板是三位,小板四位,后来一想这不大板是用了3-8译码器,小板直接连端口,然后就明白了。
2.刚开始不明白为什么直接删了后面A-F,只留了0-9的字形码,当然0-9字形码要改成共阳的,后来想到我们做的是以十进制方式进位,所以字母可能就用不到。
3.刚开始不明白如下代码1,
代码1
就奇怪为什么不是代码2这样,
代码2
然后经过试验发现,如果改成代码2,高低位会发生反转。
4.烧录的时候,记得要用网盘里的这个烧录软件,不要再用第一次实验用的了,单片机型号改成STC89C52,串口号改成电脑识别的名称,我是COM3,记得代码一定要是对的,改完之后摁一下rebuild,不然就会一直卡住连接不成功。
5.感觉这个一摁键就加一的操作好像上上学期数字电路那个全加器,所以有种似曾相识的感觉吧。
网友评论