




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机综合实践课程设计说明书题目:指示灯定时控制系统学院:机电工程学院姓名: 学号:指导老师:小组成员:摘要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹,广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,例如,导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,录像机、摄像机、全自动洗衣机的控制等等,这些都离不开单片机。而我们本次设计的是指示灯定时控制系统,用单片机AT89C51实现。由于单片机编程灵活,我们采用直接面向机器的汇编语言来实现。单片机具有集成度高,通用性好,功能强,体积小,重量轻,耗能低,可靠性高和使用方便等独特优点都能得到体现。关键字:单片机AT89C51汇编语言目录摘要 2前言 5一、课题介绍 61.1课题设计内容 6二、整体方案设计 62.1系统整体设计: 6三、系统硬件设计 63.1控制模块 73.2LED灯显示模块 93.3按键模块组成 103.4电路原理图 103.5元件清单 11四、系统软件 124.1程序设计内容 124.2程序框图 144.4程序功能扩展 17五、系统调试 20PROTEUS仿真 20六、系统功能 21总结 21参考文献 22附录 22作品实物图 22
前言在单片机里面,经常需要用到定时器来获取我们需要的时间,MCS-51单片机内部有两个16为定时/计数器,简称定时器0(T0)和定时器1(T1),他们均可用做定时器或者计数器,为单片机系统提供计数和定时功能,还可作为串行口的波特率发生器,这些功能都可以通过软件来设定、修改与控制。定时器是单片机里最“活跃”的部件之一,很多程序、应用系统都离不开定时器。定时器是单片机应用中解决某类复杂问题的最为有效的方法,应用很广泛。对于简单的应用场合,时间要求较长,不算很精确的场合,用起来相对比较简单。我们本次课程设计基于定时器设计指示灯定时控制系统,希望通过这次课程设计,可以很好的掌握定时器的原理和应用方法。
一、课题介绍1.1课题设计内容:用AT89S51的定时/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯闪烁,每个指示闪烁的频率为0.2秒,也就是说,开始L1指示灯以0.2秒的速率闪烁,当2秒定时到来之后,L2开始以0.2秒的速率闪烁,如此循环下去。0.2秒的闪烁速率也由定时/计数器T0来完成。二、整体方案设计2.1系统整体设计:采用40脚、片内带8kBFlashROM的AT89S51单片机作为控制核心,通过定时器产生定时来控制P1口的4个LED灯,一旦按下P3.2的按键便可实现暂停闪烁,再按一次接着进行闪烁,按键服务通过查询的方式实现。指示灯定时控制系统结构框图三、系统硬件设计指示灯定时控制系统分别由控制模块,LED灯显示模块,按键模块组成。3.1控制模块主控制器采用AT89S51。AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。AT89S51中的并行I/O口P0~P3引脚:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为普通I/O口,还有第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(T0定时器的外部计数输入)P3.5T1(T1定时器的外部计数输入)P3.6/WR(外部数据存储器的写选通)P3.7/RD(外部数据存储器的读选通)其中,我们选用P1.0~P1.3作为我们LED的输出端口,P3.0和P3.1作为读入写入程序的端口,用ISP下载器烧录程序。AT89S51的晶振及复位电路按典型电路设计,元器件参数如图,晶振频率选为12MHz。PDIP封装的AT89S51管脚图控制模块原理图3.2LED灯显示模块通过共阳极接入到P1.0~P1.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程序设计内容我们运用汇编语言来设计程序。汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。定时/计数器方式选择寄存器(TMOD)TMOD寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式,TMOD可以用字节传送指令设置其内容,但不能位寻址。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即65.536ms,无法达到我们所需要的0.2秒和2秒的定时,因此,我们必须通过软件来处理这个问题,我们设定取T0的定时为50ms,即要定时0.2秒需要经过4次的50ms的定时,需要2秒需要经过40次50ms的定时,通过这样来实现我们的时间需要。通过查阅资料:TMOD寄存器结构D7D6D5D4D3D2D1D0GATAM1M0GATAM1M0←T1方式字段→←T0方式字段→M1M0模式说明00013位定时(计数)器,TH高8位和TL的低5位01116位定时/计数器102自动重装入初值的8位定时/计数器113T0分成两个独立的8位计数器,T1没有模式3根据上表,设定TMOD初值为00000001B,即TMOD=01H。给T0定时/计数器的TH0,TL0装入预置初值0.05=(65536-T0初值)×1/12000000×12T0初值=15536=3CB0HTH0=3CHTL0=B0H4.2程序框图4.2.1T0中断服务程序框图4.2.2主程序流程图主程序主要是通过定时器产生50ms的定时,然后用循环的次数来达到我们所需要的0.2s和2s定时,然后在不同的LED灯进行不断的取反达到闪烁的目的。其中,我们加入了暂停功能,用查询方式实现,只要查询到按键有信号就暂停,查询到第二次的信号就返回主程序。4.3汇编程序源程序TIME2SEQU30H;TIME2S等价于30H,用于计算2s的时间TIME02SEQU31H;TIME02S等价于31H,用于计数是否达到4个50ms,即0.2sNUMEQU32H;NUM等价于32H,NUM用于标记led的号数FLAGEQU33H;FLAG等价于33H,用于标记按键信号ORG00;程序存放在存储器00H开始的单元CPLP1.0;将P1.0的高电平取反变为低电平,准备执行主程序LJMPSTART;跳转到START标号地址执行程序ORG0BH;定时器0的矢量地址LJMPINT_T0START:MOVTIME2S,#00H;赋予TIME2S的初值为0MOVTIME02S,#00H;赋予TIME02S的初值为0MOVNUM,#00H;赋予NUM的初值为0MOVTMOD,#01H;设置工作模式1MOVTH0,#03CH;赋定时器的初值,定时时间为50msMOVTL0,#0B0HSETBTR0;启动定时器0SETBET0;打开中断SETBEA;打开CPU中断SJMP$;等待中断INT_T0:MOVTH0,#03CH;重新装入定时器初值MOVTL0,#0B0HINCTIME2S;TIME2S计数MOVA,TIME2SCJNEA,#40,NEXT;TIME2S没有达到40次就跳转到NEXT,否则按顺序执行MOVTIME2S,#00H;重新赋0INCNUM;NUM计数MOVA,NUMCJNEA,#04H,NEXT;NUM没有达到4次就跳转到NEXTMOVNUM,#00H;重新赋0NEXT:LCALLSCAN;调用按键扫描子程序,用查询方式INCTIME02S;TIME02S计数MOVA,TIME02SCJNEA,#4,DONE;如果TIME02S没有达到4次,即4×50ms=0.2s,就跳转到DONEMOVTIME02S,#00H;重新赋0,以便计算下一个0.2sMOVA,NUMCJNEA,#00H,CH1;NUM为0,将P1.0的led灯不断取反,以便其可以闪烁CPLP1.0SJMPDONECH1:CJNEA,#01H,CH2;NUM为0,将P1.1的led灯不断取反,以便其可以闪烁CPLP1.1SJMPDONECH2:CJNEA,#02H,CH3;NUM为1,将P1.2的led灯不断取反,以便其可以闪烁CPLP1.2SJMPDONECH3:CJNEA,#03H,CH4;NUM为2,将P1.3的led灯不断取反,以便其可以闪烁CPLP1.3CH4:SJMPDONEDONE:RETI;返回中断SCAN:MOVP3,#0FFH;先将P3的端口全部置1MOVFLAG,#00H;把标记置0JNBP3.2,TT0;如果按键端口P3.2检测不到低电平,就返回到主程序RETSTART1:JNBP3.2,TT0;如果按键按下,即低电平,跳转到TT0AJMPSTART1TT0:LCALLD1MS;调用延时子程序,JNBP3.2,TT0;如果检测不到高电平,则继续等待按键松开INCFLAG;按键松开,FLAG标记为1,表示按键一次完成 MOVA,FLAGCJNEA,#01H,GOBACK;如果FLAG标记为1,则返回到START1,继续检测按键,检测到第二次按键的时候,FLAG标记为2,程序跳转到GOBACK,通过该子程序返回到主程序继续运行,从而起到按键一次暂停,再按一次继续运行的作用AJMPSTART1;D1MS:MOVR7,#10;延时5ms,进行按键消抖D1:MOVR6,#250;DJNZR6,$;DJNZR7,D1;RET;GOBACK:RETEND4.4程序功能扩展4.4.1按键程序设计把按键设计在P3.2,用于检测按键是否按下,按键另一端接地,按键按下时为低电平,我们通过检测P3.2口是否为低电平作为按键按下的信号,延时5ms后继续检测按键是否为高电平,若为高电平证明此次按键已经松开,一次按键完成,用FLAG标志为1。如果FLAG=1,按键扫描程序SCAN继续等待P3.2的下一次低电平,即第二次按键,如果检测到第二次按键完成,FLAG=FLAG+1=2,如果FLAG≠1,立即返回到主程序继续运行,否则继续扫描按键状态,从而起到暂停的作用。4.4.2按键的消抖根据查阅相关资料,我们获悉,其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如上图所示。从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。所以我们在程序中加入D1MS的延时子程序,起到消抖的作用。延时程序机器周期D1MS:MOVR7,#101D1:MOVR6,#2501DJNZR6,$2DJNZR7,D12RET2程序中:内循环一次所需机器周期数=2个内循环共循环250次的机器周期数=2×250=5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025苹果的买卖合同示范文本
- 2025综合承揽合同加工承揽合同
- 2025《资产托管合同模板》
- 2024年电脑刺绣机项目资金筹措计划书代可行性研究报告
- 2024年医用超声换能器系列投资申请报告代可行性研究报告
- 2025太原市房屋租赁合同书
- 2025餐馆租赁合同协议范本
- 2025设备长期租赁合同模板
- 2025年个人消费借款抵押合同
- 2025新天地广场物业管理合同调整新天地广场
- 关于公司企业进行人员总量控制的实施方案
- 物流运输托运单模板
- 防止电力生产重大事故地二十五项反措
- 油田结垢机理及防治技术
- 苏教版五年级数学下册第三单元测试题及答案一
- 天然气管道工程施工设计方案方案
- 变电站第二种工作票(范本)
- 抗滑桩设计计算(验算)Word版
- DCP决策评审要素
- 全球价值链与中国贸易增加值核算报告
- 2019年春苏教版三年级下册《小学生数学报》学习能力测试卷(附答案)
评论
0/150
提交评论