独立按键实现数码管的数字移动,即每按下按键一次,数字加一,以十进制方式进位,满十进一,最高四位数。连接好单片机,且用k51进行编程,用宏晶科技软件进行烧录,程序烧录完成后,即可实现此功能。(*注意:我们是对小板进行操作,利用的基础程序来源于大板)因此,需要我们对小板进行分析。
一、程序分析
小板是四位数码管,而大板是八位,所以我们首先必须明白两者结构的区别。(结构图如下)
要实现数码管显示,首先要确定共阴还是共阳,我们选共阳信号,所以置1为高电平,段不亮,置0为低电平,段亮。信号大板小板不同,小板从高位至低位依次为P2.0-P2.3,置低电平时,位被选中。独立按键选择init 1进行操作。
二、代码修改
根据大板和小板的不同点,我们对程序进行修改。
我们来看代码图
实现后的显示如图:
三、问题研究
通过实验,发现了很多问题,而且有一些还没有完全解决。在实验过程中,首先要使用k51进行调试,然后通过撰写程序形成.Hex文件,再使用宏晶进行烧录,完成实验。
在程序修改过程中,主要问题如下:
1、对于题目的理解,首先要看清楚意思,不然找不到大板的源程序,这也是我在实验中第一个困难。
2、共阳共阴问题,如果没有分析小板电路图的话,很容易将大板上共阴的数码管代码原搬过来,使得一开始现实的时候正好反向。
3、消隐问题。消隐非常的重要,修改完共阳数码管的显示后,会发现不亮的数码管还是会有隐隐约约的亮,而显示的数字几乎看不出来(如下图),这时我们就要从代码上找问题,我们分析过共阳的数码管当高电平的时候段不亮,所以要想消隐就必须全都置位为高电平,所以要将原先消隐代码0x00变为0xff。
4、我们会发现直接用端口进行位选的时候就要相应的改变端口的高低电平。为了让各个位都能正常显示,我们还是得需要分析电路图。置位为0的时候,此位才显示。所以,当最低位都置为1时,就如上面显示图一样,最低位不显示。
5、未解决问题
(1)、代码不进位,只是单循环。
(3)、case(0)(1)(2)(3)的顺序和LSD的引入,以及0/1值的修正。