实现特定功能的键盘及LED显示课程设计Word下载.docx
- 文档编号:18889572
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:15
- 大小:19.59KB
实现特定功能的键盘及LED显示课程设计Word下载.docx
《实现特定功能的键盘及LED显示课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《实现特定功能的键盘及LED显示课程设计Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
(含电路原理图、硬件连接示意图、系统功能框图、程序流程图等)
3.1电路原理图
3.2系统功能框图
3.3程序流程图
3.4各功能实现方案
3.4.1功能一按1键显示年
当可编程的键盘、显示接口芯片8279扫描寄存器AL=02H时,说明按键为1号键。
关于显示年份,首先定义一个显示缓冲区,用于存储表示年份的数字。
然后依次读取其值,经过换码,再通过8279以左端入口方式显示与数码管上。
程序段如下:
MOVDX,D8279;
键值输入
INAL,DX
CMPAL,02H
JZYEAR
YEAR:
MOVCX,04H
AA:
MOVDX,D8279;
其余四位,显示0
MOVAL,3FH
OUTDX,AL
LOOPAA
MOVBX,OFFSETTAB
MOVSI,OFFSETDISPBUFF1+3;
设置要显示的初始位
MOVCX,4
DISP1:
MOVAL,[SI]
XLAT;
通过换码,再显示
MOVDX,D8279
DECSI
LOOPDISP1;
依次读取数值9,0,0,2
。
。
TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DISPBUFF1DB2,0,0,9;
定义显示缓冲区
3.4.2功能二按2键显示月日
方法同功能一,当8279扫描寄存器AL=0AH时,说明按键为2号键。
显示月日方法和显示年份一样,首先定义一个显示缓冲区,用于存储表示月日的数字。
CMPAL,0AH;
JZMONTH
MONTH:
BB:
OUTDX,AL
LOOPBB
MOVBX,OFFSETTAB
MOVSI,OFFSETDISPBUFF2+3;
DISP2:
DECSI;
依次读取数值1,3,8,0
LOOPDISP2
DISPBUFF2DB0,8,3,1;
3.4.3功能三按3键显示GOOD
将G,O,O,D分别以七段代码6FH,3FH,3FH,5EH代替,由于8279为左端入口方式,所以应依次将5EH,3FH,3FH,6FH送与8279数据端,以显示GOOD字样。
然后清空LED数码管的显示,再将以上代码送与8279,并通过延时,让GOOD字样以闪烁方式显示与数码管。
程序如下:
GOOD:
MOVBL,0AH;
闪烁次数10次
GOD:
MOVCX,08H;
清空LED数码管的显示
CLEAR:
MOVDX,D8279
MOVAL,00H
LOOPCLEAR
CALLDELAY;
延时
MOVCX,04H
CC:
MOVDX,D8279其余位显示0
LOOPCC
显示D
MOVAL,5EH
MOVDX,D8279;
显示O
OUTDX,AL
MOVDX,D8279;
MOVAL,3FH
显示G
MOVAL,6FH
CALLDELAY
DECBL
CMPBL,00H;
若已闪烁10次,则不再闪烁
JNZGOD
3.4.4功能四按4键数码管由左到右字符“0”循环显示
当8279扫描寄存器AL=01H时,说明按键为4号键。
ZEROPROCNEAR
MOVDX,C8279;
修改8279配置(右边输入,八位显示,外部译码)
MOVAL,010H
CLEAR1:
MOVAL,00H
LOOPCLEAR1
MOVCX,08H;
大循环计数
MOVBL,01H
C_DZERO:
PUSHCX
MOVBH,01H
小循环计数
DZERO:
CMPBL,BH;
相等则显示0,否则不显示
JNENOAL_ZERO
NOAL_ZERO:
MOVDX,D8279
CALLDELAY;
ROLBH,1
LOOPDZERO
POPCX
ROLBL,1
LOOPC_DZERO
改回8279配置(左边输入,八位显示,外部译码)
MOVAL,0H
RET
ZEROENDP
3.4.5功能五自行设计特效显示功能
此功能的实现引入了中断技术,通过边沿触发中断,执行中断服务子程序,进而达到效果。
(1)中断向量表的设置计8259的设置:
CLI;
设置中断向量
MOVAX,0;
设置中断向量IR0用于键盘中断
MOVES,AX
LEAAX,DATE;
设置中断类型号08H
MOVES:
[4*08],AX
MOVAX,CS
[4*08+2],AX
MOVDX,INT00;
8259配置
MOVAL,13H;
设置ICW1,边沿触发,单片8259A,需ICW4
NOP
MOVDX,INT01
MOVAL,08H;
设置ICW2,中断类型号的高5位为00001
MOVAL,01H;
设置ICW4,非AEOI方式,完全嵌套方式
ANDAL,0H;
设置OCW1,开放IR0
STI
(2)中断服务子程序:
DATEPROCNEAR
PUSHAX
PUSHBX
PUSHDX
MOVCX,08H
CLEAR2:
MOVDX,D8279;
LOOPCLEAR2
MOVAH,00H
DIS:
MOVCX,08H
DISP3:
MOVAL,AH
leabx,TAB;
依次显示断码表中数字
xlat
movdx,D8279
outdx,al
CALLDELAY
LOOPDISP3
INCAH
TESTAH,01H;
根据AH的奇偶性选择输入方式
JZX1
CMPAH,09H
JBEDIS
X1:
MOVDX,INT00;
中断结束命令
MOVAL,20H
POPDX
POPBX
POPAX
IRET
DATEendp
4、汇编程序源代码
C8279EQU222H
D8279EQU220H
INT00EQU200H;
8259地址
INT01EQU201H
MODEEQU00H;
左边输入,八位显示,外部译码
FEQEQU38H;
扫描频率
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
START:
PUSHCS
POPDS
初始化8279
MOVAL,MODE
MOVAL,FEQ
CLI;
;
清FIFORAM
BEGIN:
MOVDX,C8279
MOVAL,0C2H
WAIT1:
INAL,DX
MOVBL,AL
ANDAL,80H
CMPAL,80H
JEWAIT1
MOVAL,BL
ANDAL,0FH
CMPAL,00H
MOVAL,40H;
读FIFO/传感器RAM命令
JZYEAR
CMPAL,0ah
JZMONTH
CMPAL,22h
JZGOOD
CMPAL,01h
JZ
CALLZERO
JMPBEGIN
;
=================================
=================================
JMPBEGIN;
重复执行
PUSHAX
MOVDX,D8279
leabx,TAB
TESTAH,01H
MOVDX,INT00
MOVAL,20H;
delayprocnear
pushcx
movcx,0ffffh
loop$
popcx
ret
delayendp
TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DISPBUFF1DB2,0,0,9
DISPBUFF2DB0,8,3,1
CODEENDS
ENDSTART
5、实验效果(见截图)
6、实验心得与体会
本次课程设计,我看到了自己许多不足之处。
以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。
但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。
因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到了各种各样的问题,在这些问题中也认识到了自己的种种不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
其实这也给了我一个警告,在今后的学习中,我力争扎实学习。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 特定 功能 键盘 LED 显示 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)