毕业设计_交通灯_51单片机_倒计时_键盘.docVIP

毕业设计_交通灯_51单片机_倒计时_键盘.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51单片机开发的带有倒计时功能的交通灯 本系统上电后就开始运行,红灯倒计时时间30S,绿灯倒计时时间25S,黄灯倒计时时间5S。系统运行后,可根据实际的需要更改红灯倒计时时间显示。由于能力限制,本系统的黄灯时间固定为5秒,只能更改红灯的倒计时时间,绿灯倒计时时间由红灯和黄灯的时间计算得到。 本系统实现了交通灯的倒计时时间可根据需要进行调整的功能,还能在特殊情况下对交通灯的人为控制,控制某方向干道一直红灯或绿灯。当特殊情况消除时又能恢复交通灯的自动控制。为实现这些功能必须使用键盘来控制单片机的操作。 本系统的键盘程序分为两个部分,键盘扫描部分和键值处理部分。通过获取的键值来确定单片机系统执行相应的操作。 本系统采用的是行列扫描法作为键盘按键识别的方法。矩阵键盘使用的是单片机的P1口,重复的按顺序给P1口赋特定的值(0xEF,0xDF,0xBF,0x7F),经过一定时间后又读取P1口的值并只保留该值的低4位,该低4位与0x0F比较,若相同则没有按键按下,若不同则有按键按下。再通过判断P1口所赋的值,跟读取的值进行相关的运算,既可得到相应的按键值。例如赋的值是0x7F,读取的值是0x0D,则代表按下的键在第4列第2行。在程序中通过switch语句给每个按键赋一个键值。 在键盘处理程序中,通过判断键值进行相应的处理,如果键值是0~9则判断是第一次按这些数字键还是第二次,若为第一次,则将键值扩大为原来的十倍并保存在一个变量中,还将0~9的按键次数标识更改为第二次按键标识,若为第二次则将键值直接保存到另一个变量中。键值10和11是紧急情况下人为控制交通。在这部分处理中先关闭定时器,修改交通灯的控制标识为所需要的标识。键值12为取消紧急情况下人为控制交通,先重新给定时器赋初值,以及将50毫秒中断次数计数变量修改为0,然后修改交通灯控制标识,恢复交通灯的正常控制,最后开启定时器。键值13是设置交通灯倒计时时间按键,同样需要停止定时器,并关闭所有交通灯。按玩设置按键后再按0~9数字键,可设置时间,最后按保存键,既可完成倒计时时间设置。保存键键值是15,保存键系统完成的操作是数字键中保存的值经过运算后赋到红灯倒计时时间变量,同时计算绿灯的倒计时时间,然后给定时器赋初值,50毫秒中断计数变量清0,开启定时器,交通灯控制标识恢复初始状态。为了更人性化,在设置时间的过程中难免出现按错数字键的情况,故在键盘中有个错误修改按键,键值为14,按下此键系统的操作时将原先保存的倒计时时间清0,重新按数字键并保存即可完成设置。 交通灯的本质是通过红绿黄灯的变化来控制路口交通。本系统实现的是对十字路口交通灯的控制。在程序中设置了六个变量,来代表两个干道上的红绿黄灯,该变量的值代表一个干道上某颜色的交通灯的亮灭,1代表灯亮,0代表灯灭。通过判断相应变量的值来控制相应干道上交通灯的亮灭。 在程序中定义的这些标识变量分别是: flagr=1,flagg=0,flagy=0, flagr1=0,flagg1=1,flagy1=0。这些变量的修改时通过相应方向灯的倒计时时间减为0来进行的。本系统控制的交通灯上电和设置后都是从南北方向的红灯东西方向的绿灯开始的,即标识变量的初始值就是上述值。 只要交通灯倒计时时间设置完成,交通灯的转换就是周期性的。这个周期就是红绿黄灯倒计时时间的总和。我将这个周期分为四个阶段:第一阶段为南北方向红灯东西方向绿灯,时长为绿灯的倒计时时长;第二阶段为南北红灯,东西方向黄灯,时长为黄灯倒计时时长;第三阶段为南北方向为绿灯,东西方向为红灯,这个阶段的时长是绿灯倒计时时长;第四阶段为南北方向为黄灯,东西方向为红灯,这阶段的时长是黄灯的倒计时时长。在这四个阶段中有一个共同的特点,每个阶段都有倒计时时间为0的出现,即马上要进行交通灯的转换。通过对倒计时时间数据的判断,以及本阶段各个方向交通灯的情况可预知下次转换交通灯的情况。转换表如表3-1: 表3-1交通灯转换控制表 南北方向 东西方向 fiagr fiagg flagy flagr1 flagg1 flagy1 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 注释:flagr,flagg,flagy分别代表南北方向的红、绿、黄灯,flagr1,flagg1,flagy1分别代表东西方向的红、绿、黄灯。1代表灯亮,0代表灯不亮。 #include<reg51.h> #include <intrins.h> #define uchar unsigned char sbit redsn=P0^0; sbit greensn=P0^1; sbit yellowsn=P0^2; sbit redew=P0^3; sbit greenew=P0^4;

文档评论(0)

精品天地 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档