当前位置:首页 > 用51单片机控制交通灯汇编语言编写
主程序 开始 设置中断工作方式、触发方式、初始化 运行过程 N 是否有中断 Y 执行中断 中断结束,退出中断,返回
9
运行过程 EW:绿灯(45s),SN:红灯 是否到45秒 Y N EW:黄灯每秒闪一次,SN:红灯 Y Count<5? N EW:黄灯灭,EW:红灯 LED显 示 缓 冲 区 DISP N 是否到0秒 Y SN:绿灯(45),EW:红灯 是否到45秒 Y SN:黄灯亮,EW:红灯 N Y Count<5? N SN:黄灯灭,EW:红灯 N 是否到0秒 Y
10
图八 4.2 LED红绿灯显示
如图三所示,当P1端口输出高电平,即P1各端口=1时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当P1个端口输出低电平,即P1各端口=0时,发光二极管亮。我们可以使用SETB指令使P1各端口输出高电平,使用CLR指令时P各端口输出低电平。至于循环需要软件控制,程序见附录。 4.3倒计时显示
此处采用LED静态显示方式,当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另个字符为止。89C51的串行口RXD和TXD为一个全双工串行通信口,但工作在方式0下可作同步移位寄存器,其数据由RXD端串行输出或输入;而同步移位时钟由TXD端串行输出,在同步时钟的作用下,实现由串行到并行的数据通信。在不需要使用串行通信的场合,利用串行口加外围芯片74LS164就可构成一个或多个并行输入\\输出口,用于串——并转换或显示器LED驱动。此利用后者。 4.4 急通车控制
将一按钮接到单片机外部中断0端口。另一端接地,通过在程序里设置外部中断0为最高优先级。当检测到有按钮按下时,产生中断,停止刚才的程序,转向中断执行。在此过程必须利用PUSH、POP指令保护现场,这样当情况解除可以回到原来的地方继续执行。 4.5程序代码
系统工作原理
系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P1口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。
时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,
当然,还要开启两个外部中断,其一为紧急情况处理中断,一旦信号有效,即K键为低电平时进入中断服务子程序,东西南北路口的保持现有通行状态,再按一下K键,中断结束返回。其二为通行时间调整中断,若按键有效,进入相应的中断子程序,对时间进行调整,可延长或减少某一路段的通行时间,此后再按键则中断结束返回。 4.4其它硬件介绍及连接
显示数值 0 1 2 3 4 5
dp,g,f,e,d,c,b,a 11111100 01100000 11011010 11110010 01100110 10100110 11
驱动代码 FCH 60H DAH F2H 66H B6H
6 7 8 9 10101110 11100000 11111110 11110110 BEH E0H FEH F6H 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H
五 总结
在学习单片机理论课时候就感觉到内容很多,知识点很杂,分繁琐。在老师的讲解下,
在通过自己的努力也更进一步了解了单片机的内部构造和工作原理,以及接外部电路的情况。当然光有理论知识那只是“纸上谈兵”,还需要实际动手去实践。真正把所学的用到日常生活中,理论联系实际,做出实物模型。这次单片机实习,我选的是交通灯设计,通过这次设计我感觉到要想做成功,必须花时间多准备,查阅大量资料,认证分析每一步每一个模块要实现的功能,然后分步进行,最后正和一个整体。
通过这次实习,我们要对所做的事情有耐性,在编程的时候会有困难,也可能变得不一定成功,所以要经过多次调试,分析,改正,反复去做。
在这次实习中,经历了多次失败的洗礼,我明白在以后学习和实践中,我要努力掌握知识,多动手,多思考,以免在以后的学习工作中犯同样的错误。
经过两周的努力工作,终于在同组人的共同合作下完成了《简易智能交通灯设计》单片机课程设计。虽然设计仿真调试的过程很艰辛,但结果还是好的,看到仿真结果出来,看到交通灯的循环闪烁,心情顿时好起来,调试过程中的种种怨言都没有了。这次课程设计主要是软件仿真,由于器材有限就没有弄硬件部分。在软件的设计与调试过程中,我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度。可以说再整个软件设计过程中,我感觉又重新学了一次单片机,在学习的过程中不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管
12
共分享92篇相关文档