这次写一下关于蓝桥杯竞赛板上LED灯和数码管的使用。这部分虽然简单,但却是竞赛必考,必须熟练掌握啊。
1.八位LED灯的编程竞赛板上LED共8个,通过573锁存器与P0口(数据总线)连接。
573锁存器的使能端LE与38译码器的Y4相连,因此,P2的高3位为100时(P2=0x8_),led与P0口相通,此时可从P0向LED传输数据。
板上最左侧的led是最低位,最右侧为最高位。
led为共阳极,在P0的相应位为0时led点亮。8位LED电路图
下面举几个例子关闭led
第0位led闪动
点亮第led_wei个led
在对8位LED进行较复杂的编程时,常常会用到循环移动(>>和<
2.八位数码管的编程板子上的数码管共8位,其位选和段选分别由一片573锁存器控制,并与P0口相接。
位选锁存器由译码器Y6端控制,P2高3位110(0xC0); 段选锁存器由译码器Y7端控制,P2高3位111(0xE0)。
在进行数码管的驱动时,要先通过P2选中位选,再将位选数据通过P0传输;而后P2选中段选,P0传输段选数据。
板子上最左侧数码管为最低位,最右侧为最高位。数码管电路图
数码管的多位显示需要用到动态扫描,下面记录一下编程思路:
需要建一个数码管段码数组,保存所需的段码数据。另外,需要数码管显示缓冲区,保存每个数码管要显示的数字。最后,设置一个变量,保存位数,在动态扫描移位时使用。
采用位选循环移位的方式进行动态扫描,图中程序为8位动态扫描。要注意数码管段选的消影。当数码管位选由0x01逐位左移时(从低位到高位),板上的数码管从左至右依次被选中。
可以通过更改dspcom的范围来更改动态扫描的数码管。
数码管的动态扫描需要保证在20ms的间隔之内,因此,进行8位的扫描的话最好每2ms进行一次(2*8=16<20),3ms一次就会感到明显的闪动。一般通过定时器中断产生2ms的计时,从而进行数码管的动态扫描。