交通信号灯控制例程_第1页
交通信号灯控制例程_第2页
交通信号灯控制例程_第3页
交通信号灯控制例程_第4页
交通信号灯控制例程_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/*名称:交通信号灯控制例程版本:V1.00作者:fslyz创建时间:20140412修改时间:说 明:一、交通信号灯基本控制要求,在子程序TraficLighter_ctrl()中,编写代码,实现以下状态:状态0:12只灯按0.5秒时间间隔闪烁(同时点亮,同时熄灭),保持5秒;状态1:东西方向绿灯,南北方向红灯,保持30秒;状态2:东西方向黄灯间隔0.5秒闪烁,南北方向红灯,保持5秒;状态3:东西方向红灯,南北方向绿灯,保持50秒;状态4:东西方向红灯,南北方向黄灯间隔0.5秒闪烁,保持5秒;状态4时间结束后从状态1开始,依次循环。二、交通信号灯进阶一控制要求:在练习一的代码基础上,编写代码

2、用实验板上S3数码管显示东西方向由红灯变绿灯的倒计时时间(即总时间为绿灯时间与黄灯时间之和); S4数码管显示南北方向由红灯变绿灯的倒计时时间;*/#include<STC12c5A32s2.h>#define uint unsignedint#define uchar unsignedchar#define ulong unsignedlong/-定时常量参数-/#define T0_TIME10000/ 以us为单位的定时间隔#define T0ReLoadL (65536-(uint)(T0_TIME*11.0592/12) % 256)#define T0ReLoadH (

3、65536-(uint)(T0_TIME*11.0592/12) / 256)uchar bdata HC595_buff2 _at_ 0x22; /交通灯控制1的位寻址变量uchardataTraficLighter_state;/交通灯控制状态uchardatatimer_count0;/交通灯状态计时器,单位秒uchardatatimer_count1;/uchar Sec;sbit West_Red =HC595_buff13;/西路口红灯sbit West_Yellow =HC595_buff12;/西路口黄灯sbit West_Green =HC595_buff11;/西路口绿灯s

4、bit South_Red =HC595_buff10;/南路口红灯sbit South_Yellow =HC595_buff07;/南路口黄灯sbit South_Green =HC595_buff06;/南路口绿灯sbit East_Red =HC595_buff05;/东路口红灯sbit East_Yellow =HC595_buff04;/东路口黄灯sbit East_Green =HC595_buff03;/东路口绿灯sbit North_Red =HC595_buff02;/北路口红灯sbit North_Yellow =HC595_buff01;/北路口黄灯sbit North_

5、Green =HC595_buff00;/北路口绿灯sbit HC595RegCLK =P25;/4hc595锁存时钟 输出sbit HC595S_Data=P26;/74hc595串行数据 输出sbit HC595ShiftCLK=P27;/74hc595串行移位时钟 输出/*名称:WR_74HC595说明:向2片74HC595写入2字节数据(HC595_buff)*/void WR_74HC595(void)uchar i,j,k,temp00;HC595RegCLK = 0; /锁存线置“低” HC595ShiftCLK = 0;/HC595.CLK =0for(i=0;i<2;i

6、+) k=0X80;temp00=HC595_buff1-i; for(j=0;j<8;j+) if(temp00 & k) HC595S_Data = 1;/HC595.SDA elseHC595S_Data = 0; HC595ShiftCLK = 1;/产生上升沿,移入数据 k >>= 1;/k右移一位 HC595ShiftCLK = 0;/HC595.CLK HC595RegCLK = 1; /产生上升沿,锁存数据/*名称:TraficLighter_ctrl功能:按规律改变交通信号灯的状态*/void TraficLighter_ctrl(void)swit

7、ch(TraficLighter_state) case 0:/初始化状态,两个方向都为红灯5秒钟if(timer_count1=50) timer_count1=0;HC595_buff0=HC595_buff0;HC595_buff1=HC595_buff1;if(timer_count0=0) TraficLighter_state=1;timer_count0=30;HC595_buff0=0x00;HC595_buff1=0x00;break;case 1:/东西方向绿灯,南北方向红灯,保持30秒;East_Green=1;West_Green=1;South_Red=1;North

8、_Red=1; if(timer_count0=0) TraficLighter_state=2;timer_count0=5;HC595_buff0=0x00;HC595_buff1=0x00; break;case 2:/状态2:东西方向黄灯间隔0.5秒闪烁,南北方向红灯,保持5秒; if(timer_count1=50) timer_count1=0; East_Yellow=East_Yellow; West_Yellow=West_Yellow; North_Red=1; South_Red=1; if(timer_count0=0) TraficLighter_state=3; t

9、imer_count0=50; HC595_buff0=0x00; HC595_buff1=0x00; break;case 3:/状态3:东西方向红灯,南北方向绿灯,保持50秒; East_Red=1; West_Red=1; North_Green=1; South_Green=1; if(timer_count0=0) TraficLighter_state=4; timer_count0=5; HC595_buff0=0x00; HC595_buff1=0x00; break;case 4:/状态4:东西方向红灯,南北方向黄灯间隔0.5秒闪烁,保持5秒;/状态4时间结束后从状态1开始,

10、依次循环。 if(timer_count1=50) timer_count1=0; North_Yellow=North_Yellow; South_Yellow=South_Yellow; East_Red=1; West_Red=1; if(timer_count0=0) HC595_buff0=0x00; HC595_buff1=0x00; TraficLighter_state=0; break;/*名称:Timer0中断服务子程序功能:产生10ms定时中断*/void TIMER0_INT(void)interrupt 1 TH0=T0ReLoadH;/定时常量 TL0=T0ReLoadL;timer_count1+;Sec+;if(Sec=100) Sec=0; timer_count0-;/*名称:主程序说明:*/void main(void) /-初始化TIMER0 TMOD|=0x01;/定时器T0方式1TH0 =T0ReLoadH;/装载计数器初值 TL0 =T0ReLoadL;TR0 =1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论