资源描述
单片机交通灯课程设计
15
2020年4月19日
文档仅供参考
单片机原理及应用
课程设计报告
系 别:物理系
专 业:电子信息工程
指导教师:
班 级: 1504
学 号:
姓 名:
.5
课程设计任务书
院(系): 专业:
学 号
学生姓名
班级
课程设计题目
交通灯控制系统
课程设计任务
设计任务:
1.交通灯控制系统能产生四个方向的交通信号;
2.每个方向交通灯由红、绿和黄三个灯组成,在实验板上交通灯用发光二极管代替;
3.交通灯点亮时间由设计者自行确定。
设计要求:
1 .分析设计要求,明确性能指标。必须仔细分析课题要求、性能、指标及应用环境等,广开思路,构思出各种总体方案,绘制结构框图。
2 .确定合理的总体方案。对各种方案进行比较,以电路的先进性、结构的繁简、成本的高低及制作的难易等方面作综合比较,并考虑器件的来源,敲定可行方案。
3 .设计各单元电路。总体方案化整为零,分解成若干子系统或单元电路,逐个设计。
4.组成系统。在一定幅面的图纸上合理布局,一般是按信号的流向,采用左进右出的规律摆放各电路,并标出必要的说明。
指导教师评语及成绩
成绩: 指导教师签字:
年 月 日
目 录
一、 绪 言 1
二、方案比较与论证 1
2.1 系统整体流程图 1
2.2 单片机的选择方案论证 1
2.3 89C51单片机引脚功能说明 2
2.4单片机最小系统 5
三、硬件电路设计 6
3.1 交通灯控制系统电路图 6
3.2 晶振电路的设计 7
3.3 LED灯电路的设计 7
3.4 主要元器件选择 8
四、 程序设计 8
五、 交通灯控制系统仿真 10
六、 结束语 11
七、 参考文献 11
一、 绪 言
近年来,随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,正在不断的应用到实际生活中,而且根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用单片机AT89C51为中心器件来设计交通灯控制器,实现了经过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
二、方案比较与论证
2.1 系统整体流程图
显示模块
晶振电路
AT89C51
单片机
显示模块
显示模块
电源电路
显示模块
2.2 单片机的选择方案论证
方案一:采用可编程逻辑期间CPLD 作为控制器。CPLD能够实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案
方案二:采用Atmel公司的单片机的可擦除只读存储器能够重复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
综合考虑,选择方案二,采用Atmel公司的AT89C51单片机作为控制器。
2.3 89C51单片机引脚功能说明
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它能够被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚 备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(计时器0外部输入)
P3.5 T1(计时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不论是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
2.4单片机最小系统
晶振电路
图7. 时钟电路
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率能够在1MHz-24MHz内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
三、硬件电路设计
3.1 交通灯控制系统电路图
3.2 晶振电路的设计
3.3 LED灯电路的设计
3.4 主要元器件选择
主要元器件选用型号和数量如表1所示:
序号
材料名称
规格型号
数量
元件代号
1
单片机
AT89C51
1
U1
2
晶振
12MHz
1
X1
3
电容
22PF
2
C1、C2
4
发光二极管
红、黄、绿
12
D1-D12
5
电阻
220Ω
13
R1-R13
6
电解电容器
10uF
1
C3
四、 程序设计
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RED_A=P0^0;
sbit YELLOW_A=P0^1;
sbit GREEN_A=P0^2;
sbit RED_B=P0^3;
sbit YELLOW_B=P0^4;
sbit GREEN_B=P0^5;
uchar Flash_Count = 0;
Operation_Type = 1;
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void Traffic_lignt()
{
switch(Operation_Type)
{
case 1:
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
DelayMS( );
Operation_Type = 2;
break;
case 2:
DelayMS(200);
YELLOW_A=~YELLOW_A;
if(++Flash_Count !=10)
return;
Flash_Count=0;
Operation_Type = 3;
break;
case 3:
RED_A=0;YELLOW_A=1;GREEN_A=1;
RED_B=1;YELLOW_B=1;GREEN_B=0;
DelayMS( );
Operation_Type = 4;
break;
case 4:
DelayMS(200);
YELLOW_B=~YELLOW_B;
if(++Flash_Count !=10)
return;
Flash_Count=0;
Operation_Type = 1;
break;
}
}
void main()
{
while(1)
{
Traffic_lignt();
}
}
五、 交通灯控制系统仿真
六、 结束语
经过本次试验我复习了单片机程序的编写,电路的连接以及程序的调试仿真,更加深刻的感受到了单片机的强大功能,经过实验也加强了动手操作的能力,以后我会更加努力的把本专业知识学好学精,争取为国家做到属于自己应做的奉献。
七、 参考文献
[1] 李全利 主编 《单片机原理及接口技术》 第二版
[2] 郭天祥 主编 《新概念C51单片机C语言教程》
[3] 百度文献《交通灯控制原理图》
[4] 百度文献《AT89C51单片机引脚功能说明》
展开阅读全文