打印

51单片机系列之十:交通灯控制系统

[复制链接]
3238|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
十年砍柴|  楼主 | 2010-8-21 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机系列之十:交通灯控制系统
一、
设计任务

1、如图,单片机的P2口接上一个数码管(显示十位),P3口接上一个数码管(显示个位);P1.3—P1.0分别接上南北方向的红、黄、绿、左拐灯,P1.4—P1.7分别接上东西方向的红、黄、绿、左拐灯。用单片机实现:开始时,8个灯和数码管全亮3s(用以检测灯和数码管的好坏)。接着,南北方向的红灯和东西方向的绿灯亮,30s后,绿灯灭,黄灯亮5s,接着黄灯闪烁5s;接着黄灯灭,左拐灯亮,15s后,
黄灯闪烁5s,接着都灭了,东西方向的交通也完成。接着,南北方向绿灯和东西方向的红灯亮,重复上面的过程,直到南北方向交通完成。重复整个系统。
二、
电路原理图



图1——1:开机时,全亮,确定灯和数码管是好的



图1——2:东西方向通车,绿灯亮,30s



图1——3:东西方向通人行,黄灯10s



图1—4:黄灯闪烁,告诉行人快过,时间快到了





图1—5:左拐灯亮,东南方向通车





图1—6:南北方向通车,东西禁止





图1—7:南北方向通行人






图1—8:东北方向通车

三、
设计程序

//交通灯控制系统

ORG 00H


MOV P1,#00H


MOV P2,#00H


MOV P3,#00H


MOV P1,#0FFH


MOV P2,#0FFH


MOV P3,#0FFH


LCALL DELAY


LCALL DELAY


LCALL DELAY

START:
MOV R0,#30


MOV P1,#01001000B


MOV DPTR,#TABLE


MOV P2,#00H


MOV P3,#00H


S1:
MOV R1,#10


MOV A,R0


MOV B,R1


DIV AB


MOVC A,@A+DPTR


MOV P2,A


MOV A,B


MOVC A,@A+DPTR


MOV P3,A



LCALL DELAY


DJNZ R0,S1




MOV R0,#5


MOV P1,#00101000B


LCALL LI


LCALL XIAN



MOV R0,#15


MOV P1,#10001000B


LCALL LI






MOV R0,#30


MOV P1,#00010010B



LCALL LI




MOV R0,#5


MOV P1,#00010100B


LCALL LI


LCALL JI




MOV R0,#15


MOV P1,#00010001B


LCALL LI






LJMP START




XIAN:
MOV P2,#3FH


MOV P3,#6DH



MOV P1,#00101000B


LCALL DELAYH


MOV P1,#00001000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#66H


MOV P1,#00101000B


LCALL DELAYH


MOV P1,#00001000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#4FH


MOV P1,#00101000B


LCALL DELAYH


MOV P1,#00001000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#5BH


MOV P1,#00101000B


LCALL DELAYH


MOV P1,#00001000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#06H


MOV P1,#00101000B


LCALL DELAYH


MOV P1,#00001000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#3FH


MOV P1,#00101000B


LCALL DELAYH


MOV P1,#00001000B


LCALL DELAYH



RET




LI:
MOV DPTR,#TABLE


MOV P2,#00H


MOV P3,#00H


S2:
MOV R1,#10


MOV A,R0


MOV B,R1


DIV AB


MOVC A,@A+DPTR


MOV P2,A


MOV A,B


MOVC A,@A+DPTR


MOV P3,A


LCALL DELAY


DJNZ R0,S2


RET



JI:
MOV P2,#3FH


MOV P3,#6DH


MOV P1,#00010100B


LCALL DELAYH


MOV P1,#00010000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#66H


MOV P1,#00010100B


LCALL DELAYH


MOV P1,#00010000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#4FH


MOV P1,#00010100B


LCALL DELAYH


MOV P1,#00010000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#5BH


MOV P1,#00010100B



LCALL DELAYH


MOV P1,#00010000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#06H


MOV P1,#00010100B


LCALL DELAYH


MOV P1,#00010000B


LCALL DELAYH


MOV P2,#3FH


MOV P3,#3FH


MOV P1,#00010100B


LCALL DELAYH


MOV P1,#00010000B


LCALL DELAYH


RET





TABLE:
DB 3FH,06H,5BH,4FH,66H


DB 6DH,7DH,07H,7FH,6FH



DELAY:MOV R5,#100

D1:MOV R6,#20


D2:MOV R4,#248


DJNZ R4,$


DJNZ R6,D2


DJNZ R5,D1


RET

DELAYH:MOV R5,#50

D3:MOV R6,#20


D4:MOV R4,#248


DJNZ R4,$


DJNZ R6,D4


DJNZ R5,D3


RET


END

相关帖子

沙发
流行音乐| | 2010-8-21 20:09 | 只看该作者
用循环来延时很不实用。

使用特权

评论回复
板凳
renmq| | 2010-8-23 12:52 | 只看该作者
什么呀,看不懂

使用特权

评论回复
地板
lastnight1034| | 2010-8-23 13:49 | 只看该作者
无注释看的累,全称用P1 P2 P3看的也累

使用特权

评论回复
5
YINGZEZIGA| | 2010-8-23 17:29 | 只看该作者
汇编帝啊,你真是人才

使用特权

评论回复
6
xiaoyu9632| | 2010-8-23 17:38 | 只看该作者
你的程序思路不是很好,你应该首先将程序模块化,在start和ljmp start之间的过程最好写成像c一样的函数调用形式,这样会让人看的舒服些。

使用特权

评论回复
7
1156264275| | 2012-12-27 12:26 | 只看该作者
很完美

使用特权

评论回复
8
jy01758633| | 2013-1-5 17:32 | 只看该作者
表示看不到图。。。

使用特权

评论回复
9
yewuyi| | 2013-1-6 08:42 | 只看该作者
表现一下会写汇编指令?

使用特权

评论回复
10
yewuyi| | 2013-1-6 08:43 | 只看该作者
表现一下会写汇编指令?

使用特权

评论回复
11
zhang7676050| | 2013-1-6 08:53 | 只看该作者
搞这么多

使用特权

评论回复
12
xymxym| | 2013-1-6 13:47 | 只看该作者
为啥前3句把IO口全清0了,后3句又马上置1了,这电路是怎么样的一个电路?

使用特权

评论回复
13
x_yang| | 2013-1-6 16:53 | 只看该作者
:L

使用特权

评论回复
14
我是小帅| | 2013-11-28 15:40 | 只看该作者
蛋疼,不懂汇编

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:岂能尽如人意,但求无愧于心!

0

主题

11

帖子

1

粉丝