单片机课程设计-基于汇编语言的数字钟设计.doc_第1页
单片机课程设计-基于汇编语言的数字钟设计.doc_第2页
单片机课程设计-基于汇编语言的数字钟设计.doc_第3页
单片机课程设计-基于汇编语言的数字钟设计.doc_第4页
单片机课程设计-基于汇编语言的数字钟设计.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

安阳师范学院物理与电气工程学院物电学院单片机课程设计报告数字钟姓 名: 学 号: 指导教师: 成 绩: 日期: 2012.6.14 理工类样张(上边25mm,下边距25mm,左边距20mm,右边距20mm)基于汇编语言的数字钟设计摘要:该数字钟利用at89c51来设计数字钟,数字钟包括三功能,行列键盘校时、秒表、时钟。校时时时钟和秒表均不工作,秒表工作时,时钟不显示但是继续走,到显示的时候能够准确的显示。时钟工作时,秒表不工作。关键词:at89c51、4*4独立行列式键盘、汇编、读键、键处理、数字钟、秒表各功能单独实现秒表1、 思路: 秒表跑秒的时候,时钟还在工作,所以秒表的存储器跟时钟的存储器不一样,虽然这里没有时分秒之说,但是为了与时钟的思路差不多所以就相当于时分秒了, 时、分、秒分别放在“43h”、“44h”、“45h”,拆分后放在时的十位放在“75h”,时的个位放在“74h”;拆分后分的十位放在“73h”,分的个位放在“72h”;拆分后秒的十位放在“71h”,秒的个位放在“70h”。将时的十位“75h”通过查询的方式查找到相应bcd七段码放在“85h”,将时的个位“74h”通过查询的方式查找到相应bcd七段码放在“84h”,将分的十位“73h”通过查询的方式查找到相应bcd七段码放在“83h”,将分的个位“72h”通过查询的方式查找到相应bcd七段码放在“82h”,将秒的十位“71h”通过查询的方式查找到相应bcd七段码放在“81h”,将秒的个位“70h”通过查询的方式查找到相应bcd七段码放在“80h”。 2、实现秒表的程序 org 0000hljmp startorg 001bhljmp it1porg 1000hstart: mov tmod,#20hmov 62h,#40mov 43h,#0mov 44h,#0mov 45h,#0setb et1setb ea mov th1,#6mov tl1,#6setb tr1 abc2: setb p3.4 jb p3.4,holdjb p3.5,def2mov 43h,#0mov 44h,#0mov 45h,#0setb ea def2: lcall chaifen2 lcall zhuanhuan2lcall disp2ljmp abc2 hold:clr ea lcall chaifen2 lcall zhuanhuan2lcall disp2ljmp abc2it1p: djnz 62h,returnmov 62h,#40mov a,#01hadd a,45hda amov 45h,acjne a,#100h,returnmov 45h,#00hmov a,#01hadd a,44hda amov 44h,acjne a,#60h,returnmov 44h,#00hmov a,#01hadd a,43hda amov 43h,acjne a,#60h,returnmov 43h,#00hreturn: retichaifen2:mov r2,#3 mov r0,#43h mov r1,#75h loop4:mov a,r0 anl a,#0f0hswap amov r1,adec r1mov a,r0anl a,#0fhmov r1,adec r1inc r0djnz r2,loop4retzhuanhuan2:mov r0,#70h mov r1,#80hmov r2,#6 dp102:mov dptr,#segtab mov a,r0movc a,a+dptrmov r1,ainc r1inc r0djnz r2,dp102ret disp2:mov r0,#80h mov r7,#6mov r3,#0feh loop22:mov a,#0ffh mov p1,a mov a,r0 mov p0,amov a,r3mov p1,alcall delayrl amov r3,ainc r0djnz r7,loop22retdelay: mov r4,#20 loop3: mov r5,#25djnz r4,loop3retsegtab:db 3fh,06h,5bh,4fh,66h,6dh db 7dh,07h,7fh,6fh,77h,7ch db 58h,5eh,7bh,71h,00h,40h end3、 程序流程图 秒表主程序流程图 秒表中断服务子程序it1p4、仿真图数字钟1、思路: 时、分、秒分别放在“40h”、“41h”、“42h”,拆分后放在时的十位放在“35h”,时的个位放在“34h”;拆分后分的十位放在“33h”,分的个位放在“32h”;拆分后秒的十位放在“31h”,秒的个位放在“30h”。将时的十位“35h”通过查询的方式查找到相应bcd七段码放在“55h”,将时的个位“34h”通过查询的方式查找到相应bcd七段码放在“54h”,将分的十位“33h”通过查询的方式查找到相应bcd七段码放在“53h”,将分的个位“32h”通过查询的方式查找到相应bcd七段码放在“52h”,将秒的十位“31h”通过查询的方式查找到相应bcd七段码放在“51h”,将秒的个位“30h”通过查询的方式查找到相应bcd七段码放在“50h”。2、实现数字钟的程序 org 0000hljmp startorg 000bhljmp it0porg 1000hstart: mov tmod,#02hmov 60h,#40mov 61h,#100mov 40h,#0mov 41h,#0mov 42h,#0setb et0setb eamov th0,#6mov tl0,#6setb tr0 abc1: lcall chaifen1 lcall zhuanhuan1lcall disp1ljmp abc1it0p: push acc djnz 61h,return mov 61h,#100djnz 60h,returnmov 60h,#40mov a,#01hadd a,42hda amov 42h,acjne a,#60h,returnmov 42h,#00hmov a,#01hadd a,41hda amov 41h,acjne a,#60h,returnmov 41h,#00hmov a,#01hadd a,40hda amov 40h,acjne a,#24h,returnmov 40h,#00hreturn: pop accretichaifen1:mov r2,#3 mov r0,#40h mov r1,#35h loop41:mov a,r0 anl a,#0f0hswap amov r1,adec r1mov a,r0anl a,#0fhmov r1,adec r1inc r0djnz r2,loop41retzhuanhuan1:mov r0,#30h mov r1,#50hmov r2,#6 dp101:mov dptr,#segtab mov a,r0movc a,a+dptrmov r1,ainc r1inc r0djnz r2,dp101ret disp1:mov r0,#50h mov r7,#6mov r3,#0feh loop21:mov a,#0ffh mov p1,a mov a,r0 mov p0,amov a,r3mov p1,alcall delayrl amov r3,ainc r0djnz r7,loop21retdelay: mov r4,#20 loop3: mov r5,#25djnz r4,loop3retsegtab:db 3fh,06h,5bh,4fh,66h,6dh db 7dh,07h,7fh,6fh,77h,7ch db 58h,5eh,7bh,71h,00h,40h end3程序流程图 时钟主程序流程图 中断服务程序的流程4、仿真图行列式键盘校时1、 思路 一般情况下,校时是用来对数字钟的校对,所以行列式键盘校时用到的存储单元跟数字钟中的存储单元一样。即要校对的数据:时的十位放在“35h”,时的个位放在“34h”;分的十位放在“33h”,分的个位放在“32h”;秒的十位放在“31h”,秒的个位放在“30h”。将时的十位“35h”通过查询的方式查找到相应bcd七段码放在“55h”,将时的个位“34h”通过查询的方式查找到相应bcd七段码放在“54h”,将分的十位“33h”通过查询的方式查找到相应bcd七段码放在“53h”,将分的个位“32h”通过查询的方式查找到相应bcd七段码放在“52h”,将秒的十位“31h”通过查询的方式查找到相应bcd七段码放在“51h”,将秒的个位“30h”通过查询的方式查找到相应bcd七段码放在“50h”。 2、实现校时的程序 3、程序流程图 dbuf equ 30h temp equ 50h org 0000h ljmp start org 0030hstart: clr f0 mov 40h,#0mov 41h,#0mov 42h,#0ghi3:lcall key1jnb f0,abc3clr f0lcall shiftdabc3: lcall zhenghe lcall zhuanhuan3lcall disp3ljmp ghi3zhenghe:mov r2,#3 mov r0,#40hmov r1,#35hloop43:mov a,r1 mov b,#10h mul ab mov 21h,a dec r1 mov a,r1 add a,21h mov r0,a dec r1 inc r0 djnz r2,loop43 retzhuanhuan3:mov r0,#30h mov r1,#50hmov r2,#6 dp103:mov dptr,#segtab mov a,r0movc a,a+dptrmov r1,ainc r1inc r0djnz r2,dp103ret disp3:mov r0,#50h mov r7,#6mov r3,#0feh loop23:mov a,#0ffh mov p1,a mov a,r0 mov p0,amov a,r3mov p1,alcall delayrl amov r3,ainc r0djnz r7,loop23retsegtab:db 3fh,06h,5bh,4fh,66h,6dh db 7dh,07h,7fh,6fh,77h,7ch db 58h,5eh,7bh,71h,00h,40hshiftd:mov dbuf+5,dbuf+4mov dbuf+4,dbuf+3mov dbuf+3,dbuf+2mov dbuf+2,dbuf+1mov dbuf+1,dbufmov dbuf,20hret delay: mov r4,#100 loop3: mov r5,#100djnz r4,loop3ret key1:mov p2, #0fhmova, p2orla, #0f0hcplajz ekeylcall disp3lcall disp3lcall disp3;skey:mov a, #00mov r0, a mov r2, amov r3, #0efhskey2:mov a, r3 mov p2, amova, p2movr1, aorla, #0f0hcplas123:jnzskey3inc r0 mova, r3rlamovr3, amova, r0cjnea, #04h, skey2ekey:retskey3: mova, r1jnbacc.0, skey5jnbacc.1, skey6jnbacc.2, skey7jnbacc.3, skey8ajmp ekeyskey5:mova, #00hmovr2, aajmpdkeyskey6:mova, #01hmovr2, aajmpdkeyskey7:mova, #02hmovr2, aajmpdkeyskey8: mova, #03hmovr2, aajmpdkeydkey:mova, r0movb, #04hmulabadda, r2setb f0mov 20h,aekeyd:mov p2, #0fhmova, p2orla, #0f0hcplajz ekeyajmpekeydend3、 流程图 校时主程序 shiftd子程序行列式键盘校时子程序 键值译码子程序 zhenghe子程序图 转换子程序流程图 拆分子程序流程图 显示子程序流程图 4、仿真图综合实现时钟秒表校时1、 思路: 使用t1、t2中断来完成数字钟和秒表的计数,利用主程序来进行扫描显示,主程序中利用查询来控制校时、秒表和时钟,用到了p3.0、p3.1、p3.4、p3.5。p3.0闭合,时钟和秒表工作,断开为校时。p3.1断开,仅显示时钟,并断开秒表计数中断,p3.1闭合,显示秒表,但不关断数字钟。p3.4、p3.5开控制秒表,同时为闭合时,秒表清零,先关断p3.5,秒表开始工作,从零开始计时,再关断p3.4秒表停止计时,但是显示会停留在那里,当p3.5与p3.4关断后就会又清零。2、程序:dbuf equ 30h temp equ 50horg 0000hljmp startorg 000bhljmp it0porg 001bhljmp it1porg 0030hstart: mov tmod,#22hmov 60h,#40mov 61h,#100mov 62h,#40mov 43h,#0mov 44h,#0mov 45h,#0setb et0setb eamov th0,#6mov tl0,#6setb tr0setb et1 mov th1,#6mov tl1,#6setb tr1xunhuan:mov p3,#0ffhjb p3.0,jiaoshijb p3.1,shuzizhongsetb et1lcall abc2lcall xunhuan jiaoshi:lcall ghi3shuzizhong:setb et0 clr et1 ljmp abc1 abc1: lcall chaifen1 lcall zhuanhuan1lcall disp1ljmp xunhuan abc2: jb p3.4,holdjb p3.5,def2mov 43h,#0mov 44h,#0mov 45h,#0setb ea def2: lcall chaifen2 lcall zhuanhuan2lcall disp2jnb p3.1,abc2ljmp xunhuan hold:clr ea lcall chaifen2 lcall zhuanhuan2lcall disp2jnb p3.1,abc2ljmp xunhuan ghi3:clr et0 lcall key1 jnb f0,abc3 clr f0 lcall shiftdabc3: lcall zhenghe lcall zhuanhuan3lcall disp3jnb p3.0, xunhuanljmp ghi3zhenghe:mov r2,#3 mov r0,#40hmov r1,#35hloop43:mov a,r1 mov b,#10h mul ab mov 21h,a dec r1 mov a,r1 add a,21h da a mov r0,a dec r1 inc r0 djnz r2,loop43 retit0p: push acc djnz 61h,return mov 61h,#100djnz 60h,returnmov 60h,#40mov a,#01hadd a,42hda amov 42h,acjne a,#60h,returnmov 42h,#00hmov a,#01hadd a,41hda amov 41h,acjne a,#60h,returnmov 41h,#00hmov a,#01hadd a,40hda amov 40h,acjne a,#24h,returnmov 40h,#00hreturn: pop accretiit1p: push acc djnz 62h,returnmov 62h,#40mov a,#01hadd a,45hda amov 45h,acjne a,#100h,returnmov 45h,#00hmov a,#01hadd a,44hda amov 44h,acjne a,#60h,returnmov 44h,#00hmov a,#01hadd a,43hda amov 43h,acjne a,#60h,returnmov 43h,#00hpop accretichaifen1:mov r2,#3 mov r0,#40h mov r1,#35h loop41:mov a,r0 anl a,#0f0hswap amov r1,adec r1mov a,r0anl a,#0fhmov r1,adec r1inc r0djnz r2,loop41retchaifen2:mov r2,#3 mov r0,#43h mov r1,#75h loop42:mov a,r0 anl a,#0f0hswap amov r1,adec r1mov a,r0anl a,#0fhmov r1,adec r1inc r0djnz r2,loop42retzhuanhuan1:mov r0,#30h mov r1,#50hmov r2,#6 dp101:mov dptr,#segtab mov a,r0movc a,a+dptrmov r1,ainc r1inc r0djnz r2,dp101retzhuanhuan2:mov r0,#70h mov r1,#80hmov r2,#6 dp102:mov dptr,#segtab mov a,r0movc a,a+dptrmov r1,ainc r1inc r0djnz r2,dp102retzhuanhuan3:mov r0,#30h mov r1,#50hmov r2,#6 dp103:mov dptr,#segtab mov a,r0movc a,a+dptrmov r1,ainc r1inc r0djnz r2,dp103ret disp1:mov r0,#50h mov r7,#6mov r3,#0feh loop21:mov a,#0ffh mov p1,a mov a,r0 mov p0,amov a,r3mov p1,alcall delayrl amov r3,ainc r0djnz r7,loop21ret disp2:mov r0,#80h mov r7,#6mov r3,#0feh loop22:mov a,#0ffh mov p1,a mov a,r0 mov p0,amov a,r3mov p1,alcall delayrl amov r3,ainc r0djnz r7,loop22ret disp3:mov r0,#50h mov r7,#6mov r3,#0feh loop23:mov a,#0ffh mov p1,a mov a,r0 mov p0,amov a,r3mov p1,alcall delayrl amov r3,ainc r0djnz r7,loop23retdelay: mov r4,#100 loop3: mov r5,#100djnz r4,loop3retshiftd:mov dbuf+5,dbuf+4mov dbuf+4,dbuf+3mov dbuf+3,dbuf+2mov dbuf+2,dbuf+1mov dbuf+1,dbufmov dbuf,20hret key1:mov p2, #0fhmova, p2orla, #0f0hcplajz ekeylcall disp3lcall disp3lcall disp3;skey:mov a, #00mov r0, a mov r2, amov r3, #0efhskey2:mov a, r3 mov

温馨提示

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

评论

0/150

提交评论