《基于51单片机的交通信号灯系统》.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《基于51单片机的交通信号灯系统》.doc

基于单片机的交通信号的灯控制系统 综合实训的主要内容 1.设计任务 设计一单片机控制的交通信号灯系统,模拟城市十字路口交通信号灯功能。 2.基本功能要求 2.1 交通信号控制 直行车道红黄绿灯控制、左行车道绿灯控制、人行横道红绿灯控制。 2.2 通行时间显示 数码管倒计时显示通行时间。 2.3 时间参数设置存储 按键实现通行时间的设置,并存储到EEPROM(24C02)芯片中。 硬件方案设计与论证 1. 显示模块设计 1.1倒计时时间显示 设计思想:由于该系统要求完成功能基于我们考虑完全采用数码管显示8段,构成一个字节,通过对这八段给予高低平使二极管导通或截止,从而显示不同的数字或字符。系统中所使用的是2位共阴数码管(实物图见附录),其管脚从左上方起顺时针依次为1,a,b,e,d,2,g,f,dp,c。 1.2 状态灯显示 设计思想:由于该系统要求完成功能串行E2PROM是基于I的存储器件,遵循二线制协议,其具有接口方便,体积小,数据掉电不丢失等特点 TH0=TH1=(65536-50000)/256,即每0.05秒中断一次。每到第20次中断即过了20*0.05秒=1秒时,使时间的计数值减1,便实现了倒计时的功能。 4.4状态灯显示的实现方法 黄灯闪烁利用定时器中断。每到第10次中断即过了10*0.05秒=0.5秒时,使黄灯标志位反置,即可让黄灯1秒闪烁一次。 4.5 状态切换的实现方法 状态切换在定时器中实现,定时器每0.05秒中断一次,完全可以检测按键的发生。考虑到实际的交通系统不可能立即切换状态,程序一个周期内检测两次状态,若在南北左拐前按键修改状态,则南北左拐结束后切换状态,若在南北左拐后修改状态,则在东西左拐后切换状态。 软件编程 1.程序流程图 图3.1 主程序流程图 图3.2 定时0中断流程图 2.程序 #includereg52.h #include24C02.h /*************端口定义*************/ sbit EW_ShuMa2=P2^3; //EW方向低位数码管控制位 sbit EW_ShuMa1=P2^2; //EW方向高位数码管控制位 sbit SN_ShuMa2=P2^1; //SN方向低位数码管控制位 sbit SN_ShuMa1=P2^0; //SN方向高位数码管控制位 sbit SN_Yellow=P1^1; //SN黄灯 sbit EW_Yellow=P1^5; //EW黄灯 sbit EW_ManGreen=P2^7; //EW人行道绿灯 sbit SN_ManGreen=P2^4; //SN人行道绿灯 sbit EW_ManRed=P2^6; //EW人行道红灯 sbit SN_ManRed=P2^5; //SN人行道红灯 sbit EW_Red=P1^6; //EW直行道红灯 sbit SN_Red=P1^2; //SN直行道红灯 sbit shezhi1=P3^0; //模式设置键 sbit shezhi2=P3^1; //模式设置键 sbit stop1=P3^7; //紧急情况键 bit Flag_SN_Yellow; //SN黄灯标志位 bit Flag_EW_Yellow; //EW黄灯标志位 char Time_EW; //东西方向倒计时单元 char Time_SN; //南北方向倒计时单元 uchar EW=30,SN=20,EWL=9,SNL=9; //程序初始化赋值,正常模式 uchar EW1=30,SN1=20,EWL1=9,SNL1=9; uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0-9段选码 uchar code State[8]={0xBE,0xBD,0xB7,0xBD,0xEB,0xDB,0x7B,0xDB}; /*************函数声明***************/ void Delay_ms(uint z); void ShuMa_Display(); void timer0_init(); void state1(); void state2(); void state3(); void state4(); /**************主函数************/ void main() {

文档评论(0)

wyth + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档