基于单片机的无线交通灯设计与实现(含程序文件及仿真文件).docx
- 文档编号:8856728
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:19
- 大小:963.76KB
基于单片机的无线交通灯设计与实现(含程序文件及仿真文件).docx
《基于单片机的无线交通灯设计与实现(含程序文件及仿真文件).docx》由会员分享,可在线阅读,更多相关《基于单片机的无线交通灯设计与实现(含程序文件及仿真文件).docx(19页珍藏版)》请在冰点文库上搜索。
成绩评定表
学生姓名
连宋
班级学号
12030603
专业
通信工程
课程设计题目
基于单片机的无线交通灯设计与实现
评
语
组长签字:
成绩
日期
20年月日
课程设计任务书
学院
信息科学与工程学院
专业
通信工程
学生姓名
连宋
班级学号
12030603
课程设计题目
基于单片机的无线交通灯设计与实现
实践教学要求与任务:
1、熟悉单片机的基本原理
2、熟悉KeilC51的环境
3、在Proteus环境中仿真实现无线交通灯
4、运行、调试
5、对无线交通灯进行结果验证及分析
工作计划与进度安排:
12月7日熟悉设计任务、查阅资料、进行原理分析及可行性论证
12月8日~9日在Proteus环境中仿真实现无线交通灯
12月11日验收、答辩、提交报告
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
目录
1设计要求 1
2设计方案 1
2.1设计思路 1
2.2设计框图 1
3设计原理及电路图 2
3.1硬件原理 2
3.1.1ATC89C52介绍 2
3.1.2单片机最小系统 2
3.1.3发射/接收芯片 3
3.2电路图 4
3.2.1控制电路 4
3.2.2被控制电路图 4
3.2.3无线交通灯整体电路图 6
4设计程序 6
4.1KeilC51软件介绍 6
4.2设计流程图 7
4.3设计程序代码 8
5Proteus仿真 13
5.1Proteus软件介绍 13
5.2仿真结果 13
总结 15
参考文献 16
III
1设计要求
(1)采用单片机AT89C52实现红绿灯的自动工作,红灯、绿灯默认情况下点亮时间为60秒,并且可以接受远端发来的时间延迟命令。
(2)采用单片机AT89C52实现对远端交通灯时间延迟的控制
2设计方案
2.1设计思路
交通灯上电以后,在没有远端控制命令的情况下,按照原先默认的工作方式工作,在接收到远端延时控制命令后,随之改变其工作方以满足控制命令的要求;信号发射设备端可产生时间延迟控制命令。
两者有相应的显示设备,使交通灯系统更合理化,人性化。
2.2设计框图
(1)控制模块
红灯(绿灯)时间延时要求
nrp2401发射模块
延时命令信号产生
单片机AT89C52
LED延时显示
图2-1控制模块框图
(2)被控制模块
单片机AT89C52
工作方式
延时命令信号
Nrp2401接收模块
LED倒计时显示
图2-2被控制模块框图
3设计原理及电路图
3.1硬件原理
3.1.1ATC89C52介绍
16
AT89C52提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
图3-1AT89C52
3.1.2单片机最小系统
图3-2复位晶振电路
①复位电路:
由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就要让RC组合可以在RST脚上产生不少于2个机周期的高电平;
②复位输入高电平有效,当振荡器工作是,RST引脚出现两个机器周期以上的高电平,使单片机复位。
此电路除具有上电复位功能外,若要复位只需按“RST”键,此电源Vcc经电阻分压,在RST端产生一个复位高电平;
③晶振电路:
典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的方波便于12分频,方便定时操作);
④单片机:
一片AT89S51/52或其他51系列兼容单片机;
注意:
对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行;
⑤电源部分:
接+5伏特的电压。
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所示。
开始
是
否
按键吗
否
是
绿灯延时
否
红灯已延时60秒
绿灯已延时60秒
否
是
加时5秒
加时5秒
恢复默认值
恢复默认值
图4-1控制模块流程图
(2)红灯、绿灯、黄灯工作流程图如图4-2所示
开始
绿灯亮,黄灯、红灯灭
9秒倒计时显示
延时
黄灯亮,绿灯、红灯灭
延时
9秒倒计时显示
红灯亮,绿灯、黄灯灭
延时
图4-2红绿黄灯三灯工作流程图
(3)中断处理模块流程图如图4-3所示是
中断
否
是
绿灯延时
否
红灯已延时60秒
绿灯已延时60秒
否
是
加时5秒
加时5秒
恢复默认值
恢复默认值
图4-3中断处理模块流程图
4.3设计程序代码
根据流程图,编写程序代码。
(1)发送模块
#include
#include
#defineucharunsignedchar
sbitkey0=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--;
}
}
(2)接收模块
#include
#include
#defineucharunsignedchar
sbitled_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 { 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软件介绍 Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。 是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。 在编译方面,它也支持IAR、Keil和MPLAB等多种编辑器。 5.2仿真结果 (1)上电后初始状态如图5-1所示,绿灯延时时间为0秒,红灯延时时间为0秒,绿灯亮,黄灯灭,红灯灭,允许通行。 图5-1运行初始状态 (2)倒计时9秒,数码管亮起并自动倒数,效果图如图5-2所示。 图5-2倒计时效果图 (3)按一下红灯延时按键,产生红灯延时一个5秒的信号,红灯延时10秒的效果图如图5-3所示 图5-3红灯延时10秒 总结 在此次课题中,首先遇到的问题是单片机原理(即什么是单片机)及开发环境,对这些概念没怎么了解,经过图书馆资料才弄清楚这些问题。 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。 从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 在实现按键按一次亮灯时间增加5秒时,但仿真过程中总是得不到正确结果,可能出现按键按一次出现延时10秒,25秒,40秒等等,经过上网查找资料得知该过程没有进行消抖处理。 经过软件消抖后,仿真结果正确。 参考文献 [1]谢自美.电子线路设计·实验·测试[M].武汉: 华中理工大学出版社,1992. [2]楼然笛.单片机开发[M].北京: 人民邮电出版社,1994. [3]付家才.单片机控制工程实践技术[M].北京: 化学工业出版社2004.3.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 无线 交通灯 设计 实现 程序 文件 仿真
![提示](https://static.bingdoc.com/images/bang_tan.gif)