ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:663.68KB ,
资源ID:8020653      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8020653.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计指示灯定时控制系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计指示灯定时控制系统.docx

1、单片机课程设计指示灯定时控制系统微机综合实践课程设计说明书题 目: 指示灯定时控制系统 学 院: 机电工程学院 姓 名: 学 号: 指导老师: 小组成员: 摘要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹, 广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,例如,导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输

2、,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,录像机、摄像机、全自动洗衣机的控制等等,这些都离不开单片机。而我们本次设计的是指示灯定时控制系统,用单片机AT89C51实现。由于单片机编程灵活,我们采用直接面向机器的汇编语言来实现。单片机具有集成度高,通用性好,功能强,体积小,重量轻,耗能低,可靠性高和使用方便等独特优点都能得到体现。关键字:单片机 AT89C51 汇编语言 目录摘要 2前言 5一、课题介绍 61.1课题设计内容 6二、整体方案设计 62.1 系统整体设计: 6三、系统硬件设计 63.1 控制模块 73.2 LED灯显示模块 93.3 按键模块组成 103.4

3、电路原理图 103.5 元件清单 11四、系统软件 124.1程序设计内容 124.2 程序框图 144.4 程序功能扩展 17五、系统调试 20PROTEUS仿真 20六、系统功能 21总结 21参考文献 22附录 22作品实物图 22前言在单片机里面,经常需要用到定时器来获取我们需要的时间,MCS-51单片机内部有两个16为定时/计数器,简称定时器0(T0)和定时器1(T1),他们均可用做定时器或者计数器,为单片机系统提供计数和定时功能,还可作为串行口的波特率发生器,这些功能都可以通过软件来设定、修改与控制。定时器是单片机里最“活跃”的部件之一,很多程序、应用系统都离不开定时器。定时器是单

4、片机应用中解决某类复杂问题的最为有效的方法,应用很广泛。对于简单的应用场合,时间要求较长,不算很精确的场合,用起来相对比较简单。我们本次课程设计基于定时器设计指示灯定时控制系统,希望通过这次课程设计,可以很好的掌握定时器的原理和应用方法。一、课题介绍1.1课题设计内容:用AT89S51的定时/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯闪烁,每个指示闪烁的频率为0.2秒,也就是说,开始L1指示灯以0.2秒的速率闪烁,当2秒定时到来之后,L2开始以0.2秒的速率闪烁,如此循环下去。0.2秒的闪烁速率也由定时/计数器T0来完成。二、整体方案设计2.1 系统整体设计:采用40脚、片内带

5、8kB Flash ROM的AT89S51单片机作为控制核心,通过定时器产生定时来控制P1口的4个LED灯,一旦按下P3.2的按键便可实现暂停闪烁,再按一次接着进行闪烁,按键服务通过查询的方式实现。指示灯定时控制系统结构框图三、系统硬件设计指示灯定时控制系统分别由控制模块,LED灯显示模块,按键模块组成。3.1 控制模块主控制器采用AT89S51。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MC

6、S-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。AT89S51中的并行I/O口P0P3引脚:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口

7、的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉

8、电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为普通I/

9、O口,还有第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(T0定时器的外部计数输入)P3.5 T1(T1定时器的外部计数输入)P3.6 /WR(外部数据存储器的写选通)P3.7 /RD(外部数据存储器的读选通)其中,我们选用P1.0P1.3作为我们LED的输出端口,P3.0和P3.1作为读入写入程序的端口,用ISP下载器烧录程序。AT89S51的晶振及复位电路按典型电路设计,元器件参数如图,晶振频率选为12MHz。PDIP封装的AT89S51管脚图 控制模块原理图3.2 LED灯显示模块通

10、过共阳极接入到P1.0P1.3口,每个LED灯加上分压电阻,防止电流过大损坏LED元件,原理图如下:LED灯显示模块原理图3.3 按键模块组成通过P3.2口接入,按键另一端接地。按键模块原理图3.4 电路原理图本电路需要+5V电压,直接用USB座口通过电源适配器供电,电路图如下:DXP制作的电路图PCB印刷图:3.5 元件清单序号元件数量1STC51单片机12晶振1330pF电容24LED灯551k电阻16220电阻4710k电阻1810uF极性电容19USB母座接口110自锁开关111四引脚按键112排针13铜板四、系统软件4.1程序设计内容我们运用汇编语言来设计程序。汇编语言(Assemb

11、ly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。 AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位

12、定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。 定时/计数器方式选择寄存器(TMOD)-TMOD寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式,TMOD可以用字节传送指令设置其内容,但不能位寻址。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。现在我们选择16位定时工作方式,对于T0来说,最大定时也只有

13、65536us,即65.536ms,无法达到我们所需要的0.2秒和2秒的定时,因此,我们必须通过软件来处理这个问题,我们设定取T0的定时为50ms,即要定时0.2秒需要经过4次的50ms的定时,需要2秒需要经过40次50ms的定时,通过这样来实现我们的时间需要。 通过查阅资料:TMOD寄存器结构D7D6D5D4D3D2D1D0GATAM1M0GATAM1M0T1方式字段T0方式字段M1M0模式说明 00013位定时(计数)器,TH高8位和TL的低5位 01116位定时/计数器 102自动重装入初值的8位定时/计数器113T0分成两个独立的8位计数器,T1没有模式3根据上表,设定TMOD初值为0

14、0000001B,即TMOD01H。给T0定时/计数器的TH0,TL0装入预置初值0.05=(65536-T0初值)1/1200000012T0初值=15536=3CB0HTH0=3CH TL0=B0H4.2 程序框图4.2.1 T0中断服务程序框图4.2.2 主程序流程图主程序主要是通过定时器产生50ms的定时,然后用循环的次数来达到我们所需要的0.2s和2s定时,然后在不同的LED灯进行不断的取反达到闪烁的目的。其中,我们加入了暂停功能,用查询方式实现,只要查询到按键有信号就暂停,查询到第二次的信号就返回主程序。4.3 汇编程序源程序 TIME2S EQU 30H ; TIME2S等价于3

15、0H,用于计算2s的时间TIME02S EQU 31H ; TIME02S等价于31H,用于计数是否达到4个50ms,即0.2sNUM EQU 32H ; NUM等价于32H,NUM用于标记led的号数FLAG EQU 33H; FLAG等价于33H,用于标记按键信号ORG 00;程序存放在存储器00H开始的单元CPL P1.0;将P1.0的高电平取反变为低电平,准备执行主程序 LJMP START;跳转到START标号地址执行程序 ORG 0BH;定时器0的矢量地址 LJMP INT_T0 START: MOV TIME2S,#00H;赋予TIME2S的初值为0 MOV TIME02S,#0

16、0H;赋予TIME02S的初值为0 MOV NUM,#00H; 赋予NUM的初值为0 MOV TMOD,#01H;设置工作模式1 MOV TH0,#03CH;赋定时器的初值,定时时间为50ms MOV TL0,#0B0H SETB TR0;启动定时器0 SETB ET0;打开中断 SETB EA;打开CPU中断 SJMP $ ;等待中断INT_T0: MOV TH0,#03CH;重新装入定时器初值 MOV TL0,#0B0H INC TIME2S;TIME2S计数 MOV A,TIME2S CJNE A,#40,NEXT;TIME2S没有达到40次就跳转到NEXT,否则按顺序执行 MOV TI

17、ME2S,#00H;重新赋0 INC NUM;NUM计数 MOV A,NUM CJNE A,#04H,NEXT;NUM没有达到4次就跳转到NEXT MOV NUM,#00H;重新赋0 NEXT: LCALL SCAN;调用按键扫描子程序,用查询方式INC TIME02S;TIME02S计数 MOV A,TIME02S CJNE A,#4,DONE;如果TIME02S没有达到4次,即450ms=0.2s,就跳转到DONE MOV TIME02S,#00H;重新赋0,以便计算下一个0.2s MOV A,NUM CJNE A,#00H,CH1;NUM为0,将P1.0的led灯不断取反,以便其可以闪烁

18、 CPL P1.0 SJMP DONE CH1: CJNE A,#01H,CH2 ;NUM为0,将P1.1的led灯不断取反,以便其可以闪烁 CPL P1.1 SJMP DONE CH2: CJNE A,#02H,CH3 ;NUM为1,将P1.2的led灯不断取反,以便其可以闪烁 CPL P1.2 SJMP DONE CH3: CJNE A,#03H,CH4 ;NUM为2,将P1.3的led灯不断取反,以便其可以闪烁 CPL P1.3 CH4: SJMP DONE DONE: RETI ;返回中断SCAN: MOV P3,#0FFH ;先将P3的端口全部置1 MOV FLAG,#00H;把标记

19、置0 JNB P3.2,TT0;如果按键端口P3.2检测不到低电平,就返回到主程序 RETSTART1: JNB P3.2,TT0;如果按键按下,即低电平,跳转到TT0AJMP START1TT0: LCALL D1MS;调用延时子程序, JNB P3.2,TT0;如果检测不到高电平,则继续等待按键松开 INC FLAG;按键松开,FLAG标记为1,表示按键一次完成 MOV A,FLAGCJNE A,#01H,GOBACK;如果FLAG标记为1,则返回到START1,继续检测按键,检测到第二次按键的时候,FLAG标记为2,程序跳转到GOBACK,通过该子程序返回到主程序继续运行,从而起到按键一

20、次暂停,再按一次继续运行的作用 AJMP START1;D1MS: MOV R7, #10 ;延时5ms,进行按键消抖 D1:MOV R6, #250; DJNZ R6,$; DJNZ R7,D1 ; RET ;GOBACK: RET END4.4 程序功能扩展4.4.1按键程序设计把按键设计在P3.2,用于检测按键是否按下,按键另一端接地,按键按下时为低电平,我们通过检测P3.2口是否为低电平作为按键按下的信号,延时5ms后继续检测按键是否为高电平,若为高电平证明此次按键已经松开,一次按键完成,用FLAG标志为1。如果FLAG=1,按键扫描程序SCAN继续等待P3.2的下一次低电平,即第二次

21、按键,如果检测到第二次按键完成,FLAG=FLAG+1=2,如果FLAG1,立即返回到主程序继续运行,否则继续扫描按键状态,从而起到暂停的作用。4.4.2 按键的消抖根据查阅相关资料,我们获悉,其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体

22、积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如上图所示。 从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时 5ms 以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU 就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。 由于要求每按下一次,命令被执

23、行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。所以我们在程序中加入D1MS的延时子程序,起到消抖的作用。延时程序 机器周期D1MS: MOV R7, #10 1 D1:MOV R6, #250 1 DJNZ R6,$ 2 DJNZ R7,D1 2 RET 2程序中:内循环一次所需机器周期数=2个内循环共循环250次的机器周期数=2250=500个外循环一次所需机器周期数=(2250+1+2)=503个外循环共循环10次,所以该延时程序总机器周期=(50310+1+2)

24、=5033个即延时5033s5ms五、系统调试打开Keil uVision2,新建一个工程,并且新建一个文本,把以上程序粘贴进去,保存为以”.ASM”后缀的文件,添加到工程的”Source Group 1”中,设置目标”target1”属性,选择输出选项卡,勾选”生成HEX文件(如图),确定。选择工程重新构造所有目标,状态框没有错误之后,生成HEX文件成功。HEX文件在工程的目录下。PROTEUS仿真把生成的HEX文件放入到PROTEUS中的电路图仿真,与预期效果一样。如图:六、系统功能下载好程序之后,插上电源,打开自锁开关,开始L1指示灯以0.2秒的速率闪烁,当2秒定时到来之后,L2开始以0

25、.2秒的速率闪烁,如此循环下去。按下按键时,闪烁暂停,再按一次按键,继续从断点处闪烁。总结单片机课程设计不仅是学习书本的内容,也需要从实践中掌握知识。这门课程确实让我们受到了很多的启发,并学到了很多的知识。我在本次课程设计中主要担任程序的编写,包括扩展功能按键的程序实现方式。加深了我对单片机指令系统中汇编语言各种基本语句的意义及汇编语言程序设计的基本知识和方法,以及单片机与其他设备相连接的输入输出中断等接口技术的理解。使我们从硬件软件的结合上理论联系实际,提高动手能力,从而全面掌握单片机的应用。课设过程中,由于是第一次做单片机,遇到了很多的问题。但是我们敢于面对,团结合作,问题都得到了很好的解决方法。加强了团队合作的精神。在焊接电路过程中,我们需要互相学习焊接技巧,互相帮助、互相鼓励。在编写程序的时候,善于把自己好的算法给大家分享,不会的时候虚心向同学和老师请教。虽然收获很多,但是仍然发现自己很多的不足,例如对接口技术不够了解,对模拟电路的掌握不够。这次课程设计,提高了我的自主学习能力和动手能力,更加清楚认识我自己的不足,让我受益匪浅。参考文献1赵全利.单片机原理及应用教程.北京:机械工业出版社2徐建军.MCS-51系列单片机应用及接口技术.北京:人民邮电出版社3夏继强.单片机实验与实践教程.第2版.北京:北京航空航天大学出版社附录作品实物图

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1