- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)