已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
交通灯摘要:利用数码管,定时器,LED灯,以及芯片AT89C52实现交通灯的模拟。最终实现,东西方与南北方交换时间为30秒,其中,在30秒的最后两秒有相应的绿灯变为黄灯,然后再切换到另一方向。同时,由数码管显示具体时间。方案论证及设计首先,设定两个时间初值,timer1=30,timer2=28.分别作为东西和南北定时初值;然后再利用定时器T0控制timer1和timer2每一秒钟减1并通过数码管将两者的具体变化显示出来;同时,设定显示标志位 direction,当其值为1时,东西方通行,即:东西绿灯,南北红灯;当其值为零时,南北通行,即:南北绿灯,东西红灯。direction的初值为1,当T(30秒倒计时标志位)减到-1时direction变为0,以此类推。其中,T的变化同timer1、timer2步调一致(每一秒钟变化一次)。当direction变为0时,timer1、timer2值互换,南北绿灯亮,计时初值为30。原理分析及硬件电路图 P16、 P17、 P18口控制东西方的红黄绿灯;P13、 P12、 P11口控制南北方向的红黄绿灯; P03、P02、P01、P00分别控制数码管2、1、4、3;P30P37分别控制每一位数码管的ABCDEFG DP位。(一)、在函数display_1()(东西方向数码管显示函数)及函数void display_2()(南北方向数码管示函数)中分别控制各自LED及LCD的显示,最终在主函数中调用。void display_1() char T_high,T_low;/时间的个位和十位 T_high=Time1/10; /十位值 T_low=Time1%10; /各位值 P0=14; /开十位,P0口编码:00001110 P3=tableT_high; /显示十位数 delay(20);/软件延时 P0=13; /开个位,P0口编码:00001101 P3=tableT_low; /显示个位数 delay(20);/南北方向数码管显示void display_2() char T_high,T_low; T_high=Time2/10; T_low =Time2%10; P0=11;/00001011 P3=tableT_high; delay(20); P0=7;/00000111 P3=tableT_low; delay(20); (二)对于东西方与南北方的交换,则在主函数中体现:if(flag)flag=0;/1S标志清零Time1-;Time2-;T-; /时间减去1Sif(!direction&T=-1)/南北方向(direction=-1)30S倒计时完毕,调换通行方向和倒计时起点Time1=30;Time2=28;T=30;direction=!direction; if(direction&T=-1)/东西方向(direction=1)30S倒计时完毕,调换通行方向和倒计时起点Time1=28;Time2=30;T=30;direction=!direction; (三)程序流程(浩哥,画流程图的那个工具我不会用,你弄一下吧,呵呵) (四)误差分析:该程序中的误差会产生在时间上。由于每条语句的执行都需要一定的时间,故会对定时造成一定的影响。但执行每条语句大约只要?us乘以20条(至多)小于1ms,所以,误差处在允许范围内。(五)总结本系统主要实现交通灯的模拟,最终实现:1)30秒转换。2)最后5秒绿灯转为黄灯。3)有数码管倒计时。附源程序:#include char count=0; / 中断计数,50ms*20次=1秒bit flag=0; /一秒标志位bit direction=1; /方向标志位,东西方向为1,南北方向为0 char Time1=30,Time2=28;/倒计时起点char code table10=0x3f,0x06,0x5b,0x4f,0x66, /09的数码管编码 0x6d,0x7d,0x07,0x7f,0x6f;void delay(char);/软件延时子函数void display_1();/东西方向数码管显示函数void display_2();/南北方向数码管示函数/主程序void main() char T=30; /倒计时30STMOD=0x01;/ 定时器0工作于1方式TH0=(65536-50000)/256; /定时器初值,50msTL0=(65536-50000)%256;EA=1; /开总中断ET0=1; /开定时器0中断TR0=1; /启动定时器while(1) /循环执行/LED显示部分 if(direction) /东西方向通行 东西方向为1 if(Time12) P1=132;/前28S东西绿灯南北红灯,P1口编码:10000100 else P1= 68;/最后2S东西黄灯南北红灯 else /南北方向通行 if(Time22) P1=33; /前28S南北绿灯东西红灯 else P1=34;/最后2S南北黄灯东西红灯 /数码管的动态显示部分 if(direction) /东西方向通行东西方向为1 display_1(); /东西方向数码管显示 /*if(Time21 ) /当28秒的倒计时完毕后南北方向数码管继续显示零 Time2=0; delay(1); /延时让显示时间产生闪烁 display_2(); else */ display_2(); /前28S南北方向数码管显示 else /南北方向通行 display_2(); /*if(Time11 ) Time1=0; delay(1); display_1(); else */ display_1(); /每次计时到1S后的处理 if(flag)flag=0;/1S标志清零Time1-;Time2-;T-; /时间减去1Sif(!direction&T=-1)/南北方向(direction=-1)30S倒计时完毕,调换通行方向和倒计时起点Time1=30;Time2=28;T=30;direction=!direction; if(direction&T=-1)/东西方向(direction=1)30S倒计时完毕,调换通行方向和倒计时起点Time1=28;Time2=30;T=30;direction=!direction; /东西方向数码管显示void display_1() char T_high,T_low;/时间的个位和十位 T_high=Time1/10; /十位值 T_low=Time1%10; /各位值 P0=14; /开十位,P0口编码:00001110 P3=tableT_high; /显示十位数 delay(20);/软件延时 P0=13; /开个位,P0口编码:00001101 P3=tableT_low; /显示个位数 delay(20);/南北方向数码管显示void display_2() char T_high,T_low; T_high=Time2/10; T_low =Time2%10; P0=11;/00001011 P3=tableT_high; delay(20); P0=7;/00000111 P3=tableT_low; delay(20);/软件延时子程序void delay(char n) char i; for(i=1;i=n;i+);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业元宇宙数据迁移工具应用实践
- 新生儿黄疸的护理
- 城市轨道交通运营管理电子教案7-5 突发事件及应急处置-大客流、火灾
- 广西玉林市陆川县2026年第二学期期中阶段性练习九年级历史
- 美容手术术后护理健康教育
- 糖尿病患者的健康教育与生活方式干预
- 新生儿社交行为观察与引导
- 一级质控特殊科室病房管理检查评分标准
- 癫痫护理中的沟通技巧与患者教育
- 普外科疼痛护理
- 2025年7月浙江省普通高中学业水平考试生物试卷(含答案详解)
- 检察职能党课:法律监督
- 朗诗德健康课件
- 2026年反舞弊防控培训课件
- 矿井供电设计毕业论文
- 危化品运输职业健康培训
- 备用药与高危药品管理
- 儿歌小鸡吃米课件
- 北京市2026年高中学业水平等级考化学试卷(含答案详解)
- 槽车安全知识理论培训课件
- 2025年pcr上岗证培训试题及答案
评论
0/150
提交评论