




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选文库机电工程学院课程设计报告课程名称: 单片机课程设计 专业班级: 13电本2班 学 号: 2013041632 学生姓名: 罗 炜 指导教师: 王清辉、何文丰 完成时间: 报告成绩: 评阅意见: 评阅教师 日期 交通灯设计 一、设计任务与要求设计基本要求:(1)车辆通行繁忙的十字交叉路口,设计一交通灯控制器,设东西方向通行时间为30秒,当剩余3秒时黄灯亮,南北方向通行时间为20秒,当剩余3秒时黄灯亮。(2)东西、南北方向各用三个(绿、黄、红)LED表示,并用数码管显示东西、南北方向的剩余时间。(3)可利用按键修改时间参数,可以利用按键切换东西南北交通灯的当前状态(即立刻东西由红变绿,南北
2、有绿变红,并按设定的时间工作)。2、 方案设计与论证交通灯的工作方式及状态设计:状态东西南北通行时间注红黄绿红黄绿1、东西绿灯南北红灯11001127秒(时间可设)交通灯从状态1至4不断循环,通过外设按钮实现状态1和3的切换2、东西黄灯南北红灯1010113秒(黄灯闪烁)3、东西红灯南北绿灯01111017秒(时间可设)4、东西红灯南北黄灯0111013秒(黄灯闪烁)表2-1:交通灯的工作状态表根据表2-1所示可将交通灯的工作状态设为以下几个步骤: 1、初始状态时即为东西方向绿灯通行27秒+3秒黄灯,此时南北红灯亮。 2、随后是南北方向绿灯通行17秒+3秒黄灯,此时东西红灯亮。3、通过按模式选
3、择键一次来切换东西南北交通灯的当前状态。(通过设置定时计时器T1实现交通灯的计时)4、通过按模式选择键第二次切换至南北方向红绿灯的计时设置,通过加减按键来确定南北方向红绿灯的计时数。5、确定南北方向计数值后,通过按模式选择键第三次切换至东西方向红绿灯的计时设置,通过加减按键来确定东西方向红绿灯的计时数。6、确定交通灯计时数后再按下模式选择键后,交通灯便进入工作状态。时间计时的实现:采用定时中断实现秒的精确计时(详细方案入下列程序设计所示)。按键输入的实现:通过编写按键读取函数,来实现交通灯的状态以及时间值得设定(详细方案入下列程序设计所示)。图2-1程序设计流程框图3、 硬件电路设计1、 倒计
4、时显示 该系统要求完成倒计时的功能。因只需显示数字,基于上述原因,我完全采用数码管显示,四个路口分别采用一个二位共阴极数码管即可。 2、 状态灯显示 该系统要求完成状态灯显示的功能。采用红绿黄三种LED灯一个路口只需三个个状态灯,绿灯通行,红灯停止,黄灯闪烁。 3、 输入方案 该系统要求能手动改变东西与南北的通行时间、红绿灯状态紧急交换处理。运用单片机中四个IO口设置三个按键,三个按键的功能分别为:增加、减少、状态切换和暂停。 4、复位电路与晶振电路复位电路:复位方式有多种,本设计采用按键复位。接线图如图3-1所示, 当按下复位按键时,RST端产生高电平,使单片机复位。复位后,其片内各寄存器状
5、态改变,片内RAM内容不变。晶振电路(如图3-2所示):结合单片机内部产生单片机所需的时钟频率。 图3-1程序仿真接线图 图3-2程序仿真接线图5、 AT89S51的简介 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。图3-3程序仿真接线图4、
6、 软件设计 根据设计要求得完整的交通灯程序源代码包含有:1.定时2.数码管显示3.LED状态切换.4按键读取。#include reg51.h#define uint unsigned int#define uchar unsigned charuchar code num=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/数码管显示数组uchar T0_Count=0,East_time=0,North_time=0;/定时变量,东西倒计时变量,南北倒计时变量 sbit DXD_Red=P30; /东西方向红灯sbit DXD_Yellow
7、=P31; /东西方向黄灯sbit DXD_Green=P32; /东西方向绿灯sbit NBD_Red=P33; /南北方向红灯sbit NBD_Yellow=P34; /南北方向黄灯sbit NBD_Green=P36; /南北方向绿灯sbit DXKZ_GE=P24; /东西方向个位数码管公共端sbit DXKZ_SHI=P25; /东西方向十位数码管公共端sbit NBKZ_GE=P26; /南北方向个位数码管公共端sbit NBKZ_SHI=P27; /南北方向十位数码管公共端sbit Key_Add=P11; /增加按键sbit Key_Dec=P12; /减少按键sbit Key
8、_OK=P13; /确定按键,兼具状态切换sbit LE=P10;void delayms(uint i)/毫秒级延时 uint x,y; for(x=i;x0;x-) for(y=110;y0;y-);void t0_init()TMOD=0X01; /16位定时器0TH0=(65536-50000)/256;TL0=(65536-50000)%256; /定时50msET0=1;/开启中断1EA=1; /开启总中断TR0=1;/开启定时器0void state1()/东西绿灯亮,南北红灯亮DXD_Red=1;DXD_Yellow=1;DXD_Green=0;NBD_Red=0;NBD_Ye
9、llow=1;NBD_Green=1;void state2() /东西黄灯闪烁 DXD_Red=1; DXD_Yellow=0;DXD_Green=1;void state3() /东西红灯亮,南北绿灯亮DXD_Red=0;DXD_Yellow=1;DXD_Green=1;NBD_Red=1;NBD_Yellow=1;NBD_Green=0;void state4()/南北黄灯闪烁NBD_Red=1;NBD_Yellow=0;NBD_Green=1;void Display(uchar num1,num2) / 功能:数码管扫描显示函数/参数:num1,东西方向数码管显示值;num2,南北方
10、向数码管显示值 P0=numnum1%10;/LE=1;LE=0;/写入个位数DXKZ_GE=0;delayms(10);/开启一个数码管公共端,显示一段时间DXKZ_GE=1;/关闭公共端P0=numnum1/10;/LE=1;LE=0;/写入十位数DXKZ_SHI=0;delayms(10);DXKZ_SHI=1;P0=numnum2%10;/LE=1;LE=0; /写入个位数NBKZ_GE=0;delayms(10);NBKZ_GE=1;P0=numnum2/10;/LE=1;LE=0; /写入十位数NBKZ_SHI=0;delayms(10);NBKZ_SHI=1;uchar key_
11、read() /功能:按键读取 参数:back,1,按下增加按键;2,减少按键;3确定键uchar back=0;if(P1!=0xff)delayms(10);/按键延时消抖if(Key_Add=0) back=1;else if(Key_Dec=0) back=2;else if(Key_OK=0) back=3;while(P1!=0xff);return back;void Clear_Display()/关闭所有数码管显示P0=0x00;/LE=1;LE=0; DXKZ_GE=1; DXKZ_SHI=1;NBKZ_GE=1;NBKZ_SHI=1;void main()uchar Ta
12、b=1,key,East_TimeNum=30,North_TimeNum=20;t0_init();Clear_Display(); /开机初始化关闭所有数码管/设置东西方向倒计时while(key!=3)/按下确定键,退出whilekey=key_read();/按键读取函数if(key=1)/按下增加按键East_TimeNum+; else if(key=2)/按下减少按键if(East_TimeNum3)East_TimeNum-;Display(East_TimeNum,0);/数码管同步显示东西方向设定的值key=0;/设置南北方向倒计时while(key!=3) /按下确定键,
13、退出whilekey=key_read();/按键读取函数if(key=1) /按下增加按键North_TimeNum+;else if(key=2) /按下减少按键if(North_TimeNum3)North_TimeNum-;Display(0,North_TimeNum); /数码管同步显示南北方向设定的值key=0;while(1)switch(Tab)case 1: /红绿灯状态1East_time=East_TimeNum; /填充东西倒计时值,大小为已设置好的East_TimeNumTab=2; /切换至下一红绿灯状态state1(); while(East_time!=3)&
14、(key!=3)/倒计时至3秒或按下切换按键,退出whileDisplay(East_time,North_time);/数码管显示key=key_read();/按键读取if(key=3)key=0;East_time=0; /东西倒计时立刻清零Tab=3; /按下切换按键,直接跳到状态3break;case 2: /红绿灯状态2state2();Tab=3;/切换至下一红绿灯状态while(East_time!=0)&(key!=3)/倒计时至0秒或按下切换按键,退出while Display(East_time,North_time);key=key_read();DXD_Yellow=
15、DXD_Yellow; if(key=3)key=0;Tab=3;/按下切换按键,直接跳到状态3East_time=0; /东西倒计时立刻清零break;case 3:/红绿灯状态3North_time=North_TimeNum;Tab=4;/切换至下一红绿灯状态state3();while(North_time!=3)&(key!=3)Display(East_time,North_time);key=key_read();if(key=3) key=0;Tab=1;North_time=0;break;case 4:/红绿灯状态4state4();Tab=1;/切换至下一红绿灯状态whi
16、le(North_time!=0)&(key!=3)Display(East_time,North_time);key=key_read();NBD_Yellow=NBD_Yellow;if(key=3) key=0;Tab=1;North_time=0;break;void Timer_0() interrupt 1 T0_Count+; TH0=(65536-50000)/256;/每50ms进入一次中断函数 TL0=(65536-50000)%256; if(T0_Count=20)/定时20*50ms=1S T0_Count=0;/清零重新计时if(East_time=0)East_t
17、ime=0;elseEast_time-;/东西方向按秒间隔倒计时if(North_time=0)North_time=0;elseNorth_time-;/南北方向按秒间隔倒计时 5、 仿真过程与仿真结果运用ISIS 7 Professional 仿真软件进行程序仿真,按程序要求设置好程序仿真图(图3-1所示),把Keil uVision4生成交通灯程序的.hex文件捎入仿真图中,运行结果如下:图5-1 东西方向通行时间设置通加减按键来控制东西方向通行时间,时间设置好后按下确定键切换至下一个状态。图5-2 南北方向通行时间设置 通加减按键来控制南北方向通行时间,时间设置好后按下确定键切换至下
18、一个状态。图5-3 红绿灯正常工作状态 交通灯进入正常工作状态,按下确定键紧急切换红绿灯状态 图5-4 红绿灯紧急切换6、 安装与调试将所设计的程序写入keil4的工程中,编写好程序且检测无误后,点击编译(project/rebuild all target files)生成.Hex文件。通过PZ-ISP软件(图6-1所示)将.hex文件下载到AT89C51单片机。检测与调试交通灯运行状况。由于电路板焊接问题,硬件功能无法实现,切换到开发板上进行功能测试。图6-1 PZ-ISP程序下载软件操作1:将hex文件捎入单片机后,交通灯便进入东西方向计时设定状态,通过按键的加减来改变东西通行时间(图6-2所示),设定好时间后按确定键,进入操作2。图6-2 程序的初始状况以及东西通行时间的调试操作2:交通灯进入南北方向计时设定状态后,通过按键的加减来改变南北
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 扶贫捐赠管理暂行办法
- 技能人才管理暂行办法
- 军事理论国防建设课件
- 网络自审考试题及答案
- 1.1坚持改革开放 课件 统编版道德与法治 九年级上册
- 2024年贵州省松桃苗族自治县人民医院公开招聘医务工作人员试题带答案详解
- 废旧锂离子电池电极材料的资源化回收与再利用研究
- 养老诈骗课件名称
- 冠心病康复与二级预防
- 河北省部分学校2024-2025学年高二下学期7月期末考试地理试卷(含答案)
- 转岗人员安全知识培训
- 宁夏石嘴山市矿业(集团)有限责任公司招聘笔试题库2024
- DL∕T 2582.1-2022 水电站公用辅助设备运行规程 第1部分:油系统
- 网络设备安装调试作业指导书
- 双人心肺复苏术操作评分标准
- 《人体损伤致残程度分级》
- 工装美缝合同范本
- 铁岭三支一扶真题2023
- 学校超市设计方案(2篇)
- 2024年省石棉县人力资源和社会保障局关于公开考核招考综合类事业单位工作人员高频考题难、易错点模拟试题(共500题)附带答案详解
- 人工智能数据标注 课件
评论
0/150
提交评论