首页 微机原理课程设计报告-数字时钟的实现(附代码)

微机原理课程设计报告-数字时钟的实现(附代码)

举报
开通vip

微机原理课程设计报告-数字时钟的实现(附代码)..优选工业大学计算机与信息学院课程设计课程:微机原理与接口技术设计专业班级:计算机科学与技术x班学号:XX:一、设计题目及要求:【课题6】数字时钟1.通过8253定时器作产生秒脉冲定时中断。在中断效劳程序中实现秒、分、小时的进位〔24小时制〕。2.在七段数码管上显示当前的时分秒〔例如,12点10分40秒显示为121040〕。3.按“C〞可设置时钟的时间当前值〔对准时间〕。设计思想:总体思想:功能概述:实验箱连线:本实验建立在Dais实验箱根底上完成的根本连线及程序如下:138译码器:A,B,C,D,分别连接...

微机原理课程设计报告-数字时钟的实现(附代码)
..优选工业大学计算机与信息学院课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 课程:微机原理与接口技术设计专业班级:计算机科学与技术x班学号:XX:一、设计题目及要求:【课题6】数字时钟1.通过8253定时器作产生秒脉冲定时中断。在中断效劳程序中实现秒、分、小时的进位〔24小时制〕。2.在七段数码管上显示当前的时分秒〔例如,12点10分40秒显示为121040〕。3.按“C〞可设置时钟的时间当前值〔对准时间〕。设计思想:总体思想:功能概述:实验箱连线:本实验建立在Dais实验箱根底上完成的根本连线及程序如下:138译码器:A,B,C,D,分别连接A2,A3,A4,GS;y0连接8253的CS片选信号;y1连接8259的CS片选信号;8253连线:分频信号T2接8253的CLK0;8253的OUT0接8259的IR7;8253的gate信号接+5V;8259连线:8259的数据线接入数据总线;本程序包括显示模块,键盘扫描模块,时间计数模块,设置模块等几个模块,〔1〕程序运行后,LED显示000000初始值,并且开场计数〔2〕按C键进展设置初始时间,考虑到第一个数只能是0,1,2,当第一个数显示2时第二个数只能显示0~4,同理下面各位应满足时钟数值的合理的取值;〔3〕在手动输入初始值时,按D键进展回退1位修改已设置值,连续按D键可以全部进展删除修改。主程序设计主程序中完成通过调用子程序完成对8253及8259的初始化,对8259进展中断设置。主要在显示子程序和键盘子处理程序之间不断循环,8253每一秒给8259一个刺激,当8259承受到刺激后会给CPU一个中断请求,CPU会转去执行中断子程序,而中断子程序设置成时间计数加,即完成电子 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的整体设计。详细流程图见图三-1。LED显示子程序设计本程序显示局部用了6个共阳极LED作为显示管,显示程序要做到每送一次段码就送一次位码,每送一次位码后,将位码中的0右移1位作为下次的位码,从而可以实现从左到右使6个LED依次显示出相应的数字。虽然CPU每隔一定时间便执行显示程序,但只要这个时间段不太长,由于人眼的视觉作用,就可以在6个LED上同时见到数字显示。键盘扫描子程序设计本程序需要用键盘对时间的初始值进展设置,因此对键盘扫描的子程序需要满足的功能如下:判断是否是C键,假设不是就返回至主程序,假设是C键就开场对时间初始值进展设置,同时因注意到第一个值不可以超过2,第一个数是2时第二数不能超过4,余下的同理要满足时间数值的取值围呢,假设不是合法输入不予反响继续等待输入。当遇到输入数值错误时可以按下D键进展删除一位重新设置;当6位初始值全部设置成功后,电子表将自动开场走表。时间运算子程序设计该子程序的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。定时模块交由8253通过对分频出来的频率进展放大至1秒,因此每隔1秒对8259进展刺激,进而使CPU处理中断子程序及时间运算的子程序。另外,在中断效劳程序里,必须对秒、分和时的单元的数值进展判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。当时加到24时,直接清零。中断设置8259芯片:在该系统中,8259主要担负着处理8253的一秒时间的脉冲信号,通过8253的每秒的刺激下向CPU发送中断请求,进而CPU处理担负时间计算的中断子程序,即可完成每秒钟时间自加1秒的功能,因此8259的设置应为:ICW1:单片,边沿触发,写入ICW4ICW2:写入08HICW3:定时器设置8253芯片:在系统中定时/计数芯片8253主要与CPU及中断扩展芯片8259之间存在着连接关系。8253主要担负着时间计时的功能,通过对分频单元提供的频率信号进展 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 产生一秒时间为周期的脉冲信号,因此8253的设置应为:控制口写入:00110100b;计算器0选择先低后高两字节读或写方式2二进制计数;计数器0写入:38400;时间系数通过计算可以产生1秒的脉冲信号;编址及控制字确定〔1〕8259端口及控制字设置:Port_8259_0EQU0FFE0HPort_8259_1EQU0FFE1H8259初始化设置:ICW1:00010011,边沿触发,单片方式,写入ICW4;ICW2:00001000,INIT8259:MOVAL,13HMOVDX,Port_8259_0OUTDX,ALMOVAL,08HMOVDX,Port_8259_1OUTDX,ALMOVAL,09HOUTDX,ALMOVAL,7FH;IRQ7OUTDX,ALRET〔2〕8253端口及控制字设置:Port_8253_00EQU0FFE4HPort_8253_01EQU0FFE5HPort_8253_10EQU0FFE6HPort_8253_11EQU0FFE7H8253初始化设置:initCLK0:movdx,Port_8253_11moval,00110100b;outdx,almovdx,Port_8253_00;clk0movax,38400outdx,almoval,ahoutdx,alret〔2〕LED端口:OUTSEGequ0ffdch;段控制口OUTBITequ0ffddh;位控制口/键扫口〔3〕键盘端口:IN_KEYequ0ffdeh;键盘读入口〔4〕LED数码管字型码:LedMap:db0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8hdb080h,090h,088h,083h,0c6h,0a1h,086h,08ehdb0bfh〔5〕键码定义:KeyTable:db07h,04h,08h,05h,09h,06h,0ah,0bhdb01h,00h,02h,0fh,03h,0eh,0ch,0dh功能流程图:主程序流程图LED显示子程序流程图3、按键处理子程序流程图4、中断子程序-时间计数子程序流程图结果讨论:实验结果:程序运行,数码管开场从000000走表,按C键后显示‘——————’开场对时钟进展初始值设置,设置初始值时可以按D键进展回退修改。问题解决:添加D键的回退删除功能:在C键功能实现区域里不断检测D键是否按下,假设按下那么将LED上一位数码管设置成‘—’并将设置时间的地址回退1,及可完成对D键的功能设置;调试程序时发现时钟初始值可以设置,D键回退功能也是可以的,8253gate信号也正确连接着,但是初始值设置完后时钟并没有走表,于是将8253的输出端的线接入至手动的单脉冲的发生器,进展手动给8259刺激,结果时钟开场随手按动开场走表,可以断定该8253芯片可能已经损坏,换了个试验箱后遇到了同样的情况,直至换了功能正常的实验箱后实验现象才正确展现。功能完善可以在课题要求的根底上添加一些功能,使得电子时钟的功能更加完善:添加暂停功能,按键A时间暂停,再按A键时间继续走;添加闹铃功能,按键B设置闹铃时间,时间到时控制鸣笛闹铃;添加倒数计时的功能,按键E设置倒数的初始值,时间到即鸣笛闹铃;可以看出本次课程设计的课题可以完善的地方有很多,如果只满意于已完成的那么大错特错了,课程设计虽然已经完毕,但是课下仍然可以对自己的课题进展进步的探索,不断完善,不断追求完美,这也是我们需要的。4、实验总结通过此次课程设计,将微机原理与接口技术课程所学的知识运用到了实际操作中,并学会了数码管显示电子时钟的制作方法;实验过程中遇到了一些困难和问题,通过同学之间的讨论和查找资料也一一攻破,顺利完成了课程设计,实验结果符合课题要求。中断效劳程序设计时还应注意以下几个问题:因为8086CPU在响应中断时不能自动地保护它的各存放器〔除标志存放器外〕容,虽然可用存放器在主程序和中断效劳程序之间传送参量和结果,但这样做极易引起意想不到的错误,所以应当防止,而采用指定存单元进展参数传递;使用堆栈实现保护现场与恢复现场。使用时要注意堆栈的先进后出的特性,同时要确保堆栈有足够的空间,防止堆栈溢出;只有中断效劳程序用到的那些存放器〔标志存放器除外〕的容才需要加以保护;在从中断效劳程序返回之前,即使CPU处于关中断状态也不必开中断。在执行IERT指令后,CPU自动恢复中断前标志存放器。调试的时候因为遇到两个实验箱都是有问题的,本来以为是程序出现了问题,来回检查程序,直到最后又换了个实验箱才知道程序是正确的,实验箱是实验的根底,我们做实验时都应该细心保护,弄坏了芯片,给自己和他人都带来了不便。附录:实验代码:〔完整的源程序〕....word.zl.CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODEORG3400HStart:JMPprogramLedMap:八段管显示码db0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8hdb080h,090h,088h,083h,0c6h,0a1h,086h,08eh;db0bfhdb0f7hKeyTable:;键码定义db07h,04h,08h,05h,09h,06h,0ah,0bhdb01h,00h,02h,0fh,03h,0eh,0ch,0dhOUTSEGequ0ffdch;段控制口OUTBITequ0ffddh;位控制口/键扫口IN_KEYequ0ffdeh;键盘读入口LedBufdb6dup(?);显示缓冲timeDB0,0,0,0,0,0;INTNumequ20Port_8259_0EQU0FFE0H;1110_0000Port_8259_1EQU0FFE1HPort_8253_00EQU0FFE4H;0_01Port_8253_01EQU0FFE5HPort_8253_10EQU0FFE6HPort_8253_11EQU0FFE7Hprogram:callinitCLK0CLIMOVAX,OFFSETint8259MOVBX,003CHMOV[BX],AXMOVBX,003EHMOVAX,0000HMOV[BX],AXSTIcallinit8259callupdate_ledbuffmainLoop:calldisplaycallhandle_keyjmpmainLoop;================================initCLK0:movdx,Port_8253_11moval,00110100boutdx,almovdx,Port_8253_00;clk0movax,38400outdx,almoval,ahoutdx,alret;================================init8259:MOVAL,13HMOVDX,Port_8259_0OUTDX,ALMOVAL,08HMOVDX,Port_8259_1OUTDX,ALMOVAL,09HOUTDX,ALMOVAL,7FH;IRQ7OUTDX,ALRET;================================int8259:clipushaxpushbxpushcxMOVAL,20H0010MOVDX,Port_8259_0OUTDX,ALcalltimeInccallupdate_ledbuffpopcxpopbxpopaxstiiret;=========================================timeInc:pushbxpushcxmovbx,offsettimeaddbx,5;取time[5]incbyteptr[bx]cmpbyteptr[bx],10next5movbyteptr[bx],0;该位清零decbx;下一位加1incbyteptr[bx]incbxnext5:decbxcmpbyteptr[bx],6next4movbyteptr[bx],0decbxincbyteptr[bx]incbxnext4:decbxcmpbyteptr[bx],10next3movbyteptr[bx],0decbxincbyteptr[bx]incbxnext3:decbxcmpbyteptr[bx],6next2movbyteptr[bx],0decbxincbyteptr[bx]incbxnext2:decbxdecbxcmpbyteptr[bx],2jnzcmp10cmp4:incbxcmpbyteptr[bx],4next1movbyteptr[bx],0decbxmovbyteptr[bx],0jmpover_timeInccmp10:incbxcmpbyteptr[bx],10next1movbyteptr[bx],0decbxincbyteptr[bx]incbxnext1:decbxcmpbyteptr[bx],3over_timeIncmovbyteptr[bx],0over_timeInc:popcxpopbxret;================================display:pushaxpushbxpushcxpushdxmovbx,offsetLEDBufmovcl,6;共6个八段管;从左边开场显示movah,00100000bDLoop:movdx,OUTBITmoval,0outdx,al;关所有八段管moval,[bx]movdx,OUTSEGoutdx,almovdx,OUTBITmoval,ahoutdx,al;显示一位八段管pushaxmovah,1callDelaypopaxshrah,1incbxdeccljnzDLoopmovdx,OUTBITmoval,0outdx,al;关所有八段管popdxpopcxpopbxpopaxret;================================update_ledbuff:pushaxpushbxpushcxpushdxmovcl,6uloop:movbx,offsettimemoval,cldecalmovah,0xlat;取出time[cl-1]movbx,offsetLEDMAPmovah,0xlat;查找对应字形码movbx,offsetLedBufmovch,0addbx,cxdecbxmov[bx],al;放入LedBuf[cl-1]deccljnzulooppopdxpopcxpopbxpopaxret;================================Delay:;延时子程序pushcxmovcx,256loop$popcxretDelay1:延时子程序pushcxmovcx,50lxxx:calldisplaylooplxxxpopcxret;================================handle_key:callread_keycmpal,0chjnenextRjmpnextCnextR:retnextC:climovbx,offsettimemovcl,6loop_d:movbyteptr[bx],16incbxlooploop_dcallupdate_ledbuffmovbx,offsettimet1:callDisplaycallread_keycmpal,2jat1t1_over:mov[bx],alcallupdate_ledbuffcallDelay1t2:callDisplaycallread_keyCMPAL,0DHJNET22movbyteptr[bx],16callupdate_ledbuffcallDelay1JMPT1T22:cmpal,9jat2cmpbyteptr[bx],2jecmp_k_4jmpt2_overcmp_k_4:cmpal,3jat2jmpt2_overt2_over:incbxmov[bx],alcallupdate_ledbuffcallDelay1t3:callDisplaycallread_keyCMPAL,0DHJNET33movbyteptr[bx],16DECBXcallupdate_ledbuffcallDelay1JMPT2T33:cmpal,5jat3t3_over:incbxmovbyteptr[bx],alcallupdate_ledbuffcallDelay1t4:callDisplaycallread_keyCMPAL,0DHJNET44movbyteptr[bx],16DECBXcallupdate_ledbuffcallDelay1JMPT3T44:cmpal,9jat4t4_over:incbxmov[bx],alcallupdate_ledbuffcallDelay1t5:callDisplaycallread_key;++++++++++++CMPAL,0DHJNET55movbyteptr[bx],16DECBXcallupdate_ledbuffcallDelay1JMPT4T55:cmpal,5jat5t5_over:incbxmov[bx],alcallupdate_ledbuffcallDelay1t6:callDisplaycallread_keyCMPAL,0DHJNET66movbyteptr[bx],16DECBXcallupdate_ledbuffcallDelay1JMPT5T66:cmpal,9jat6t6_over:incbxmov[bx],alcallupdate_ledbuffcallDelay1callDelay1key_over:stiret;================================read_key:pushbxpushcxpushdxmoval,0ffh;关显示口movdx,OUTSEGoutdx,almovbl,0movah,0fehmovcx,8key1:moval,ahmovdx,OUTBIToutdx,alshlal,1movah,alnopnopnopnopnopnopmovdx,IN_KEYinal,dxnotalnopnopandal,0fhjnzkey2incblloopkey1nkey:moval,20hpopdxpopcxpopbxretkey2:testal,1jekey3moval,0jmpkey6key3:testal,2jekey4moval,8jmpkey6key4:testal,4jekey5moval,10hjmpkey6key5:testal,8jenkeymoval,18hkey6:addal,blcmpal,10hjncfkeymovbx,offsetKeyTablexlatfkey:popdxpopcxpopbxret;================================CODEENDSENDStart....word.zl.
本文档为【微机原理课程设计报告-数字时钟的实现(附代码)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
pyaiw
擅长施工管理及辅助设计,并对施工技术、质量与安全的深入研究
格式:doc
大小:393KB
软件:Word
页数:16
分类:教育学
上传时间:2021-12-05
浏览量:5