51单片机交通灯程序设计

合集下载

51单片机交通灯系统设计

51单片机交通灯系统设计

计算机控制系统课程设计题目:单片机交通信号灯控制系统设计学院: 信息科学与工程学院专业: 自动化学号:学生姓名:指导教师:日期:单片机交通信号灯控制系统设计一、设计目的与意义1、通过用51单片机控制交通灯的课程设计,熟练51单片机的编程方法。

2、通过本课程的设计,进一步掌握I/O接口设计和常用程序设计技术,掌握单片机控制系统的设计的一般方法,能根据系统设计要求,完成应用系统的硬件和软件设计。

3、通过本课程设计将理论用于实践,提高动手能力。

二、设计内容和要求交通灯控制系统控制东西、南北两个方向信号灯,每个方向设置两组红绿灯,红灯禁止通行,绿灯允许通行。

每个方向的通行时间各由两位LED数码显示,通行时间可设置,绿灯向红灯转换前绿灯闪烁三次共3秒钟,红灯向绿灯过渡时不闪烁。

系统上电时的初始状态为东西、南北两个方向均为红灯,持续2秒后为东西方向绿灯,南北方向红灯,之后以定时方式控制两个方向的汽车轮流通行。

三、常见交通信号灯系统概述:交通信号灯是交通信号中的重要组成部分,是道路交通的基本语言。

交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。

绿灯信号是准许通行信号。

按《交通安全法实施条例》规定:绿灯亮时,准许车辆、行人通行,但转弯的车辆不准妨碍被放行的直行车辆和行人通行。

红灯信号是绝对禁止通行信号。

红灯亮时,禁止车辆通行。

右转弯车辆在不妨碍被放行的车辆和行人通行的情况下,可以通行。

红灯信号是带有强制意义的禁行信号,遇此信号时,被禁行车辆须停在停止线以外,被禁行的行人须在人行道边等候放行;机动车等候放行时,不准熄火,不准开车门,各种车辆驾驶员不准离开车辆;自行车左转弯不准推车从路口外边绕行,直行不准用右转弯方法绕行。

黄灯亮时,已越过停止线的车辆,可以继续通行。

黄灯信号的含义介于绿灯信号和红灯信号之间,既有不准通行的一面,又有准许通行的一面。

黄灯亮时,警告驾驶人和行人通行时间已经结束,马上就要转换为红灯,应将车停在停止线后面,行人也不要进入人行横道。

51单片机控制交通灯设计

51单片机控制交通灯设计

1、引言 (3)2、单片机概述 (3)3、芯片简介 (4)3.1 MSC-51芯片简介 (4)3.2 8255芯片简介 (7)3.3 74LS373简介 (8)4、系统硬件设计 (9)4.1交通管理的方案论证 (9)4.2系统硬件设计 (9)4.2.1 系统总框图如下 (9)4.2.2 交通灯硬件线路图 (10)4.2.3 系统工作原理 (12)5、控制器的软件设计 (12)5.1每秒钟的设定 (12)5.2计数器硬件延时 (12)5.2.1 计数器初值计算 (12)5.2.2 计算公式 (12)5.2.3 1秒的方法 (13)5.2.4相应程序代码 (13)5.3 软件延时 (14)5.4 时间及信号灯的显示 (14)5.4.1 8051并行口的扩展 (14)5.4.2显示原理 (15)5.4.3 8255PA口输出信号接信号灯 (15)5.4.4 8255输出信号与数码管的连接 (15)5.4.5 8255与8051的连接 (16)5.5 程序设计 (16)5.5.1流程图如图所示 (16)5.5.2 程序源代码 (17)结论 (22)参考文献 (23)基于单片机的交通灯设计摘要:近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。

交通信号灯控制方式很多。

本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。

单片机c语言程序设计---C51-交通灯实验报告

单片机c语言程序设计---C51-交通灯实验报告

单片机c语言程序设计---C51-交通灯实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: C51-交通灯实验一、实验目的和要求1.熟悉单片机的硬件结构及其工作原理2.掌握单片机的C51编程二、实验内容和原理(1)硬件设计使用P1端口连接VD1、VD2、VD3,模拟路口东面的红、黄、绿灯;P0端口连接VD9、VD10、VD11,模拟路口西面的红、黄、绿灯;P3端口连接VD17、VD18、VD19,模拟路口南面的红、黄、绿灯;P2端口连接VD25、VD26、VD27,模拟路口北面的红、黄、绿灯。

路口红绿灯的显示规律为:①南面和北面显示红灯(即VD17和VD25为红灯)时,东面和西面显示绿灯(即VD3和VD11为绿灯)。

②南面和北面,东面和西面都变成黄灯。

③南面和北面显示绿灯,东面和西面显示红灯④南面和北面,东面和西面都变成黄灯,然后再从①进行循环(需注意:此处设置的黄灯显示时长应短于红灯或绿灯的显示时长)(2)protues仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

三、主要仪器设备四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

五、实验结果与分析void S_N(void){VD1=0;VD9=0;VD19=0;VD27=0;Delay(1000);VD1=1;VD9=1;VD19=1;VD27=1;}int main (void) {while(1){E_W();NOT();S_N();NOT();}}六、讨论和心得。

51单片机用C语言实现交通灯_红绿灯_源程序

51单片机用C语言实现交通灯_红绿灯_源程序

c o d eu n s i g n e dc h a rt a b [ ] = { 0 x 3 f , 0 x 0 6 , 0 x 5 b , 0 x 4 f , 0 x 6 6 , 0 x 6 d , 0 x 7 d , 0 x 0 7 , 0 x 7 f , 0 x 6 f } ; / / 共阴数码管 0 9 u n s i g n e dc h a rD i s _ S h i w e i ; / / 定义十位 u n s i g n e dc h a rD i s _ G e w e i ;/ / 定 g n e di n tc n t ) { w h i l e ( c n t ) ; } m a i n ( ) { T M O D| = 0 x 0 1 ; / / 定时器设置 1 0 m si n1 2 Mc r y s t a l 定时器 0 ,工作方式 1 ,1 6 位定时器 T H 0 = 0 x d 8 ; / / 6 5 5 3 5 1 0 0 0 0 = 5 5 5 3 5 = D 8 F 0 (十六进制) T L 0 = 0 x f 0 ; I E =0 x 8 2 ;/ / 中断控制,E A = 1 开总中断,E T 0 = 1 :定时器 0 中断允许 T R 0 = 1 ; / / 开定时器 0 中断 P 1 = 0 x f c ; / / 红灯亮,根据红黄绿接灯的顺序。 r e d= 1 ; w h i l e ( 1 ) { P 0 = D i s _ S h i w e i ; / / 显示十位,这里实现用 8 位数码管,即左 1 位 P 2 = 0 ; d e l a y ( 3 0 0 ) ; / / 短暂延时 P 0 = D i s _ G e w e i ;/ / 显示个位,左数,2 位 P 2 = 1 ;

51单片机红绿灯设计报告

51单片机红绿灯设计报告

51单片机红绿灯设计报告一、引言红绿灯是城市道路交通管理中非常重要的设备,它能够有效地控制车辆和行人的通行,维护交通秩序,提高交通效率。

本报告将介绍一种基于51单片机的红绿灯设计,利用单片机的强大功能,实现了智能化、自动化的红绿灯控制系统。

二、设计原理1.硬件设计本设计使用了51单片机,通过其IO口控制LED灯的亮灭。

红绿灯的控制通过三个IO口分别连接到红、黄、绿三个LED灯,通过控制这三个IO口的电平,实现红绿灯的切换。

2.软件设计设计中使用了C语言进行程序开发。

程序通过设置IO口的状态和延时函数,控制红绿灯的切换和延时时间。

三、电路设计1.电路图电路图给出了51单片机、LED灯和电流限制电阻之间的连接关系。

单片机的P1口连接到红、黄、绿三个LED灯上,通过改变P1口的电平,控制LED的亮灭。

2.电路元件说明-51单片机:中央处理器,负责控制整个系统的运行和信号的处理。

-LED灯:用于显示红、黄、绿三种不同的状态。

-电流限制电阻:用于限制电流大小,保护51单片机和LED灯。

四、程序设计程序设计中,通过无限循环实现红绿灯系统的连续运行,程序中设置了红绿灯切换的时间间隔和黄灯亮灭的时间间隔。

五、实验结果经过测试,本设计能够正常地实现红绿灯的切换,各种状态都能够正确显示。

红灯亮10秒,黄灯亮3秒,绿灯亮15秒,然后循环重复。

六、总结本设计利用51单片机的强大功能,实现了红绿灯的自动切换。

通过控制IO口的电平和延时函数,能够实现红绿灯的各种状态的切换。

该设计简单、实用、可靠,适用于城市交通管理中的红绿灯设备。

51单片机交通灯设计报告

51单片机交通灯设计报告

51单⽚机交通灯设计报告课程设计说明书课程名称:《单⽚机技术》设计题⽬:交通灯设计学院:电⼦信息与电⽓⼯程学院学⽣姓名:学号:专业班级:指导教师:课程设计任务书交通灯设计摘要:近年来随着科技的发展,单⽚机的应⽤正在不断深⼊,同时带动传统控制检测技术⽇益更新。

在实时检测和⾃动控制的单⽚机应⽤系统中,单⽚机往往作为⼀个核⼼部件来使⽤,仅单⽚机⽅⾯的知识是不够的,还应该根据具体硬件结构软硬结合,加以完善。

⼗字路⼝车辆穿梭,⾏⼈熙攘,车⾏车道,⼈⾏⼈道,有条不紊,那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的⾃动指挥系统。

交通信号灯控制⽅式很多。

本系统采⽤51系列单⽚机ATMEL89C51为核⼼控制器件来设计交通信号灯控制器,实现亮绿灯通⾏,亮黄灯闪烁并发声警⽰,亮红灯禁⽌通⾏的功能,并显⽰通⾏或禁⽌通⾏倒计时,紧急按键信号灯加时和紧急按键南北、东西红绿灯跳变。

本系统使⽤性强,操作简单,容易实现,扩展功能强,可⾃⾏修改程序扩展⾃⼰想要实现的功能。

关键词:交通灯,单⽚机,复位电路⽬录1. 设计背景 (1)1.1设计原因 (1)1.2个⼈意义 (1)2.设计⽅案 (1)2.1总体⽅案提出 (1)2.2稳压电源⽅案设计与分析 (1)2.3复位电路⽅案设计与分析 (2)3. ⽅案实施 (2)3.1总体设计框图 (2)3.2硬件设计 (3)3.3软件设计 (6)3.4电路仿真 (10)3.5制板⼦与安装过程 (11)3.6软硬件调试 (11)4. 结果与结论 (12)5 收获与致谢 (12)6. 参考⽂献 (12)7. 附件 (13)7.1硬件电路图 (13)7.2元器件清单 (14)7.3作品实物图 (15)7.4源程序: (16)1. 设计背景1.1设计原因随着社会的进步,交通的⾼速发展,红绿灯已经成为了我们⽣活中不可或缺的⼀部分,如今,红绿灯已经安装在各个道路的交接⼝处,已经成为疏导交通车辆最常见和最有效的⼿段。

51单片机 交通灯

51单片机 交通灯

实验二交通灯实验一、实验目的a)按键、数码管、发光二极管综合应用编程技术b)数据存储于EEPROM的技术(也可以不使用)c)定时中断技术d)按键中断技术二、实验实现的功能a)对绿黄红灯的时间进行设定。

b)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。

再按该键,恢复正常显示。

三、系统硬件设计四、系统软件设计#include <stc10.h>#define uchar unsigned char#define uint unsigned int#define N 10//0--F的共阴极字段码表ucharcodevalue[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};uchar Num_Buffer[]={0,0};uchar GT=0,YT=0;RT=0,Operation_Type=1,sec=0,count=0,k=0;sbit P02=P0^2;sbit P03=P0^3;sbit P36=P3^6;sbit P37=P3^7;/************************北方向灯组位定义***************************/ sbit BG=P2^3;sbit BY=P2^4;sbit BR=P2^5;/************************西方向灯组位定义***************************/ sbit XG=P2^0;sbit XY=P2^1;sbit XR=P2^2;/************************南方向灯组位定义***************************/ sbit NG=P3^3;sbit NY=P3^4;sbit NR=P3^5;/************************东方向灯组位定义***************************/ sbit DG=P2^6;sbit DY=P2^7;sbit DR=P3^2;/*******************************************************************/ void delay(uint x) //延时{uchar i;while(x--){for(i=0;i<120;i++);}}void display(uchar n) //显示函数{Num_Buffer[1]=n/10;Num_Buffer[0]=n%10;P0=0XFB;P1=codevalue[Num_Buffer[1]];delay(N);P0=0XF7;P1=codevalue[Num_Buffer[0]];delay(N);}uchar scan_key() //按键扫描程序{uchar i,m;P36=0;P37=1;for(i=0;i<2;i++){delay(N);m=P0;switch(m&0xe0){case 0xc0: k=i*3+1;return k;break;case 0xa0: k=i*3+2;return k;break;case 0x60: k=i*3+3;return k;break;default: break;}P36=1;P37=0;}}void dingshi() //设定绿黄红灯的时间{uchar k;P2=0XFF;P3=0XFF;while(1){display(0); //开始时显示0k=scan_key();if(k==4) //按下4键设定主干道绿灯时间{while(1){display(GT);k=scan_key();if(k==4){ delay(20N);GT++;}if(k==3) //按下3键设定好绿灯时间{ delay(20N);break;}}}else if(k==5) //按下5键设定黄灯时间{while(1){ ;display(YT);k=scan_key();if(k==5){ delay(20N);YT++;}if(k==3) //按下3键设定好绿灯时黄间{ delay(20N);break;}}}else if(k==6) //按下6键设定红灯时间{while(1){display(RT);k=scan_key();if(k==6){ delay(20N);RT++;}if(k==3) //按下3键设定好红灯时间{ delay(20N);break;}}}else if(k==3) //再次按下3键时间设定好返回break;}}void zanting() //暂停程序{ uchar k;k=scan_key();if(k==3) //按下3键暂停{ TR0=0;delay(50N);while(1){BG=1;BY=1;BR=0;NG=1;NY=1;NR=0; //东西南北红灯都亮XG=1;XY=1;XR=0;DG=1;DY=1;DR=0;k=scan_key();if(k==3) //再次按下3键开始{delay(50N);break;}}}}void yunxing() //运行程序{ uchar i;delay(50N);while(1){switch(Operation_Type){case 1://东西向绿灯与南北向红灯亮sec=GT;while(1){if(sec>-1){TR0=1;display(sec);BG=1;BY=1;BR=0;NG=1;NY=1;NR=0;XG=0;XY=1;XR=1;DG=0;DY=1;DR=1;zanting();}else{TR0=0;Operation_Type=2;break;}}break;case 2://东西向黄灯亮5s,绿灯关闭sec=YT;while(1){if(sec>-1){TR0=1;BG=1;BY=1;BR=0;NG=1;NY=1;NR=0;XG=1;XY=~XY;XR=1;DG=1;DY=~DY;DR=1;for(i=0;i<50;i++) //以数码管显示来延时{display(sec);}zanting();}else{TR0=0;Operation_Type=3;break;}}break;case 3://东西向红灯,南北向绿灯亮sec=RT;while(1){if(sec>-1){TR0=1;display(sec);BG=0;BY=1;BR=1;NG=0;NY=1;NR=1;XG=1;XY=1;XR=0;DG=1;DY=1;DR=0;zanting();}else{TR0=0;Operation_Type=4;break;}}break;case 4://东西向红灯亮,南北向黄灯亮5ssec=YT;while(1){if(sec>-1){TR0=1;BG=1;BY=~BY;BR=1;NG=1;NY=~NY;NR=1;XG=1;XY=1;XR=0;DG=1;DY=1;DR=0;for(i=0;i<50;i++){display(sec);}zanting();}else{TR0=0;Operation_Type=1;break;}}}}}void shan(){P2=0XB6;P3=0X37;delay(5N);P2=0X6D;P3=0X2F;delay(5N);P2=0XDB;P3=0X1B;delay(5N);}main(){P1M0=0XFF;P1M1=0X00;TMOD=0X01; //定时器T0,工作方式1TH0=-50000/256; //定时器T0赋初值TL0=-50000%256;EA=1; //开总中断ET0=1; //定时器T0中断允许while(1){P02=1;P03=1;shan(); //开始时二极管闪烁scan_key();if(k==1)dingshi();if(k==2)yunxing();}}void timer0(void) interrupt 1{TH0=-50000/256;TL0=-50000%256;count++;if(count==20){count=0;sec--;}}五、实验过程中遇到的问题及解决方法问题1:将各路口的灯用P2,P3口赋值来表示,显示乱码解决:直接对每个灯进行位定义,然后直接赋值,这样简单明了易查错,而且对按键扫描程序没有任何影响问题2:设定的时间走到1直接显示下一个灯的时间,没有显示0解决:检查发现在执行时if(sec>0),改成if(sec>-1)运行正常问题3:黄灯闪烁程序为XG=1;XY=~XY;XR=1;DG=1;DY=~DY;DR=1;发现运行时黄灯不闪烁,一直为黄色解决:因为运行时执行指令的速度较快,导致黄灯的熄灭人的眼睛无法识别,加延时函数delay(5N)既可,当加入延时函数又出现了新的问题,即数码管显示不连续,有的位显示一直闪烁,分析问题在于当加入延时函数后影响了数码管的扫描频率,数码管是动态显示的,靠的就是快速移位显示来显示4为数码管,将延时函数用数码管显示程序来代替,保证了数码管的显示,又解决了黄灯的闪烁问题。

51单片机c语言交通灯设计报告

51单片机c语言交通灯设计报告

xxxxxxxxx基于AT89S52交通灯设计学院:电子信息工程专业班级: xxxxxxxxxxxxxx姓名: xx xx学号: xxxxxxxxxxx指导老师: xxxxxxxxxx摘要交通灯在我们日常生活中随处可见,它在交通系统中处于至关重要的位置。

交通灯的使用大大减少了交通繁忙路口的事故发生,给行人和车辆提供一个安全的交通环境,人们的生命和财产安全有了保障。

本设计旨在模拟十字路口的交通灯,以AT89S51单片机为基础,结合按键和数码管等元器件设计出一个简单且完全的交通灯系统。

关键词:交通灯 AT89S52 单片机目录一、设计任务 (4)二、AT89S52单片机及其他元器件简介 (4)(1)AT89S52单片机 (4)三、系统硬件电路设计 (6)(1)时钟电路设计 (6)(2)复位电路设计 (6)(3)灯控制电路设计 (7)(4)按键控制电路设计 (7)四、元件清单及实物图 (8)1、程序清单 (8)2、原理图 (9)五、实验心得 (9)附1 源程序代码 (10)附2 原理图 (16)一、设计任务(1)、设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两条交叉道路上的车辆交替运行,每次通行时间都设30秒,时间可设置修改。

(2)、在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道,且黄灯亮时,要求每秒亮一次。

(3)、有紧急车辆要求通过时,系统要能禁止东西和南北两条路上所有的车辆通行。

二、AT89S52单片机及其他元器件简介(1)AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6位向量2级中断结构,全双工串行口,片内晶振及时钟电路。

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

单片机控制交通灯设计方案
一、单片机设计交通灯的设计要求:
状态一:南北绿灯亮,东西红灯亮,南北人行道绿灯,东西人行道红灯,南北左拐绿灯,东西左拐红灯。

(时间为15S)
状态二:南北黄灯亮,东西红灯亮,南北人行道绿灯,东西人行道红灯,南北左拐绿灯,东西左拐红灯。

(时间为5S)
状态三:南北红灯亮,东西绿灯亮,南北人行道红灯,东西人行道绿灯,南北左拐红灯,东西左拐绿灯。

(时间为15S)
状态四:南北红灯亮,东西黄灯亮,南北人行道红灯,东西人行道绿灯,南北左拐红灯,东西左拐绿灯。

(时间为5S)
二、设计原理分析
1、首先了解实际交通灯的变化情况和规律。

假设一个十字路口如上图所以,
为东南西北走向。

初始状态0:为东西绿灯亮,南北红灯亮;然后转状态1:东西绿灯亮黄灯亮,南北红灯亮黄灯亮;过后转状态2:东西红灯亮,南北绿灯亮;再转状态3:东西红灯亮黄灯亮,南北绿灯亮黄灯亮。

一段时间后,又循环至状态0。

中间可通过中断按钮产生中断,跳入中断程序执行中断。

2、对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯。

3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。

每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。

4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展。

5.通过脉冲中断编写中断程序,可实现中断。

三、设计的仿真图如下;
其接法为:P0接数码管的端选段,
P1接数码管的位选端,
P2接交通灯,接法如下:
P20,P21,P22,分别接南北向的红黄绿灯,
P23接南北左拐绿灯,
P24,P25,P26,分别接东西向的红黄绿灯,
P27接东西左拐红灯
东西人行到红绿灯和南北红绿灯接到一起
南北人行到红绿灯和东西红绿灯接到一起
四、AT89C51的KILL程序
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
uchar code wei[]={0x01,0x02,0x04,0x08}; //位码选择
uchar code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码选择
uchar table[4]={0,0,0,0};//四位为选端赋值区间
uchar num=0;
uchar ID=1;
uchar sec=15;
uchar n=0;
void init(void)
{
P0=0xff;//端口初始化
P1=0x00;//端口初始化
P2=0x00;//端口初始化
TMOD=0x01;//使用定时器0的工作方式
EA=1;//开总中断
ET0=1;//开定时器0的中断
TH0=(65536-10000)/256;//定时10毫秒
TL0=(65536-10000)%256;
TR0=1;
}
void main(void)
{
init();
while(1)
{
switch(ID)//选择函数
{
case 1:P2=0x14;break;//东西红,南北绿,
case 2:P2=0x12;break;//东西红,南北黄,
case 3:P2=0x41;break;//东西绿,南北红,
case 4:P2=0x21;break;//东西黄,南北红,
default:break;
}
}
}
void timer0() interrupt 1//对应中断定时器0
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
P1=wei[num];//位选端送值
P0=duan[table[num]];//端选端送值
num++;
if(num==4)
num=0;
table[0]=(sec-1)/10;
table[1]=(sec-1)%10;
table[2]=(sec-1)/10;
table[3]=(sec-1)%10;
n++;
if(n==100)//10毫秒执行一百次为一秒
{
n=0;
sec--;
if(sec==0)
{
ID++;
if(ID==5)//
ID=1;
switch(ID)
{
case 1:sec=15;break; //
case 2:sec=3;break;//
case 3:sec=15;break;//
case 4:sec=3;break;//
default:break;/*default就是默认情况,这个是用在switch中,意思是若case都不满足,则执行default后面的语句*/
}
}
}
}。

相关文档
最新文档