智能化电子表课程设计说明书.docx

上传人:b****6 文档编号:5970263 上传时间:2023-01-02 格式:DOCX 页数:22 大小:118.83KB
下载 相关 举报
智能化电子表课程设计说明书.docx_第1页
第1页 / 共22页
智能化电子表课程设计说明书.docx_第2页
第2页 / 共22页
智能化电子表课程设计说明书.docx_第3页
第3页 / 共22页
智能化电子表课程设计说明书.docx_第4页
第4页 / 共22页
智能化电子表课程设计说明书.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

智能化电子表课程设计说明书.docx

《智能化电子表课程设计说明书.docx》由会员分享,可在线阅读,更多相关《智能化电子表课程设计说明书.docx(22页珍藏版)》请在冰豆网上搜索。

智能化电子表课程设计说明书.docx

智能化电子表课程设计说明书

智能化电子表课程设计说明书

一、设计任务:

1.电子表,具有十分、分、十秒和秒的计时功能,并可以在数码管上显示。

2电子表具有启动键、停止键、复位键,而且可以随时通过键盘进行各位时间的设置。

二、设计原理:

本程序的主要设计原理是用主程序完成键盘按键的扫描,实现计时结果的数码管显示,实现秒与分之间的转换。

通过判断键盘按键调用相应功能程序段以实现相应功能,即实现了启动、暂停、复位功能,以及通过键盘进行十分、分、十秒、秒时间的手动设置功能。

1.8254的初始化字

 

由此,本设计中的8254的初始化为:

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,36H;计数器0,方式3

OUTDX,AL

MOVDX,MY8254_COUNT0;装入计数初值

MOVAL,00H;18432分频

OUTDX,AL

MOVAL,54H

OUTDX,AL

 

2.8255的初始化字

由此,本设计中的8255的初始化为:

MOVDX,MY8255_MODE;初始化8255工作方式

MOVAL,81H;方式0,A口、B口输出,C口低4位输入

OUTDX,AL

 

三、电子表软件流程图

1.主程序流程图

程序初始化

判断小键盘是否有键按下

PC机上面是不是有键按下

若按键值为3,则要转至STARTISRUNING处理程序

若按键值为1,则要转至STOPKEYTAG处理程序

若按键值为2,则要转至CLEARKEYTAG处理程序

返回DOS

结束

调用子程序

开始

若按键值为8、9、0A、0B、0C、0D、0E、0F,则要转至时间设置处理程序

 

N

 

Y

 

 

NY

 

2.电子表处理程序

 

N

Y

 

N

Y

 

N

Y

 

N

Y

 

四、电子表硬件接线图

XD7

XD6

XD5

XD4

XD3

XD2

XD1

XD0

XA3

D7

D6

D5

D4

D3

D28254

D1单元

D0

A1

A2

WR

RD

CS

OUT0

CLK0

XA2

XIOW

XIOR

IOY0

IOY1

INTR

CLK

 

线

 

 

五.电子表软件代码

;***************根据CHECK配置信息修改下列符号值*******************

IOY0EQU0e000H;片选IOY0对应的端口始地址

IOY1EQU0e040H

;*****************************************************************

MY8255_AEQUIOY0+00H*4;8255的A口地址

MY8255_BEQUIOY0+01H*4;8255的B口地址

MY8255_CEQUIOY0+02H*4;8255的C口地址

MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址

MY8254_COUNT0EQUIOY1+00H*4;8254计数器0端口地址

MY8254_COUNT1EQUIOY1+01H*4;8254计数器1端口地址

MY8254_COUNT2EQUIOY1+02H*4;8254计数器2端口地址

MY8254_MODEEQUIOY1+03H*4;8254控制寄存器端口地址

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H,77H,7CH,39H

5EH,79H,71H;键值表,0~F对应的7段数码管的段位值

TIMETABLEDB0,0,0,0

STARTKEYDB3;启动键

STOPKEYDB1;停止键

CLEARKEYDB2;清0键

SETTMADDKEYDB8;设置十位分钟加

SETMADDKEYDB9;设置个位分钟加

SETTSADDKEYDB0AH;设置十位秒加

SETSADDKEYDB0BH;设置个位秒加

SETTMSUBKEYDB0CH;设置十位分钟减

SETMSUBKEYDB0DH;设置个位分钟减

SETTSSUBKEYDB0EH;设置十位秒减

SETSSUBKEYDB0FH;设置个位秒减

 

STATUSDB0;8254out端口状态键

ISRUNINGDB0

WTHOUSANDDB0

WSECDB0

WMSECDB0

TENSECDB0

SECDB0

MINTDB0

TENMINTDB0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,36H;计数器0,方式3

OUTDX,AL

MOVDX,MY8254_COUNT0;装入计数初值

MOVAL,00H;18432分频

OUTDX,AL

MOVAL,54H

OUTDX,AL

MOVDX,MY8255_MODE;初始化8255工作方式

MOVAL,81H;方式0,A口、B口输出,C口低4位输入

OUTDX,AL

BEGIN:

CALLDIS;显示刷新

CALLCLEAR;清屏

CALLCCSCAN;扫描按键

JZNOKEYDOWN;有键按下则跳置GETKEY1

JMPGETKEY1

NOKEYDOWN:

MOVAH,1;判断PC键盘是否有按键按下

INT16H

JZKEYSCANEND;无按键则跳回继续循环,有则退出

JMPQUIT

KEYSCANEND:

CMPISRUNING,1

JNEBEGIN

TIMESTART:

MOVAL,11100010B;设置回读命令

MOVDX,MY8254_MODE

OUTDX,AL

 

MOVDX,MY8254_COUNT0;读0端口状态控制字

INAL,DX

CMPSTATUS,1

JNENOTSTATUS

TESTAL,80H

JZCHANGEWMSEC

JMPBEGIN

NOTSTATUS:

TESTAL,80H

JNZCHANGEWMSEC

JMPBEGIN

CHANGEWMSEC:

TESTAL,80H

JZCHANGESTATUS

MOVSTATUS,1

JMPHASCHANGE

CHANGESTATUS:

MOVSTATUS,0

HASCHANGE:

INCWMSEC

CMPWMSEC,0AH;百分秒到10,十分秒加1

JNECHANGESEC

MOVWMSEC,0

INCWSEC

CMPWSEC,0AH;十分秒秒到10,个位秒加1

JNECHANGESEC

MOVWSEC,0

INCSEC

CMPSEC,0AH;个位秒秒到10,十位秒加1

JNECHANGESEC

MOVSEC,0

INCTENSEC

CMPTENSEC,06H;十位秒到6,清零

JNECHANGESEC

MOVTENSEC,0

INCMINT

CMPMINT,0AH;分钟个位到10,十位加1

JNZCHANGESEC

MOVMINT,0

INCTENMINT

CMPTENMINT,06H;十位分到6,清零

JNECHANGESEC

MOVTENMINT,0

CHANGESEC:

MOVSI,0

;存储时间

MOVAL,TENMINT;十位分

MOVTIMETABLE[SI],AL

INCSI

MOVAL,MINT;个位分

MOVTIMETABLE[SI],AL

INCSI

MOVAL,TENSEC;十位秒

MOVTIMETABLE[SI],AL

INCSI

MOVAL,SEC;个位秒

MOVTIMETABLE[SI],AL

INCSI

MOVTIMETABLE[SI],0

INCSI

JMPBEGIN

QUIT:

MOVAX,4C00H;返回到DOS

INT21H

GETKEY1:

CALLDIS;显示刷新

CALLDALLY

CALLDALLY

CALLCLEAR;清屏

CALLCCSCAN;再次扫描按键

JNZGETKEY2;有键按下则跳置GETKEY2

JMPBEGIN;否则跳回开始继续循环

GETKEY2:

MOVCH,0FEH

MOVCL,00H;设置当前检测的是第几列

COLUM:

MOVAL,CH;选取一列,将X1~X4中一个置0

MOVDX,MY8255_A

OUTDX,AL

MOVDX,MY8255_C;读Y1~Y4,用于判断是哪一行按键闭合

INAL,DX

L1:

TESTAL,01H;是否为第1行

JNZL2;不是则继续判断

MOVAL,00H;设置第1行第1列的对应的键值

JMPKCODE

L2:

TESTAL,02H;是否为第2行

JNZL3;不是则继续判断

MOVAL,04H;设置第2行第1列的对应的键值

JMPKCODE

L3:

TESTAL,04H;是否为第3行

JNZL4;不是则继续判断

MOVAL,08H;设置第3行第1列的对应的键值

JMPKCODE

L4:

TESTAL,08H;是否为第4行

JNZkk;不是则继续判断

MOVAL,0CH;设置第4行第1列的对应的键值

MYNEXT:

PUSHAX

KON:

CALLDIS;显示刷新

CALLCLEAR;清屏

CALLCCSCAN;扫描按键,判断按键是否弹起

JNZKON;未弹起则继续循环等待弹起

POPAX

KCODE:

ADDAL,CL;将第1列的值加上当前列数,确定按键值

CMPAL,STARTKEY;判断是否为开始键

JNESTOPKEYTAG

CMPISRUNING,0

JNESTARTISRUNING

MOVISRUNING,1

STARTISRUNING:

JMPTIMESTART

STOPKEYTAG:

;判断是否为停止键

CMPAL,STOPKEY

JNECLEARKEYTAG

MOVISRUNING,0

JMPSTARTISRUNING

CLEARKEYTAG:

;判断是否为清零键

CMPAL,CLEARKEY

JNZSETTMADDTAG

CALLCLEARCLOCK

JMPKERR

KK:

JMPNEXT

SETTMADDTAG:

;判断是否为十位分钟加设置键

CMPAL,SETTMADDKEY

JNZSETMADDTAG

CALLSETTMADD

JMPKERR

SETMADDTAG:

;判断是否为个位分钟加设置键

CMPAL,SETMADDKEY

JNZSETTSADDTAG

CALLSETMADD

JMPKERR

SETTSADDTAG:

;判断是否为十位秒加设置键

CMPAL,SETTSADDKEY

JNZSETSADDTAG

CALLSETTSADD

JMPKERR

SETSADDTAG:

;判断是否为个位秒加设置键

CMPAL,SETSADDKEY

JNZSETTMSUBTAG

CALLSETSADD

JMPKERR

SETTMSUBTAG:

;判断是否为十位分钟减设置键

CMPAL,SETTMSUBKEY

JNZSETMSUBTAG

CALLSETTMSUB

JMPKERR

SETMSUBTAG:

;判断是否为个位分钟减设置键

CMPAL,SETMSUBKEY

JNZSETTSSUBTAG

CALLSETMSUB

JMPKERR

SETTSSUBTAG:

;判断是否为十位秒减设置键

CMPAL,SETSSUBKEY

JNZSETSSUBTAG

CALLSETTSSUB

JMPKERR

SETSSUBTAG:

;判断是否为个位秒减设置键

CMPAL,SETSSUBKEY

JNZKERR

CALLSETSSUB

NEXT:

INCCL;当前检测的列数递增

MOVAL,CH

TESTAL,08H;检测是否扫描到第4列

JZKERR;是则跳回到开始处

ROLAL,1;没检测到第4列则准备检测下一列

MOVCH,AL

JMPCOLUM

KERR:

JMPBEGIN

CCSCANPROCNEAR;扫描是否有按键闭合子程序

MOVAL,1H

MOVDX,MY8255_A;将4列全选通,X1~X4置0

OUTDX,AL

MOVDX,MY8255_C

INAL,DX;读Y1~Y4

NOTAL

ANDAL,0FH;取出Y1~Y4的反值

RET

CCSCANENDP

CLEARPROCNEAR;清除数码管显示子程序

MOVDX,MY8255_B;段位置0即可清除数码管显示

MOVAL,00H

OUTDX,AL

RET

CLEARENDP

DISPROCNEAR;显示键值子程序

PUSHAX;以缓冲区存放的键值为键值表偏移找到键值并显示

MOVSI,OFFSETTIMETABLE

MOVCX,SI

ADDCX,1

ADDSI,5

MOVDL,0DFH

MOVAL,DL

AGAIN:

PUSHDX

MOVDX,MY8255_A

OUTDX,AL;设置X1~X4,选通一个数码管

MOVAL,[SI];取出缓冲区中存放键值

MOVBX,OFFSETDTABLE

ANDAX,00FFH

ADDBX,AX

MOVBL,[BX]

CMPSI,CX

JNECOMER

ORBL,80H

COMER:

MOVAL,BL;将键值作为偏移和键值基地址相加得到相应的键值

MOVDX,MY8255_B

OUTDX,AL;写入数码管A~Dp

CALLDALLY

DECSI;取下一个键值

POPDX

MOVAL,DL

TESTAL,01H;判断是否显示完?

JZOUT1;显示完,返回

RORAL,1

MOVDL,AL

JMPAGAIN;未显示完,跳回继续

OUT1:

POPAX

RET

DISENDP

DALLYPROCNEAR;软件延时子程序

PUSHCX

MOVCX,00FFH

D1:

MOVAX,00FFH

D2:

DECAX

JNZD2

LOOPD1

POPCX

RET

DALLYENDP

;设置十位分钟加子程序

SETTMADDPROCNEAR

ADDTENMINT,1

MOVAL,TENMINT

MOVSI,0

MOVTIMETABLE[SI],AL

RET

SETTMADDENDP

;设置个位分钟加子程序

SETMADDPROCNEAR

ADDMINT,1

MOVAL,MINT

MOVSI,1

MOVTIMETABLE[SI],AL

RET

SETMADDENDP

;设置十位秒加子程序

SETTSADDPROCNEAR

ADDTENSEC,1

MOVAL,TENSEC

MOVSI,2

MOVTIMETABLE[SI],AL

RET

SETTSADDENDP

;设置个位秒加子程序

SETSADDPROCNEAR

ADDSEC,1

MOVAL,SEC

MOVSI,3

MOVTIMETABLE[SI],AL

RET

SETSADDENDP

;设置十位分钟减子程序

SETTMSUBPROCNEAR

SUBTENMINT,1

MOVAL,TENMINT

MOVSI,0

MOVTIMETABLE[SI],AL

RET

SETTMSUBENDP

;设置个位分钟减子程序

SETMSUBPROCNEAR

SUBMINT,1

MOVAL,MINT

MOVSI,1

MOVTIMETABLE[SI],AL

RET

SETMSUBENDP

;设置十位秒减子程序

SETTSSUBPROCNEAR

SUBTENSEC,1

MOVAL,TENSEC

MOVSI,2

MOVTIMETABLE[SI],AL

RET

SETTSSUBENDP

;设置个位秒减子程序

SETSSUBPROCNEAR

SUBSEC,1

MOVAL,SEC

MOVSI,3

MOVTIMETABLE[SI],AL

RET

SETSSUBENDP

;电子表复位子程序

CLEARCLOCKPROCNEAR

MOVTENMINT,0

MOVMINT,0

MOVTENSEC,0

MOVSEC,0

MOVSI,0

MOVTIMETABLE[SI],0

INCSI

MOVTIMETABLE[SI],0

INCSI

MOVTIMETABLE[SI],0

INCSI

MOVTIMETABLE[SI],0

RET

CLEARCLOCKENDP

CODEENDS

ENDSTART

五、心得体会

在设计刚开始时,我们只是知道要用8254完成计数,用8255与数码管单元完成显示功能,但是具体怎么实现的还不是很清楚。

在接下来的一小段时间里,我们觉得无从下手,但通过自己耐心搜集资料,向老师和同学请教,慢慢理出了头绪,也有了自己的设计思想和设计框架,并有了一定的实现方法。

对于设计题目来说,并非那么得复杂,但要设计者将所学转换成相应的实际应用却并非一件容易的事情。

本设计题目的设计思想是简单的,只需要使用8254完成计数,用8255与数码管单元完成显示功能,并通过自己的理解附加一些功能片段来完成电子表的人性化功能设计,如电子表的校准、电子表的开始、停止、清零等功能。

在课程设计过程中,我深刻地体会到:

《微机原理与接口技术》这门课程对于我们的要求不仅限于对书本知识的理解,更重要的是对书本知识的运用。

除此之外,我们应该在学习过程中充分发挥自己的想象力和创新意识,将对书本知识的理解与我们的创新意识相结合,设计出实用且功能良好的实物。

通过本次课程设计,也提高了我们的编程能力、协作能力和创新能力,为以后的学习打下了良好的基础。

 

参考文献

[1]郭兰英祥模,《微机原理与接口技术》清华大学

[2]荣祥,《微型计算机原理》,中国电力

[3]会敏晋惠,《微型计算机原理及接口技术应用》,科学

 

评语

评语

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1