微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx

上传人:b****4 文档编号:12396639 上传时间:2023-04-18 格式:DOCX 页数:40 大小:128.82KB
下载 相关 举报
微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx_第1页
第1页 / 共40页
微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx_第2页
第2页 / 共40页
微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx_第3页
第3页 / 共40页
微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx_第4页
第4页 / 共40页
微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx

《微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx》由会员分享,可在线阅读,更多相关《微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx(40页珍藏版)》请在冰豆网上搜索。

微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验.docx

微机原理综合实验报告LED横向滚动显示方向修改电子钟修改实验

 

微机原理上机实验报告

综合实验:

1.LED16x16点阵显示实验

竖向显示改横向显示

2.电子钟功能修改

 

微机原理综合实验报告

综合实验1:

LED16x16点阵竖向显示改横向显示实验

一、实验目的

1、熟悉8255的功能,了解点阵显示的原理及控制方法;

2、学会使用LED点阵,通过编程显示不同字符;

3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验内容

1、编写程序,用B4区的二片74HC273控制16X16点阵的行;8255的PA、PB口控制16X16点阵的列;显示字符。

2、按图连接线路;运行程序,观察实验结果,学会编程控制LED点阵显示字符。

三、实验原理图

四、实验步骤

1、连线说明:

D3区:

CS(8255)、A0、A1

——

A3区:

CS1、A0、A1

D3区:

JP23(PA)、JP20(PB)

——

A2区:

JP21、JP22(列输出线)

B4区:

JP57(D0..D7)

——

A3区:

JP42(D0..D7)

B4区:

JP56(D8..D15)

——

A3区:

JP40(D8..D15)

B4(I/O)区:

CS273、BLE、BHE

——

A3区:

CS5、BLE、BHE

B4(I/O)区:

RD、WR

——

A3区:

IOR、IOW

B4(I/O)区:

JP51、JP55

——

A2区:

JP14、JP15(行输出线)

(注意连线方向)

2、运行程序,观察实验结果。

运行演示程序将会看到字符“欢迎使用星研实验仪”在点阵上自下而上循环移动显示。

五、实验代码

对实验六中的代码做一定的修改,将原程序中使LED显示屏从上至下显示的功能改为从左至右滚动显示

有框线部分为修改部分

ADDR_8255_PAEQU270H;8255PA口

ADDR_8255_PBEQU271H;8255PB口

ADDR_8255_CEQU273H;8255控制口

ADDR_273EQU230H;IO区74HC273(16位I/O)

LINEEQUADDR_273;行线1,行线2

ROW1EQUADDR_8255_PA;列线1

ROW2EQUADDR_8255_PB;列线2

_STACKSEGMENTSTACK

DW1024DUP(?

_STACKENDS

_DATASEGMENTWORDPUBLIC'DATA'

HUAN

DB00H,0C0H,00H,0C0H,0FEH,0C0H,07H,0FFH,0C7H,86H,6FH,6CH,3CH,60H,18H,60H

DB1CH,60H,1CH,70H,36H,0F0H,36H,0D8H,61H,9CH,0C7H,0FH,3CH,06H,00H,00H

YING

DB60H,00H,31H,0C0H,3FH,7EH,36H,66H,06H,66H,06H,66H,0F6H,66H,36H,66H

DB37H,0E6H,37H,7EH,36H,6CH,30H,60H,30H,60H,78H,00H,0CFH,0FFH,00H,00H

SHI

DB00H,00H,06H,30H,07H,30H,0FH,0FFH,0CH,30H,1FH,0FFH,3BH,33H,7BH,33H

DB1BH,0FFH,1BH,33H,19H,0B0H,18H,0E0H,18H,60H,18H,0FCH,19H,8FH,1FH,03H

YONG

DB00,0,1FH,0FEH,18H,0C6H,18H,0C6H,18H,0C6H,1FH,0FEH,018H,0C6H,18H,0C6H

DB18H,0C6H,1FH,0FEH,18H,0C6H,18H,0C6H,30H,0C6H,30H,0C6H,60H,0DEH,0C0H,0CCH

XING

DB00H,00H,1FH,0FCH,18H,0CH,1FH,0FCH,18H,0CH,1FH,0FCH,01H,80H,19H,80H

DB1FH,0FEH,31H,80H,31H,80H,6FH,0FCH,01H,80H,01H,80H,7FH,0FFH,00H,00H

YAN

DB00H,00H,0FFH,0FFH,18H,0CCH,18H,0CCH,30H,0CCH,30H,0CCH,7FH,0FFH,7CH,0CCH

DB0FCH,0CCH,3CH,0CCH,3CH,0CCH,3DH,8CH,3DH,8CH,33H,0CH,06H,0CH,0CH,0CH

SHI0

DB01H,80H,00H,0C0H,3FH,0FFH,3CH,06H,67H,0CCH,06H,0C0H,0CH,0C0H,07H,0C0H

DB06H,0C0H,7FH,0FFH,00H,0C0H,01H,0E0H,03H,30H,06H,18H,1CH,1CH,70H,18H

YAN0

DB00H,00H,0FCH,60H,0CH,60H,6CH,0F0H,6CH,0D8H,6DH,8FH,6FH,0F8H,7EH,00H

DB06H,0C6H,07H,66H,3FH,0ECH,0E7H,0ECH,06H,18H,1FH,0FFH,0CH,00H,00H,00H

YI

DB0CH,0C0H,0CH,60H,18H,7CH,1BH,6CH,33H,0CH,73H,18H,0F1H,98H,31H,98H

DB30H,0F0H,30H,0F0H,30H,60H,30H,0F0H,31H,98H,33H,0FH,3EH,06H,30H,00H

NONE

DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

CHANGE_RESULT

DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

_DATAENDS

CODE

SEGMENT

START

PROC

NEAR

ASSUME

CS:

CODE,DS:

_DATA,SS:

_STACK

MOV

AX,_DATA

MOV

DS,AX

NOP

CALL

INIT_IO

CALL

TEST_LED

;调用测试子程序,测试LED是否全亮

CALL

CLEAR

LEA

SI,HUAN

;取首个汉字的有效地址

CHS_SHOW:

MOV

CX,9

;九个汉字

CALL

WORD_MOVE

;字模拷贝

CHS_1:

PUSH

CX

;CHS_1可以滚动显示多个字符

MOV

CX,16

CHS_2:

CALL

DISP_CH

;实现显示,DISP_CH可以把每个汉字的32个字节读完并显示出来

;INC

SI

;原程序用于滚动显示的指令

;INC

SI

LEASI,

CHANGE_RESULT

;除了第一次,每次的汉字读取都去CHANGE_RESULT找,只显示CHANGE_RESULT开头的32个字节

CALL

WORD_CHANGE

;将WORD_CHANGE中的字模左移一位

LOOP

CHS_2

POP

CX

LOOP

CHS_1

;读下一个汉字

CALL

WORD_MOVE

;字模复位

LEA

SI,CHANGE_RESULT

;显示复位

JMP

CHS_SHOW

WORD_MOVE

PROCNEAR

;给CHANGE_RESULT赋初值HUAN,把十个汉字都拷贝过来

PUSH

CX

PUSH

ES

PUSH

DS

PUSH

SI

PUSH

DI

LEA

SI,HUAN

源字节

LEA

DI,CHANGE_RESULT

;目的字节

MOV

AX,DS

MOV

ES,AX

MOV

CX,320

CLD

WORD_MOVE1:

MOVSB

;执行完毕后SI,DI自动加一

LOOPWORD_MOVE1

POP

DI

POP

SI

POP

DS

POP

ES

POP

CX

RET

WORD_MOVE

ENDP

WORD_CHANGE

PROC

NEAR

;把字模拷出来,将WORD_CHANGE中的字模全部整体左移一位

PUSH

CX

PUSH

DS

PUSH

ES

PUSH

SI

PUSH

BX

PUSHF

XOR

BX,BX

XOR

AX,AX

LEA

SI,CHANGE_RESULT

MOV

AX,DS

MOV

ES,AX

MOV

CX,320

MOVE_TO_LAST:

INC

SI

LOOPMOVE_TO_LAST

DEC

SI

DEC

SI

MOV

CX,16

;16行

WORD_CHANGE1:

CLC

;CF寄存器清零,为后续字节移动做准备

XOR

AX,AX

PUSH

CX

MOV

CX,10

;10个字

WORD_CHANGE2:

CMP

AL,AH

JZ

DONT_SAVE_CF2

;保存CF标志位

XOR

AX,AX

STC

DONT_SAVE_CF2:

MOV

BL,BYTEPTR[SI]

;循环右移

RCR

BL,1

MOV

[SI],BL

INCSI

;指向该行的下一个字节

MOV

BL,BYTEPTR[SI]

;循环右移

RCR

BL,1

MOV

[SI],BL

JNC

DONT_SAVE_CF

;保存CF标志位

MOVAL,01H

DONT_SAVE_CF:

SUB

SI,33

将SI指向下一个字

LOOPWORD_CHANGE2

ADD

SI,33

;补偿SI

POP

CX

ADD

SI,285

将SI移向上一行起点

LOOPWORD_CHANGE1

SUB

SI,285

;补偿SI

POPF

POP

BX

POP

SI

POP

ES

POP

DS

POP

CX

RET

WORD_CHANGEENDP

;显示一个16*16点阵字子程序,字型码放在DPTR指出的地址

DISP_CH

PROC

NEAR

;把每个汉字的32个字节读完

PUSH

CX

MOV

CX,8

DISP_CH_1:

CALL

DISP1

LOOP

DISP_CH_1

POP

CX

RET

DISP_CH

ENDP

;显示一个16*16点阵字子程序,字型码放在显示缓冲区XBUFF

DISP1

PROC

NEAR

PUSH

SI

PUSH

CX

MOV

CX,16

MOV

BL,0FEH

MOV

BH,0FFH

REPEAT:

MOV

AX,BX

OUT

DX,AX

LODSB

CALL

ADJUST

MOV

DX,ROW1

OUT

DX,AL

LODSB

CALL

ADJUST

MOV

DX,ROW2

OUT

DX,AL

CALL

DL10MS

CALL

CLEAR

STC

RCL

BL,1

RCL

BH,1

LOOP

REPEAT

POP

CX

POP

SI

RET

DISP1

ENDP

INIT_IO

PROC

NEAR

MOV

AL,80H

OUT

DX,AL

RET

INIT_IO

ENDP

CLEAR

PROC

NEAR

MOV

AX,0FFFFH

MOV

DX,LINE

MOV

AL,0

MOV

DX,ROW1

OUT

DX,AL

MOV

DX,ROW2

OUT

DX,AL

RET

CLEAR

ENDP

;测试LED子程序,点亮LED并延时1S

TEST_LED

PROC

NEAR

MOV

DX,LINE

XOR

AX,AX

OUT

DX,AX

MOV

AL,0FFH

MOV

DX,ROW1

OUT

DX,AL

MOV

DX,ROW2

OUT

DX,AL

CALL

DL500ms

CALL

DL500ms

RET

TEST_LED

ENDP

;调整AL中取到的字型码的一个字节,将最高位调整位最低位,最低位调整为最高位

ADJUST

PROC

NEAR

PUSH

CX

MOV

CX,8

ADJUST1:

RCL

AL,1

XCHG

AL,AH

RCR

AL,1

XCHG

AL,AH

LOOP

ADJUST1

MOV

AL,AH

POP

CX

RET

ADJUST

ENDP

DL10ms

PROC

NEAR

PUSH

CX

MOV

CX,133

LOOP

$

POP

CX

RET

DL10ms

ENDP

DL500ms

PROC

NEAR

PUSH

CX

MOV

CX,0FFFFH

LOOP

$

POP

CX

RET

DL500ms

ENDP

START

ENDP

CODE

ENDS

END

START

CODE

SEGMENT

START

PROC

NEAR

ASSUME

CS:

CODE,DS:

_DATA,SS:

_STACK

MOV

AX,_DATA

MOV

DS,AX

MOV

ES,AX

NOP

CALL

INIT_IO

CALL

TEST_LED

实验十四:

电子钟

一、实验目的

进一步熟悉8253、8259、8279

二、实验内容

1、使用8253定时功能,产生0.5S的定时中断给8259

2、在F5区的数码管上显示时间

3、允许设置时钟初值

三、实验步骤

1、连线说明:

D3区:

CS、A0、A1

——

A3区:

CS1、A0、A1

D3区:

PC0、PC1

——

F5区:

KL1、KL2

D3区:

JP20(PB)、B、C

——

F5区:

A、B、C

B3区:

CS、A0

——

A3区:

CS3、A0

B3区:

INT、INTA

——

A3区:

INTR、INTA

B3区:

IR0

——

C4区:

OUT0

C4区:

CS(8253)、A0、A1

——

A3区:

CS2、A0、A1

(注意连线方向)

2、运行程序,按F5区的F键,设置时钟初值。

3、观察F5区数码管上显示的时间是否正确

四、功能修改实验代码

IO8259_0EQU0250H

I

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

当前位置:首页 > 外语学习 > 日语学习

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

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