微机原理与应用实验讲义
刘涛
中国计量学院光电学院
目录
实验1:keil开发环境介绍单片机内部存储器调用操作 (1)
实验2:清零、拆字、拼字程序及数据区传送子程序 (7)
实验3:P1口亮灯实验、P1口转弯灯实验 (9)
实验4:单片机定时器实验 (11)
实验5:单片机计数器实验 (13)
实验6:单片机串行口实验 (14)
实验7:工业顺序控制实验 (18)
实验8:8255PA口控制PB口、8255控制交通灯 (20)
实验9:单片机键盘输入、数码管显示实验 (22)
实验10:单片机D/A转换实验 (30)
实验11:单片机总线控制1602液晶.................................... 错误!未定义书签。实验12:单片机设计简易计算器............................................ 错误!未定义书签。
实验1:keil开发环境介绍单片机内部存储器调用操作
一、实验目的
1.进行keil开发环境的熟悉和调试;
2.能够初步进行一个简单程序的调试
二、实验设备及器材
启东单片机综合实验箱,计算机等
三、实验内容
熟悉keil的开发环境,并进行一个简单的程序调试,在keil的串行调试窗口显示“Hello World!”
四、实验步骤
使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。
以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发。(安装的方法和普通软件相当这里就不做介绍了)
图1-1启动时的屏幕
接着按下面的步骤建立您的第一个项目:
(1)点击Project菜单,选择弹出的下拉式菜单中的New Project,如图1-2。接着弹出一个标准Windows文件对话窗口,如图1-3,用法技巧也不是这里要说的,以后的章节
中出现类似情况将不再说明。在"文件名"中输入您的第一个C程序项目名称,这里我们用"test",只要符合Windows文件规则的文件名都行。"保存"后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。
图1-2New Project菜单
图1-3文件窗口
(2)选择所要的单片机,这里我们选择常用的Ateml公司的AT89C51。此时屏幕如图1-4所示。AT89C51有什么功能、特点呢?不用急,看图中右边有简单的介绍,稍后的章节会作较详细的介绍。完成上面步骤后,我们就可以进行程序的编写了。
(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。如果你没有现成的程序,那么就要新建一个程序文件。在KEIL中有一些程序的Demo,在这里我们还是以一个C程序为例介绍如何新建一个C程序和如何加到您的第一个项目中吧。点击图1-5中1的新建文件的快捷按钮,在2中出现一个新的文字编辑窗口,这个操作也可以通过菜单File -New或快捷键Ctrl+N来实现。好了,现在可以编写程序了,光标已出现在文本编辑窗口中,等待我们的输入了。第一程序嘛,写个简单明了的吧。下面是经典的一段程序:
#i nclude
#i nclude
void main(void)
{
SCON = 0x50; //串口方式1,允许接收
TMOD = 0x20; //定时器1定时方式2
TCON = 0x40; //设定时器1开始计数
TH1 = 0xE8; //11.0592MHz 1200波特率
TL1 = 0xE8;
TI = 1;
TR1 = 1; //启动定时器
while(1)
{
printf ("Hello World!\n"); //显示Hello World
}
}
图1-4选取芯片
图1-5新建程序文件
这段程序的功能是不断从串口输出"Hello World!"字符,我们先不管程序的语法和意思吧,
先看看如何把它加入到项目中和如何编译试运行。
(4)点击图1-5中的3保存新建的程序,也可以用菜单File-Save或快捷键Ctrl+S进行保存。因是新文件所以保存时会弹出类似图1-3的文件操作窗口,我们把第一个程序命名为test1.c,保存在项目所在的目录中,这时你会发现程序单词有了不同的颜色,说明KEIL 的C语法检查生效了。如图1-6鼠标在屏幕左边的Source Group1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。我们?quot;Add File to Group 'Source Group 1'"弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了。这时在Source Group1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。
图1-6把文件加入到项目文件组中
(5)C程序文件已被我们加到了项目中了,下面就剩下编译运行了。这个项目我们只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的HEX文件,如何设置生成HEX文件就请看下面的第三课。我们先来看图1-7吧,图中1、2、3都是编译按钮,不同是1是用于编译单个文件。2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的。3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。6是有一个小放大镜的按钮,这就是开启\关闭调试模式的按钮,它也存在于菜单Debug-Start\Stop Debug Session,快捷键为Ctrl+F5。
图1-7编译程序
(6)进入调试模式,软件窗口样式大致如图1-8所示。图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效。3是复位,模拟芯片的复位,程序回到最开头处执行。按4我们可以打开5中的串行调试窗口,这个窗口我们可以看到从51芯片的串行口输入输出的字符,这里的第一个项目也正是在这里看运行结果。这些在菜单中也有,这里不再一一介绍大家不妨找找看,其它的功能也会在后面的课程中慢慢介绍。首先按4打开串行调试窗口,再按运行键,这时就可以看到串行调试窗口中不断的打?quot;Hello World!"。这样就完成了您的第一个C项目。最后我们要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启\关闭调试模式按钮。然后我们就可以进行关闭KEIL等相关操作了。
到此为止,初步学习了一些KEIL uVision2的项目文件创建、编译、运行和软件仿真的基本操作方法。其中一直有提到一些功能的快捷键的使用,的确在实际的开发应用中快捷键的运用可以大大提高工作的效率,建议大家多多使用,还有就是对这里所讲的操作方法举一反三用于类似的操作中。
图1-8调试运行程序
实验2:清零、拆字、拼字程序及数据区传送子程序
一、实验目的
掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容
(1)把2000H-20FFH的内容清零。
(2)把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
(3)把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节。
(4)把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。
三、程序框图
(1
)清零程序框图(2)拆字程序框图
(3)拼字程序框图
(4)数据区传送程序框图
四、实验步骤
(1)用连续或单步方式运行程序,检查2000-20FF中执行程序前后的内容变化。
(2)用连续或单步方式运行程序,检查2000—2002H中内容变化情况。
(3)单步或用断点方式运行程序,检查2002H内容变化情况。
(4)在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如2000H), R6、R7中输入字节数(例如1FFFH),运行程序,检查0000-1FFFH中内容是否和2000-3FFFH中内容完全—致。
实验3:P1口亮灯实验、P1口转弯灯实验
一、实验目的
(1)学习P1口的使用方法;
(2)学习延时子程序的编写。
二、实验设备及器材
启东单片机综合实验箱,计算机等
三、实验内容
(1)P1口亮灯实验:
P1作为输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。P1口对准双向口,每一位都可独立地定义为输出线或输入线。本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
(2)P1口转弯灯实验:
P1.0开关接5V时,右转弯灯闪亮,P1.1开关接5V时左转弯灯闪亮, P1.O、P1.1开关同时接5V或接地时,转弯灯均不闪亮。
四、程序框图
图2-1 p1口亮灯实验程序框图
图2-1 p1口转弯灯实验程序框图
五、实验电路
图2-3 P1口亮灯实验电路图Array图2-4 P1口转弯灯实验电路图
六、实验步骤
(1)P1口亮灯实验:P1.O-P1.7用插针连至L1-L8,运行程序后,观察发光二极管闪亮移位情况。
(2)P1口转弯灯实验:P1.0接K1 P1.1接K2 P1.4-P1.7接L1 L5 L9 L13连续运行本程序,应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序,(例可把延时程序第一个字节改成返回指令22H),以便观察。
七、思考
改变延时常数,使发光二极管闪亮时间改变。
修改程序,使发光二极管闪亮移位方向改变。
实验4:单片机定时器实验
一、实验目的
熟悉51定时/计数功能,掌握初始化编程方法。
二、实验设备及器材
计算机、实验箱或自制实验板
三、实验内容
把定时器0外部输入的脉冲进行计数,并送显示器显示。
四、程序框图
五、实验电路
五、实验步骤
P3.4依次接T0-T7或单步脉冲输出孔,执行程序,观察数码管上计数脉冲的速度及个数。
实验5:单片机计数器实验
一、实验目的
学习51单片机内部定时/计数器使用方法。
二、实验设备及器材
计算机、实验箱或自制实验板
三、实验内容
51单片机内部定时计数器T0,按计数器模式工作于方式1,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。
四、实验电路连线
P1.0 ●-----------------------●LED0
P1.1 ●-----------------------●LED1
P1.2 ●-----------------------●LED2
P1.3 ●-----------------------●LED3
P1.4 ●-----------------------●LED4
P1.5 ●-----------------------●LED5
P1.6 ●-----------------------●LED6
P1.7 ●-----------------------●LED7
T0(P3.4)
五、实验说明
本实验中内部计数器起计数器的作用。外部事件计数脉冲由T0(P3.4)脚引入定时器T0
。
单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。
六、参考程序框图
实验6:单片机串行口实验
一、实验目的
1.掌握8051串行口方式0工作方式及编程方法。
2.掌握利用串行口扩展I/O通道的方法。
二、实验设备及器材
启东单片机综合实验箱,导线,数码管,74ls164等。
三、实验内容
利用8051串行口和串行输入并行输出移位寄存器74LS164,扩展一个8位输出通道,用于驱动一个数码显示器,在数码显示器上循环显示8031串行口输出的0—9这10个数字。
串行口工作在方式0时,可通过外接移位存储器实现串并行转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率1/12。由软件置位串行控制寄存器(SCON)的REN后才能启动串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。待8位数据输完后,硬件将SCON寄存器的TI位置1,TI必须由软件清零。
四、实验线路
五、参考程序清单
#include
#define LEDLen 6
unsigned char volatile OUTBIT; // 位控制口
unsigned char volatile OUTSEG; // 段控制口
unsigned char volatile IN ; // 键盘读入口
#pragma locate(OUTBIT = 0x8002) // 定义各端口的地址
#pragma locate(OUTSEG = 0x8004)
#pragma locate(IN = 0x8001)
#pragma interrupt(Sio_int=0x200c)// 定义串口中断向量
unsigned char LEDBuf[LEDLen]; // 显示缓冲
unsigned char RCVBUF,HasRcv;
unsigned char const LEDMAP[] = { // 八段管显示码
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };
void Delay(unsigned char CNT)
{
unsigned char i;
while (CNT-- !=0)
for (i=100; i !=0; i--);
}
void DisplayLED()
{
unsigned char i, j, k;
unsigned char Pos;
unsigned char LED;
Pos = 0x20; // 从左边开始显示
for (i = 0; i < LEDLen; i++) {
OUTBIT = 0; // 关所有八段管
LED = LEDBuf[i];
OUTSEG = LED;
OUTBIT = Pos; // 显示一位八段管
Delay(1);
Pos >>= 1; // 显示下一位
}
}
unsigned char const KeyTable[] = { // 键码定义
0x16, 0x15, 0x14, 0xff,
0x13, 0x12, 0x11, 0x10,
0x0d, 0x0c, 0x0b, 0x0a,
0x0e, 0x03, 0x06, 0x09,
0x0f, 0x02, 0x05, 0x08,
0x00, 0x01, 0x04, 0x07
};
unsigned char TestKey()
{
OUTBIT = 0; // 输出线置为0
return (~IN & 0x0f); // 读入键状态 (高四位不用) }
unsigned char GetKey()
{
unsigned char Pos;
unsigned char i;
unsigned char j;
unsigned char k;
i = 6;
Pos = 0x20; // 找出键所在列
do {
OUTBIT = ~ Pos;
Pos >>= 1;
k = ~IN & 0x0f;
} while ((--i != 0) && (k == 0));
// 键值 = 列 X 4 + 行
if (k != 0) {
i *= 4;
if (k & 2)
i += 1;
else if (k & 4)
i += 2;
else if (k & 8)
i += 3;
OUTBIT = 0;
do Delay(10); while (TestKey()); // 等键释放
return(KeyTable[i]); // 取出键码
} else return(0xff);
}
void Sio_int()
{
if((sp_stat & 0x40)){ // RI位是否为1?
RCVBUF = sbuf_rx;
HasRcv = 1;
}
}
void main()
{
ioc1 = 0x20; // P2.0设为TXD功能
sp_con = 0x09; // 串口模式1,允许接收
baud_rate = 0x9b; // 波特率 2400BPS @ 6MHz baud_rate = 0x80;
int_mask1 = 0x00; // 禁止RI和TI中断
int_mask = 0x40; // 允许串口中断(0x200C) HasRcv = 0;
LEDBuf[0] = 0xff;
LEDBuf[1] = 0xff;
LEDBuf[2] = 0xff;
LEDBuf[3] = 0xff;
LEDBuf[4] = 0x00;
LEDBuf[5] = 0x00;
enable() ; // 允许中断
while (1) {
if(!HasRcv){
DisplayLED(); // 显示
if (TestKey()) // 如果有键按下
sbuf_tx = GetKey(); // 则用串口输出
} else{
HasRcv = 0; // 已收到数据 LEDBuf[5] = LEDMAP[RCVBUF & 0x0f]; // 显示低4位 LEDBuf[4] = LEDMAP[RCVBUF / 0x10]; // 显示高4位 }
}
}
实验7:工业顺序控制实验
一、实验目的
掌握工业顺序控制程序的简单编程,中断的使用。
二、实验预备知识
在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律地完成预定的动作,对这类继续生产过程的控制称顺序控制,倒注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。
三、实验内容
8032P1.0-P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,高电平启动。P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。
四、程序框图
五、实验电路
《微机接口技术》实验指导书 主编李建波 主审黄忠宇、苏显 广东机电职业技术学院 计算机与信息工程系
前言 本实验指导书适用于机电一体化专业,实验时间10学时,5次上机时间。 主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作。 学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序。
目录 实验项目一熟悉微机实验环境 (4) 实验项目二掌握中断方式显示数字或字符 (6) 实验项目三掌握汇编语言的寻址方式 (8) 实验项目四掌握循环指令的用法 (10) 实验项目五掌握子程序的用法 (12)
实验报告一熟悉微机实验环境 1、实验目的 1、熟悉微机实验环境安装 2、熟悉微机实验环境配置 3、通过练习加法,熟悉程序格式 4、单步运行程序,通过观察窗口观察指令对寄存器中数据的影响 2、实验步骤 1)软件安装 (拷贝三个文件夹) 复制:桌面| 网上邻居\ Techer\ c盘\ wave、comp86和in8088三个文件夹拷贝:将三个文件夹到自己计算机上C:盘根目录下 在资源管理器下可以看到:C:\wave,C:\comp86,C:\in8088三个文件夹2)通过资源管理器,进入汇编环境 C:\wave\Bin\wave.exe ,双击wave.exe 3)打开文件我的电脑 \ c: \ wave \ bin \ wave.exe环境配置(如下图) 选中菜单栏中“仿真器”——“仿真器设置”选项(如下图) a、选中“语言”一栏,编译器路径中填写: C:\COMP86\(如下图) b、选中“仿真器”一栏, 选择仿真器—————G6W(如下图) 选择仿真头—————8088/8086实验(如下图) 选择CPU —————8088/8086(如下图) 使用软件模拟器:打√表示软件实验,硬件实验则无√ 4)新建文件 a、选中菜单栏\文件\新建文件,建立空白文件 b、编辑文件,输入以下代码
被嗅材尊机原理与旅用实验指导布实验 程禹够告 沽说:信息工程修陇班披, 电8 77-7班g生名:Eg 样号,2011202030 实验一编辑、汇编、 连接、调试程序的使用 程序设计A 设计要求 (1)将FFFFH 送到AX, SI, DI, BP, DS, ES 寄存器 (2)编程(利用DEBUG调试程序,每执行一次T命令后,记录相关寄存器
内容,并判断是否正确。)程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,0FFFFH MOV SI,AX MOV DI,AX MOV BP,AX MOV DS,AX MOV ES,AX RET STARTENDP CODE ENDS END STT B、设计要求 ⑴将1,2,3,4,5分别送到数据段偏移地址为1000H, 1001H, 1002H, 1003H, 1004H,单元中。 ⑵编程 DATA SEGMENT ORG 1000H DATA ENDS CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV AL,1 MOV DS:[1000H],AL
MOV AL,2 MOV DS:[1001H],AL MOV AL,3 MOV DS:[1002H],AL MOV AL,4 MOV DS:[1003H],AL MOV AL,5 MOV DS:[1004H],AL RET STARTENDP CODE ENDS END STT 实验二、加法程序设计 设计内容A、设计要求 (1)在数据段偏移地址1000H处开始,连续存放有3字节的数据(高位对应高地 址,低位对应低地址),1003H处开始连续存放有两字节的数据(高对高,低 对低),求这两数据之和,并将结果放在流量数据之后。(eg: 1234 56H+78 9AH=12 AC FOH) (2)编程 DATA SEGMENT ORG 1000H H1 DB56H J34H,12H,9AH,78H H2 DB 3DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOVSIJOOOH MOV DI,1003H MOV BX,1005H MOV CX,2 CLC LP:MOVAL,[SI] MOV DL,[DI[ ADCAL,DL MOV [BX],AL INC SI
重庆航天职业技术学院 温度采集报警报告 报告题目:数字温度计 系部:电子工程系专业:计算机控制技术 姓名: 学号: 指导老师:汤平
温度采集报警任务书 题目:数字温度计 任务与要求: 1、查阅数字温度计设计相关资料,熟悉数字温度计设计的原 理,查阅A/D转换及传感器相关知识,画出数字温度计原理图,并编写相应 的源程序。 2、使用8052单片机作为处理器,设计数字温度计设计,设定温 度最高值和最低值。数码管进行循环显示,显示实际温度值。 3、实现单路的电压采集和显示,显示3位温度值,最后1位显示“C” 4、并用喇叭报警。 发挥部分:将仿真电路图和程序修改为中断方式实现温度采集和显示。
前言 温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生活中的更加广泛的应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于80C52的温度检测及报警系统。该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。该系统设计和布线简单,结构紧凑,抗干扰能力强,在大型仓库、工厂、智能化建筑等领域的温度检测中有广泛的应用前景。
目录 1、原理 (1) 2、元器件介绍 (2) 3、元器件清单 (7) 4、参考电路图 (8) 5 电路图详解 (10) 6、元器件的排版与焊接 (11) 7、参考程序编写与导入 (12) 8、成品的调试 (15) 9、总结 (16) 10、参考文献 (17)
微机原理软件实验 实验1 两个多位十进制数相加的实验 实验容:将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个存单元中(低位在前),结果送回DATA1处。完整代码如下: DATAS SEGMENT ;此处输入数据段代码 STRING1 DB'input the first number:','$' STRING2 DB 13,10,'input the second number:','$' STRING3 DB 13,10,'the output is:','$' DATA1 DB 6 DUP(00H),'$' DATA2 DB 6 DUP(00H),'$' DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 LEA SI,DATA1 LEA DI,DATA2 L0: LEA DX,STRING1;打印字符串STRING1 MOV AH,09 INT 21H INPUT1: ;输入第一个数 MOV AH,01;输入字符至AL中 INT 21H CMP AL,'/' JE L1 MOV [SI],AL INC SI
JMP INPUT1 L1: LEA DX,STRING2;打印字符串STRING2 MOV AH,09 INT 21H INPUT2: ;输入第二个数 MOV AH,01;输入字符至AL INT 21H CMP AL,'/' JE L2 MOV [DI],AL INC DI JMP INPUT2 L2: MOV SI,0 CLC;清空进位标志位CF MOV CX,6
机电一体化专业 机械设计制造及其自动化专业计算机控制技术实验指导书 机电教研室 机械与材料工程学院
目录 实验一信号的采样与保持 (1) 实验二机械手综合编程控制实验 (5) 实验三PID控制算法在MATLAB中的仿真 (9) 实验四采样控制系统分析 (13)
实验一信号的采样与保持 一、实验目的 1.熟悉信号的采样和保持过程 2.学习和掌握香农(采样)定理 3.学习用直线插值法和二次曲线插值法还原信号 二、实验设备 PC 机一台,TD-ACC+实验系统一套,i386EX 系统板一块 三、实验内容 1.编写程序,实现信号通过 A/D 转换器转换成数字量送到控制计算机,计算机再把数字量送到 D/A 转换器输出。 2.编写程序,分别用直线插值法和二次曲线插值法还原信号。 四、实验原理 1.采样与保持 香农(采样)定理:若对于一个具有有限频谱|ω|<ωmax的连续信号f(t)进行采样,当采样频率满足ωs≥2ωmax时,则采样函数f*(t)能无失真地恢复到原来的连续信号f(t)。ωmax为信号的最高频率,ωs为采样频率。 实验线路图:本实验中,我们将具体来验证香农定理。可设计如下的实验线路图,图中画“○”的线需用户在实验中自行接好,其它线系统已连好。
图2-1 上图中,控制计算机的“OUT1”表示 386EX 内部 1#定时器的输出端,定时器输出的方波周期=定时器时常,“IRQ7”表示 386EX 内部主片8259 的“7”号中断,用作采样中断。这里,正弦波单元的“OUT”端输出周期性的正弦波信号,通过模数转换单元的“IN7”端输入,系统用定时器作为基准时钟 (初始化为 10ms),定时采集“IN7”端的信号,转换结束产生采样中断,在中断服务程序中读入转换完的数字量,送到数模转换单元,在“OUT1”端输出相应的模拟信号。由于数模转换器有输出锁存能力,所以它具有零阶保持器的作用。 采样周期 T= TK×10ms,TK的范围为 01~ FFH,通过修改 TK就可以灵活地改变采样周期,后面实验的采样周期设置也是如此。参考程序流程:基于上面的实验线路,可以设计如下的参考程序流程。
《微机控制技术》课程设计报告 课题:最少拍控制算法研究专业班级:自动化1401 姓名: 学号: 指导老师:朱琳琳 2017年5月21日
目录 1. 实验目的 (3) 2. 控制任务及要求 (3) 3. 控制算法理论分析 (3) 4. 硬件设计 (5) 5. 软件设计 (5) 无纹波 (5) 有纹波 (7) 6. 结果分析 (9) 7. 课程设计体会 (10)
1.实验目的 本次课程设计的目的是让同学们掌握微型计算机控制系统设计的一般步骤,掌握系统总体控制方案的设计方法、控制算法的设计、硬件设计的方法。学习并熟悉最少拍控制器的设计和算法;研究最少拍控制系统输出采样点间纹波的形成;熟悉最少拍无纹波控制系统控制器的设计和实现方法。复习单片机及其他控制器在实际生活中的应用,进一步加深对专业知识的认识和理解,使自己的设计水平、对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。 2.控制任务及要求 1.设计并实现具有一个积分环节的二阶系统的最少拍有纹波控制和无纹波控制。 对象特性G (s )= 采用零阶保持器H 0(s ),采样周期T =,试设计单位阶跃,单位速度输入时的有限拍调节器。 2.用Protel 、Altium Designer 等软件绘制原理图。 3.分别编写有纹波控制的算法程序和无纹波控制的算法程序。 4.绘制最少拍有纹波、无纹波控制时系统输出响应曲线,并分析。 3.控制算法理论分析 在离散控制系统中,通常把一个采样周期称作一拍。最少拍系统,也称为最小调整时间系统或最快响应系统。它是指系统对应于典型的输入具有最快的响应速度,被控量能经过最少采样周期达到设定值,且稳态误差为定值。显然,这样对系统的闭环脉冲传递函数)(z φ提出了较为苛刻的要求,即其极点应位于Z 平面的坐标原点处。 1最少拍控制算法 计算机控制系统的方框图为: 图7-1 最少拍计算机控制原理方框图 根据上述方框图可知,有限拍系统的闭环脉冲传递函数为: ) ()(1)()()()()(z HG z D z HG z D z R z C z +==φ (1) )(1)()(11)()()(1z z HG z D z R z E z e φφ-=+== (2) 由(1) 、(2)解得:
微机原理实验讲义 程曙艳编 厦门大学自动化系 2016年10月
汇编语言的上机过程 1、建立汇编语言的工作环境 至少有以下程序文件: 编辑程序,文件名https://www.doczj.com/doc/0a5687578.html,,使用https://www.doczj.com/doc/0a5687578.html,编辑程序代码生成*.asm。 汇编程序,文件名MASM.EXE,使用masm.exe对*.asm文件进行汇编,生成*.obj 文件 连接程序,文件名LINK.EXE,使用link.exe对目标文件*.obj进行连接生成*.exe 文件 调试程序,文件名DEBUG.EXE,使用debug.exe对可执行文件*.exe进行调试运行 (1)编辑 可以用记事本或DOS下的EDIT编辑器来编写源程序。但程序保存时文件必须取名为*.asm 。或EDIT 文件名.asm 打开已经存在的文件。 (2)汇编 在DOS状态执行masm 文件名,则屏幕显示与操作如下: (3)连接 汇编后产生的目标文件必须经过连接,才能成为可执行文件.exe。在DOS 状态执行link 文件名,则屏幕显示与操作如下: (4)运行、调试
>DEBUG 文件名.exe Debug运行后,出现状态提示符短划线- 常用debug命令: D,显示内存单元内容 R,显示与修改寄存器内容 T、P,单步执行命令 G,连续执行指令 U,反汇编 Q,退出DEBUG程序 2. 汇编语言程序格式 汇编语言由若干个段组成: 堆栈段(保存数据、断点等信息) 代码段(存放指令)必需 数据段(定义数据,分配存储单元) 附加段(定义数据,分配存储单元) 每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾 STACK SEGMENT ...... STACK ENDS DATA SEGMENT ...... DATA ENDS ESEG SEGMENT ...... ESEG ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA,SS:STACK,ES:ESEG START:mov ax, data mov ds, ax mov ax, eseg mov es, ax mov ax, stack mov ss, ax ………. CODE ENDS END START
计算机控制技术实验指导书 (第2版) 于军琪郭春燕普亮编写 建筑科技大学信控学院信息技术实验中心 2009年3月
目录 1 课程简介、实验项目及学时安排 (1) 1.1课程简介 (1) 1.2实验项目及学时安排 (1) 2 实验仪器仪表设备简介 (2) 2.1自动控制原理实验箱 (2) 2.2其它实验设备 (3) 3 计算机控制技术课程实验 (4) 3.1实验1采样与保持实验 (4) 3.2实验2数字PID控制实验 (8) 3.3实验3直流电机闭环调速实验 (14) 3.4实验4模拟/数字温度闭环综合控制实验 (19) 3.5实验5工控机组态实验 (23) 3.6实验6模/数、数/模转换试验 (30)
1 课程简介、实验项目及学时安排 1.1 课程简介 本课程是自动化专业的主干专业课程,是以应用为主的工程技术类课程。本课程的目的在于培养及提高学生对微机原理与接口技术的知识,了解掌握数字PID控制器的程序实现方法,为掌握计算机综合应用能力打好基础。通过对计算机控制技术课程容的学习与教学实验仪器的结合,上机实践汇编语言文件的建立、汇编和调试,计算机控制系统搭建方法的学习,使学生达到以下要求: 1.掌握汇编语言常用指令,熟悉汇编语言和c语言混合编程; 2.掌握计算机的接口技术; 3.掌握数字PID控制器的程序实现方法。 1.2 实验项目及学时安排 计算机控制技术实验课是以认识和熟悉微机原理与接口技术和模拟验证所学理论为基础,在此基础上开展自行设计系统、确定实验方案和实验线路,进行自主实验,学习系统分析和系统设计的思维方法,培养研究系统的能力。所安排了验证性和综合性不同属性的实验项目。
西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子
程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位
《微机实验》报告 实验名称 KeilC的使用与汇编语言上机操作 指导教师刘小英 专业班级中法1201 姓名肖洋学号 U3 联系电话 一、任务要求 1.掌握KeilC环境的使用 1)字节拆分、合并:调试程序,观察相关寄存器和单元的内容。 2)数据块填充:调试程序,观察相关寄存器和单元的内容。 2. 编写两个十六位数的加法程序。 有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八 位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。 二、设计思路 1.字节拆分、合并程序:利用汇编语言中的 XCHD 和 SWAP 两个语句来实现将八位二进制 数拆分为两个四位二进制数并分别存储于不同的存储空间的功能,BCD 码与 30H 相或(加 上 30H)得到 ASCII 码。将两个 ASCII 码和 0FH 相与(高四位清零)得到 BCD 码,利 用 SWAP 语句将高位数放至高四位,将高位数和低位数相或可实现字节的合并。 2.数据块填充程序:将 R0 用作计数器,DPTR 用作片外数据指针,A 作为原始数据来源, 依顺序在片外的存储单元内容填充数据。利用循环语句来减少程序长度,并控制填充单 元个数为片外 100H 个。(通过 R0 的进位控制) 3.两个十六位数加法程序:把第一个十六位无符号数的地八位和高八位分别存于 20H 和 21H 中,把第二个十六位无符号数的地八位和高八位分别存于 30H 和 31H 中,对 20H 和 30H 中的两个低八位进行 ADD 加法操作,结果存于 R4 中;然后对 21H 和 31H 中的两 个高八位进行 ADDC 带进位的加法操作,结果存于 R3 中.然后将累加器 A 清零,并和#00H
实验一熟悉汇编语言环境及建立汇编的过程 一、实验目的 1.熟悉汇编语言环境。 2.掌握汇编语言的上机过程。 3.了解汇编语言程序的编程格式。 二、实验要求 通过一个小程序的编写达到以上的实验目的。 三、实验原理 1.汇编语言程序的上机过程 用汇编语言编写的程序称为源程序,源程序也不能由机器直接执行,而必须翻译成机器代码组成的目标程序,这个翻译过程称为汇编。在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的,用来把汇编语言编写的程序自动翻译成目标的软件叫汇编程序,汇编过程如下: 四、实验步骤 1、打开编辑环境 2、输入程序 CODE SEGMENT ASSUME CS:CODE START: MOV AL,01H MOV BL,40H ADD AL,BL MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 3、保存源程序,以.ASM为扩展名。C:\MASM\1.ASM 4、建立汇编过程 (1)用宏汇编程序汇编源程序C:\MASM>MASM 1.ASM 汇编程序有3个输出文件【.obj】文件,【.LST】文件,【.CRF】文件,.OBJ文件是我们所需 要的文件。汇编程序还有另外一个重要功能:可以给出源程序中的错误信息。 (2)用连接程序将OBJ文件转换为可执行的EXE文件C:\MASM>LINK 1.OBJ 5、执行程序:C:\MASM>1.EXE
实验二两个多位十进制数相加的实验 一、实验目的: 1.学习数据传送和算术运算指令的用法。 2.熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程。 二、实验内容: 将两个多位十进制数相加。要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验原理 1.ADC 带进位相加指令的功能和指令格式 2.AAA 、DAA、 AAS、 DAS指令的功能和指令格式 3.伪指令SEGMENT 、ENDS、 ASSUME、MACRO、ENDM的使用 4.子程序的定义(PROC NEAR/FAR ENDP),以及子程序调用和返回指令:CALL、RET的使用
计算机控制技术实验指导书 自动化实验室 河北工程大学教务处 (2007.10 )
目录 基本实验要求 (1) 计算机控制技术实验系统使用说明 (2) 安全使用说明(使用前请您务必了解) (2) 实验一数字PID控制 (1) 实验二状态反馈与状态观测器 (4) 实验三数字滤波器实验 (7) 实验四大林算法 (10) 实验五炉温控制实验 (12) 实验六电机转速控制实验 (15) 实验七步进电机控制实验 (17) 基本实验要求 1、实验前必须做好准备,预习实验指导书,复习有关原理,并写好预习报 告(即实验报告的“实验目的”、“实验线路及简要原理”、“实验数据及现象记录”三项) 2、实验中发生事故,应立即切断电源,保持现场,并向指导教师报告事故 情况。 3、实验完毕应先将实验数据与现象记录交指导教师审阅签字后,方可拆线, 并整理设备清理现场才可离开。 4、及时完成实验报告,在预习报告的基础上再加上“数据分析与现象讨论” (包括心得体会) 实验技能的培养和实验手段的掌握是理工学生的基本训练,通过实验锻炼养成严谨的科学态度和结合实际学习分析问题的方法。
计算机控制技术实验系统使用说明计算机控制技术实验所使用的设备由计算机,串行数据通道接口板、实验平台、运放电路板和打印机(任选)组成。 其中计算机在实验中起控制信号产生、输出、测量、人机界面、显示实验波形、打印图像的作用。实验平台配以运放电路板接插阻容元件,可以用来模拟多种特性的被控对象。数据通道接口板插于实验平台的总线扩展槽中,它起模拟信号与数字信号的转换作用,可以用计算机控制产生不同的信号(阶跃、三角、正弦等)。打印机可以把实验的波形打印下来,可根据需要连接,CCT3系统连接方法见下图。 随机配备的SAC-CCT软件包设计了计算机控制技术的九个实验,所有的计算机控制技术实验都是在这套装置上进行的。 安全使用说明(使用前请您务必了解) 为有效、安全地使用实验箱,请遵守以下规定。 1.您在将实验箱盖打开后,请用箱体两边的支撑脚将箱盖撑住,避免在进行试验过 程中箱盖突然下落将您的手砸伤或损坏仪器设备。 2.禁止将平台上开关电源输出长时间短接。 3.禁止将交流源(~15v)短接,这样将会烧毁实验箱内的交流变压器,并引起火灾。 4.禁止将-5V、-12V连接到指示灯引线插孔输入端。 5.实验中尽量用短线连接,尤其两极放大器、功放电路更要注意。 6.在将导线从引线插孔中拔出时,应捏住导线根部,左右旋转松动后再拔出。 7.在进行炉温控制实验时,应避免炉温超过70℃长时间运等,政治路线则将降低炉 体使用寿命;而且还要小心以免将手烫伤。 8.电机条应避免直流电机长时间高速旋转。 9.实验中大部分实验设备如数据通道接口板、数据通讯线、实验平台、直流电机条、 温控炉等设备都是精密装置,实验中务必注意正确使用和妥加爱护。
精品文档
精品文档 实验一过程通道和数据采集处理 为了实现计算机对生产过程或现场对象的控制,需要将对象的各种测量参数按 要求转换成数字信号送入计算机;经计算机运算、处理后,再转换成适合于对生产 过程进行控制的量。所以在微机和生产过程之间,必须设置信息的传递和变换的连 接通道,该通道称为过程通道。它包括模拟量输入通道、模拟量输出通道、数字量 输入通道、数字量输出通道。 模拟量输入通道:主要功能是将随时间连续变化的模拟输入信号变换成数字信 号送入计算机,主要有多路转化器、采样保持器和 A/D 转换器等组成。模拟量输出通道:它将计算机输出的数字信号转换为连续的电压或电流信 号,主要有 D/A 转换器和输出保持器组成。 数字量输入通道:控制系统中,以电平高低和开关通断等两位状态表示的 信号称为数字量,这些数据可以作为设备的状态送往计算机。 数字量输出通道:有的执行机构需要开关量控制信号 ( 如步进电机 ) ,计算机 可以通过 I/O 接口电路或者继电器的断开和闭合来控制。 输入与输出通道 本实验教程主要介绍以 A/D 和 D/A 为主的模拟量输入输出通道, A/D 和D/A的 芯片非常多,这里主要介绍人们最常用的 ADC0809和 TLC7528。 一、实验目的 1.学习 A/D 转换器原理及接口方法,并掌握ADC0809芯片的使用 2.学习 D/A 转换器原理及接口方法,并掌握TLC7528 芯片的使用 二、实验内容 1.编写实验程序,将- 5V ~ +5V 的电压作为 ADC0809的模拟量输入,将 转换所得的 8 位数字量保存于变量中。 2.编写实验程序,实现 D/A 转换产生周期性三角波,并用示波器观察波形。 三、实验设备 + PC 机一台, TD-ACC实验系统一套, i386EX 系统板一块 四、实验原理与步骤 1.A/D 转换实验 ADC0809芯片主要包括多路模拟开关和 A/D 转换器两部分,其主要特点为:单 电源供电、工作时钟 CLOCK最高可达到 1200KHz 、8 位分辨率, 8 +个单端模拟输 入端, TTL 电平兼容等,可以很方便地和微处理器接口。 TD-ACC教学系统中的 ADC0809芯片,其输出八位数据线以及 CLOCK线已连到控制计算机的数据线及系统应用时钟1MCLK(1MHz) 上。其它控制线根据实验要求可另外连接(A 、B、C、STR、/OE、EOC、IN0~ IN7) 。根据实验内容的第一项要求,可以设计出如图 1.1-1 所示 的实验线路图。
一、单选题(30) 1C 2B 3C 4A 5C 6C 7A 8D 9A 10D 11B 12D 13C 14A 15B 16C 17D 18A 19B 20A 21C 22D 23A 24D 25C 26A 27B 28C 29D 30C 二、判断题(20) 1√2 X 3 X4√5 X6 X7√8 X9√10 X 11X12 X13√14√15√16√17 X18 X19 X20 X 三、简答题(10) 1 课本P368。 2 WR# RD# M/IO# BHE# DT/R# mov ah, DS:[1001] : 1 0 1 0 0 mov ah, DS:[1000] : 1 0 1 1 0 mov ax, DS:[1000] : 1 0 1 0 0 3 答案要点: INTR信号有效, 中断允许标志位1; CPU执行完当前指令。 4 答案要点: 采用先进的超标量流水线机制,以并行方式在U、V两条流水线上同时执行两条指令。在U 流水线上可以执行任意指令,但是在V流水线上只能执行和当前U流水线上执行的指令符合配对规则的指令。 5 答案要点: 逻辑地址、线性地址、物理地址; 逻辑地址=段选择子:偏移量,通过逻辑地址可得到段描述,之后将得到线性地址。 线性地址=段基址+偏移量,线性地址通过相应的页面映射规则(如果有)就可以得到实际的物理地址。 物理地址=页基址+页内偏移量,通过线性地址相应的页面映射规则得到。 6 答案要点: GDT/IDT为所有任务共享;
LDT为每个任务私有。 7 答案要点: 需要16Kx8/8Kx4=4,一共需要4片 1#和2#芯片构成bank0,3#和4#芯片构成bank1 bank0:8Kx8,2^13,A0=0 bank1:8Kx8,2^13,BHE#=0 8 答案要点: 2个总线周期。 第一个总线周期:8086触发一个INTA脉冲,告诉中断控制器,它的INTR予以确认。 第二个总线周期:CPU出发一个INTA脉冲,让中断控制器将中断类型号放在数据总线上,并在T4拍开始的下降沿采集中断类型号。 9 答案要点: 包含两个方面:(1)初始化数据缓冲区的起始地址(2)初始化传输的字节数 10 答案要点: 在设置特殊屏蔽方式后,在用OCW1对屏蔽寄存器的的某一位置1时,会同时使当前中断
1.题目:编程将(AX)=2387、(BX)=192FH、(CX)=9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 CODE SEGMENT ASSUME CS:CODE START: MOV AX,2387 MOV BX,192FH MOV CX,9256 CMP AX,BX JAE NEXT1 XCHG AX,BX NEXT1: CMP AX,CX JAE NEXT2 XCHG AX,CX NEXT2: CMP BX,CX JAE NEXT3 XCHG BX,CX NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 2.题目:编程将(BX)=8600H、(CX)=3489H、(DX)=9235按有符号数由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 ;CODE SEGMENT ASSUME CS:CODE START: MOV BX,8600h MOV CX,3489H MOV DX,9235 CMP BX,CX JGE NEXT1 XCHG BX,CX NEXT1: CMP BX,DX JGE NEXT2 XCHG BX,DX NEXT2: CMP CX,DX JGE NEXT3 XCHG CX,DX NEXT3:
MOV AH,4CH INT 21H CODE ENDS END START 3.题目:在数据段中定义如下数据:32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。 DATA SEGMENT NUM DB 32,34,89H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DAT START: MOV AX,DATA MOV DS,AX ;初始化DS LEA BX,NUM ;取有效地址到BX,以便访问要排序的数 MOV AL,[BX] CMP AL,[BX+1] JGE NEXT1 ;若第一个数大则跳转,否则将第一个与第二个数交换 XCHG AL,[BX+1] MOV [BX],AL NEXT1: CMP AL,[BX+2] JGE NEXT2;若第一个数大则跳转,否则将第一个与第三个数交换 XCHG AL,[BX+2] MOV [BX],AL NEXT2: MOV AL,[BX+1];将第二个和第三个数比较 CMP AL,[BX+2] JGE NEXT3;若第二个数大则跳转,否则将第二个与第三个数交换 XCHG AL,[BX+2] MOV [BX+1],AL NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 4.题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。 data segment num db 99h,25h,86h data ends code segment assume cs:code,ds:data start:mov ax,data
姓名 学号 班级 ******************年级 指导教师 《计算机组成原理》实验报告 实验名称微程序控制单元实验、指令部件模块实验、时序与启停实验 实验室实验日期 实验七微程序控制单元实验 一、实验目的 ⒈ 掌握时序产生器的组成方式。 ⒉ 熟悉微程序控制器的原理。 ⒊ 掌握微程序编制及微指令格式。 二、实验原理 图 7- 7- 1
图 7-7-4 微地址控制原理图 微程序控制单元实验原理就是人为的给出一条微指令的地址,人为的去打开测试开关,观察机器怎么运行,打个比方就是我要你执行我下的某条命令,我先告诉你命令写在哪页纸上, 你找到纸后,分析命令是什么之后再去执行。 观察机器微程序控制器的组成见图7-1-1 ,微地址的打入操作就是由操作者给出一条微指令 的地址(同上面的例子就是仅仅告诉你我让你跑的这条命令写在哪页纸上,而没有告诉你 命令的具体内容),不需要做测试去判断这是什么指令,所以由图7-7-1 ,其中微命令寄存器 32 位,用三片 8D 触发器 (273) 和一片 4D(175) 触发器组成。它们的清零端由CLR来控制微控制器的清零。它们的触发端CK接 T2,不做测试时 T2 发出时钟信号,将微程序的内容 打入微控制寄存器(含下一条微指令地址)。打入了微指令的地址(即告诉你命令在哪页纸上,此时你需要先找到这页纸并判断命令是叫你做什么,然后执行),进行测试,T4 发出时钟信号,转移逻辑满足条件后输出的负脉冲通过置位端将某一触发器输出端置为“1”状态,按图 7-7-4 所示,微地址锁存器的置位端R 受 SE5~SE0控制,当测试信号 SE5~SE0输出负脉冲时,通过锁存器置位端R将某一锁存器的输出端强行置“1”,实现微地址的修改与转移,此时的地址指的是指令的操作码的地址(即你已经知道命令是跑,此时做的是跑的行为)。再由数据开关置入微地址的值,再做测试,再跳到指令的操作码的地址准备开始执行 指令,这就是微程序控制单元实验的原理。
微机原理实验讲义 实验一8255A并行口实验(一) 一、实验目的 ⒈掌握8255A和微机接口方法。 ⒉掌握8255A的工作方式和编程原理。 二、实验内容 用8255PA口控制PB口。 三、实验接线图 图6-3 四、编程指南 ⒈8255A芯片简介: 8255A可编程外围接口芯片是INTEL公司生产的通用并行接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作: 方式0:基本输入/ 输出方式 方式l:选通输入/ 输出方式 方式2:双向选通工作方式 ⒉使8255A端口A工作在方式0并作为输入口,读取Kl-K8个开关量,PB 口工作在方式0作为输出口。
五、实验程序框图 六、实验步骤 ⒈在系统显示监控提示符“P.”时,按SCAL键,传送EPROM中的实验程序到内存中。(注:必须先传送EPROM后,再往下操作) ⒉ 8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。 ⒊ 8255A芯片B口的PB0-PB7依次接Ll-L8。 ⒋运行实验程序。 在系统显示监控提示符“P.”时,输入11B0,按EXEC键,系统显示执行提示符“┌”拨动K1-K8, LI-L8会跟着亮灭。 七、实验程序清单 CODE SEGMENT ;H8255-1.ASM ASSUME CS:CODE IOCONPT EQU 0FF2BH ;定义8255控制口 IOBPT EQU 0FF29H ;定义8255 PB口 IOAPT EQU 0FF28H ;定义8255 PA口 ORG 11B0H START: MOV AL,90H ;定义PA输入,PB输出 MOV DX,IOCONPT ;控制口 OUT DX,AL ;写命令字 NOP ;延时 NOP NOP IOLED1: MOV DX,IOAPT ;PA口 IN AL,DX ;读PA口 MOV DX,IOBPT ;PB口 OUT DX,AL ;写PB口 MOV CX,0FFFFH ;延时 DELAY: LOOP DELAY JMP IOLED1 ;循环
工程技术学院电子与控制工程系实验指导书 《计算机控制技术》实验指导书 制订人:胡东 2010年4月
目录 实验一 A/D与D/A转换实验 (3) 实验二数字PID控制算法的实验研究 (10) 实验三最少拍数字控制器的设计 (15)
实验一 A/D与D/A转换实验 一、实验目的与要求 1、了解几种类型AD转换的原理;掌握使用ADC0809进行模数转换 2、了解几种类型DA转换的原理;掌握使用DAC0832进行数模转换 2、认真预习实验内容,做好准备工作,完成实验报告。 二、实验设备 天煌系列实验仪一套、PC机一台、万用表一个。Proteus软件一套。 三、实验内容 1、ADC0809(F3区) (1) 模数转换器,8位精度,8路转换通道,并行输出 (2) 转换时间100us,转换电压范围0~5V 2、编写程序:制作一个电压表,测量0~5V,结果显示于数码管上。 3、利用Proteus设计DAC仿真电路,编写仿真程序,进行DA实验仿真。利用DA转换
五、实验步骤 1、连线说明: 2、调节0~5V电位器(F2区)输出电压,显示在LED上,第4、5位显示16进制数据,第0、1、2位,显示十进制数据。用万用表验证AD转换的结果。 3、实验记录 旋转电位器,使电压从0V~5V变化。读取数码管显示数据,记录电压值与转换出来的数字量。填入下表: 3、数据分析 (1)计算数字理论值和误差,填入上表。 (2)绘制电压与转换出数字量曲线。 在坐标纸上以电压为横坐标,以数字量为坐标绘制。 4、利用Proteus构建仿真电路,进行编程仿真。 (1)打开Proteus V7.4 SP3软件。从元件库中找到下列元件: ①电容: CAP ②极性电容: CAP-POL ③晶振:CRYSTAL
《微机原理》实验参考答案 实验1 汇编基本指令及顺序程序设计实验 实验2 分支与DOS中断功能调用程序设计实验 实验3 循环结构程序设计实验 实验4 存储器扩展实验 实验5 8259应用编程实验 实验1汇编基本指令及顺序程序设计实验 一、实验目的 1、掌握汇编语言的开发环境和上机过程; 2、掌握DEBUG命令; 3、掌握顺序程序设计方法; 4、掌握寻址方式; 5、理解和掌握汇编基本指令的功能。 二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。要求:用3种方法实现。 答:方法一CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H XCHG AX,BX CODE ENDS END START
方法三CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H PUSH AX PUSH BX POP AX POP BX CODE ENDS END START 2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。 MOV AX,BX 寄存器寻址,将BX内容送AX MOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AX MOV AX,10[BX] 寄存器相对寻址,将DS:BX+10内存单元内容送AX 在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。 3、已知有如下程序段: MOV AX,1234H MOV CL,4 在以上程序段的基础上,分别执行以下指令: ROL AX,CL AX=2341H ROR AX,CL AX=4123H SHL AX,CL AX=2340H SHR AX,CL AX=0123H SAR AX,CL AX=0123H RCL AX,CL 带进位标志位的循环左移 RCR AX,CL 带进位标志的循环右移 4、设有以下部分程序段: TABLE DW 10H,20H,30H,40H,50H ENTRY DW 3 ┇ LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX] ┇ 要求:(1)将以上程序段补充成为一个完整的汇编程序。