电子秒表微机课程设计.docx
- 文档编号:28413536
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:27
- 大小:256.83KB
电子秒表微机课程设计.docx
《电子秒表微机课程设计.docx》由会员分享,可在线阅读,更多相关《电子秒表微机课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
电子秒表微机课程设计
课程设计报告
课程设计名称:
电子秒表
系:
学生姓名:
班级:
学号:
成绩:
指导教师:
开课时间:
2013-2014学年1学期
一、设计题目-------------------------------------------------------------3
二、主要内容-------------------------------------------------------------3
三、基本要求-------------------------------------------------------------3
四、设计原理与硬件电路----------------------------------------------3
五、程序流程图---------------------------------------------------------11
六、程序代码-----------------------------------------------------------12
七、程序运行结果------------------------------------------------------19
八、进程安排------------------------------------------------------------21
九、心得收获------------------------------------------------------------21
一十、成绩评定------------------------------------------------------------22
一十一、参考资料---------------------------------------------------------22
一、设计题目
电子秒表
二、主要内容
设计一个可任意启动/停止的电子秒表,要求用6位LED数码显示,计时单位为1/100秒。
利用功能键进行启/停控制。
其功能为:
上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。
第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时。
可用开关控制,也可用按键控制。
三、具体要求
1)设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。
2)通过键盘按键控制秒表清零、暂停、继续,退出等。
其中数字0控制清零,数字1控制继续和退出。
3)秒表可以分组存储、批量显示。
四、设计原理与硬件电路
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预置的计数初值。
控制功能表
CS
RD
WR
A1A0
功能
0
1
0
00
写计数器0
0
1
0
01
写计数器1
0
1
0
10
写计数器2
0
1
0
11
写控制字寄存器
0
0
1
00
读计数器0
0
0
1
01
读计数器1
0
0
1
10
读计数器2
0
0
1
11
无操作
1
X
X
XX
禁止使用
0
1
1
XX
无操作
每个通道:
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、锁存器273
74LS273是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、译码器74ls154
74ls154为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线控制。
7、汇编程序中附加程序:
1.CLOUR(字体颜色设置程序)
通过字体颜色设置程序,实现屏显字体颜色的改变。
当改变BX值时,字体颜色会改变。
2.HALT(启动子程序)
通过启动子程序,实现计时的开始,当从键盘输入一个字符时,判断是否等于S,如果不等,则在循环执行启动子程序中动态等待,直到输入的字符为S时,计时开始。
3.IOSET(设置光标位置子程序)
通过设置光标子程序,来设置显示的区域。
一般整个屏幕可显示25行,80列,屏幕左上角字符位置为0行0列,右下脚字符为24行79列,对应十六进制为:
左上脚为(0,0),右下脚为(18,4F)。
入口信息为:
(AH)=2要设置光标;(BH)=0页号;(DH,DL)=00要置光标于0行0列。
DX赋值为0D27H,光标置位于屏幕中央。
4.GO(初始化显示子程序)
通过将在数据段定义的BUFFER数组的首址赋给BX,将待显示初值字符串00:
00存入数组中的相应位置,当每次复位以后,重新调用该子程序,将程序的执行结果修正为00:
00,并显示于屏幕上,从而实现了程序的初值设定和复位功能。
5.TIME(延时子程序)
计算机每执行一条指令,虽然很快,但是需要一些时间,因此在本程序中可以通过延时程序,让计算机去执行一些无关的程序,来达到时钟秒与百分之一秒转换时的时间延迟。
每条指令执行时间的长短,是以计算机的时钟周期为基本单位的,因此不同的计算机可以通过修改延时程序数值来使其达到准确计时。
6.TRAN(压缩BCD码转ASCII码程序)
计算机显示数据时使用的是数据的ASCII码,而在程序设计当中程序的计时数值是BCD码,因此,需要通过此子程序实现将BCD码转变为ASCII码,以备送屏幕显示。
因为时钟计时的压缩BCD码每一个数都有8位,因此将其右移四位并加30H,将其高位数字取出,送BX存放,再将其低位数字取出,加30H,送BX存放,达到不同码制之间转换的目的。
7.复位、停止等功能的实现
通过对输入字符的判断和各种循环的嵌套调用实现。
整体上本程序的主要设计原理是先在数据段中定义“SSTARTRRESETEENDCCONTINUE”控制字符串,并定义缓冲区。
将数据段的段基址送DS,并将“SSTARTRRESETEENDCCONTINUE”显示,同时调用GO子程序,将显示结果初始化。
同时设置光标,启动计时,启动延时程序,将百分之一秒加1并将其设置为压缩BCB码,当其CF不为1时,送屏幕显示,当其为1时,将其设置为0,并在秒上加1,当秒等于60时,其置0,当其小于60时,送屏幕显示。
在计时过程中,如果键入R,则将其复位,并重新开始计时,当键入E时,计时暂停,如果键入C,则继续计时,如果键入R,则复位,设置为00:
00,当再次键入S时,再次计时开始。
五、程序流程图-
六、程序代码
DATSEGMENT;设置数据段
BUFDB'Inputstart(S)ormemory(M)orend(E)orcontinue(C)orrestart(R)$';设置功能说明
MESSDB'',0ah,0dh
DB'',0ah,0dh
DB'',0ah,0dh
DB'********************',0ah,0dh
DB'********',0ah,0dh
DB'***********',0ah,0dh
DB'***********',0ah,0dh
DB'********',0ah,0dh
DB'***********',0ah,0dh
DB'***********',0ah,0dh
DB'********************',0ah,0dh
DB'',0ah,0dh
DB'',0ah,0dh
DB'****************************',0ah,0dh
DB'********',0ah,0dh
DB'********',0ah,0dh
DB'********',0ah,0dh
DB'********',0ah,0dh
DB'********',0ah,0dh
DB'********',0ah,0dh
DB'********',0ah,0dh
DB'****************************',0ah,0dh
DB'DesignedbylcCopyright@2013--2014','$'
TIPDB'MEMORY$';定义记忆提示
BUFFERDB20DUP(?
);定义缓存区
NUMDB1
LODEQU0144H;记忆显示区光标的位置
DATENDS
;--------------------代码段----主程序单元------------------
CODSEGMENT;定义代码段
STARTPROCFAR
ASSUMECS:
COD,DS:
DAT
MOVAX,DAT
MOVDS,AX
CALLCLR;图形区清屏并设置颜色
CALLCLRDAT;秒表数字区清屏并设置颜色
CALLCLRMER;记忆区清屏并设置颜色
MOVDX,OFFSETBUF;输出功能说明
MOVAH,09H;输出字符串
INT21H
MOVDX,OFFSETMESS;输出功能说明
MOVAH,09H
INT21H
CALLDISMER;"MEMORY"的光标位置
MOVDX,OFFSETTIP;输出"MEMORY"
MOVAH,09H
INT21H
CALLGO;设置初值
LOAD:
CALLIOSET;光标定位
CALLHALT;等待输入
MOVDX,0
MOVCH,0
AGAIN:
CALLTIME;调用延时程序
MOVAL,DL;十分之一秒加一
ADDAL,1
DAA
CMPAL,10H
JENEXT1;满十进位
MOVDL,AL
JMPDISPY;不满十显示
NEXT1:
MOVDL,0
MOVAL,DH;秒位加一
ADDAL,1
DAA
MOVDH,AL
CMPAL,60H
JNEDISPY
MOVDH,0
MOVAL,CH;分位加一
ADDAL,1
DAA
MOVCH,AL
CMPAL,60H
JNEDISPY;满60清零
MOVCH,0
DISPY:
;显示电子秒表
MOVBX,OFFSETBUFFER;取缓冲区地址
MOVAL,CH
CALLTRAN;将分位转变为ASCII码并送缓冲区
INCBX
INCBX
MOVAL,DH;将秒位转变为ASCII码并送缓冲区
CALLTRAN
INCBX
INCBX
MOVAL,DL;将十分之一秒位转变为ASCII码并送缓冲区
CALLTRAN2
PUSHBX
PUSHCX
PUSHDX
CALLIOSET;光标置位
MOVDX,OFFSETBUFFER;输出缓冲区字符串
MOVAH,09H
INT21H
POPDX
POPCX
POPBX
MOVAH,0BH;等待键盘输入
INT21H
ANDAL,AL
JZAGAIN
MOVAH,08H
INT21H
CMPAL,'M'
JNZR1
CALLMEMORY
JMPAGAIN
R1:
CMPAL,'R';判断输入是否为R
JNENEXT2;不是则判断是否为E
CALLMEMORY;若是则调用记忆功能保存当前值
MOVCH,0;初值清零重新计数
MOVDL,0
MOVDH,0
JMPAGAIN
NEXT2:
CMPAL,'E';判断是否为E
JNEAGAIN;不是则继续计数
NEXT3:
;若是则暂停计数
MOVAH,08H
INT21H
CMPAL,'C';判断是否输入C
CMPAL,'R';判断是否输入R
JNENEXT3;若不是则继续等待输入
CALLMEMORY;若是则调用记忆功能
CALLGO;重新设置初值等待重新启动
CALLIOSET
MOVDX,OFFSETBUFFER
MOVAH,09H
INT21H
JMPLOAD
RET
STARTENDP
;-------------------子程序单元------------设置初值子程序-----------
GOPROC
MOVBX,OFFSETBUFFER
MOVAL,'0'
MOV[BX],AL
INCBX
MOVAL,'0'
MOV[BX],AL
INCBX
MOVAL,':
'
MOV[BX],AL
INCBX
MOVAL,'0'
MOV[BX],AL
INCBX
MOVAL,'0'
MOV[BX],AL
INCBX
MOVAL,'.'
MOV[BX],AL
INCBX
MOVAL,'0'
MOV[BX],AL
INCBX
MOVAL,'$'
MOV[BX],AL
RET
GOENDP
;--------------------光标定位子程序----------------------
IOSETPROC
MOVDX,121DH;光标定位在18行39列
MOVBH,00;页号
MOVAH,02H;要设置光标
INT10H
RET
IOSETENDP
HALTPROC
MOVAH,08H
INT21H
CMPAL,'S'
JNEHALT
RET
HALTENDP
;----------------------BCD转ASCII码子程序1------------
TRANPROC
MOVCL,AL
SHRAL,1
SHRAL,1
SHRAL,1
SHRAL,1
ORAL,30H
MOV[BX],AL
INCBX
MOVAL,CL
ANDAL,0FH
ORAL,30H
MOV[BX],AL
RET
TRANENDP
;----------------------BCD转ASCII码子程序2-----------
TRAN2PROC
ADDAL,30H
MOV[BX],AL
RET
TRAN2ENDP
;------------------延时子程序-----------------
TIMEPROC
PUSHCX
PUSHAX
MOVAX,06EEH;通过改变AX的初值来校准秒表
MOVCX,0FFFFH
A1:
DECAX
JNZA2
JMPA3
A2:
DECCX
JNZA2
JMPA1
A3:
POPAX
POPCX
RET
TIMEENDP
;-----------------记忆功能子程序-----------
MEMORYPROC
PUSHDX
PUSHBX
PUSHAX
CMPNUM,20
JEX2
ADDNUM,1
X1:
MOVDX,LOD
ADDDH,NUM
MOVBH,00
MOVAH,02H
INT10H
MOVDX,OFFSETBUFFER
MOVAH,09H
INT21H
POPAX
POPBX
POPDX
RET
X2:
CALLCLRMER
MOVNUM,1
JMPX1
MEMORYENDP
;----------------------图形区清屏并设置颜色子程序----
CLRPROC
MOVAH,06H;使屏幕上滚
MOVAL,18H;上滚行数
MOVCX,0000H;滚动区域左上角的行号列号
MOVDX,1840H;滚动区域右下角的行号列号
MOVBH,2CH;空白行属性
INT10H
RET
CLRENDP
;----------------数据区清屏并设置颜色子程序------------
CLRDATPROC
MOVAH,6
MOVAL,1
MOVCX,121DH
MOVDX,0E23H
MOVBH,6EH
INT10H
RET
CLRDATENDP
;------------------------记忆区清屏并设置颜色子程序---------
CLRMERPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,18H
MOVCX,0141H
MOVDX,184FH
MOVBH,5EH
INT10H
POPDX
POPCX
POPBX
POPAX
RET
CLRMERENDP
;------------------------记忆提示光标定位---------------
DISMERPROC
MOVAH,02H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 秒表 微机 课程设计