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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于单片机的交通灯设计.docx

1、基于单片机的交通灯设计基于at89c51的交通灯设计该设计的功能有交通灯倒计时,红绿黄显示,手动控制,日历显示(初始值为11月20日7时01分)。要做实验设计的拿去用吧,设计思路什么的就自己写。原创 东北大学秦皇岛分校交通灯程序:#include#define uchar unsigned char/宏定义uchar#define uint unsigned int/宏定义uintsbit RED_DONGXI = P10;/南北方向红灯亮sbit YELLOW_DONGXI = P11;/南北方向黄灯亮sbit RED_NANBEI = P13;/东西方向红灯亮sbit GREEN_DONG

2、XI = P12;/南北方向绿灯亮sbit YELLOW_NANBEI = P14;/东西方向黄灯亮sbit GREEN_NANBEI = P15;/东西方向绿灯亮sbit DXweixuan1 = P16;/南北方向数码管位选1sbit DXweixuan2 = P17;/南北方向数码管位选2sbit NBweixuan1 = P30;/东西方向数码管位选1sbit NBweixuan2 = P31;/东西方向数码管位选2sbit L1=P35; sbit L2=P36;sbit L3=P37; /数码管显示位月、日、时、分选控制端uint aa, bai,shi,ge,bb; uint s

3、hi1,ge1,shi2,ge2,minute=00,hour=07,day=20,month=11;/月日时分初始值设定uint month1,month2,day1,day2,hour1,hour2,minute1,minute2;/定义变量/*数码管显示0-9*/uint code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uint code table1=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6;/*子函数声明*/void delay(uint z);void

4、 delay0(uint z);void init(uint a);void display(uint shi1,uint ge1,uint shi2,uint ge2);void xtimer0();void init1();void init2();void init3();void init4();void init5();void init6();void display1();/* 主函数*/void main() P0=0xFF; P1=0xFF; P2=0x00; P3=0xFF; EA=1; /打开外部中断 EX0=1; /允许外部中断0中断 IT0=0; EX1=1; /允许

5、外部中断1中断 IT1=0; display1(); /INT0为沿触发方式 init1(); /第1个位状态 while(1) init6(); /第6个状态 init2(); /第2个状态 init3(); /第3个状态 init4(); /第4个状态 init5(); /第5个状态 void init1()/预备状态东、西、南、北方向均亮红灯3S uint temp; temp=3; /变量赋初值 TMOD=0x01; /定时器0工作于方式1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; /定时器赋初值 EA=1; /开外部中断 ET0=1;

6、 /开定时中断 TR0=1; /开定时器0 while(1) RED_DONGXI=0; RED_NANBEI=0; GREEN_DONGXI=1; GREEN_NANBEI=1; YELLOW_DONGXI=1; YELLOW_NANBEI=1; if(aa=20) /定时20*50MS=1S aa=0; /定时完成一次后清0 temp-; /变量自减 shi1=shi2=temp/10; /显示十位 ge1=ge2=temp%10; /显示个位 if(temp=0) temp=5; /变量赋值为5 break; display(ge1,shi1,ge2,shi2); /显示红绿灯显示剩余时

7、间 display1() ; /显示年、月、日 void init2() /第二个状态:东西亮红灯30S5S、南北亮绿灯250S; uint temp; temp=26; /变量赋初值 TMOD=0x01; /定时器0工作于方式1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; /定时器赋初值 EA=1; /开外部中断 ET0=1; /开定时中断 TR0=1; /开定时器0 while(1) RED_DONGXI=1; RED_NANBEI=0; GREEN_DONGXI=0; GREEN_NANBEI=1; YELLOW_DONGXI=1; YEL

8、LOW_NANBEI=1; if(aa=20) /定时20*50MS=1S aa=0; /定时完成一次后清0 temp-; /变量自增 shi1=(temp+5)/10; /显示十位 ge1=(temp+5)%10; /显示个位 shi2=temp/10; ge2=temp%10; if(temp=0) /定时25S temp=26; /变量清0 break; display(ge1,shi1,ge2,shi2); display1(); void init3() /第三个状态:南北绿灯变为黄灯闪5s、东西方向亮红灯5S uint temp; temp=6; /变量赋初值 TMOD=0x01;

9、 /定时器0工作于方式1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; /定时器赋初值 EA=1; /开外部中断 ET0=1; /开定时中断 TR0=1; /开定时器0 while(1) RED_NANBEI=0; GREEN_DONGXI=1; if(aa=20) /定时20*50MS=1S aa=0; /定时完成一次后清0 temp-; /变量自增 YELLOW_DONGXI=YELLOW_DONGXI; shi1=temp/10; shi2=shi1; /显示十位 ge1=temp%10; ge2=ge1; /显示个位 if(temp=0)

10、/定时5S temp=6; /变量赋值 break; display(ge1,shi1,ge2,shi2); display1(); void init4()/第四个状态:东西亮绿灯250S,南北方向亮红灯305S; uint temp; temp=26; /变量赋初值 TMOD=0x01; /定时器0工作于方式1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; /定时器赋初值 EA=1; /开外部中断 ET0=1; /开定时中断 TR0=1; /开定时器0 while(1) RED_DONGXI=0; RED_NANBEI=1; YELLOW_DO

11、NGXI=1; GREEN_NANBEI=0; if(aa=20) /定时20*50MS=1S aa=0; /定时完成一次后清0 temp-; /变量自增 shi1=temp/10; shi2=(temp+5)/10; /显示十位 ge1=temp%10; ge2=(temp+5)%10; /显示个位 if(temp=0) /定时25S temp=26; /变量清0 break; display(ge1,shi1,ge2,shi2); display1(); void init5()/第五个状态:东西闪黄灯50s、南北红灯5S uint temp; temp=6; /变量赋初值 TMOD=0x

12、01; /定时器0工作于方式1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; /定时器赋初值 EA=1; /开外部中断 ET0=1; /开定时中断 TR0=1; /开定时器0 while(1) RED_NANBEI=1; RED_DONGXI=0; GREEN_DONGXI=1; GREEN_NANBEI=1; if(aa=20) /定时20*50MS=1S aa=0; /定时完成一次后清0 temp-; /变量自增 YELLOW_NANBEI=YELLOW_NANBEI; shi1=temp/10; shi2=shi2; /显示十位 ge1=te

13、mp%10; ge2=ge1; /显示个位 if(temp=0) /定时100S temp=6; /变量清0 break; display(ge1,shi1,ge2,shi2); display1(); void init6() /显示年、月、日 minute+; month1=month/10; month2=month%10; day1=day/10; day2=day%10; hour1=hour/10; hour2=hour%10; minute1=minute/10; minute2=minute%10; if(minute=60) hour+; if(hour=24) day+;

14、if(day=30) month+; /*显示子函数*/void display1() L1=0,L2=0,L3=0; P2=table1month1;delay0(2); L1=1,L2=0,L3=0; P2=table1month2;delay0(2); L1=0,L2=1,L3=0; P2=table1day1;delay0(2); L1=1,L2=1,L3=0; P2=table1day2;delay0(2); L1=0,L2=0,L3=1; P2=table1hour1;delay0(2); L1=1,L2=0,L3=1; P2=table1hour2;delay0(2); L1=0

15、,L2=1,L3=1; P2=table1minute1;delay0(2); L1=1,L2=1,L3=1; P2=table1minute2;delay0(2); void display(uint shi1,uint ge1,uint shi2,uint ge2) DXweixuan1=0; DXweixuan2=1; NBweixuan1=1; NBweixuan2=1; P0=tablege1; /显示十位 delay0(5); DXweixuan1=1; DXweixuan2=0; NBweixuan1=1; NBweixuan2=1; P0=tableshi1; /显示个位 de

16、lay0(5); DXweixuan1=1; DXweixuan2=1; NBweixuan1=0; NBweixuan2=1; P0=tablege2; /显十位 delay0(5); DXweixuan1=1; DXweixuan2=1; NBweixuan1=1; NBweixuan2=0; P0=tableshi2; /显示个位 delay0(5);void xint0() interrupt 0 /外部中断0 RED_NANBEI=0; RED_DONGXI=0; GREEN_NANBEI=1; GREEN_DONGXI=1; YELLOW_NANBEI=1; YELLOW_DONG

17、XI=1; P0=0x00; NBweixuan1=0; NBweixuan2=0; DXweixuan1=0; DXweixuan2=0; display1(); return ;void xint1() interrupt 2 /外部中断1 RED_NANBEI=1; RED_DONGXI=1; GREEN_NANBEI=0; GREEN_DONGXI=0; YELLOW_NANBEI=1; YELLOW_DONGXI=1; P0=0x00; NBweixuan1=0; NBweixuan2=0; DXweixuan1=0; DXweixuan2=0; display1(); return ;/*定时中断子函数*/void xtimer0() interrupt 1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; aa+;/*延时子函数*/void delay0(uint z)uint i,j; for(i=0;iz;i+) for(j=0;j0;j-) for(i=1250;i0;i-) for(k=180;k0;k-);

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

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