网站大量收购闲置独家精品文档,联系QQ:2885784924

单片机原理及系统设计课程设计1.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理及系统设计课程设计1.doc

单片机原理及系统课程设计 专 业: 电气工程及其自动化 班 级: 093班 姓 名: 张阿兰 学 号: 200811133 指导教师: 高阳 评语: 平时(40) 修改(30) 报告(30) 总成绩 兰州交通大学自动化与电气工程学院 2012 年 7月 1日 1引言 汽车信号灯的作用是大家所熟知的,汽车通过显示不同的信号灯来告诉前后左右的行车者本汽车正在进行的操作。本文主要是介绍汽车信号灯的控制,其中汽车信号灯包挂了左前灯、右前灯、左后灯、右后灯、仪表盘上的左右转弯信号灯。主要内容是使汽车在行驶过程中通过信号灯来传达汽车诸如转弯、刹车、闭合紧急开关、停靠等一系列操作信号。信号灯控制的实现主要是通过电路与C语言的结合来完成的,电路部分的设计是通过PROTEUS来完成的,其中灯的模拟采用了发光二极管,发光二级管有熄灭、点亮和闪烁三种信号,而汽车的一系列操作采用了相应的开关来模拟,所有的电路元件都是用PROTEUS软件上的虚拟元件来替代。电路图中的主芯片采用了C51,加载Keil51生成的.HEX文件,在PROTEUS上完成系统的调试和仿真。 2设计方案及原理 2.1问题描述 汽车转向信号灯设计 (1) 设计内容 模拟汽车在驾驶中的左转弯、右转弯、刹车、合紧急开关、停靠等操作。在左转弯或右转弯时,通过转弯操作杆使左转弯或右转弯开关合上,从而使左头信号灯、仪表板的左转弯灯、左尾信号灯或右头信号灯、仪表板的右转弯信号灯、右尾信号灯闪烁;闭合紧急开关时以上六个信号灯全部闪烁;汽车刹车时,左右两个尾信号灯点亮;若正当转弯时刹车,则转弯时原闪烁的信号灯应继续闪烁,同时另一个尾信号灯点亮,以上闪烁的信号灯以1Hz频率慢速闪烁;在汽车停靠开关合上时左头信号灯、右头信号灯、左尾信号灯、右尾信号灯以10Hz频率快速闪烁。任何在下表中未出现的组合,都将出现故障指示灯闪烁,闪烁频率为10Hz。 表2.1 模拟驾驶开关作时信号灯输出的信号表 驾驶操作 输出信号 左转弯灯 右转弯灯 左头灯 右头灯 左尾灯 右尾灯 左转弯(合上左转弯开关) 闪烁 灭 闪烁 灭 闪烁 灭 右转弯(合上右转弯开关) 灭 闪烁 灭 闪烁 灭 闪烁 合紧急开关 闪烁 闪烁 闪烁 闪烁 闪烁 闪烁 刹车(合刹车开关) 灭 灭 灭 灭 亮 亮 左转弯时刹车 闪烁 灭 闪烁 灭 闪烁 亮 右转弯时刹车 灭 闪烁 灭 闪烁 亮 闪烁 刹车时合紧急开关 闪烁 闪烁 闪烁 闪烁 亮 亮 左转弯时刹车合紧急开关 闪烁 闪烁 闪烁 闪烁 闪烁 亮 右转弯时刹车合紧急开关 闪烁 闪烁 闪烁 闪烁 亮 闪烁 停靠(合停靠开关) 灭 灭 闪烁(10Hz) 闪烁(10Hz) 闪烁(10Hz) 闪烁(10Hz) 2.2问题的解决方案分析 通过对以上问题描述的深入分析,可以总结出以下三点: ⑴通过六个发光二级管模拟两个头灯,两个灯尾和仪表盘上的两个指示灯。 ⑵选择五个开关产生主要的五种状态,其他种状态用着五个开关的不同组合来分别表示,使发光二极管信号灯相应亮、灭和闪烁。 ⑶通过软件实现控制灯的闪烁频 3硬件设计 根据前面所述的设计思路,在PROTEUS上进行硬件电路图的搭建 图3.1 汽车信号灯硬件电路 4软件设计 4.1程序流程图 根据软件的设计思想,配合前面连接的硬件电路图,各接口所连接的相应元件的情况,可画出本系统程序流程图如下图所示。P1口P1.0—P1.5做输出口,控制灯,P2口P2.0-P2.4做输入口,采样当时开关状态(汽车的操作)。 4.2主程序: #includeREG51.H # define uchar unsigned char # define uint unsigned int void Delay(uint i) { uint x,y; for(x=i;x0;x--) for(y=110;y0;y--); } void main(void) { uint aa; while(1) { P2=0x00; aa=P2; if(aa==0x00) P1=0x00; else if(aa==0x01) { P1=0x2A; Delay(500); P1=0x00; Delay(500); } else if(aa==0x02) {P1=0x15; Delay(500); P1=0x

您可能关注的文档

文档评论(0)

书屋 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档