ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:16.49KB ,
资源ID:3580017      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3580017.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(交通灯十字路口控制器程序.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

交通灯十字路口控制器程序.docx

1、交通灯十字路口控制器程序#include#define uchar unsigned char#define uint unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/*digit display port*sbit led_w1=P11;sbit led_w2=P10;sbit led_w3=P13;sbit led_w4=P12;/*define led port *sbit R1=P24; /east and west red ledsbit Y1=P23; /eas

2、t and west yellow ledsbit G1=P22; /east and west green ledsbit R2=P25; /south and north red ledsbit Y2=P26; /south and north yellow ledsbit G2=P27; /south and north green led/*define key*sbit k0=P30; /emergencysbit k1=P31; /east and west passsbit k2=P32; /south and north passsbit k3=P33; /start and

3、subtract 1sbit k4=P34; /pause and add 1sbit k5=P35; /set time/*define variable*bit flag,flag_t;uchar dx_time,nb_time;uchar cnt,pass_time,cnt1,y_time;uchar k0num,k1num,k2num,k3num,k4num,k5num;/*define key*void delay(uint i) uint x,y; for(x=i;x0;x-) for(y=110;y0;y-); void timer0_init() TMOD=0x11; TH0=

4、(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; ET1=1;void led_display(uchar dx,nb) uchar dx1,dx2,nb1,nb2; dx2=dx/10; dx1=dx%10; nb2=nb/10; nb1=nb%10; if(dx99) led_w1=1; led_w2=1; else led_w1=0; P0=tabledx1; delay(5); led_w1=1; if(dx0) led_w2=1; e

5、lse led_w2=0; P0=tabledx2; delay(5); led_w2=1; if(nb99) led_w3=1; led_w4=1; else led_w3=0; P0=tablenb1; delay(5); led_w3=3; if(nb0) led_w4=1; else led_w4=0; P0=tablenb2; delay(5); led_w4=4; /*light work*void circle_led() if(!flag) if(pass_time5) led_display(pass_time-5,pass_time); R1=1;Y1=1;G1=0; /e

6、ast and west pass R2=0;Y2=1;G2=1; /south and north stop if(pass_time0) if(cnt=10) led_display(pass_time,pass_time); else led_display(100,pass_time); R1=1;G1=1; /east and west yellow led flash if(cnt=10) Y1=0; else Y1=1; R2=0;Y2=1;G2=1; if(pass_time=0) pass_time=nb_time; flag=1; else if(pass_time5) l

7、ed_display(pass_time,pass_time-5); R1=0;Y1=1;G1=1; /east and west stop R2=1;Y2=1;G2=0; /south and north pass if(pass_time0) if(cnt=10) led_display(pass_time,pass_time); else led_display(pass_time,100); R1=0;Y1=1;G1=1; R2=1;G2=1; /south and north yellow led flash if(cnt=10) Y2=0; else Y2=1; if(pass_t

8、ime=0) pass_time=dx_time; flag=0; void emergency() /east and west,south and north stop led_display(0,0); R1=0;Y1=1;G1=1; R2=0;Y2=1;G2=1;void dx_pass() /east and west pass,south and north stop led_display(100,100); if(y_time0) TR1=1; R1=0;Y1=1;G1=1; R2=1;G2=1; /south and north yellow led flash if(cnt

9、1=10) Y2=0; else Y2=1; if(y_time=0) TR1=0; R1=1;Y1=1;G1=0; R2=0;Y2=1;G2=1; void nb_pass() /south and north pass,east and west stop led_display(100,100); if(y_time0) TR1=1; R1=1;G1=1; if(cnt1=10) Y1=0; /east and west yellow led flash else Y1=1; R2=0;Y2=1;G2=1; if(y_time=0) TR1=0; R1=0;Y1=1;G1=1; R2=1

10、;Y2=1;G2=0; /*keyboard scan*void keyscan() if(!k5num) if(k0=0) /*emergency* delay(10); if(k0=0) while(!k0); TR0=0; k0num=1; if(!k1num&!k0num) if(k1=0) delay(10); if(k1=0) while(!k1); k1num=1; k2num=0; y_time=5; /单方向通行时,黄灯闪烁时间 TR0=0; TR1=1; if(!k2num&!k0num) if(k2=0) delay(10); if(k2=0) while(!k2); k

11、1num=0; k2num=1; y_time=5; /单方向通行时,黄灯闪烁时间 TR0=0; TR1=1; if(k3=0) delay(10); if(k3=0) while(!k3); if(k1num|k2num) pass_time=dx_time; /由东西或南北通行返回时,重新开始执行。 k0num=0; k1num=0; k2num=0; k4num=0; k5num=0; TR0=1; TR1=0; flag_t=0; if(!k4&!k0num) /pause delay(10); if(k4=0) while(!k4); TR0=0; k4num=1; if(k4num

12、=1) /暂停键按下时,才可以调整两个方向通行时间 if(k5=0) delay(10); if(k5=0) k5num+; while(!k5); switch(k5num) case 1: TR0=1; flag_t=1; /调整时间时,pass_time值不变。 k5num=1; break; case 2: k5num=2; break; case 3: TR0=0; k5num=0; pass_time=dx_time; /重新赋值 break; if(k5num!=0) if(k3=0) delay(10); if(k3=0) while(!k3); switch(k5num) c

13、ase 1: dx_time-; if(dx_time10) dx_time=99; break; case 2: nb_time-; if(nb_time=100) dx_time=10; break; case 2: nb_time+; if(nb_time=100) nb_time=10; break; void main() timer0_init(); dx_time=45; nb_time=30; pass_time=dx_time; while(1) keyscan(); if(k0num) emergency(); else switch(k4num) case 0: if(!

14、k1num&!k2num) circle_led(); else if(k1num) dx_pass(); if(k2num) nb_pass(); break; case 1: switch(k5num) case 0: if(!k1num&!k2num) circle_led(); else if(k1num) dx_pass(); if(k2num) nb_pass(); break; case 1: R1=1;Y1=1;G1=1; /调整时间时,关闭所有灯 R2=1;Y2=1;G2=1; if(cnt=10) led_display(100,nb_time); else led_dis

15、play(dx_time,nb_time); break; case 2: R1=1;Y1=1;G1=1; /调整时间时,关闭所有灯 R2=1;Y2=1;G2=1; if(cnt=10) led_display(dx_time,100); else led_display(dx_time,nb_time); break; break; void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; cnt+; if(cnt=20) cnt=0; if(flag_t=0) pass_time-; /调整时间时,不执行此操作 void timer1() interrupt 3 TH1=(65536-50000)/256; TL1=(65536-50000)%256; cnt1+; if(cnt1=20) cnt1=0; y_time-; /单方向通行时,黄灯闪烁时间。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2