微机原理及接口技术实验讲义.docx

上传人:b****8 文档编号:10040575 上传时间:2023-02-08 格式:DOCX 页数:29 大小:115.88KB
下载 相关 举报
微机原理及接口技术实验讲义.docx_第1页
第1页 / 共29页
微机原理及接口技术实验讲义.docx_第2页
第2页 / 共29页
微机原理及接口技术实验讲义.docx_第3页
第3页 / 共29页
微机原理及接口技术实验讲义.docx_第4页
第4页 / 共29页
微机原理及接口技术实验讲义.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

微机原理及接口技术实验讲义.docx

《微机原理及接口技术实验讲义.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术实验讲义.docx(29页珍藏版)》请在冰豆网上搜索。

微机原理及接口技术实验讲义.docx

微机原理及接口技术实验讲义

微机原理及接口技术

实验讲义

电子信息工程学院自动化系

微机接口实验室

 

目录

第一部分实验台结构及相关电路。

3

第二部分验证性实验部分

实验一LCD2×16液晶显示接口实验。

6

实验二可编程定时器/计数器。

14

实验三8259中断控制器实验。

16

实验四8255A并行口实验PA输入、PB输出。

20

第三部分综合性实验部分

实验五开关量接口实验。

23

实验六模拟量接口实验。

29

实验报告要求

1、实验一、二、三不写实验报告。

2、实验报告第一页要求使用学校统一的封面,后续页自便,要求整齐。

3、实验报告由实验题目、实验目的、电路框图、编程思想或流程图、程序组成。

4、实验报告要在课前预习完成,程序部分靠左写,以便课上右面写修改内容。

5、实验课结束时交实验报告。

第一部分实验台结构及相关电路

⒈逻辑电平开关电路

实验系统上有8+1位逻辑电平开关,与之相对应的K1~K9引线孔为逻辑电平输出端。

开关向上拨输出逻辑“0”,向下拨输出逻辑“1”。

⒉发光二极管显示电路

实验系统上装有12位发光二极管及相应驱动电路。

L1~L12为相应发光二极管驱动信号输入端,该输入端为低电平“0”时点亮发光二极管。

⒊脉冲发生器电路

实验台上提供一4.9152MHz的脉冲源,见下图:

⒋计数器电路

该电路由1片74LS393组成。

实验系统上为Tx:

T0~T7为分频输出插孔,T为脉冲输入端(已连脉冲源4.9152MHz)。

该计数器在上电时由RESET信号清零。

当脉冲输入为4.9152MHz时,T0~T7输出脉冲频率依次为2.4576MHz、1.2288MHz、614.4KHz、307.2KHz、153.6KHz、76.8KHz、38.4Hz、19.2Hz。

⒌单脉冲电路

采用RS触发器产生±单脉冲。

实验者每按一次AN按钮,即可以从两个插座上分别输出一个正脉冲SP及负脉冲/SP,供“中断”、“CLR”、定时器/计数器等实验使用。

⒍继电器及驱动电路

⒎直流电机及驱动电路及电子音响及驱动电路

如图所示,系统中设计有一个+5V直流及相应的驱动电路。

小直流电机的转速是由加到其输入端“DJ”的脉冲电平及占空比来决定的,正向占空比越大转速越快,反之越慢。

驱动电路输出接直流电机。

⒏步进电机及驱动电路

微电脑控制步进电机最适宜系统中设计使用20BY-0型号步进电机,它使用+5V直流电源,步距角为18度,电机线圈由四相组成。

如下图所示,即A、B、C、D四相。

驱动电路由脉冲信号控制,所以调节脉冲信号的频率便可改变步进电机的转速。

图中BA、BB、BC、BD即为脉冲信号输入插孔,驱动器输出A、B、C、D接步进电机。

 

9.系统资源分配

实验系统寻址范围定义如下:

系统数据区

F000:

0000~00FFH

系统堆栈区

F000:

0100~01FFH

系统程序区

F000:

0200~07FFH

用户程序区

用户数据区

0000:

1000~0FFFFH

用户堆栈区

0000:

0600~0400H

中断向量区

0000:

0000~03FFH

系统已定义的I/O地址如下:

接口芯片

口地址

用途

74LS273

FFDDH

字位口

74LS273

FFDCH

字形口

74LS245

FFDEH

键入口

8255A口

FFD8H

EP总线

8255B口

FFD9H

EP地址

8255C口

FFDAH

EP控制

8255控制口

FFDBH

控制字

10.8259中断向量表

中断序号

0

1

2

3

4

5

6

7

变量地址

20~23h

24~27h

28~2Bh

2C~2Fh

30~33h

34~37h

38~3Bh

3C~3Fh

 

第二部分接口实验

实验一LCD2×16液晶显示接口实验

一、实验目的

1.掌握8088与液晶显示器之间接口设计与编程。

2.初步了解汇编语言的格式及子程序的概念。

二、实验内容

1、编制程序,在液晶显示器上显示:

 

2、修改程序将自己名字字母、生日显示到合适的位置。

三、实验电路

四、实验连线

1.连接译码电路,将138译码单元的A、B、C、G分别与地址总线A2、A3、A4、A15相连;

2.LCD实验板的E信号与02门电路的第1脚相连;

3.将138译码单元的Y0与02门电路的第2脚相连;

4.将08门电路的第3脚与02门电路的第3脚相连;

5.将08门电路的第2脚、第1脚分别与系统控制信号IOR、IOW相连;

五、程序清单

;**************硬件地址定义************************

LCDEQU7FE0H

WRICODEEQULCD+0;写命令

WRDATAEQULCD+1;写数据

RDSTATEQULCD+2;读状态

RDDATAEQULCD+3;读数据

;*************代码区******************************

codesegment

assumecs:

code

org1000h

;------------定义内存变量--------------------------

lindb0

coldb0

numdb0

dis_numdb0

temp0db0

temp1db0

countdb0

start:

moval,02h;光标归位

callinit_lcd

callsend_com

calldelay;延时

movbx,offsetNMGTAB;显示"InnerMongolia"

movlin,0

movcol,1

movnum,14

calldis_english

movbx,offsetDXTAB;显示"University"

movlin,1

movcol,2

movnum,10

calldis_english

moval,20

calldelay2

callclose_lcd

movbx,offsetDZTAB;显示"Electronic"

movlin,0

movcol,1

movnum,10

calldis_english

movbx,offsetZDHTAB;显示"AUTO"

movlin,1

movcol,5

movnum,4

calldis_english

moval,20

calldelay2

callclose_lcd

moval,20

calldelay2

callclose_lcd

movbx,offsetXXTAB;显示"Information"

movlin,0

movcol,1

movnum,11

calldis_english

movbx,offsetZDHTAB;显示"AUTO"

movlin,1

movcol,5

movnum,4

calldis_english

moval,20

calldelay2

callclose_lcd

moval,20

calldelay2

callclose_lcd

movbx,offsetGCTAB;显示"Engineering"

movlin,0

movcol,1

movnum,11

calldis_english

movbx,offsetZDHTAB;显示"AUTO"

movlin,1

movcol,5

movnum,4

calldis_english

moval,20

calldelay2

callclose_lcd

moval,20

calldelay2

callclose_lcd

movbx,offsetXYTAB;显示"College"

movlin,0

movcol,1

movnum,7

calldis_english

movbx,offsetZDHTAB;显示"AUTO"

movlin,1

movcol,5

movnum,4

calldis_english

moval,20

calldelay2

callclose_lcd

movbx,offsetWDTAB;显示"Temperature"

movlin,0

movcol,1

movnum,11

calldis_english

lgs1:

movlin,1;显示数字

movcol,4

moval,count

movdis_num,al

calldis_number

moval,count

addal,1

movcount,al

moval,10

calldelay2

jmplgs1

;--------------------------

;在指定的行、列显示一个字节数字(0~255)

;参数:

行lin(0~1);列col(0~15)dis_num中放要显示的数字

;--------------------------

dis_numberproc

pushax

moval,lin;以下18条为根据行、列值定位显示英文起始坐标

cmpal,0

jnznu0

moval,80h

jmpnu1

nu0:

cmpal,1

jnznuret

moval,0C0h

nu1:

addal,col

callsend_com

movah,0;以下10条为把3位十进制数的个位、十位、百位分离

moval,dis_num

movbl,10

divbl

movtemp0,ah

movah,0

movbl,10

divbl

movtemp1,ah

addal,30h;转为ASC码

callsend_data;百位送LCD显示

moval,temp1

addal,30h;转为ASC码

callsend_data;十位送LCD显示

moval,temp0

addal,30h;转为ASC码

callsend_data;个位送LCD显示

popax

nuret:

ret

dis_numberendp

;--------------------------

;在指定的行、列显示英文。

每行可显示16个英文字符,共2行

;参数:

行lin(0~1);列col(0~16)英文个数num(0~15);表地址bx

;--------------------------

dis_englishproc

pushax

moval,lin;以下8条为根据行、列值定位显示英文起始坐标

cmpal,0

jnzch0

moval,80h

jmpch1

ch0:

cmpal,1

jnzchret

moval,0C0h

ch1:

addal,col

callsend_com

movah,num

ch2:

moval,[bx]

incbx

callsend_data

decah

jnzch2

popax

chret:

ret

dis_englishendp

;--------------------------

;清LCD屏

;--------------------------

close_lcdproc

pushax

moval,01h;清除命令

callsend_com

popax

ret

close_lcdendp

;--------------------------

;初始化LCD

;col0123456789101112131415

;lin0:

808182838485868788898a8b8c8d8e8f

;lin1:

C0C1C2C3C4C5C6C7C8C9CaCbCcCdCeCf

;--------------------------

init_lcdproc

movdx,LCDWI;启动LCD

moval,30h

outdx,al;第1次启动LCD

calldelay;延时

moval,30h

outdx,al;第2次启动LCD

calldelay;延时

moval,30h

outdx,al;第3次启动LCD

calldelay;延时

moval,38h;设置工作模式:

outdx,al;汇流、2行、5*7点阵

calldelay;延时

moval,08h;关显示

outdx,al

calldelay;延时

moval,01h;LCD清屏

outdx,al

calldelay;延时

moval,0eh;开显示、光标不闪烁

outdx,al

calldelay;延时

callchkbusy;检测LCD状态

lcd_p:

moval,06h;光标右移且地址加1

callsend_com

moval,02h;光标归位

callsend_com

calldelay;延时

ret

init_lcdendp

;-----------------------

;读LCD忙闲状态

;-----------------------

chkbusyproc

pushdx

pushax

movdx,LCDRS

rechk:

inal,dx

movcl,al

rolcl,1

jcrechk

popax

popdx

ret

chkbusyendp

;----------------------

;写LCD命命

;----------------------

send_comproc

callchkbusy

pushdx

movdx,LCDWI

outdx,al

popdx

ret

send_comendp

;-----------------------

;写LCD数据

;-----------------------

send_dataproc

callchkbusy

pushdx

movdx,LCDWD

outdx,al

popdx

ret

send_dataendp

;-----------------------

;延时子程序

;-----------------------

delayproc

pushcx

movcx,1000h

loop$

popcx

ret

delayendp

;--------------------------

;延时子程序

;--------------------------

delay1proc

pushcx

movcx,0080h

loop$

popcx

ret

delay1endp

;--------------------------

;延时子程序

;AL是延时参数

;--------------------------

delay2proc

pushax

pushcx

movah,0

movcx,ax

dloop:

pushcx

movcx,65535

loop$

popcx

loopdloop

popcx

popax

ret

delay2endp

;LCD初始化字符

NMGTAB:

DB"InnerMongolia"

DXTAB:

DB"University"

DZTAB:

DB"Electronic"

XXTAB:

DB"Information"

GCTAB:

DB"Engineering"

XYTAB:

DB"College"

ZDHTAB:

DB"AUTO"

WDTAB:

DB"Temperature"

codeends

endstart

实验二可编程定时器/计数器

一、实验目的

掌握8253的基本工作原理和编程方法,用示波器观察不同模式下的波形。

二、实验内容

1、完成编程,将定时器0设为模式3(方波),定时器l设为模式2(分频)。

,在示波器中观察定时器0和l的输出波形及其关系,并在纸上画出(CLK、GATE、OUT)波形。

2、分别修改程序中将定时器0的计数初值为4和5,与主时钟同步观察奇数、偶数波形的变化。

3、修改程序在液晶屏显示“定时器零为模式三”,“定时器一为模式二”。

三、实验电路

四、实验连线

1.译码电路,与实验一相同。

2.将138译码单元的Y1与8253CS相连;

3.将数据D0~D7用10芯排线与8253上方的IDC10座相连;

4.将实验一电路连好;

五、程序清单

TIM_CTLEQU7FE7H

TIMER0EQU7FE4H

TIMER1EQU7FE5H

MODE03EQU36H

MODE12EQU74H

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE,ES:

CODE

ORG3490H

main:

callD8253

JMP$

D8253PROC

MOVDX,TIM_CTL

MOVAL,MODE03

OUTDX,AL

MOVDX,TIMER0

MOVAL,0F4h

OUTDX,AL

MOVAL,01H

OUTDX,AL

MOVDX,TIM_CTL

MOVAL,MODE12

OUTDX,AL

MOVDX,TIMER1

MOVAL,0aH

OUTDX,AL

MOVAL,00

OUTDX,AL

RET

D8253endp

CODEENDS

ENDmain

实验三8259中断控制器实验

一、实验目的  1、掌握8259中断控制器的接口方法。

  2、掌握8259中断控制器的应用编程。

二、实验内容  1、编制程序,利用8259芯片的IR7作为中断源,产生单一中断,LCD显示中断号“7”,中断次数。

2、修改一些必要的参数,改变中断源。

三、实验电路

四、实验连线

1、译码电路,与实验一相同。

2、将138译码单元的Y2与8259CS相连;

3、将数据D0~D7用10芯排线与8259右方的IDC10座相连;

4、将实验一电路连好;

五、程序清单

1、在实验一的程序中添加如下定义

硬件地址定义:

Port0EQU7FE8H

Port1EQU7FE9H

变量定义

IRQ_numdb0

IRQ_countdb0

2、在实验一的程序中添加如下子程序及中断服务程序;

;------------------------------------

;中断7的服务程序

;------------------------------------

INT8259:

cli

pushax

MOVAL,20H;写OCW2命令,使ISR相应位复位即发EOI命令

MOVDX,Port0

OUTDX,AL

movIRQ_num,7

moval,IRQ_count

addal,1

movIRQ_count,al

popax

STI

IRET

;-------------------------------

;初始化8259

;-------------------------------

init_8259proc

CLI

MOVAX,OFFSETINT8259

MOVBX,003CH;中断入口地址(8+7)*4=60(3cH),7中断号

MOV[BX],AX

MOVBX,003EH;3ch,3dh放指令指针IP。

3eH,3fH放指令段码

MOVAX,0000H

MOV[BX],AX

MOVAL,13H;设置ICW1,1级8259,需设置ICW4,边沿触发

MOVDX,Port0

OUTDX,AL

MOVAL,08H;写ICW2,中断类型号从8开始

MOVDX,Port1

OUTDX,AL

MOVAL,09H;写ICW4,缓冲工作方式,8088配置

OUTDX,AL

MOVAL,7FH;IRQ7写OCW11屏蔽,0允许中断

OUTDX,AL

movsi,0000h

STI

RET

init_8259endp

3、在实验一的程序中修改汉字表;

TAB3DB"IRQ_num:

"

TAB4DB"IRQ_count:

"

4、在实验一的程序中修改主程序;

start:

callinit_lcd

moval,3

calldelay2

movIRQ_count,0

movIRQ_num,0

;---------------------------

movbx,offsettab3;显示"中断号:

"

movlin,0

movcol,0

movnum,8

calldis_english

movbx,offsettab4;显示"中断数"

movlin,1

movcol,0

movnum,9

calldis_english

moval,10

calldelay2

callinit_8259

lgs1:

movlin,0;显示中断号

movcol,10

moval,IRQ_num

movdis_num,al

calldis_number

movlin,1;显示中断数

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

当前位置:首页 > 农林牧渔 > 林学

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

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