胡健生课设.docx
- 文档编号:6096822
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:22
- 大小:327.12KB
胡健生课设.docx
《胡健生课设.docx》由会员分享,可在线阅读,更多相关《胡健生课设.docx(22页珍藏版)》请在冰豆网上搜索。
胡健生课设
目录
一、概述-3-
1.1课题名称-3-
1.2设计目的-3-
1.4设计要求-3-
二、硬件设计-4-
2.1MCS-51单片机及ADC0832简介-4-
2.2系统硬件设计-9-
2.2.1自动交通管理系统方案论证-9-
2.2.2系统总框图-10-
2.2.3硬件接线图-11-
三、软件设计-17-
3.1程序流程图-17-
3.2初值计算-18-
3.2.1相应程序代码-18-
四、运行调试-20-
五、心得体会-21-
六、参考文献-21-
七、附录-22-
7.3硬件连线图-26-
一、概述
摘要:
本文研究的是以AT89C51单片机为控制器的自动交通控制系统,该系统用红、绿、黄三支共两组发光二极管表示交通信号灯,利用单片机模拟有时间显示的定时交通信号灯控制管理,并附带有撞红灯警告功能。
本设计是以软件和硬件相结合的方式来实现,文中给出了具体的硬件电路图和软件流程图及程序源码。
关键词:
智能交通灯,AT89C51,LED
1.1课题名称
自动交通管理系统
1.2设计目的
要求我们掌握单片机各模块的基本工作原理,培养单片机应用系统的设计能力,熟练使用proteus进行设计仿真。
1.3设计内容
设计用单片机控制的十字路口交通灯及撞红灯报警控制系统,并实现这些功能。
1.4设计要求
用红、绿、黄三支共两组发光二极管表示交通信号灯,利用单片机模拟有时间显示的定时交通信号灯控制管理。
信号灯的变化规律可如下:
1.放行线:
绿灯亮放行25秒,黄灯亮警告5秒,然后红灯亮禁止。
2.禁示线:
红灯亮禁止30秒,然后绿灯亮放行。
3.当某一方向的红灯亮时,若该方向有车通过,则LED亮报警。
(撞红灯信号可用3-5V模拟量表示)
4.同时用2位数码管进行30秒钟递减时间显示。
二、硬件设计
2.1MCS-51单片机及ADC0832简介
MCS-51单片机内部结构
8051是MCS-51系列单片机的典型产品,以这一代表性的机型进行系统的讲解。
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
·中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
·数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
图1-内部结构
·程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
·定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
·并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
·全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
·时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
下图是MCS-51系列单片机的内部结构示意图2。
图2-单片机的内部结构
MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
如图3
图3-单片机外部引脚图
Pin9:
RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。
8051的复位方式可以是自动复位,也可以是手动复位,见下图4。
此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
图4
·Pin30:
ALE/
当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。
而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。
更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。
如果单片机是EPROM,在编程其间,
将用于输入编程脉冲。
·Pin29:
当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
·Pin31:
EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
显然,对内部无程序存储器的8031,EA端必须接地。
在编程时,EA/Vpp脚还需加上21V的编程电压。
ADC0809软件简介
8路模拟信号的分时采集,片内有8路模拟选通 开关,以及相应的通道抵制锁存用译码电路,其 转换时间为100μs左右
内部结构图
ADC0芯片为28引脚为双列直插式封装。
9.8。
对ADC0809主要信号引脚的功能说明如下:
IN7~IN0——模拟量输入通道
ALE——地址锁存允许信号。
对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
START——转换启动信号。
START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持 低电平。
本信号有时简写为ST.
D7~D0——数据输出线。
为三态缓冲输出形式,可以和单片机的数据线直接相连。
D0为最低位,D7为最高
OE——输出允许信号。
用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
Vcc—— +5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。
其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V)
2.2系统硬件设计
2.2.1自动交通管理系统方案论证
水平、垂直两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为显示干道的同行时间,指示灯燃亮的方案如下表。
水平道
30秒
25秒
5秒
红灯
绿灯
黄灯
垂直道
25秒
5秒
30秒
绿灯
黄灯
红灯
说明:
A当水平方向为红灯时,时间持续30秒,此时水平方向的道路为禁行线,垂直方向的道路为放行线,绿灯25秒正常通行,黄灯5秒提醒路人交通灯的状态即将变化;
B当垂直方向为红灯时,时间持续30秒,此时垂直方向的道路为禁行线,垂水平向的道路为放行线,绿灯25秒正常通行,黄灯5秒提醒路人交通灯的状态即将变化;
C水平方向的交通灯按红-绿-黄三种颜色循环变化,垂直方向的交通灯按绿-黄-红三种颜色循环变化,这样行人和车辆就可以安全畅通的通行。
D当手动按下紧急按钮后,水平方向和垂直方向都会有十秒的红灯,十秒倒计时结束后,红灯继续完成被打断前的计时,直到数码显示管显示0,继续按设定的自动交通灯变化规律变化
2.2.2系统总框图
2.2.3硬件接线图
1.红绿灯接线图
本设计利用单片机的p3口来驱动和控制各种信号灯的燃亮和燃亮时间,在实际中,交通灯的信号灯需要用高电压控制,在这里我们只是模拟一下它的控制信号,所以我们就只用单片机的信号引脚直接来控制发光二极管,其接线图如下:
2.撞红灯系统接线图
作为单通道模拟信号输入时ADC0832的输入电压是0—5V,当ADC0832模拟量输入端输入5V,时,输出为255,所以若ADC0832采集到的模拟量数值大于3V也就是153/255x5=3,驱动LED发光。
我采用了滑动变阻器控制ADC的输入电压。
3.时间显示接线图
采用了P2口驱动数码显示管显示时间,选用7SEG-MPX2-CA共阳极数码管显示。
P3.0口选择LEDA,P3.1口选择LEDB。
4.紧急按钮接线图
通过P1.0口外接一个紧急按钮,按下后红灯持续亮10秒。
5.单片机最小系统
三、计算、程序设计
3.2初值计算
本程序中,采用中断方式定时,定时间隔为0.1s
晶振6MHZ,需要计数50000次
故初值为:
TH0=-50000<<8;
TL0=-50000%256;
TH1=-50000<<8;
TL1=-50000%256;
3.2.1相应程序代码
(1)主程序
/*主函数*/voidmain()
voidmain()
{
TMOD=0x11;//工作方式1
EA=1;
ET0=1;
ET1=1;
TR0=1;
TH0=-50000<<8;
TL0=-50000%256;
TH1=-50000<<8;
TL1=-50000%256;
COM=0x80;//PA,PB为输出,PC为输入
PC=0x30;
P1=0x00;
while
(1)
{
if(ADC_0832()>153)//判断是否有闯红灯
beep=0;
else
beep=1;
if(bb==0)
DelayMs
(1);//按键去抖
if(bb==0)
{
ET0=0;//关定时器0中断,以响应定时器1中断
ET1=1;
MS=10;//紧急处理情况倒计时10秒
TR1=1;
PC=0x10;//显示10
P1=0x10;
beep=0;//报警,蜂鸣器响
}
}
}
(2)中断服务子程序
voidtime0()interrupt1//中断服务程序,完成定时,显示
{
EA=0;
t++;
if(t==10)
{
MS--;
i=MS/10;
j=MS%10;
k=i*16+j;//将十进制转为十六进制,在数码管显示
PC=k;
P1=((30-MS)/10)*16+(30-MS)%10;
t=0;
}
elseif(MS<=0)
{
MS=31;
flag++;
}
if(flag==0)//南北方向
{
PA=0xFF&(~LED1)&(~LED6)&(~LED7);//东西绿,南北红25MS
PB=0xFF&(~LED12);
if(MS<=5)
{
PA=0xFF&(~LED2)&(~LED6)&(~LED8);
PB=0xFF&(~LED12);//东西黄灯,南北红灯5MS
}
}
if(flag==1)//东西方向
{
PA=0xFF&(~LED3)&(~LED4);//东西红,南北绿25ms
PB=0xFF&(~LED10)&(~LED9);
if(MS<=5)//倒计时只剩5秒时,显示黄灯
{
PA=0xFF&(~LED3)&(~LED5);
PB=0xFF&(~LED9)&(~LED11);//东西红灯,南北黄灯5MS
}
}
if(flag>=2)
{flag=0;}
TH0=-50000<<8;
TL0=-50000%256;
EA=1;
}
(3)紧急情况处理的中断函数
voidtime1int(void)interrupt3//特殊情况处理
{
if(tt>10)
{
MS--;
PA=0xdb;
PB=0xf6;
PC=MS;
P1=MS;
tt=0;
}
if(MS<=0)
{
ET1=0;
ET0=1;
TR1=0;
TR0=1;
MS=31;
PC=0;
PA=0;
}
tt++;
beep=0;
TH1=-50000<<8;
TL1=-50000%256;
}
四、运行调试
仿真成功。
功能实现。
五、心得体会
通过这次实现我熟悉了51单片机汇编语言程序的编写和单片机设计仿真工具PROTEUS的使用。
首先要尽可能地采用结构化的程序设计方法,将功能模块化,由不同的模块完成不同的功能;PROTEUS不仅是模拟电路,数字电路,模/数混合电路的设计与仿真平台,更是目前世界上最先进,最完整的多种型号单片机系统的设计与仿真平台。
它真正实现了在计算机上完成从原理图设计,电路分析与仿真,单片机代码级调试与仿真,系统测试与功能验证到形成PCB的完整的电子设计,研发过程。
通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决现实问题的能力。
使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为一名合格的应用型人才打下良好的基础。
综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更深层次的理解和认识。
在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流得到解决。
还有交通灯是我们生活中非常常见的一种东西,对于我们学以致用的这种能力得到了很好锻炼,能够为我们以后的工作于学习打下基础。
通过合作,我们的合作意识得到加强。
合作能力得到提高。
在设计的过程中,我们用了分工与合作的方式,每个人互责一定的部分,同时在一定的阶段共同讨论,以解决分工中个人不能解决的问题。
在设计的过程中我们还得到了老师的帮助与意见。
在学习的过程中,不是每一个问题都能自己解决,向老师请教或向同学讨论是一个很好的方法.
最后,对帮助我的所有同学和老师表示衷心的感谢!
六、参考文献
1、张毅坤.单片微型计算机原理及应用,西安电子科技大学出版社1998
2、余锡存曹国华.单片机原理及接口技术[M].陕西:
西安电子科技大学出版社,2000.7
3、雷丽文等.微机原理与接口技术[M].北京:
电子工业出版社,1997.2
4、余发山王福忠单片机原理及应用技术[M].徐州:
中国矿业大学出版社2008.
5、蔡伟智LED道路交通灯的研制液晶与显示第20卷第五期
6、刘乐善微型计算机接口技术及应用[M].北京:
华中科技大学出版社2004.
7、李伯成.基于MCS-51单片机的嵌入式系统的设计[M].北京:
电子工业出版社,2004.
8、吴黎明,王桂棠,洪添胜,等.单片机原理及应用技术[M].北京:
科学出版社,2005.
9、韩克,柳秀山,等.电子技能与EDA技术[M].广州:
暨南大学出版社,2004.
七、附录
7.1器材清单
7.2程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineLED10x01
#defineLED20x02
#defineLED30x04
#defineLED40x08
#defineLED50x10
#defineLED60x20
#defineLED70x40
#defineLED80x80
#defineLED90x01
#defineLED100x02
#defineLED110x04
#defineLED120x08
#definePAXBYTE[0x0000]
#definePBXBYTE[0x0001]
#definePCXBYTE[0x0002]
#defineCOMXBYTE[0x0003]
sbitADC_CS=P3^1;
sbitADC_CLK=P3^3;
sbitADC_DI=P3^2;
sbitbeep=P3^0;
sbitbb=P3^5;
uchart=0,tt=0;
ucharMS=31;
uchari,j,k;
ucharflag=0;
unsignedchardata1,time;
voidDelayMs(uintms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
intADC_0832(void)
{
chari;
ADC_CS=0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
ADC_CLK=0;
ADC_DI=1;
ADC_CLK=1;
ADC_CLK=0;//1down
ADC_DI=1;
ADC_CLK=1;
ADC_CLK=0;//2down
ADC_DI=0;
ADC_CLK=1;
ADC_CLK=0;//3down
ADC_DI=1;
ADC_CLK=1;
ADC_CLK=0;//4down
for(i=8;i>0;i--)
{
data1<<=1;
ADC_CLK=0;
ADC_CLK=1;
if(ADC_DI==1)data1|=0x01;
ADC_DI=1;
}
ADC_CS=1;
returndata1;
}
voidmain()
{
TMOD=0x11;//T0方式1,T1方式2用于提供ADC脉冲
EA=1;
ET0=1;
ET1=1;
TR0=1;
TH0=-50000<<8;
TL0=-50000%256;
TH1=-50000<<8;
TL1=-50000%256;
COM=0x80;//PA,PB为输出,PC为输入
PC=0x30;
P1=0x00;
while
(1)
{
if(ADC_0832()>153)//判断是否有闯红灯
beep=0;
else
beep=1;
if(bb==0)
DelayMs
(1);//按键去抖
if(bb==0)
{
ET0=0;
ET1=1;
MS=10;
TR1=1;
PC=0x10;
P1=0x10;
beep=0;
}
}
}
voidtime0()interrupt1//中断服务程序,完成定时,显示
{
EA=0;
t++;
if(t==10)
{
MS--;
i=MS/10;
j=MS%10;
k=i*16+j;
PC=k;
P1=((30-MS)/10)*16+(30-MS)%10;
t=0;
}
elseif(MS<=0)
{
MS=31;
flag++;
}
if(flag==0)
{
PA=0xFF&(~LED1)&(~LED6)&(~LED7);//东西绿,南北红25MS
PB=0xFF&(~LED12);
if(MS<=5)
{
PA=0xFF&(~LED2)&(~LED6)&(~LED8);
PB=0xFF&(~LED12);//东西黄灯,南北红灯5MS
}
}
if(flag==1)
{
PA=0xFF&(~LED3)&(~LED4);//东西红,南北绿25ms
PB=0xFF&(~LED10)&(~LED9);
if(MS<=5)
{
PA=0xFF&(~LED3)&(~LED5);
PB=0xFF&(~LED9)&(~LED11);//东西红灯,南北黄灯5MS
}
}
if(flag>=2)
{flag=0;}
TH0=-50000<<8;
TL0=-50000%256;
EA=1;
}
voidtime1int(void)interrupt3//特殊情况处理
{
if(tt>10)
{
MS--;
PA=0xdb;
PB=0xf6;
PC=MS;
P1=MS;
tt=0;
}
if(MS<=0)
{
ET1=0;
ET0=1;
TR1=0;
TR0=1;
MS=31;
PC=0;
PA=0;
}
tt++;
beep=0;
TH1=-50000<<8;
TL1=-50000%256;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 胡健生课设