51单片机c语言交通灯设计报告(共16页)

上传人:文**** 文档编号:43519570 上传时间:2021-12-02 格式:DOC 页数:16 大小:813KB
收藏 版权申诉 举报 下载
51单片机c语言交通灯设计报告(共16页)_第1页
第1页 / 共16页
51单片机c语言交通灯设计报告(共16页)_第2页
第2页 / 共16页
51单片机c语言交通灯设计报告(共16页)_第3页
第3页 / 共16页
资源描述:

《51单片机c语言交通灯设计报告(共16页)》由会员分享,可在线阅读,更多相关《51单片机c语言交通灯设计报告(共16页)(16页珍藏版)》请在装配图网上搜索。

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

2、十字路口的交通灯控制电路,要求南北方向和东西方向两条交叉道路上的车辆交替运行,每次通行时间都设30秒,时间可设置修改。(2)、在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道,且黄灯亮时,要求每秒亮一次。(3)、有紧急车辆要求通过时,系统要能禁止东西和南北两条路上所有的车辆通行。二、AT89S52单片机及其他元器件简介(1)AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。A

3、T89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6位向量2级中断结构,全双工串行口,片内晶振及时钟电路。空闲模式下,CPU停止工作,允许RAM、定时器计数器、串口、中断继续工作。鉴于以上的优点本系统采用AT89S52作为主控芯片,实现对整个系统的控制。(2)芯片74LS24574LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。当19脚E为H时,A、B为高阻。E为L时,DIR为L时,数据由B传向A;DIR为H时,由A传向B。(3)两位共阴数码管

4、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两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自击震荡。其发出的时钟脉冲直接送入片内定时控制部件。(2) 复位电路设计如上图所示,采用上电+按钮电平复位方式,当按下按钮时,RST管脚高电平触发。为保证复位可靠,RC时间常数应大于两个机器周期,电容取10uf,电阻取1000欧。(3) 灯控

5、制电路设计 如上图所示,交通灯状态显示电路由东西南北四个方向各三个LED灯组成,分别显示四个方向上红、黄、绿三个状态,用以指示十字路口各方向车辆的行驶。通过软件编程,可使路口交通变化情况为:南北方向和东西方向两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒。在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;黄灯亮时每秒闪亮一次。(4) 按键控制电路设计 开关控制由7个连接到单片机的控制按钮组成。通过软件编程,使得各个开关的功能如上图所示, 基本满足了交通灯的需要。四、元件清单及实物图1、程序清单名 称规 格数 量单片机AT89S521排阻9脚10K 1晶振11.0592MHz

6、 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和keil的使用。单片机程序的编写和原理图的仿真都是在这两个软件的运行下才可以进行的。这个实验最重要的是让我对51系列的单片机有了更深层次的了解,这一学期 开接触单片机的时候觉得这是一门极其高深的课程,老师讲的什么基本完全不懂,课

7、后看仍旧是一头雾水。通过交通灯的学习和制作,对单片机有了初步的了解,知道了它的组成、工作原理等等。在软件编写这一块,开始时遇到了很大的难题,因为两百行的程序,哪怕有一个错误,修改起来也不是十分方便。时常没有心思去寻找和改正错误,所以软件这一块花了很大的一部分时间。几次调试后总算出现“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;/南北默认值uchar data set_timedx=20;uchar data set_timenb=30;int n;uchar d

10、ata 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=1;/调时方向切换键标志uchar code table11= /共阴极字型码0x3f, /-00x06, /-10x5b, /-20x4f

11、, /-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();/主程序void main()TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1;EX0=1;EX1=

12、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);if(k2!=1)while(k2!=1) key_to2(); for(n=0;n40;n+) display();if(k3!=1)T

13、R0=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) while(k5!=1) key_to3(); void display() /显示子程序buf1=sec_dx/10; /第1位 东西秒十

14、位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; /片选LCD3P0=tablebuf3; delay(1);P1=0xff; P0=0x00;P1=0Xf7;P0=tablebuf

15、0; /片选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_dx=0&sec_nb=5) sec_dx=5;if(sec_nb=0&sec_dx=5)sec_nb=5;if(time=0&sec

16、_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(set_timenb=100)set_timenb=1;if(set_timedx=100)set_timedx=1; /加到100置1se

17、c_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 ; /设置的数值赋给东西南北sec_dx=set_timedx;void key_to3() /键盘处理之紧急车通行 TR0=0; P2=0Xc9; s

18、ec_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 原理图专心-专注-专业

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