基于51单片机的交通灯控制设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单⽚机的交通灯控制设计
课程设计任务书及成绩
课程名称
单⽚机课程设计
题⽬
交通灯控制设计
课程设计⽬标与任务、计划与进度安排:
实践教学要求与任务:
1、了解交通灯的基本⼯作原理;
2、⽤Proteus模拟实现交通灯控制;
3、⽤Keil C51编程实现上述功能;
4、⽤Keil与Proteus联调。

⼯作计划与进度安排:
17周查找相关资料。

18周详细设计。

19周程序测试,书写论⽂,进⾏答辩。

1 引⾔
交通事业蓬勃发展,交通流量年年增长,⼤、中、⼩城市的汽车、摩托车等各种车辆与⽇俱增,道路交通繁忙,经常有严重堵车现象,特别是在交叉⼝,机动车、⾮机动车、⾏⼈来往⾮常混乱,为了在叉⼝的各条⼲道实现合理的科学分流。

本⼈根据单⽚机具有物美价廉、功能强、使⽤⽅便灵活、可靠性⾼等特点,提出了⼀种⽤STC89c51单⽚机⾃动控制交通信号灯及时间显⽰的⽅法,同时给出了软硬件的实现⽅法,为交通指挥⾃动化提供了⼀种新的廉价⼿段,具有⼀定的推⼴意义。

本⽂介绍了控制基本原理以及控制的表现,同时也介绍了城市交通信息系统的设计⽬标, 开发途径及其系统结构与功能和数据地理编码、建库, 同时, 论述了系统中交通现状、交通管理、交通规划及背景信息查询模块的建造及应⽤。

介绍了⽤于城市交叉路⼝的三⾊程控交通信号时间显⽰器的研制⽅案,对其电源供电、发光⼆极管构成的负载结构、灯⾊时间检测都给出了精巧合理的优化结构,⼤幅度地提⾼了产品可靠性并降低了制造成本。

2 应⽤软件介绍
2.1 C语⾔介绍
C语⾔是于1972年由贝尔实验室的Dennis Ritchie在B语⾔的基础上开发出来的。

最初的C语⾔是作为UNIX操作系统的开发语⾔⽽被⼈们所认识。

此后,贝尔实验室对C语⾔进⾏了多次改进和版本的公布,C语⾔的优点才引起⼈们的普遍注意。

随着UNIX操作系统在各种机器上的⼴范使⽤,使C语⾔得到了迅速推⼴。

1978年由Brian W. Kernighan和Dennis M. Ritchit合著了《The C Programming Language》⼀书,该书对C语⾔作了详细的描述,这本书对C语⾔发展影响深远,并成为了后来C语⾔版本的基础,称之为标准C。

随后C语⾔在各种计算机上快速得以推⼴,并导致了许多C语⾔版本的出现。

2.2 Keil C51
Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单⽚机 C 语⾔软件开发系统,与汇编相⽐,C 语⾔在功能上、结构性、可读性、可维护性上有明显的优势,因⽽易学易⽤。

Keil 提供了包括 C 编译器、宏汇编、链接器、库管理和⼀个功能强⼤的仿真调试器等在内的完整开发⽅案,通过⼀个集成开发环境(µVision)将这些部分组合在⼀起。

运⾏ Keil软件需要 WIN98、NT、WIN2000、WINXP 等操作系统。

2.3 Proteus
Proteus 软件是英国 Lab Center Electronics 公司出版的 EDA ⼯具软件。

它不仅具有其它EDA ⼯具软件的仿真功能,还能仿真单⽚机及外围器件。

它是⽬前⽐较好的仿真单⽚机及外围器件的⼯具。

虽然⽬前国内推⼴刚起步,但已受到单⽚机爱好者、从事单⽚机教学的教师、致⼒于单⽚机开发应⽤的科技⼯作者的青睐。

Proteus 是英国著名的 EDA ⼯具(仿真软件),从原理图布图、代码调试到单⽚机与外围电路协同仿真,⼀键切换到 PCB 设计,真正实现了从概念到产品的完整设计。

是⽬前世界上唯⼀将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合⼀的设计平台,其处理器模型⽀持 8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086 和 MSP430 等,2010年⼜增加了 Cortex 和 DSP 系列处理器,并持续增加其他系列处理器模型。

在编译⽅⾯,它也⽀持 IAR、Keil 和 MATLAB 等多种编译器。

3 硬件资源介绍
3.1单⽚机简介
单⽚机(MCU)⼜称单⽚微控制器,它不是完成某⼀个逻辑功能的芯⽚,⽽是把⼀个计算机系统集成到⼀个芯⽚上。

概括的讲:⼀块芯⽚就成了⼀台计算机。

它的体积⼩、质量轻、价格便宜、为学习、应⽤和开发提供了便利条件。

同时,学习使⽤单⽚机是了解计算机原理与结构的最佳选择。

⽬前单⽚机渗透到我们⽣活的各个领域,⼏乎很难找到哪个领域没有单⽚机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的⽹络通讯与数据传输,⼯业⾃动化过程的实时控制和数据处理,⼴泛使⽤的各种智能 IC 卡,民⽤豪华轿车的安全保障系统,录像机、摄像机、全⾃动洗⾐机的控制,以及程控玩具、电⼦宠物等等,这些都离不开单⽚机。

更不⽤说⾃动控制领域的机器⼈、智能仪表、医疗器械了。

因此,单⽚机的学习、开发与应⽤将造就⼀批计算机应⽤与智能化控制的科学家、⼯程师。

3.2 89C51 简介
89C51 是⼀种带 4K 字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、⾼性能 CMOS8 位微处理器,俗称单⽚机。

单⽚机的可擦除只读存储器可以反复擦除 100 次。

该器件采⽤ ATMEL ⾼密度⾮易失存储器制造技术制造,与⼯业标准的 MCS-51 指令集和输出管脚相兼容。

由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯⽚中,ATMEL 的 89C51是⼀种⾼效微控制器,89C2051 是它的⼀种精简版本。

3.3 89C51 单⽚机的⽚内逻辑结构
3.4 89C51 硬件资源
(1)微处理器(CPU):⼀个 8 位 CPU。

(2)数据存储器(RAM):⽚内为 128B,⽚外最多可外扩 64KB。

(3)程序存储器(4KB Flash ROM):⽚内为 4KB,⽚外最多可外扩程序存储器⾄ 64KB。

(4)4 个 8 位可编程并⾏ I/O ⼝(P0、P1、P2、P3),1 个全双⼯的串⾏⼝。

(5)定时器/计数器:⽚内有 2 个 16 位的定时器/计数器,具有 4 种⼯作⽅式。

(6)中断系统:具有 5 个中断源,2 级中断优先级。

(7)特殊功能寄存器(SFR): 共有 21 个特殊功能寄存器,⽤于 CPU 对⽚内各功能部件进⾏管理、控制和监视。

(8)1 个看门狗定时器(WDT)。

3.5 89C51 的引脚图
(1)P0 ⼝:8 位,漏极开路的双向 I/O ⼝。

(2) P1 ⼝:8 位,准双向 I/O ⼝,具有内部上拉电阻。

(3)P2 ⼝:8 位,专为⽤户使⽤的准双向 I/O ⼝,具有内部上拉电阻。

(4)P3 ⼝:8 位,准双向 I/O ⼝,具有内部上拉电阻。

也可作为普通的 I/O ⼝使⽤。

除此之外,P3 ⼝还有第⼆功能的定义。

4 设计课题
交通灯控制设计:
1.了解⼀个⼗字路⼝交通灯基本⼯作原理,要求分主次⼲道,并加⼊倒计时功能
2.⽤Keil C51编程实现上述功能
3.⽤Proteus模拟实现⼗字路⼝交通灯控制电路。

4.⽤Keil与Proteus联调
5.⽅案设计
5.1交通灯四种通⾏模式及⾏车⽅向指⽰
按照简单的交通路⼝规则,有四种模式
1. 南北绿灯亮东西红灯亮
2. 南北黄灯闪东西红灯亮
3. 南北红灯亮东西绿灯亮
4. 南北红灯亮东西黄灯闪
5.2 交通灯控制系统
实⽤交通灯控制系统主要CPU控制模块为了、信号灯显⽰模块、倒计时显⽰模块等组成,如下图所⽰:
其中控制模块是最核⼼的部分,控制核⼼采⽤AT89C51单⽚机,利⽤AT89C51单⽚机内部定时器实现交通指⽰灯控制的计时功能,在正常情况下产⽣相应的控制信息控制倒计时显⽰电路,信号灯显⽰电路的正常运⾏。

信号灯显⽰模块采⽤四个集成交通指⽰灯来模拟红、黄、绿交通指⽰灯,⽤单⽚机的P1⼝控制发光⼆极管的亮灭状态。

倒计时显⽰模块的接⼝电路有静态显⽰和动态显⽰两种⽅式,由于动态显⽰⽅式在仿真软件中不易于查看,所以本次采⽤静态显⽰⽅式,这种⽅式优点是易于操作,缺点是浪费单⽚机接⼝资源。

为了倒计时更加准确,采⽤外加晶振电路⽅法实现其功能。

6硬件系统设计
6.1 信号灯显⽰模块
由于南北⽅向的信号灯始终是同⼀种状态,所以南北信号灯为⼀组,只需将对应的信号灯并联即可,东西⽅向同理。

6.2 倒计时显⽰模块
选取8个7段数码管分别模拟显⽰四个⽅向的倒计时,数码管采⽤共阴极接法。

为了提⾼P0、P2端⼝的电流输出能⼒,保证数码管亮度,保护端⼝引脚,在P0端⼝与数码管之间增加了74LS245芯⽚。

6.3 复位模块
此系统可以通过复位按键实现从新⼯作,电路图如图所⽰:
7软件系统设计
7.1 中断服务程序框图
7.2 主程序框图
7.3 程序代码
#include<reg51.h>
sbit g1=P1^0; //位定义
sbit r1=P1^1;
sbit y1=P1^2;
sbit g2=P1^3;
sbit r2=P1^4;
sbit y2=P1^5;
unsigned char f=0;
unsigned char nanbei_time=15; //定义南北的时间长度
unsigned char dongxi_time=11; //定义东西的时间长度
unsigned char m;
unsigned char code t[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F}; void init_timer0(void) //中断初始化函数
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
}
void display(unsigned char x)
{
unsigned char m,n;
m=x/10;
n=x%10;
P0=t[m];
P2=t[n];
}
void timer(void) interrupt 1 using 1 //中断服务函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
f++;
if(f==20)
{
f=0;
m--;
}
}
void main()
{
m=nanbei_time;
P1=0x00;
init_timer0();
while(1) {
do {
display(m);
g1=1;
r1=0;
g2=0;
r2=1;
}
while(m!=3);
do
{
if(m<=3)
{
y1=~y1;
r1=0;
g1=0;
r2=1;
g2=0;
}
display(m);
r1=0;
g2=0;
r2=1;
}
while(m!=3);
do
{
if(m<=3)
{
y1=~y1;r1=0;g1=0; r2=1;g2=0;
}
display(m);
}
while(m!=0);
if(m==0)
{ m = dongxi_time;
y1 = 0;
y2 = 0;
}
do{
display(m);
g1 = 0;
r1 = 1;
g2 = 1;
r2 = 0;
}
while(m!=3);
do{
if(m<=3)
{
r1=1,g1=0;
y2=~y2,r2=0,g2=0; }
display(m);
}while(m!=0);
if(m==0)
{
m=nanbei_time; y1=0;
y2=0;
}
}
}
8 电路仿真
开始仿真:
9设计总结
通过这次单⽚机课设,我不仅学到了许多新的知识,⽽且加深了我对以前学习的理论知识的掌握。

以前我们学的东西仅限于课本,对实实在在的应⽤还⽐较模糊,这次课程设计有利于同学们学习⽬的的明确性和主动性。

通过这次课程设计,我们知道了哪些东西是应该确实掌握的,在实践中填充我理论知识的不⾜,可以将理论很好地应⽤到实际当中去。

10参考⽂献
1.《单⽚机原理及接⼝技术》张毅刚⼈民邮电出版社
2.《单⽚机课程设计指导书》⽪⼤能北京理⼯⼤学出版社。

相关文档
最新文档