单片机C语言交通灯设计说明

上传人:l**** 文档编号:137052817 上传时间:2020-07-04 格式:DOCX 页数:9 大小:148.10KB
返回 下载 相关 举报
单片机C语言交通灯设计说明_第1页
第1页 / 共9页
单片机C语言交通灯设计说明_第2页
第2页 / 共9页
单片机C语言交通灯设计说明_第3页
第3页 / 共9页
单片机C语言交通灯设计说明_第4页
第4页 / 共9页
单片机C语言交通灯设计说明_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《单片机C语言交通灯设计说明》由会员分享,可在线阅读,更多相关《单片机C语言交通灯设计说明(9页珍藏版)》请在金锄头文库上搜索。

1、附录一:系统总程序#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; /定义东西,南北红黄绿各自的时间初值分别为20,15,5秒 int ew_time; int ns_time_red=20; int ns_time_green=15; int ns_time_yellow=5; int ew_time_re

2、d=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_time,int ns_time) /显示子函数 char table10=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09; /共阳极数码显示0-9对应的字型码 char i,a4; a2=ns_time

3、%10; /南北时间个位数赋值给a2 a3=ns_time/10; /南北时间十位数赋值给a3 a0=ew_time%10; /东西时间个位数赋值给a0 a1=ew_time/10; /东西时间个位数赋值给a1 SM1=0;SM0=0; /串行口工作方式0设定 for(i=3;i=0;i-) /分别将4位数送到SBUF区域 SBUF=tableai; while(!TI) ; /判断是否发送完一个数据TI=0; /若发送完,0赋给TI /*主函数*/ void main(void) TMOD=0x01; /设置定时方式1TH0=0x3c; /定时初值50MSTL0=0xb0;TR0=1; /T

4、0溢出中断请求开启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_green+ns_time_yellow; if(!a) /a=0,东西显示19开始倒计时,南北14开始倒计时 ns_time=ew_time_red; ew_time=ns_time_green+ns_time_yellow; w

5、hile(!a) /a=0,进入循环 if(ew_time-50) while(!flag); display(ew_time,ew_time-5); /flag=1,显示东西19,南北14 P1=0xdd; /南北绿灯,东西红灯flag=0; if(ew_time=5) /东西时间0) /南北红灯,东西绿灯 while(!flag); display(ns_time-5,ns_time); /flag=0,显示南北19,东西14 delay(5000); /延时子函数调用 P1=0xeb; /南北红扥个,东西绿灯显示if(ns_time-5=0) /南北时间=5时南北红灯,东西黄灯闪烁 wh

6、ile(!flag); /flag=0南北显示19开始倒计时,东西14开始倒计时 flag=0; display(ns_time,ns_time); /东西,南北均从5开始倒计时显示 P1=0xfb; /南北红灯,东西黄灯一亮一灭显示 p1_3=p1_3; /东西黄灯P1.3位取反,以实现黄灯亮灭变化显示 delay(5000); /延时函数调用if(ns_time=0) /如果南北时间为0赋值a为0a=0; /*t0中断定时子函数*/ int t0int()interrupt 1 /t0中断(定时器0中断)子函数 TH0=0x3c; /定时50ms初值设定TL0=0xb0; point-;

7、/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 i,j; display(00,00); /显示器显示0000,不再进行倒计时delay(5000); for(i=0;i10;i+) /利用flag实现东西南北方向红灯均显示亮,对应东西南北方向车流均停止,处理紧急情况 for(j=0;j10;j+) delay(50000); while(!flag) P1=0xdb; flag=0; /*int1中断流量处理子函数*/ void int1(void) interrupt 2 /int1中断子函数,当紧急情况(救护车等)发生时,对应INT1按键调用此函数 int i,j; display(00,00); /显示器显示0000,不再进行倒计时 for(i=0;i10;i+) for(j=0;j10;j+) /利用flag实现主干道东西方向绿灯南北方向红灯

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号