单片机控制的交通灯系统实验报告 本文关键词:交通灯,单片机,实验,控制,报告
单片机控制的交通灯系统实验报告 本文简介:1系统实验报告系统实验报告————基于基于51单片机的交通灯设计单片机的交通灯设计专业:XX学生姓名:xxXX学号:00000000000指导教师:wwwwwwwwwww2000年x月x日2目目录录1设计任务和性能指标设计任务和性能指标11.1设计任务11.2性能指标12设计方案设计方案22.1任务
单片机控制的交通灯系统实验报告 本文内容:
1
系统实验报告系统实验报告
————基于基于
51
单片机的交通灯设计单片机的交通灯设计
专
业:
XX
学
生
姓
名:
xx
XX
学
号:
00000000000
指
导
教
师:
wwwwwwwwwww
2000
年
x
月
x
日
2
目目
录录
1
设计任务和性能指标设计任务和性能指标1
1.1
设计任务1
1.2
性能指标1
2
设计方案设计方案2
2.1
任务分析2
2.2
方案设计2
3
系统硬件设计系统硬件设计3
3.1
单片机的最小系统3
3.2
电源电路4
3.3
数码管显示时间电路设计4
3.4
信号灯控制电路设计5
4
系统软件设计系统软件设计5
4.1
主程序设计5
5
调试及性能分析调试及性能分析6
5.1
调试分析6
5.1.1
软件调试.6
5.1.2
硬件调试.6
5.1.3
系统功能调试.6
6
心得体会心得体会6
参考文献参考文献8
附录附录
1
系统原理图系统原理图.9
附录附录
3
程序清单程序清单.10
附录附录
3
元器件清单元器件清单………………………………………………………………….14
1
1
设计任务和性能指标设计任务和性能指标
1.1
设计任务
利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道
和一条支干道汇合成十字路口,在每
个入口处设置红、绿、黄三色信号灯,
红灯亮禁止通行,绿灯亮允许通行,
黄灯亮则给行驶中的车辆有时间停在
禁行线外。用红、绿、黄发光二极管作
信号灯。如图上图所示。设东西向为
主干道,南北为支干道。
1.2
性能指标
1.
状态
1:仅亮灯,数码管不工作。
按下键
4,红/黄/绿三色灯交替亮:
红—〉(20
秒)黄(闪烁)—〉(5
秒)绿—〉(20
秒)
黄(闪烁)—〉(5
秒)红
2.
状态
2:灯和数码管相结合,模拟十字路口的交通灯
在以上功能的基础上数码管倒计时显示时间。
南
北
东
西
2
2
设计方案设计方案
2.1
任务分析
模拟交通灯控制器就是使用单片机来控制一些
LED
和数码管,模拟真实交通灯
的功能。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字
路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等
2.2
方案设计方案设计
根据设计的要求可知,系统的硬件原理框图如下图所示。
单单
片片
机机
键键盘盘
LED显显示示
三三色色指指示示灯灯
系统硬件框图
单片机选用
AT89S52,它与
8051
系列单片机全兼容,但其内部带有
4KB
的
FLASH
ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。南北向和东西向各采
用
2
个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。键盘系统可以根
据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的
IO
口
不够用时,可以考虑扩展
8255
或
8155
满足系统的要求。
2.
软件方案
根据设计要求,程序框图如图
1
所示。软件可由汇编语言完成,也可由
C
语言完成。
软件设计可以分为以下几个功能模块:
主程序:初始化及键盘监控。
计时程序模块:为定时器的中断服务子程序,完成
0.1
秒(或其他时间)和
1
秒的时间
定时。
显示程序模块:完成
60
个发光二极管(实际上只需驱动
30
个)和
8
个
LED
数码管的
显示驱动。
程序流程图见下一页:
3
程序流程图
3
系统硬件设计系统硬件设计
3.1
单片机的最小系统
ATMEL
公司生产的
AT89S52
单片机它是硬件电路的核心部分,时钟电路晶
振使用
12MHz,复位电路采取按键复位方式。具体连接图
3.1
和图
3.2。
单片机系统的时钟电路
开始
初始化
判断当前状态
调用正常
运行子程序
调用紧急
状态子程序
4
单片机系统的复位电路
3.2
电源电路设计
电源用
5V
直流变压器直接供电。
3.3
数码管显示电路
显示电路采用
8
个共阳数码管,P1
口作为数码管的输入,
P0.4、P0.5、P0.6
P0.7
分别控制东西南北四路数码管的位选端
C1,C2,C3,C4。
数码管显示电路(上图是共阴数码管)
5
3.4
信号灯控制电路
应急电路
4
系统软件设计系统软件设计
4.1
主程序设计
系统程序流程图
开始
参数初始化
显示子程序
中断处理
紧急中断子程序
6
5
调试及性能分析调试及性能分析
5.1
调试分析
5.1.1
软件调试软件调试
软件调试主要是利用
proteus
仿真软件完成电路的搭建,运行以发现设计中
的错误及时改正。
5.1.2
硬件调试硬件调试
硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及
测试结果如下:
(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导
线是否完全连接,对未连接的进行修复。
(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,
经测试,各连接不存在问题。
(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。
5.1.3
系统功能调试系统功能调试
通过软件仿真显示,系统基本能完成要求。
6
心得体会心得体会
这次系统实验历时两周的时间,在这实验过程里我们巩固了从编程、焊板
到调试的专业知识,逻辑思维和动手能力都得到了很大的提高。
对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验,
觉得这个比较简单而且做出的东西也比较直观,查阅了大量的资料,在老师的
讲解帮助下,我们对如何通过单片机控制交通灯这个题目,有了进一步的理解。
要解决的主要问题就是程序的设计了,虽然感觉交通灯程序没什么难的,就
是数码管倒计时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单,
设计时到了细节处,也出了不少问题,而且很难被检查出来,但是最后经过我
们的不断努力,还是写出来正确的代码。
上周终于拿到了
PCB
板,怀着紧张的心情一个器件一个器件的完成板子的
焊接,最后通过串口线把程序下载到板子上,但是板子却没有意料中的效果,
而且没一点现象,用万用表检查单片机的电压差不多为零,查出了问题所在松
了口气,后来在网上查资料知道原来变压器的接口那三个引脚,两个
GND
必
须短接,要不就不能正常供电,本以为短接后就正常了,但是数码管还是没反
应,二极管基本可以正常显示,这时候真是一种煎熬,差了很久找不到原因,
7
后来对照着原理图一个个的检查,最后发现原来是数码管封装错了,板子上的
数码管公共极是
3、8
两个引脚,但是原理图上封装的事
1、6,当时也没有注
意,以为只要是共阴管就没问题了,没想到软件本身就存在错误。
通过这次系统实验,对以前学过的知识进行了巩固,加深了理解,提高了
应用的能力,而且提高了我们的发现、分析、解决问题的能力,同时提高了大
家对专业的认识及兴趣,对于我们工科生来说,对以后就业很有帮助。
最后,尤其要感谢
xx
和
xx
老师的指导和帮助,我们才得以顺利完成这次
系统试验。
参考文献参考文献
[1]
邹丽新.单片微型机原理及应用苏州大学出版社,2006.12
[2]
彭伟.单片机
C
语言程序设计实训
100
例.北京:电子工业出版社,2009。8
附录附录
1
系统原理图系统原理图
1234
A
B
C
D
4321
D
C
B
A
EA/VP
31
X1
19
X2
18
RESET
9
RD
17
WR
16
INT0
12
INT1
13
T0
14
T1
15
P10
1
P11
2
P12
3
P13
4
P14
5
P15
6
P16
7
P17
8
P00
39
P01
38
P02
37
P03
36
P04
35
P05
34
P06
33
P07
32
P20
21
P21
22
P22
23
P23
24
P24
25
P25
26
P26
27
P27
28
PSEN
29
ALE/P
30
TXD
11
RXD
10
U1
AT89S51
XTAL1
11.0592
C5
20p
C620p
VCC
2
3
4
5
6
7
8
9
1
RP310K??×è
2
3
4
5
6
7
8
9
1
RP4
10K??×è
2
3
4
5
6
7
8
9
1
RP1
10K??×èVCC
VCC
C12
22u
R10
1K
VCC
VCC
C7
470U
C9
0.1U
1
2
3
J3
3D?2?×ù
RST
Vin
1
GND
2
Vout
3
U5
LM7805
SCK
MOSI
MISO
AC
AC
+
-
D1
??á÷??
K1
°′?ü
K2
°′?ü
K3
°′?ü
K4
°′?ü
R1
1K
LEDPower
oìμ?
KEYRESET
°′?ü
KEYAKEYBKEYCKEYD
NUMA
NUMB
NUMC
NUMD
LED1
LED2
LED3
LED4
L1
L2
L3
L4
L5
L6
DOT
KEYA
KEYB
KEYC
KEYD
R2
1K
LED1
?ì
Q1
9013
VCC
L1
R3
1K
LED2
oìμ?
Q2
9013L2
R4
1K
LED3
??
Q3
9013L3
R5
1K
LED4
?ì
Q4
9013L4
R6
1K
LED5
oìμ?
Q5
9013L5
R7
1K
LED6
??
Q6
9013L6
e
d
vc1
c
dp
e
d
vc2
c
dp
e
d
vc3
c
dp
e
d
vc4
c
dp
f
g
a
b
f
g
a
b
f
g
a
b
f
g
a
b
LT
3
BI/RBO
4
RBI
5
g
14
f
15
e
9
d
10
c
11
b
12
a
13
D
6
C
2
B
1
A
7
U2
74LS47
g
f
e
d
c
b
a
NUMA
NUMB
NUMC
NUMD
R20
150
R21
150
R22
150
R23
150
R24
150
R25
150
R26
150
Q7
9013
VCC
LED1
Q8
9013LED2
Q9
9013LED3
Q10
9013LED4
vc1vc2vc3vc4
R27
150
dpDOT
RXD
TXD
1
2
3
4
5
J2
5D?2?×ù
VCC
GND
MOSI
MISO
SCK
1
2
3
4
5
J1
5D?2?×ù
VCC
GND
GND
RXD
TXD
a
bf
c
g
d
e
DPY
e
1
d
2
com
3
c
4
dp
5
b
6
a
7
8
g
9
f
10
DS1
êy??1üa
bf
c
g
d
e
DPY
e
1
d
2
com
3
c
4
dp
5
b
6
a
7
8
g
9
f
10
DS2
êy??1ü
a
bf
c
g
d
e
DPY
e
1
d
2
com
3
c
4
dp
5
b
6
a
7
8
g
9
f
10
DS3
êy??1üa
bf
c
g
d
e
DPY
e
1
d
2
com
3
c
4
dp
5
b
6
a
7
8
g
9
f
10
DS4
êy??1ü
系统原理图
8
附录附录
2
程序清单程序清单
;------------------------------------
;程序实现功能
;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道
在内的道路交通状态。
;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。
;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。
#include
#define
uchar
unsigned
char
#define
uint
unsigned
int
sbit
key1=P1^0;
sbit
key2=P1^1;
sbit
key3=P1^2;
sbit
key4=P1^3;
sbit
smgwe1=P0^4;
sbit
smgwe2=P0^5;
sbit
smgwe3=P0^6;
sbit
smgwe4=P0^7;
sbit
smgdot=P2^7;
sbit
south_green=P2^0;
sbit
south_red=P2^1;
sbit
south_yellow=P2^2;
sbit
east_green=P2^3;
sbit
east_red=P2^4;
sbit
east_yellow=P2^5;
sbit
num_a=P0^0;
sbit
num_b=P0^1;
sbit
num_c=P0^2;
sbit
num_d=P0^3;
uchar
count;
uchar
type=1;
uchar
num;
uchar
south_dispnum=10,east_dispnum=5;
void
delay_ms(uint
z)
{
uchar
x,y;
9
for(x=0;xz;x++)
for(y=0;y123;y++);
}
void
timer0_init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
}
void
display(uchar
south_dispnum,uchar
east_dispnum)
{
uchar
south_dispnum1,south_dispnum2;
uchar
east_dispnum1,east_dispnum2;
south_dispnum1=south_dispnum/10;
south_dispnum2=south_dispnum%10;
east_dispnum1=east_dispnum/10;
east_dispnum2=east_dispnum%10;
smgwe1=1;
smgwe2=0;
smgwe3=0;
smgwe4=0;
num_d=south_dispnum1/8;
num_c=south_dispnum1%8/4;
num_b=south_dispnum1%4/2;
num_a=south_dispnum1%2;
delay_ms(1);
smgwe1=0;
smgwe2=1;
smgwe3=0;
smgwe4=0;
num_d=south_dispnum2/8;
num_c=south_dispnum2%8/4;
num_b=south_dispnum2%4/2;
num_a=south_dispnum2%2;
delay_ms(1);
smgwe1=0;
10
smgwe2=0;
smgwe3=1;
smgwe4=0;
num_d=east_dispnum1/8;
num_c=east_dispnum1%8/4;
num_b=east_dispnum1%4/2;
num_a=east_dispnum1%2;
delay_ms(1);
smgwe1=0;
smgwe2=0;
smgwe3=0;
smgwe4=1;
num_d=east_dispnum2/8;
num_c=east_dispnum2%8/4;
num_b=east_dispnum2%4/2;
num_a=east_dispnum2%2;
delay_ms(1);
}
void
traffic_light()
{
switch(type)
{
case
1:south_red=1;
south_green=0;
south_yellow=0;
east_red=0;
east_green=1;
east_yellow=0;
display(south_dispnum,east_dispnum);
if(east_dispnum==0)
{
east_dispnum=5;
south_dispnum=5;
type=2;
}
break;
case
2:south_red=1;
south_green=0;
//
south_yellow=0;
11
east_red=0;
east_green=0;
//
east_yellow=0;
display(south_dispnum,east_dispnum);
if(east_dispnum==0)
{
south_dispnum=5;
east_dispnum=10;
type=3;
}
break;
case
3:south_red=0;
south_green=1;
south_yellow=0;
east_red=1;
east_green=0;
east_yellow=0;
display(south_dispnum,east_dispnum);
if(south_dispnum==0)
{
south_dispnum=5;
east_dispnum=5;
type=4;
}
break;
case
4:south_red=0;
south_green=0;
//
south_yellow=0;
east_red=1;
east_green=0;
//
east_yellow=0;
display(south_dispnum,east_dispnum);
if(east_dispnum==0)
{
south_dispnum=10;
east_dispnum=5;
type=1;
}
break;
}
12
}
void
main()
{
timer0_init();
while(1)
{
traffic_light();
}
}
void
timer0_isr()
interrupt
1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==5)
{
if(type==2)
{
east_yellow=!east_yellow;
}
if(type==4)
{
south_yellow=!south_yellow;
}
}
if(count==20)
{
count=0;
south_dispnum--;
east_dispnum--;
}
}
13
附录附录
1
元器件清单元器件清单
数量
器件类型
原理图符号
封装
Used
Part
Type
Designator
Footprint
Description
====
===================
==========
===========
==============
排阻
3
10K
排阻
RP1
RP3
SIP9
RP4
====
===================
==========
===========
==============
电阻(1/8w)
8
150
R20
R21
AXIAL0.4
R22
R23
R24
R25
R26
R27
8
1K
R1
R2
R3
AXIAL0.4
R4
R5
R6
R7
R10
====
===================
==========
===========
==============
电容(耐压
16V)
1
0.1u
C9
RAD0.2
2
20p
C5
C6
RAD0.2
1
22u
C12
RB.2/.4
1
470u
C7
RB.2/.4
====
===================
==========
===========
==============
晶振
1
11.0592M
XTAL1
XTAL1
====
===================
==========
===========
==============
三极管
10
9013
Q1
Q2
Q3
TO-92C
NPN
Transistor
Q4
Q5
Q6
Q7
Q8
Q9
Q10
====
===================
==========
===========
==============
集成块
1
74LS47
U2
DIP16
1
AT89S51
U1
DIP40
1
LM7805
U5
TO-220S
====
===================
==========
===========
==============
14
按键(四脚扁平,脚距
4.57*7.1)
5
按键
K1
K2
K3
KEY6x6
K4
KEYRESET
====
===================
==========
===========
==============
发光二极管
3
红灯
LED2
LED5
LED
LEDPower
2
黄
LED3
LED6
LED
2
绿
LED1
LED4
LED
====
===================
==========
===========
==============
0.8“数码管(带小数点)
4
数码管
DS1
DS2
LED08
DS3
DS4
====
===================
==========
===========
==============
1
整流桥
D1
BRIDGE_C
====
===================
==========
===========
==============
9V
变压器