计算机原理及应用实验指导书

发布日期:2019-07-08

 

 

 

 

 

 

台州学院

 

 

计算机原理及应用

实验指导书

 

(适用于机械设计制造及其自动化专业)

 

 

 

 

 

 

 

机械工程学院机电控制

二〇〇八年八月

    

第一章   系统概述…………………………………………………..3

第二章   系统组成和结构…………………………………………..6

    系统安装与使用………………………………………7

第四章    键盘监控使用简介……………………………………8

第五章    8086K实验系统与PC机联机操作…………………..11

实验    二进制码转换为BCD实验………………………15

实验    分支程序设计…………………………………………18

实验   简单I/O口扩展实验……………………………………21

实验  交通灯控制实验…….…………………………………23

实验   步进电机综合控制实验.……………………………27

参考文献……………………………………………………………35


第一章   系统概述

为了更好地满足微机原理与接口的教学与实验,启东计算机总厂有限公司成功开发了DICE-8086K超强型实验系统。8086K实验系统软、硬件配置完善,实验内容丰富,可进行四十多个实验项目。实验电路采用分模块、开放性设计,使实验电路配置灵活,所有实验程序全部调试通过,用户可直接运用。

1 系统主要特点

采用主频为14.77MHZ8088CPU为主CPU,并以最小工作方式构成系统。

配有二片61C256静态RAM构成系统的64K基本内存,地址范围为00000H-0FFFFH,其中00000H-00FFFH监控占用。另配一片W27C51264KEP1存放监控程序, 地址范围F0000HFFFFF

还配有一片W27C512  EP2存放实验程序,为实验系统独立运行时下载实验程序提供方便。

 自带键盘、显示器,能独立运行,为实验程序调试带来方便。

 配备Windows仿真调试软件,支持机器码、汇编、C等三种语言的开发和调试。

提供标准RS232异步通讯口, 以连接IBM-PC机。

配有各种微机常用I/O接口芯片,定时/计数接口芯片8253A/D转换接口芯片0809D/A转换接口芯片0832、中断控制器8259、键盘显示接口8279、并行I/O接口芯片8255、通讯接口芯片82508251485DMA控制器8237等。

 配备键盘、数码显示、发光二极管显示、开关量、LED16×16LCD12864、温度压力、步进电机、直流电机、扬声器等输入输出设备。

 带有脉冲发生器、计数器电路、单脉冲发生器等常用电路。

 可以单步、断点、全速调试各实验程序。

 内置开关电源,为实验提供+5V/3A±l2V/0.5A直流稳压电源。

 使用环境:环境温度0+40,无明显潮湿,无明显振动碰撞。

 配备USB接口的电子实验演示装置,通过编制程序,对模拟控制对象进行实时控制。

2 系统资源分配

80881兆存储空间,系统提供用户使用的空间为00000H-0FFFFH 用于存放、调试实验程序。具体分配如下:

存贮器地址分配

  

I/O地址分配

 

监控占用00004H-0000FH作为单步(T)、断点(INT3)、无条件暂停(NM1)中断矢量区, 用户也可以更改这些矢量, 指向用户的处理, 但失去了相应的单步、断点、暂停等监控功能。

F0000HFFFFFH监控程序区系统占用。

系统配置

系统内含串行通讯和键盘显示监控的全部软硬件设施,典型配置如下:

主机板+PC

主机板

二种配置的使用特点如下:

配置一:主机板和 PC机通过RS232串行口相连。这种配置形式可以充分利用

IBM  PC机的软硬件资源, 实现源程序的编辑、汇编和链接和调试。实验程序源文件(·ASM)、执行文件(·EXE)都在随机光盘上,你可以利用PC机的键盘显示等输入输出设备完成各种软硬件实验。

配置二:为最经济型配置,它不需要和IBM PC机联机,自成一体,通过一组键盘命令完成所有软硬件实验,每个实验程序固化在实验监控中。这种配置为没有PC机的用户带来极大方便。

第二章   系统组成和结构

8086K实验系统由8088控制单元、实验单元、电子实验演示装置、开关电源和8086K集成调试软件组成。8088控制单元由8088CPUCPLD1032)、监控EP127512)、内存RAM12和键盘显示电路组成。实验单元采用一体化、分模块设计,结构合理清晰。电子实验演示装置由单片机、USB接口和16I/O扩展接口(IN0~15OUT0~15)组成。

2.1 系统接口定义 

1CZ1MAIN-COM :通讯接口;

2CZ4:打印接口;

3JX0JX17为系统提供的数据总线接口;

4CZ7:系统提供的扩展接口;

5JX12JX14:液晶显示接口。

2.2 系统硬件组成 

1LED发光二极管指示电路:实验台上包括16只发光二极管及相应驱动电路。见图2-6Ll-L16为相应发光二极管驱动信号输入端, 该输入端为低电平“0”时发光二极管亮。

2)逻辑电平开关电路:见图2-7。实验台上有8只开关Kl-K8,与之相对应的K1-K8各引线孔为逻辑电平输出端。开关向上拨相应插孔输出高电平“l” 向下拨相应插孔输出低电平“0”

3)单脉冲电路

4)分频电路:该电路由一片74LS393组成。T0-T7为分频输出插孔。该计数器在加电时由RESET信号清零。当脉冲输入为8.0MHZ时,T0-T7输出脉冲频率依次为4.0MHZ2.0MHZ1.0MHZ500KHZ250KHZ125KHZ62500HZ31250HZ

5)脉冲发生电路:实验台上提供8MHZ的脉冲源,实验台上标有8MHZ的插孔,即为脉冲的输出端。

6485接口电路:

7)通讯接口电路

8)数码管显示电路

9)键盘电路

第三章    系统安装与使用

1、把系统开关设置为出厂模式。

1SW3SW4SW5:为键盘/显示选择开关,开关置ON(出厂模式),键盘/显示控制选择系统配置的8155接口芯片,反之由用户选择自定义的I/O接口芯片控制,在本机实验中,除8279实验外,键盘/显示为出厂模式。

2KB6:通讯选择开关,KB6->SYS-C为系统通讯(出厂模式),KB6->EXT-C为扩展通讯。

2、将随机配送的串行通讯线,一端与实验仪的RS232D型插座CZ1相连,另一端与PCCOM1COM2串行口相连。

3、接通实验系统电源,+5V  LED指示灯应正常发光,实验仪数码管应显示闪动P.,说明实验仪初始化成功,处于待命状态。(否则应及时关闭电源,待修正常后使用)

4、打开PC机电源,执行8086K的集成调试软件,关于该软件的详细说明请参阅《第五章8086K实验系统与PC机联机操作》。

第四章    键盘监控使用简介

1 引言

本章详细叙述键盘监控程序的功能和操作方法。

系统一经接通电源,数码管上显示监控提示符“P.”

2 键盘显示

 系统配备6LED显示器,左边4位显示地址,右边2位显示该地址内容。

 系统具有24个注塑键盘,左边l6个是数字键,右边8个是功能键。

在键盘监控状态下用户可以通过一组键命令完成下列操作

· 读写寄存器内容

· 读写存储器内容

· EPROM传送

· 断点设置/清除

· 通过单步、断点、连续等功能来调试运行实验程序。

3 功能键操作说明一缆

 

 

 

 

 

 

 

 

 

 

4 总操作过程

8088十六位微机实验系统上电总清以后, 显示器上显示监控提示符“P.”,各寄存器的初始化值如下:

SP=0683HCS=0000HDS=0000HSS=0000HES=0000HIP=l000HFL=0000H

注意:·所有命令均在提示符“P.”状态输入。

   ·在键盘监控状态,段地址缺省值为0000H

5 监控程序命令及操作 

 存贮器单元内容显示修改

操作:××××ME即在提示符“P.”下,先输入四位存贮单元地址, 再按ME键,显示器左边4位显示地址,右边2位显示该单元的内容。此时

·NX键使地址加1再显示。

·LS键使地址减l再显示。

·键入十六进制数据,则将改写现行地址单元的内容。

·MON键则返回监控,显示提示符“P.”

 寄存器内容显示修改

操作:×RG即在“P.”提示符下,先输入寄存器代号, 再按RG键,显示器右边4位显示寄存器中内容,左12位显示寄存器名。此时:

·NX键,则依次循环显示下一个寄存器中的内容。

·LS键,则依次显示上一个寄存器中的内容。

·输入十六进制数字, 则该寄存器中的内容被修改。

·MON键则返回监控,显示提示符“P.”

 EPROM传送

操作:在提示符“P.”状态下,按SCAL键,开始EPROM传送,把EPROM1000HFFFFH内容传送到相应的内存中,传送时数码管 显示闪动的“——”,传送完毕返回监控,显示提示符“P.”

 单步运行

操作:有三种状态都可以进入单步操作(段地址固定为0000H)

·在监控提示符“P.”状态下,按STEP键,从默认的起始地址IP1000H单元开始单步运行一条指令语句。

·在存贮器单元读写状态(即左边4位显示存贮器地址,右边2位显示存贮器单元内容)下,从当前存贮器地址开始单步运行一条指令语句。

·先输入四位起始地址,再按STEP键,则从输入的起始地址开始运行一条指令语句。每运行一条语句,显示器显示下一条指令语句的地址及其内容。

 连续运行

操作:有三种状态可以进入连续运行

·在监控提示符“P.”状态下,按EXEC键,从默认起始地址CS=0000HIP1000H开始连续运行用户程序。

·在存贮器读写状态下,按EXEC键,从现行存贮器地址开始(CS=0000H)连续运行用户程序。

·先输入4位起始地址,再按EXEC键,则从输入的起始地址开始连续运行用户程序(CS=0000H)。

要想从运行用户程序返回监控, 可以按主机RST, 则重新进入监控状态,初始化部分寄存器。

 断点运行(默认段地址CS=0000H

操作:××××F1,××××EXEC即在提示符“P.”状态下,输入4位断点地址,按F1键,再输入4位起始地址,按EXEC键,程序从起始地址开始运行,显示器显示执行符。当程序运行到断点地址处会自动停下来,并显示断点地址和内容,同时保护所有寄存器的值。

第五章    8086K实验系统与PC机联机操作

5.1 DICE-8086k软件概述 

  该软件适用于DICE-8086KDICE-8086KA598K等实验仪。

 该软件运行环境:该软件适宜在安装Windows95/98/2000/XP操作系统的PC机上运行。

5.2  DICE-8086k软件安装 

运行随机光盘上DICE-8086k.EXE“安装文件,根据提示完成软件安装,然后双击桌面上DICE-8086k快捷图标,即可运行DICE-8086k软件。 

 

5.3  DICE-8086k软件启动和联机 

5.3.1  启动和联机

 双击桌面上DICE-8086k快捷图标,即可运行DICE-8086k软件,屏幕显示DICE-8086k软件的工作窗口,底边状态栏下位机没有连接变成连接上下位机,说明联机成功,否则会弹出对话框提示:下位机没有连接,此时单击“OK”,实验系统和PC机处于脱机状态,然后用户根据连接硬件实际情况来设定COMlCOM2,设定方法如下:依次单击菜单栏:设置(X)、通讯口设置(Z)、COM1COM2”确定、波特率设为9600、然后点击保存设置退出状态设定后,系统会自动检测连接。如果此时确定端口和波特率设置正确,但系统仍然没有连接,可按以下两种方法解决:(1单击工具栏上的重新连接按钮,即可联机;2复位实验系统,使得数码管上显示监控提示符“P.” 然后关闭DICE-8086k软件,重新运行,故障即可排除。  

5.3.2 联机失败原因及解决办法

 实验系统与PC机没有连接;

 实验系统电源没有打开;

 串口实际位置与软件设置不一致;

 通讯开关位置不正确, 检查实验系统各状态设置开关是否确认为出厂模式; 

 软件有病毒;

 实验系统或PC机处于非正常状态。

对于⑴⑵⑷⑸的错误,只要在硬件上检查一下,或用杀毒软件清毒一下即可:如文件已被破坏或需软件升级,可到本厂网站下载。对于第种错误,重复5.3.1操作,对第种错误,联机之前先按一下实验系统RST复位按钮,使实验系统处于P态, 否则说明实验系统不正常,应送当地销售部门或返厂维修。如PC机工作失常也会引起联机失败, 可关闭DICE-8086k软件,重新运行或调换PC机试一下。

5.4  DICE-8086k软件主窗口 

 顶部为菜单栏和工具栏, 提供调试全部命令和功能。

 中间部分为工作窗口区,提供软件调试、寄存器、标志位、存储器、汇编代码对照、编译信息显示等窗口。

 底部为状态栏,提示软件联机状态等信息。

5.5 菜单栏和工具栏命令简介 

工具栏使用:只要移动鼠标,指向工具栏中选定的图标,即会提示该图标所执行的命令。

5.5.1          文件菜单栏 

●     新建文件

单击菜单栏文件或工具栏新建图标,即会建立一个新的源程序编辑窗口,编辑窗口显示Editor,此时可在此编辑、输入源程序。

●F3打开文件

单击菜单栏文件或工具栏打开图标,弹出打开文件的对话框,然后选择要装入的源文件,单击确定即可装入源文件。

●     关闭

单击菜单栏文件下的关闭即可关闭源程序编辑窗口。

 

●     保存

单击菜单栏文件下的保存或按CTRL+S,即可保存文件。

●N建立新文件

分别单击“F文件建立新文件即可创建新文件,再选择换名存盘填入所存文件名即可。

●     另存为

单击菜单栏文件下的另存为,可弹出另存为对话框,在此可选择新的文件名和保存文件夹,单击保存完成保存操作。

退出

依次单击文件退出或单击菜单栏上的最后一个门形按钮关闭按钮即可退出DICE-8086k软件调试环境。

 

5.5.2          编辑菜单栏 

 

剪贴CTRL+X

删除程序中选定的正文,同时将它复制到剪贴板中

复制CTRL+C

保留选定的正文,同时将它复制到剪贴板中

粘贴CTRL|+V

将剪贴板中内容复制在光标处

删除DEL

删除选中的正文

全选CTRL+A

选中源程序编辑窗口中所有的正文

ALT+BackSpace

可恢复上几次误操作

 

5.5.3 调试菜单栏 

●     编译装载F9

打开源文件,依次单击¨调试”\“编译装载F9”或工具栏上的编译装载图标,几秒钟后便会弹出编译成功对话框,单击“OK”,再等待几秒钟后又会弹出装载成功对话框,单击“OK”即编译装载完毕。,如编译出错,会提示错误信息,待修改源文件正确后,重新编译装载即可。

●     连续运行

单击菜单栏调试下的连续运行或单击工具栏的连续运行图标,即可快速连续运行程序。

●     程序单步

单击菜单栏调试下的程序单步或单击工具栏的程序单步图标,即可单步运行程序。

●     重新连接

可单击菜单栏中重新连接,也可单击工具栏的重新连接图标,即可重新连接上下位机。

●     复位

菜单栏中复位无效,可单击工具栏的复位图标,即可复位软件,寄存器置初值,指令指针返回到程序首地址。

5.5.4        设置  

 单击设置下的通讯口设置或工具栏上的通讯口设置即可打开通讯设置对话框,在此可设置端口和波特率。

 

5.5.5 窗口 

  在此菜单可设置窗口的排列顺序,可打开相应的工作窗口。具体详见中文菜单

 

 

 

 

 

 

 

 

 

 

 

实验    二进制码转换为BCD

一、实验目的 

1、掌握数码转换基本方法,加深对数码的理解。

2、用于十进制BCD码显示。

二、实验内容 

AX的内容转换为十进制BCD码。

三、实验程序框图 

 

四、实验步骤 

联机模式: 

  1PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏文件或工具栏打开图标,弹出打开文件的对话框,然后打开8kAsm文件夹,点击S2.ASM文件,单击确定即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击调试连续运行或工具图标运行,即开始运行程序。

   复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H4104H单元中,故其值应为0605050305 

脱机模式: 

P.态,按SCAL键,输入2CE0,按EXEC键。

复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H4104H单元中,故其值应为0605050305                                        

五、实验程序清单

;AX拆为5个BCD码,并存入Result开始的5个单元


data segment AT 0 ;S2.ASM,BIN-->BCD
     ORG 4000H
     Result db 5 dup(?)
data ends
code segment
     assume cs:code, ds:data
     ORG 2CE0H
     start proc near
     mov ax, data
     mov ds, ax
     mov dx,0000h
     mov ax, 65535
     mov cx, 10000
     div cx
     mov Result, al ; 除以 10000, 得wan位数
     mov ax,dx
     mov dx,0000h
     mov cx, 1000
     div cx
     mov Result+1, al ; 除以 1000, 得qian位数
     mov ax,dx
     mov dx,0000h
     mov cx, 100
     div cx
     mov Result+2, al ; 除以 100, 得bai位数
     mov ax,dx
     mov dx,0000h
     mov cx, 10
     div cx
     mov Result+3, al ; 除以 10, 得shi位数
     mov Result+4, dl ; 得ge位数
     jmp $
code ends
     end start



实验二 多分支程序

一、实验目的 

掌握程序散转的方法,实现程序的多分支转移。

二、实验内容 

编制程序,根据送入的数据转移运行。

三、实验程序框图 

 

四、实验步骤  

联机模式: 

  (1)4000H单元写入0001……09中任一个数,按下MON键,返回P状态。

  (2)PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏文件或工具栏打开图标,弹出打开文件的对话框,然后打开8kAsm文件夹,点击S9.ASM文件,单击确定即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击调试连续运行或工具图标运行,即开始运行程序。

  (3数码管应根据4000H单元中内容作不同的循环显示。

脱机模式: 

1、在P.态下,按SCAL键。

2、在4000H单元分别写入0001……09,在P.态下,输入2F40,按EXEC键,数码管应根据4000H单元中内容作不同的循环显示。

五、实验程序清单 


CODE SEGMENT ;S9.ASM
        ASSUME  CS:CODE ;this is a program of 9 way jmp
        ORG 2F40H ;[4000H]=0,1,2,3....9; disp:0,1,2,3....0
START:  JMP START0
ADDR    DW DP0,DP1,DP2,DP3,DP4,DP5,DP6,DP7,DP8,DP9
START0: MOV SI,4000H
        MOV AL, [SI]
        SUB AH,AH
        SHL AL,1
        MOV BX,OFFSET ADDR
        ADD BX,Ax
        JMP [BX]
DP0:    mov bl,0c0h ;DISP "0"
        jmp disp
DP1:    mov bl,0f9h ;DISP "1"
        jmp disp
DP2:    mov bl,0a4h ;DISP "2"
        jmp disp
DP3:    mov bl,0b0h ;DISP "3"
        jmp disp
DP4:    mov bl,99h ;DISP "4"
        jmp disp
DP5:    mov bl,92h ;DISP "5"
        jmp disp
DP6:    mov bl,82h ;DISP "6"
        jmp disp
DP7:    mov bl,0f8h ;DISP "7"
        jmp disp
DP8:    mov bl,80h ;DISP "8"
        jmp disp
DP9:    mov bl,90h ;DISP "9"
        jmp disp
;----------------------------------------
disp:   mov ah,0DFh
disp0:  mov dx,0ff22h
        mov al,bl
        OUT DX,AL
        mov dx,0ff21h
        mov al,ah
        OUT DX,AL
        CALL DLY
        ror ah,01h
        jmp disp0
DLY:    mov cx,0001h
dly1:   push cx
        mov cx,0ffffh
disp1:  loop disp1
        pop cx
        oop dly1
        ret
CODE    NDS
        END START


 


实验三 简单I/O口扩展实验

一、实验目的 

1、学习微机系统中扩展简单I/O口的方法。   

2、学习数据输入输出程序的编制方法。

二、实验内容

利用74LS244作为输入口,读取开关状态,并将此状态通过74LS273再驱动发光二极管显示出来。

三、实验接线图 

 

四、实验程序框图 

 

 

 

 

五、实验步骤 

l、按图6l2接线,Y0Y7KIK8Q0Q7L1L8CS18000孔,CS29000孔,JX7→JX17

2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,输入19D0 EXEC键。

3、按动K1K8,观察LlL8是否对应点亮。

 

六、实验程序清单

CODE        SEGMENT ;IO.ASM 
                  ASSUME CS:CODE
                  ORG 19D0H
START:   MOV DX,8000H
                  IN AL,DX
                  MOV DX,9000H
                  OUT DX,AL
                  JMP START
CODE       ENDS
                  END START

 


实验 交通灯控制实验

一、实验目的 

a、掌握可编程I/O接口芯片8255A并行接口的基本工作原理及使用。

b、熟悉对8255初始化编程和输入、输出软件的设计方法。

c、用8255做输出口,控制12个发光二极管亮灭,模拟交通灯管理。

二、实验内容 

8255做输出口,控制十二个发光管亮灭,模拟交通灯管理。

三、实验接线图 

四、编程指南 

通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯, 以模拟交通路灯的管理。

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

程序中设定好8255A的工作模式及三个端口均工作在方式0,并处于输出状态。

各发光二极管共阳极,使其点亮应使8255A相应端口的位清0

 

 

五、实验程序框图 

 

六、实验步骤 

 在系统显示监控提示符“P.”时,按SCAL键。

 按图6-4连好实验线路

8255A PC0L3 PC1L7 PC2L11 PC3L15 

      PC4L2 PC5L6 PC6L10 PC7L14

      PB4L1 PB5L5 PB6L9 PB7L13

“P.”态时,输入11E0后,按EXEC键;系统显示执行符“┌”,同时Ll-Ll5发光二极管模拟交通灯显示。

七、实验程序清单



CODE    SEGMENT ;H8255-2.ASM
        ASSUME CS:CODE
IOCONPT EQU 0FF2BH
IOAPT   EQU 0FF28H
IOBPT   EQU 0FF29H
IOCPT   EQU 0FF2AH
        ORG 11e0H
START:  MOV AL,82H
        MOV DX,IOCONPT
        OUT DX,AL
        MOV DX,IOBPT
        IN AL,DX
        MOV BYTE PTR DS:[0601H],AL
        MOV DX,IOCONPT
        MOV AL,80H
        OUT DX,AL
        MOV DX,IOBPT
        MOV AL,DS:[0601H]
        OR AL,0F0H
        OUT DX,AL
        MOV DX,IOCPT
        MOV AL,0F0H
        OUT DX,AL
        CALL DELAY1
IOLED0: MOV AL,10100101B
        MOV DX,IOCPT
        OUT DX,AL
        CALL DELAY1
        ALL DELAY1
        OR AL,0F0H
        OUT DX,AL
        MOV CX,8H
IOLED1: MOV DX,IOBPT
        MOV AL,DS:[0601H]
        AND AL,10101111B
        OUT DX,AL
        CALL DELAY2
        OR AL,01010000B
        OUT DX,AL
        CALL DELAY2
        LOOP IOLED1
        MOV DX,IOCPT
        MOV AL,0F0H
        OUT DX,AL
        CALL DELAY2
        MOV AL,01011010B
        OUT DX,AL
        CALL DELAY1
        CALL DELAY1
        OR AL,0F0H
        OUT DX,AL
        MOV CX,8H
IOLED2: MOV DX,IOBPT
        MOV AL,DS:[0601H]
        AND AL,01011111B
        OUT DX,AL
        CALL DELAY2
        OR AL,10100000B
        OUT DX,AL
        CALL DELAY2
        LOOP IOLED2
        MOV DX,IOCPT
        MOV AL,0F0H
        OUT DX,AL
        CALL DELAY2
        JMP IOLED0
DELAY1: PUSH AX
        PUSH CX
        MOV CX,0030H
DELY2:  CALL DELAY2
        LOOP DELY2
        POP CX
        POP AX
        RET
DELAY2: PUSH CX
        MOV CX,8000H
DELA1:  LOOP DELA1
        POP CX
        RET
CODE    ENDS
        END START


 

实验 步进电机综合控制实验

一、实验目的 

1、了解步进电机控制的基本原理。

2、掌握步进电机转动编程方法。

二、实验内容 

l、用8255PA0PA3输出脉冲信号,驱动步进电机转动,通过键盘设定来控制步进电机正转、反转、停止。

2、实验预备知识,步进电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,用微电脑控制步进电机最适合。

三、实验接线图 

 

四、实验步骤 

1 在系统处于命令提示符“P.”态下,按SCAL键。

2、按图69连好实验线路图,8255PA0PA3依次连到HA-HD插孔。

3、运行实验程序。

在系统处于命令提示符“P.”态下,输入1630,按EXEC键,显示BJ,按“1”键正转;按“2”键反转;按“3”停止。

 3、观察步进电机转动情况。

 

五、实验程序清单


CODE         SEGMENT ;BJ.ASM
                   ASSUME  CS:CODE
IOCONPT EQU 0FF2BH
IOBPT       EQU 0FF29H
IOAPT      EQU 0FF28H
PA             EQU 0FF21H ;字位口
PB              EQU 0FF22H ;字形口
PC              EQU 0FF23H ;键入口
                   ORG 1630H
START:    JMP START0
BUF           DB ?,?,?,?,?,?
KZ              DB ?
ltime           db ?
lkey            db ?
data1:         db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
                    db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F1H
START0:   CALL BUF1
                    MOV AL,88H
                    MOV DX,IOCONPT
                    OUT DX,AL
redikey:     call dispkey
                   cmp KZ,01h
                   JZ ZZ
                   cmp KZ,02h
                    JZ FZ
                   cmp KZ,03h
                   JZ STX
                  JMP REDIKEY
STX:         JMP ST
ZZ:            CALL BUFZ
ZZ1:          MOV DX,IOAPT
                  MOV AL,03H
                  MOV DX,IOAPT
                  OUT DX,AL
                  CALL DELPZ
                  MOV AL,06H
                  MOV DX,IOAPT
                 OUT DX,AL
                 CALL DELPZ
                 MOV AL,0CH
                 MOV DX,IOAPT
                 OUT DX,AL
                 CALL DELPZ
                 MOV AL,09H
                 MOV DX,IOAPT
                 OUT DX,AL
                 CALL DELPZ
                 MOV AL,03H
                 MOV DX,IOAPT
                 OUT DX,AL
                 CALL DELPZ
                 MOV AL,06H
                 MOV DX,IOAPT
                 OUT DX,AL
                 CALL DELPZ
                  MOV AL,0CH
                  MOV DX,IOAPT
                  OUT DX,AL
                  CALL DELPZ
                  MOV AL,09H
                  MOV DX,IOAPT
                  OUT DX,AL
                   CALL DELPZ
                  JMP ZZ1
;-------------------------
 FZ:           CALL BUFF
FZ1:          MOV DX,IOAPT
                  MOV AL,0CH
                  OUT DX,AL
                  CALL DELPF
                  MOV AL,06H
                  MOV DX,IOAPT
                  OUT DX,AL
                  CALL DELPF
                  MOV DX,IOAPT
                  MOV AL,03H
                  OUT DX,AL
                  CALL DELPF
                  MOV AL,09H
                  MOV DX,IOAPT
                  OUT DX,AL
                  CALL DELPF
                  MOV AL,0CH
                  MOV DX,IOAPT
                  OUT DX,AL
                   CALL DELPF
                  MOV AL,06H
                  MOV DX,IOAPT
                 OUT DX,AL
                  CALL DELPF
                  MOV AL,03H
                  MOV DX,IOAPT
                  OUT DX,AL
                  CALL DELPF
                  MOV AL,09H
                  MOV DX,IOAPT
                   OUT DX,AL
                  CALL DELPF
                  JMP FZ1
;-----------------
ST:             CALL BUFS
                   MOV DX,IOAPT
                   MOV AL,00H
                   OUT DX,AL
ST1:           call dispkey
                   cmp KZ,01h
                   JZ ZZMON
                   cmp KZ,02h
                   JZ FZMON
                   JMP ST1
delpZ:        mov cx,09h
con1:          push cx
                   CALL dispkey
                   pop cx
                   cmp KZ,02h
                   JZ FZMON
                   cmp KZ,03h
                   JZ STMON
                    loop con1
                   RET
delpF:        mov cx,09h
con2:          push cx
                   CALL dispkey
                   pop cx
                   cmp KZ,01h
                   JZ ZZMON
                   cmp KZ,03h
                   JZ STMON
                    loop con2
                   RET
ZZMON:   POP CX
                   JMP ZZ
FZMON:    POP CX
                   JMP FZ
STMON:   POP CX
                   JMP ST
;-------------------------
dispkey:   call disp
                  call key
                  mov ah,al ;newkey
                  mov bl,ltime ;ltime
                  mov bh,lkey ;lkey
                  mov al,01h
                  mov dx,0ff21h
                  out dx,al
                  cmp ah,bh
                  mov bh,ah ;bh=new key
                  mov ah,bl ;al=time
                  jz disk4
                  mov bl,88h
                  mov ah,88h
disk4:       dec ah
                 cmp ah,82h
                  jz disk6
                  cmp ah,0eh
                  jz disk6
                  cmp ah,00h
                  jz disk5
                  mov ah,20h
                  dec bl
                   jmp disk7
disk5:        mov ah,0fh
disk6:        mov bl,ah
                  mov ah,bh
disk7:       mov ltime,bl
                 mov lkey,bh
                  mov KZ,bh
                  mov al,ah
                 ret
key:           mov al,0ffh
                  mov dx,0ff22h
                 out dx,al
                 mov bl,00h
                 mov ah,0feh
                 mov cx,08h
key1:        mov al,ah
                 mov dx,0ff21h
                out dx,al
                rol al,01h
                mov ah,al
                nop
                nop
                nop
                nop
                nop
                nop
                mov dx,0ff23h
                in al,dx
                not al
                nop
                nop
                and al,0fh
                jnz key2
                inc bl
                loop key1
                jmp nkey
key2:       test al,01h
                je key3
                mov al,00h
                jmp key6
key3:       test al,02h
                 je key4
                mov al,08h
                jmp key6
 key4:      test al,04h
                je key5
                mov al,10h
                jmp key6
key5:       test al,08h
                je nkey
                mov al,18h
key6:       add al,bl
                cmp al,10h
                jnc fkey
                mov bl,al
                mov bh,0h
                mov si,offset data2
                mov al,[bx+si]
                ret
nkey:      mov al,20h
fkey:       ret
data2:      db 07h,04h,08h,05h,09h,06h,0ah,0bh
                 DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh
DISP:       MOV AL,0FFH ;00H
                 MOV DX,PA
                 OUT DX,AL
                MOV CL,0DFH ;20H ;显示子程序 ,5ms
                MOV BX,OFFSET BUF
DIS1:       MOV AL,[BX]
                 MOV AH,00H
                 PUSH BX
                 MOV BX,OFFSET DATA1
                 ADD BX,AX
                 MOV AL,[BX]
                 POP BX
                 MOV DX,PB
                OUT DX,AL
                MOV AL,CL
                MOV DX,PA
               OUT DX,AL
                PUSH CX
 DIS2 :     MOV CX,0a0H
                LOOP $
                POP CX
               CMP CL,0FEH
               JZ LX1
                INC BX
                ROR CL,1
                JMP DIS1
 LX1:       MOV AL,0FFH
                MOV DX,PB
               OUT DX,AL
               RET 
BUF1:     MOV BUF,0BH
                MOV BUF+1,019H
                MOV BUF+2,17H
                MOV BUF+3,17H
                MOV BUF+4,17H
                MOV BUF+5,17H
                RET
BUFZ:     MOV BUF,0BH
                MOV BUF+1,19H
                 MOV BUF+2,17H
                 MOV BUF+3,17H
                 MOV BUF+4,17H
                 MOV BUF+5,0FH
                 RET
BUFF:      MOV BUF,0BH
                  MOV BUF+1,19H
                 MOV BUF+2,17H
                 MOV BUF+3,17H
                 MOV BUF+4,17H
                 MOV BUF+5,18H
                 RET
BUFS:      MOV BUF,0BH
                  MOV BUF+1,19H
                  MOV BUF+2,17H
                  MOV BUF+3,17H
                  MOV BUF+4,17H
                  MOV BUF+5,05H
                  RET
CODE       ENDS
                  END START


 

 

 

 

 

 

 

主要参考文献

 

1、《DICE 系列598k单片机微机实验系统指导书》  启东计算机总厂随机资料

2、《IBM-PC汇编语言程序设计》 沈美明等编著 清华大学出版社 

3、《80X86汇编语言程序设计教程》 杨季文等编著 清华大学出版社 

4、《微型计算机技术及应用》 戴梅萼等编著 清华大学出版社