单片机信号交通灯说明书文档格式.docx
- 文档编号:16174670
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:20
- 大小:306.13KB
单片机信号交通灯说明书文档格式.docx
《单片机信号交通灯说明书文档格式.docx》由会员分享,可在线阅读,更多相关《单片机信号交通灯说明书文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
7.黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。
8.延时35s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。
9.当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。
当事故处理完毕(再次按中断键),重新按上述方式工作。
10.当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。
第3章系统设计
3.1系统设计总体框图
单片机
图3-1系统设计总体框图
3.2各模块原理说明
3.2.1最小系统STC89C51模块
STC89C51是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用STC公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,STC89C51单片机在电子行业中有着广泛的应用。
STC89C51主要管脚说明:
VCC(40脚):
供电电压GND(20脚):
接地RST:
复位输入。
/EA/VPP(31脚):
当/EA为低电平时,不管是否有内部程序存储器,只选用片外存储器,外部程序存储器地址为:
0000H-FFFFH。
反之当单片机上电或复位后选用片内程序存储器。
XTAL1(19脚):
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2(18脚):
来自反向振荡器的输出。
单片机最小系统采用5V电源供电,利用晶振电路给单片机工作运行提供脉冲。
图3-2最小系统
3.2.274HC245芯片模块
74HC245是一款高速CMOS器件,74HC245引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC245八路收发器在发送和接收两个方向上都具有正相三态总线兼容输出。
74HC245的输出使能端
用于实现轻松级联,而发送/接收端(DIR)用于控制方向。
控制输出,使得总线被有效的隔离输出。
图3-374HC245芯片引脚图
3.2.3显示模块功能
显示模块分别用数码管显示和LED显示,数码管倒计时显示可以提醒驾驶员在信号灯颜色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。
驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。
倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的一种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择。
通过两种显示结合,是本设计更合理可靠。
如下图3-4所示。
图3-4显示模块功能图
3.2.4控制按钮模块
本系统要求的按键控制不多,单片机的I/0口足够,可直接采用独立式。
按键可以设置系统的运行状态,禁行状态为数码管均显示“00”,红灯全亮;
复位按键可以将整个系统复位;
时间加减可以设置通行和等待通行的时间;
切换按键可以切换加减的方向时间。
通过按键模块的控制,使得整个系统具有灵活性,实用性。
如下图3-5所示。
图3-5控制按钮模块
3.3系统总原理图说明
当接通5v电源后,按下电源开关,南北方向数码管显示“25”。
数码管开始倒计时,到5秒的时候,将切换红绿黄灯。
系统总原理图见附1。
按键1复位、按键2黄灯常亮(深夜模式)、按键3红灯常亮(紧急模式)、按键4东西通行、按键5南北通行、按键6确定、按键7时间加、按键8时间减、按键9切换。
3.4系统的操作说明
1.接好电路中的电源供电线。
2.检查好电路板中没有短路现象、电源供电线都接好后通电使用。
3.电路安装好后,通电即可正常使用。
3.5系统操作注意事项
1.通电使用前先对照电路板与电路图是否有错焊、漏焊、短路、开路、元器件相碰等现象,有要处理好后再使用。
2.通电使用前先检查好电路板是否与电源供电线、驱动电路开关与负载供电线、负载供电线之间相互接反,不得在接错的情况下通电,要处理好后再使用。
3.应把电极片与电路板隔离,避免电极片与电路板上元器件相碰触发生短路现象。
4.通电时应把电路板放在绝缘物体上,避开其他导电物体避免发生短路现象。
5.使用时闻到烧焦味、发现元器件或集成块冒烟烧毁应立即断开电源,待
电路板查明原因处理好后才可以继续通电使用。
6.调试电路时应小心操作,避免万用表笔或其它导电工具造成人为短路,更换电路板元件、焊接时应断开电源后再操作避免造成元器件击穿或电路短路现象。
参考文献
[1]李建忠.单片机原理及应用[M].西安电子科技大学出版社,2008
[2]张毅刚.单片机原理及接口技术.哈尔滨:
哈尔滨工业大学出版社,1999
[3]徐爱钧.8051单片机实践教程[M].北京电子工业出版社,2005
[4]楼然苗,李光飞.51系列单片机设计实例[M].北京航空航天大学出版社,2006
[5]陈小忠,黄宁.单片机接口技术实用子程序[M],北京:
北京人民邮电出版社,2005
[6]全国大学生电子设计竞赛组委会.北京:
北京理工大学出版社,2004年8月.
[7]韩全立.赵德申编著.微机控制技术[M].北京:
机械工业出版社,2008
[8]王守中,聂元铭.51单片机开发入门与典型实例[M].北京:
人民邮电出版社,2009
附录
附录一:
电路总原理图
附录二:
源程序代码
#include<
reg51.h>
//头文件
#defineucharunsignedchar
#defineuintunsignedint//宏定义
uchardatabuf[4];
//秒显示的变量
uchardatasec_dx=20;
//东西数默认
uchardatasec_nb=30;
//南北默认值
uchardataset_timedx=20;
//设置东西方向的时间
uchardataset_timenb=30;
//设置南北方向的时间
intn;
uchardatacountt0,countt1;
//定时器0中断次数
//定义6组开关
sbitk4=P3^7;
//切换方向
sbitk1=P3^5;
//时间加
sbitk2=P3^6;
//时间减
sbitk3=P3^4;
//确认
sbitk5=P3^1;
//禁止
sbitk6=P1^5;
//夜间模式
sbitRed_nb=P2^6;
//南北红灯标志
sbitYellow_nb=P2^5;
//南北黄灯标志
sbitGreen_nb=P2^4;
//南北绿灯标志
sbitRed_dx=P2^3;
//东西红灯标志
sbitYellow_dx=P2^2;
//东西黄灯标志
sbitGreen_dx=P2^1;
//东西绿灯标志
bitset=0;
//调时方向切换键标志=1时,南北,=0时,东西
bitdx_nb=0;
//东西南北控制位
bitshanruo=0;
//闪烁标志位
bityejian=0;
//夜间黄灯闪烁标志位
ucharcodetable[11]={//共阴极字型码
0x3f,//--0
0x06,//--1
0x5b,//--2
0x4f,//--3
0x66,//--4
0x6d,//--5
0x7d,//--6
0x07,//--7
0x7f,//--8
0x6f,//--9
0x00//--NULL
};
//函数的声明部分
voiddelay(intms);
//延时子程序
voidkey();
//按键扫描子程序
voidkey_to1();
//键处理子程序
voidkey_to2();
voidkey_to3();
voiddisplay();
//显示子程序
voidlogo();
//开机LOGO
voidBuzzer();
//主程序
voidmain()
{
TMOD=0X11;
//定时器设置
TH1=0X3C;
TL1=0XB0;
TH0=0X3C;
//定时器0置初值0.05S
TL0=0XB0;
EA=1;
//开总中断
ET0=1;
//定时器0中断开启
ET1=1;
//定时器1中断开启
TR0=1;
//启动定时0
TR1=0;
//关闭定时1
EX0=1;
//开外部中断0
EX1=1;
//开外部中断1
logo();
//开机初始化
P2=0Xc3;
//开始默认状态,东西绿灯,南北黄灯
sec_nb=sec_dx+5;
//默认南北通行时间比东西多5秒
while
(1)//主循环
{
key();
//调用按键扫描程序
display();
//调用显示程序
}
}
//函数的定义部分
voidkey(void)//按键扫描子程序
{
if(k1!
=1)//当K1(时间加)按下时
{
//调用显示,用于延时消抖
if(k1!
=1)//如果确定按下
{
TR0=0;
//关定时器
shanruo=0;
//闪烁标志位关
P2=0x00;
//灭显示
TR1=0;
//启动定时1
if(set==0)//设置键按下
set_timedx++;
//南北加1S
else
set_timenb++;
//东西加1S
if(set_timenb==100)
set_timenb=1;
if(set_timedx==100)
set_timedx=1;
//加到100置1
sec_nb=set_timenb;
//设置的数值赋给东西南北
sec_dx=set_timedx;
do
{
display();
//调用显示,用于延时
}
while(k1!
=1);
//等待按键释放
}
}
if(k2!
=1)//当K2(时间减)按键按下时
{
//调用显示,用于延时消抖
if(k2!
=1)//如果确定按下
{
//关定时器0
//关定时器1
if(set==0)
set_timedx--;
//南北减1S
set_timenb--;
//东西减1S
if(set_timenb==0)
set_timenb=99;
if(set_timedx==0)
set_timedx=99;
//减到1重置99
do
//调用显示,用于延时
while(k2!
if(k3!
=1)//当K3(确认)键按下时
if(k3!
TR0=1;
//启动定时器0
sec_nb=set_timenb;
//从中断回复,仍显示设置过的数值
//显示设置过的时间
//关定时器1
if(set==0)//时间倒时到0时
P2=0X00;
Green_dx=1;
//东西绿灯亮
Red_nb=1;
//南北红灯亮
sec_nb=sec_dx+5;
//回到初值
else
P2=0x00;
//南北绿灯,东西红灯
Green_nb=1;
Red_dx=1;
sec_dx=sec_nb+5;
if(k4!
=1)//当K4(切换)键按下
if(k4!
//关定时器0
set=!
set;
//取反set标志位,以切换调节方向
//关定时器1
dx_nb=set;
{
}
while(k4!
if(k5!
=1)//当K5(禁止)键按下时
if(k5!
{
TR0=0;
//关定时器
Red_dx=1;
Red_nb=1;
//全部置红灯
sec_dx=00;
//四个方向的时间都为00
sec_nb=00;
//调用显示,用于延时
}
while(k5!
//等待按键释放
if(k6!
=1)//当K6(夜间模式)按下
if(k6!
TR1=1;
while(k6!
voiddisplay(void)//显示子程序
{
buf[1]=sec_nb/10;
//第1位东西秒十位
buf[2]=sec_nb%10;
//第2位东西秒个位
buf[3]=sec_dx/10;
//第3位南北秒十位
buf[0]=sec_dx%10;
//第4位南北秒个位
P1=0xff;
//初始灯为灭的
P0=0x00;
////灭显示
P1=0xfe;
//片选LED1
P0=table[buf[1]];
//送东西时间十位的数码管编码
delay
(1);
//延时
//关显示
//灭显示
P1=0xfd;
//片选LED2
P0=table[buf[2]];
//送东西时间个位的数码管编码
P1=0Xfb;
//片选LED3
P0=table[buf[3]];
//送南北时间十位的数码管编码
P1=0Xf7;
//片选LED4
P0=table[buf[0]];
//送南北时间个位的数码管编码
voidtime0(void)interrupt1using1//定时中断子程序
//重赋初值
//12m晶振50ms//重赋初值
//重新启动定时器
countt0++;
//软件计数加1
if(countt0==10)//加到10也就是半秒
if((sec_nb<
=5)&
&
(dx_nb==0)&
(shanruo==1))//东西黄灯闪
Green_dx=0;
Yellow_dx=0;
}
if((sec_dx<
(dx_nb==1)&
(shanruo==1))//南北黄灯闪
Green_nb=0;
Yellow_nb=0;
}
if(countt0==20)//定时器中断次数=20时(即1秒时)
{countt0=0;
//清零计数器
sec_dx--;
//东西时间减1
sec_nb--;
//南北时间减1
Yellow_dx=1;
(shanruo==
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 信号 交通灯 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)