单片机交通灯实训报告.pdf

上传人:tbuqq 文档编号:5019174 上传时间:2020-01-29 格式:PDF 页数:19 大小:3.50MB
返回 下载 相关 举报
单片机交通灯实训报告.pdf_第1页
第1页 / 共19页
单片机交通灯实训报告.pdf_第2页
第2页 / 共19页
单片机交通灯实训报告.pdf_第3页
第3页 / 共19页
单片机交通灯实训报告.pdf_第4页
第4页 / 共19页
单片机交通灯实训报告.pdf_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《单片机交通灯实训报告.pdf》由会员分享,可在线阅读,更多相关《单片机交通灯实训报告.pdf(19页珍藏版)》请在三一文库上搜索。

1、. . 机电工程学院课程设计报告 课程名称:单片机课程设计 专业班级: 13电本 2 班 学号: 2013041632 学生姓名:罗 炜 指导教师:王清辉、何文丰 完成时间: 报告成绩: 评阅意见: 评阅教师日期 . . 交通灯设计 一、设计任务与要求 设计基本要求: (1)车辆通行繁忙的十字交叉路口,设计一交通灯控制器,设东西方向通行时间为 30 秒,当剩余 3 秒时黄灯亮,南北方向通行时间为20 秒,当剩余 3 秒时黄灯亮。 (2)东西、南北方向各用三个(绿、黄、红)LED表示,并用数码管显示东西、南 北方向的剩余时间。 (3)可利用按键修改时间参数,可以利用按键切换东西南北交通灯的当前状

2、态(即 立刻东西由红变绿,南北有绿变红,并按设定的时间工作)。 二、方案设计与论证 交通灯的工作方式及状态设计: 状态 东西南北 通行时间注 红黄绿红黄绿 1、东西绿灯南北红灯110 011 27 秒 (时间可设) 交通灯从状态 1至 4 不断循环,通过 外设按钮实现状 态 1 和 3 的切换 2、东西黄灯南北红灯101 011 3 秒(黄灯闪烁) 3、东西红灯南北绿灯011 110 17 秒 (时间可设) 4、东西红灯南北黄灯011 101 3 秒(黄灯闪烁) 表 2-1 :交通灯的工作状态表 根据表 2-1 所示可将交通灯的工作状态设为以下几个步骤: 1 、初始状态时即为东西方向绿灯通行2

3、7 秒+3 秒黄灯,此时南北红灯亮。 2 、随后是南北方向绿灯通行17秒+3秒黄灯,此时东西红灯亮。 3、通过按模式选择键一次来切换东西南北交通灯的当前状态。(通过设置定时计时 器 T1实现交通灯的计时) 4、通过按模式选择键第二次切换至南北方向红绿灯的计时设置,通过加减按键来 确定南北方向红绿灯的计时数。 5、确定南北方向计数值后,通过按模式选择键第三次切换至东西方向红绿灯的计 . . 时设置,通过加减按键来确定东西方向红绿灯的计时数。 6、确定交通灯计时数后再按下模式选择键后,交通灯便进入工作状态。 时间计时的实现:采用定时中断实现秒的精确计时(详细方案入下列程序设计所 示) 。 按键输入

4、的实现: 通过编写按键读取函数, 来实现交通灯的状态以及时间值得设定 (详细方案入下列程序设计所示) 。 . . 图 2-1 程序设计流程框图 三、硬件电路设计 1、 倒计时显示 该系统要求完成倒计时的功能。因只需显示数字, 基于上述原因, 我完全采用数码 管显示,四个路口分别采用一个二位共阴极数码管即可。 2、 状态灯显示 该系统要求完成状态灯显示的功能。 采用红绿黄三种LED灯一个路口只需三个个状 态灯,绿灯通行,红灯停止,黄灯闪烁。 3、 输入方案 该系统要求能手动改变东西与南北的通行时间、红绿灯状态紧急交换处理。 运用单 片机中四个 IO 口设置三个按键,三个按键的功能分别为:增加、减

5、少、状态切换和暂 停。 4 、复位电路与晶振电路 复位电路:复位方式有多种,本设计采用按键复位。接线图如图3-1 所示, 当按 下复位按键时, RST端产生高电平, 使单片机复位。 复位后,其片内各寄存器状态改变, 片内 RAM 内容不变。 晶振电路 ( 如图 3-2 所示):结合单片机内部产生单片机所需的时钟频率。 图 3-1 程序仿真接线图图 3-2 程序仿真接线图 5、AT89S51的简介 AT89S51是一个低功耗,高性能 CMOS 8 位单片机,片内含 4k Bytes ISP(In-system programmable) 的可反复擦写 1000次的 Flash 只读程序存储器,器

6、件采用 ATMEL 公司的 高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及 80C51引脚结构,芯片 . . 内集成了通用 8位中央处理器和ISP Flash 存储单元, AT89S51 在众多嵌入式控制应用 系统中得到广泛应用。 图 3-3 程序仿真接线图 四、软件设计 根据设计要求得完整的交通灯程序源代码包含有:1. 定时 2. 数码管显示 3.LED状 态切换 .4 按键读取。 #include “reg51.h“ #define uint unsigned int #define uchar unsigned char uchar code num=0x3f,0x06,0

7、x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/数码管显示数组 uchar T0_Count=0,East_time=0,North_time=0;/定时变量,东西倒计时变量,南北倒计时变量 sbit DXD_Red=P30; /东西方向红灯 sbit DXD_Yellow=P31; /东西方向黄灯 sbit DXD_Green=P32; /东西方向绿灯 sbit NBD_Red=P33; /南北方向红灯 . . sbit NBD_Yellow=P34; /南北方向黄灯 sbit NBD_Green=P36; /南北方向绿灯 sbit DXKZ_GE=P24;

8、/东西方向个位数码管公共端 sbit DXKZ_SHI=P25; /东西方向十位数码管公共端 sbit NBKZ_GE=P26; /南北方向个位数码管公共端 sbit NBKZ_SHI=P27; /南北方向十位数码管公共端 sbit Key_Add=P11; /增加按键 sbit Key_Dec=P12; /减少按键 sbit Key_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;

9、 /16位定时器0 TH0=(65536-50000)/256; TL0=(65536-50000)%256; /定时 50ms ET0=1; / 开启中断1 EA=1; /开启总中断 TR0=1; / 开启定时器0 void state1() / 东西绿灯亮,南北红灯亮 DXD_Red=1; DXD_Yellow=1; DXD_Green=0; NBD_Red=0; . . NBD_Yellow=1; NBD_Green=1; void state2() /东西黄灯闪烁 DXD_Red=1; DXD_Yellow=0; DXD_Green=1; void state3() /东西红灯亮,南北

10、绿灯亮 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, 南北方向数码管显示值 P0=numnum1%10;/LE=1;LE=0; / 写入个位数 DXKZ_GE=0;delayms(10); / 开启一个数码管公共端,显示一段时

11、间 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_read() /功能:按键读取参数: back,1,按下增加按键;2,减少按键;3 确定 键 uchar back=0

12、; 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 Tab=1,key,East_TimeNum=30,North_TimeN

13、um=20; t0_init(); Clear_Display(); /开机初始化关闭所有数码管 / 设置东西方向倒计时 while(key!=3) / 按下确定键,退出while key=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) /按下确定键,退出while key

14、=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: /红绿灯状态1 East_time=East_TimeNum; /填充东西倒计时值,大小为已设置好的East_TimeNum Tab=2; /切换至下一红绿灯状态 state1(); while(East_t

15、ime!=3)/数码管显示 key=key_read(); / 按键读取 if(key=3) key=0;East_time=0; /东西倒计时立刻清零 Tab=3; /按下切换按键,直接跳到状态3 break; case 2: /红绿灯状态2 state2();Tab=3; / 切换至下一红绿灯状态 while(East_time!=0) key=key_read(); DXD_Yellow=DXD_Yellow; if(key=3) key=0;Tab=3; / 按下切换按键,直接跳到状态3 East_time=0; /东西倒计时立刻清零 break; case 3: / 红绿灯状态3 N

16、orth_time=North_TimeNum;Tab=4; / 切换至下一红绿灯状态 state3(); while(North_time!=3) key=key_read(); if(key=3) key=0;Tab=1;North_time=0; break; case 4: / 红绿灯状态4 state4();Tab=1; / 切换至下一红绿灯状态 . . while(North_time!=0) key=key_read(); NBD_Yellow=NBD_Yellow; if(key=3) key=0;Tab=1;North_time=0; break; void Timer_0(

17、) 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_time=0; else East_time-; / 东西方向按秒间隔倒计时 if(North_time=0) North_time=0; else North_time-; / 南北方向按秒间隔倒计时 . . 五、仿真过程与仿真结果 运用 ISIS 7 Profession

18、al 仿真软件进行程序仿真,按程序要求 设置好程序仿真图(图3-1 所示) ,把 Keil uVision4生成交通灯程序 的.hex 文件捎入仿真图中,运行结果如下: 图 5-1 东西方向通行时间设置 通加减按键来控制东西方向通行时间,时间设置好后按下确定键 切换至下一个状态。 . . 图 5-2 南北方向通行时间设置 通加减按键来控制南北方向通行时间,时间设置好后按下确定键 切换至下一个状态。 图 5-3 红绿灯正常工作状态 交通灯进入正常工作状态,按下确定键紧急切换红绿灯状态 . . 图 5-4 红绿灯紧急切换 六、安装与调试 将所设计的程序写入keil4的工程中,编写好程序且检测无误后

19、, 点击编译( project/rebuild all target files)生成 .Hex 文件。通 过 PZ-ISP 软件(图 6-1 所示)将 .hex 文件下载到AT89C51单片机。 检测与调试交通灯运行状况。由于电路板焊接问题,硬件功能无法实 现,切换到开发板上进行功能测试。 . . 图 6-1 PZ-ISP 程序下载软件 操作 1:将 hex 文件捎入单片机后,交通灯便进入东西方向计时 设定状态, 通过按键的加减来改变东西通行时间(图 6-2 所示) ,设定 好时间后按确定键,进入操作2。 图 6-2 程序的初始状况以及东西通行时间的调试 操作 2:交通灯进入南北方向计时设定

20、状态后,通过按键的加减 来改变南北通行时间 (图 6-3 所示) ,设定好时间后按确定键,进入操 作 2。 . . 图 6-3 状态切换至南北通行时间的调试 操作 3:交通灯各个方向计时设定好后进入工作状态,通过确定 按键,来紧急切换红绿灯状态。再次按下确定键, 便进入操作 1 状态。 图 6-4 交通灯的工作状态以及红绿灯状态的紧急切换 经安装与调试后得,所设计的程序符合交通灯的设计要求。 硬件实物图 . . 七、结论与心得 结论:虽然所设计的交通灯符合本次实训的所有有要求,但还是 有很多不足之处,要把我所设计的交通灯与实际中的交通灯相比还是 有很多缺陷的,比如缺少各个方向左拐通行的指示功能

21、,缺少人行横 道的交通指示功能。针对上述不足之处,在今后的学习中会不断的加 以完善。 心得:通过本次实训使我明白了,单片机实训跟单片机实验完全 不同,自身的不足之处在这次实训中都一一暴露出来了,对于单片机 的了解还是不够的,完全只停留在表面,对于单片机深层次的知识掌 握的不够,无法很灵活的使用单片机的各个语句,这些不足之处在实 训的操作下和老师的考察下都显露无疑。在今后的学习中我定会加强 对单片机的理论与实际操作的学习,对于自身不足之处定会加以改正。 . . 八、参考文献 1 阎石数字电子技术基础(第三版),北京:高等教育出版社,1989。 2 苏家健,曹柏荣,汪志锋. 单片机原理及应用技术. 北京:高等教育出社, 2004. 3 单片机原理及应用张毅刚 , 高等教育出版社。 4单片机实验教程彭冬明、韦友春,北京理工大学出版社。 单纯的课本内容,并不能满足学生的需要,通过补充,达到内容的完善 教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1