单片机交通灯控制器.docx

上传人:b****5 文档编号:2902740 上传时间:2022-11-16 格式:DOCX 页数:14 大小:101.97KB
下载 相关 举报
单片机交通灯控制器.docx_第1页
第1页 / 共14页
单片机交通灯控制器.docx_第2页
第2页 / 共14页
单片机交通灯控制器.docx_第3页
第3页 / 共14页
单片机交通灯控制器.docx_第4页
第4页 / 共14页
单片机交通灯控制器.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机交通灯控制器.docx

《单片机交通灯控制器.docx》由会员分享,可在线阅读,更多相关《单片机交通灯控制器.docx(14页珍藏版)》请在冰豆网上搜索。

单片机交通灯控制器.docx

单片机交通灯控制器

信息与电气工程学院

课程设计说明书

(2014/2015学年第二学期)

 

课程名称:

单片机课程设计

题目:

交通灯控制器

专业班级:

自动化1202

学生姓名:

魏洪宽

学号:

120410213

指导教师:

苗敬利王书强赵奇王巍

设计周数:

2周

设计成绩:

2015年6月26日

信息与电气工程学院

单片机应用课程设计任务书

一、题目:

交通灯控制器

二、课程设计班级及小组成员:

自动化1202,魏洪宽、董汝津、王阳阳

三、课程设计起止时间:

2015.6.15~2015.6.26

四、原始数据及主要任务:

(1)A道和B上均有车辆要求通过时,A、B道轮流放行。

A道放行1分钟,B道放行1分钟,其中黄灯亮3秒。

(2)A道和B道相应的数码管显示秒数。

(3)有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K1开关模拟。

五、技术要求:

十字路口的四组红、绿交通灯中A道上的两组同色灯蝉联在一起,B道上的两组灯也彼此互联,受MCS-51单片机的I/O口控制,实验时皆由发光二极管代替,紧急车请求通过的信号由人工控制(K1),以中断方式输入单片机。

 

学生(签字):

指导教师(签字):

系主任(签字):

院长(签字):

摘要

随着人们生活水平的提高,交通工具大量的出现在日常生活中,交通事故频发,而交通灯的指示信号能有效减少事故的发生。

今年来随着科技发展,单片机的应用不断深入到人们的生活中,以核心处理器的位置来控制着日常生活中的各种电器设施。

本系统采用单片机AT89C51位中心器件设计交通灯控制器,由单片机的I/O口扩展系统,交通状态显示系统、LED数码显示系统、复位电路,等几大部分组成。

系统除基本的交通功能之外,还具有倒计时、紧急按钮等功能,较好的模拟实现了十字路口可能出现的状况。

关键词:

交通灯、74HC373、调试、计时

 

1课程设计目的

通过单片机课程设计的综合训练,培养学生独立思考、分析问题、解决问题的能力,培养工程实践能力、创新能力和综合设计能力。

根据所学单片机的理论,对简易温度计的原理图、编程、仿真等进行设计。

2课程设计的内容和要求

(1)设计并制作一个以单片机MCS-51为核心的交通灯系统。

(2)十字路口的四组红、绿交通灯中A道上的两组同色灯蝉联一起,B道上的两组灯也彼此互联,受MCS-51单片机的I/O口控制,实验时皆由发光二极管替代,紧急车请求通过的信号由人工控制(K1),以中断方式输入单片机。

(3)确定总体设计方案。

(4)设计显示电路。

(5)合理分配地址,编写系统程序。

(6)利用Protues设计电路原理图并进行仿真。

3课程设计报告的内容

3.1总体设计方案

首先画出仿真原理图,确定好控制红绿灯和计时显示电路的输出口,然后根据分好的地址编写程序。

本设计选用AT89C51作为处理器,用51单片机P0口输出段码,由锁存器74HC373驱动共阳极数码管显示计时;用P1口输出片选码,通过三极管,连接到数码管片选引脚,使数码管能正确显示两位数的计时;选择P2口,通过输出高低电平,来驱动三色LED灯的显示,模拟路口红绿灯;选择P3.2引脚连接一个开关,作为紧急按键(通过外部中断实现)。

3.2所用器件及功能介绍

3.2.1元器件清单

 

表3.1元器件清单表

型号

功能

数量

单片机MCS-51

控制作用

1个

74HC373

锁存作用

1个

七段LED

显示定时时间

4个

LED灯

交通灯

6个

电阻10K

上拉电阻

8个

电阻330

保护电阻

6个

电阻100

保护电阻

8个

三极管NPN

驱动作用

4个

单刀单掷开关

中断

1个

3.2.2所用器件及功能介绍

(1)MCS-51单片机

图3.1MCS-51单片机

单片机芯片MCS-51为40引脚双列直插式封装。

其各个引脚功能介绍如下,芯片MCS-51的引脚排列和逻辑符号如图4-2所示。

各引脚分别为:

(1)VCC:

供电电压

(2)GND:

接地

(3)P0口

P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。

当P1口的管脚写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。

(4)P1口

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流P1口管脚写入“1”后,电位被内部上拉为高可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

(5)P2口

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。

当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。

作为输入时P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

(6)P3口

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,同时P3口同时为闪烁编程和编程校验接收一些控制信号。

(7)RST:

复位输入端。

当振荡器复位时,要保持RST两个机器周期的高电平时间。

(8)PSEN

外部程序存储器的选通信号。

在由外部程序存储器取址期间,每个机器周期PSEN两次有效。

但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

(9)EA/VPP

当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

(2)74HC373

图3.274HC373

当三态允许控制端OE为低电平时,Q0-Q7为正常逻辑状态,可用74HC373来驱动负载或总线。

当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。

当锁存允许端LE为高电平时,O随数据D而变。

当LE为低电平时,O被锁存在已建立的数据电平。

(3)七段LED

图3.3七段LED管脚图

七段发光二极管(LED)数码管的一个LED数码管可用来显示一位0~9十进制数和一个小数点。

小型数码管(0.5寸和0.36寸)每段发光二极管的正向压降,随显示光(通常为红、绿、黄、橙色)的颜色不同略有差别,通常约为2~2.5V,每个发光二极管的点亮电流在5~10mA。

LED数码管要显示BCD码所表示的十进制数字就需要有一个专门的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。

3.3单元电路设计

3.3.1最小系统

在单片机系统中通过在引脚18和19接晶振,以及电容构成最小系统,其中晶振的频率为12MHZ,电容的作用是起到滤波作用。

其电路图如下所示:

图3.4最小系统

3.3.2复位电路

在原理图中通过电阻电容构成复位电路,采用的是自动复位,其电路图如下所示:

图3.5复位电路

3.3.3三色灯显示电路

三色灯选择共阳极接法,当P2响应接口输出低电平,则驱动相应的数码管点亮。

图3.6三色显示电路

3.3.4计时显示电路

P0口输出段码通过锁存器74HC373驱动数码管点亮,P1口输出片选来控制每组段码显示的顺序以及显示时间,完成两位数的计时。

图3.7计时显示电路

3.4总原理图

图3.8原理图

3.5调试

准备工作完成以后接下来的就是进行调试,让电路板按任务书要求显示。

在第一周的周五下午我们调试了一个下午出现了很多问题,例如:

起初是数码管都不亮,后来检查发现P0口输出未接上拉电阻,使得74HC373的输入电流过小不能驱动芯片,后来加上上拉电阻数码管能正常显示了。

但是其中有一个数码管不能正常显示,后来经过调试,修改段码,检查焊点,检查焊接引脚等等方式那个数码管始终不能正常显示,最后用万用表检测发现那个数码管段码d与片选引脚短路,但是外部焊接并没有错误,因此认为那个数码管是坏的,内部电路发生了短路。

最终,经过讨论我们将两组数码管计时减到一组,因为数码管计时两组时间都一致,所以一组计时并不影响此交通灯的功能。

还有紧急按钮开始按下的时候,计数数码管显示乱码,恢复按钮显示不能回到正常状态,调试时检查程序,发现此问题是因为程序编写时没有注意到中断优先级别的问题,设置外部中断0为高优先级,成功解决了这个问题。

总的来说这次的过程还是很艰辛的,不过收获颇多。

4软件设计

#include

//--定义使用的IO口--//

#defineWHKP0

#defineDRJP1

#defineWYYP2

//上下人行道各灯//

sbitRED11=P2^2;

sbitYELLOW11=P2^3;

sbitGREEN11=P2^4;

//左右人行道各灯//

sbitRED01=P2^5;

sbitYELLOW01=P2^6;

sbitGREEN01=P2^7;

//--定义全局变量--//

unsignedcharcodeDIG_PLACE[8]={

0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位选控制查表的方法控制//

unsignedcharcodeDIG_CODE[17]={

0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90};

//0、1、2、3、4、5、6、7、8、9的显示码//

unsignedcharDisplayData[8];

//用来存放要显示的8位数的值//

unsignedcharTime,Second;//用来存放定时时间//

voidDigDisplay();//动态显示函数//

voidTimer0Cofig(void);

voidISR0(void)interrupt0

{//外部中断使两车道均为红灯亮//

WYY=0X0DB;

}

voidmain(void)

{

Second=1;

Timer0Cofig();

 

while

(1)

{

if(Second==120)

{

Second=1;

}

//上下路通行,60秒//

if(Second<61)

{

DisplayData[0]=0xff;

DisplayData[1]=0xff;

DisplayData[2]=DIG_CODE[(60-Second)%100/10];

DisplayData[3]=DIG_CODE[(60-Second)%10];

DisplayData[4]=0xff;

Display

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1