毕业
论文
政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载
:单片机C语言交通灯设计
毕业论文:单片机C语言交通灯设计
附录一系统总程序
include
初始变量设定
sbit p1_0 P10 定义P0 口的8 位
sbit p1_1 P11
sbit p1_2 P12
sbit p1_3 P13
sbit p1_4 P14
sbit p1_5 P15
sbit p0_0 P16
bit flag 0 定义显示状态控制位
int ns_time 定义东西南北红黄绿各自的时间初值分
别为20155 秒
int ew_time
int ns_time_red 20
int ns_time_green 15
int ns_time_yellow 5
int ew_time_red 20
int ew_time_green 15
int ew_time_yellow 5
char point 20 定时的控制次数初值设定
int a 0 南北东西两方向切换状态标志初值设定
延时子函数
delay int t 延时子函数
while t--
显示子函数
display int ew_timeint ns_time 显示子函数
char table[10] 0x030x9f0x250x0d0x990x490x410x1f0x010x09
共阳极数码显示
0-9 对应的字型码
char ia[4]
a[2] ns_time10 南北时间个位数赋值给a[2]
a[3] ns_time10 南北时间十位数赋值给a[3]
a[0] ew_time10 东西时间个位数赋值给a[0]
a[1] ew_time10 东西时间个位数赋值给a[1]
SM1 0SM0 0 串行口工作方式0 设定
for i 3i 0i-- 分别将4 位数送到SBUF 区域
SBUF table[a[i]]
while TI 判断是否发送完一个数据
TI 0 若发送完0 赋给TI
主函数
void main void
TMOD 0x01 设置定时方式1
TH0 0x3c 定时初值50MS
TL0 0xb0
TR0 1 T0 溢出中断请求开启
EA 1 总中断开启
ET0 1 T0 中断开启
EX0 1 外部中断INT0 开启
IT0 1 设置开关下降沿有效
EX1 1 外部中断INT0 开启
IT1 1 设置开关下降沿有效
ns_time ns_time_green 东西南北红黄绿灯时间赋值
ew_time ew_time_red
ew_time_red ns_time_greenns_time_yellow
if a a 0东西显示19 开始倒计时南北
14 开始倒计时
ns_time ew_time_red
ew_time ns_time_greenns_time_yellow
while a a 0进入循环
if ew_time-5 0
while flag
display ew_timeew_time-5 flag 1 显示东西19南北14
P1 0xdd 南北绿灯东西红灯
flag 0
if ew_time 5 东西时间 5 时南北黄灯闪烁东西红
灯
while flag
flag 0
display ns_timens_time 东西南北均从5 开始倒计时显示
P1 0xdf 东西红灯南北黄灯一亮一灭显示
p1_4 0
delay 5000
p1_0 p1_0 南北黄灯所在位
对应取反实现亮灭
变化
delay 5000
if ew_time 0 如果东西时间为0赋值a 为1以实现
方向转变
a 1
if a a 1南北显示 19 开始倒计时东西 14
开始倒计时
ns_time ew_time_red
ew_time ns_time_greenns_time_yellow
while a a 1进入循环
if ns_time-5 0 南北红灯东西绿灯
while flag
display ns_time-5ns_time flag 0 显示南北19东西14
delay 5000 延时子函数调用
P1 0xeb 南北红扥个东西绿灯显示
if ns_time-5 0 南北时间 5
时南北红灯东西黄灯闪烁
while flag flag 0 南北显示19 开始倒计时东西14 开
始倒计时
flag 0
display ns_timens_time 东西南北均从5 开始
倒计时显示
P1 0xfb 南北红灯东西黄灯一亮一灭显示
p1_3 p1_3 东西黄灯P13 位取反以实现黄灯亮灭
变化显示
delay 5000 延时函数调用
if ns_time 0 如果南北时间为0 赋值a 为0
a 0
t0 中断定时子函数
int t0int interrupt 1 t0 中断定时器0 中断子函数
TH0 0x3c 定时50ms 初值设定
TL0 0xb0
point-- 20 次T0 定时次数控制
if point 0 如果20 次到了改变显示的东西南北方向
的时间
flag 1
point 20
if ns_time 0
ns_time--
if ew_time 0
ew_time--
int0 中断紧急情况处理子函数
void int0 void interrupt 0 int0 中断子函数
当紧急情况救护车等发生
时对应INT0 按键调用此函数
int ij
display 0000 显示器显示0000不再进行倒计时
delay 5000
for i 0i 10i 利用flag 实现东西南北方向红灯均显示亮对
应东西南北方向车流均停止处理紧急情况
for j 0j 10j
delay 50000
while flag
P1 0xdb
flag 0
int1 中断流量处理子函数
void int1 void interrupt 2 int1 中断子函数
当紧急情况救护车等发生
时对应INT1 按键调用此函数
int ij
display 0000 显示器显示
0000不再进行倒计时
for i 0i 10i
for j 0j 10j 利用 flag 实现主干道东西方向绿灯南北方向
红灯
while flag
P1 0xeb
flag 0
系统总硬件电路仿真图
系统硬件电路总图包括复位电路时钟电路按键紧急处理电路LED 显示电路
数码管显
示电路模块对应各自电路功能如前面硬件电路设计部分进行说明
图 东西方向数码管显示19东西方向红灯亮南北方向显示14
南北方向绿灯亮
东西方向数码管从19南北方向从14 开始倒计时东西方向红灯亮禁止车
辆通行南
北方向绿灯亮车辆通行
图 东西方向数码管显示4东西方向红灯亮南北方向显示4
南北方向黄灯亮灭 当
南北方向计数到5 时东西方向数码管从4 南北方向从4 开始倒计时东西方
向红灯亮
禁止车辆通行南北方向黄灯亮灭变化处于状态变化等待状态
图 东西方向数码管显示14东西方向绿灯亮南北方向显示19
南北方向红灯亮
东西方向数码管从14南北方向从19 开始倒计时东西方向绿灯亮允许车
辆通行南
北方向红灯亮禁止车辆通行
图 东西方向数码管显示4东西方向黄灯亮灭变化南北方向显示4
南北方向红灯亮
当南北方向计数到5 时东西方向数码管从4 南北方向从4 开始倒计时东西
方向黄灯亮
灭变化处于等待转换的状态南北方向红灯亮禁止车辆通信
图 东西方向数码管显示0东西方向红灯亮南北方向显示0 南北方向红灯亮
当发生救护车到来等紧急情况发生时对应仿真时按键INT0 来模拟对应东
西南北方向
显示红等使得两方向车禁止通行处理紧急情况
图 东西方向数码管显示0东西方向绿灯亮南北方向显示0 南北方向红灯亮
假设东西方向为主干道车流量特别多南北方向为次干道对应控制东西方向
绿灯亮南
北方向红灯亮从而南北方向车禁止通行疏通交通保证正常进行