单片机课程设计交通灯Word格式.docx

上传人:b****4 文档编号:16814898 上传时间:2022-11-26 格式:DOCX 页数:15 大小:70.42KB
下载 相关 举报
单片机课程设计交通灯Word格式.docx_第1页
第1页 / 共15页
单片机课程设计交通灯Word格式.docx_第2页
第2页 / 共15页
单片机课程设计交通灯Word格式.docx_第3页
第3页 / 共15页
单片机课程设计交通灯Word格式.docx_第4页
第4页 / 共15页
单片机课程设计交通灯Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机课程设计交通灯Word格式.docx

《单片机课程设计交通灯Word格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计交通灯Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

单片机课程设计交通灯Word格式.docx

东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车

辆和行人安全通行。

红灯亮禁止通行,绿灯亮允许通行。

黄灯亮提示人们注意红、绿灯的状

态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。

设东西道比南北道的车

流量大,指示灯燃亮的方案如下表。

35S5S35S5S„„

东西道红灯亮绿灯亮黄灯亮„„

南北道绿灯亮黄灯亮红灯亮„„

(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;

南北道为绿灯,此道车

辆通过,行人禁止通行。

时间为35秒。

(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。

(3)当东西方向为绿灯,此道车辆通行;

南北方向为红灯,南北道车辆禁止通过,行人通

行,时间为35秒。

(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的

通行。

(5)此表可根据车流量动态设定红绿灯初始值。

3

共阳数码管显键盘模块AT89S52示模块

主控制模

LED灯控制显示

块模块蜂鸣器模块

本电路是由AT89S52单片机为控制核心,其具有在线编程功能,低功耗,能在3V超低压工作;

共阳极的七段数码管一个,红、黄、绿交通灯各两个,按键键盘四个、蜂鸣器。

AT89S52单片机为40引脚双列直插芯片,共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。

本次设计单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容

的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.如图-1所示:

图-1AT89S52主控制系统

4

信号灯用来显示车辆通行状况,每个路口的信号的的转换顺序为:

绿——>

黄——>

红,或者:

红——>

绿;

绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以

继续通行,是绿灯过渡到红灯提示灯。

本次设计中,P1.0—P1.7口所对应的灯分别为:

绿、

黄、红、红、红、绿、黄、红;

对应为D8—D1,D8、D7、D5为一路绿黄红灯,D6为蜂鸣器指示灯,D3、D2、D1为二路绿黄红灯。

图-2LED显示电路

在交通信号灯的正上方安装一个可以显示绿灯通行、红灯等待时间的显示电路,采用数

码管显示电路是一种很好的方法。

由于东往西方向和西往东方向显示的时间相同,南往北方

向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两

位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求,数码

管连接方法如图3所示:

图-3数码管显示电路

5

四个按键实现功能分别为:

复位、暂停进入中断、加1、减1。

复位按键可以在系统运

行不理想情况下复位系统,按键K1可以是程序进入中断子程序,K2、K3分别为每按一下加1或者减1功能。

图-3按键键盘电路

(1)上电系统复位输入交通灯初始时间,通过8052单片机P1输入到系统,

(2)由8052的定时器每秒钟送信息,由8052的P1口显示红、绿、黄灯的燃亮情况;

(3)通过8052单片机的P3.0位来控制系统是工作或设置初值,当位0就对系统进行复

位,为1系统就开始工作。

(4)黄灯倒计时是,蜂鸣器一起鸣叫,起警示功能;

(5)P2口控制数码管码表输入;

(6)红黄绿灯循环工作。

图-4交通灯时间显示程序设计流程图

6

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

计数器初值计算:

定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。

他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。

因此,我们可以把计数器记满为零所

需的计数值设定为C和计数初值设定为TC可得到如下计算通式:

TC=M-C

式中,M为计数器摸值,该值和计数器工作方式有关。

在方式0时M为213;

在方式1

时M的值为216;

在方式2和3为28。

计算公式:

T=(M-TC)T计数

或TC=M-T/T计数

T计数是单片机时钟周期TCLK的12倍;

TC为定时初值如单片机的主脉冲频率为TCLK12MHZ,经过12分频方式0TMAX=213x1ms=8.192ms

方式1TMAX=216x1ms=65.536ms

显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合

的办法才能解决这个问题.

我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每

当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。

在中断服

务子程序中,CPU先使软件计数器减1,然后判断它是否为零。

为零表示1秒已到可以返

回到输出时间显示程序。

本次设计的交通灯设计电路系统较简单,电路焊接也比较简单,但是仍然不可忽视,

因为电路板的焊制要求细心地操作,否则会容易出现虚焊、短接等现象存在。

即使是在小的

电路系统中,只要出于一处的错误,就有可能对检测造成很大的不便,甚至烧掉电路,所以

手工时必须小心谨慎。

由于之前曾经做过类似的电路设计与焊接工作,本次电路焊接十分成功,焊接完毕检测

没有错误,烧上程序之后可以使用,硬件完成理想成功。

本次设计程序用C语言编写,程序相对简单,在第一次烧进Hex文件时发现数码管不亮,后来进过对程序的小改动,成功实现数码管按要求显示。

7

本次课程设计我们指导老师给的题目是“基于单片机的——”,这是一个命题可以比较

广泛的课题。

结合自身的知识,我选择了完成“基于单片机的交通灯控制系统”。

经过一个

星期的努力,我终于完成了这个课题。

回想短短一周的经历,真是感受颇多。

本次设计的交通灯控制系统在大二时就做过一次,但是那次是用简单的IC芯片制作,并不涉及单片机。

在这次课程设计制作中,由于是单独完成从方案论证、硬件电路设计到软

件设计,工作量还是不小。

不过兴趣所致,我还是坚持完成了本次课程设计,从原理图的理

论设计,到焊制电路,到调试电路,写程序调试程序,系统调试,其实是个非常繁琐的过程。

做完我才发现,原来当你有兴趣并且坚持做一件事的时候,你是可以很完美的做完它的,至

少在心理上你会觉得它是完美的,因为你为它确确实实的付出了。

当然,在这过程中我会遇到一些自己觉得比较困惑的的问题,这时,向老师或有经验的

学长请教,大家一起讨论,互通有无,使我们从中受益非浅。

虚心向别人学习,取人之长,

补己之短,是一种很重要的学习方法。

通过这次课程设计活动,我拓宽了思路,开阔了视野,不仅对单片机的理论知识起了复

习作用,还有动手能力也进一步加强了。

在完成设计的过程中,我们有更多的机会和一些很

有经验的人才接触,使我们学到了很多解决实际问题的方法。

这次活动巩固了我们的基础知

识,培养了我们的实践动手能力,这其中更大的收获就是将书本死的知识和实践活动结合起

来,并在实践中有的放矢的深入学习,提高了学习效率。

通过本次实验,我收获很多,动手能力也提高了很多。

本次实验设计重在得到锻炼,不

管成绩如何,都是值得回忆的。

我们也希望未来我们能过做的更好。

参考文献

1谭浩强编《C程序设计》清华大学出版社2004

2肖金球编《单片机原理与接口技术》清华大学出版社20073赵建领编《51单片机开发与应用技术详解》电子工业出版社2009

8

(1)系统上电之后开始工作,复位键S1可以对系统进行复位。

(2)D8、D7、D5和D3、D2、D1为两组路灯模型,可以显示不同指示灯效果。

(3)蜂鸣器与D5、D4、D2相连接,不管是D5还是D2黄灯亮,D4灯亮,蜂鸣

器警示声响起。

(4)K1、K2、K3实现对显示时间的数码管时间进行调节,当需要看某个时间交

接点的效果是,可以按k1进入中断程序,再选k2(加1操作)或者k3(减

1操作)。

9

#include<

reg52.h>

#include<

string.h>

intrins.h>

#defineuintunsignedint

#defineucharunsignedchar

uchart0,ss=40,temp=1,w=0;

ucharcodetable[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};

//0---9数字码段,共阳数码管

sbitbeep=P1^2;

sbitd1=P1^0;

//绿灯1sbitd2=P1^1;

//黄灯1sbitd3=P1^3;

//红灯1sbitd4=P1^5;

//绿灯2sbitd5=P1^6;

//黄灯2sbitd6=P1^7;

//红灯2sbitKEY_SET=P3^2;

sbitKEY_ADD=P3^3;

sbitKEY_MINUS=P3^4;

voiddisplay1(ucharaa);

voiddelay(uintz);

voidinit();

voidkey();

voidSet_time();

voidmain()

{

init();

while

(1)

display1(ss);

key();

if(temp==1)

if(ss>

5)

d1=0;

//绿灯1

d6=0;

//红灯2

}

10

else

d1=1;

//绿灯1灭,5秒

d2=0;

//黄灯1亮

beep=0;

if(temp==2)

d2=1;

//开始亮红灯

beep=1;

d6=1;

d3=0;

//红灯1

d4=0;

//绿灯2

d4=1;

//绿灯2灭

d5=0;

//黄灯2亮

voidinit()//初始化

TMOD=0X01;

//初始化定时器,两个定时器同时设置为工作方式1,50MS

TH0=(65536-50000)/256;

//装初值

TL0=(65536-50000)%256;

EA=1;

//开总中断

ET0=1;

TR0=1;

P1=0XFF;

voidtimer0()interrupt1

t0++;

if(t0==20)//1秒中断

11

t0=0;

ss--;

if(ss==-1)

temp++;

ss=40;

if(temp==3)

temp=1;

voiddisplay1(ucharaa){

ucharshi1,ge1,shi2,ge2,time_b_1,time_b_2,time_y_1,time_y_2,time_r_1,time_r_2;

time_b_1=aa-5;

time_b_2=aa-5;

time_y_1=aa;

time_y_2=aa;

time_r_1=aa;

time_r_2=aa;

if(aa>

=6)

shi1=time_b_1/10;

ge1=time_b_1%10;

shi1=time_y_1/10;

ge1=time_y_1%10;

shi2=time_r_2/10;

ge2=time_r_2%10;

P0=table[shi1];

P2=0xfd;

delay(5);

P0=table[ge1];

12

P2=0xfe;

P0=table[shi2];

P2=0xf7;

P0=table[ge2];

P2=0xfb;

shi2=time_b_2/10;

ge2=time_b_2%10;

shi2=time_y_2/10;

ge2=time_y_2%10;

shi1=time_r_1/10;

ge1=time_r_1%10;

voiddelay(uintz){

uintx,y;

for(x=z;

x>

0;

x--)

13

for(y=20;

y>

y--);

voidkey()

if(KEY_SET==0)//设置时间

delay(20);

//去抖

if(KEY_SET==0)//当是正常状态时就进入调时状态

w++;

TR0=0;

//暂停计时

//Set_time();

//调整

if(w==2)

w=0;

while(KEY_SET==0);

//等待键松开

//------------------------------------------------------------------

if(KEY_ADD==0)//加减调整

if(KEY_ADD==0)

Set_time();

while(KEY_ADD==0);

if(KEY_MINUS==0)//加减调整

if(KEY_MINUS==0)

14

while(KEY_MINUS==0);

voidSet_time()

if(KEY_ADD==0)

ss++;

//数加1

if(ss==40)

ss=0;

if(KEY_MINUS==0)

//数减1

15

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

当前位置:首页 > 求职职场 > 面试

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

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