基于单片机的交通灯课程设计报告.doc

上传人:叶*** 文档编号:36113226 上传时间:2022-08-25 格式:DOC 页数:19 大小:83.50KB
返回 下载 相关 举报
基于单片机的交通灯课程设计报告.doc_第1页
第1页 / 共19页
基于单片机的交通灯课程设计报告.doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《基于单片机的交通灯课程设计报告.doc》由会员分享,可在线阅读,更多相关《基于单片机的交通灯课程设计报告.doc(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、单片机课程设计专业:机电一体化学号:姓名:指导教师: 成都工业学院2011年07月01日姓名:班级:11411学号:46课题编号:6课题名称:交通灯控制基本功能: 1利用单片机完成交通信号灯控制。2该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口。3在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外4设置了左转和右转灯,左转绿灯可以左转;左转红灯左转停;右转转和左转类似。5.设置了人行灯;直行绿灯亮,左右转红灯亮则人行绿灯亮;有转弯或直行为红灯则人行为红灯。6设置紧急状态;当紧急按钮按下各方向全部变红灯。扩展功能:无成绩:评审

2、老师:一、 需求分析:(叙述该设计的应用场合、设计目的、立题意义)设计目的:模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等应用场合:应用于十字路口。立题意义:设计一个功能多点的交通灯,节省时间且交通更流畅。二、 硬件设计方案(画出系统框图即数据流向、硬件所用的器件,如单色灯、单片机等,并将芯片原理简要介绍)硬件所用器件:万用板1块AT89C51芯片1块共阳8段数码管2*4个导线若干12MHz晶振1个30P磁片电容2个74LS042块74LS04片座

3、2个51芯片座1个74LS103个74LS10片座1个按键2个1OK排阻1个10K电阻1个LED发光二极管3*20个数码管座2*4个5V电源1个电解电容1个AT89C51芯片原理:AT89系列单片机是ATMEL公司最早推出,也是功能最简单的一个系列,该系列都是内含Flash程序存储器的MCS-51兼容单片机,AT89C51就是其中一款可在线编程ISP Flash单片机。AT89C51具有价格便宜、性能优良、可在线编程等特点。其具体性能参数如下:兼容MCS-51内核单片机;4KB可在线编程Flash存储器,可有效擦除/读写1000次;工作电压范围4.05.5V;完全静态工作:0Hz33MHz;R

4、OM三级加密模式;128*8bit内置RAM;32位可控I/O引脚;2个16位的时钟源;5个中断源;全双工UART串行接口;低功耗工作模式;看门狗计时器;两个数据指针;快速编程特性。单片机LED显示三色灯显示系统硬件框图单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB方便。南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时三、 软件设计方案(画流程图、写出算法分析)根据设计要求,程序框图如图所示。软件可由汇编语言完成,也可由C语言完成。软件设计可以分为以下几个功能模块:计时程序模块:为定时器的中断服务子程序,完成0.05秒(或其他时间)

5、和1秒的时间定时。 显示程序模块:完成60个发光二极管(实际上只需驱动30个)和8个LED数码管的显示驱动。开始初始化判断当前状态调用正常运行子程序调用紧急情况子程序程序流程图开始参数初始化数码管显示子程序紧急中断子程序中断处理系统程序流程图四、 调试(针对该设计所用到的软件调试和硬件调试的方法)软件调试: 软件调试主要是利用proteus仿真软件完成电路的搭建,运行以发现设计中的错误及时改正。硬件调试:硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下:(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。(2)参照原理

6、图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。系统功能调试: 通过软件仿真显示,系统基本能完成要求。五、 心得体会(课程设计所遇到的问题以及解决方法,所收获到的知识点等)做课程设计是为了让我们对平时学习的理论知识与实际操作相结合,在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高,学会将知识应用于实际的方法,提高分析和解决问题的能力。对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步

7、完成了电路设计方案。虽然感觉交通灯程序没什么难的,就是数码管倒计时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来,比如在用定时器中断后用一些选择语句程序由于判断条件有疏漏程序很容易跑飞;但是最后经过我们的不断努力,还是写出来正确的代码。接下来就是仿真了,在仿真也遇到了一些问题比如一些元器件的代号不知道;还有一开始交通灯想试试好不好用就接了一个脚怎么改程序都不亮;后来才试出来必须三个脚都接才能亮。通过这次课设,对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我们的发现、分析、解决问题的能力。经历了从最初的设计到最后

8、做出产品的开发过程,提高了对专业的认识及兴趣,对于我们工科来说,对以后就业有及其重大的影响。附录1:(程序代码)#include#define uchar unsigned char /定义为uchar类型#define uint unsigned int /定义为uint类型sbit dxgew=P36;sbit nbgew=P34;sbit dxsw=P37;sbit nbsw=P35;sbit nbr=P00; sbit nby=P01;sbit nbg=P02;sbit dxr=P03;sbit dxy=P04;sbit dxg=P05;sbit nbyzr=P06;sbit nbyz

9、y=P07;sbit nbyzg=P20;sbit dxyzr=P21;sbit dxyzy=P22;sbit dxyzg=P23;sbit nbzzr=P24;sbit nbzzy=P25;sbit nbzzg=P26;sbit dxzzr=P27;sbit dxzzy=P30;sbit dxzzg=P31;uchar code table=0xc0,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数码管显示09 uchar t=7,i;uchar time_Count; /进行计时uchar ge=10,shi=3; /要显示的个位和

10、十位void delay(uchar z) /一个延时函数uchar a,b;for(a=0;a150;a+) for(b=0;bz;b+); void Init_Timer()/定时器的初始化TMOD=0x01;TH0=(65536-5000)/256;TL0=(65536-5000)%256;ET0=1;TR0=1;EA=1; void Seg_Disp()/将个位十位分别显示在数码管上面dxsw=0;nbsw=0;dxgew=1;nbgew=1;P1=tablege;delay(1);dxgew=0;nbgew=0;nbsw=1;dxsw=1; P1=tableshi;delay(1);

11、void main()/程序运行的主函数 SP=0x6f;P1=0xff;dxgew=0;nbgew=0;dxsw=0;nbsw=0;EX0=1;/开外部中断0TCON=0x00; dxr=0; dxy=0; dxg=0; nbr=0; nby=0; nbg=0; dxyzr=0; dxyzy=0;dxyzg=0;nbyzr=0;nbyzy=0;nbyzg=0;dxzzr=0;dxzzy=0;dxzzg=0;nbzzr=0; nbzzy=0; nbzzg=0;Init_Timer();while(1) Seg_Disp(); if(time_Count=200) time_Count=0; g

12、e-; if(t=7) dxr=1; dxy=0; dxg=0; nbr=0; nby=0; nbg=1; dxyzr=0; dxyzy=0;dxyzg=1;nbyzr=0;nbyzy=0;nbyzg=1;dxzzr=1;dxzzy=0;dxzzg=0;nbzzr=1; nbzzy=0; nbzzg=0; if(ge=0) ge=10; shi-; if(shi=0) shi=3; t=6; if(t=6) dxr=1; dxy=0; dxg=0; nbr=0; nby=0; nbg=1; dxyzr=1; dxyzy=0;dxyzg=0;nbyzr=1;nbyzy=0;nbyzg=0;dxz

13、zr=1;dxzzy=0;dxzzg=0;nbzzr=1; nbzzy=0; nbzzg=0; if(ge=0) ge=10; shi-; if(shi=1) shi=3; t=5; if(t=5) for(i=0;i5;i+) nbg=0; delay(30000);nbg=1; nby=1; if(ge=0) ge=10; shi-; if(shi=2) shi=3; t=4; if(t=4) dxr=1; dxy=0; dxg=0; nbr=1; nby=0; nbg=0; dxyzr=0; dxyzy=0;dxyzg=1;nbyzr=0;nbyzy=0;nbyzg=1;dxzzr=1;

14、dxzzy=0;dxzzg=0;nbzzr=0; nbzzy=0; nbzzg=1; if(ge=0) ge=10; shi-; if(shi=0) shi=3; t=3; if(t=3) dxr=0; dxy=0; dxg=1; nbr=1; nby=0; nbg=0; dxyzr=0; dxyzy=0;dxyzg=1;nbyzr=0;nbyzy=0;nbyzg=1;dxzzr=1;dxzzy=0;dxzzg=0;nbzzr=1; nbzzy=0; nbzzg=0; if(ge=0) ge=10; shi-; if(shi=0) shi=3; t=2; if(t=2) dxr=0; dxy=

15、0; dxg=1; nbr=1; nby=0; nbg=0; dxyzr=1; dxyzy=0;dxyzg=0;nbyzr=1;nbyzy=0;nbyzg=0;dxzzr=1;dxzzy=0;dxzzg=0;nbzzr=1; nbzzy=0; nbzzg=0; if(ge=0) ge=10; shi-; if(shi=1) shi=3; t=1; if(t=1) for(i=0;i5;i+) dxg=0; delay(30000);dxg=1; nby=1; if(ge=0) ge=10; shi-; if(shi=2) shi=3; t=0; if(t=0) dxr=1; dxy=0; dx

16、g=0; nbr=1; nby=0; nbg=0; dxyzr=0; dxyzy=0;dxyzg=1;nbyzr=0;nbyzy=0;nbyzg=1;dxzzr=0;dxzzy=0;dxzzg=1;nbzzr=1; nbzzy=0; nbzzg=0; if(ge=0) ge=10; shi-; if(shi=0) shi=3; t=7; void timer0() interrupt 1 using 1 /定时器0的操作计时TH0=(65536-5000)/256;TL0=(65536-5000)%256; time_Count+; void exter0() interrupt 0 dxr=1; dxy=0; dxg=0; nbr=1; nby=0; nbg=0; dxyzr=1; dxyzy=0;dxyzg=0;nbyzr=1;nbyzy=0;nbyzg=0;dxzzr=1;dxzzy=0;dxzzg=0;nbzzr=1; nbzzy=0; nbzzg=0; 附录2:(电路原理图)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 公文通知

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com