六行道交通灯电路设计报告Word格式.docx
- 文档编号:20373647
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:17
- 大小:353.17KB
六行道交通灯电路设计报告Word格式.docx
《六行道交通灯电路设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《六行道交通灯电路设计报告Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
说明:
因为有左转特区,节省了左转绿灯时间!
一个周期内交通等变化表
方向的灯和时间
状态1
状态2
状态3
状态4
状态5
状态6
状态7
状态8
南北左行灯
红,35
黄,3
绿,25
红,65
南北直行灯
绿,35
红,95
东西左行灯
东西直行灯
红95倒计时到65
a)对于含有左转特区的十字路口,当直行绿灯亮且左转红灯亮,左转车辆需驾驶进入左转特区而等待左行灯绿灯亮。
b)右转绿灯始终亮,表中没有给出!
C)表中的数字XX是倒计时到0秒的意思,其中东西直行灯状态7,8,1,2,3是连续红灯的!
2.论证
用定时器功能设定50ms基本单位定时,再以20个循环而变成1s定时;
依次次编程状态1到状态6的六种状态,编译程序,后连接电路把程序烧入单片机看运行是否成功!
三、单元电路分析与设计以及程序说明
1.定时器
1).c51单片机定时器功能
定时器/计数器简称定时器,其作用主要包括产生各种时间间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。
8031单片机有2个16位的定时器/计数器;
定时器0(T0)和定时器(T1).
T0由2个定时寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。
作定时器时,每个机器周期定时寄存器自动加1.所以定时器也可看做是计量机器周期的计时器。
由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的1/12,作计数器时,只要在单片机外部引脚T0(或T1)有从1到0电平的负跳变,计数器就自动加1。
计数的最高频率一般为振荡频率的1/24。
工作方式:
T0或T1无论用作定时器或计数器都有4种工作方式:
方式0、方式1、方式2和方式3。
除方式3外,T0和T1有完全相同的工作状态。
下面以T1为例,分述各种工作方式的特点和用法。
a、工作方式0:
13位方式由TL1的低5位和TL1的8位构成13位计数器(TL1的高3位无效)。
工作方式0的结构见下图:
图中,C/T为定时/计数选择:
C/T1为定时器,定时信号为振荡周期12分频后的脉冲;
C/T=1,T1为计数器,计数信号来自引脚T1的外部信号。
定时器T1能否启动工作,还受到了R1、GATE和引脚信号INT1的控制。
由图中的逻辑电路可知,当GATE=0时,只要TR1=1就可打开控制门,使定时器工作;
当GATE=1时,只有TR1=1且INT1=1,才可打开控制门。
GATE,TR1,C/T的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT1则是外部引脚上的信号。
在一般的应用中,通常使GATE=0,从而由TR的状态控制T的开闭:
TR1=1,打开T1;
TR1=0,关闭T1。
在特殊的应用场合,例如利用定时器测量接于INT1引脚上的外部脉冲高电平的宽度时,可使GATE=1,TR1=1。
当外部脉冲出现上升沿,亦即INT1由0变1电平时,启动T1定时,测量开始;
一旦外部脉冲出现下降沿,亦即INT1由1变0时就关闭了T1。
定时器启动后,定时或计数脉冲加到TL1的低5位,从预先设置的初值(时间常数)开始不断增1.TL1计满后,向TH1进位。
当TL1和TH1都计满之后,置位T1的定时器回零标志TF1,以此表明定时时间或技术次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。
如需进一步定时/计数,需用指令重置时间常数。
b.工作方式1:
16位方式。
与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围。
工作方式1的结构见下图。
c.工作方式2:
8位自动装入时间常数方式。
由TL1构成8位计数器,TH1仅用来存放时间常数。
启动T1之前,TL1和TH1装入相同的时间常数,当TL1计满后,除定时器回零标志TF1置位,具有向CPU请求中断的条件外,TH1中的时间常数还会自动地装入TL1,并重新开始定时或计数。
所以,工作方式2是一种自动装入时间常数的8位计数器方式。
由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用这种工作方式。
当然,这种方式的定时/计数范围要小于方式0和方式1.工作方式2的结构见下图。
d.工作方式3:
2个8位方式。
工作方式3只适用于定时器0.如果使定时器1为工作方式3,则定时器1将处于关闭状态。
当T0为工作方式3时,TH0和TL0分成2个独立的8位计数器。
其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零标志和中断源。
TH0只能用作定时器,并使用T1的控制位TR1、回零标志TF1和中断源,见下图。
通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才能使用。
这时,T1往往用作串行口波特率发生器(见1、4),TH0用作定时器,TL0作为定时器或计数器。
所以,方式3是为了使单片机有一个独立的定时器/计数器、一个定时器以及1个串行口波特率发生器的应用场合而特地提供的。
这时,可是定时器1用于工作方式2,把定时器0用于工作方式3.
2).控制寄存器
定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。
其中,TCON寄存器中另有4位用于中断系统。
a、定时器方式控制寄存器TMOD
TMOD在特殊功能寄存器中,字节地址为89H,无位地址。
TMOD的格式如下图所示。
由图可见,TMOD的高4位用于T1,低4位使用于T0,4种符号的含义如下;
GATE:
门控制器。
其作用见图1.6。
GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。
C/T:
定时器/计数器选择位。
C/T=1.为计数器方式;
C/T=0,为定时器方式。
M1M0=00:
工作方式0(13位方式)。
M1M0=01:
工作方式1(16位方式)。
M1M0=10:
工作方式2(8位自动装入时间常数方式)。
M1M0=11:
工作方式3(2个8位方式--仅对T0)。
b.定时器控制寄存器--TCON
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低拉到高位)为88H—8FH,由于有位地址,十分便于进行位操作。
TCON的格式如下图所示。
其中,TF1,TR1,TF0和TR0位用于定时器/计数器;
IE1,IT1,TE0和IT0位用于中断系统。
TF1,TR1用于定时器T1;
TF0,TR0用于定时器T0。
两组符号有相同的含义。
TF:
定时器/计数器中断请求标志位。
当定时器计满回零时,TF=1,并可申请中断;
当CPU响应中断并进入中断服务程序后,TF自动清零。
如对TF查询,定时器回零后,要用指令将TF清零。
TR:
定时器/计数器开闭控制位。
IE1:
IT1用于外部中断1(1NT1);
IE0,IT0用于外部中断0(1NT0)。
两组符号的含义相同。
IT:
下跳沿/低电平引起外部中断请求的选择位。
IT=1,由下跳沿引起;
IT=0,由低电平引起。
IE:
外部中断的中断申请标志。
IE=0,表明无外部中断请求:
IE=1,表明有外部中断请求。
当时外部中断请求时,IE自动为1,单片机CPU响应此中断后,IE自动清零。
3)定时/计数初值的求取方法:
8031单片机的定时器/计数器采用增量式计数,也就是说,当运行于定时器方式时,每隔一个机器周期定时器自动加1;
当运行于计数器方式时,每当引脚出现下跳沿,计数器自动加1.无论是作定时用还是计数用,当T0或T1加满回零后,定时器回零标志置1.而当允许中断时,TF可以申请中断进而中断服务程序中作相应的操作;
TF也可用程序判断定时到或计数满的标志位。
那么,怎样确定定时或计数初值(又称为时间常数),以便达到要求的定时时间或计数值呢?
下面简要介绍,并举两个例子加以说明。
设T0(或T1)运行于计数器方式,要求计数X个外部脉冲后T0(或T1)回零,则计数初值C的求取方法如下:
因为回零的含义是指加满到计数器的模值,即
X+C=模
所以C=模-X=模+(-X)=(X)求补
由此可见,计数初值的大小等于需要计数的个数X求补运算后的结果。
2.上拉电阻
因为单片机每个端口输入端的驱动能力有限,故用上拉电阻增大驱动能力!
如图:
3.动态数码管
A.共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点)。
利用数码管的余辉效应以及人眼的滞后性,只有扫描周期在1ms和10ms之间!
不停的扫描,对于人眼来说就是一直发光的!
B.共阴极数码管的注意事项
共阴极数码管表面不要用手触摸,不要用手去弄引角;
焊接温度:
260度;
焊接时间:
5S表面有保护膜的产品,可以在使用前撕下来。
4.LED灯
led灯采用共阳极法连接,阳极和一1千欧电阻串联起来后接在电源+上,其中1千欧电阻式用来限流的!
但led阴极为低电平式,led灯亮。
5.程序说明
#include<
reg51.h>
intrins.h>
sbitsn_lrled=P2^0;
sbitsn_lgled=P2^1;
sbitsn_lyled=P2^2;
/****南北方向左行道红绿黄灯***/
sbitsn_mrled=P2^3;
sbitsn_mgled=P2^4;
sbitsn_myled=P2^5;
/**南北方向直行道红绿黄灯*********/
sbitew_lrled=P2^6;
sbitew_lgled=P2^7;
sbitew_lyled=P3^0;
/****东西方向左行道红绿黄灯***/
sbitew_mrled=P3^1;
sbitew_mgled=P3^2;
sbitew_myled=P3^3;
/**东西方向直行道红绿黄灯*********/
sbits_yg=P3^4;
sbitn_yg=P3^5;
sbite_yg=P3^6;
sbitw_yg=P3^7;
/*******东西南北方向右行常绿灯**/
unsignedcharcodedisptab[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
//段码控制此表为LED的字模,共阴数码管0-9-
unsignedcharcodedispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};
//位选控制查表的方法控制//此表为8个数码管位选控制,共阴数码管1-8个
/****分别为南北直行(个位十位),南北左行(个,十);
东西直行(个,十),东西左行(个,十)即P1口八个端口************/
/*********变量定义*******/
unsignedcharb[8];
unsignedchari1,j1,m,s=0;
unsignedchara;
d=141;
/********动态扫描延时程序*******/
voiddelay()
{
for(i1=10;
i1>
0;
i1--)
for(j1=10;
j1>
j1--)
{;
}
/******定时器初始化***/
voidstart()
TMOD=0x01;
/**定时器0,模式1**/
TH0=0x3c;
/**50ms设定**/
TL0=0XB0;
EA=1;
ET0=1;
TR0=1;
/**********主程序******/
voidmain()
P2=0xff;
P3=0Xff;
s_yg=0;
n_yg=0;
e_yg=0;
w_yg=0;
/***右行灯常绿打开***/
start();
while
(1)
/***一状态***/
if(a>
=104)
sn_lyled=1;
sn_myled=1;
ew_lyled=1;
sn_lrled=0;
sn_mgled=0;
ew_lrled=0;
ew_mrled=0;
/***颜色灯***/
b[0]=(a-104)%10;
b[1]=(a-104)/10;
b[2]=(a-104)%10;
b[3]=(a-104)/10;
b[4]=(a-74)%10;
b[5]=(a-74)/10;
b[6]=(a-74)%10;
b[7]=(a-74)/10;
/***二状态***/
if((a>
=100)&
&
(a<
104))
sn_lrled=1;
sn_mgled=1;
sn_lyled=0;
sn_myled=0;
b[0]=(a-100)%10;
b[1]=(a-100)/10;
b[2]=(a-100)%10;
b[4]=(a-100)/10;
/***三状态***/
=74)&
100))
sn_lgled=0;
sn_mrled=0;
b[0]=(a-4)%10;
b[1]=(a-4)/10;
b[2]=(a-74)%10;
b[3]=(a-74)/10;
/***四状态***/
=70)&
74))
sn_lgled=1;
ew_lrled=1;
ew_mrled=1;
ew_lyled=0;
ew_myled=0;
b[2]=(a-70)%10;
b[3]=(a-70)/10;
b[4]=(a-70)%10;
b[5]=(a-70)/10;
b[6]=(a-70)%10;
b[7]=(a-70)/10;
/***五状态***/
=34)&
70))
ew_myled=1;
ew_mgled=0;
b[1]=(a-3)/10;
b[2]=(a-4)%10;
b[3]=(a-3)/10;
b[4]=(a-34)%10;
b[5]=(a-34)/10;
b[6]=(a-34)%10;
b[7]=(a-34)/10;
/***六状态***/
=30)&
34))
ew_mgled=1;
b[3]=(a-4)/10;
b[4]=(a-30)%10;
b[5]=(a-30)/10;
b[6]=(a-30)%10;
b[7]=(a-30)/10;
/***七状态***/
=4)&
30))
ew_lgled=0;
b[4]=(a+66)%10;
b[5]=(a+66)/10;
b[6]=(a-4)%10;
b[7]=(a-4)/10;
/***八状态***/
if((a>
=0)&
4))
sn_mrled=1;
ew_lgled=1;
b[0]=a%10;
b[1]=a/10;
b[2]=a%10;
b[3]=a/10;
b[6]=a%10;
b[7]=a/10;
/*******动态数码管扫描****/
for(m=0;
m<
=7;
m++)
P0=disptab[b[m]];
P1=dispbit[m];
delay();
/****定时器****/
voiddingshiqi()interrupt1
TH0=0x3C;
if(++s==20)
s=0;
--d;
if(d<
=0)
d=140;
a=d-1;
四、总电路图和元件清单
1.总电路图
2元件清单
a.电源座
b.直径5mm的红绿黄led各为8个,12个,8个
c.8个两位共阴极动态数码管
d.电容30pf两个,10uf一个
e.89c51单片机和其插槽以及12M晶振
f.10千欧电阻8个,1千欧26个
g.开关一个
h.万用板
i.导线若干
五、结论
设计的电路使用万用板去焊接的,接头可能不稳固!
外观不是很好!
但是运行能满足要求。
六、心得体会
通过这次的设计,让我认识到做事需要有毅力,其中遇到不少困难,但只要恒心在,就能很大机会成功!
同时让我认识到啦许多实践中的不足!
总的来说心里挺开心的,因为自己设计的东西能正确运行,挺好的感觉!
七、参考文献
《51单片机基础入门》以及相关交通灯变化规则的书籍,以及《数字电路基础》关于动态数码管的部分。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 行道 交通灯 电路设计 报告