基于单片机的无线交通灯设计与实现十字路口带倒计时的交通信号灯控制电气工程及其自动化课程设计报告书_第1页
基于单片机的无线交通灯设计与实现十字路口带倒计时的交通信号灯控制电气工程及其自动化课程设计报告书_第2页
基于单片机的无线交通灯设计与实现十字路口带倒计时的交通信号灯控制电气工程及其自动化课程设计报告书_第3页
基于单片机的无线交通灯设计与实现十字路口带倒计时的交通信号灯控制电气工程及其自动化课程设计报告书_第4页
基于单片机的无线交通灯设计与实现十字路口带倒计时的交通信号灯控制电气工程及其自动化课程设计报告书_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1设计要求 12设计方案 12.1设计思路 12.2设计框图 13设计原理及电路图 23.1硬件原理 23.1.1ATC89C52介绍 23.1.2单片机最小系统 23.1.3发射/接收芯片 33.2电路图 43.2.1控制电路 43.2.2被控制电路图 43.2.3无线交通灯整体电路图 64设计程序 64.1KeilC51软件介绍 64.2设计流程图 74.3设计程序代码 85Proteus仿真 135.1Proteus软件介绍 135.2仿真结果 13总结 15参考文献 16

1设计要求 采用单片机AT89C52实现红绿灯的自动工作,红灯、绿灯默认情况下点亮时间为60秒,并且可以接受远端发来的时间延迟命令。采用单片机AT89C52实现对远端交通灯时间延迟的控制2设计方案2.1设计思路交通灯上电以后,在没有远端控制命令的情况下,按照原先默认的工作方式工作,在接收到远端延时控制命令后,随之改变其工作方以满足控制命令的要求;信号发射设备端可产生时间延迟控制命令。两者有相应的显示设备,使交通灯系统更合理化,人性化。2.2设计框图(1)控制模块红灯(绿灯)时间延时要求nrp2401红灯(绿灯)时间延时要求nrp2401发射模块延时命令信号产生单片机AT89C52LEDLED延时显示图2-1控制模块框图(2)被控制模块单片机AT89C52工作方式单片机AT89C52工作方式延时命令信号Nrp2401接收模块LEDLED倒计时显示图2-2被控制模块框图3设计原理及电路图3.1硬件原理3.1.1ATC89C52介绍AT89C52提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。图3-1AT89C523.1.2单片机最小系统图3-2复位晶振电路①复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就要让图3-2复位晶振电路②复位输入高电平有效,当振荡器工作是,RST引脚出现两个机器周期以上的高电平,使单片机复位。此电路除具有上电复位功能外,若要复位只需按“RST”键,此电源Vcc经电阻分压,在RST端产生一个复位高电平;3.1.3发射/接收芯片nRF2401是单片射频收发芯片,工作于2.4~2.5GHzISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。其DuoCeiverTM技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。nRF2401适用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。图3-3nRF401无线传输模块3.2电路图3.2.1控制电路控制电路图如图3-4所示,其中,开关控时间延长的开与关;LED数码管分显示红灯和绿灯分别延长的时间,最长延长时间为60秒,当超过60秒后,红灯、绿灯恢复为默认值。图3-4控制电路图3.2.2被控制电路图被控制电路图如图3-5所示,其中,数码管分别在红灯、绿灯最后9秒亮起并自动倒数,具有提示作用。图3-5被控制电路3.2.3无线交通灯整体电路图图3-6无线交通灯电路图4设计程序4.1KeilC51软件介绍KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。4.2设计流程图(1)控制模块流程图如图4-1所示。开始是否开始是否按按键吗否是绿否是绿灯延时否红灯已延时6否红灯已延时60秒绿灯已延时60秒否否是是加时5加时5秒加时5秒恢复默恢复默认值恢复默认值图4-1控制模块流程图红灯、绿灯、黄灯工作流程图如图4-2所示开始开始绿灯亮,黄灯、绿灯亮,黄灯、红灯灭9秒倒计时显示9秒倒计时显示延时黄灯亮,黄灯亮,绿灯、红灯灭延时延时9秒9秒倒计时显示红灯亮,绿灯、黄灯灭延时延时图4-2红绿黄灯三灯工作流程图中断处理模块流程图如图4-3所示是是中断中断否是绿否是绿灯延时否红灯已延时6否红灯已延时60秒绿灯已延时60秒否否是是加时5加时5秒加时5秒恢复默恢复默认值恢复默认值图4-3中断处理模块流程图4.3设计程序代码根据流程图,编写程序代码。发送模块#include<REG52.h>#include<stdio.h>#defineucharunsignedcharsbitkey0=P1^0;sbitkey1=P1^1;uchardata_0;ucharcounter0;ucharcounter1;voidinitUart(void);voidsenddata(uchardat);voiddelay(intm);voidmain(void){ counter0=0; counter1=0; key0=0; key1=0; P2=0; initUart(); while(1) while(key0!=key1)//按键扫描 if(key0==1)//按键0 {delay(20);//去抖动 if(key0==1) {data_0=0x55; senddata(data_0);//发送绿灯延时命令 if(counter0==0x0c)//判断延时总长度是否满足60s { counter0=0x00; P2=counter0|counter1; }else { counter0=counter0+1; P2=counter0|counter1; } } } elseif(key1==1)//按键1 {delay(20);//去拌动 if(key1==1) {data_0=0xcc; senddata(data_0);//发送红灯延时命令 if(counter1==0xc0)//判断延时总长度是否满足60s { counter1=0x00; P2=counter1|counter0; }else { counter1=counter1+16; P2=counter1|counter0; } } } }voidinitUart(void)//串口初始化,波特率为9600{ PCON=0x00; SCON=0x40; TMOD=TMOD|0x20; TH1=0xfd; TL1=0xfd; ES=0; EA=0; TR1=1;}voidsenddata(uchardat)//命令发送函数{ SBUF=dat; while(TI!=1); TI=0; delay(1000);}voiddelay(m)//延时,单位ms{ ucharucCounter; while(m) { for(ucCounter=0;ucCounter<239;ucCounter++){} m--; }}接收模块#include<reg52.h>#include<stdio.h>#defineucharunsignedcharsbitled_red=P1^0;//红灯sbitled_yellow=P1^1;//黄灯sbitled_green=P1^2;//绿灯sbitselect=P1^3;//倒计时颜色选择uchardat=0x00;uchartab0[10]={0x00,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};//数字表ucharm,n;unsignedinti,temp,count;voidinitUart(void);voidtime_delay(unsignedintt);voidmain(){ m=10; n=10; P0=0; P2=0; initUart(); while(1) { led_green=1; led_red=0; led_yellow=0; time_delay(m); led_green=0; led_yellow=1; time_delay(3); led_yellow=0; led_red=1; time_delay(n); } } voidinitUart(void)//串口初始化,波特率为9600 { PCON=0x00;//波特率不加倍 SCON=0x50;//串口工作在方式1,允许接收 TMOD=TMOD|0x20;//定时器1工作在方式2 TH1=0xfd; TL1=0xfd; ES=1;//开串口中断 EA=1;//开总中断 TR1=1; } voidtime_delay(unsignedintt)//延时,单位s { TMOD=TMOD|0x01;//定时器0工作方式1 TH0=(65536-19556)>>8; TL0=(65536-19556)%256; ET0=0; TR0=1; count=t; temp=40*t; for(i=0;i<temp;i++) { while(1) if(TF0) { TH0=(65536-19556)>>8; TL0=(65536-19556)%256; TF0=0; TR0=1; break; } if(led_green|led_red) {if((i+1)%40==0) count--;//倒数至9秒 if(count<=9) if(led_green) P2=tab0[count]; elseif(led_red) P0=tab0[count]; } }} voidserial_int(void)interrupt4//串口中断处理程序{ EA=0; dat=SBUF; switch(dat) { case0x55:{ if(m==120) m=10; else m=m+5; break; } case0xcc:{ if(n==120) n=10; else n=n+5; break; } } RI=0; EA=1;}5Proteus仿真5.1Proteus软件介绍5.2仿真结果(1)上电后初始状态如图5-1所示,绿灯延时时间为0秒,红灯延时时间为0秒,绿灯亮,黄灯灭,红灯灭,允许通行。图5-1运行初始状态倒计时9秒,数码管亮起并自动倒数,效果图如图5-2所示。图5-2倒计时效果图按一下红灯延时按键,产生红灯延时一个5秒的信号,红灯延时10秒的效果图如图5-3所示图5-3红灯延时10秒总结在此次课题中,首先遇到的问题是单片机原理(即什么是单片机)及开发环境,对这些概念没怎么了解,经过图书馆资料才弄清楚这些问题。单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而

温馨提示

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

评论

0/150

提交评论