您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 28微机原理课程设计报告(电子秒表)
微机原理课程设计报告一、设计目的培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。掌握8255、8259、8253等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。二、设计内容设计一个可任意启动/停止的电子秒表,要求用6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时。可用开关控制,也可用按键控制三、设计要求1、基本要求:1)设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。2)通过键盘按键控制秒表清零、暂停、继续,退出等。其中数字0控制清零,数字1控制继续和退出。2、提高要求:1)秒表可以分组存储、批量显示、倒计时等。2)采用图像显示,界面精美,设置报警声等四、设计原理与硬件电路1、整体设计思想使用8253工作在方式0计数,对1/100S计数,并讲计数值写入bl中并与100比较若不相等,则将计数值装换为10进制后送8255控制端显示,如相等则1S计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则1min计数程序加1之后并与59比较若不相等微机原理课程设计报告则将计数值装换为10进制后送8255控制端显示,如相等则计数程序加1之后产生溢出,跳转清零程序将计数清零,同时数码管清零。2、使用各芯片的作用及工作原理1)定时器/计数器8253用系统8253定时器提供的55ms定时单位,设计秒表定时程序。有关系统定时方法:PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,频率:f=1.1931816MHz。定时器0输出方波的频率:fout=1.1931816/65536=18.2Hz。输出方波的周期Tout=1/18.2=54.945ms。8253A每隔55ms引起一次中断,作为定时信号。可用55945ms作基本计时单位。用BIOS调用INT1AH可以取得该定时单位。例:1秒=18.2(计时单位)8253的引脚图及硬件连接图如下图示:《8253引脚图》硬件连接图当A1A0分别为00011011时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连。计数器(0~2)即三个计数器/定时器通道。每个通道包括:8位控制字寄存器、16位计数初值寄存器、减一计数器和输出锁存器。作定时器用:其CLK端上的输入脉微机原理课程设计报告冲应是标准的、精确的;作计数器用:对其CLK端上的脉冲计数,脉冲宽度可以不等。采用减一计数器,为0时,从OUT端上输出一个脉冲定时时间=时钟脉冲周期X预置的计数初值。控制功能表CSRDWRA1A0功能01000写计数器001001写计数器101010写计数器201011写控制字寄存器00100读计数器000101读计数器100110读计数器200111无操作1XXXX禁止使用011XX无操作每个通道:CLK计数脉冲或标准脉冲输入端GATE允许端,当GATE=1时允许计数UT计数值为0时输出一个脉冲由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。每个通道都可以编程设定3种工作方式之一种;8253由以下几个部分组成:(1)数据总线缓冲器(8位、三态、双向);(2)读/写控制逻辑;CS:片选信号,低电平有效;RD:读信号,低电平有效;WR:写信号,低电平有效微机原理课程设计报告A1A0:端口选择信号(3)三个通道(0~2),由A0,A1控制选择;(4)一个控制寄存器;内部结构及引脚图:2)用可编程并行接口芯片8255的PA口以及PB口实现数码管输出,PC口实现按键实现数据显示输出8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255工作方式控制字和C口按位置位/复位控制字格式如图所示:微机原理课程设计报告3.锁存器27374LS273是8位数据/地址锁存器,他是一种带清除功能的8D触发器,下面介绍一下他的管脚图功能表等资料。(1).1脚是复位CLR,低电平有效,当1脚是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位;(2).当1脚为高电平时,11(CLK)脚是锁存控制端,并且是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上.74ls273管脚功能:1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。4.数据收发器245微机原理课程设计报告当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)*DIR=“1”,信号由A向B传输;(发送)当/CE为高电平时,A、B均为高阻态5、译码器74ls15474ls154为4—16线制译码器其引脚图如下图所示微机原理课程设计报告6.7段数码管数码管要正常显示,就要来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。微机原理课程设计报告开始五、程序流程图等于1S不等等于59不等等于59不等等于231S计数60S计数60min计数24h计数BVD处理产生溢出清空BCD码调整指令10进制显示微机原理课程设计报告六、程序代码a1equ0000hb1equ0002hc1equ0004hctr1equ0006h;8255各端口地址a2equ0200h;8253计数器0端口地址ctr2equ0206h;8253控制端口地址a3equ0100hdatasegment;keynumdb0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77Htabdb3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71Hbufdb0,0,0,0buf1db0,0,0,0,0,0,0,0buf2db0,0;前为第一开关次数buf3db80dup(?)dataendscodesegment'code'assumeds:data,cs:codestart:movax,datamovds,ax;设中断入口地址设置movax,0moves,axmovdi,08movax,offsetintr_keycldstoswmovax,segintr_keystoswmovax,datamoves,ax;8255写入控制字moval,10001001b;A口B口输出显示,C口高四位低四位输入movdx,ctr1outdx,aln3:calljishujmpn3n2:leasi,buf2movbh,00hmovbl,1h[si]leadi,buf3adddi,bxaddbl,8mov1h[si],blleasi,buf1cldmovcx,8repmovsbn4:calldisjmpn4n5:leasi,buf2movbh,00h微机原理课程设计报告movbl,1h[si]cmpbl,0jzn1leadi,buf1subbl,8mov1h[si],blleasi,buf3addsi,bxcldmovcx,8repmovsbn6:calldisjmpn6n1:callqinlinjmpn1;jmpstartjishuprocnear;计数子程序leasi,bufmovbl,[si]cmpbl,100jnzs6s1:movbl,0mov[si],blmovah,1h[si]cmpah,59jzs2incahmov1h[si],ahjmps6s2:movah,0mov1h[si],ahmovah,2h[si]incahmov2h[si],ahjmps6s6:callchumovcx,3s5:calldisloops5calldelay1sincbyteptr[si]retjishuendpchuproc;rukoual;数处理子程序pushsipushbxmovbl,4leadi,buf1leasi,bufnext:lodsbmovah,00movcl,10divclxchgah,alstosbmoval,ahstosbdecbl微机原理课程设计报告jnznextpopbxpopsiretchuendpdisprocnear;显示buf1中的值pushbxpushcxleabx,tableadi,buf1movcx,8movah,7Fhloop1:moval,[di]xlat;换码movdx,a1outdx,almovdx,b1moval,ahoutdx,almovbh,1calldelaycallqpleabx,tabrorah,1incdilooploop1popcxpopbxretdisendpdelay1sprocnear;8253延时子程序pushdxpushaxmovdx,ctr2;8253控制moval,00110000boutdx,al;8253计数器0控制字方式0out端作为中断请求信号movdx,a2moval,01houtdx,almoval,00houtdx,almovdx,a3M1:inal,dxtestal,01hjzM1popaxpopdxretdelay1sendpqpprocnear;清频子程序moval,0ffhmovdx,b1outdx,alretqpendpdelayPROCNEAR;内部延时之程序PUSHbx微机原理课程设计报告PUSHCXwait0:MOVCX,06hwait1:LOOPwait1DECbhJNZwait0POPCXPOPbxRETdelayENDPintr_keyprocnear;中断服务子程序callkeytestal,2hjzn1testal,4hjz
本文标题:28微机原理课程设计报告(电子秒表)
链接地址:https://www.777doc.com/doc-6230171 .html