这样就肯定要用到8255芯片。第二点就是,交通指挥系统肯定要计时,这样免不了要用8253芯片。最后一点就是倒计时的显示,老师要求用8279芯片,通过8279来控制数码管的显示。
初步确定方案之后,接下来就是具体的实现问题了。遇到的第一个问题就是:如何使8个数码管只显示其中的两个。从网上找到的资料,以及实验机上自带的程序,最后实现的效果都是从左往右依次显示8个数字,给人的感觉错位了,很不舒服。后来向其他同学请教,再上网查了很多关于8279芯片的资料,渐渐有了一点思路。8279芯片有一个控制字可以清除RAM值,并且能清屏。这样的话,每次显示完一个数字之后,重新清除8279里的RAM值,清除数码管上的显示。过了1s后重新从最左边开始显示下一个数字,这样从视觉感觉来看,就感觉“只有最左边两个数码管在显示了”。
第二个问题是:如何用8253来实现倒计时的功能?开始,我一直搞不懂,给8253连续的脉冲,如何使它只输出1s的脉冲?这个问题困扰了我很长时间。后来问其他同学和老师,才发觉我一开始的思路想法就是错误的。经过同学的提醒,我想到了把8253的输出连接到8255的PB0端口,然后判断PB0端口的值,如果等于1,则表明经过了1s,接着控制8279显示下一个数字。要求从输出周期为2s的方波,这样肯定要用到级联,所以要用到8253的两个通道。问题二也解决了。
第三个问题是:如何显示两位数?我一直在想,可以使两位数同时显示出来(就是个位和十位的显示没有时间差)。后来想想,这是不可能的,数码管的显示本来就是从左往右一个一个显示的。所以解决的方案是,每得到一个倒计时的数字,就把它除以10,商就是十位数,余数就是个位数。通过8279控制,使个位和十位依次显示,这样就可以显示两位数了。
8 结论与体会
马新军
结论:
我们的设计很好的完成了以下各种功能。 一般情况下的交通灯:
(1)南北绿灯,东西红灯同时亮50秒,且数码管50秒倒计时显示。
(2)南北黄灯闪烁10秒,同时东西路红灯继续亮,且数码管10秒倒计时显示。
(3)南北路红灯,东西路绿灯同时亮50秒,且数码管50秒倒计时显示。 (4)南北路红灯继续亮,同时东西路黄灯亮10秒。
体会:
在选定了“交通灯指挥系统”这个题目后,通过上网查找资料以及在图书馆借阅相关书籍和相关参考资料,我们对目前城市常见的交通等指挥系统的工作过程有了较清楚的了解。在此基础上,我们把这个大的设计课题分成一个具体的方案来实现:
方案:一般情况下正常的交通灯,东西、南北两方向各50秒,数码管显示倒计时,红绿灯转换的时候,原来绿灯的方向会出现10s的黄灯,另外一个方向