交通灯模拟系统实验报告书.docx

上传人:b****2 文档编号:3007501 上传时间:2023-05-05 格式:DOCX 页数:23 大小:212.14KB
下载 相关 举报
交通灯模拟系统实验报告书.docx_第1页
第1页 / 共23页
交通灯模拟系统实验报告书.docx_第2页
第2页 / 共23页
交通灯模拟系统实验报告书.docx_第3页
第3页 / 共23页
交通灯模拟系统实验报告书.docx_第4页
第4页 / 共23页
交通灯模拟系统实验报告书.docx_第5页
第5页 / 共23页
交通灯模拟系统实验报告书.docx_第6页
第6页 / 共23页
交通灯模拟系统实验报告书.docx_第7页
第7页 / 共23页
交通灯模拟系统实验报告书.docx_第8页
第8页 / 共23页
交通灯模拟系统实验报告书.docx_第9页
第9页 / 共23页
交通灯模拟系统实验报告书.docx_第10页
第10页 / 共23页
交通灯模拟系统实验报告书.docx_第11页
第11页 / 共23页
交通灯模拟系统实验报告书.docx_第12页
第12页 / 共23页
交通灯模拟系统实验报告书.docx_第13页
第13页 / 共23页
交通灯模拟系统实验报告书.docx_第14页
第14页 / 共23页
交通灯模拟系统实验报告书.docx_第15页
第15页 / 共23页
交通灯模拟系统实验报告书.docx_第16页
第16页 / 共23页
交通灯模拟系统实验报告书.docx_第17页
第17页 / 共23页
交通灯模拟系统实验报告书.docx_第18页
第18页 / 共23页
交通灯模拟系统实验报告书.docx_第19页
第19页 / 共23页
交通灯模拟系统实验报告书.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

交通灯模拟系统实验报告书.docx

《交通灯模拟系统实验报告书.docx》由会员分享,可在线阅读,更多相关《交通灯模拟系统实验报告书.docx(23页珍藏版)》请在冰点文库上搜索。

交通灯模拟系统实验报告书.docx

交通灯模拟系统实验报告书

目录

一、设计题目----------------------------------------------------2

二、课程设计的性质和目的------------------------------------2

三、设计任务----------------------------------------------------2

四、方案选择比较及方案方框图--------------------------------2

五、元件清单----------------------------------------------------4

六、硬件电路图--------------------------------------------------4

1、单片机主电路--------------------------------------------------4

2、交通灯二极管点亮电路------------------------------------------5

3、交通灯数码管显示电路-------------------------------------------5

七、软件设计----------------------------------------------------6

1、程序流程图----------------------------------------------------6

2、各功能模块程序清单--------------------------------------------8

八、设计心得----------------------------------------------------11

九、整体电路原理图----------------------------------------------12

十、附:

主程序--------------------------------------------------13

参考文献----------------------------------------------------------20

 

一、设计题目:

交通灯模拟控制系统

二、课程设计的性质和目的

本课程设计的主要目的是通过对电子技术及单片机原理的学习,综合掌握电子电路综合设计的过程,设计要求和具体的设计方法。

通过设计更好的复习、理解模拟电子、数字电子和单片机灯课程内容,使得理论和实际相结合,加强学生的动手能力以及查阅相关资料解决实际问题的能力,培养学生从事设计工作的整体概念。

三、设计任务

1、完成交通灯的变化规律,即一个十字路口为东西向和南北向,四个路口均有红黄绿三灯和两个LED数码显示管。

交通灯上电以后进入初始状态即东西红灯,南北红灯。

5s后转状态1:

南北绿灯亮通车,东西红灯亮,禁止通行,持续30s;30s后转状态2:

南北绿灯灭转黄灯闪亮,延时5秒,东西仍然红灯;5s后转状态3:

东西绿灯亮通车,南北转红灯,持续30s;30s后转状态4:

东西绿灯灭转亮黄闪灯,延时5秒,南北仍然红灯。

最后循环至状态1。

2、用8个LED数码管(各个方向均有两个LED数码管,分别表示个位是和十位)显示倒计时。

倒计时用于提醒驾驶员或行人信号灯发生改变的时间,以便他们在“停止”和“通行”两者作出合适的选择。

3、在紧急状态下,通过K1键手动设置,将所有路口的灯变为红灯。

四、方案选择比较及方案方框图

利用单片机模拟交通灯控制系统是单片机中较为经典的设计,其设计方案、种类及使用语言多种多样。

本设计中用红绿黄灯表示禁行,通行和等待的信号发生。

利用数码管倒计数显示间隔。

利用键盘控制来处理紧急情况。

编程语言使用的是汇编语言。

首先在单片机类型的选择上,单片机自20世纪70年代问世以来,发展迅速,各种类型的单片机层出不穷。

经过比较及仿真软件的使用范围,我选择了Atmel公司的AT89C51单片机。

然后为其添加了单片机外围电路,包括复位电路,晶振电路。

晶振选择了6MHz的频率,晶振电路的作用是产生单片机工作所需要的时钟脉冲序列。

然后就是本设计的三大重要模块,包括紧急按键电路,交通灯二极管点亮电路,交通灯数码管倒计时显示电路。

紧急按键电路中使用的按键是闸刀式,相比按键式键盘在中断处理过程中,处理程序简单,易于操作。

此电路接入了外部中断0,使用中断方式,减少CPU工作量,程序设计简单。

交通灯二极管点亮电路使用了外接上拉电阻的方式,要实现对四个方向三种颜色的灯光控制,可选用12只单色LED发光二极管作为交通灯,因为东西南北方向发光二极管的显示状态总是保持一致,因此可使南北方向红灯与红灯,黄灯与黄灯,绿灯与绿灯相串联的方式,东西亦如此。

采用这种方式的目的是为了节省单片机的I/O口,这样的接法只使用了六个I/O口,就完成了交通灯二极管红绿灯点亮的要求。

交通灯数码管倒计时显示电路中,因为东西方向时间显示相同,南北方向显示相同,故东南西北四个方向使用的是两个在一块的共阴极数码管,南北共接入P0口,东西共接入P2口,并都使用了上拉电阻,在显示过程中,采用了数码管按位动态显示,工作原理是:

首先给数码管的个位位选口输出低电平,选中个位,显示数字,然后在极短的延时时间后,给数码管的十位位选输出低电平,选中十位,显示数字,然后依次循环上述操作。

采用这样的电路方案,这样做第一可以节省单片机的I/O口,第二,增加了驱动能力。

第三,在程序设计方面简单,易于实现。

整体方案完成的功能是当单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。

在此过程中可随时调用急停按键中断。

并在中断处理结束后再次按下按键重新返回原态继续执行。

整体方案方框图如下图示。

图表1基于AT89C51单片机交通灯模拟控制系统组成方框图

五、元件清单

表格1单片机交通灯模拟控制系统元件清单

元件名称

型号

数量

作用

单片机

AT89C51

1

核心控制

交通灯

红绿黄三色二极管

红3绿3黄3

红绿黄灯显示

晶振

6MHz

1

晶振电路

电容

22pF

2

晶振电路

电解电容

10uF

1

复位电路

排阻

7位10K排阻

3

上拉电阻

数码管

2位共阴

4

显示电路

按键

按钮

1

复位电路

按键

闸刀

1

按键电路

电源

+5V

5

提供+5V电源

电阻

10k

3

电阻

240k

1

六、硬件电路图

1、单片机主电路:

图表2单片机交通灯模拟控制系统主电路

2、交通灯二极管点亮电路:

图表37位一体的上拉排阻图表4二极管点亮串联电路

东西南北各状态二极管点亮时P1口各位的状态如下表格(P1.7与P1.6的状态与二极管点亮无关,故没有列出):

其中0表示该位输出低电平,对应二极管点亮。

表格2东西南北各状态时二极管点亮情况

P1口

方向状态

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

时间

东西南北全红

-

-

1

1

0

1

1

0

5s

东西红南北绿

-

-

1

1

0

0

1

1

30s

东西红南北黄

-

-

1

1

0

1

0

1

5s

东西绿南北红

-

-

0

1

1

1

1

0

30s

东西黄南北红

-

-

1

0

1

1

1

0

5s

3、交通灯数码管显示电路:

图表5东西南北两个7位一体上拉排阻

图表6数码管倒计时显示模块

七、软件设计:

1、程序流程图:

程序主要分为主程序和中断程序两大部分,其中主程序包括了堆栈指针的设置,定时器与外部中断的开中断,以及各状态实时显示的部分。

中断程序主要包括定时器中断处理程序与紧急情况时外部中断处理的程序。

程序采用了汇编语言进行编写。

具体流程见程序流程图及各功能模块程序清单。

2、各功能模块程序清单

定时器赋初值:

这里定时器主要是用来为交通灯计时,本设计中,采用定时器T0,并使其工作在方式1,因为晶振采用的是6MHz,方式0最长可定时16.384ms,方式1最长定时131.072ms,方式2最长定时512us,所以采用方式1,每隔100ms中断一次,中断10次为1s。

计算初值X:

(2^16-X)*2*10^(-6)=10^(-1),得初值为X=15536=3CB0H,因此TH0=3CH,TL0=B0H。

定时器赋初值模块采用了子程序方法,使各状态在刚开始容易调用

T0DE:

MOVB,#0AHMOVTH0,#3CH

MOVTMOD,#01HRET

MOVTL0,#0B0H

定时器中断处理模块:

中断响应时,定时器产生的是1s延时,因此需要再次赋初值,进行下一秒的中断延时,并在中断产生时,将状态标志位置一,以供数码管显示程序查询是否1s延时已到,然后判断应执行那一步操作。

IT0P:

MOVTL0,#0B0HSETBF0

MOVTH0,#3CHDECR6

DJNZB,RTURNRTURN:

RETI

外部中断0中断处理模块(即紧急状况下按键后单片机处理程序):

外部中断处理是为在紧急状况下,处理紧急事务所设计的。

在按键按下后,按键会保持按下状态,给P3.2持续的低电平,使外部中断0一直处于中断状态。

此时所有红的亮,数码管显示全8。

只有当紧急事务处理完毕,方可把按键按起跳出中断,恢复中断前状态继续执行。

KEYIN:

CLRIE0MOVP0,#0FFH

MOVP1,#36HMOVP2,#0FFH

CLRP3.6RETI

CLRP3.7

初始态赋值模块:

此时交通灯初次使用,首先将各路口所有红灯点亮,然后是初始状态的赋值操作:

开定时器中断,外部中断,外部中断方式设置为电平触发,然后调用定时器赋初值子程序,进而执行下一步操作。

MAIN:

MOVP1,#0F6H

MOVSP,#60H

MOVR6,#05H

SETBET0

SETBEX0

CLRIT0

SETBEA

SETBTR0

LCALLT0DE

数码管倒计时5s显示模块:

数码管倒计时5s显示模块较倒计时30s简单。

此时首先赋计时次数5给累加器A,经过基址加变址寄存器间接寻址的方式通过查表查找要给数码管显示的数字。

由于十位只显示0,所以十位的显示简单,不用查表。

显示采用扫描的方式,个位与十位显示之间须有有瞬间延时,否则会在显示过程中出现乱码。

HERE:

MOVA,R6SETBP3.7

MOVDPTR,#SEGTABLCALLDELY

MOVCA,@A+DPTRSETBP3.6

MOVP0,AMOVP2,#3FH

MOVP1,#76HCLRP3.7

LCALLDELYLCALLDELY

MOVP1,#0F6HSETBP3.7

MOVP0,#3FHJBF0,N1

MOVP1,#0B6HCJNER6,#00H,HERE

LCALLDELYSJMPSTAT1

MOVP1,#0F6HN1:

LCALLT0DE

MOVP2,ACLRF0

CLRP3.6CJNER6,#00H,HERE

数码管倒计时30秒显示模块:

数码管倒计时30s显示使用了两个寄存器,一个存放个位,另一个存放十位。

个位显示原理与5s倒计时显示一样,十位就采用了与个位显示方法一样的显示方法。

STAT1:

MOVP1,#0F3HMOVCA,@A+DPTR

CLRF0MOVP0,A

LCALLT0DE;接下页MOVP2,A

MOVR7,#03HMOVP1,#0B3H

LOOPR6:

MOVR6,#0AHCLRP3.7

HERE1:

MOVA,R6LCALLDELY

MOVDPTR,#SEGTABMOVP1,#0F3H

MOVCA,@A+DPTRSETBP3.7

MOVP0,AJBF0,N2

MOVP2,ACJNER6,#00H,HERE1

MOVP1,#73HCJNER7,#00H,LOOPR6

CLRP3.6LJMPSTAT2

SETBP3.7N2:

LCALLT0DE

LCALLDELYCLRF0

MOVP1,#0F3HCJNER6,#09H,HERE1

SETBP3.6DECR7

MOVA,R7;转上页LJMPHERE1

八、设计心得

交通信号灯模拟控制系统是单片机设计中比较经典的设计案例,这次的单片机设计,我收获颇多。

在硬件上,对复位电路,晶振电路的连接更加熟悉,二极管及数码管的外围连接上,其驱动能力,单片机各I/O口带载能力都加深了印象,本次设计参考了许多资料后,采用较为简单的设计思想,各外围电路都是直接接在单片机I/O口上。

在整体电路图的布局与设计方面自己也感觉有了提高。

其次也是重点,就是程序的编写,这个学期,学单片机的同时学习了汇编语言,因此在程序编写时用了汇编。

由于整体思路及大部分程序都是自己编写,所以深刻感受到程序编写的不易。

首先必须要做的是程序流程图,只有在一个清晰的流程图下,程序编写过程才不会乱,才会有条不紊。

整个的设计查阅了一些相关资料,并且在实际操作与编程过程中,与同学进行讨论,感到了无比的充实。

尤其是在程序的书写上面,充分的调用大脑,完全陷入编程中。

通过这次的单片机交通灯模拟系统的设计,也使我深刻的感受到自己知识的不足,电路知识,编程技术等都有欠缺,熟练度不高。

不过我相信今后多加练习,多动手多动脑一定可以做的更好。

九、整体电路原理图

十、附:

主程序

ORG0000H;程序运行入口

LJMPMAIN;跳向主程序入口

ORG0003H;外部中断0的入口

LJMPKEYIN;外部中断处理程序入口

ORG000BH;T0的中断入口

LJMPIT0P;T0中断处理程序入口

ORG0600H;数码管显示数字表入口

SEGTAB:

DB3FH,06H,5BH,4FH,66H,6DH

DB7DH,07H,7FH,6FH,3FH

MAIN:

MOVP1,#0F6H;四方向红灯全亮

MOVSP,#60H;设置堆栈指针

MOVR6,#05H;倒计时次数

SETBET0;允许T0中断

SETBEX0;允许外部中断0中断

CLRIT0;中断请求为电平触发方式

SETBEA;总中断允许

SETBTR0;启动T0

LCALLT0DE;调用定时器赋值语句

HERE:

MOVA,R6;将倒计时次数送累加器A

MOVDPTR,#SEGTAB;将表的首地址送DPTR

MOVCA,@A+DPTR;通过基址加变址寄存器间接寻址查表

MOVP0,A;将查表结果送数码管显示

MOVP1,#76H;开个位位选

LCALLDELY;调延时程序

MOVP1,#0F6H;关位选

MOVP0,#3FH;将0送数码管显示

MOVP1,#0B6H;开十位位选

LCALLDELY;调延时程序

MOVP1,#0F6H;关位选

MOVP2,A;东西向数码管显示过程同南北向

CLRP3.6

SETBP3.7

LCALLDELY

SETBP3.6

MOVP2,#3FH

CLRP3.7

LCALLDELY

SETBP3.7

JBF0,N1;判断一秒是否到,到转向N1,否继续

CJNER6,#00H,HERE

;判断倒计时次数是否减为0,是跳下一个状态,否则继续显示

SJMPSTAT1

N1:

LCALLT0DE;1s已到,调用定时器赋值语句

CLRF0;标志位清零

CJNER6,#00H,HERE

;判断倒计时次数是否减为0,是跳下一个状态,否则继续显示

STAT1:

MOVP1,#0F3H;东西红灯,南北绿灯

CLRF0;1s标志位清零

LCALLT0DE;调用定时器赋值语句

MOVR7,#03H;数码管十位计数次数送R7

LOOPR6:

MOVR6,#0AH;数码管个位计数次数送R6

HERE1:

MOVA,R6

MOVDPTR,#SEGTAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,A

MOVP1,#73H

CLRP3.6

SETBP3.7

LCALLDELY

MOVP1,#0F3H

SETBP3.6

MOVA,R7

MOVCA,@A+DPTR

MOVP0,A

MOVP2,A

MOVP1,#0B3H

CLRP3.7

LCALLDELY

MOVP1,#0F3H

SETBP3.7

JBF0,N2;判断一秒是否到,到转向N2,否继续

CJNER6,#00H,HERE1;判断个位是否减为0,否继续显示,是判断十位状态

CJNER7,#00H,LOOPR6;判断十位是否减为0,否跳到LOOP6,是转状态2

LJMPSTAT2

N2:

LCALLT0DE;1s已到,调用定时器赋值语句

CLRF0;标志位清零

CJNER6,#09H,HERE1;判断个位是否为9,是则十位减一,否则继续显示

DECR7;十位减一

LJMPHERE1;跳向HERE1继续显示

;T0中断处理程序

IT0P:

MOVTL0,#0B0H;重新赋初值

MOVTH0,#3CH

DJNZB,RTURN;B减一是否为0,否返回,是则一秒到

SETBF0;一秒到,标志位置一

DECR6;倒计时次数减一

RTURN:

RETI

;定时器赋初值语句

T0DE:

MOVB,#0AH;中断次数10,完成一秒延时

MOVTMOD,#01H;T0工作在方式1

MOVTL0,#0B0H

MOVTH0,#3CH

RET

;个位十位显示之间的短暂延时

DELY:

MOVR3,#01H

D1:

MOVR4,#028H

D12:

MOVR5,#05AH

D2:

DJNZR5,D2

DJNZR4,D12

DJNZR3,D1

RET

STAT2:

MOVP1,#0F5H;东西红灯亮,南北黄灯闪烁

MOVR6,#05H

CLRF0

LCALLT0DE

HERE2:

MOVA,R6

MOVDPTR,#SEGTAB

MOVCA,@A+DPTR

MOVP0,A

CLRP1.7

SETBP1.6

LCALLDELY

SETBP1.7

MOVP0,#3FH

CLRP1.6

LCALLDELY

SETBP1.6

MOVP2,A

CLRP3.6

SETBP3.7

LCALLDELY

SETBP3.6

MOVP2,#3FH

CLRP3.7

LCALLDELY

SETBP3.7

JBF0,N3

CJNER6,#00H,DELY1;倒计时次数是否减为0,否调用闪烁延时,是转状态3

LJMPSTAT3

N3:

LCALLT0DE

CLRF0

CJNER6,#00H,DELY1;倒计时次数是否减为0,否调用闪烁延时

;闪烁延时子程序

DELY1:

MOVTMOD,#11H;使定时器T1工作在方式1

MOVTL1,#0B0H;赋初值

MOVTH1,#3CH

SETBTR1;启动T1

LOOP:

JNBTF1,LOOP;定时器1溢出标志位为0,转移

CLRTR1;关T1

CPLP1.1;南北黄灯灭

LJMPHERE2;转HERE2,即状态2处

STAT3:

MOVP1,#0DEH;东西绿灯亮,南北红灯亮

CLRF0

LCALLT0DE

MOVR7,#03H

LOOPR61:

MOVR6,#0AH

HERE3:

MOVA,R6

MOVDPTR,#SEGTAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,A

MOVP1,#5EH

CLRP3.6

SETBP3.7

LCALLDELY

MOVP1,#0DEH

SETBP3.6

MOVA,R7

MOVCA,@A+DPTR

MOVP0,A

MOVP2,A

MOVP1,#9EH

CLRP3.7

LCALLDELY

MOVP1,#0DEH

SETBP3.7

JBF0,N4

CJNER6,#00H,HERE3

CJNER7,#00H,LOOPR61

LJMPSTAT4

N4:

LCALLT0DE

CLRF0

CJNER6,#09H,HERE3

DECR7

LJMPHERE3

STAT4:

MOVP1,#0EEH;东西黄灯闪烁,南北红灯亮

MOVR6,#05H

CLRF0

LCALLT0DE

HERE4:

MOVA,R6

MOVDPTR,#SEGTAB

MOVCA,@A+DPTR

MOVP0,A

CLRP1.7

SETBP1.6

LCALLDELY

SETBP1.7

MOVP0,#3FH

CLRP1.6

LCALLDELY

SETBP1.6

MOVP2,A

CLRP3.6

SETBP3.7

LCALLDELY

SETBP3.6

MOVP2,#3FH

CLRP3.7

LCALLDELY

SETBP3.7

JBF0,N5

CJNER6,#00H,DELY2

LJMPSTAT1

N5:

LCALLT0DE

CLRF0

CJNER6,#00H,DELY2

DELY2:

MOVTMOD,#11H

MOVTL1,#0B0H

MOVTH1,#3CH

SETBTR1

LOOP1:

JNBTF1,LOOP1

CLRTR1

CPLP1.4

LJMPHERE4

;外部中断0中断处理程序

KEYIN:

CLRIE0;清中断标志位

MOVP1,#36H;四个方向全红灯并把南北数码管个十位位选打开

CLRP3.6;把

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2