版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图STYLEREF1\s4-2所示。图4-2数码管显示流程图4.3按键程序设计按键的人软件代码设计很重要,如果按键判断错误,那整个系统的控制就会有问题。按键动作的检测主要在软件代码设计上,首先要分析按键动作机制,了解清楚按键动作才可以更好的设计软件代码。理论上按键就是开关动作,但是由于实际情况是机械动作转换为电信号,机械动作难免存在摩擦等情况,因为人手按下按键的机械动作存在抖动以及摩擦,所以在按按键的时候,真实情况是抖动的,所以导致按键开关是抖动开关,输出的电信号也是抖动状态,即为高低电平抖动,等人手按下按键稳定后,才输出稳定的低电平,这个抖动过程一般是3到5毫秒,因此在单片机扫描按键电信号的时候,需要在按键按下状态稳定后检测电信号,在软件代码扫描中第一次扫描到按键有效信号,此时并非真正的稳定信号,而是抖动开始或者干扰信号,所以待3到5毫秒后继续扫描,如果仍然是稳定信号,则表示按键按下。按键扫描软件设计流程图见4-3所示。图4-3按键软件设计流程图5系统调试与仿真5.1系统仿真电路设计Proteus是一款用于对电路进行模拟验证的EDA工具。能够对常用的电路进行仿真验证,还可以对单片机相关控制电路进行验证,验证电路以及软件设计的正确性。这款软件介于理论设计和实物制作之间,可以在理论设计完成后,实物制作之前对设计进行验证,更早的发现设计问题。软件内部支持很多款单片机型号,随着软件的更新升级,不断加入更多的器件,支持更多仿真电路。很多学校都开设了关于Proteus仿真的课程,对于没有条件的情况下,可以借助这款软件对电路和单片机相关设计进行学习,通过在仿真中进行模拟,可以更方便得多学习单片机等相关理论知识。Proteus结合相应的代码编程开发工具实现联合调试,通过仿真对软件代码进行验证,即验证了电路,也对软件代码进行了验证。仿真界面如图5-1所示。通过仿真验证了东西南北交通灯、东西南北数码管显示、按键输入、主控制器等所有功能。图5-1系统仿真电路5.2系统数码管显示仿真此节主要验证数码管显示的正确性。需要绘制单片机电路,数码管显示电路,验证数码管显示等。数码管仿真图如图5-2。图5-2数码管仿真图5.3系统交通灯仿真启动仿真,系统开始倒计时,数码管显示倒计时时间,观察交通灯状态,单片机控制东西交叉口绿灯亮20秒,南北交叉口红灯亮25秒,倒计时28秒后,东西路口绿黄灯闪烁5秒,之后南北绿灯亮,东西红灯亮,如此循环下去,同时可以通过按键控制交通灯时间以及全部禁止通行,液晶仿真图如图5-3。图5-3系统仿真图5.4系统东西通行控制仿真启动仿真,可以通过按键控制交通灯东西通行,此时南北禁止通行,此时数码管熄灭,东西常亮绿灯,南北常亮红灯,液晶仿真图如图5-4。图5-4系统东西通行控制仿真图5.5系统南北通行控制仿真启动仿真,可以通过按键控制交通灯南北通行,此时东西禁止通行,此时数码管熄灭,南北常亮绿灯,东西常亮红灯,液晶仿真图如图5-5。图5-5系统南北通行控制仿真图5.6系统禁止控制仿真启动仿真,可以通过按键控制交通灯南北禁止、东西禁止通行,此时数码管熄灭,南北常亮红灯,东西常亮红灯,液晶仿真图如图5-6。图5-6系统禁止通行控制仿真图6结论通过此次毕业设计的制作,对所学知识进行了应用,并且明白了自己在理论知识方面、实际操作方面的不足,进而通过毕业设计制作过程进行了弥补。经过整个系统的制作,了解了项目开发的大致流程,在制作系统前,通过查阅大量的资料,了解系统相关信息,掌握技术相关信息,以便于更好的设计系统方案。只有真正了解到目前相关产品的技术现状,才能更好的进行系统设计。整个系统开发过程中,资料网络的查阅也是非常重要的,怎么搜索资料,怎么解读资料都是需要经验的。再有方案设计阶段也很重要,如果前期方案设计合理,后期就不会有方案不对的问题,不会回过头来更改方案,所以方案设计阶段花费的时间可能会操作系统制作的时间,因此方案的设计要不断的斟酌,考虑更多的因素,保证方案的正确性。进行硬件电路设计时,要考虑实际应用情况,比如电源要加入开关,还需要有指示灯,考虑实际应用情况,所以在生活中要多多观察一些产品的功能,需要站在用户的角度设计系统功能,让用户使用起来更加方便。在进行软件设计时需要考虑到后期的调试,毕竟软件是不可见的,需要加热与便于调试的功能,比如串口调试打印信息,这样在系统软件出现问题的情况下,可以借助打印信息了解系统的BUG信息,可以更快的进行调试,解决软件问题。在进行实物制作时,一定要有顺序,不能随便焊接,通过多次的焊接制作,明白了要先焊接制作电源,因为电源是其他模块验证的必要条件,其他功能模块需要按照功能验证的顺序,一步一步制作,按照先后条件去制作。最重要的一点就是不可以一次性全部焊接制作完成,要制作一个功能模块调试一个功能模块,这样可以更方便的处理焊接出现的问题,否则很难查找到原因。参考文献:[1]李波,韩达,许文杰.基于51单片机的交通灯模拟系统设计[J].河北农机,2019(03):57.[2]许雪梅,刘娇娇,李涛,赵铭,刘奕岐,李明泽,逯玉兰.基于单片机的交通灯控制系统设计[J].电子测试,2018(23):33-34+133.[3]陈东阳.基于单片机的交通灯设计[J].信息记录材料,2018,19(12):81-82.[4]贲艳波.一种基于单片机的交通灯的设计[J].南方农机,2018,49(21):145.[5]武玉升.基于单片机的智能交通灯控制系统仿真设计[J].电子世界,2018(21):118-119+122.[6]钱进.基于单片机的交通灯智能控制分析[J].山东工业技术,2018(19):123.[7]胡瑞楠.基于51单片机的智能交通灯系统设计[J].通讯世界,2018(08):252-253.[8]郭玉秀.基于单片机的十字路口交通灯的设计及仿真[J].现代制造技术与装备,2018(08):66-68.[9]贾皓宇.基于单片机的智能交通灯控制系统[J].电脑迷,2018(02):99.[10]秦风元.基于51单片机的交通灯设计[J].时代农机,2017,44(12):126-127.[11]周碧莹,刘宏.基于单片机的智能交通红绿灯控制系统的设计分析[J].广东蚕业,2017,51(12):18.[12]郝庆妮,吴继侠,张姣.基于单片机的交通灯控制器设计[J].电子制作,2017(21):69-70+82.[13]何悠.基于单片机的智能交通灯控制系统实现方案分析[J].数字技术与应用,2017(10):18-19.[14]郑丽敏.基于单片机交通信号灯控制系统的设计与仿真[J].产业与科技论坛,2017,16(16):56-57.[15]淡海英,杨聪.基于单片机控制的十字路口交通灯设计与分析[J].电子测试,2017(13):9+8.[16]郭占苗.基于STC89C52单片机的交通灯设计[J].工业控制计算机,2017,30(06):138-139.[17]林田卓.基于51单片机的交通灯控制系统的研究与设计[J].电子世界,2017(12):184.[18]高婷婷,郭宁,史红娟.基于单片机的智能交通灯系统仿真研究[J].当代化工研究,2016(09):26-27.[19]王麒贵.基于单片机的LED模拟交通灯设计[J].电子制作,2016(21):8-9.[20]王学亮.基于单片机的多功能交通灯控制器的设计[A].天津市电视技术研究会.天津市电视技术研究会2016年年会论文集[C].天津市电视技术研究会:天津市电视技术研究会,2016:4.[21]王明哲.基于89C51单片机的现代交通灯设计[J].电子技术与软件工程,2016(07):254-255.[22]陆海全,李志军,闫非凡,吴江龙.基于单片机的智能交通灯控制系统[J].电子技术与软件工程,2016(03):51-53.[23]杨宁,阳泳,江世明.基于单片机的智能交通灯设计与论述[J].电子世界,2016(03):52-53.附录A总电路原理图附录B源代码#include<reg52.h> //调用单片机头文件#defineucharunsignedchar//宏定义"uchar"代替"unsignedchar"。#defineuintunsignedint //宏定义"uint"用来定义无符号整型数。////数码管段选定义012345 6 7 8 9 ucharsmg_du[]={0x40,0x75,0x0c,0x14,0x31,0x12,0x02,0x74,0x00,0x10,// A B C D EF 不显示 0x20,0x03,0x4a,0x05,0x0a,0x2a,0xff}; //断码uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; ucharsmg_i=4;//显示数码管的个位数//数码管位选定义sbitsmg_we1=P2^0; //数码管位选定义sbitsmg_we2=P2^1;sbitsmg_we3=P3^6;sbitsmg_we4=P3^7;chardx_s=0,nb_s; //东西南北倒计时变量sbitdx_red=P2^4; //东西红灯sbitdx_green=P2^3; //东西绿灯sbitdx_yellow=P2^2; //东西黄灯sbitnb_red=P2^7; //南北红灯sbitnb_green=P2^6; //南北绿灯sbitnb_yellow=P2^5; //南北黄灯 uintnb_che_value;uintdx_che_value;ucharxdatanb[30];ucharxdatadx[30];ucharflag_jtd_mode;//交通灯的模式根据时间bitflag_1s=0;bitflag_500ms;bitflag_dx_nb=0; //东西南北模式ucharflag_5m_value;uchari;ucharflag_alarm; //模式uchardx_time=30,nb_time=20;//东西、南北的时间ucharflag_jdgz;//交通管制ucharmiao,miao1;/***********************数码位选函数*****************************/voidsmg_we_switch(uchari){ switch(i) { case0:smg_we1=0;smg_we2=1;smg_we3=1;smg_we4=1;break; case1:smg_we1=1;smg_we2=0;smg_we3=1;smg_we4=1;break; case2:smg_we1=1;smg_we2=1;smg_we3=0;smg_we4=1;break; case3:smg_we1=1;smg_we2=1;smg_we3=1;smg_we4=0;break; } }/*********************************************************************名称:delay_1ms()*功能:延时1ms函数*输入:q*输出:无***********************************************************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<110;j++);}/*********************************************************************名称:display()*功能:数码管显示*输入:无*输出:无***********************************************************************/voiddisplay(){ uchari; for(i=0;i<smg_i;i++) { P0=0xff; //消隐 smg_we_switch(i); //位选 P0=dis_smg[i]; //段选 delay_1ms(3); }}/*********************定时器0、定时器1初始化******************/voidtime0_init() { TMOD=0X11; //定时器0、定时器1工作方式1 ET0=1; //开定时器0中断 TR0=1; //允许定时器0定时// ET1=1; //开定时器1中断// TR1=1; //允许定时器1定时 }/*********************交通灯处理函数*********************************/voidjiaotongdeng_dis(){ if(flag_1s==1) { flag_1s=0; miao++; if(miao>=60) { miao=0; } for(i=0;i<60;i++) dx_che_value+=dx[i]; for(i=0;i<60;i++) nb_che_value+=nb[i]; dx_s--; if(dx_s<0) { flag_dx_nb=~flag_dx_nb; if(flag_dx_nb==1) { if(dx_che_value>=30) dx_s=dx_time+20; //东西时间 elseif(dx_che_value>=20) dx_s=dx_time+10; //东西时间 else dx_s=dx_time; //东西时间 } else { if(nb_che_value>=30) dx_s=nb_time+20; //南北时间 elseif(nb_che_value>=20) dx_s=nb_time+10; //南北时间 else dx_s=nb_time; //南北时间 } } } dis_smg[0]=smg_du[dx_s%10]; dis_smg[1]=smg_du[dx_s/10]; dis_smg[2]=smg_du[nb_s%10]; dis_smg[3]=smg_du[nb_s/10];/***********************南北时间*********************************/ if(flag_dx_nb==0) { if(dx_s>5) { dx_red=1;//灭 dx_green= 0; //亮 dx_yellow=1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 flag_5m_value=0; }elseif(dx_s<=5) //当小于5秒时黄灯要闪了 { dx_red=1;//灭 dx_green= 1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 if(flag_500ms==0) { dx_yellow=0;//亮 } else { dx_yellow=1;//灭 } } }/***********************东西时间*********************************/ if(flag_dx_nb==1) { if(dx_s>5) { dx_red=0;//亮 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=1;//灭 nb_green= 0; //亮 nb_yellow=1; //灭 flag_5m_value=0; }elseif(dx_s<=5) //当小于5秒时黄灯要闪了 { dx_red=0;//灭 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=1;//灭 nb_green= 1; //灭 if(flag_500ms==0) //黄灯闪烁 { nb_yellow=0; //亮 } else { nb_yellow=1; //灭 } } } }/********************独立按键程序*****************/ucharkey_can; //按键值voidkey() //独立按键程序{ staticucharkey_new; key_can=20;//按键值还原 P1|=0x1f; if((P1&0x1f)!=0x1f) //按键按下 { delay_1ms(1); //按键消抖动 if(((P1&0x1f)!=0x1f)&&(key_new==1)) { //确认是按键按下 key_new=0; switch(P1&0x1f) { case0xfe:key_can=4;break; //得到按键值 case0xfd:key_can=3;break; //得到按键值 case0xfb:key_can=2;break; //得到按键值 case0xf7:key_can=1;break; //得到按键值 } } } else key_new=1; }ucharmenu_1,flag_s;/********************设置函数*****************/voidkey_with(){ if(menu_1==0) { if(key_can==2) flag_che=1; //查看车流量 else flag_che=0; } if(key_can==4)//交通管制按键 { flag_jdgz++; if(flag_jdgz>5) flag_jdgz=0; if(flag_jdgz==1) //全部亮红灯 { dx_red=0;//亮 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 } if(flag_jdgz==2) //东西红灯南北绿灯 { dx_red=0;//亮 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=1;//灭 nb_green= 0; //亮 nb_yellow=1; //灭 } if(flag_jdgz==3) //南北红灯东西绿灯 { dx_red=1;//灭 dx_green= 0; //亮 dx_yellow=1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 } if(flag_jdgz==4) //南北绿灯东西绿灯 { dx_red=1;//灭 dx_green= 0; //亮 dx_yellow=1; //灭 nb_red=1;//灭 nb_green= 0; //亮 nb_yellow=1; //灭 } if(flag_jdgz==5) //南北黄灯东西黄灯 { dx_red=1;//灭 dx_green= 1; //灭 dx_yellow=0; //亮 nb_red=1;//灭 nb_green= 1; //灭 nb_yellow=0; //亮 } } if(key_can==1) //设置键 { menu_1++; if(menu_1>=3) { menu_1=0; } } if(menu_1==1) //设置东西的时间 { if(key_can==2) { dx_time++; //加1 if(dx_time>99) dx_time=99; } if(key_can==3) { dx_time--; //减1 if(dx_time<=10) dx_time=10; } dis_smg[0]=smg_du[10]; //显示为A dis_smg[1]=smg_du[10]; //显示为A dis_smg[2]=smg_du[dx_time%10]; //显示东西设置的时候 dis_smg[3]=smg_du[dx_time/10]; } if(menu_1==2) //设置南北的时间 { if(key_can==2) { nb_time++; //加1 if(nb_time>99) nb_time=99; } if(key_can==3) { nb_time--; //减1 if(nb_time<=10) nb_time=10; } dis_smg[0]=smg_du[11];
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSPIA 005-2021公共安全视频图像分析多算法应用技术要求
- T/YYHG 0006-2023注射剂配液分配自控系统实施规范
- T/HAEPCI 45-2022农田土壤重金属污染修复与管控方案编制规范
- T/CIE 207-2024Linux操作系统内核接口调用参考规范
- T/CAOE 47-2023大洋多金属结核资源量估算技术指南
- T/CSAE 465-2025乘用车智能底盘矢量控制及舒适加减速控制道路测试方法
- 2025-2026学年黑龙江省鸡西市初中数学九年级期末上册模考能力提升卷详细参考解析
- PHP 初级面试题及详细答案(真实企业版)
- 2026年教育系统后备干部笔试试题及答案
- PET-CT物理师专业考核试题及详细答案
- 2026年江苏省粮食集团有限责任公司人员招聘笔试备考题库及详细答案解析
- 2026年普法考试题目(+答案解析)
- 中国多发性骨髓瘤诊治指南(2026年修订)
- 《物流场所消防安全管理》XFT 3026-2026
- 2026年秋新版道德与法治(道法)六年级上册全册分课时作业附答案
- 2025年县属国有企业招聘考试笔试试题(含答案)
- 可压缩流体管道阻力降计算表
- 分布式光伏发电系统建设规范
- 企业商业秘密保护技术应用调研报告
- 物业服务满意度调研问卷设计
- 汽轮机运行值班员技能鉴定理论考试题库(浓缩400题)
评论
0/150
提交评论