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

更新时间:2024-07-02 21:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理及接口技术

实验讲义

内蒙古大学电子信息工程学院自动化系

微机接口实验室 2008年5月

1

目 录

第一部分 实验台结构及相关电路 。。。。。。。。。。。。。。。。。。。。。。。。。。3 第二部分 验证性实验部分

实验一 LCD128×64液晶显示接口实验。。。。。。。。。。。。。。。。。。。。。。6 实验二 可编程定时器/计数器。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14 实验三 8259中断控制器实验 。。。。。。。。。。。。。。。。。。。。。。。。。。。。16 实验四 8255A并行口实验PA输入、PB输出。。。。。。。。。。。。。。。。20 第三部分 综合性实验部分 实验五 开关量接口实验。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。21 实验六 模拟量接口实验。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 26

实验报告要求

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

2、 实验报告第一页要求使用学校统一的封面,后续页自便,要求整齐。 3、 实验报告由实验题目、实验目的、电路框图、编程思想或流程图、程

序组成。

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

内容。

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

2

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

⒈逻辑电平开关电路

实验系统上有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”、定时器/计数器等实验使用。

3

⒍ 继电器及驱动电路

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

如图所示,系统中设计有一个+5V直流及相应的驱动电路。小直流电机的转速是由加到其输入端“DJ”的脉冲电平及占空比来决定的,正向占空比越大转速越快,反之越慢。驱动电路输出接直流电机。

⒏步进电机及驱动电路

微电脑控制步进电机最适宜系统中设计使用20BY-0型号步进电机,它使用+5V直流电源,步距角为18度,电机线圈由四相组成。如下图所示,即A、B、C、D四相。驱动电路由脉冲信号控制,所以调节脉冲信号的频率便可改变步进电机的转速。图中BA、BB、BC、BD即为脉冲信号输入插孔,驱动器输出A、B、C、D接步进电机。

4

9.系统资源分配

实验系统寻址范围定义如下: 系统数据区 系统堆栈区 系统程序区 用户程序区 用户数据区 用户堆栈区 中断向量区 系统已定义的I/O地址如下:

接口芯片 74LS273 74LS273 74LS245 8255A口 8255B口 8255C口 8255控制口

10.8259中断向量表 中断序号 0 1 2 3 4 5 6 7 口地址 FFDDH FFDCH FFDEH FFD8H FFD9H FFDAH FFDBH 用途 字位口 字形口 键入口 EP总线 EP地址 EP控制 控制字 F000:0000~00FFH F000:0100~01FFH F000:0200~07FFH 0000:1000~0FFFFH 0000:0600~0400H 0000:0000~03FFH 变量地址 20~23h 24~27h 28~2Bh 2C~2Fh 30~33h 34~37h 38~3Bh 3C~3Fh

5

第二部分 接口实验

实验一 LCD128×64液晶显示接口实验 一、实验目的

1. 掌握8088与液晶显示器之间接口设计与编程。 2. 初步了解汇编语言的格式及子程序的概念。 二、实验内容

1、编制程序,使用内部字库,在液晶显示器上显示: 内蒙古大学 电子信息工程学院 自动化系 2008.08.08

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相连; 五、程序清单

;**************硬件地址定义************************ LCD EQU 7FE0H

WRICODE EQU LCD+0 ;写命令

6

WRDATA EQU LCD+1 ;写数据 RDSTAT EQU LCD+2 ;读状态 RDDATA EQU LCD+3 ;读数据

;*************代码区****************************** code segment

assume cs:code

;------------定义内存变量-------------------------- lin db 0 col db 0 num db 0 dis_num db 0 temp0 db 0 temp1 db 0 count db 0 org 1000h start: call init_lcd mov al,3 call delay2 mov count,0

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

mov bx,offset tab1 ; mov lin,0 mov col,1 mov num,5 call dis_china

mov bx,offset tab2 ; mov lin,1 mov col,0 mov num,8 call dis_china

mov bx,offset tab3 ; mov lin,2 mov col,1 mov num,4 call dis_china

显示\内蒙古大学 \显示\电子信息工程学院\显示\自动化系\7

mov bx,offset tab4 ;显示\ mov lin,3 mov col,1 mov num,4 call dis_china mov al,10 call delay2

mov al,10 call delay2

call close_lcd

mov bx,offset tab5 ;显示\温度\ mov lin,0 mov col,0 mov num,3 call dis_china

lgs1: mov lin,0 ;显示数字 mov col,4 mov al,count mov dis_num,al call dis_number mov al,count add al,1 mov count,al mov al,10 call delay2 jmp lgs1

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

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

;参数:行lin(0~3);列col(0~7) dis_num中放要显示的数字 ; col 0 1 2 3 4 5 6 7 ;lin0:80h,81h,82h,83h,84h,85h,86h,87h ;lin1:90h,91h,92h,93h,94h,95h,96h,97h

8

;lin2:88h,89h,8ah,8bh,8ch,8dh,8eh,8fh ;lin3:98h,99h,9ah,9bh,9ch,9dh,9eh,9fh ;-------------------------- dis_number proc push ax

mov al,lin;以下18条为根据行、列值定位显示数字起始坐标 cmp al,0 jnz nu0 mov al,80h jmp nu3 nu0: cmp al,1 jnz nu1 mov al,90h jmp nu3 nu1: cmp al,2 jnz nu2 mov al,88h jmp nu3 nu2: cmp al,3 jnz nuret mov al,98h nu3: add al,col

call send_com ;nu4: mov ah,0; mov al,dis_num mov bl,10 div bl

mov temp0,ah mov ah,0 mov bl,10 div bl

mov temp1,ah

add al,30h ; call send_data ; mov al,temp1

add al,30h ; call send_data ;

定位显示数字坐标

以下10条为把3位十进制数个位、十位、百位分离 转为ASC码 百位送LCD显示 转为ASC码 十位送LCD显示

9

mov al,temp0

add al,30h ;转为ASC码 call send_data ;个位送LCD显示 pop ax nuret: ret dis_number endp

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

;在指定的行、列显示汉字。每行可显示8个汉字或16个字符,共4行 ;参数:行lin(0~3);列col(0~7) 汉字个数num(0~7); 表地址bx ;-------------------------- dis_china proc push ax

mov al,lin;以下18条为根据行、列值定位显示汉字起始坐标 cmp al,0 jnz ch0 mov al,80h jmp ch3 ch0: cmp al,1 jnz ch1 mov al,90h jmp ch3 ch1: cmp al,2 jnz ch2 mov al,88h jmp ch3 ch2: cmp al,3 jnz chret mov al,98h ch3: add al,col call send_com mov ah,num

add ah,num ;汉字个数乘2,1个汉字占2位 ch4: mov al, 00h ;以下循环2*汉字个数,将汉字显示 xlat

call send_data inc bx dec ah

10

jnz ch4 pop ax chret: ret dis_china endp

;-------------------------- ;清LCD屏

;-------------------------- close_lcd proc push ax

mov al, 01h ;清除命令 call send_com call delay1 pop ax ret close_lcd endp

;-------------------------- ;初始化LCD

;-------------------------- init_lcd proc push ax

mov al, 30h ;30H--基本指令操作 call send_com

mov al, 01h ;清除显示 call send_com call delay1 mov al, 06h ;指定在资料写入或读取时,光标的移动方向 call send_com

mov al, 0ch ;开显示,关光标,不闪烁 call send_com pop ax ret init_lcd endp

;-------------------------- ;向LCD发送数据

;-------------------------- send_data proc

call delay1

11

push dx

mov dx, WRDATA out dx, al pop dx ret send_data endp

;-------------------------------- ; 向LCD发送命令

;-------------------------------- send_com proc

call delay1 push dx

mov dx,WRICODE out dx,al pop dx ret send_com endp

;-------------------------- ;延时子程序

;-------------------------- delay1 proc push cx

mov cx, 0080h loop $ pop cx ret delay1 endp

;-------------------------- ;延时子程序 ;AL是延时参数

;-------------------------- delay2 proc push ax push cx mov ah, 0 mov cx, ax dloop: push cx

12

mov cx, 65535 loop $ pop cx loop dloop pop cx pop ax ret delay2 endp

;-------------------------------------------- TAB1 DB \内蒙古大学\

TAB2 DB \电子信息工程学院\ TAB3 DB \自动化系\ TAB4 DB \ TAB5 DB \温度:\code ends

end start

13

实验二 可编程定时器/计数器 一、实验目的

掌握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_CTL EQU 7FE7H TIMER0 EQU 7FE4H TIMER1 EQU 7FE5H MODE03 EQU 36H MODE12 EQU 74H

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE

14

ORG 3490H main: call D8253 JMP $ D8253 PROC

MOV DX,TIM_CTL MOV AL,MODE03 OUT DX,AL MOV DX,TIMER0 MOV AL,0F4h OUT DX,AL MOV AL,01H OUT DX,AL

MOV DX,TIM_CTL MOV AL,MODE12 OUT DX,AL MOV DX,TIMER1 MOV AL,0aH OUT DX,AL MOV AL,00 OUT DX,AL RET CODE ENDS END main

15

实验三 8259中断控制器实验 一、实验目的

1、掌握8259中断控制器的接口方法。 2、掌握8259中断控制器的应用编程。 二、实验内容 1、编制程序,利用8259芯片的IR7作为中断源,产生单一中断,LCD显示中断号“7”,中断次数。

2、修改一些必要的参数,改变中断源。 三、实验电路

四、实验连线

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

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

3、 将数据D0~D7用10芯排线与8259右方的IDC10座相连; 4、 将实验一电路连好; 五、程序清单

1、在实验一的程序中添加如下定义 硬件地址定义: Port0 EQU 7FE8H Port1 EQU 7FE9H 变量定义

IRQ_num db 0 IRQ_count db 0

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

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

16

INT8259:cli push ax

MOV AL,20H ;写OCW2命令,使ISR相应位复位即发EOI命令 MOV DX,Port0 OUT DX,AL mov IRQ_num,7 mov al,IRQ_count add al,1

mov IRQ_count,al pop ax STI IRET

;------------------------------- ;初始化8259

;------------------------------- init_8259 proc CLI

MOV AX,OFFSET INT8259

MOV BX,003CH ; 中断入口地址(8+7)*4=60(3cH),7中断号 MOV [BX],AX

MOV BX,003EH ;3ch,3dh放指令指针IP。3eH,3fH放指令段码 MOV AX,0000H MOV [BX],AX

MOV AL,13H ;设置ICW1,1级8259,需设置ICW4,边沿触发 MOV DX,Port0 OUT DX,AL

MOV AL,08H ;写ICW2,中断类型号从8开始 MOV DX,Port1 OUT DX,AL

MOV AL,09H ;写ICW4,缓冲工作方式,8088配置 OUT DX,AL

MOV AL,7FH ;IRQ7 写OCW1 1屏蔽,0允许中断 OUT DX,AL mov si,0000h STI RET

17

init_8259 endp

3、在实验一的程序中修改汉字表; TAB3 DB \中断号:\ TAB4 DB \中断数:\

4、在实验一的程序中修改主程序; start: call init_lcd mov al,3 call delay2

mov IRQ_count,0 mov IRQ_num,0

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

mov bx,offset tab1 ; mov lin,0 mov col,1 mov num,5 call dis_china

mov bx,offset tab2 ; mov lin,1 mov col,0 mov num,8 call dis_china

mov bx,offset tab3 ; mov lin,2 mov col,1 mov num,4 call dis_china

mov bx,offset tab4 ; mov lin,3 mov col,1 mov num,4 call dis_china mov al,10 call delay2

显示\内蒙古大学 \显示\电子信息工程学院\显示\中断号:\显示\中断数\18

call init_8259

lgs1: mov lin,2 ;显示中断号 mov col,4

mov al,IRQ_num mov dis_num,al call dis_number

mov lin,3 ;显示中断数 mov col,4

mov al,IRQ_num mov dis_num,al call dis_number call delay2 jmp lgs1

19

实验四 8255A并行口实验PA输入、PB输出 一、实验目的

1、掌握8255A和微机接口方法。

2、掌握8255A的工作方式和编程原理。 二、实验内容

使8255A端口A工作在方式0并作为输入口,读取K1—K8八个开关量。PB口工作在方式0作为输出口,驱动L1-L8共8个发光二极管。编程实现拨动K1~K8、L1~L8会跟着亮灭。 三、实验电路

四、编程提示

在本实验箱8255的地址是固定的,不能自己定义。其地址如下: PA EQU 0FFD8H PB EQU 0FFD9H PC EQU 0FFDAH PCTL EQU 0FFDBH 五、选作实验内容:

在液晶屏显示开关状态。

20

开关量接口实验

题目1:交通灯

一、实验目的

通过并行接口8255实现十字路口交通灯的模拟控制,LCD显示秒计时,掌握对并行口的使用. 二、实验要求

1、通过8255A控制发光二极管PB3、PB0、PA5、PA2对应黄灯,PB1、PA6、PA3、PA0对应红灯,PB2、PA7、PA4、PA1对应绿灯,以模拟交通路灯的管理。

2、要完成本实验,必须先了解交通路灯的亮灭规律,没有一个十字路口1、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮。之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后,重复上述过程,同时在LCD显示秒倒计时。

3、定时要用硬件定时,可用8253分频得到单位时间,out经74LS02反向给8259中断或由8255的输入判断。

21

题目2:竞赛枪答器

一、实验目的

l、了解微机化竞赛抢答器的基本原理。 2、学习使用并行接口。 二、实验要求

1、设置8255为C口输入连接八个开关作为抢答开关,A口输出选一个口驱动喇叭,读取C口数据,若为0表示无人抢答,若不为0则有人抢答.根据读取数据可判断其组号。在LCD屏显示组号,喇叭响一声。

2、用单脉冲电路的正脉冲SP,给8259中断或由8255的输入判断,用来开始下一轮抢答。 法。

三、选作实验内容:

根据个人理解,完善抢答器功能。如,完善开始抢答控制、增加错误抢答处理功能。

22

题目3:彩灯控制器

一、实验目的

l、了解微机化彩灯控制器的基本原理。 2、学习使用并行接口。 二、实验要求:

通过8个开关选择彩灯的8种闪烁方式。例如:开关1的方式为全亮后全灭循环。开关2的方式为流水灯。灯闪烁方式由自己定义。

23

模拟量接口实验

题目1:数字化仪表

一、实验目的

了解数模转换器、模数转换的基本原理,掌握DAC0832、ADC0809芯片的使用方法及多芯片接口技术. 二、实验要求:

1、以温度为例对应输入0~5V的电压,量化为0~100度,LCD屏显示“温度: XXX”

2、上、下限报警,上限值为80,下限为20,当温度值小于下限或大于上限,声、光报警,采用8255输出口驱动喇叭和发光二极管。 3、变送输出,温度值通过DAC0832转换为模拟量。 三、单元电路

24

题目2:受控波形发生器

一、实验目的

了解数模转换器、模数转换的基本原理,掌握DAC0832、ADC0809芯片的使用方法及多芯片接口技术. 二、实验要求

通过实验电位器RW输出0-5V直流电压送入ADC0809通道0(IN0),随着输入电压的变化,DAC0832输出波形的频率或幅度也变化,具体变化量不做要求。

1、 改变正弦波的频率。 2、 改变正弦波的幅度。 3、 改变三角波的频率。 4、 改变三角波的幅度。 5、 改变锯齿波的频率。 6、 改变锯齿波的幅度。 以上任选一种波形。 正弦波表

sin db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh

db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h

25

题目3:直流电机控制

一、实验目的

了解数模转换器、模数转换的基本原理,掌握DAC0832、ADC0809芯片的使用方法及多芯片接口技术. 二、实验要求

通过实验电位器RW输出0-5V直流电压送入ADC0809通道0(IN0),随着输入电压的变化,DAC0832输出变化,控制电机的转速和方向,具体控制方法自己定义。

26

题目3:直流电机控制

一、实验目的

了解数模转换器、模数转换的基本原理,掌握DAC0832、ADC0809芯片的使用方法及多芯片接口技术. 二、实验要求

通过实验电位器RW输出0-5V直流电压送入ADC0809通道0(IN0),随着输入电压的变化,DAC0832输出变化,控制电机的转速和方向,具体控制方法自己定义。

26

本文来源:https://www.bwwdw.com/article/2t0.html

Top