交通灯的设计.docx

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

交通灯的设计.docx

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

交通灯的设计.docx

交通灯的设计

交通灯的设计

一、概述

1.课题简介

交通灯在人们的生活中起着重要的作用,交通秩序是否良好严重影响着社会生活。

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,较少交通事故有明显效果。

2.课题研究的目的和意义

本系统一单片机AT89C52为核心设计交通灯控制器模拟十字路口的各种状态显示及计时情况,本设计由复位电路,定时器时器电路,发光二极管电路组成。

本系统错作简单,模拟能力强,简单的显现十字路口交通灯的运行情况。

二、方案设计与论证

本系统采用AT89C52单片机作为智能交通灯系统的核心。

十字路口共需四组红绿灯,加上转换黄灯,一共是12只灯,设计电路时只用了两组,需用6个端口进行控制,具体I/O口分配为:

P1.0~P1.2分别接主干道的红、绿、黄共六盏信号灯,P1.3~P1.5分别接支干道的红、绿、黄共六盏信号;用两位数码管显示倒计时时间,本系统采用动态显示方式、共阳极数码管。

三、系统设计

本系统主要由复位电路,定时器电路,发光二极管电路组成。

主要完成十字路口交通灯的信号模拟。

A.硬件设计

1.最小系统

⑴单片机:

本次设计使用单片机芯片AT89C52

AT89C52的工作特性:

·内含4KB的FLASH存储器檫写次数1000次;

·内含128字节的RAM;

·具有32根可编程I/O线;

·具有2个16位编程定时器

·具有6个中断源,5个中断矢量,2级优先权的中

断结构;

·具有1个全双工的可编程串行通信接口;

·具有1个数据指针DPTR;

·具有可编程3级程序锁定位;

·AT89C51的工作电源为5(1±0.2)V且典型值为5V;

·AT89C51最高工作频率为24MHZ;

·AT89C51的编程频率为3~24MHZ,编程启动电流和启动电压

分别为1mA、5或12V。

(2)电源

本系统采用直流稳压5V电源

(3)晶振:

本次设计采用的是11.0592M晶振,电路图如下:

两只电容取值30pf

(4)复位电路

复位电路由一个30pf的点解电容和一个1K的电阻并联组成。

在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可实现初始化状态服务。

为保证应用系统可靠的复位在设计复位电路时,通常使RST引脚保持4ms以上的高电平,只要RST保持高电平,MCS-51单片机就会循环复位;当RST从高电平变为低电平时,MCS-51单片机就从0000H地址开始执行程序,在单片机复位的有效期间,ALE、PSEN引脚输出高电平

2.总原理图

3.原件清单

原件名称

型号

数量/个

用途

单片机

AT89C52

1

控制核心

晶振

11.0592MHz

1

晶振电路

电容

30pf

1

晶振电路

电解电容

30uf

1

复位电路

电阻

1K

1

复位电路

发光二极管

LED

12

红、绿、黄灯

电阻

270Ω

12

LED限流

数码管

1

显示时间

电阻

10k

2

上拉电阻

电源

+5V

1

提供+5V

B.软件设计

四、程序清单

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitRED0=P0^0;//东西红灯

sbitYELLOW0=P0^1;//东西黄灯

sbitGREEN0=P0^2;//东西绿灯

sbitRED1=P0^4;//南北红灯

sbitYELLOW1=P0^5;//南北黄灯

sbitGREEN1=P0^6;//南北绿灯

sbitLED1=P3^0;//第一个数码管

sbitLED2=P3^1;//第二个数码管

ucharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//p1口控制数码管

uchara=0,i=0,j=0;

voiddelay_50ms(uintt)//延时50ms

{uinty;

for(;t>0;t--)

for(y=6245;y>0;y--);

}

voiddelay_1ms(uintt)//延时1ms

{

uintx;

while(--t!

=0)

{for(x=0;x<600;x++);}

}

/*------------------------------------------------

定时器初始化子程序

------------------------------------------------*/

voidInit_Timer0(void)

{

TMOD|=0x01;//使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响

TH0=(65536-50000)/256;//给定初值

TL0=(65536-50000)%256;

EA=1;//总中断打开

ET0=1;//定时器中断打开

TR0=1;//定时器开关打开

}

/***主函数**/

voidmain()

{ucharcount=0;

P0=0xff;

P1=0xff;

Init_Timer0();

while

(1)

{

RED1=1;YELLOW1=1;YELLOW0=1;GREEN0=1;

while((i+10*j)<=40)//东西红灯,南北绿灯40秒

{RED0=0;

GREEN1=0;

LED1=0;LED2=1;P1=tab[i];delay_1ms(3);

LED1=1;LED2=0;P1=tab[j];delay_1ms(3);

}

i=0;j=0;

TR0=0;//关定时器

RED0=1;GREEN0=1;

RED1=1;GREEN1=1;

while(count<5)//黄灯闪烁

{YELLOW0=0;YELLOW1=0;delay_50ms(4);

YELLOW0=1;YELLOW1=1;delay_50ms(4);

count++;

}

TR0=1;count=0;

RED0=1;YELLOW0=1;YELLOW1=1;GREEN1=1;//开定时器

while((10*j+i)<=40)//东西绿灯,南北红灯40秒

{RED1=0;GREEN0=0;

LED1=0;LED2=1;P1=tab[i];delay_1ms(3);

LED1=1;LED2=0;P1=tab[j];delay_1ms(3);

}

i=0;j=0;

}

 

}

voidtimer0(void)interrupt1

{a++;

TH0=(65536-50000)/256;//重新赋值

TL0=(65536-50000)%256;

if(a==5){

a=0;

i++;

if(i==10)

{i=0;j++;

if(j==10)j=0;

}

}

}

五、实物图

六、调试

在接好实物图后,连上电源,发现二极管不亮,经检查后发现晶振电路的电容用错了,用的是30uf的,应该用30pf的。

后来二极管还是不亮,发现二极管接的是P0口,没有接上拉电阻。

经两次改正之后,接上电源二极管亮了,但是东面的二极管还是不亮,是导线顺序接错了,改正之后二极管正常发光。

数码管很暗,因为数码管电路没有接三极管,电流不够大。

七、总结

虽然这不是第一次做课程设计,但是是第一次做单片机的,在此之前学习单片机书本上的知识,觉得很抽象,或者说是学了不知道怎么运用,但是在做完一次课程设计之后能学到很多,而且映像深刻。

在电脑上仿真好了之后,实物做出来但就是怎么都没有调试到预期的效果,说明焊接电路板时还会出现很多微小的错误,因此焊接也必须认真仔细的完成,不是电路和程序有了之后就一定能把实物完整无误的做出来。

总之,这次单片机课程设计收获很大,学到了很多,以后会更认真的完成其他的课程设计。

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

当前位置:首页 > 工程科技 > 电子电路

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

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