单片机课程设计报告cr.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 1 重庆大学城市科技学院 电气信息学院 单片机课程设计报告 姓名 陈睿 学号专业 电子信息工程 班级 2006级01班 指导教师 杨丽清 目 录 任务要求………………………………………………………………………… 2 二.总体方案设计过程……………………………………………………………… 2 (一)硬件系统设计 ………………………………………………………………… 2 (二)软件系统设计 ………………………………………………………………… 4 三、所遇到的问题及解决…………………………………………………………… 5 四、总结……………………………………………………………………………… 5 五、附录……………………………………………………………………………… 6 源程序代码…………………………………………………………………………………… 6 元件清单……………………………………………………………………………………… 9 六、参考文献………………………………………………………………………… 9 任务要求 交通灯控制系统 采用51系列单片机AT89C51为中心器件设计交通灯控制系统。发光二极管代表红绿灯,数码管显示时间。 车道状态 时间/s 南行 北行 西行 东行 1 0-39 红 红 绿 绿 2 40-79 绿 绿 红 红 通过按键实现以下情况处理 (1)紧急情况处理 设置紧急处理键和恢复键,模拟意外事故等实际情况导致交通突然瘫痪,此时就需要手动对交通状况进行紧急情况下的处理,待意外事故结束后按下恢复键恢复交通。当按下紧急情况处理键时,系统实现车道人行道红灯全部亮起,禁止一切车辆和行人通行,LED数码管显示“88”,发光二极管全亮。 (2)交通遇忙调整 为了增加交通灯指示的灵活性,提高交通的流通效率,可根据调查交道口的车流量或交警的经验来重设各交通灯的点亮时间。为简化处理,我们假设了两种情况:南北路段忙和东西路段忙。 状况东西道车行时间(s) 南北道车行时间(s) 东西路段忙 60 20 南北路段忙 20 60 二.总体方案设计过程 (一)硬件系统设计 (1)、基本电路的构成。 数码管显示时间模 数码管显示时间模块 80C51单 80C51 单片机 键盘输入模块(应急键、恢复键、时间调整键) LED红绿灯 LED 红绿灯 (2)、用protel做出电路元器件原理图 (3)、用protel生成PCB电路板 (4)、用Proteus 7 Professional 做出软件仿真的原理图 (二)软件系统设计 1、 软件流程图 2.软件编写思路 根据功能划分模块: (1)、初始化程序段: 对红绿灯及内部的变量及LED数码显示、定时计数器初始化 (2)、按键及LED扫描程序段: 实现LED的动态显示及按键状态的查询 (3)、定时器中断程序段: 实现1s的计时功能 (4)、数码显示处理模块: 实现计数器的计数和数字到段码的转换处理 (5)、状态处理模块: 实现对特殊情况的处理操作和红绿灯状态的转换 三、所遇到的问题及解决 1、编写按键处理子程序时,发现若采用直接把整个端口的值读进来,要用比较程序进行挨个比较,而且如果有几个按键同时按下的情况也需要考虑。使得整体的运行速度降低。 解决:因为单片机有强大的位处理功能,所以对按键的查询采用了位操作语句,大大简化程序,提高了运行的速度。 2、LED动态显示的位选口和交通灯控制口共用一个端口。造成移位的困难 解决:要实现动态显示通常是要用移位指令进行移位操作。这里,由于输出口也要做交通灯的控制端,用移位操作的话会使问题变得非常复杂。同样是用位操作语句,进行动态的位选输出而不改变交通灯控制端的值。 四、总结 通过这次独立完成课程设计,确实学到了很多东西。一个看似单一的功能,做起来却是由许许多多的波折。平常很少注意的一些细节,造成了严重的错误,往往因为一个符号,进度就停止了。通过对问题的分析,和对网上类似程序的阅读发现了经典的16进制数装换成10进制数并分开存放的方法。通过这次实践让我懂得了,个人的知识总是有局限性的,书本上的内容知识也是有限的,只有通过通过上网查找资料和与同学的交流,分析问题、解决问题才能学到真正的东西。 在这次程序设计中因为采取了正确的设计模式(分析要实现的功能,硬件的安排,软件功能块的划分,子功能块的开发,子功能块的调试,主程序开发,软件仿真,硬件验证功能),大大减少了错误率,提高整体编写的效率。因为事先经过了软件仿真,避免了因为硬件本身的损坏和连接的不

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档