收藏 分销(赏)

单片机c语言交通灯设计方案报告.doc

上传人:二*** 文档编号:4518155 上传时间:2024-09-26 格式:DOC 页数:21 大小:814.54KB
下载 相关 举报
单片机c语言交通灯设计方案报告.doc_第1页
第1页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、xxxxxxxxx基于AT89S52交通灯设计学 院: 电子信息工程 专业班级: xxxxxxxxxxxxxx 姓 名: xx xx 学 号: xxxxxxxxxxx 指导老师: xxxxxxxxxx 摘要交通灯在我们日常生活中随地可见,它在交通系统中处于至关关键位置。交通灯使用大大降低了交通繁忙路口事故发生,给行人和车辆提供一个安全交通环境,大家生命和财产安全有了保障。本设计意在模拟十字路口交通灯,以AT89S51单片机为基础,结合按键和数码管等元器件设计出一个简单且完全交通灯系统。关键词:交通灯 AT89S52 单片机目录一、设计任务3二、AT89S52单片机及其它元器件介绍3(1)AT8

2、9S52单片机3三、系统硬件电路设计5(1)时钟电路设计5(2) 复位电路设计5(3) 灯控制电路设计6(4) 按键控制电路设计6四、元件清单及实物图71、程序清单72、原理图8五、试验心得8附1 源程序代码9附2 原理图15一、设计任务(1)、设计一个十字路口交通灯控制电路,要求南北方向和东西方向两条交叉道路上车辆交替运行,每次通行时间全部设30秒,时间可设置修改。(2)、在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道,且黄灯亮时,要求每秒亮一次。(3)、有紧急车辆要求经过时,系统要能严禁东西和南北两条路上全部车辆通行。二、AT89S52单片机及其它元器件介绍(1)AT89S52单片

3、机AT89S52是一个低功耗、高性能CMOS8位微控制器。片上Flash许可程序存放器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效处理方案。AT89S52含有以下标准功效:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6位向量2级中止结构,全双工串行口,片内晶振立即钟电路。空闲模式下,CPU停止工作,许可RAM、定时器计数器、串口、中止继续工作。鉴于以上优点本系统采取AT89S52作为主控芯片,实现对整个系统控制。(2)芯片

4、74LS24574LS245是我们常见芯片,用来驱动led或其它设备,它是8路同相三态双向总线收发器,可双向传输数据。当19脚E为H时,A、B为高阻。E为L时,DIR为L时,数据由B传向A;DIR为H时,由A传向B。(3)两位共阴数码管16脚和11脚对应A、15脚和10脚对应B、3脚和8脚对应C、2脚和6脚对应D、1脚和5脚对应E、18脚和12脚对应F、17脚7脚对应G、4脚和9脚对应DP。公共脚为14脚和13脚,分别对应左边和右边显示数字。 三、系统硬件电路设计(1)时钟电路设计 图所表示,采取内部时钟产生方法,在XTAL1和XTAL2两端跨接晶体或陶瓷振荡器,和内部反相器组成稳定自击震荡。

5、其发出时钟脉冲直接送入片内定时控制部件。(2) 复位电路设计如上图所表示,采取上电+按钮电平复位方法,当按下按钮时,RST管脚高电平触发。为确保复位可靠,RC时间常数应大于两个机器周期,电容取10uf,电阻取1000欧。(3) 灯控制电路设计 如上图所表示,交通灯状态显示电路由东西南北四个方向各三个LED灯组成,分别显示四个方向上红、黄、绿三个状态,用以指示十字路口各方向车辆行驶。经过软件编程,可使路口交通改变情况为:南北方向和东西方向两条交叉道路上车辆交替运行,主干道每次通行时间全部设为30秒。在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;黄灯亮时每秒闪亮一次。(4) 按键控制电路

6、设计 开关控制由7个连接到单片机控制按钮组成。经过软件编程,使得各个开关功效如上图所表示, 基础满足了交通灯需要。四、元件清单及实物图1、程序清单名 称规 格数 量单片机AT89S521排阻9脚10K 1晶振11.0592MHz 1发光二极管GREEN 3发光二极管RED 3发光二极管YELLOW 3 数码管 两位共阴 2 电阻1K 1电阻10K 6按键 8电解电容10uF 1独石电容22pF 2电源插头 1排座20脚 1 排座40脚 1双排针2.54间距单排针2.54间距排线15cm16根试验板10*15cm12、原理图五、试验心得这次交通灯制作是我学会了不少东西,首先是proteus和ke

7、il使用。单片机程序编写和原理图仿真全部是在这两个软件运行下才能够进行。这个试验最关键是让我对51系列单片机有了更深层次了解,这一学期 开接触单片机时候认为这是一门极其高深课程,老师讲什么基础完全不懂,课后看依旧是一头雾水。经过交通灯学习和制作,对单片机有了初步了解,知道了它组成、工作原理等等。在软件编写这一块,开始时碰到了很大难题,因为两百行程序,哪怕有一个错误,修改起来也不是十分方便。时常没有心思去寻求和更正错误,所以软件这一块花了很大一部分时间。几次调试后总算出现“0 warning”和“0 error”字样。焊接也是比较麻烦,因为万能板买小了,再加上需要连接线有很多根,所以首先必需考虑

8、到元器件排布问题,尽可能让自己焊接时候方便一点。借鉴她人经验,数码管和排阻之间用排线相连接,很大程度上节省焊接时间,而且让板子看起来愈加整齐、美观。除了学会很多东西认为,也发觉了自己不足。因为自己在这首先只是短缺,所以很多问题全部需要查阅资料或向别同学请教。比如说proteus和keil使用方法,全部是看着她人操作几遍以后才慢慢学会。还有在焊接这首先也存在着很大问题。因为焊接在万能板反面,所以有时候会把单片机引脚看错,然后用吸枪慢慢清理。这不仅浪费时间而且还可能破坏万能板。在焊接过程中还出现短路问题,一不小心锡丝用多了就有可能造成两个点之间短路问题,这一点说明了焊接能力还有待提升。试验结果是成

9、功,模拟出了交通灯功效,各个按键功效也和模拟时一致,看着数字跳动自己信息也感到十分快乐。即使想过在这个交通灯里加入部分额外功效,但终究因为自己知识不足而放弃,有点遗憾,不过能够学到东西就好。此次试验增加了自己单片机知识外也让我知道实践和理论学习差异。实践过程中学到知识自己记得会愈加牢靠部分,不轻易忘记。总来说,单片机制作让我收获不小。附1 源程序代码#include #define uchar unsigned char#define uint unsigned intuchar data buf4;uchar data sec_dx=20;/东西数默认uchar data sec_nb=30

10、;/南北默认值uchar data set_timedx=20;uchar data set_timenb=30;int n;uchar data b;/定时器中止次数sbit k1=P16;/定义5组开关sbit k2=P17;sbit k3=P27;sbit k4=P30;sbit k5=P31;sbit Yellow_nb=P25;/南北黄灯标志sbit Yellow_dx=P22;/东西黄灯标志sbit Green_nb=P24;sbit Green_dx=P21;sbit Buzz=P37;bit Buzzer_Indicate;bit time=0;/灯状态循环标志bit set=

11、1;/调时方向切换键标志uchar code table11= /共阴极字型码0x3f, /-00x06, /-10x5b, /-20x4f, /-30x66, /-40x6d, /-50x7d, /-60x07, /-70x7f, /-80x6f, /-90x00 /-NULL;/函数申明部分void delay(int ms);/延时子程序void key();/按键扫描子程序void key_to1();/键处理子程序void key_to2();void key_to3();void display();/显示子程序void logo(); /开机LOGOvoid Buzzer();/

12、主程序void main()TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1; EX0=1;EX1=1; logo();P2=0Xc3;/ 开始默认状态,东西绿灯,南北黄灯 sec_nb=sec_dx+5; while(1) key(); /调用按键扫描程序display(); /调用显示程序Buzzer();/函数定义部分void key()/按键扫描子程序 if(k1!=1)delay(10);if(k1!=1)while(k1!=1) key_to1(); for(n=0;n40;n+) display(); if(k2!=1)delay(10);

13、if(k2!=1)while(k2!=1) key_to2(); for(n=0;n40;n+) display();if(k3!=1) TR0=1; /开启定时器Buzzer_Indicate=0;sec_nb=set_timenb;/从中止回复,仍显示设置过数值sec_dx=set_timedx;if(time=0) P2=0X99;sec_nb=sec_dx+5; else P2=0xC3;sec_dx=sec_nb+5; if(k4!=1) delay(5);if(k4!=1) while(k4!=1);set=!set; if(k5!=1) delay(5); if(k5!=1) w

14、hile(k5!=1) key_to3(); void display() /显示子程序buf1=sec_dx/10; /第1位 东西秒十位buf2=sec_dx%10; /第2位 东西秒个位buf3=sec_nb/10; /第3位 南北秒十位buf0=sec_nb%10; /第4位 南北秒个位 P1=0xff; / 初始灯为灭 P0=0x00; P1=0xfe; /片选LCD1 P0=tablebuf1; delay(1); P1=0xff; P0=0x00; P1=0xfd; /片选LCD2 P0=tablebuf2; delay(1); P1=0xff; P0=0x00; P1=0Xfb

15、; /片选LCD3P0=tablebuf3; delay(1);P1=0xff; P0=0x00;P1=0Xf7;P0=tablebuf0; /片选LCD4 delay(1);void time0(void) interrupt 1 using 1 /定时中止子程序b+;if(b=19) / 定时器中止次数b=0;sec_dx-;sec_nb-;if(sec_nb=5&time=0) /东西黄灯闪 Green_dx=0;Yellow_dx=!Yellow_dx; if(sec_dx=5&time=1) /南北黄灯闪 Green_nb=0;Yellow_nb=!Yellow_nb; if(sec

16、_dx=0&sec_nb=5) sec_dx=5;if(sec_nb=0&sec_dx=5)sec_nb=5;if(time=0&sec_nb=0) P2=0x99;time=!time;sec_nb=set_timenb;sec_dx=set_timenb+5;if(time=1&sec_dx=0)P2=0Xc3;time=!time;sec_dx=set_timedx;sec_nb=set_timedx+5;void key_to1()/键盘处理子程序之+TR0=0; /关定时器if(set=0)set_timenb+; /南北加1Selseset_timedx+; /东西加1Sif(se

17、t_timenb=100)set_timenb=1;if(set_timedx=100)set_timedx=1; /加到100置1sec_nb=set_timenb ; /设置数值赋给东西南北sec_dx=set_timedx;void key_to2() /键盘处理子程序之-TR0=0; /关定时器if(set=0)set_timenb-; /南北减1Selseset_timedx-; /东西减1Sif(set_timenb=0)set_timenb=99;if(set_timedx=0 )set_timedx=99; /减到1重置99sec_nb=set_timenb ; /设置数值赋给

18、东西南北sec_dx=set_timedx;void key_to3() /键盘处理之紧急车通行 TR0=0; P2=0Xc9; sec_dx=00; sec_nb=00; Buzzer_Indicate=1;void int0(void) interrupt 0 using 1 /只许可东西通行TR0=0;P2=0Xc3;Buzzer_Indicate=0;sec_dx=00;sec_nb=00;void int1(void) interrupt 2 using 1 /只许可南北通行 TR0=0;P2=0X99;Buzzer_Indicate=0;sec_nb=00;sec_dx=00;void logo()/开机Logo - - - - for(n=0;n50;n+) P0=0x40; P1=0xfe;delay(1); P1=0xfd;delay(1);P1=0Xfb;delay(1);P1=0Xf7;delay(1); P1 = 0xff;void Buzzer() if(Buzzer_Indicate=1) Buzz=!Buzz; else Buzz=0;void delay(int ms)/延时子程序uint j,k;for(j=0;jms;j+) for(k=0;k124;k+);附2 原理图

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服