基于单片机交通灯设计

上传人:dc****87 文档编号:70632995 上传时间:2022-04-06 格式:DOC 页数:9 大小:35.50KB
收藏 版权申诉 举报 下载
基于单片机交通灯设计_第1页
第1页 / 共9页
基于单片机交通灯设计_第2页
第2页 / 共9页
基于单片机交通灯设计_第3页
第3页 / 共9页
资源描述:

《基于单片机交通灯设计》由会员分享,可在线阅读,更多相关《基于单片机交通灯设计(9页珍藏版)》请在装配图网上搜索。

1、.基于80C51单片机的交通灯设计班级:电信1101 :*:0703110107一、设计说明及材料清单(一) 设计说明:本交通灯的设计简化了十字路交通灯,只将东西和南北两个路向的交通灯情况表示出来,但也做了很多改良,设计了针对不同时间段不同的控制方案,并且采用串口通讯可将不同的控制方案下载到芯片中,外接掉电保存程序的非易失性存储芯片和掉电仍可计时的时钟芯片,以保证计时的正确性。(二) 材料清单:二、电路原理图设计本设计共用到四款主要芯片,分别为单片机芯片80C51、EEPROM芯片AT24C02、时钟芯片DS1302和转串口芯片MA*232。(一) 下列图为80C51单片机芯片的管脚图,80C

2、51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口即I/O口。80C51部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。(二) 下列图为AT24C02芯片的原理图,该芯片是一种带有I2C总线构造的EEPROM芯片,通过SDA和SCL端口与总线连接,具有非易失性,掉电仍可保存程序。其管脚功能如下:管脚名称功能说明A0、A1、A2 器件地址选择本设计全部接地SDA 串行数据、地址与单片机的P1.6连接进展数据、地址的传输SCL 串行时钟与单片机的P1.7相连,串行时钟信号输入WP 写保护 WP=1,只能对其读,写制止,所以

3、令WP=0VCC +1.8V6.0V工作电压电源输入GND 地接地引脚(三) 下列图是时钟芯片的电路原理图,DS1307是一款低功耗,地址和数据通过两线双向的串行总线的传输,节省单片机资源,该芯片可以提供秒,分,小时等信息,芯片有一个置的电源感应电路,具有掉电检测和电池切换功能,本设计中需要其停电后继续计时。其中的7引脚是方波的输出端,可接入单片机的可引起中断的端口,利用引脚7产生的方波引起中断,从而显示时间的变化。(四) 下列图是MA*232芯片的原理图,因为设计要求与电脑有串口通讯,就是将交通灯不同时间段程序控制方案通过串口下载到单片机里,单片机上有一个全双工的串行通讯口,但电脑的串口是R

4、S232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,所以采用了专用芯片MA*232进展转换,下列图中的7、8端口分别和电脑上的RS232端口的2、3连接,芯片的9和10端口与单片机的串口相连,如下列图所示:(五) 下列图为交通灯的总体原理图不包括上述芯片原理图,根据要求选择六只LED灯作为东西和南北方向的红绿黄交通灯,并且每个方向上有时间计数提示,每个方向有两位数码管动态显示,最大为99,采用共阴极7段数码管,单片机通过驱动器SN7404的放大电流驱动每位数码管。P1.0至P1.5控制六只LED灯,数码管由P0.0至P0.6控制进展段选,P2.0至P2.3控制位选。三

5、、程序设计(一) 系统框图:(二) 主程序如下: #includereg51.h #include#define EW_H 0#define EW_L 1#define SN_H 2#define SN_L 3/函数声明void EW_NONE();void EW_RED();void EW_YELLOW();void EW_GREEN();void SN_NONE();void SN_RED();void SN_YELLOW();void SN_GREEN();void LED_INIT();void LED_WRITE(int dat,int con);/根据原理图定义交通灯的引脚sbit

6、 EW_LED_RED = P10;sbit EW_LED_YELLOW = P11;sbit EW_LED_GREEN = P12;sbit SN_LED_RED = P13;sbit SN_LED_YELLOW = P14;sbit SN_LED_GREEN = P15;/定义P20-P23=LED数码管控制sbit EW_wei*uan_H = P20;sbit EW_wei*uan_L = P21;sbit SN_wei*uan_H = P22;sbit SN_wei*uan_L = P23;/定义P00-P07=LED数码管段选引脚sbit LED_DATA_A = P00;sbit

7、 LED_DATA_B = P01;sbit LED_DATA_C = P02;sbit LED_DATA_D = P03;sbit LED_DATA_E = P04;sbit LED_DATA_F = P05;sbit LED_DATA_G = P06;sbit SCL = P16;sbit SDA = P17;/变量声明unsigned char counter,ew_sign,sn_sign,ew_time,sn_time,hour/定义段码code char LED_CODE10 = 0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f;/

8、*main函数开场*/main() counter = 3;/计数器,每3600s查询一次当前hour ew_sign = 0;/东西标志位,0代表红灯,1代表绿灯,2代表黄灯 sn_sign = 0;/南北标志位,0代表红灯,1代表绿灯,2代表黄灯 ew_time = 3;/东西时间 sn_time = 3;/南北时间 hour = 24;/当前hourunsigned ew_total_time24 = 1,1,1,1,1,30,30,30,30,30,30,30,60,60,60,60,30,30,30,30,30,30/东西各时间段绿灯亮总时间unsigned char sn_tota

9、l_time24 = 1,1,1,1,1,30,30,60,60,60,60,60,30,30,30,30,30,30,30,30,30,30/南北各时间段绿灯亮总时间LED_INTI();EW_RED();SN_RED();while(1)if(counter = 0)hour = GET_HOUR();counter = 3600;switch(hour)case 5:ew_time = 30;sn_time = 33;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;case 7:ew_time = 30;sn_time = 33;ew_

10、sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;case 12:ew_time = 60;sn_time = 63;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;case 18:ew_time = 30;sn_time = 33;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;default:break;if(ew_time = 0)switch(ew_sign)case 0:ew_sign = 1;ew_time = ew_total_tim

11、ehour;EW_GREEN();break;case 1:ew_sign = 2;ew_time = 3;EW_YELLOW();break;case 2:ew_sign = 0;ew_time = sn_total_timehour + 3;EW_RED();break;if(sn_time = 0)switch(sn_sign)case 0:sn_sign = 1;sn_time = sn_total_timehour;SN_GREEN();break;case 1:sn_sign = 2;sn_time = 3;SN_YELLOW();break;case 2:sn_sign = 0;

12、sn_time = ew_total_timehour + 3;SN_RED();break;LED_WRITE(ew_time/10,EW_H);LED_WRITE(ew_time%10,EW_L);LED_WRITE(sn_time/10,SN_H);LED_WRITE(sn_time%10,SN_L);/main函数到此完毕,以下是所用到函数的定义/*所用函数的定义*/ void LED_INIT()LED = 0*00;EW_wei*uan_H = 1;EW_wei*uan_L = 1;SN_wei*uan_H = 1;SN_wei*uan_L = 1;void LED_WRITE(i

13、nt dat,int con)EW_wei*uan_H = 0;EW_wei*uan_L = 0;SN_wei*uan_H = 0;SN_wei*uan_L = 0;if(dat 10)LED = LED_CODEdat;switch(con)case EW_H:EW_wei*uan_H = 1;break;case EW_L:EW_wei*uan_L = 1;break;case SN_H:SN_wei*uan_H = 1;break;case SN_L:SN_wei*uan_L = 1;break;void timer_int() interrupt 0EA = 0;counter-;sw

14、itch(hour)case 0:case 1:case 2:case 3:case 4:EW_YELLOW();SN_YELLOW();EW_NONE();SN_NONE();break;default:ew_time-;sn_time-;if(ew_sign = 1 & ew_time 0) EW_GREEN();EW_NONE();if(sn_sign = 1 & sn_time 0)SN_GREEN();SN_NONE();break;EA = 1;/* 延迟函数定义*/ void DELAY2()_nop_();_nop_();/延迟2usvoid DELAY4()DELAY2();

15、DELAY2();/延迟4usvoid DELAY8()DELAY4();DELAY4();/延迟8us/void IIC_WRITE( unsigned char dat)unsigned char temp;for(temp = 0; temp 8; temp+) SCL=0; if(dat temp) & 0*80) SDA=1; else SDA=0; DELAY2(); SCL=1;DELAY4(); SCL=0;DELAY4();SDA = 1;DELAY2();SCL = 1;DELAY4();SCL = 0;unsigned char GET_HOUR()/START hour = 0;unsigned char temp;SDA = 1;SCL = 1;DELAY8();SDA = 0;DELAY8();/WRITEIIC_WRITE(0*D0);/HOURADDRESSIIC_WRITE(0*02);/RESTARTSDA = 1;SCL = 1;DELAY8();SDA = 0;DELAY8();/READIIC_WRITE(0*D1);/READHOUR SDA = 1;for(temp = 0; temp 8; temp+) hour = hour

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!