1.任务书
利用YL-236实训台(见图3-5所示的电路),使数码管从右到左依次显示1、2、3、4、5、6、7、8。
2.程序示例
(1)硬件连接。图3-6所示电路中,我们用P3.0端口输出电平来选择段码的锁存器,所以将P3.0与CS1端子相连;用P3.1端口输出电平来选择位码锁存器,所以将P3.1与CS2相连;用P3.2端口输出锁存信号,所以将P3.2与wr相连;用P2端口输出段码和位控制信号,所以,P2.0~P2.7与D0~D7相连。注意:硬件端口之间的接线是灵活的,端口之间的连接改变后,程序中标识符表示的端口也需相应改变,应与硬件的连接保持一致。
(2)程序代码及解释。
(www.xing528.com)
(3)代码解释
首先,执行第17行,声明变量i,默认初值为0,声明变量temp,赋初值为0xfe→执行第18行。由于i=0,i<8为真,所以for()后面{}内的语句会被执行→执行19行,选中段锁存器U1→执行20行,由于此时i=0,P2=tabsz[0],将“1”的段码的值赋给P2→执行21行,锁存,使P2口数据传到U1的输出端,加到各个数码管的段电极上→执行22行,选中位锁存器U2→执行23行,将temp的初值0xfe赋给P2→执行24行,锁存,位选信号(0xfe)传送到U2的输出端,最右边的数码管DS1公共极得到供电,该数码管点亮,显示数码“1”→执行25行,temp的初值0xfe左移一位,得到的值(为0xfd,对应的二进制数为11111101)赋给temp,这是点亮数码管DS2的位选信号→执行26行,短暂延时→执行18行for()内的i++,i变为1,再判断i<8是否为真,结果为真,则for()后面的语句被执行→执行19行→执行20行,P2=tabsz[1],将字符“2”的段码赋给P2→执行21行→执行22行→执行23行,此时temp的值为0xfd→执行24行,点亮数码管DS2,并显示“2”→执行25行,temp的值0xfd左移一位,再赋给temp→执行26行……不断地循环、重复,依次短时点亮各个数码管,每个数码管显示相应的字符,看起来就像各个数码管在同时显示字符。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。