课程设计实现特定功能的键盘及LED显示实验报告及程序.docx

上传人:b****8 文档编号:11173632 上传时间:2023-02-25 格式:DOCX 页数:27 大小:21.24KB
下载 相关 举报
课程设计实现特定功能的键盘及LED显示实验报告及程序.docx_第1页
第1页 / 共27页
课程设计实现特定功能的键盘及LED显示实验报告及程序.docx_第2页
第2页 / 共27页
课程设计实现特定功能的键盘及LED显示实验报告及程序.docx_第3页
第3页 / 共27页
课程设计实现特定功能的键盘及LED显示实验报告及程序.docx_第4页
第4页 / 共27页
课程设计实现特定功能的键盘及LED显示实验报告及程序.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

课程设计实现特定功能的键盘及LED显示实验报告及程序.docx

《课程设计实现特定功能的键盘及LED显示实验报告及程序.docx》由会员分享,可在线阅读,更多相关《课程设计实现特定功能的键盘及LED显示实验报告及程序.docx(27页珍藏版)》请在冰豆网上搜索。

课程设计实现特定功能的键盘及LED显示实验报告及程序.docx

课程设计实现特定功能的键盘及LED显示实验报告及程序

微机原理与接口技术

课程设计

 

题目:

实现特定功能的键盘及LED显示

 

1、课程设计目的

课程设计是培育和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。

它具有动手、动脑和理论联系实际的特点,是培育在校工科大学生理论联系实际、勇于动手、擅长动手和独立自主解决设计实践中碰到的各类问题能力的一个重要教学环节。

2、实验设计内容:

本次实验的主要内容是在了解键盘及LED显示接口原理的基础上,设计出相应的实验电路,以实现特定功能的键盘及LED显示。

需要完成以下功能:

1.按1键显示年;

2.按2键显示月日;

3.按3键显示GOOD;

4.按4键数码管由左到右字符“0”循环显示。

5.自行设计特效显示功能。

实验主要涉及可编程的键盘、显示接口芯片8279和可编程中断控制器8259A。

功能1至4是在可编程的键盘、显示接口芯片8279的基础上通进程序实现的。

在功能5中,加入了中断,通过边沿触发产生中断,执行中断服务子程序,以此来时现功能5的特效(在数码管上从左、从右依次显示0—9的数字)。

3、实验设计原理及方案:

(含电路原理图、硬件连接示用意、系统功能框图、程序流程图等)

电路原理图

系统功能框图

程序流程图

各功能实现方案

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

OUTDX,AL

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号键。

显示月日方式和显示年份一样,第一概念一个显示缓冲区,用于存储表示月日的数字。

然后依次读取其值,通过换码,再通过8279以左端入口方式显示与数码管上。

程序段如下:

CMPAL,0AH;键值输入

JZMONTH

MONTH:

MOVCX,04H

BB:

MOVDX,D8279;其余四位,显示0

MOVAL,3FH

OUTDX,AL

LOOPBB

MOVBX,OFFSETTAB

MOVSI,OFFSETDISPBUFF2+3;设置要显示的初始位

MOVCX,4

DISP2:

MOVAL,[SI]

XLAT;通过换码,再显示

MOVDX,D8279

OUTDX,AL

DECSI;依次读取数值1,3,8,0

LOOPDISP2

TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

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

OUTDX,AL

LOOPCLEAR

CALLDELAY;延时

MOVCX,04H

CC:

MOVDX,D8279其余位显示0

MOVAL,3FH

OUTDX,AL

LOOPCC

MOVDX,D8279;显示D

MOVAL,5EH

OUTDX,AL

MOVDX,D8279;显示O

MOVAL,3FH

OUTDX,AL

MOVDX,D8279;显示O

MOVAL,3FH

OUTDX,AL

MOVDX,D8279;显示G

MOVAL,6FH

OUTDX,AL

CALLDELAY

DECBL

CMPBL,00H;若已闪烁10次,则再也不闪烁

JNZGOD

3.4.4功能四按4键数码管由左到右字符“0”循环显示

当8279扫描寄放器AL=01H时,说明按键为4号键。

ZEROPROCNEAR

MOVDX,C8279;修改8279配置(右边输入,八位显示,外部译码)

MOVAL,010H

OUTDX,AL

MOVCX,08H;清空LED数码管的显示

CLEAR1:

MOVDX,D8279

MOVAL,00H

OUTDX,AL

LOOPCLEAR1

MOVCX,08H;大循环计数

MOVBL,01H

C_DZERO:

PUSHCX

MOVBH,01H

MOVCX,08H;小循环计数

DZERO:

MOVAL,00H

CMPBL,BH;相等则显示0,不然不显示

JNENOAL_ZERO

MOVAL,3FH

NOAL_ZERO:

MOVDX,D8279

OUTDX,AL

CALLDELAY;延时

ROLBH,1

LOOPDZERO

POPCX

ROLBL,1

LOOPC_DZERO

MOVDX,C8279;改回8279配置(左侧输入,八位显示,外部译码)

MOVAL,0H

OUTDX,AL

RET

ZEROENDP

3.4.5功能五自行设计特效显示功能

此功能的实现引入了中断技术,通过边沿触发中断,执行中断服务子程序,进而达到效果。

(1)中断向量表的设置计8259的设置:

CLI;设置中断向量

MOVAX,0;设置中断向量IR0用于键盘中断

MOVES,AX

LEAAX,DATE;设置中断类型号08H

MOVES:

[4*08],AX

MOVAX,CS

MOVES:

[4*08+2],AX

MOVDX,INT00;8259配置

MOVAL,13H;设置ICW1,边沿触发,单片8259A,需ICW4

OUTDX,AL

NOP

MOVDX,INT01

MOVAL,08H;设置ICW2,中断类型号的高5位为00001

OUTDX,AL

MOVAL,01H;设置ICW4,非AEOI方式,完全嵌套方式

OUTDX,AL

MOVDX,INT01

INAL,DX

ANDAL,0H;设置OCW1,开放IR0

OUTDX,AL

STI

(2)中断服务子程序:

DATEPROCNEAR

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVCX,08H

CLEAR2:

MOVDX,D8279;清空LED数码管的显示

MOVAL,00H

OUTDX,AL

LOOPCLEAR2

MOVAH,00H

DIS:

MOVCX,08H

DISP3:

MOVAL,AH

leabx,TAB;依次显示断码表中数字

xlat

movdx,D8279

outdx,al

CALLDELAY

LOOPDISP3

INCAH

TESTAH,01H;按照AH的奇偶性选择输入方式

JZX1

MOVAL,010H

MOVDX,C8279;修改8279配置(右边输入,八位显示,外部译码)

OUTDX,AL

CMPAH,09H

JBEDIS

X1:

MOVAL,00H

MOVDX,C8279;修改8279配置(右边输入,八位显示,外部译码)

OUTDX,AL

CMPAH,09H

JBEDIS

MOVDX,INT00;中断结束命令

MOVAL,20H

OUTDX,AL

POPDX

POPCX

POPBX

POPAX

IRET

DATEendp

4、汇编程序源代码

C8279EQU222H

D8279EQU220H

INT00EQU200H;8259地址

INT01EQU201H

MODEEQU00H;左边输入,八位显示,外部译码

FEQEQU38H;扫描频率

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

PUSHCS

POPDS

MOVDX,C8279;初始化8279

MOVAL,MODE

OUTDX,AL

MOVAL,FEQ

OUTDX,AL

CLI;设置中断向量

MOVAX,0;设置中断向量IR0用于键盘中断

MOVES,AX

LEAAX,DATE;设置中断类型号08H

MOVES:

[4*08],AX

MOVAX,CS

MOVES:

[4*08+2],AX

MOVDX,INT00;8259配置

MOVAL,13H;设置ICW1,边沿触发,单片8259A,需ICW4

OUTDX,AL

NOP

MOVDX,INT01

MOVAL,08H;设置ICW2,中断类型号的高5位为00001

OUTDX,AL

MOVAL,01H;设置ICW4,非AEOI方式,完全嵌套方式

OUTDX,AL

MOVDX,INT01

INAL,DX

ANDAL,0H;设置OCW1,开放IR0

OUTDX,AL

STI

;清FIFORAM

BEGIN:

MOVDX,C8279

MOVAL,0C2H

OUTDX,AL

WAIT1:

INAL,DX

MOVBL,AL

ANDAL,80H

CMPAL,80H

JEWAIT1

MOVAL,BL

ANDAL,0FH

CMPAL,00H

JEWAIT1

MOVAL,40H;读FIFO/传感器RAM命令

OUTDX,AL

MOVDX,D8279;键值输入

INAL,DX

CMPAL,02H

JZYEAR

CMPAL,0ah

JZMONTH

CMPAL,22h

JZGOOD

CMPAL,01h

JZ

CALLZERO

JMPBEGIN

;=================================

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

OUTDX,AL

DECSI

LOOPDISP1;依次读取数值9,0,0,2

JMPBEGIN

;=================================

MONTH:

MOVCX,04H

BB:

MOVDX,D8279;其余四位,显示0

MOVAL,3FH

OUTDX,AL

LOOPBB

MOVBX,OFFSETTAB

MOVSI,OFFSETDISPBUFF2+3;设置要显示的初始位

MOVCX,4

DISP2:

MOVAL,[SI]

XLAT;通过换码,再显示

MOVDX,D8279

OUTDX,AL

DECSI;依次读取数值1,3,8,0

LOOPDISP2

JMPBEGIN

GOOD:

MOVBL,0AH;闪烁次数10次

GOD:

MOVCX,08H;清空LED数码管的显示

CLEAR:

MOVDX,D8279

MOVAL,00H

OUTDX,AL

LOOPCLEAR

CALLDELAY;延时

MOVCX,04H

CC:

MOVDX,D8279其余位显示0

MOVAL,3FH

OUTDX,AL

LOOPCC

MOVDX,D8279;显示D

MOVAL,5EH

OUTDX,AL

MOVDX,D8279;显示O

MOVAL,3FH

OUTDX,AL

MOVDX,D8279;显示O

MOVAL,3FH

OUTDX,AL

MOVDX,D8279;显示G

MOVAL,6FH

OUTDX,AL

CALLDELAY

DECBL

CMPBL,00H;若已闪烁10次,则再也不闪烁

JNZGOD

JMPBEGIN

ZEROPROCNEAR

MOVDX,C8279;修改8279配置(右边输入,八位显示,外部译码)

MOVAL,010H

OUTDX,AL

MOVCX,08H;清空LED数码管的显示

CLEAR1:

MOVDX,D8279

MOVAL,00H

OUTDX,AL

LOOPCLEAR1

MOVCX,08H;大循环计数

MOVBL,01H

C_DZERO:

PUSHCX

MOVBH,01H

MOVCX,08H;小循环计数

DZERO:

MOVAL,00H

CMPBL,BH;相等则显示0,不然不显示

JNENOAL_ZERO

MOVAL,3FH

NOAL_ZERO:

MOVDX,D8279

OUTDX,AL

CALLDELAY;延时

ROLBH,1

LOOPDZERO

POPCX

ROLBL,1

LOOPC_DZERO

MOVDX,C8279;改回8279配置(左侧输入,八位显示,外部译码)

MOVAL,0H

OUTDX,AL

RET

ZEROENDP

JMPBEGIN;重复执行

DATEPROCNEAR

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVCX,08H

;清空LED数码管的显示

CLEAR2:

MOVDX,D8279

MOVAL,00H

OUTDX,AL

LOOPCLEAR2

MOVAH,00H

DIS:

MOVCX,08H

DISP3:

MOVAL,AH

leabx,TAB

xlat

movdx,D8279

outdx,al

CALLDELAY

LOOPDISP3

INCAH

TESTAH,01H

JZX1

MOVAL,010H

MOVDX,C8279;修改8279配置(右边输入,八位显示,外部译码)

OUTDX,AL

CMPAH,09H

JBEDIS

X1:

MOVAL,00H

MOVDX,C8279;修改8279配置(右边输入,八位显示,外部译码)

OUTDX,AL

CMPAH,09H

JBEDIS

MOVDX,INT00

MOVAL,20H;

OUTDX,AL

POPDX

POPCX

POPBX

POPAX

IRET

DATEendp

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

五、实验效果(见截图)

六、实验心得与体会

本次课程设计,我看到了自己许多不足的地方。

以前在上课的时候,老师常常强调在写一个程序的时候,必然要事前把程序原理方框图化出来,可是我开始总感觉如此做没必要,很浪费时刻。

可是,这次课程设计完全改变了我以前的那种错误的熟悉,以前我接触的那些程序都是很短、很基础的,可是在课程设计中碰着的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。

因为通进程序方框图,在做设计的进程中,咱们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的进程中也有利于查错。

通过这次课程设计使我知道了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立试探的能力。

在设计的进程中碰到了各类各样的问题,在这些问题中也熟悉到了自己的各种不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

其实这也给了我一个警告,在此后的学习中,我力争扎实学习。

C8279EQU222H

D8279EQU220H

INT00EQU200H;8259地址

INT01EQU201H

MODEEQU00H;左边输入,八位显示,外部译码

FEQEQU38H;扫描频率

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

PUSHCS

POPDS

MOVDX,C8279;初始化8279

MOVAL,MODE

OUTDX,AL

MOVAL,FEQ

OUTDX,AL

CLI;设置中断向量

MOVAX,0;设置中断向量IR0用于键盘中断

MOVES,AX

LEAAX,DATE;设置中断类型号08H

MOVES:

[4*08],AX

MOVAX,CS

MOVES:

[4*08+2],AX

MOVDX,INT00;8259配置

MOVAL,13H;设置ICW1,边沿触发,单片8259A,需ICW4

OUTDX,AL

NOP

MOVDX,INT01

MOVAL,08H;设置ICW2,中断类型号的高5位为00001

OUTDX,AL

MOVAL,01H;设置ICW4,非AEOI方式,完全嵌套方式

OUTDX,AL

MOVDX,INT01

INAL,DX

ANDAL,0H;设置OCW1,开放IR0

OUTDX,AL

STI

;清FIFORAM

BEGIN:

MOVDX,C8279

MOVAL,0C2H

OUTDX,AL

WAIT1:

INAL,DX

MOVBL,AL

ANDAL,80H

CMPAL,80H

JEWAIT1

MOVAL,BL

ANDAL,0FH

CMPAL,00H

JEWAIT1

MOVAL,40H;读FIFO/传感器RAM命令

OUTDX,AL

MOVDX,D8279;键值输入

INAL,DX

CMPAL,02H

JZYEAR

CMPAL,0ah

JZMONTH

CMPAL,22h

JZGOOD

CMPAL,01h

JZ

CALLZERO

JMPBEGIN

;=================================

YEAR:

MOVCX,04H

AA:

MOVDX,D8279

MOVAL,3FH

OUTDX,AL

LOOPAA

MOVBX,OFFSETTAB

MOVSI,OFFSETDISPBUFF1+3

MOVCX,4

DISP1:

MOVAL,[SI]

XLAT

MOVDX,D8279

OUTDX,AL

DECSI

LOOPDISP1

JMPBEGIN

;=================================

MONTH:

MOVCX,04H

BB:

MOVDX,D8279

MOVAL,3FH

OUTDX,AL

LOOPBB

MOVBX,OFFSETTAB

MOVSI,OFFSETDISPBUFF2+3

MOVCX,4

DISP2:

MOVAL,[SI]

XLAT

MOVDX,D8279

OUTDX,AL

DECSI

LOOPDISP2

JMPBEGIN

GOOD:

MOVBL,0AH

GOD:

MOVCX,08H;清空LED数码管的显示

CLEAR:

MOVDX,D8279

MOVAL,00H

OUTDX,AL

LOOPCLEAR

CALLDELAY

MOVC

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

当前位置:首页 > 党团工作 > 思想汇报心得体会

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

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