欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    闪烁LED小灯的设计毕业设计论文.doc

    • 资源ID:3975632       资源大小:1.98MB        全文页数:33页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    闪烁LED小灯的设计毕业设计论文.doc

    学生姓名指导老师 职 称课题名称闪烁LED小灯的设计 课题工作内容交通灯的硬件电路主要由单片机控制电路、数码管显示电路、时钟电路、LED显示电路、按键控制电路组成。主要实现:1、交通灯指挥通行的实现:通过时钟电路、LED显示电路与数码管显示电路,实现通行灯的亮、灭与时间的显示。2、特殊情况的处理实现:通过按键控制电路,实现发生交通事故与有救护车要紧急通行时的交通灯状况。 指标要求1、自动控制 2、显示时间 进程安排第一天: 下达任务、了解课题要求、查阅资料; 第二天: 方案论证与确定,采购元器件; 第三天、第四天:硬件制作与调试; 第五天第八天:软件设计与调试; 第九天: 撰写报告; 第十天: 作品掩饰与答辩考核。主要参考文献单片机原理及应用技术 范力旻 电子工业出版社 51系列单片机设计实例 楼然苗 李光飞 北航出版社 单片机的C语言应用程序设计 马忠梅 籍顺心 北京航空航天大学出版社51单片机应用开发案例精选王为青 邱文勋 人民邮电出版社 51系列单片机设计实例楼然苗 李广飞 北京航空航天大学出版社 单片机原理与接口技术胡汉才 清华大学出版社 单片机原理与应用 丁元杰 机械工业出版社 地点起止日期2012.6.106.23 目录第一章、设计目的····································1第二章、硬件设计····································12.1单片机最小系统································12.1.1单片机································12.1.2震荡电路······························2 2.1.3复位电路·························22.2外接电路·····································2 2.2.1串行口扩展·······················3 2.2.2显示电路·························32.2.3十字路口交通灯显示电路················4第三章、软件设计及调试·····························43.1 流程图·······································53.2程序··········································6 3.2.1子程序·····························9 3.2.2延时子程序·························9 3.2.3显示子程序·························103.3软件调试结果与说明························13 第四章、实物调试·······························13第五章、课程设计小结·································14附录A仿真···········································16附录B系统程序········································21元件清单··············································28 第一章 设计目的1.1课题简介近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。1.2课题研究的目的和意义本次课题利用了单片机内部定时器、外部中断,74HC164芯片,LED灯和数码管,解决了原始的人工指挥交通带来的一系列麻烦,大大的提高了实用性、灵活性和可靠性。同时通过这次课题使我们进一步熟悉单片机的内部结构,编程技巧以及相关芯片的了解与应用。第二章硬件设计本系统主要由单片机、74HC164芯片、8位共阳极数码管、LED灯等一系列电路组成,主要完成交通灯十字路口的通行控制及其时间的显示。2.1.最小系统2.1.1单片机:AT89C51AT89C51的工作特性:·内含4KB的FLASH存储器檫写次数1000次; ·内含128字节的RAM;·具有32根可编程I/O线;·具有2个16位编程定时器 ·具有6个中断源,5个中断矢量,2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有1个数据指针DPTR;·具有可编程3级程序锁定位;·AT89C51的工作电源为5(1±0.2)V且典型值为5V;·AT89C51最高工作频率为24MHZ;·AT89C51的编程频率为324MHZ(本次用12MHz),编程启动电流和启动电压分别为1mA、5或12V(本次5V)。电源:采用USB接口连接,提供5V电压。2.1.2震荡电路:本次设计采用12MHz的晶振,电路图如下:图1震荡电路两只电容在20pF100pF之间取值,其取值在60pF70pF时振荡器频率稳定性较高,按照一般经验,外接晶体时两个电容的取值为33pF。2.1.3复位电路: 图2 手动复位2.2外接电路 2.2.1串行口端口扩展74HC16474HC164是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。74HC164是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。 时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。 AT89C51通过P3.0口和P3.1口对其进行片选控制2.2.2显示电路图3 LED数码管显示电路: 本次LED显示电路主要采用74HC164与共阳极数码管相接。通过四片74HC164来控制数码管的输出。74HC164的1,2号脚接到AT89C51的P3.0口,第8脚接到P3.1口。2.2.3十字路口交通灯显示电路:图4 通过LED红、绿、黄三种颜色灯的亮与灭来模仿十字路口的交通灯。交通灯的变化规律:红灯亮20秒,黄灯亮15秒,绿灯亮5秒。假设一个十字路口为东西南北走向。分为五个状态:1初始状态为南北绿灯亮,东西红灯亮;2南北绿灯亮20秒后,转为黄灯闪烁5秒,东西红灯仍亮;3南北黄灯亮5秒后,转为红灯,东西绿灯亮;4东西绿灯亮20秒后,转为黄灯,南北红灯亮;5东西黄灯亮5秒后,转为红灯;南北为绿灯亮。重复循环。交通灯变化过程中用数码管进行计时,以便观察。第三章 软件设计及调试 3.1流程图YN显示时间小于5秒延时子的程序NY时间显示为0状态2 显示时间的子程序给定端口的值延时子程序状态4显示时间子程序给定端口值延时的子程序显示时间小于5秒状态5显示时间的子程序给定端口的值延时子程序时间显示为0状态 1显示时间的子程序给定端口值开始初始化变量状态标志量a=00.5秒定时时间显示时间小于5秒延时子程序a=1a=0返回返回NYNYYNNYY返回状态量a=1返回状态量a=1 NYY3.2程序 3.2.1主程序 void main(void) TMOD=0x01; /设置定时方式1TH0=0x3c; /定时初值50MSTL0=0xb0;TR0=1; /T0溢出中断请求开启EA=1; /总中断开启ET0=1; /T0中断开启 EX0=1; /外部中断INT0开启 IT0=1; /设置开关下降沿有效 EX1=1; /外部中断INT0开启IT1=1; /设置开关下降沿有效ns_time=ns_time_green; /东西南北红黄绿灯时间赋值ew_time=ew_time_red;ew_time_red=ns_time_green+ns_time_yellow; if(!a) /a=0,东西显示19开始倒计时,南北14开始倒计时 ns_time=ew_time_red; ew_time=ns_time_green+ns_time_yellow; while(!a) /a=0,进入循环 if(ew_time-5>0) while(!flag); display(ew_time,ew_time-5); /flag=1,显示东西19,南北14 P1=0xdd; /南北绿灯,东西红灯flag=0; if(ew_time<=5) /东西时间<=5时,南北黄灯闪烁,东西红灯 while(!flag); flag=0; display(ns_time,ns_time); /东西,南北均从5开始倒计时显示 P1=0xdf; /东西红灯,南北黄灯一亮一灭显示 /*p1_4=0;*/ delay(5000); p1_0=p1_0; /南北黄灯所在位,对应取反,实现亮灭变化 delay(5000); if(ew_time=0) /如果东西时间为0,赋值a为1,以实现方向转变 a=1; if(a) /a=1,南北显示19开始倒计时,东西14开始倒计时 ns_time=ew_time_red; ew_time=ns_time_green+ns_time_yellow; while(a) /a=1,进入循环 if(ns_time-5>0) /南北红灯,东西绿灯 while(!flag); display(ns_time-5,ns_time); /flag=0,显示南北19,东西14 delay(5000); /延时子函数调用 P1=0xeb; /南北红扥个,东西绿灯显示if(ns_time-5<=0) /南北时间<=5时南北红灯,东西黄灯闪烁 while(!flag); /flag=0南北显示19开始倒计时,东西14开始计时 flag=0; display(ns_time,ns_time); /东西,南北均从5开始倒计时显示 P1=0xfb; /南北红灯,东西黄灯一亮一灭显示 p1_3=p1_3; /东西黄灯P1.3位取反,以实现黄灯亮灭变化显示 delay(5000); /延时函数调用if(ns_time=0) /如果南北时间为0赋值a为0a=0; 3.2.2 延时子程序:. delay(int t) while(t-);3.2.3显示子程序:display(int ew_time,int ns_time) char table10=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09; /共阳极数码显示0-9对应的字型码 char i,a4; a2=ns_time%10; /南北时间个位数赋值给a2 a3=ns_time/10; /南北时间十位数赋值给a3 a0=ew_time%10; /东西时间个位数赋值给a0 a1=ew_time/10; /东西时间个位数赋值给a1 SM1=0;SM0=0; /串行口工作方式0设定 for(i=3;i>=0;i-) /分别将4位数送到SBUF区域 SBUF=tableai; while(!TI) ; /判断是否发送完一个数据 TI=0; /若发送完,0赋给TI 3.2.4中断程序:void int0(void) interrupt 0 /int0中断子函数,当紧急情况(救护车等)发生时,对应INT0按键调用此函数 int i,j; display(00,00); /显示器显示0000,不再进行倒计时 delay(5000); for(i=0;i<10;i+) /利用flag实现东西南北方向红灯均显示亮,对应东西南北方向车流均停止,处理紧急情况 for(j=0;j<10;j+) delay(50000); while(!flag) P1=0xdb; flag=0; void int1(void) interrupt 2 /int1中断子函数,当紧急情况(救护车等)发生时,对应INT1按键调用此函数 int i,j; display(00,00); /显示器显示0000,不再进行倒计时 for(i=0;i<10;i+) for(j=0;j<10;j+) /利用flag实现主干道东西方向绿灯南北方向红灯 while(!flag) P1=0xeb; flag=0;int t0int()interrupt 1 /t0中断(定时器0中断)子函数 TH0=0x3c; /定时50ms初值设定TL0=0xb0; point-; /20次T0定时次数控制 if(point=0) /如果20次到了,改变显示的东西南北方向的时间 flag=1; point=20; if(ns_time!=0) ns_time-; if(ew_time!=0) ew_time-; 3.3软件调试结果与说明用Keil uVision4软件编程,编译无误后,生成*.hex文件。把hex文件写入Protues仿真软件进行仿真,按图(见附录)连接电路,进行仿真。开始仿真,东西南北红、绿、黄三种灯自动按要求规律运行,同时数码管显示相应时间。按下K,1电路复位。按下K2东西南北红灯全亮,数码管显示为0。按下K3,东西绿灯亮,南北红灯。经多次验证,设计符合要求,则软件调试成功。 第四章 实物调试烧入程序后,接通电源,发现交通灯自动运行,但对应时间不同且数码管显示时间很乱。用万用表检测后,未发现短路、虚焊的情况。经线路分析知,74HC164与AT89C51之间连接顺序有误。改正后,交通灯正常运行但数码管显示数字缺笔划。经检测后,发现是数码管本身损坏,更换数码管后,系统运行正常。 第五章 课程设计小结两周的课程设计结束了,但我学到了很多。课程设计的每一个环节都很重要,需要我们的耐心与细心。一个微小的错误可能会使结果出现很大的差距。在实物测试过程中,发现了很多的小问题。例如:电路按照仿真图焊好后便直接接电源进行测试。实物与仿真电路中的元件存在差异,这是不可忽略的问题。在实物调试前,我们应好好想一下,还有什么没做,是否有遗漏的地方。查找错误要懂得方法,要有针对性,不要胡乱拆线改线。先从AT89C51芯片查起,看其是否工作后,在查线路问题。在无法查出问题时应多注意常识性问题。通过两周的课程设计,明确了软件设计的具体步骤,提高了对定时、中断等编程的认知和理解,同时巩固了所学的知识,掌握了一定的编程技巧。在设计与检测过程中,独立思考的能力很重要。遇到问题,不能一味的回避或求助他人,要学会从基础入手,一步一步地分析问题并解决问题。只有把所学的理论知识与实践相结合起来,才能进一步地提高自身分析问题与解决问题的能力,为将来就业夯实基础。 第六章 参考文献单片机原理及应用技术 范力旻 电子工业出版社 单片机应用系统设计技术 张齐 电子工业出版社 51系列单片机设计实例 楼然苗 李光飞 北航出版社 单片机的C语言应用程序设计 马忠梅 籍顺心 北京航空航天大学出版社51单片机应用开发案例精选王为青 邱文勋 人民邮电出版社 51系列单片机设计实例楼然苗 李广飞 北京航空航天大学出版社 单片机原理与接口技术胡汉才 清华大学出版社 单片机原理与应用 丁元杰 机械工业出版社 附录A 1.proteus 仿真原理图2实物效果图南北绿灯亮19s,东西红灯亮。南北黄灯亮5s,东西红灯。东西绿灯14s,南北红灯。东西黄灯5s,南北红灯发生交通事故时,交通灯红灯全亮,且数码管显示0有特殊情况是只有东西通行。附录B1.系统程序 #include<reg52.h> sbit p1_0=P10; sbit p1_1=P11; sbit p1_2=P12; sbit p1_3=P13; sbit p1_4=P14; sbit p1_5=P15; sbit p0_0=P16; bit flag=0; /定义显示状态控制位 int ns_time; int ew_time; int ns_time_red=20; int ns_time_green=15; int ns_time_yellow=5; int ew_time_red=20; int ew_time_green=15; int ew_time_yellow=5; char point=20; /定时的控制次数初值设定 int a=0; /南北,东西两方向切换状态标志初值设定 delay(int t) /延时子函数 while(t-); display(int time) /显示子函数 char table10=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09; /共阳极数码显示0-9对应的字型码 char i,a2; a0=time%10; /时间个位数赋值给a0 a1=time/10; /时间十位数赋值给a1 SM1=0;SM0=0; /串行口工作方式0设定 for(i=1;i>=0;i-) /将数送到SBUF区域 SBUF=tableai; while(!TI) ; /判断是否发送完一个数据 TI=0; /若发送完,0赋给TI void main(void) TMOD=0x01; /设置定时方式1TH0=0x3c; /定时初值50MSTL0=0xb0;TR0=1; /T0溢出中断请求开启EA=1; /总中断开启ET0=1; /T0中断开启 EX0=1; /外部中断INT0开启 IT0=1; /设置开关下降沿有效 EX1=1; /外部中断INT0开启 IT1=1; /设置开关下降沿有效 ns_time=ns_time_green; /东西南北红黄绿灯时间赋值 ew_time=ew_time_red; ew_time_red=ns_time_green+ns_time_yellow; if(!a) /a=0,东西显示19开始倒计时 ns_time=ew_time_red; ew_time=ns_time_green+ns_time_yellow; while(!a) /a=0,进入循环 if(ew_time-5>0) while(!flag); display(ew_time); /flag=1,显示东西19 P1=0xdd; /南北绿灯,东西红灯flag=0; if(ew_time<=5) /东西时间<=5时,南北黄灯闪烁,东西红灯 while(!flag); flag=0; display(ns_time); /从5开始倒计时显示 P1=0xdf; /东西红灯,南北黄灯一亮一灭显示 /*p1_4=0;*/ delay(5000); p1_0=p1_0;/南北黄灯所在位,对应取反,实现亮灭变化 delay(5000); if(ew_time=0) /如果东西时间为0,赋值a为1,以实现方向转变 a=1; if(a) /a=1,东西14开始倒计时 ns_time=ew_time_red; ew_time=ns_time_green+ns_time_yellow; while(a) /a=1,进入循环 if(ns_time-5>0) /南北红灯,东西绿灯 while(!flag); display(ns_time-5); /flag=0,显示东西14 delay(5000); /延时子函数调用 P1=0xeb; /南北红扥个,东西绿灯显示 if(ns_time-5<=0) /南北时间<=5时南北红灯,东西黄灯闪烁 while(!flag); /flag=0南北显示19开始倒计时 flag=0; display(ns_time,ns_time);/东西,南北均从5开始倒计时显示 P1=0xfb; /南北红灯,东西黄灯一亮一灭显示 p1_3=p1_3;/东西黄灯P1.3位取反,以实现黄灯亮灭变化显示 delay(5000); /延时函数调用if(ns_time=0) /如果南北时间为0赋值a为0a=0; int t0int()interrupt 1 /t0中断(定时器0中断)子函数 TH0=0x3c; /定时50ms初值设定 TL0=0xb0; point-; /20次T0定时次数控制 if(point=0) /如果20次到了,改变显示的东西南北方向的时间 flag=1; point=20; if(ns_time!=0) ns_time-; if(ew_time!=0) ew_time-; void int0(void) interrupt 0 /int0中断子函数,发生事故时的情况 int i,j; display(00); delay(5000); for(i=0;i<10;i+) /利用flag实现东西南北方向红灯均显示亮,对应东西南北方向车流均停止,处理紧急情况 for(j=0;j<10;j+) delay(50000); while(!flag) P1=0xdb; flag=0; void int1(void) interrupt 2 /int1中断子函数,发生紧急情况 int i,j; for(i=0;i<10;i+) for(j=0;j<10;j+) /利用flag实现主干道东西方向绿灯南北方向红灯 while(!flag) P1=0xeb; flag=0; 元件清单元件名称型号数量单片机STC89C51RC1电阻3301274HC16474HC1642电阻10K2共阳极数码管-2红色LED红色LED3绿色LED绿色LED3黄色LED黄色LED3按键-3电容33PF2电解电容10uF1晶振12MHz1

    注意事项

    本文(闪烁LED小灯的设计毕业设计论文.doc)为本站会员(椰子壳)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开