计算机系统实验.docx
- 文档编号:23211435
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:25
- 大小:930.33KB
计算机系统实验.docx
《计算机系统实验.docx》由会员分享,可在线阅读,更多相关《计算机系统实验.docx(25页珍藏版)》请在冰豆网上搜索。
计算机系统实验
实验一 计算机控制系统MATLAB辅助设计与仿真
一、实验目的
1、认识MATLAB在计算机控制系统设计与仿真中的主要用途,了解其基本指令;
2、了解使用MATLAB辅助求解计算机控制系统简单设计问题的方法;
3、了解计算机控制系统的PID参数整定方法;
4、了解使用Simulink仿真比较复杂系统的方法。
二、实验设备
1、计算机;
2、MATLAB6.5版;
实验二AI通道Proteus辅助设计与仿真
一、实验目的
1、了解A/D芯片ADC0809转换性能及编程方法,掌握A/D转换与单片机接口的方法。
2、掌握使用Proteus辅助设计A/D转换与单片机接口的方法。
3、了解Keil软件的基本使用方法,并了解Keil与Proteus联调的方法。
二、实验设备
1、计算机。
2、Proteus7。
3、KeilμVision2或KeilμVision3。
三、实验内容及要求
1、使用Proteus的ISIS组件绘制ADC0809与AT89C51接口原理图。
2、基于Proteus之ISIS的汇编语言接口驱动程序设计与仿真、调试。
3、基于Keil的项目建立、程序加载及其与Proteus联调。
四、实验步骤
1、使用Proteus的ISIS组件绘制ADC0809与AT89C51接口原理图。
本实验中所要用到的元件如下表所示:
元件名称
搜索关键词
元件序号
数值
备注
单片机
AT89C51
U1
A/D转换器
ADC0808
U2
ADC0809无仿真模型,可用ADC0808(功能完全相同)
2输入端或非门
74LS02
U3
反相器
74LS04
U4
理想运放
OP1P
U5
电阻器
Resistor
R1
10k
电解电容器
MINELECT1U63V
C1
4.7μ
陶瓷电容器
CERAMIC22P
C2、C3
22p
电位器
POT-HG
RV1
100k
晶振
CRYSTAL
X1
12MHz
(1)元件放置、布局、连线即构成原理图主体,如下图所示:
ADC0809与AT89C51简单接口原理图
2、为CPU(AT89C51)编程
(1)添加源程序
(2)编辑程序如下所示:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#0000H
MOVX@DPTR,A
WAIT:
JBP3.2,WAIT
MOVXA,@DPTR
MOV30H,A
SJMPMAIN
END
(3)编译
(4)向CPU加载目标程序
(5)注意:
*.ASM文件主名以及源程序中使用的标号不可过长,主名中间不可有空格,否则Proteus自带的编译器ASEM51会报告诸如“@@@@******@@@@”的错误。
另外,ASEM51不支持$符号!
(6)编译之前可能要对代码生成工具进行设置:
打开菜单Source>>Definecodegenerationtools对话框,修改CommandLine文本框的内容中,即去掉/INCLUDES后面所有路径参数中的空格!
(7)Proteus自带的编辑、编译工具性能不佳,无法直接编译C51文件,所以最好使用Keil。
3、仿真运行、调试
(1)仿真运行
程序加载完成后,点击运行控制工具栏“▶”按钮或执行菜单命令Debug>>Execute全速运行仿真。
点击运行控制工具栏“‖”按钮暂停仿真,此时可以观测运行中间结果,再次按下此按钮则继续全速运行。
停止运行则用“■”按钮。
(2)观测与调试
全速仿真运行过程中必须通过点击“‖”按钮观测运行结果。
根据实验要求,转换结果将始终存放在片内30H单元中,观察方法是:
先暂停,然后执行菜单命令Debug>>8051CPUInternal(IDATA)Memory,当电位器RV1的滑动端处于正中间位置(50%)时,观测窗口如下图所示。
再次运行,并调节RV1滑动端的位置以及电压探针显示的数据,观测、记录30H单元内容的变化。
五、实验报告要求
1、实验过数据要齐全,并分析实验结果的正确性。
实验过程中所得数据记录在下表
电位器行程
电压值(V)
转换结果
0%
0
00H
25%
1.24976
40H
50%
2.49937
7F
75%
3.74929
BF
100%
4.99999
FF
2、说明Proteus与Protel等CAD软件的异同。
Protel和Proteus不同之处在于:
不同点:
Protel主要是用来设计印刷电路板(PCB)的,包括布线、电路板尺寸、层数、过孔啊,很多,就是说用Protel可以做出一块很专业的电路板出来,电脑主板也能被设计出来!
Proteus主要是仿真用,并且感觉做数字电路还有单片机的仿真挺好的,因为仿真的时候可以加载程序代码文件,可以显示芯片管脚的高低电平等...
相同点:
PROTEL是画电路的图的,也可以生成PCB文件(印刷电路板),一般就用这两个功能。
PROTEUS主要来仿真电路的,通过仿真来测试所设计的电路是否可行。
当然也可以画PCB,但是很少用。
实验三AO通道Proteus辅助设计与仿真
一、实验目的
1、了解D/A芯片DAC0832转换性能及编程方法,掌握DAC与单片机接口的方法。
2、掌握使用Proteus辅助设计DAC与单片机接口的方法。
3、进一步熟悉Keil软件的使用方法,充分了解Keil与Proteus联调的方法。
二、实验设备
计算机、Proteus7、KeilμVision3。
三、实验内容
1、使用Proteus的ISIS组件绘制DAC0832与AT89C51接口原理图。
2、基于Keil的DAC0832与AT89C51接口程序设计、仿真、调试及其与Proteus联调。
四、实验方法、步骤与要求
1、使用Proteus的ISIS组件绘制DAC0832与AT89C51接口原理图。
1、启动Proteus的ISIS组件,将要用到的元器件从系统库调到当前设计文件库。
本实验中所要用到的元件如下表所示。
元件名称
搜索关键词
元件序号
数值
单片机
AT89C51
U1
DAC
DAC0832
U2
3-8译码器
74HC138
U5
运算放大器
uA741
U3、U4
电阻器
Resistor
R1、R2
10k、20k
电解电容器
MINELECT1U63V
C1
4.7μ
陶瓷电容器
CERAMIC22P
C2、C3
22p
电位器
POT-HG
RV1
100k
晶振
CRYSTAL
X1
12MHz
2、元件放置、布局、连线即构成原理图主体,如图所示。
2、检验硬件设计的正确性
(1)用Proteus自带的编辑、编译器录入、编译下述检验程序,并生成HEX文件加载到AT89C51运行、调试:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVDPTR,#0F000H
MOVA,#0
LP:
MOVX@DPTR,A
INCA
SJMPLP
END
虚拟示波器面板控件调整
区域
控件
功能
应处档位
操作方法
Trigger
Level
选择触发电平
0
双击
Source
选择触发源
B或C或D均可
单击
AC/DC
选择触发耦合方式
DC
单击
/
选择触发信号边沿
均可
单击
触发方式
Auto
自动触发
开始观测时按下
单击
One-Shot
单次触发
波形稳定时按下
单击
Cursors
测量游标
精确测量时间时按下
单击
Horizontal
Source
选择扫描信源
一般用
单击
Position
波形横向移位
0
双击
扫描时间
外:
扩展因子
选择时间参数分辨率
0.2m
单击
内:
校准开关
时间校准
打开:
即右旋至0.5us处
单击
ChannelA
Position
波形纵向移位
0
双击
AC/DC/GND/OFF
选择耦合方式
DC
单击
Invert
波形倒置
释放
A+B
A、B通道信号叠加
释放
电压幅值
外:
衰减因子
选择时间参数分辨率
0.2V
单击
内:
校准开关
电压幅值校准
打开:
即右旋至2mV处
单击
将虚拟示波器面板上的各区域控件依次调整至如上表所示的位置,左右调节电位器RV1的中心抽头,观察并记录波形的变化规律。
对应的C51程序如下:
#include"reg51.h"
#include"absacc.h"
#definedac_channelXBYTE[0xf000]
main()
{
unsignedchara;
a=0;
while
(1)
{
dac_channel=a;
a++;}
}
(2)调节RV1中心抽头的位置依次至22%、44%、45%、60%、100%,记录各自波形幅值、上升时间和周期,计算波形上升段的斜率填入表中,要注意的是:
●每次先按下Auto,等波形基本稳定后按下One-Shot,然后将一个完整周期的波形移至虚拟示波器屏幕中央,再按下Cursors,将鼠标移至示波器屏幕,就会出现十字测量游标。
●时间参数的基本测量方法是:
依次在时间基准点和目标点上点击鼠标,用所显示的后端(目标)时刻值减去前端(时基)时刻值,所得时间即为所测。
实验结果记录
RV1行程(%)
波形幅值(V)
上升时间(ms)
波形周期(ms)
上升段斜率(V/ms)
22
10.95
0.7
1.27
15.64
44
11
0.99
1.27
11.11
45
11
1
1.26
11.0
60
9.95
1.26
1.26
7.89
100
0
0
0
0
3、按要求编写的接口程序,虚拟示波器观测显示下列指定的波形。
(1)三角波,程序为:
ORG0000H
AJMPDACR
ORG0030H
DACR:
MOVDPTR,#0F000H;DPTR赋初值,指向DAC0832的口地址
MOVA,#0FFH
UP:
INCA;波形上升段
MOVX@DPTR,A;启动D/A转换并参与延时
CJNEA,#100,UP;上升段未完则继续。
每上升一次延时5个机
;器周期、合10
,故半个波形周期需要循
;环50次,合500
=0.5ms
DOWN:
DECA;上升段完成,立即转入波形下降段
MOVX@DPTR,A;启动D/A转换并参与延时
CJNEA,#0,DOWN;下降段未完继续
SJMPUP;否则再次上升,不间断地输出三角波
END
波形如下图所示:
(2)梯形波,程序为:
ORG0000H
AJMPDACR
ORG0030H
DACR:
MOVDPTR,#0F000H;DPTR赋初值,指向DAC0832的口地址
MOVA,#0
MOVB,#62;上、下保持段循环次数计数器
UP:
MOVX@DPTR,A;波形上升段。
启动D/A转换
INCA;
CJNEA,#50,UP;上升段未完则继续。
每上升一次延时5个机
;器周期、合5
,故
个波形周期需要循环
;50次,合1000
=1ms
MOVR1,B;上保持段,循环体延时4T合8
HOLD1:
MOVX@DPTR,A
DJNZR1,HOLD1
DOWN:
MOVX@DPTR,A;波形下降段。
启动D/A转换
DECA
CJNEA,#0,DOWN
MOVR1,B;下保持段,循环体延时4T合8
HOLD2:
MOVX@DPTR,A
DJNZR1,HOLD2
SJMPUP
END
波形如下图所示:
(3)阶梯波,程序为:
ORG0000H
AJMPDACR
ORG0030H
DACR:
MOVDPTR,#0F000H;DPTR赋初值,指向DAC0832的口地址
MOVR0,#20;(R0)=
START:
MOVA,#0;波形每个周期的起点
LOOP:
MOVR1,#248;每阶循环次数
DADL:
MOVX@DPTR,A;转换且延时992
DJNZR1,DADL
ADDA,R0;上升一阶
CJNEA,#200,LOOP;不足10阶则继续
SJMPSTART;不间断地输出阶梯波
END
波形如下图所示:
五、实验报告总结
实验过数据、波形及记录分析要齐全。
实验四步进电动机控制Proteus辅助设计与仿真
一、实验目的
1、了解步进电动机工作原理,掌握步进电机单片机控制系统的硬件Proteus辅助设计方法,熟悉步进电机驱动程序的设计与调试,提高单片机应用系统设计和调试水平。
2、掌握使用Keil软件与Proteus联立调试应用程序的方法,初步了解C51单片机程序设计方法。
二、实验设备
计算机、Proteus7、KeilμVision2或KeilμVision3。
三、实验内容
1、使用Proteus的ISIS组件绘制步进电动机基本驱动电路(单电压放大电路),以及驱动电路与AT89C51接口的可虚拟仿真的原理图。
2、在Keil中设计、仿真、调试步进电动机驱动程序,并与Proteus联调。
四、实验方法、步骤与要求
1、使用Proteus绘制步进电动机单电压驱动电路及其与单片机接口原理图。
(1)启动Proteus的ISIS组件,将要用到的元器件从系统库调到当前设计文件元件库。
本实验中所要用到的元件如下表所示。
实验用元件列表
元件名称
搜索关键词
元件序号
数值
单片机
AT89C51
U1
反相器
74LS04
U2
步进电动机
MOTOR-STEPPER
MOTOR
4相
电阻器
Resistor
R*
按图
电解电容器
MINELECT1U63V
C1
4.7μ
陶瓷电容器
CERAMIC22P
C2、C3
22p
晶振
CRYSTAL
X1
12MHz
续流二极管
DIODE-DSIM
D*
中功率三极管
2N2222A
BG*
(2)元件放置、布局、连线即构成原理图主体,如下图所示。
2、进行硬件设计检验。
建立本实验的Keil工程并进行必要的设置,录入、添加并编译下述检验程序,并生成HEX文件加载到AT89C51运行、独立或联立调试,以便检验硬件选择和连接的正确性:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVA,#0EEH;1P法
LOOP:
MOVP1,A
RLA;逆时针旋转
ACALLDELAY
SJMPLOOP
DELAY:
MOVR7,#10;延时约500ms
DL3:
MOVR6,#100
DL2:
MOVR5,#248
DL1:
DJNZR5,DL1
DJNZR6,DL2
DJNZR7,DL3
RET
END
按步进电动机的默认参数运行,观察并记录步进电动机的工作状态。
然后双击步进电机,在如下图所示的元件编辑对话框中将模型参数StepAngle(即步距角)依此设置为9、12、24、36,分别再次运行、观察。
3、编写驱动程序,通过Keil与Proteus联调使步进电动机按下述指定方式运行。
(1)要求步距角为9度,2P法励磁、步间延时1s、顺时针连续旋转。
则程序为:
ORG0000H
LJMPSTART
ORG0200H
START:
MOVA,#0CCH
MOVR4,,#20
MOVTMOD,,#01H
LOOP:
MOVP1,A
DJNZR4,NEXT;达到步数即关T0,并停止
SJMPFINISH
NEXT:
MOVTH0,#0ECH
MOVTL0,#7CH
SETBTR0
RRA
WAIT:
JBCTF0,LOOP
SJMPWAIT
FINISH:
CLRTR0
CLRTF0
SJMP$
END
(2)要求步距角为9度,2P法励磁、步间延时0.5s、先顺时针后逆时针各旋转20步后停止。
则程序为:
ORG0000H
LJMPMAIN
ORG000BH
AJMPT0SV1
ORG0300H
MAIN:
MOVR4,#250
MOVR3,#250
MOVDPTR,#TAB
MOVTMOD,#01H
MOVTH0,#0ECH
MOVTL0,#7AH
MOVR7,#0
MOVR6,#7
SETBTR0
SETBET0
SETBEA
SJMP$
T0SV1:
DJNZR4,PASSIVE
AJMPNAGTIVE
PASSIVE:
MOVTH0,#0ECH
MOVTL0,#7AH
MOVA,R7
MOVCA,@A+DPTR
MOVP1,A
INCR7
RETI
NAGTIVE:
MOVR4,#1
DJNZR3,NEXT
AJMPFINISH
NEXT:
MOVTH0,#0ECH
MOVTL0,#7AH
MOVA,R6
MOVCA,@A+DPTR
MOVP1,A
DECR6
RETI
FINISH:
CLRTR0
CLRET0
CLREA
SJMP$
TAB:
DB0FEH,0FCH,0FDH,0F9H
DB0FBH,0F3H,0F7H,0F6H
END
(3)要求步距角为9度,1-2P法励磁、步间延时0.25s、顺时针旋转20步后停止。
(提示:
查表实现1-2P法),则程序为:
ORG0000H
LJMPMAIN
ORG000BH
AJMPT0SV1
ORG0300H
MAIN:
MOVR4,#40
MOVR3,#20
MOVDPTR,#TAB
MOVTMOD,#01H
MOVTH0,#00H
MOVTL0,#7AH
MOVR7,#0
MOVR6,#7
SETBTR0
SETBET0
SETBEA
SJMP$
ORG0350H
T0SV1:
DJNZR4,PASSIVE
AJMPNAGTIVE
PASSIVE:
MOVTH0,#00H
MOVTL0,#7AH
MOVA,R7
ANLA,#07H
MOVCA,@A+DPTR
MOVP1,A
INCR7
RETI
NAGTIVE:
MOVR4,#1
DJNZR3,NEXT
AJMPFINISH
NEXT:
MOVTH0,#00H
MOVTL0,#7AH
MOVA,R6
ANLA,#07H
MOVCA,@A+DPTR
MOVP1,A
DECR6
RETI
FINISH:
CLRTR0
CLRET0
CLREA
SJMP$
TAB:
DB0EH,0CH,0DH,09H
DB0BH,03H,07H,06H
END
(4)要求9度、1P法、顺时针,前20步逐渐加速、中间40步恒速、后20步逐渐减速直到完全停止。
则程序为:
ORG0000H
AJMPMAIN
ORG000BH
AJMPT0SV
ORG0030H
MAIN:
MOVR3,#250
MOVR4,#250
MOVA,#0F8H
MOVTMOD,#01H
MOVTH0,#0ECH
MOVTL0,#7AH
SETBTR0
SETBET0
SETBEA
SJMP$
ORG0100H
T0SV:
DJNZR4,ZZ
AJMPFZ
ZZ:
MOVP1,A
RLA
MOVTH0,#0ECH
MOVTL0,#7AH
RETI
FZ:
MOVR4,#1
DJNZR3,YES
AJMPFIN
YES:
MOVP1,A
RRA
MOVTH0,#0ECH
MOVTL0,#7AH
RETI
FIN:
CLRTR0
CLRET0
CLREA
SJMP$
END
4、设计C51程序,实现步骤“3”的要求。
(1)程序:
在Keil中,C51程序的编辑录入、添加到组、编译、加载和调试的方法与汇编语言没什么差别,只要注意C51程序的后缀名是*.C。
程序如下:
#include"REG51.H"
/*-----------delayfunction-------------*/
voiddelay()
{
unsignedcharj;
/*j为8位无符号数,用来循环计数:
循环20次,每次50ms,共延时1000ms即1s*/
for(j=0;j<0x14;j++)
{
TH1=0x3c;/*定时计数器T1定时50ms赋初值*/
TL1=0xb0;
TR1=1;/*启动定时计数器T1*/
while(!
TF1);/*定时50ms未到则等待*/
TF1=0;/*定时50ms满则溢出标志清零*/
}
}
/*--------mainfunction-----------*/
main()
{
unsignedchari,w;
TMOD=0x10;/*设置定时计数器T1工作于定时方式1:
16位定时计数器*/
while
(1)/*无条件循环*/
{
w=0x11;/*对准A相*/
for(i=0;i<4;i++)
{
P1=~w;/*取反*/
w<<=1;/*左移使步进电动机逆时针旋转*/
delay();/*调用延时子程序*/
}
}
}
(2)按“3”的要求编写具有相同功能的C51程序(如上),并调试和运行。
实验总结
使用proteus基本掌握其软件的使用方法,掌握A/D转换与单片机接口的方法。
了解一部分keil软件的基本使用方法,通过两个软件的使用,了解到两个软件之间的异同。
通过仿真,可以看清楚实验的转换过程,其中在编程的时候,需要注意到程序的细节问题,如:
标点符号、大小写、文件路径参数中的空格等等···这些都需要细心留意。
当出现了错误时要以冷静的头脑去检查分析错误!
这是非常重要的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 实验