课程设计(论文)基于单片机的倒计时牌的设计_第1页
课程设计(论文)基于单片机的倒计时牌的设计_第2页
课程设计(论文)基于单片机的倒计时牌的设计_第3页
课程设计(论文)基于单片机的倒计时牌的设计_第4页
课程设计(论文)基于单片机的倒计时牌的设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录1. 方案选择21.1题目:倒计时牌 21.2要求 21.3 总体设计 21.4功能说明 22.硬件原理电路图的设计及分析2 2.1 模块方框图 2 2.2 电路图 33程序设计及分析 3 3.1 软件系统模块图 3 3.2各子程序设计4 3.2.1主程序4 3.2.2转换子程序及显示子程序模块 5 3.2.3 定时器t0中断 6 3.2.4 外部中断0 7 3.2.5 外部中断18 3.2.6 延时子程序 104. 参考文献 105. 源程序 11倒计时牌1.方案选择1.1题目:倒计时牌1.2要求:(1)实现日历功能;(2)显示距倒计时时刻还有多长时间(显示天、时、分、秒);(3) 倒计

2、时的时间可人为设定;1.3 总体设计:本倒计时牌以at89c51单片机作为核心,最长可以倒计时100天。可以显示距倒计时时刻还有多长时间,显示格式为天(十位,个位)、时(十位、个位)、分(十位、个位)、秒(十位、个位);倒计时的时间可以人为设定;另外还可以显示当前的日历,显示格式为年(四位),月(两位),日(两位)。倒计时设置时间时的位切换、设定数值、启动定时器、切换日历通过外部中断来实现。倒计时牌天、时、分、秒的计时分别利用100、24、60、60进制自减计数来实现。倒计时的显示电路由led数码管组成, 利用8只数码管显示,从左至右依次显示为天(十位,个位)、时(十位、个位)、分(十位、个位

3、)、秒(十位、个位)及年(四位),月(两位),日(两位)。1.4功能说明1、倒计时牌具有两种工作状态:设置状态和运行状态;2、倒计时牌上电后,显示全零;3、设置倒计时时间时,按k1键,开始设置时间,这是设置的是秒,按一下k2键,秒加1;再按k1键,设置分,依此类推;设置完天后,按k1键则启动定时器,开始倒计时。4、在倒计时牌运行状态下,按k2键,显示当前的日期(年,月,日),再按一下,回到倒计时时间显示。注:int0对应的开关为位切换/启动按钮k1;int1对应的开关为修改/日历切换按钮k2。 本系统最长可倒计时100天,可通过外部中断设置初始时间,及显示当前日历。本系统在设计时考虑到只需倒计

4、时100天,所以显示的日历只是最近3个月的,并且初始日期是在程序中设置的,即不能任意设定初始值。2.硬件原理电路图的设计及分析倒计时牌硬件系统的设计,关键是其显示器接口电路的设计,本设计采用直接利用单片机at89c51的并行i/o口构成倒计时牌显示接口电路,其硬件系统主要包括单片机(包含晶振、电源)、控制电路(设置初始时间以及日历切换)及显示接口电路。2.1 模块方框图硬件系统数码管单片机晶振电源2.2 电路图 3程序设计及分析3.1 软件系统模块图软件系统主程序显示子程序t0溢出中断外部中断0转换子程序外部中断1延时子程序3.2各子程序设计3.2.1主程序主程序(main)的主要功能是初始化

5、程序、转换子程序和调用延时子程序以及数码管的断码表,其流程图如下:初始化开 始转换子程序显示子程序调用延时程序代码(加注释)如下:main: mov tmod,#01h;定时器t0设为方式一 mov r1,#17;日历 mov r2,#00h;切换显示(日历和倒计时的切换) mov r5,#0ah;十次中断产生一秒 mov r3,#00h;利用外部中断0对天、时、分、秒进行切换 mov r4,#00h;当倒计时开始(r3=5)时对倒计时的初值不能再进行设置 mov 30h,#00h;天 mov 31h,#00h;时 mov 32h,#00h;分 mov 33h,#00h;秒 mov 34h,#

6、20;年的前两位 mov 35h,#09;年的后两位 mov 36h,#06;月 mov 37h,#17;日 setb ex0 setb ex1 setb it0;外部中断0为边沿触发 setb it1 ;外部中断1为边沿触发 setb et0 setb ea mov th0,#3ch ;定时器t0置初值 mov tl0,#0b0h/*下面为转换子程序*/loop:/*下面为显示程序*/ disply: /*下面为延时程序*/ dl1ms:mov r7,#02hdl: mov r6,#0ffhdl6: djnz r6,dl6 djnz r7,dl ret3.2.2转换子程序及显示子程序模块转换

7、子程序(loop)将中断服务程序中产生的天、时、分、秒数据,转换成适应led数码管显示的数据,并将其存放在缓冲区中;各个要显示的单元都存放在数据缓冲区中,如下表:显示子程序(disply)动态控制数码管的点亮同时显示数据,完成8个led数码管的动态显示,显示字符通过查表方式实现,在显示过程中调用延时程序;各显示单元显示前须将其数据由存放地址单元拆分后传送至显示缓冲区中,再将其传送至对应的端口。下面是秒的转换子程序和显示模块loop: mov dptr,#dmb ;段码表首地址放进dptr mov a,33h ;对秒进行拆分 mov b,#10 div ab movc a,a+dptr mov

8、46h,a ;秒的十位对应的段码放进缓冲区46h mov a,b movc a,a+dptr mov 47h,a ;秒的个位对应的段码放进缓冲区47h/*下面为显示程序*/ disply: clr p2.7 mov a,47h mov p1,a lcall dl1ms setb p2.7 clr p2.6 mov a,46h mov p1,a lcall dl1ms setb p2.63.2.3 定时器t0中断定时器t0溢出中断(it0p)程序主要用于产生秒的时间基准, 以及在此基础上的天、时、分、秒的正常倒计时以及日期的累加。流程图如下:开 始设置初值是否到一秒秒减1秒是否减至-1将秒置为5

9、9,分减1分是否减至-1将分置为59,时减1时是否减至-1将时置为23,天减1,日期加1中断返回3.2.4 外部中断0:外部中断0(int0p)用于设置倒计时牌时间时切换各个位以及开启定时器,其中切换时以r3为标志位,标志位单元取值实现功能r30初始化值r31设置秒单元r32设置分单元r33设置时单元r34设置天单元r35启动定时器,开始倒计时其中涉及到标志位r4,标志位单元取值实现功能r4 0初始化值,此时可以设置时间r4 1倒计时运行状态,此时不能设置时间其流程图如下:外部中断0开始r3加1r3等于5吗,开启t0,开始倒计时,r3清零,r4置为1中断返回3.2.5 外部中断1:外部中断1(

10、int1p)程序主要用于天、时、分和秒的修改,按一次加1。其中涉及到标志位r2,工作组寄存器数值功能r20送倒计时时间r21送当前日历r22清0其流程图如下:外部中断1 开始r4是否为0r3是否为0r3是否为1秒单元加1秒加到60了吗mmama 吗秒单元清0r3是否为2分单元加1分加到60了吗分单元清0r3是否为3时单元加1时加到24了吗时单元清0r3是否为4天单元加1天加到100了吗天单元清0中断返回r2+1,r2等于2吗r2 清03.2.6 延时子程序 延时程序(dl1ms)主要用于数码管显示时延时,其流程图如下开 始设置循环次数2设置循环次数0ffh0ffh自减是否为0r7自减是否为0结

11、束程序如下:dl1ms:mov r7,#02hdl: mov r6,#0ffhdl6: djnz r6,dl6 djnz r7,dl ret6. 参考文献张毅刚单片机原理及应用(第一版)高等教育出版社,2008年5、源程序 /*该程序最多可产生100天的倒计时,采用6mhz的晶振,外部中断0对初值设置时 的各单元进行切换,同时还控制t0的开始;外部中断1对相应的单元设置初值,每按一次该单元增加1。r3=1设置秒单元,r3=2设置分单元,r3=4设置时单元,r3=4设置天单元,r3=5,t0开始计时。*/ org 0000h ljmp main org 0003h ljmp int0p org

12、00bh ljmp it0p org 0013h ljmp int1p org 0100hmain: mov tmod,#01h;定时器t0设为方式一 mov r1,#17;日历 mov r2,#00h;切换显示(日历和倒计时的切换) mov r5,#0ah;十次中断产生一秒 mov r3,#00h;利用外部中断0对天、时、分、秒进行切换 mov r4,#00h;当倒计时开始(r3=5)时对倒计时的初值不能再进行设置 mov 30h,#00h;天 mov 31h,#00h;时 mov 32h,#00h;分 mov 33h,#00h;秒 mov 34h,#20;年的前两位 mov 35h,#09

13、;年的后两位 mov 36h,#06;月 mov 37h,#17;日 setb ex0 setb ex1 setb it0;外部中断0为边沿触发 setb it1 ;外部中断1为边沿触发 setb et0 setb ea mov th0,#3ch ;定时器t0置初值 mov tl0,#0b0hloop: mov dptr,#dmb ;段码表首地址放进dptr mov a,33h ;对秒进行拆分 mov b,#10 div ab movc a,a+dptr mov 46h,a ;秒的十位对应的段码放进缓冲区46h mov a,b movc a,a+dptr mov 47h,a ;秒的个位对应的段

14、码放进缓冲区47h mov a,32h ;对分进行拆分 mov b,#10 div ab movc a,a+dptr mov 44h,a ;分的十位对应的段码放进缓冲区44h mov a,b movc a,a+dptr mov 45h,a ;分的个位对应的段码放进缓冲区45h mov a,31h ;对时进行拆分 mov b,#10 div ab movc a,a+dptr mov 42h,a ;时的十位对应的段码放进缓冲区42h mov a,b movc a,a+dptr mov 43h,a ;时的个位对应的段码放进缓冲区43h mov a,30h ;对天进行拆分 mov b,#10 div

15、ab movc a,a+dptr mov 40h,a ;天的十位对应的段码放进缓冲区40h mov a,b movc a,a+dptr mov 41h,a ;天的个位对应的段码放进缓冲区41h mov a,37h ;对日期进行拆分 mov b,#10 div ab movc a,a+dptr mov 4eh,a ;日期的十位对应的段码放进缓冲区4eh mov a,b movc a,a+dptr mov 4fh,a ;日期的个位对应的段码放进缓冲区4fh mov a,36h ;对月份进行拆分 mov b,#10 div ab movc a,a+dptr mov 4ch,a ;月份的十位对应的段码

16、放进缓冲区4ch mov a,b movc a,a+dptr mov 4dh,a ;月份的个位对应的段码放进缓冲区4dh mov a,35h ;对年的后两位进行拆分 mov b,#10 div ab movc a,a+dptr mov 4ah,a ;年的后两位的十位对应的段码放进缓冲区4ah mov a,b movc a,a+dptr mov 4bh,a ;年的后两位的个位对应的段码放进缓冲区4bh mov a,34h ;对年的前两位进行拆分 mov b,#10 div ab movc a,a+dptr mov 48h,a ;年的前两位的十位对应的段码放进缓冲区48h mov a,b movc

17、 a,a+dptr mov 49h,a ;年的前两位的个位对应的段码放进缓冲区49h /*下面为显示程序*/ display: clr p2.7 cjne r2,#00h,s7 mov a,47h sjmp s77s7: mov a,4fh s77: mov p1,a lcall dl1ms setb p2.7 clr p2.6 cjne r2,#00h,s6 mov a,46h sjmp s66s6: mov a,4ehs66: mov p1,a lcall dl1ms setb p2.6 clr p2.5 cjne r2,#00h,s5 mov a,45h sjmp s55s5: mov

18、a,4dhs55: mov p1,a lcall dl1ms setb p2.5 clr p2.4 cjne r2,#00h,s4 mov a,44h sjmp s44s4: mov a,4chs44: mov p1,a lcall dl1ms setb p2.4 clr p2.3 cjne r2,#00h,s3 mov a,43h sjmp s33s3: mov a,4bhs33: mov p1,a lcall dl1ms setb p2.3 clr p2.2 cjne r2,#00h,s2 mov a,42h sjmp s22s2: mov a,4ahs22: mov p1,a lcall

19、 dl1ms setb p2.2 clr p2.1 cjne r2,#00h,s1 mov a,41h sjmp s11s1: mov a,49hs11: mov p1,a lcall dl1ms setb p2.1 clr p2.0 cjne r2,#00h,s0 mov a,40h sjmp s00s0: mov a,48hs00: mov p1,a lcall dl1ms setb p2.0 ljmp loop it0p: mov th0,#3ch mov tl0,#0b0h djnz r5,return mov r5,#0ah mov a,33h dec a mov 33h,a cjn

20、e a,#0ffh,return mov 33h,#3bh mov a,32h dec a mov 32h,a cjne a,#0ffh,return mov 32h,#3bh mov a,31h dec a mov 31h,a cjne a,#0ffh,return mov 31h,#17h mov a,30h dec a mov 30h,a push acc mov a,37h inc a inc r1 mov 37h,a cjne r1,#31,go1 mov 36h,#07h mov 37h,#01hgo1: cjne r1,#62,go2 mov 36h,#08h mov 37h,#01hgo2: cjne r1,#93,go3 mov 36h,#09h mov 37h,#01hgo3: cjne r1,#123,go4 mov r1,#17 mov 36h,#06h mov 37h,#17 go4: pop acc cjne a,#0ffh,return clr tr0 mov 30h,#00h mov 31h,#00h mov 32h,#00h mov 33h,#00hreturn:reti dl1ms:mov r7,#02hdl: mov r6,#0ffhdl6: djnz r6,dl6 dj

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论