555基于51单片机汇编语言设计的交通灯毕业论文设计 下载本文

内容发布更新时间 : 2024/6/3 11:03:06星期一 下面是文章的全部内容请认真阅读。

74LS47的主要功能端如下:

图3

BI为熄灭输入端,低电平有效,当BI=0时,无论其他输入端状态如何,译码器输出七段同时熄灭;BI=1时,不影响译码器正常译码。

LT为测试输入端,低电平有效,用于检查数码管的七段是否正常发光。当LT=0,同时BI=1时,不管输入的B南北码是什么状态,都可使驱动数码管的七段同时点亮。译码器要正常译码,必须LT输入无效电平。

RBI为灭零输入端,低电平有效。设置灭零输入端的目的是为了能将不希望显示的0熄灭,例如一个四位数码显示电路,整数部分两位,小数部分两位,在显示6.4时,将出现06.40的字样,如果将前、后多余的0熄灭,显示的结果更醒目一些。灭零输入端只能对显示的0进行熄灭,而对其他数字没有影响。

在原理图中,译码器与数码管的连接如图4:

图4

3.3系统总框图如下:

3.4、交通灯硬件线路图:

RP2CONFIRM87A16A25A34B13B22B31RESPACK-7RP387DOWN6UP5SET422321212111RESPACK-7十字路口交通灯RP112345678南北东西21221112C122pFC222pF19U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111213141516177126453U2ABCDBI/RBORBILT74LS47RESPACK-7QAQBQCQDQEQFQG71264531312111091514X118CRYSTAL9XTAL21112RSTU3ABCDBI/RBORBILT74LS47QAQBQCQDQEQFQG1312111091514C3R820u1k293031PSENALEEA2122D1D4LED-REDD5B2LED-YELLOWD6B3A1B1A2D2A3D3D10B1LED-REDD11B2LED-YELLOWLED-GREENLED-YELLOWLED-REDCONFIRM12B13B24B35A16A27A38P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51SETT1SETUPDOWN设置增加减少确定应急UPDOWNCONFIRMD12B3T1A2A3LED-GREENLED-GREENA1D7D8D9LED-GREENLED-YELLOWLED-RED

3.5、系统工作原理

(1)开关键盘a、改变数码管显示的时间;b、开关控制十字路口十个方向的灯同时显示红灯且数码管显示00。

(2) 由AT89C51单片机每秒钟通过P0、P2口向74LS47的数据口送信息,由P1口显示红、绿、黄灯的燃亮情况;由7SEG-MPX2-CA显示每个灯的燃亮时

间。

(3)AT89C51 P3.3为低电平时,P1口对应的红灯即四个方向的红灯亮,数码显示为00.

(4 AT89C51 P3.2有下降沿触发时,时间暂停,进入时间显示状态,当P3.6为低电平时,时间显示以240ms的速度进行加1;当P3.7为低电平时,时间显示以240ms的速度进行减1;当P1.0为低电平时,时间暂停消除,恢复正常。

(5)初始状态东西方向绿灯60秒南北方向红灯65秒。

(6)当东西方向绿灯60秒倒计时完了。进入下一阶段,东西方向黄灯3秒,且黄灯以40ms的速度闪烁;南北方向红灯5秒。

(7)当东西方向黄灯3秒倒计时完。进入第三阶段,东西方向红灯40秒;南北方向红灯2秒。

(8)当南北方向红灯2秒倒计时完。进入第四阶段,东西方向红灯38秒;南北方向绿灯35秒。

(9)当南北方向绿灯35秒倒计时完。进入第五阶段,东西方向红灯3秒;南北方向黄灯3秒,且黄灯以40ms的速度闪烁。

(10)东西方向红灯和南北方向黄灯3秒同时倒计时完毕,重新循环。

4.软件设计

4.1、每秒钟的设定

延时方法可以有两种一中是利用AT89C51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。 4.2、秒的方法

我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序. 4.3、相应程序代码

(1)主程序

定时器需定时10毫秒,故T0工作于方式1。 初值:

T0初值=216-fose12Xt=216-(12X106X0.01)12=55536D=D8F0H ORG 0000H

MAIN: MOV TMOD,#01H MOV TL0,#0F0H MOV TH0,#0D8H SETB EA SETB ET0 SETB TR0

SETB EX0 SETB EX1 SETB IT0 CLR IT1 SETB PT0 (2)中断服务子程序 ORG 000BH

ZHD2: MOV TL0,#0F0H ; MOV TH0,#0D8H CLR P3.4 RETI 4.4、键盘显示流程图

重先赋值

4.5、 软件延时

MCS-51的工作频率为2-12MHZ,我们选用的AT89C51单片机的工作频率为12MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(112M)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。

具体的延时程序分析:

DEL: MOV R7,#40 ; ;延时10ms DEL1: MOV R6,#123 NOP DEL2: DJNZ R6,DEL2

DJNZ R7,DEL1 RET

5 、Proteus软件仿真

5.1交通灯控制系统正常运行时仿真图(见下图)