版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE5摘要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MCS-51系列单片机AT89C51为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P3口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。关键词:单片机;交通灯AbstractInrecentyears,withtherapiddevelopmentofscienceandtechnology,theapplicationofSCMisgoingdeep,drivingthetraditionaldetectiontechniquestorenewdaybyday.Inthereal-timeexaminationandintheautomaticcontrolmonolithicintegratedcircuitapplicationsystem,themonolithicintegratedcircuitoftentookacorepartuses.Themonolithicintegratedcircuitaspectknowledgeisonlyinsufficient,butshouldalsoactaccordingtotheconcretehardwarearchitecturesoftwareandhardwareunion,tobeimproved.Theintersectionvehiclesshuttle,thepedestrianisbustling,cardealershiptrafficlane,personsidewalk,methodical.Thendependingonwhattorealizesthisorderlyorder?thetrafficlightsontheautomaticcontrolsystem.Therearegreatnumberkindsofmodestocontrolthetrafficlights.ThesystemusesaseriesofMCS-51asthecenterAT89C51single-chipdevicedesignedtocontrolthetrafficlights,soastorealizethefunctionofsettingred,greenlighttimeby8051chip’sP3portaccordingtotheactualtrafficflows,lightingthered-lightandgreen-lightbyturnandlightingtheyellow-lighttowarmwhile5secondsleft(outputtingthetrafficlightsignalbyP1,outpuingthetimebyP0andshowingthetimeondouble-digitsnixietube).Shortofthedesigncycle,highreliability,practical,simpleoperation,easymaintenance,theexpansionofpowerfulisthissystem.Keywords:SCM;MCU;trafficlight目录TOC\o"1-2"\h\z\u中英文摘要 11设计要求 42设计目的 33方案比较、设计与论证 34原理分析 44.1交通灯显示时序的理论分析 44.2交通灯显示的理论分析 75程序设计流程图 66总体设计与电路图 86.1芯片选择 86.2设计电路图 106.3PROTEUS仿真图: 116.4交通灯程序 127仿真测试、数据及结果分析 188总结与展望 17致谢 20参考文献: 21附录 20程序就是在上述四种状态下循环转化的。一个周期四个状态,在正常模式下共花费2分钟。4.2交通灯显示的理论分析4.2.1倒计时显示的理论分析利用定时器中断,设置 TH0=TH1=(65536-50000)/256,即每0.05秒中断一次。每到第20次中断即过了20*0.05秒=1秒时,使时间的计数值减1,便实现了倒计时的功能。4.2.2状态灯显示的理论分析黄灯闪烁同样可以利用定时器中断。每到第10次中断即过了10*0.05秒=0.5秒时,使黄灯标志位反置,即可让黄灯1秒闪烁一次。5程序设计流程图T0响应T0响应N南北黄灯标志位为1N东西黄灯标志位为1Y0.5s到Y1s到南北黄灯位置反团里Y东西黄灯位置反团里Y返回倒计时减1,计数值置0NN图5.1定时器0中断流程图开始开始南北直行通行东西禁止南北左拐通行东西禁止AT89C51初始化南北黄灯闪烁南北黄灯闪烁通行35秒YN闪烁5秒YN通行15秒YN闪烁5秒YN东西黄灯闪烁东西直行通行南北禁止东西左拐通行南北禁止东西黄灯闪烁通行35秒YN闪烁5秒YN通行15秒YN闪烁5秒YN图5.2主程序流程图INT0响应INT0响应N“繁忙”键按下N“特殊”键按下N“正常”键按下返回关中断开中断正常模式设置Y繁忙模式设置Y特殊模式设置Y图5.3外部中断0中断流程图6总体设计与电路图6.1芯片选择AT89C51AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,可以按照常规方法对其进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。图图6.1AT89C51芯片引脚图6.2设计电路图图6.2电路图图中大部分连线采用总线形式。共五个二位阴极数码管,其中四个分别用于四个路口的倒计时显示,另外一个用于总体的直行时间显示,五个数码管的阳极都接到AT89C51的P0口,阴极接到P2口;共32个发光二极管,其中16个绿色发光二极管,14个红色发光二极管,2个黄色发光二极管,四个路口每个路口各有一个红(禁行)、黄(警告)发光二极管,二个绿色发光二极管(通行),一个用于直行通行,一个用于左拐通行,四个人行道,每个人行道两边各有一红、绿发光二极管,另外两个红色发光二极管分别用于繁忙模式和特殊模式的指示,其中四个路口的二极管接到P1口,人行道的发光二极管接到P3口,繁忙模式和特殊模式的指示灯接P2口;外部中断0接上三个按钮,分别用于繁忙、特殊、正常模式的转化。6.3PROTEUS仿真图:图6.3PROTEUS仿真图图6.3PROTEUS仿真图6.4交通灯程序/***********************************************************十字路口交通灯控制C程序***********************************************************/#include<reg51.h>#define uchar unsignedchar#define uint unsignedint/*****定义控制位*******************************************/sbitTime_Show_LED2=P2^5;//Time_Show_LED2(直行时间显示)控制位sbitTime_Show_LED1=P2^4;//Time_Show_LED1(直行时间显示)控制位sbitEW_LED2=P2^3; //EW_LED2控制位sbitEW_LED1=P2^2; //EW_LED1控制位sbitSN_LED2=P2^1; //SN_LED2控制位sbitSN_LED1=P2^0; //SN_LED1控制位sbitSN_Yellow=P1^6;//SN黄灯sbitEW_Yellow=P1^2;//EW黄灯sbitEW_ManGreen=P3^0;//EW人行道绿灯sbitSN_ManGreen=P3^1;//SN人行道绿灯sbitSpecial_LED=P2^6;//交通特殊指示灯sbitBusy_LED=P2^7;//交通繁忙指示灯sbitNomor_Button=P3^5;//交通正常按键sbitBusy_Btton=P3^6;//交通繁忙按键sbitSpecial_Btton=P3^7;//交通特殊按键sbitEW_ManRed=P3^3;//EW人行道红灯sbitSN_ManRed=P3^4;//SN人行道红灯bitFlag_SN_Yellow;//SN黄灯标志位bitFlag_EW_Yellow;//EW黄灯标志位charTime_EW;//东西方向倒计时单元charTime_SN;//南北方向倒计时单元ucharEW=60,SN=40,EWL=19,SNL=19;//程序初始化赋值,正常模式ucharEW1=60,SN1=40,EWL1=19,SNL1=19;//用于存放修改值的变量ucharcodetable[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0-9段选码ucharcodeS[8]={0x28,0x48,0x18,0x48,0x82,0x84,0x81,0x84};//交通信号灯控制代码/**********************延时子程序**************************/voidDelay(uchara){ uchar i; i=a; while(i--){;}}/*****************显示子函数******************************/voidDisplay(void){ ucharh,l; h=Time_EW/10; l=Time_EW%10; P0=table[l]; EW_LED2=1; //点亮EW_LED2 Delay(2); EW_LED2=0;//熄灭EW_LED2 P0=table[h]; EW_LED1=1;//点亮EW_LED1 Delay(2); EW_LED1=0; h=Time_SN/10; l=Time_SN%10; P0=table[l]; SN_LED2=1;//点亮SN_LED2 Delay(2); SN_LED2=0; P0=table[h]; SN_LED1=1; //点亮SN_LED1 Delay(2); SN_LED1=0; h=EW1/10; l=EW1%10; P0=table[l]; Time_Show_LED1=1; //点亮Time_Show_LED1 Delay(2);Time_Show_LED1=0; P0=table[h]; Time_Show_LED2=1; //点亮Time_Show_LED2 Delay(2); Time_Show_LED2=0;}/**********************外部0中断服务程序******************/voidINT0_srv(void)interrupt0using1{ EX0=0;//关中断if(Nomor_Button==0)//测试按键是否按下,按下为正常状态{EW1=60;SN1=40;EWL1=19;SNL1=19;Busy_LED=0;//关繁忙信号灯Special_LED=0;//关特殊信号灯}if(Busy_Btton==0)//测试按键是否按下,按下为繁忙状态{EW1=45;SN1=30;EWL1=14;SNL1=14;Special_LED=0;//关特殊信号灯Busy_LED=1;//开繁忙信号灯 }if(Special_Btton==0)//测试按键是否按下,按下为特殊状态{EW1=75;SN1=55;EWL1=19;SNL1=19;Busy_LED=0;//关繁忙信号灯Special_LED=1;//开特殊信号灯} EX0=1;//开中断}/**********************T0中断服务程序*******************/voidtimer0(void)interrupt1using1{ staticucharcount; TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==10) { if(Flag_SN_Yellow==1)//测试南北黄灯标志位 {SN_Yellow=~SN_Yellow;} if(Flag_EW_Yellow==1)//测试东西黄灯标志位 {EW_Yellow=~EW_Yellow;} } if(count==20) { Time_EW--; Time_SN--; if(Flag_SN_Yellow==1)//测试南北黄灯标志位 {SN_Yellow=~SN_Yellow;} if(Flag_EW_Yellow==1)//测试东西黄灯标志位 {EW_Yellow=~EW_Yellow;} count=0; }}/*********************主程序开始***********************/void main(void){Busy_LED=0;Special_LED=0;IT0=1; //INT0负跳变触发TMOD=0x01;//定时器工作于方式1TH0=(65536-50000)/256;//定时器赋初值TL0=(65536-50000)%256;EA=1;//CPU开中断总允许ET0=1;//开定时中断EX0=1;//开外部INTO中断TR0=1;//启动定时while(1){ /*******S0状态**********/SN_ManRed=0;SN_ManGreen=1;//SN人行道通行EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_EW_Yellow=0; //EW关黄灯显示信号Time_EW=EW;Time_SN=SN;while(Time_SN>=5) { P1=S[0]; //SN绿灯,EW红灯 Display(); } /*******S1状态**********/ P1=0x00; while(Time_SN>=0) {Flag_SN_Yellow=1;//SN开黄灯信号位P1=P1|0x08;//保持EW红灯Display(); } /*******S2状态**********/SN_ManRed=1;//SN人行道禁止SN_ManGreen=0;EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_SN_Yellow=0;//SN关黄灯显示信号Time_SN=SNL;while(Time_SN>=5) {P1=S[2];//SN左拐绿灯亮,EW红灯Display(); } /*******S3状态**********/ P1=0x00; while(Time_SN>=0) {Flag_SN_Yellow=1; //SN开黄灯信号位P1=P1|0x08;//保持EW红灯Display(); } /***********赋值*********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1; /*******S4状态**********/SN_ManRed=1;//SN人行道禁止SN_ManGreen=0;EW_ManRed=0;EW_ManGreen=1; //EW人行道通行Flag_SN_Yellow=0;//SN关黄灯显示信号Time_EW=SN;Time_SN=EW;while(Time_EW>=5) { P1=S[4]; //EW通行,SN红灯 Display(); } /*******S5状态**********/ P1=0X00; while(Time_EW>=0) {Flag_EW_Yellow=1;//EW开黄灯信号位P1=P1|0x80;//保持SN红灯Display(); } /*******S6状态**********/SN_ManRed=1;//SN人行道禁止SN_ManGreen=0;EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_EW_Yellow=0;//EW关黄灯显示信号Time_EW=EWL;while(Time_EW>=5) {P1=S[6];//EW左拐绿灯亮,SN红灯Display(); } /*******S7状态**********/ P1=0X00; while(Time_EW>=0) {Flag_EW_Yellow=1;//EN开黄灯信号位P1=P1|0x80;//保持SN红灯Display(); } /***********赋值********/ EW=EW1; SN=SN1; EWL=EWL1; SNL=SNL1; }}7仿真测试、数据及结果分析程序运行结果如下:1.首先,直行时间显示数码管显示60。此时南北段绿灯亮、东西段红灯亮40s,南北段人行道绿灯亮,东西段人行道红灯亮,同时南北段和东西段方向的数码管分别从40s和60s开始倒计时。2.35秒后,南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯亮,人行道灯不变。3.40秒后,南北方向左拐灯亮,东西方向红灯亮,东西和南北人行道全部红灯亮,同时南北段和东西段方向的数码管分别从19秒开始倒计时。4.55秒钟后,南北方向的黄灯闪烁5秒,此时东西方向仍维持红灯亮,人行道灯不变。5.1分钟后,东西段绿灯亮、南北段红灯亮40s,东西段人行道绿灯亮,南北段人行道红灯亮,同时南北段和东西段方向的数码管分别从60s和40s开始倒计时。6.1分35秒后,东西方向的黄灯闪烁5秒钟,此时南北方向仍维持红灯亮,人行道灯不变。7.1分40秒后,东西方向左拐灯亮,南北方向红灯亮,东西和南北人行道全部红灯亮,同时南北段和东西段方向的数码管分别从19秒开始倒计时。8.1分55秒钟后,东西方向的黄灯闪烁5秒,此时南北方向仍维持红灯亮,人行道灯不变。9.按下“繁忙”、“特殊”按钮时直行显示分别为45和75。其它过程与正常模式下相同。8总结与展望8.1软件延时与定时器计时软件延时,设计简单,使用方便,但是无法进行精确计时,无法在实际应用中进行使用,本次设计采用了定时器0进行计时,每50ms产生一个脉冲信号,可以准确的计时并方便8段数码管进行显示。8.2使用中断的好处使用中断可以进行多样化设计,强化程序功能与执行效率。在本设计中程序每50ms请求一次中断,实现精确定时与数码管显示刷新。8.3关于本次设计本次课程设计的过程是艰辛的,不过收获却是很大的。在设计过程中,会出现了一些问题,但都是常见的小问题,如:代码中双引号的使用并不是在英语书写状态下,输入字母出错等,在调试时出现异常,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利完成,并实现了其功能。综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,但通过查阅相关书籍、资料以及和周围同学交流后都得以一一解决。由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则效率还不是很高等等,这需要在实践中进一步完善。当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在单片机编程这方面有一个大的发展。参考文献:[1]李朝青.单片机原理及接口技术(修订版).北京:北京航空航天大学出版社,1998.
[2]李广弟.单片机基础.北京
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年建筑施工安装协议样本
- 《现代民俗学视野下临清冯圈竹马舞蹈形态的保留及变异》
- 2024初中语文教师工作计划(9篇)
- 2024年房地产项目转让合同的法律审查
- 2024年新房产交易合同
- 2024年打印机及耗材购销合同
- 2024年三元催化净化器项目资金申请报告代可行性研究报告
- 2024年新型地面硬化工程合同
- 2024年庆典场地租赁合同
- 2024年文化产业投资与股权转让合同
- 第16讲 国家出路的探索与挽救民族危亡的斗争 课件高三统编版(2019)必修中外历史纲要上一轮复习
- 机器学习 课件 第10、11章 人工神经网络、强化学习
- 北京市人民大学附属中学2025届高二生物第一学期期末学业水平测试试题含解析
- 书籍小兵张嘎课件
- 氢气中卤化物、甲酸的测定 离子色谱法-编制说明
- 2024秋期国家开放大学专科《机械制图》一平台在线形考(形成性任务四)试题及答案
- 2024年经济师考试-中级经济师考试近5年真题集锦(频考类试题)带答案
- 2024年黑龙江哈尔滨市通河县所属事业单位招聘74人(第二批)易考易错模拟试题(共500题)试卷后附参考答案
- 私募基金管理人-廉洁从业管理准则
- 房地产估价机构内部管理制度
- 艺术哲学:美是如何诞生的学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论