微机原理课程设计数字时钟程序

合集下载

微机原理课程设计电子闹钟

微机原理课程设计电子闹钟

电子钟设计1任务要求1.1显示位置:屏幕中央.1.2日期显示格式"时:分:秒.1.312/24时制可调.1.4在显示屏上显示提示语“CURRENT TIME IS:”和当前时间.2工作原理1时钟起始时间的设置先调用DOS操作系统模块9,在显示屏上显示提示语“TIME SYSTEM IS:”,输入时制12或24后,显示“CURRENT TIME IS:”,再调用DOS操作系统模块10,提示要输入时钟的起始时间,输入时间的格式是“时:分:秒”。

输入的时间以字符串形式存放在已定义的存储器缓存区内,继而调用TRAN1转换子程序和MUL10乘10子程序,将存放在存储器缓存区内的ASCII字符转换为压缩BCD码,并将时、分、秒的值放在寄存器CH、DH、DL中。

2延时程序调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。

在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。

秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。

3时间显示调用DOS操作系统模块9,可用来显示存储器内字符串。

由于显示的字符必须为ASCII码,因为要调用TRAN2转换子程序将寄存器CH、DH、DL内压缩BCD码字符串转换成ASCII字符串,字符串最后以字符“$”结束,并按时、分、秒的顺序送存储器缓冲区内。

调用DOS 操作系统模块9,(DS:DX)应指向字符串首址。

程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下CTRL和BREAK二键。

4程序堆图5程序清单DATA SEGMENTBUFFER DB 10 ;设置输入字符串用缓冲区 DB ?DB 10 DUP(?)TS DB 'TIME SYSTEM IS:$'CT DB 'CURRENT TIME IS:$'PM DB 'PM $'AM DB 'AM $'KEEPIP DW 0KEEPCS DW 0SR DB ?HOUR DB ?DAT ENDSSTA SEGMENT PARA STACK 'STACK'STAPN DB 100 DUP(?)TOP EQU LENGTH STAPNSTA ENDSCOD SEGMENTSTART PROC FARASSUME CS:COD,DS:DAT,SS:STAMOV AX,DATAMOV DS,AXMOV AX,STAMOV SS,AXMOV AX,TOPMOV SP,AXMOV AH,35H ;设置1CH中断MOV AL,1CHINT 21H ;段地址放入ES,偏移地址放入BXMOV KEEPIP,BX ;保偏移地址存MOV KEEPCS,ES ;保存段地址PUSH DSMOV DX,OFFSET TIMEMOV AX,SEG TIMEMOV DS,AXMOV AL,1CHMOV AH,25H ;设置中断功能调用INT 21HPOP DSMOV DX,OFFSET TS ;DOS功能模块,显示字符串MOV AH,9INT 21HMOV AH,1 ;DOS功能模块,从键盘输入字符INT 21HMOV AH,1INT 21HMOV SR,ALMOV DL,0AH ;"换行"MOV AH,2INT 21HMOV DL,0DH ;"回车"MOV AH,2INT 21HMOV DX,OFFSET CT ;DOS功能模块,显示字符串,提示从键盘输入MOV AH,9INT 21HMOV DX,OFFSET BUFFERMOV AH,10 ;DOS功能模块,从键盘输入字符串到缓冲区INT 21HMOV BX,OFFSET BUFFER+2CALL TRAN1 ;将输入的ASCII码转换为BCD码INC BXINC BXCALL TRAN1INC BXINC BXCALL TRAN1MOV BX,OFFSET BUFFER+2MOV AL,[BX]CALL MUL10 ;将BCD码转换为压缩的BCD码MOV CH,ALINC BXINC BXMOV AL,[BX]CALL MUL10MOV DH,ALINC BXINC BXMOV AL,[BX]CALL MUL10MOV DL,ALAGAIN: PUSH CXMOV CX,18STI ;开中断W: CMP CX,0JNE WCLIPOP CXMOV AL,DLADD AL,1 ;"秒"加1DAAMOV DL,ALCMP AL,60H ;"秒"与60比较JNE DISPY ;小于60S,转显示程序MOV DL,0 ;等于60S, "秒"值为0,"分"+1MOV AL,DHADD AL,1DAAMOV DH,ALCMP AL,60H ;"分"于60比较JNE DISPYMOV DH,0MOV AL,CHADD AL,1DAAMOV CH,ALMOV AL, SRCMP AL,32HJNE NEXTJMP DISPYNEXT: MOV AL,CHMOV HOUR,CHCMP AL,24HJNE DISPYMOV CH,0DISPY: CALL IOCLRCALL IOSET1CALL STARCALL IOSET2CALL STARCALL IOSETMOV BX,OFFSET BUFFERMOV AL,SRCMP AL,32HJNE NEXT2CALL AD12MOV AL,HOURJMP NEXT1NEXT2: MOV AL,CH ;"时"值转换成ASCII码NEXT1: CALL TRAN2 ;将压缩BCD码转换成ASCII码MOV AL,':'MOV [BX],ALINC BXMOV AL,DH ;"分"值转换成ASCII码CALL TRAN2INC BXMOV AL,':'MOV [BX],ALINC BXMOV AL,DL ;"秒"值转换成ASCII码CALL TRAN2INC BXMOV AL,'$' ;显示字符串结束码MOV [BX],ALPUSH BXPUSH CXPUSH DXMOV DX,OFFSET BUFFERMOV AH,9 ;DOS功能模块,显示字符串INT 21HPOP DXPOP CXPOP BXJMP AGAINCLIPUSH DSMOV DX,KEEPIPMOV AX,KEEPCSMOV DS,AXMOV AH,25HMOV AL,1CHINT 21HPOP DSSTIRETSTART ENDPMUL10 PROC ;将BCD码转换为压缩的BCD码ADD AL,ALDAAMOV CL,ALADD AL,ALDAAADD AL,ALADD AL,CLDAAMOV CL,ALINC BXMOV AL,[BX]ADD AL,CLRETMUL10 ENDPTRAN1 PROC ;ASCII码转换成BCD码MOV AL,[BX]AND AL,0FHMOV [BX],ALINC BXMOV AL,[BX]AND AL,0FHMOV [BX],ALRETTRAN1 ENDPTRAN2 PROC ;将压缩BCD码转换成ASCII码MOV CL,ALSHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HMOV [BX],ALINC BXMOV AL,CLAND AL,0FHOR AL,30HMOV [BX],ALRETTRAN2 ENDPIOCLR PROC ;调用BIOS,清除全屏幕PUSH CXPUSH DXPUSH BXPUSH AXMOV AX,0600HMOV BH,02SUB CX,CXMOV DX,184FHINT 10HPOP BXPOP DXPOP CXRETIOCLR ENDPTIME PROCDEC CXIRETTIME ENDP ;调用BIOS,设置屏幕光标在中央PUSH DXPUSH BXPUSH AXMOV AH,02SUB BH,BHMOV DX, 0C23HINT 10HPOP AXPOP BXPOP DXRETIOSET ENDPIOSET1 PROCPUSH AXPUSH BXPUSH DXMOV DX,0A1AHMOV BH,00MOV AH,02INT 10HPOP DXPOP BXPOP AXRETIOSET1 ENDPIOSET2 PROCPUSH AXPUSH BXPUSH DXMOV DX,0E1AHMOV BH,00MOV AH,02INT 10HPOP BXPOP AXRETIOSET2 ENDPSTAR PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV AL,3DHMOV BH,0MOV BL,0CHCMP HOUR,24HJNZ XMOV HOUR,0HX: MOV CX,WORD PTR HOUR INT 10HPOP DXPOP CXPOP BXPOP AXRETSTAR ENDPAD12 PROCPUSH DXMOV HOUR,CH MOV AL,SRCMP AL,32HJNE ZHMOV AL,HOURCMP AL,24HJNE NEXT3MOV CH,0MOV HOUR,CHJMP S12NEXT3: CMP AL,12HJBE S12MOV DX,OFFSET PMMOV AH,9INT 21HMOV AL,HOURMOV DH,12HSUB AL,DHDASMOV HOUR,ALJMP ZHS12: CMP AL,12HJNE ZMOV DX,OFFSET PMMOV AH,9INT 21HJMP ZHZ: MOV DX,OFFSET AMMOV AH,9INT 21HZH: POP DXRETAD12 ENDPCOD ENDSEND STAR6设计时遇到的问题及解决方法在课程设计中遇到的最大的困难是如何利用软、硬件配合的方式产生中断,对中断向量表的装载还比较模糊,对中断的初始化、具体设置、中断返回还不是很清楚,程序设计一度陷入停滞状态,不知如何是好.于是我又重新翻阅了我们的学习课本,也就是电子工业出版社的《微机原理与接口技术(基于16位机)》,重点研究了第9章《中断》,通过对这一章的学习,我终于对中断有了详细的认识,在设计程序时也容易了很多。

微机原理课程设计-数字时钟

微机原理课程设计-数字时钟

微机原理课程设计设计题目:电子时钟班级:08电信系机电五班姓名及学号:薛鹏(***********)目录一、摘要二、引言三、电子时钟的设计:1.设计目的2.设计任务3.电路原理图四、程序设计(1)设计思路(2)设计流程图(3) 源代码五、软件调试六、设计总结和心得体会摘要:近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。

因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。

一、引言单片机是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。

单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。

它是一种集计数和多中接口于一体的微控制器,被广泛应用在智能产品和工业自动化中。

现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

8086是Inter系列的16位微处理器,芯片上有2.9万个晶体管,采用HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz。

微机原理课程设计--数字时钟

微机原理课程设计--数字时钟

课程设计报告课程设计名称:数字时钟系:三系学生姓名:梁文化阿龙班级:通信班学号: ************ 成绩: 100 指导教师: * * 开课时间: 2013-2014 学年 1 学期一.设计题目:数字时钟二.主要内容:编程实现时钟功能,按秒刷新,要求定位在屏幕右上角。

三.具体要求:在课程设计时,1人一组,设计报告由学生独立完成,不得互相抄袭。

教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。

学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。

学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。

学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。

学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。

设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。

四.进度安排五.成绩评定考核方法:现场验收(占50%),课程设计报告(占50%)。

考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。

成绩评定:优,良,中,及格,不及格。

特别说明:如发现抄袭,按照不及格处理。

目录一.课题的功能模块的划分 (4)二.主要功能实现 (5)三.心得体会 (7)四.源程序 (8)五.上机调试 (10)六.主要参考资料 (10)一.课题的功能模块的划分显示系统时间程序可以大致分为三个模块:1.利用1ch号功能来重定位中断程序的入口地址2.调用21号中断的31h程序结束并驻留功能,使得显示时间的子程序常驻内存3.显示系统时间模块功能模块图如下:Y二.主要功能实现1.重定位入口地址;重定位中断程序的入口地址lea dx,showtimemov ax,seg showtimemov ds,axmov ax,251chint 21h2.程序驻留并结束;调用21号中断的31h程序结束并驻留功能mov ax,3100hmov dx,proclenint 21h3.显示系统时间showtime procpush axpush bxpush dspush esmov ax,csmov ds,axmov ax,0b800hmov es,axmov ax,2c00h ;调用21h号中断的2ch功能int 21h;输出时钟mov bl,':'mov bh,chcall adjustmov es:[120],almov es:[120+2],ahmov es:[120+4],bl;输出分钟mov bh,clcall adjustmov es:[120+6],almov es:[120+8],ahmov es:[120+10],bl;输出秒钟mov bh,dhcall adjustmov es:[120+12],almov es:[120+14],ahpop espop dspop bxpop axiretshowtime end显示系统时间的流程图如下:三.心得体会为期一周的课程设计就要结束了,回想这一周,我经历了许多,懂得了许多。

微机原理课程设计——电子时钟课程设计

微机原理课程设计——电子时钟课程设计

电子时钟课程设计一:设计背景电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。

与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。

它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。

二:数字钟电路设计思路利用8253定时器和中断控制器8259实现中断计时时,可用8253的两个通道(通道0和通道1)串联产生1S计时脉冲。

每个1S计时脉冲产生一次中断请求,在中断服务程序完成中断计时并刷新时间显示。

利用8279键盘显示器实现当前时间的显示和时间的校准。

在主程序完成各可编程接口芯片(8253、8259、8279)的初始化、键盘扫描及时间校准。

在校表状态关中断,校表结束时开中断。

三:程序流程图三、电子表原理图:四:程序代码D8279 equ 200H C8279 equ 202H C8253 equ 20bH D82530 equ 208H D82531 equ 209H C82590 equ 210H C82591 equ 211H data segment HOUR db 00 MINUTE db 00SECOND db 008STAT db 00LEDdb 31H,06H,5bH,4fH,66H,6dH,7dH,27H,7fH,6fH,00H,00H DISBUF db 8 dup(0)data endsstack segment stackdw 100 dup(?)stack endscode segmentassume cs:code,ds:dataSTART: MOV AX,DATAMOV DS,AXCLIMOV AL,13HMOV DX,C82590OUT DX,ALMOV AL,8MOV DX,C82591OUT DX,ALMOV AL,1OUT DX,ALMOV AX,0MOV ES,AXLEA AX,INT0MOV AX,CSMOV ES:[4*8+2],AXMOV DX,C8253MOV AL,36HOUT DX,ALMOV DX,D82530MOV AX,10000OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,C8253MOV AL,36HOUT DX,ALMOV DX,D82531MOV AX,100OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,C8279MOV AL,00HOUT DX,ALMOV AL,34HOUT DX,ALMOV AL,0D2HOUT DX,ALMOV STAT,0MOV DX,C82591MOV AL,0FEHOUT DX,ALWAIT1: MOV DX,C8279 IN AL,DXMOV AH,ALAND AL,80HJNE WAIT1MOV AL,AHAND AL,0FHCMP AL,00HJE WAIT1MOV AL,40HOUT DX,ALCHK: MOV DX,D8279IN AL,DXCMP AL,33HJNE BBBMOV DX,C82591MOV AL,0FFHOUT DX,ALMOV AL,STATINC ALMOV STAT,ALCMP AL,1JNZ AA1MOV SI,OFFSET DISPBUFMOV CX,4MOV AL,00BB0: MOV [SI],ALINC SILOOP BB0CALL DISPJMP CHKAA1: CMP AL,2JNZ AA2MOV SI,OFFSET DISPBUFMOV AL,00MOV [SI],ALINC SIMOV [SI],ALADD SI,2MOV [SI],ALINC SIMOV [SI],ALCALL DISPJMP CHKAA2: CMP AL,3JNZ AA3MOV SI,OFFSET DISPBUF+2MOV CX,4MOV AL,00BB1: MOV [SI],ALINC SILOOP BB1CALL DISPJMP CHKAA3: MOV STAT,00MOV AL,0FEHMOV DX,C82591OUT DX,ALCALL FULLSFMCALL DISPJMP CHKBBB: CMP AL,3BHJE BBB0JMP CCCBB0: MOV AL,STATCMP AL,1JNZ BBB1MOV AL,HOURADD AL,1DAAMOV HOUR,ALCALL FULLSH1CALL DISPJMP BBBBBB1: MOV AL,STATCMP AL,2JNZ BBB3MOV AL,MINUTEADD AL,1DAAMOV MINUTE,ALCALL FULLFENCALL DISPJMP BBBBBB3: MOV AL,STATCMP AL,3JZ BBB4JMP DDDBBB4: MOV AL,SECONDADD AL,1DAAMOV SECOND,ALCALL FULLMIAOCALL DISPJMP BBBCCC: CMP AL,3AHJE CC0JMP DDDCC0: MOV AL,STATCMP AL,1JNZ CCC1MOV AL,HOURSUB AL,1DASMOV AL,HOURSUB AL,1ADD AL,1DAAMOV SECOND,ALCMP AL,60HJNZ FANHUIMOV SECOND,0MOV AL,MINUTEADD AL,1DAAMOV MINUTE,ALCMP AL,60HJNZ FANHUIMOV MINUTE,0MOV AL,HOURADD AL,1DAAMOV HOUR,ALCMP AL,24HJNZ FANHUIMOV HOUR,0CALL FULLSFMCALL DISPPOP SIPOP DIPOP BXPOP AXIRETFULL SFM PROC NEARLEA DI,DISBUFLEA BX,LEDLEA SI,SECONDMOV CX,3AA4:MOV AL,[SI]AND AL,0FHXLATMOV [DI],ALINC DIMOV AL,[SI]PUSH CXMOV CL,4SHR AL,CLAND AL,0FHXLATMOV [DI],ALINC DIPOP CXINC SILOOP AA4RETFULL SFM ENDPFULL SHI PROC NEARLEA SI,DISBUFMOV AL,0MOV CX,4CCC0: MOV [SI],ALINC SILOOP CCC0LEA BX,LEDMOV AL,HOURAND AL,0FHXLATMOV [SI],ALXLATMOV [SI],ALMOV AL,HOURMOV CL,4SHR AL,CLAND AL,0FHXLATINC SIMOV [SI],ALRETFULL SHI ENDPFULL FEN PROC NEARLEA SI,DISBUFMOV AL,0MOV [SI],ALINC SIMOV [SI],ALINC SILEA BX,LEDMOV AL,MINUTEAND AL,0FHXLATMOV [SI],ALMOV AL,MINUTEMOV CL,4SHR AL,CLAND AL,0FHXLATINC SIMOV [SI],ALRETFULL FEN ENDPFULL MIAO PROC NEARLEA SI,DISBUFLEA BX,LEDMOV AL,SECONDAND AL,0FHXLATMOV [SI],ALMOV AL,SECONDMOV CL,4SHR AL,CLAND AL,0FHXLATINC SIMOV [SI],ALMOV AL,0INC SIMOV [SI],ALINC SIMOV [SI],ALINC SIMOV [SI],ALINC SIMOV [SI],ALRETFULL MIAO ENDPDISP PROC NEARMOV CX,8MOV DX,D8279LEA SI,DISBUF DISIMOV AL,[SI]OUT DX,ALINC SILOOP DISIRETCODE ENDSEND START。

微机原理秒表时钟课程设计

微机原理秒表时钟课程设计

微机原理秒表时钟课程设计一、课程目标知识目标:1. 学生能理解微机原理中秒表时钟的基本工作原理,掌握其硬件组成和软件编程方法。

2. 学生能够掌握秒表时钟的设计思路,了解其功能模块的划分和实现。

3. 学生能够了解微机原理在实际应用中的重要性,认识到秒表时钟在日常生活和工程领域的应用价值。

技能目标:1. 学生能够运用所学知识,设计并实现一个简单的秒表时钟程序,具备基本的编程能力。

2. 学生能够通过分析问题、解决问题,培养创新思维和动手实践能力。

3. 学生能够熟练使用相关硬件设备,提高实际操作能力。

情感态度价值观目标:1. 学生通过本课程的学习,培养对微机原理的兴趣,激发学习热情,形成积极的学习态度。

2. 学生能够认识到团队合作的重要性,学会与他人协作,培养团队精神和沟通能力。

3. 学生能够在实际操作过程中,培养耐心、细心和责任心,养成良好的学习习惯。

课程性质:本课程为实践性课程,注重理论联系实际,培养学生的动手能力和创新意识。

学生特点:本年级学生已具备一定的微机原理基础知识,具有较强的学习能力和求知欲,喜欢动手实践。

教学要求:结合学生特点,以实际操作为主线,注重培养学生的编程能力和团队协作能力,提高学生的实际应用能力。

在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的达成。

将课程目标分解为具体的学习成果,便于后续教学设计和评估。

二、教学内容本课程教学内容主要包括以下几部分:1. 微机原理基础知识回顾:引导学生复习已学过的微机原理基础知识,如微处理器、存储器、输入输出接口等,为后续学习秒表时钟设计打下基础。

相关教材章节:第一章 微机原理概述2. 秒表时钟硬件组成:讲解秒表时钟的硬件组成,包括时钟芯片、微处理器、显示模块等,分析各部分的功能和相互关系。

相关教材章节:第三章 微机接口技术3. 秒表时钟软件编程:介绍秒表时钟的软件编程方法,包括编程语言选择、程序结构设计、功能模块划分等。

相关教材章节:第五章 嵌入式系统编程4. 实践操作:安排学生进行实际操作,设计并实现一个简单的秒表时钟程序,培养学生的动手能力和编程技巧。

(完整word版)微机原理课程设计(电子时钟)(word文档良心出品)

(完整word版)微机原理课程设计(电子时钟)(word文档良心出品)

电子时钟课程设计一:设计背景电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。

与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。

它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。

二:数字钟电路设计思路1.选用8253计数器2进行1s的定时,其输出OUT1与8259的IRQ0相连,当定时到1s时产生一个中断服务程序进行时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号。

时、分、秒的数值通过对8255的编程可送到七段数码管上显示。

2.此程序主要由四部分组成:第一部分为最主要的部分定义显示界面;第二部分为利用延时程序,并将调用的二进制表示的时间数转换成ASCII码,并将时间数存入内存区;第三部分将存在系统内存区的时间数用七段数码管显示出来;第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。

该程序实现了准确显示秒和分,读数准确,走时精准。

此电子钟能准确的从0时0分0秒走时到23时59分59秒,然后能自动回复到0时0分0秒循环走时。

3.基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。

以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。

在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h.CPU处理,使数码管的显示发生变化。

微机原理课程设计-闹钟

微机原理课程设计-闹钟

微机原理课程设计说明书学院:电力学院姓名:学号:专业:______________________指导老师:目录一、设计意义 (1)二、设计任务 (1)1、设计要求 (1)2、设计原理 (1)三、硬件设计 (2)四、软件设计 (4)1、设计过程 (5)2、程序流程图 (5)3、功能模块 (5)五、设计心得 (8)附录 (9)1.设计意义“微机原理与接口技术”是一门实践性和实用性都很强的课程,学习的目的在于应用。

本课程设计是配合“微机原理与接口技术”课堂教学的一个重要的实践教学环节,它能起到巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。

2.设计任务一、设计要求1.从键盘输入闹铃时间(如09:45)2.程序开始记时,并在屏幕上显示时间(如08: 30: 21)并实时刷新3.时间到,则发出闹铃声,声音维持数秒,同时屏幕显示响铃提示;同时时间停止刷新;4.能处理输入错误(如闹钟响铃时间应为数字,但用户错误输入非数值型的字符)二、设计原理分析1.显示系统时间1)使用DOS功能调用(INT 21H)中的2CH中断截取系统时间,再调用显示时间的子程序把时间显示出来(例如显示当前时间为16:30:45并且如果时间数少于两位数就要在其前面加0后显示出来如04: 07: 03);2)利用端口61H中的PB4每15.08微秒触发一次的特点,通过适当的循环次数进行循环从而实现延时1秒钟;3)在延时后再循环执行步骤1从而实现时间每一秒的刷新,在屏幕上不断显示当前的时间;2.设置闹钟响铃时间与输入时的容错处理方法1)在数据段定义好字型变量HOUR、MINUTE分别用于存放响铃时的小时数与分钟数;2)设置闹钟响铃时间由于形式为12:45 (小时:分钟)为了方便进行容错处理,可以分别用一段代码实现每一位数的输入,总共需要输入五位数字。

例如,输入前两位的小时数时,在输入第一位时,判断输入的是否是从0到2范围里的一个数字,如果不是就显示错误信息并停止程序的运行;在输入小时的第二位数时,判断输入的是否是0到9范围里的一个数字,如果不是就显示错误信息并停止程序的运行;在输入第三位时(应该是冒号)再判断是否是冒号,如果不是就显示错误信息并停止程序的运行;输入第四位(即分钟数的第一位)判断输入的是否是0到5数字里的一个,如果不是就显示错误信息并停止程序的运行;输入最后一位判断是否是0到9的范围中的一个数字,如果不是就显示错误信息并停止程序的运行等等;3)每次输入如果确定输入无误就使用书本中处理输入一个十进制数常用的方法把输入的数存储到寄存器中,再把它存入相应的变量中如小时数存到变量HOUR中,分钟数存入变量MINUTE中;3.当到达闹钟响铃时间时响铃1)每次在截取系统时间前先把寄存器BX清零,截取时间后把截取到的系统时间分别与变量HOUR与变量MINUTE进行比较,如果相等,就使寄存器BX加1,这样再执行完截取系统时间后检查BX是否为2,如果是2就表示已经到达设定好的闹铃时间,就跳出显示时间的死循环,跳到响铃的循环去;2)响铃是使用DOS功能调用(INT 21H)中的2H,同时把7H放到DL寄存器中,执行一次后延时三秒(延时的方法同显示时间时所用延时方法一样)再执行一次共循环执行40次从而实现了响铃几秒钟的功能;3 .硬件设计音乐播放1. 8253功能结构:Intel8253是8086/8088微机系统常用的定时器/计数器芯片,它具有定时计数两大功能。

微机原理数字钟课程设计报告

微机原理数字钟课程设计报告

课程名称微机原理与接口技术任课教师设计题目数字钟设计班级姓名学号日期2010年12月5日目录计时时钟的设计 (3)1 设计需求分析与解决方案 (3)1.1 设计需求分析 (3)1.1.1 题目要求 (3)1.1.2 根据要求提出的问题 (3)1.2 解决问题方法及思路 (3)1.2.1 硬件设计选择部分 (3)1.2.2 软件设计分析 (5)2 硬件设计 (5)2.1 选择芯片8255 (5)2.1.1 芯片8255 A在本设计中的功能作用 (5)2.1.2 芯片8255的功能分析 (5)2.1.3 8255部分技术参数 (6)2.1.4 8255与外设相连的逻辑图(见图2-3) (7)2.2 选择器件LED (7)2.2.1 LED在本设计中的作用 (7)2.2.2 LED功能分析 (7)2.2.3 LED技术参数 (8)2.3 硬件设计思路及连接图 (9)2.3.1 硬件设计思路 (9)2.3.2 硬件接线原理图(见图2-7) (9)3 软件设计思路及程序控制流程框图 (10)3.1 软件设计思路 (10)3.2 程序流程图的相关说明 (10)3.3 程序控制流程框图(见图3-1) (10)3.4 程序清单 (12)4 上机调试过程 (17)4.1 硬件调试 (17)4.2 软件调试 (17)4.3 联机调试 (17)4.4 调试结果及问题的提出 (18)4.4.1 调试结果 (18)4.4.2 提出问题 (18)5 设计结果分析、问题讨论及总结体会 (18)5.1 课程设计结果及分析 (18)5.2 问题讨论 (18)5.3 总结体会 (19)6 参考文献 (20)计时时钟的设计1 设计需求分析与解决方案1.1 设计需求分析1.1.1 题目要求设计一个接口与七段LED显示器,显示一个计时时钟,显示初值为0,每隔一秒改变一次显示值,60s为一分钟,60min为一小时,LED显示器循环显示时、分、秒的动态值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北科技大学课程设计报告学生姓名:学号:专业班级: 电子信息科学与工程课程名称:微型计算机原理及应用学年学期: 2 01 1 —2012 学年第1 学期指导教师:20 0 1 1年 1 2月课程设计成绩评定表目录一、课设题目及目的………………………………….4二、设计任务………………………………………….4三、总框图及设计流程 (4)四、ﻩ源程序清单 (6)五、ﻩ调试结果及显示 (19)六、ﻩ个人贡献………………………………………….19七、课程设计总结及体会 (21)一、课设题目及目的实习题目:数字时钟程序实习目的:通过实习,使我们进一步弄懂所学到的课本知识,巩固和深化对8086系统的指令系统、中断系统、键盘/显示系统、程序设计、应用开发等基本理论知识的理解,提高汇编语言应用于技术的实践操作技能,掌握汇编语言应用系统设计、研制的方法,培养利用科技革新、开发和创新的基本能力,为毕业后从事与其相关的工作打下一定的基础。

二、课设任务本课题为利用汇编语言设置时钟程序,其显示效果为:截取系统时间,能以时、分、秒(其中时为24小时制)的形式显示,并且通过合理的操作能修改时和分的内容来修改时间。

再有,可以给它设定一个ALARM时间,到这个时间它就能产生信号,起到定时作用,。

除此之外还能显示日期,日期分为年、月、日,其显示方式为xxxx年xx 月xx日。

'*DB '***********PRESS ESCBUTTON TO EXIT**************',0AH,0DH,'$'TN DB'PLEASE INPUT THE NEW TIME(HH:MM:SS):',0DH,0AH,'$'TMDB'PLEASE INPUT THE ALARM TIME (HH:MM:SS):',0DH,0AH,'$'MUSICMESS DB'PLEASE CHOOSE THE TYPE OF MUSIC:1(FAST) 2(MIDDLE) 3(SLOW)',0DH,0AH,'$'MESS2DB'TIME IS:',0AH,0DH,'$'MESS3DB 'TODAY IS:',0AH,0DH,'$'DBUFFER1DB20DUP('')T_BUFFD B 40 ;在数据段开一段时间显示缓冲区DB ?DB 40DUP(?)HOR DB?MIN DB?SEC DB?TEMPHOR DB ?TEMPMIN DB?TEMPSEC DB?MUSIC DW 800;存放音乐的频率数DATA ENDSSTACK SEGMENTDB 100 DUP(?)STACK ENDSCODESEGMENTASSUME CS:CODE,SS:STACK,DS:DATASTART:CALL CLEAR ;调用清屏子程序DISPLAY:;时间显示部分MOV AX,DATAMOVDS,AXMOVBX,OFFSETT_BUFF;送T_BUFF的偏移地址到BXMOV AH,2CH;调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在CH,CL,DH中INT 21H;判断时间是否相等SUB DH,1;秒数+1修正CALL CHECK;.........................................................................MOV AL,CH;小时数设定MOV AH,0CALLBCTD;调用进制转换子程序二进制BCD码子程序PUSH AXAND AL,0F0H;选取AL高四位MOV CL,4 ;设置右循环的次数ROR AL,CL;右循环OR AL,30H ;加30H得到ACSII码MOV[BX],AL;将得到的结果送到T_BUFF缓冲区INC BX;BX自加1,指针指向下一个缓冲区的下一个地址POP AXAND AL,0FH;选取低四位ORAL,30HMOV [BX],AL;将转换后的低四位值送入缓冲区的下一个地址INCBX ;........................................................................MOV AL,':';显示分隔符号MOV [BX],ALINCBX;........................................................................MOVAH,2CH;取时间INT21H ;.......................................................................MOV AL,CL;分钟数设定MOV AH,0CALLBCTD;调用进制转换子程序二进制BCD码子程序PUSH AXAND AL,0F0H;选取AL高四位MOV CL,4;设定循环次数ROL AL,CL;循环左移4次ORAL,30H;加30H得到ACSII码MOV[BX],AL;将得到的结果送到T_BUFF缓冲区INC BX;BX自加1,指针指向下一个缓冲区的下一个地址POPAXAND AL,0FH;选取低四位OR AL,30HMOV[BX],AL;将转换后的低四位值送入缓冲区的下一个地址INC BX ;.....................................................................MOV AL,':';显示分隔符号MOV[BX],ALINC BX;.....................................................................MOV AH,2CH;秒设定MOV AL,DHMOV AH,0CALLBCTD;调用进制转换子程序二进制BCD码子程序PUSH AXAND AL,0F0H;选取AL高四位MOV CL,4ROLAL,CLOR AL,30H;加30H得到ACSII码MOV[BX],AL;将得到的结果送到T_BUFF缓冲区INC BXPOP AXAND AL,0FH;选取低四位OR AL,30HMOV [BX],AL;将转换后的低四位值送入缓冲区的下一个地址INC BX ;..........................................................MOV AL,'$';将字符串的结束位送至显示缓冲区的最后一位MOV [BX],AL ;..........................................................CALL DATEPUSH BX ;置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX MOV AH,2;0~1用于此程序最下边的在下面的两个置光标位置MOV BH,0MOVDH,17;行MOVDL,41;列INT10HPOP BXLEA DX,T_BUFF;送T_BUFF偏移地址到DX,并调用DOS显示功能,功能号为9MOV AH,9INT 21H;至此当前时间的显示功能结束!PUSH BX ;置光标位置MOV AH,2MOVBH,0MOVDH,16MOVDL,41INT 10H ;日期POP BXLEA DX,DBUFFER1MOV AH,9INT 21HPUSH BX ;置光标位置MOVAH,2MOV BH,0MOV DL,21INT10HPOP BXLEA DX,MESS3MOV AH,9INT 21H;显示MESS3PUSH BX ;置光标位置MOV AH,2MOV BH,0MOV DH,0MOV DL,0INT 10HPOPBXLEA DX,MESS1MOV AH,9INT 21H;显示MESS1PUSH BX ;置光标位置MOV AH,2MOV BH,0MOV DH,17MOV DL,21INT 10HPOP BXLEADX,MESS2MOVAH,9INT 21H ;显示MESS2 ;.............................................CALLDELAY1MOVAH,1;调用键盘I/O中断功能号1,获取键值到ALINT 16HCMP AL,'M'JE EDITMUSICCMP AL,'M'JE EDITMUSICCMP AL,'C' ;是C键,转移闹钟时间修改程序JE EDITTIMECMP AL,'C';是C键,转移闹钟时间修改程序JEEDITTIMECMP AL,'S' ;是S键,转移时间修改程序JE CORCMP AL,'S';是S键,转移时间修改程序JE CORCMP AL,1BHJZQUIT;是ESC键,退出程序JMP DISPLAYQUIT:MOV AH,4CHINT21HRETCOR: CALL SETTIME;设置时间;..........................................EDITMUSICPROCPUSH AX;入栈保护数据PUSH BXPUSHCXPUSHDXPUSHFMOVDX,OFFSET MUSICMESS ;显示修改音乐的种类提示MOV AH,09HINT 21HMOV DX,OFFSETT_BUFF;数据缓冲区的数据输入MOVAH,0AHINT 21HAND DX,0HLEA BX,T_BUFFINC BXINC BXINC BXMOVAL,[BX]CMP AL,'1'JE M800TOCMP AL,'2'JEM1600TOCMP AL,'3'JE M3200TOM800TO:MOV MUSIC,800JMP TM1600TO:MOV MUSIC,1600JMPTM3200TO:MOV MUSIC,3200T:POPF;出栈恢复数据POPDXPOP CXPOP BXPOP AXJMPSTARTRET;返回DOSEDITMUSICENDP;结束BCTD PROC NEAR ;二进制BCD码子程序;AX输入参数;AX输出参数,存放调整过的BCD码MOV DX,AXMOV AX,0MOV CX,16 ;设置循环次数BCTD1:CLC ;清进位标志CRCL DX,1 ;通过进位的循环左移ADC AL,AL ;带进位加法DAA ;加法的十进制调整XCHG AL,AH ;交换高,低8位ADC AL,ALDAAXCHG AL,AHLOOP BCTD1 ;循环次数保存在CX里RETBCTD ENDP ;.....................................EDITTIME PROC ;时间修改程序PUSH AX;入栈保护数据PUSH BXPUSHCXPUSH DXPUSHFMOV DX,OFFSETTM ;显示修改时间的格式提示MOVAH,09HINT 21HMOVDX,OFFSETT_BUFF ;数据缓冲区的数据输入MOV AH,0AHINT21HAND DX,0HLEA BX, T_BUFFINC BXINCBXINC BXMOVDH,[BX]SUB DH,30HINC BXMOV DL,[BX]SUBDL,30HMOVCL,10MOVAL,DHMUL CLADD AL,DLMOVCH,ALMOV HOR,ALMOV TEMPHOR,ALINC BXINCBXMOV DH,[BX]SUB DH,30HINCBXMOVDL,[BX]SUB DL,30HMOV CL,10MOV AL,DHMULCLADDAL,DLMOV CL,ALMOV MIN,ALMOV TEMPMIN,ALINC BXINC BXMOV DH,[BX]SUB DH,30HINCBXMOVDL,[BX]SUB DL,30HMOVCL,10MOV AL,DHMUL CLADD AL,DLMOVDH,ALMOV TEMPSEC,AL POPF;出栈恢复数据POP DXPOPCXPOP BXPOP AXJMP STARTRETEDITTIME ENDP ;...................................... CLEAR PROC NEARPUSH AX;入栈保护现场PUSHBXPUSHCXPUSH DXMOVAX,0600H;AH=06(滚动)AL=00(全屏空白)MOV BH,1FH;设置背景颜色(1蓝色)和前景颜色(F白色)SUB CX,CXMOV DX,5F5FHINT10HPOPDX;出栈恢复现场POP CXPOP BXPOP AXRETCLEARENDP;....................DATE PROCNEARMOV AH,2AH;取日期CX:DH:DL=年:月:日AL=星期INT21HMOV SI,0MOV AX,CXMOV BX,100DIVBLMOVBL,AHCALL BCDASC1;日期数值转换成相应的ASCII码字符MOVAL,BLCALL BCDASC1INC SIMOV AL,DHCALL BCDASC1INCSIMOV AL,DLCALL BCDASC1MOV AL,'$'MOV DBUFFER1[SI],ALRETDATE ENDP;..................BCDASC1PROC NEARPUSH BXCBWMOVBL,10DIV BLADD AL,'0'MOV DBUFFER1[SI],ALINC SIADDAH,'0'MOV DBUFFER1[SI],AHINC SIPOP BXRETBCDASC1ENDP ;........................................SETTIME PROC;时间修改子程序CALL INPUT;调用键盘输入子程序输入数据MOV CH,HORMOVCL,MINMOV DH,SECAND DL,0HMOV AH,2DHINT21HJMP STARTRETSETTIMEENDP;........................................DELAY1PROC;精确延迟时间子程序MOV DX,04FFH;循环次数UP:XOR CX,CXA:NOPLOOP ADEC DXJNZ UPRETDELAY1ENDP;.......................................INPUT PROC;输入子程序PUSHAX;入栈保护数据PUSH BXPUSH CXPUSHDXPUSHFMOV DX,OFFSETTN;显示修改时间的格式提示MOV AH,09HINT 21HMOV DX,OFFSET T_BUFF;数据缓冲区的数据输入MOVAH,0AHINT21HAND DX,0HLEA BX,T_BUFFINC BXINCBXMOV DH,[BX] SUB DH,30HINC BXMOV DL,[BX] SUB DL,30HMOV CL,10MOV AL,DHMUL CLADD AL,DL MOV CH,AL MOVHOR,AL INC BXINCBXMOV DH,[BX] SUB DH,30HINC BXMOV DL,[BX]SUB DL,30HMOV CL,10MOVAL,DHMULCLADDAL,DLMOV CL,ALMOVMIN,ALINC BXINC BXMOV DH,[BX]SUBDH,30H INC BXMOV DL,[BX] SUB DL,30H MOV CL,10 MOV AL,DH MULCLADDAL,DLMOVDH,ALMOV SEC,ALPOPF;出栈恢复数据POP DXPOP CXPOP BXPOP AXINPUT ENDP ;..................................................CHECKPROCPUSH AXPUSHBXCMP CH,TEMPHOR;设置定点报时JNE CF1CMPCL,TEMPMINJNE CF1CMPDH,TEMPSECJEXIANGCF1:CMPCL,0 ;设置整点报时JNE CFCMP DH,0JNE CFXIANG:CALL OPENPUSH DXPUSH CXMOV DX,12HMOV AX,34DEHMOVCX,MUSICDIV CXOUT 42H,ALMOV AL,AHOUT 42H,ALMOV AH,1INT 21HPOP CXPOP DXCALL CLOSECF:POP BXPOPAXRETCHECK ENDPOPENPROCPUSHAXIN AL,61HOR AL,03HOUT 61H,ALPOP AXOPEN ENDPCLOSE PROCPUSH AXIN AL,61HAND AL,0FCHOUT61H,ALPOP AXRETCLOSE ENDP;................CODE ENDSEND START五.调试结果及显示六.个人贡献在本次课设实现过程中,我主要负责程序校正,和一部分程序的解释,主要有以下程序: MOV AL,CH;小时数设定MOVAH,0CALLBCTD ;调用进制转换子程序二进制BCD码子程序PUSH AXANDAL,0F0H ;选取AL高四位MOV CL,4;设置右循环的次数RORAL,CL ;右循环ORAL,30H ;加30H得到ACSII码MOV [BX],AL ;将得到的结果送到T_BUFF缓冲区INC BX ;BX自加1,指针指向下一个缓冲区的下一个地址POP AXAND AL,0FH;选取低四位OR AL,30HMOV [BX],AL;将转换后的低四位值送入缓冲区的下一个地址INC BX ;........................................................................MOV AL,':';显示分隔符号MOV [BX],ALINCBX;........................................................................MOV AH,2CH;取时间INT 21H ;.......................................................................MOVAL,CL;分钟数设定MOV AH,0CALL BCTD;调用进制转换子程序二进制BCD码子程序PUSHAXAND AL,0F0H;选取AL高四位MOV CL,4;设定循环次数ROLAL,CL;循环左移4次ORAL,30H;加30H得到ACSII码MOV [BX],AL ;将得到的结果送到T_BUFF缓冲区INC BX;BX自加1,指针指向下一个缓冲区的下一个地址POP AXAND AL,0FH;选取低四位ORAL,30HMOV [BX],AL;将转换后的低四位值送入缓冲区的下一个地址INC BX ;.....................................................................MOVAL,':';显示分隔符号MOV[BX],ALINC BX ;.....................................................................MOVAH,2CH ;秒设定INT21HMOVAL,DHMOV AH,0CALL BCTD;调用进制转换子程序二进制BCD码子程序PUSH AXAND AL,0F0H;选取AL高四位MOV CL,4ROL AL,CLOR AL,30H;加30H得到ACSII码MOV[BX],AL;将得到的结果送到T_BUFF缓冲区INC BXPOP AXANDAL,0FH;选取低四位OR AL,30HMOV[BX],AL;将转换后的低四位值送入缓冲区的下一个地址INC BX;…………………………………CLEARPROC NEARPUSH AX ;入栈保护现场PUSH BXPUSHCXPUSH DXMOV AX,0600H;AH=06(滚动)AL=00(全屏空白)MOV BH,1FH;设置背景颜色(1蓝色)和前景颜色(F白色)SUB CX,CXMOV DX,5F5FHINT 10HPOP DX;出栈恢复现场POP CXPOP BXPOP AXRETCLEAR ENDP;………………………………BCTD PROC NEAR ;二进制BCD码子程序;AX输入参数;AX输出参数,存放调整过的BCD码MOV DX,AXMOV AX,0MOV CX,16 ;设置循环次数七.课程设计总结及体会在这次的课程设计中,我们选择的题目是电子时钟设计,在设计的过程中,我们进行了相关资料的查询。

相关文档
最新文档