《微处理器与接口技术》课程设计报告 交通灯Word文件下载.docx
- 文档编号:15365540
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:24
- 大小:975.22KB
《微处理器与接口技术》课程设计报告 交通灯Word文件下载.docx
《《微处理器与接口技术》课程设计报告 交通灯Word文件下载.docx》由会员分享,可在线阅读,更多相关《《微处理器与接口技术》课程设计报告 交通灯Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
2.3程序实现流程图
N
YY
3.详细设计
3.1硬件逻辑图
3.2函数功能
①按键电路设计
扫描修改交通灯时间程序keyscan()
本设计一共设计了六个按键,其中包括:
显示行人交通灯状况、显示行车交通灯状况、开始计数、停止计数并进入数据修改、调整红绿灯时间加减。
②数码管显示电路
数码管显示时间程序display()
数码管显示电路,通过P0口和P3口的控制输出,将程序中second在数码管上显示。
③红绿灯显示电路
定时器0中断程序init_timer0()
红绿灯设计电路主要是由6盏灯进行控制,此子程序启动定时器0,分别设定东西南北四个方向的交通灯的亮灭情况,以及倒计时时间。
区分行人与车辆面对交通灯的功能也在这里实现。
④掉电保护功能电路
读入字节程序read_add()
写进字节程序write_add()
掉电保护功能旨在实现突发状况时保护数据的存储,在计时中不断将数据记录到外部存储器中。
此处能够实现掉电时将红绿灯亮灭情况与计时器时间记录并在之后重新显示出来。
3.3函数调用关系
主程序调用的程序:
(1)定时器0中断程序init_timer0()
(2)扫描修改交通灯时间程序keyscan()
(3)I2C总线初始化程序init()
(4)读入字节程序read_add()
(5)写进字节程序write_add()
(6)数码管显示时间程序display()
六段主要程序又包含如下子程序:
(1)keyscan():
延迟程序delay_1()
(2)read_add():
启动信号程序start();
写字节程write_byte();
应答程序response();
停止信号程序stop();
读字节程序read_byte();
(3)write_add():
(4)display():
延时程序delay();
4.调试与测试
4.1测试方法
①首先观察电路初始状态是否符合正确状态。
②按下begin键,观察红绿灯亮灭状况是否符合设计要求,计时器是否正常显示。
③在有黄灯出现时,检查行人按键与行车按键是否能够正常显示。
④按下暂停按键,观察是否暂停。
⑤在按下stop1键后,对红绿灯时间进行修改,第一次按下时修改红1绿2时间,第二次按下时修改红1黄2时间,第三次按下时修改红2绿1时间,第四次按下时修改红2黄1时间,再次按下begin键,按照修改后的时间进行倒计时。
⑥在修改时间时注意plu按键与div按键的使用状况。
4.2主要问题及采取的解决措施
①对于行人与行车之间红绿灯亮灭情况的切换
解决措施:
观察这两者亮灭状况的区别,只有在黄灯亮起时有区别,因而想到在独立按键上设置两个键,当红黄等亮起时,将黄灯改为相应的绿灯,从而变为红绿灯亮。
此困难迎刃而解。
②掉电保护功能不熟悉,不会编写
经过老师的辅导,在51单片机的说明书中找到了掉电保护的相关章节,经过感受其功能理解其含义,知道了只要设计在掉电前将数据写入一个外部存储器中并在恢复电源时从中读取即可。
同时,由于本设计为一秒倒计时,因而设计为每一秒将数据保存一次。
5.分析及结论
第一,本设计系统面对的是东、西、南、北四个方向的车辆和行人,其中东西方向和南北方向的红绿灯情况一致。
每个方向的倒计时均可显示。
第二,本设计系统还实现了独立设置每个方向倒计时时间的功能。
由于车辆控制包括红、绿、黄三色灯,行人只需要红和绿,本系统实现了行人与车辆面对红绿灯不同情况的转化。
第三,利用EEPROMAT24C02,本设计系统实现了掉电保护功能。
不足:
不具备车流量检测模拟,不能根据车流量自动调整各个方向的红绿灯时间。
6.运行结果
7.结束语
通过本次课程设计,我发现了许多学习这门课程的不足之处,所学有关c语言的有关内容大部分已经忘记,编写程序的过程中举步维艰,只能看着课本一步一步的慢慢编写。
这次课程设计涉及到了很多这学期学习的几个比较重要的部分,例如中断、定时器、延时程序等,体会到了单片机设计程序的趣味以及在现实生活中的实用性,是一次很有价值的体验!
在编程过程中,我们的设计内容包括许多小的部分,比如行人交通灯、车辆交通灯,当把这些小部分做好时,怎样把这些零散的小程序连接起来成了一大问题,是在老师和同学的帮助下才最终完成的。
编程中,程序很多容易混乱,这需要我们深刻了解所学的知识,这样的话,不管多复杂的程序,只要知道它的基本原理,将复杂的程序分解,所有问题将会迎刃而解。
最终,我们小组完成了这次课程设计,在单片机上演示出来自己想要的结果后,感觉一切努力都是值得的,学习到了许多的东西,希望以后的学习中,还可以多接触一些这种类型的课程。
8.参考文献
[1]增强型51单片机与仿真技术肖金球、冯翼清华大学出版社
[2]C语言程序设计教程张宗杰电子工业出版社
[3]郭天祥.51单片机C语言教程.电子工业出版社
9.附录
/*-----------------------------------------------
名称:
红绿灯
内容:
1、程序目的:
使用定时器学习倒计时红绿灯原理
主要程序与倒计时相同
2、硬件要求:
数码管、晶振12M,AT24C02
3、P1口连接至LED用于显示红绿灯,P0口送入数码管段选数
4、数码管用于显示时间
------------------------------------------------*/
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitkey1=P3^0;
sbitkey2=P3^1;
sbitbegin=P3^2;
sbitstop1=P3^3;
sbitplu=P3^4;
sbitdiv=P3^5;
sbitLACTCH1=P2^6;
sbitLACTCH2=P2^7;
sbitsda=P2^0;
sbitscl=P2^1;
/*------------------------------------------------
全局变量
codeunsignedchartab[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管0-9
bitred,green,yellow,turnyellow,turngreen,shunxu,xingche,chexing;
//定义红绿黄灯标志位
uchars1num;
unsignedchara=25,b=5,c=25,d=5,SHI,GE,count,e;
ucharsecond,write;
延时程序
voiddelay(unsignedintcnt)
{
while(--cnt);
}
voiddelay_1(uintz)
ucharx,y;
for(x=z;
x--;
x>
0)
for(y=110;
y--;
y>
0);
IIC总线的开始,停止,应答信号
voidstart()
sda=1;
delay
(2);
scl=1;
sda=0;
}
voidstop()
sda=0;
sda=1;
voidresponse()
uchari;
while((sda==1)&
&
(i<
250))
i++;
scl=0;
voidinit()
voidwrite_byte(uchardate)
uchari,temp;
temp=date;
for(i=0;
i<
8;
i++)
{
temp=temp<
<
1;
scl=0;
delay
(2);
sda=CY;
scl=1;
}
ucharread_byte()
uchari,k;
for(i=0;
k=(k<
1)|sda;
returnk;
voidwrite_add(ucharaddress,uchardate)
{
start();
write_byte(0xa0);
response();
write_byte(address);
write_byte(date);
stop();
ucharread_add(ucharaddress)
uchardate;
start();
write_byte(0xa0);
response();
write_byte
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微处理器与接口技术 微处理器与接口技术课程设计报告 交通灯 微处理器 接口 技术 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)