交通灯.docx

上传人:b****6 文档编号:4963119 上传时间:2022-12-12 格式:DOCX 页数:22 大小:442.81KB
下载 相关 举报
交通灯.docx_第1页
第1页 / 共22页
交通灯.docx_第2页
第2页 / 共22页
交通灯.docx_第3页
第3页 / 共22页
交通灯.docx_第4页
第4页 / 共22页
交通灯.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

交通灯.docx

《交通灯.docx》由会员分享,可在线阅读,更多相关《交通灯.docx(22页珍藏版)》请在冰豆网上搜索。

交通灯.docx

交通灯

重庆大学本科学生课程设计任务书

课程设计题目

十字路口交通灯控制器设计

学院

光电工程学院

专业

光电信息工程

年级

2011

设计要求:

利用单片机设计一个十字路口交通灯控制器,要求如下:

(1)用单片机定时器产生秒信号,控制十字路口的红、绿、黄灯交替亮灭,并利用LED数码管显示十字路口两个方向的剩余时间;

(2)能用按键设置两个方向的通行时间(绿、红灯点亮时间)和暂缓通行时间(黄灯点亮时间);(3)控制器的工作符合一般交通灯控制要求。

学生应完成的工作:

1、按照设计要求,完成芯片的选型与电路设计;

2、在ProteusISIS7中完成电路原理图绘制。

3、利用C语言或汇编语言编写相关软件。

4、利用ProteusISIS7进行仿真。

5、完成答辩与设计报告。

目前资料收集情况(含指定参考资料):

1、《Protues教程》(第2版),朱清惠等,清华大学出版社,2011。

2、《单片机应用及C51程序设计》,陈涛,机械工业出版社,2008。

3、《单片机原理与C51程序设计基础教程》,张欣等,清华大学出版社,2010。

4、《MSP430超低功耗单片机原理与应用》,沈建华等,清华大学出版社,2013。

4、选定芯片的数据手册(学生自行下载)。

课程设计的工作计划:

6月9日:

下达任务、准备资料;

6月10日~6月14日:

设计方案确定、芯片选择、原理图设计;

6月15日~6月17日:

软件设计与仿真;

6月18日~6月19日:

撰写课程设计报告、准备答辩;

6月20日:

分组进行课程设计答辩;

6月21日:

整改报告并提交。

任务下达日期2013年6月8日

完成日期2013年6月21日

指导教师杨利平(签名)

学生(签名)

1、方案实现

通过AT89C51并接数码管与发光二极管来实现,其中8个数码管用来显示秒值,东、西、南、北各两个。

12个发光二极管显示交通灯状态,东、西、南、北各三个,分为红、绿、黄三种颜色。

正常状态通过普通的I/O口功能实现,特殊状态用外部中断(P3.2和P3.3)来实现。

2、程序设计思路

首先东西方向绿灯亮,南北方向红灯亮,同时开始倒计时20s,在7段数码管上显示剩余时间(状态S1);20s倒计时结束后,开始3s倒计时,并且东西方向绿灯开始闪烁,南北方向红灯亮(状态S2);3s倒计时结束后再开始2s倒计时,并且东西方向黄灯闪烁,南北还是红灯亮(状态S3);当2s倒计时结束后,开始20s倒计时,此时南北方向绿灯亮,东西方向红灯亮(状态S4);接下来南北方向绿灯闪烁3s(状态S5);再南北方向黄灯闪烁2s,(状态S6)接着开始循环。

任何时候,按下按键就进入中断程序处理紧急情况,按下按键1,就能改变倒计时显示时间为30s,同时红绿灯状态保持不变,中断后自动返回原来状态;按下按键2,就能改变倒计时显示时间为10s,同时东西、南北红绿灯状态变为红色(禁止通行),不断开按键就一直在中断中循环,断开按键后自动返回初始状态S1。

 

3、硬件连线及原理图

P2.1~P2.6接LED发光二极管;P0、P1口各接七段数码管,分别显示倒计时的个位、十位;P3.2和P3.3分别接按键

 

 

图1硬件原理图

3.1复位电路

 

图2手动复位电路

图3自动复位电路

主要用于当程序运行出错或进入死循环时,复位清零。

当采用的晶体频率为12MHz时,C=10µF,R=8.2kΩ;当采用的晶体频率为6MHz时,C=22µF,R=1kΩ.

 

3.2时钟电路

图4内部时钟电路

内部时钟电路构成稳定的自激振荡器,外接石英晶体时,电容C1和C2的值常选择为30pf左右;外接陶瓷谐振器时,C1和C2的值为47pf。

接入电容C1和C2有利于振荡器起振,对频率有微调作用。

3.3八段LED数码管

LED灯的显示原理:

通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如dp,g,f,e,d,c,b,a全亮显示为8,本次设计采用共阳极连接驱动代码,代码表如下表5所示。

表5驱动代码表

显示数值

dp,g,f,e,d,c,b,a

驱动代码

0

11010000

C0H

1

11111001

F9H

2

10100100

A4H

3

10110000

B0H

4

10011001

99H

5

10010010

92H

6

10000010

82H

7

11111000

F8H

8

10000000

80H

9

10010000

90H

 

图5共阳极接法

相应在程序软件上,可以通过调用程序给定的秒值经过除法计算,算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。

3.4定时器

(1)AT89C1晶振频率为12MHz,则机器周期T=1us,定时器选择不同的工作方式下最大定时时间分别为:

方式0:

Tmax=8.192ms

方式1:

Tmax=65.536ms

方式2、3:

Tmax=0.256ms

(2)定时器计数初值计算

选择定时器0,工作方式1,设定时器初值为50ms,则根据下式计算50000us=(65536-t)x1us

求得计数初值t=15536=0011110010110000B

其中高8位装入TH0,即TH0=3CH;低8位装入TL0,即TL0=0B0H。

4、软件程序设计

本次实验设计的程序主要包含:

主程序,两个中断程序,计时程序,显示程序,延时1s的程序。

具体见以下叙述。

4.1主程序中,是顺次执行,从状态S1顺次执行到S6,然后再次循环。

流程图如下:

图6主程序流程图

定义I/O口:

H_REDBITP2.1

H_GREENBITP2.2;南北交通灯

H_YELLOWBITP2.3

L_REDBITP2.4

L_GREENBITP2.5;东西交通灯

L_YELLOWBITP2.6

状态S1:

东西方向绿灯亮,南北方向红灯亮

STATE1:

SETBH_RED

CLRH_GREEN

CLRH_YELLOW

CLRL_RED

SETBL_GREEN

CLRL_YELLOW

状态S2:

东西方向黄灯亮,南北方向红灯亮

STATE2:

SETBH_RED

CLRH_GREEN

CLRH_YELLOW

CLRL_RED

CLRL_GREEN

SETBL_YELLOW

RET

4.2显示程序

图7显示程序流程图

该显示程序主要是为了实现倒计时的显示,先将存在SECOND内的数值通过除法运算取出个位与十位,然后通过查表指令在LEDMAP取出字形,并用两个7段SEG把高,低位显示出来。

DISPLAY:

MOVA,SECOND

MOVB,#10

DIVAB

MOVDPTR,#LEDMAP;取表首地址

MOVCA,@A+DPTR;查表

MOVP1,A;显示十位

MOVA,B

MOVCA,@A+DPTR;显示个位

MOVP0,A

RET

LEDMAP:

DB0C0H,0F9H,0A4H,0B0H

DB99H,92H,82H,0F8H,80H,90H

4.3计时程序

图8计时程序流程图

COUNT:

LCALLDISPLAY

WAIT1:

JNBTF0,WAIT1;定时器50ms未到,则等待

CLRTF0

MOVTH0,#3CH;定时器50ms到了,清定时器0溢出标志位

MOVTL0,#0B0H

LCALLDISPLAY

DJNZR2,WAIT1;是否到1s

MOVR2,#20

DECSECOND;到1s,则秒值减1

DJNZR3,WAIT1;20s是否倒计时减完,未完则返回

RET

4.4中断程序

两个中断程序分别靠双掷开关控制高低电位而实现,中断程序EXINT1和中断程序EXINT2及流程图如下:

图9中断程序流程图

中断初始设置

MOVIE,#10000101B;INTO、INT1中断允许

MOVIP,#00000100B;INT1中断优先

MOVTCON,#00000101B;INTO、INT1为边沿触发

MOVSP,#80H;设定堆栈指针

4.31s延时子程序

1s延时程序主要用于中断是进行调用其流程图及程序如下:

图10延时程序流程图

DELAY:

MOVTMOD,#01H;1s定时器延时子程序

MOVTH0,#3CH;置初值

MOVTL0,#0B0H

CLRTF0

SETBTR0;启动定时器

MOVR5,#20

LLLL0:

JBTF0,LLLL1;查询计数溢出位TF0

AJMPLLLL0

LLLL1:

MOVTH0,#3CH;重新设置初值

MOVTL0,#0B0H

CLRTF0

DJNZR5,LLLL0

RET

也可以用软件方法实现1s延时:

DELAY:

MOVR5,#100

DD1:

MOVR6,#20

DD2:

MOVR7,#248

DJNZR7,$

DJNZR6,DD2

DJNZR5,DD1

RET

5、仿真效果图

附录:

SECONDEQU60H

H_REDBITP2.1

H_GREENBITP2.2

H_YELLOWBITP2.3

L_REDBITP2.4;定义IO端口

L_GREENBITP2.5

L_YELLOWBITP2.6

ORG0000H;CPU复位入口

LJMPMAIN

ORG0003H;INT0中断入口

AJMPEXINT1

ORG0013H;INT1中断入口

AJMPEXINT2

MAIN:

MOVIE,#10000101B;INTO、INT1中断允许

MOVIP,#00000100B;INT1中断优先

MOVTCON,#00000101B;INTO、INT1为边沿触发

MOVSP,#80H;设定堆栈指针

MOVTMOD,#01H;设置定时器0为方式1

MOVTH0,#3CH

MOVTL0,#0B0H;设置定时器的初始值,定时50ms

CLRTF0;清定时器0溢出标志

SETBTR0;启动定时器

START:

CLRA

MOVP1,A;首先关闭显示

MOVP0,A

;状态1,东西方向绿灯亮,南北方向红灯亮

MOVR2,#20

MOVR3,#21

MOVSECOND,#20;20s初值

LCALLSTATE1

LCALLCOUNT

;状态2,东西方向绿灯闪,南北方向红灯亮

MOVR0,#01H;标志位,东西方向绿灯闪

MOVR2,#2

MOVR3,#4

MOVR4,#10

MOVSECOND,#3;3s初值

LCALLDISPLAY

LCALLSTATE2

LCALLCOUNT1

;状态3,东西方向黄灯闪,南北方向红灯亮

MOVR0,#02H;标志位,东西方向黄灯闪

MOVR2,#2

MOVR3,#3

MOVR4,#10

MOVSECOND,#2;2s初值

LCALLSTATE3

LCALLCOUNT1

状态4,东西方向红灯亮,南北方向绿灯亮

MOVR2,#20

MOVR3,#21

MOVSECOND,#20;20s初值

LCALLSTATE4

LCALLCOUNT

状态5,东西方向红灯亮,南北方向绿灯闪

MOVR0,#03H;标志位,南北方向绿灯闪

MOVR2,#2

MOVR3,#4

MOVR4,#10

MOVSECOND,#3;3s初值

LCALLSTATE5

LCALLCOUNT1

状态6,东西方向红灯亮,南北方向黄灯闪

MOVR0,#04H;标志位,南北方向黄灯闪

MOVR2,#2

MOVR3,#3

MOVR4,#10

MOVSECOND,#2

LCALLSTATE6

LCALLCOUNT1

LJMPSTART

;***********************************************

;计时程序

;*************************************************

COUNT:

LCALLDISPLAY

WAIT1:

JNBTF0,WAIT1;定时器50ms未到,则等待

CLRTF0

MOVTH0,#3CH;定时器50ms到了,清定时器0溢出标志位

MOVTL0,#0B0H

LCALLDISPLAY

DJNZR2,WAIT1;是否到1s

MOVR2,#20

DECSECOND;到1s,则秒值减1

DJNZR3,WAIT1;20s是否倒计时减完,未完则返回

RET

COUNT1:

LCALLDISPLAY

WAIT2:

JNBTF0,WAIT2

CLRTF0

MOVTH0,#3CH

MOVTL0,#0B0H

LCALLDISPLAY

DJNZR4,WAIT2;是否到500ms,未到则返回

CJNER0,#01H,D1

CPLL_GREEN;到了500ms,则闪东西方向绿灯

D1:

CJNER0,#02H,D2

CPLL_YELLOW;闪东西方向黄灯灯

D2:

CJNER0,#03H,D3

CPLH_GREEN;闪南北方向绿灯

D3:

CJNER0,#04H,D4

CPLH_YELLOW;闪南北方向黄灯

D4:

MOVR4,#10

DJNZR2,WAIT2;是否到1s

MOVR2,#2

DECSECOND

DJNZR3,WAIT2

RET

;******************************************************

;LED显示状态

;******************************************************

STATE1:

SETBH_RED;东西方向绿灯亮,南北方向红灯亮

CLRH_GREEN

CLRH_YELLOW

CLRL_RED

SETBL_GREEN

CLRL_YELLOW

RET

STATE2:

SETBH_RED;东西方向绿灯闪,南北方向红灯亮

CLRH_GREEN

CLRH_YELLOW

CLRL_RED

CLRL_GREEN

CLRL_YELLOW

RET

STATE3:

SETBH_RED;东西方向黄灯闪,南北方向红灯亮

CLRH_GREEN

CLRH_YELLOW

CLRL_RED

CLRL_GREEN

SETBL_YELLOW

RET

STATE4:

CLRH_RED;东西方向红灯亮,南北方向绿灯亮

SETBH_GREEN

CLRH_YELLOW

SETBL_RED

CLRL_GREEN

CLRL_YELLOW

RET

STATE5:

CLRH_RED;东西方向红灯亮,南北方向绿灯闪

SETBH_GREEN

CLRH_YELLOW

SETBL_RED

CLRL_GREEN

CLRL_YELLOW

RET

STATE6:

CLRH_RED;东西方向红灯亮,南北方向黄灯闪

CLRH_GREEN

SETBH_YELLOW

SETBL_RED

CLRL_GREEN

CLRL_YELLOW

RET

;****************************************************************

;显示程序

;****************************************************************

DISPLAY:

MOVA,SECOND

MOVB,#10

DIVAB

MOVDPTR,#LEDMAP;取表首地址

MOVCA,@A+DPTR;查表

MOVP1,A;显示十位

MOVA,B

MOVCA,@A+DPTR;显示个位

MOVP0,A

RET

;****************************************************************

;中断程序

;****************************************************************

EXINT1:

PUSHACC

PUSHPSW;保护现场

SETBRS0;设定PSW工作寄存器组1,保护R0-R7寄存器内容

CLRRS1

MOVR0,#30;使灯亮30s

LOOP:

MOVA,R0

MOVB,#10

DIVAB

MOVDPTR,#LEDMAP;取表首地址

MOVCA,@A+DPTR;查表显示

MOVP1,A

MOVA,B

MOVCA,@A+DPTR

MOVP0,A

CALLDELAY;调用1s延时子程序

DJNZR0,LOOP;没到30s就继续

MOVP1,#0C0H;显示“00”

MOVP0,#0C0H

CALLDELAY;延迟1s

POPPSW;恢复现场

POPACC

RETI

EXINT2:

PUSHACC

PUSHPSW

SETBRS0

CLRRS1

MOVR1,#10;使灯亮10s

LOOP1:

PUSHP2

MOVP2,#12H;紧急状态,全部亮红灯

MOVA,R1

MOVB,#10

DIVAB

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOVP1,A

MOVA,B

MOVCA,@A+DPTR

MOVP0,A

CALLDELAY;调用1s延时子程序

DJNZR1,LOOP1;没到10s就继续

MOVP1,#0C0H;显示“00”

MOVP0,#0C0H

CALLDELAY;延迟1s

POPPSW

POPACC

POPP2

RETI

;*************************************************************

DELAY:

MOVTMOD,#01H;1s定时器延时子程序(硬件)

MOVTH0,#3CH;置初值

MOVTL0,#0B0H

CLRTF0

SETBTR0;启动定时器

MOVR5,#20

LLLL0:

JBTF0,LLLL1;查询计数溢出位TF0

AJMPLLLL0

LLLL1:

MOVTH0,#3CH;重新设置初值

MOVTL0,#0B0H

CLRTF0

DJNZR5,LLLL0

RET

LEDMAP:

DB0C0H,0F9H,0A4H,0B0H

DB99H,92H,82H,0F8H,80H,90H

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1