-
宁夏大学新华学院
课
程
考
核
课程名称
姓
名
学
号
专
业
微机接口
年
级
班
级
系
别
分
数
任课教师签字
批改日期
备
注
1
绪论
主要内容:
随着各种交通工具的发展和交通指
挥的需要,第一盏名副其实的
三色灯
(
红、黄、绿三种标 志
)
于
1918
年诞生。它是三色圆形四面投 p>
影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市
交通大为改善。黄色信号灯的发明者是我国的胡汝鼎,他怀着“科学
救国”
的抱负到美国深造,
在大发明家爱迪生为董事长的美国通用电
器公司任
职员。一天,他站在繁华的十字路口等待绿灯信号,当他看
到红灯而正要过去时,
一辆转弯的汽车呼地一声擦身而过,
吓了他一
身冷汗。回到宿舍
,他反复琢磨,终于想到在红、绿灯中间再加上一
个黄色信号灯,
提醒人 们注意危险。
他的建议立即得到有关方面的肯
定。于是红、黄、绿三色信
号灯即以一个完整的指挥信号家族,遍及
全世界陆、海、空交通领域了。
交通灯控制器设计主要功能是用单片机控制
LED
灯模拟 指示。
模拟东
西南北方向的十字路口交通灯信号控制情况。
以
89C51
单片机为核心
芯片,采用中断方式实现控
制。本模拟系统由单片机硬
/
软件系统,
两位
段数码管和
LED
灯显示系统。
和复位电路 控制电路等组成,
较
好的模拟了交通路面的控制。
2
基本要求:
利用单
片机的定时器产生秒信号,控制十字路口的红、绿、黄灯交替
点亮和熄灭,
并且用
4
只
LED
数码管显示十字路口两个方向 的剩余时间。
要求能用按键设置两个方向的通行时间(绿、红等点亮的时间)和暂
缓通行时间(黄灯点亮的时间)。
系统的工作应符合一般交通灯控制的要求。
参考文献:
[1]
张毅刚,彭喜元编著
.
《单片机原理与应用设计》
[2]
郭天祥编著
.
《新概念
51
单片机
C
语言教程:入门、提高、开发、
拓展全攻略》
[3]
编写本课程设计内容的 软件设计
(包含程序流程图和对程序注释)
。
< br>[4]
硬件实验部分可选用实验箱测试或
Proteus
仿 真软件实现。
3
目录
1
绪论
............. ......................................
2
1.1
主要内容
..........................................
2
1.2
基本要求
..........................................
3
1.3
参考文献
..........................................
3
2
设计方案简介
...........................................
5
3
系统需求分析
...........................................
6
4
单片机概述
. ............................................
6
5
本设计的简要概述
.......................................
7
6
本设计主要包括几个主要的元件
...........................
8
7
模块设计
........... ....................................
9
7.1
硬件原理图
........................................
9
7.2
软件系统结构图
.
...................................
10
7.3
软件流程图
.......................................
10
8
源程序
............ ....................................
12
9
主要函数说明
..........................................
33
对本设计的简单评述
......................................
34
附录
A ..................................................
35
附录
B ..................................................
35
4
设计方案简介:
交通在人们的日常生活中占有重要的地位,
随着人们社会活动的日益
< p>频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有
效管制
,对于疏导交通流量、提高道路通行能力,减少交通事故有明
显效果。近年来随着科技的
飞速发展,单片机的应用正在不断深入,
同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片
机应用系统中,
单片机往往作为一个 核心部件来使用,
仅单片机方面
知识是不够的,还应根据具体硬件结构软
硬件结合,加以完善。本设
计系统由单片机
I/O
口系统 、交通灯状态显示系统、复位电路等几大
部分组成。
系统具有基本的交通 灯功能,
较好的模拟实现了十字路口
可能出现的状况。
本 设计系统利用单片机的工作原理设计一个十字路
口交通信号灯,要求东、西、南、北四个
方向各有红黄绿色三个灯,
当东西方向亮绿灯时,南北方向红灯亮起;反之,如果南北方
向亮绿
灯,同时东西方向亮绿灯;绿灯亮时车辆行驶,红灯亮时车辆停止。
即在同一时间内保证只有两个对应方向的车辆可以行驶。
本设计系统
< br>软件上采用
Keil uVision3
、
Proteus
。使用
C51
编程,主要编写了主
程序、
中断子程序、延时子程序、数码管显示子程序、交通控制子程
序、矩阵键盘子程序。本设
计系统经过整机调试,实现了对十字路口
交通灯运作与设置的模拟。
5
系统需求分析:
本
设计系统单片机
89C51
为中心器件来设计交通灯控制器,
系统 实用
性强、操作简单、扩展性强、成本较低。本设计就是采用单片机模拟
十字路口交通灯的各种状态显示。
利用单片机完成交通信号灯控制器
的设计,
该交通信号灯控制器由一条主干道和一条支干道汇合成十字
路口,在每个入口处设置红、绿、黄三色信号灯,数码管显示剩余时
间。红灯亮禁止通行
,绿灯亮允许通行,黄灯亮则给行驶中的车辆有
时间停在禁行线外。用红、绿、黄发光二
极管作信号灯,
8
管共阴极
数码管显示剩余时间,矩阵
键盘用来设置交通灯的显示时间和状态。
单片机概述:
6
单片机(
Microco ntrollers
)是一种集成电路芯片,是采用超大规模
集成电路技
术把具有数据处理能力的中央处理器
CPU
、随机存储器
RAM
、只读存储器
ROM
、多种
I/O
口和中断系统、定时器
/
计数器等功
能
脉宽调制电路、
模拟多路转换器、
A/D
转换器等电路)
集成到一块硅片上构成的一个小而完善的微型计 算机
系统,
在工业控制领域广泛应用。
从上世纪
80
年代,
由当时的
4
位、
8
位单片机,发展到现在的
300M
的高速单片机。 p>
本设计的简要概述:
本设计系统利用单片机的
工作原理设计一个十字路口交通信号灯,
要
求东、西、南、北四个方向各
有红黄绿色三个灯,当东西方向亮绿灯
时,南北方向红灯亮起;反之,如果南北方向亮绿
灯,同时东西方向
亮绿灯;绿灯亮时车辆行驶,红灯亮时车辆停止。
说明:南北方向红绿灯时间:红灯
15s
绿灯
15s
黄灯
5s
东西方向红绿灯时间:红灯
20s
绿灯
10s
黄灯
5s
按键
1
:暂停
按键
2
:设置时间按钮
按键
3
:设置完成重启
按键
4:
测试交通灯各个设备的好坏
7
按键
5:
设置南北绿灯时间
+
按键
6:
设置南北黄灯时间
+
按键
7:
设置南北绿灯时间
-
保证交通合理,
绿灯最小值计时
3s
,
绿
灯不再减少
按键
8:
设置南北黄灯时间
-
按键
9:
设置东西绿灯时间
+
按键
10:
设置东西黄灯时间
+
按键
11:
设置东西绿灯时间
-
按键
12:
设置东西黄灯时间
- p>
按键
13:
南北紧急情况
:
南 北绿灯常亮东西红灯常亮
按键
14:
东 西紧急情况
:
东西绿灯常亮南北红灯常亮
本设计主要包括几个主要的元件:
89C51
:
8
AT89C51
是一种带
4K
字节
FLASH
存储器(
FP EROM
—
Flash
Programmable
and Erasable Read Only
Memory
)的低电压、高性能
CMOS 8
位微处理 器,俗称单片机。为本科单片机教学主要芯片
TMS320F2812
,
DSP
原理与应用技术。
AT89C51
单片机为 很多嵌入式控
制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列 如图所示。
现在
AT89S51/52
已经取代了
AT89C51/52
。
2.4*4
矩阵键盘:
在键盘
中按键数量较多时,
为了减少
I/O
口的占用,
通 常将按键排列
成矩阵形式。
在矩阵式键盘中,
每条水平线 和垂直线在交叉处不直接
连通,而是通过一个按键加以连接。这样,一个端口(如
P1
口)就
可以构成
4*4=16
个按键,比之直接将端口线用于键盘多出了一倍,
而且线数越多,区别越明显,比如再
多加一条线就可以构成
20
键的
键盘,而直接用端口线则
只能多出一键(
9
键)。由此可见,在需要
的键数比较多
时,采用矩阵法来做键盘是合理的。
K-8
:
一般是接在
51
单片机的
P0
口,因为
P0
< p>口内部没有上拉电阻,不能
输出高电平,所以要接上拉电阻。排阻就是好多电阻连载
一起,他们
有一个公共端。
9
硬件原理图:
Proteus
仿真绘制
软件系统结构图和软件流程图:
(
1
)系统结构图:
10
(
2
)流程图:
十字路口交通灯控制流程图
11
源程序:
#include
#define
uchar unsigned char
#define uint
unsigned int
uchar code table[]={
//
共阴极数码管码表
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0xC9,0xFF,0x40 };//
设置码
,
测试码
,
不计时码
void delay(uint x);//
延时函数
void display(uchar,uchar,uchar,uchar);
//
数码管显示函数
void
scankeys();
//
键盘函数
void traffic();
//
交通灯函数
uchar num,num1,num2,
//1
南北
2
东西
shi1,ge1,shi2,ge2,
12
value1,value2,//
南北绿灯时间 黄灯时间
value3,value4,//
东西绿灯 时间黄灯时间
count1,count2,flag1,flag2;
//
南北标记东西标记
南
北
设< /p>
置
标
记东西设置标记
void main()
{
TMOD=0x01;
/ /
设置定时器
0
位工作模式
1
(< /p>
M1,M0
位
0
,
1
)
TH0=(65536-45872)/256;
//
装 p>
初
值
11.0592M
晶
振
< p>定时
50ms
数为
45872
TL0=(65536-45872)%256;
EA=1;
//
开总中断
ET0=1;
//
开定时器
0
中断
TR0=1;
//
启动定时器
0
/*
初状态
*/
value1=15;
//
南北黄绿灯默认值
value2=5;
value3=10;
//
东西黄绿灯默认值
value4=5;
13
num1=value1; //
南北数码管先绿灯时间
num2=value2+value1;//
东西红灯时间
20s
P1=0x41 ;//
初始状态
:
东西红灯南北绿灯
20 15
while(1){
if(num==20) //
定时器
1s
{
num=0;
num1--;
num2--;
traffic();
shi1=num1/10;
ge1=num1%10;
shi2=num2/10;
ge2=num2%10;
}
scankeys();
display(shi1,ge1,shi2,ge2);
14
}
}
/*
***********************
****************
***
说明:
南北方向红绿灯时间:红灯
15s
绿灯
15s
黄灯
5s
东西方向红绿灯时间:红灯
20s
绿灯
10s
黄灯
5s
**
**************************************************
*******
*/
void
traffic()
{
if(num1==0){
//1
南北
count1++;
//
南北标志位
if(count1==1){
//
南北方向红灯
15s
倒计时结束
,
P1=0x42; //
东西方向仍为红
15
红
绿
灯
主
控
制
程 p>
序
灯,南北方向变为黄灯
num1=value2;
}
if(count1==2){
时结束,
P1=0x14;
方向变为红灯
num1=value3+value4;
为
15s
}
if(count1==3){
计时结束,
P1=0x41;
方向变为绿灯
num1=value1;
count1=0;
}
}
if(num2==0){
count2++;
if(count2==1){
16
//
黄灯时间为
5s
//
南北方向黄灯
5s
倒计
//
东西方向变为绿灯,南北
//
南北方法红灯时间
//
南北方向红灯
15s
倒
//
东西方向变为红灯,南北
//
南北方向绿灯时间
15s
//
重置南北标志位
//
2
东西
//
东西标志位
//
东西方向红灯
20s
倒计时结束,
P1=0x14;
方向变为红灯
num2=value3;
}
if(count2==2){
计时结束,
P1=0x24;
方向变为仍为红灯
num2=value4;
}
if(count2==3){
倒计时结束,
P1=0x41;
方向变为绿灯
num2=value1+value2;
count2=0;
}
}
}
17
//
东西方向变为绿灯,南北
//
东西方向绿灯时间
10s
//
东西方向绿灯
10s
倒
//
东西方向变为黄灯,南北
//
东西方向黄灯时间
5s
//
东西方向黄灯时间
5s
//
东西方向变为红灯,南北
//
东西方向红灯时间
20s
//
重置东西标志位