一、实训目的和作用
1.1设计简易路口交通灯控制器。
1.2 熟练掌握电路中所用元件功能、特点。
1.3 熟练掌握Keil、proteus、伟福6000软件的使用方法。 1.4 掌握简易交通灯控制器的仿真、调试方法。
二、实训设计内容要求
2.1 设计两处红绿灯,当A处红灯亮时,B处绿灯亮;,当A处黄灯亮时,B处也是黄灯亮;当A处绿灯亮时,B处红灯亮。 2.2 有复位按键,可随时实现复位功能。
2.3 显示管显示各盏灯所亮的时间,并倒计时,提醒路人。
三、系统设计
3.1 硬件设计
(1)硬件设计如图下:
(2)硬件设计说明:
P0端口依次接入红灯、黄灯、绿灯、绿灯、黄灯、红灯,P0.0和P0.7 分别接显示器1、2端,控制显示器示数。P2端口依次接入显示器A、B、C、D、E、
F端。当D2处红灯亮时,对应的D5绿灯亮;当D4的黄灯亮时,对应的D3 黄灯也D6的绿灯亮时,对应的D1红灯亮。
软件设计 GOW EQU 30H DIW EQU 31H SEC EQU 32H DEDA EQU 33H ORG 00H AJMP MAIN ORG 0BH AJMP ZDFW
MAIN: ACALL INIT ACALL INITTIME LOOP: ACALL CONV ACALL XSHI ACALL XSHI ACALL XSHI AJMP LOOP
INITTIME: MOV TMOD, #00000001B MOV IE, #10000010B MOV TL0, #01111000B MOV TH0, #11101100B SETB TR0 RET ZDFW:
MOV TL0, #01111000B MOV TH0, #11101100B INC DEDA MOV A, DEDA CJNE A,#200,TT MOV DEDA,#0 DEC SEC MOV A,SEC CJNE A,#0,TT DEC R7
CJNE R7,#3,B1 MOV A,#01011010B MOV P0,A MOV SEC,#5 AJMP TT
亮;当3.2
;定时器初始化B1:
CJNE R7,#2,B2
MOV A,#01101100B ;绿灯亮 MOV P0,A MOV SEC,#20 AJMP TT B2:
CJNE R7,#1,B3
MOV A,#01011010B ;黄灯亮 MOV P0,A MOV SEC,#5 AJMP TT B3:
MOV SEC,#20 MOV R7,#4
MOV A,#00110110B ;红灯亮 MOV P0,A TT:
RETI INIT:
CLR P0.0 ;显示器1端清零 CLR P0.7 ;显示器2端清零 MOV DEDA,#0 MOV R7,#4 MOV SEC,#20
MOV A,#00110110B MOV P0,A RET
CONV: ;十进制转换 MOV DPTR,#TABLE MOV A,SEC MOV B,#10 DIV AB
MOVC A,@A+DPTR MOV GOW,A MOV A,B
MOVC A,@A+DPTR MOV DIW,A RET
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H XSHI: ;显示 MOV A,GOW MOV P2,A
SETB P0.0 ;显示器1端置1 CLR P0.7 ;显示器2端清零 MOV R5,#2 ACALL DELAY
MOV A,DIW MOV P2,A
CLR P0.0 ;显示器1端清零 SETB P0.7 ;显示器2端置1 MOV R5,#2 ACALL DELAY CLR P0.0 CLR P0.7
DELAY: ;延时 DLY1: MOV R6,#6 DLY2: MOV R4,#8 DJNZ R4,$ DJNZ R6,DLY2 DJNZ R5,DLY1 RET
END
四、调试方法及步骤
4.1按照上面设计的电路在proteus软件内画图, 打开单片机软件开发系统
Keil,选择AT89c52单片机,在其中编写程序,运行生成一个后缀名为hex的文件,然后将该文件下载到proteus中的AT89c52单片机中进行仿真。
4.2 之后把程序和硬件电路到实验室仿真,基本上实现了要求,但是还是出
现了一点问题,就是焊接部分没焊好,经过再一次修改硬件,再一次硬件调试,然后仿真,仿真时发现显示器不够亮,经过检测,查出是软件出现一点问题,经修改后,最终达到预想效果。
4.3最后把程序用烧录机把程序烧录到单片机上,接通电路电源,电路能够
按照设计要求正常工作。
五、结果与讨论
本次实训完成得还算顺利。从翻看书籍、上网查资料,收集相关资料,自己尝试着用Proteus画出硬件,用Keil编写程序,电路焊接,到用伟福进行测试仿真,虽然在这过程中遇到了许多问题,但是在同学的帮助,大家的讨论下还是按时完成了任务。
刚开始编写程序时,我根据书上的内容和自己的理解试着编写,但总是在出错,后来在同学的指点下,终于把程序写出来了,并经过Keil编译,在Proteus仿真通过了。后来,在焊接中,由于电烙铁不够热,一不小心就把两条相邻的线焊在一起了,结果在硬件测试时,发现显示器A和B端、D和E端粘在一起,经过修改,最终通过了硬件测试。但是又在仿真时,发现显示器不够亮,后来经多次检查才发现原来是软件部分少了一条返回指令,经修改,显示器总算能正常显示示数了。之后的仿真烧录过程完成得比较顺利。
在本次实训中,我受益匪浅,在这不断的发现问题,解决问题中,我对单片机这门课程有了更深入的了解,也在这过程中,提高了自己的动手能力。
六、参考文献
《单片机课程设计实例指导》 李光飞 主编 北京航空航天大学出版社 《8051单片机嵌入式系统应用》 赖麟文编著 科学出版社
因篇幅问题不能全部显示,请点此查看更多更全内容