计算机控制技术实验指导书研究生部分V60剖析.docx

上传人:b****3 文档编号:4215485 上传时间:2023-05-06 格式:DOCX 页数:60 大小:5.57MB
下载 相关 举报
计算机控制技术实验指导书研究生部分V60剖析.docx_第1页
第1页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第2页
第2页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第3页
第3页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第4页
第4页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第5页
第5页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第6页
第6页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第7页
第7页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第8页
第8页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第9页
第9页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第10页
第10页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第11页
第11页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第12页
第12页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第13页
第13页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第14页
第14页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第15页
第15页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第16页
第16页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第17页
第17页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第18页
第18页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第19页
第19页 / 共60页
计算机控制技术实验指导书研究生部分V60剖析.docx_第20页
第20页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机控制技术实验指导书研究生部分V60剖析.docx

《计算机控制技术实验指导书研究生部分V60剖析.docx》由会员分享,可在线阅读,更多相关《计算机控制技术实验指导书研究生部分V60剖析.docx(60页珍藏版)》请在冰点文库上搜索。

计算机控制技术实验指导书研究生部分V60剖析.docx

计算机控制技术实验指导书研究生部分V60剖析

 

计算机控制系统

实验指导书

编者赵文龙彭洁

 

 

南昌航空大学

信息工程学院

前言

计算机由于具有强大的算术运算、逻辑判断、记忆等信息加工能力,使得它一诞生就被应用到控制领域。

随着计算机科学技术的发展,使60年代控制理论得到应用,而现代控制理论的发展,又为计算机控制的发展奠定了广阔的理论基础。

特别是微电子技术的发展给计算机控制提供了物质基础。

现在在工业生产等领域中,计算机控制正广泛深入地的得到应用,并取得了可喜的经济效益和社会效益。

本实验指导书是《计算机控制系统》课程的配套教材。

是理工科院校电类专业研究生学习《计算机控制系统》及自动化专业本科生《计算机控制系统》课程的实验教程,也是研究生《计算机控制系统》的实验教程(主要掌握12位A/D和12位D/A)。

通过实验可使学生进一步了解和掌握计算机控制理论的基本概念、控制系统的分析方法和设计方法以及控制算法的编程实现,学习和掌握系统模拟电路的构成和测试技术,提高应用计算机的能力及水平。

本书分为三章,第一章硬件资源,主要介绍实验的硬件组成。

第二章软件使用,主要介绍系统软件的操作以及计算机和实验箱的通讯设置。

第三章单片机实验部分,主要介绍围绕单片机控制系统开展的各个实验的电路组成,实验原理、实验步骤和控制程序。

在编写过程中,承蒙王长坤、吴国辉、邱玉兰老师的帮助和支持。

在此,向他们表示衷心的感谢。

由于时间仓促,且编者水平有限,书中难免有不足之处,敬请读者批评指正。

 

编者

2016年10月

目录

第一章硬件资源…………………………………………………………………………1

第二章软件使用………………………………………………………………10

第三章单片机系统实验………………………………………………………………24

实验一基于定时器定时中断的扫描显示与异步通信实验……………………24

实验二12位D/A转换实验……………………………………………………………34

实验三12位A/D转换实验……………………………………………………………40

实验四数字PID控制实验……………………………………………………………51

实验五数字PID参数整定及控制算法改进实验……………………………………56

第一章硬件资源

一、基于8位A/D、D/A的单片机控制系统实验的硬件原理图

基于8位A/D、D/A的单片机控制系统实验的硬件原理图如图1-1所示。

二、基于12位A/D、D/A的单片机控制系统实验的硬件原理图

基于12位A/D、D/A的单片机控制系统实验的硬件原理图如图1-2到如图1-7所示。

其中图1-2是单片机模块原理图,图1-3是12位A/D模块原理图,图1-4是D/A模块原理图,图1-5是显示模块原理图,图1-6是电源及信号转接模块原理图,图1-7是被控对象模块原理图。

图1-1基于8位A/D、D/A的单片机控制系统实验的硬件原理图

图1-2单片机模块原理图

图1-312位A/D模块原理图

图1-4D/A模块原理图

图1-5显示模块原理图

图1-6电源及信号转接模块原理图

1-7被控对象模块原理图

第二章软件使用

第1节KeilC软件使用

本书后文的所有教学项目例程都是在KeilC51软件下开发和调试的,因此有必要对KeilC51的使用进行简要介绍。

KeilC51是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、PLM语言和C语言的程序设计,界面友好,易学易用。

2.1.1启动KeilC51软件

下面介绍KeilC51软件(以版本6.12为例)的使用方法,启动KeilC51时的屏幕如图2-1所示。

图2-1启动KeilC51时的屏幕

几秒钟后出现编辑界面,屏幕如图2-2所示。

图2-2进入KeilC51时的编辑界面

2.1.2简单程序的调试

下面通过简单的编程、调试操作和演示,引导读者学习和掌握KeilC51软件的基本使用方法和基本调试技巧。

(1)、单击“Project”菜单准备建立一个新工程,在弹出的下拉菜单中选中“NewProject”选项(见图2-3)。

图2-3在KeilC51中建立一个新工程

(2)、选择要保存的路径,输入工程文件的名字,比如保存到d:

\STCproject目录下,项目名为P_STCproject,单击“保存”按钮即可,见图2-4。

图2-4将新工程保存到指定目录

(3)、系统弹出一个对话框要求选择单片机的型号,可以根据所使用的单片机来选择。

KeilC51几乎支持所有的MCS-51内核的单片机,虽然这里没有STC的单片机选项,但是选中Atmel中的89C52即可默认是STC89C52RC单片机。

如图2-5所示,选择89C52之后,

右边栏是对这个单片机的基本的说明,然后单击“确定”按钮。

图2-5单片机的选型(4)、完成上一步骤后界面如图2-6所示,到目前为止,在建好的项目中还没有编写一句程序,下面开始编写第一个程序。

图2-6KeilC51中的一个空项目界面

(5)、在图2-7中,单击“File”菜单再在下拉菜单中单击“New”选项;

图2-7准备新建一个文件

新建文件后屏幕如图2-8所示

图2-8新建文件界面

此时光标在编辑窗口中闪烁,这时可以键入用户编写的源程序了,此处建议保存该空白文件及其类型,单击菜单上的“File”,在下拉菜单中选中“Saveas”项者单击,屏幕如图2-9所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。

注意,如果用C语言编写程序则扩展名为.c;如果用汇编语言编写程序,则扩展名必须为.asm。

然后,单击“保存”按钮。

图2-9保存新建文件及其类型界面(6)、回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键弹出如图2-10所示菜单项;

图2-10在KeilC51中的一个空项目里加入文件

然后单击“AddFiletoGroup‘SourceGroup1’”屏幕如图2-11所示

图2-11C源程序被加入空项目里

选中Text1.c,然后单击“Add”屏幕如图2-12所示,

图2-12C源程序被加入空项目后的界面

此时‘SourceGroup1’文件夹中多了一个子项“Text1.c”,子项的多少与所增加的源程序的多少相同。

(7)、在光标闪烁的代码编辑区输入如下C语言源程序;#include#includevoidmain(void){SCON=0x52;//串口方式1,允许接收TMOD=0x20;//定时器T1工作在方式2TH1=0xF3;//选定波特率TR1=1;//启动定时器,此行及以上3行为printf函数所必须printf("HelloIamKEIL.\n");printf("Iwillbeyourfriend.\n");while

(1);}在输入上述程序时,Keilc51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。

程序输入完毕后,如图2-13所示

图2-13C源程序在项目中被编辑的效果

(8)、在图6-13所示界面中,单击“Project”菜单,再在下拉菜单中单击“BuiltTarget”选项(或者使用快捷键F7),编译成功后,再单击“Debug”菜单,在下拉菜单中单击“Start/stopDebugSession”选项(或者使用快捷键Ctrl+F5),界面如图2-14所示

图2-14C源程序在执行Ctrl+F5后的效果

(9)、键调试程序,在图2-14中,单击“Debug”菜单,在下拉菜单中单击“go”选项(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“StopRuning”选项(或者使用快捷键Esc);再单击“View”菜单,在下拉菜单中单击“SerialWindows#1”选项,就可以看到程序运行后的结果,其结果如图2-15所示

图2-15C源程序最后的执行结果

至此,在KeilC51中做了一个完整工程的全过程,但这只是纯软件的开发过程,必须在KeilC51中进行进一步设置才能将已编译好的程序下载到STC单片机中供其运行。

(10)、单击“Project”菜单,再在下拉菜单中单击“optionsforTarget‘Target1’”选项,在图2-16所示对话框中,在“Output”选项卡中选中“CreateHEXFile”前的复选框,再编译一次程序,在项目目录中就会产生HEX代码,本例会产生P_STCproject.hex供下载器软件使用。

下载器软件会把程序下载到STC89C52RC单片机中。

图2-16HEX代码产生的设置

第2节STC单片机的烧写

1.打开STC单片机的烧写软件,如图2-17所示。

这个界面中已经给出了操作步骤:

选择单片机型号(选择STC89C52RC即可)→点击OpenFile按钮出现open.hexorbinfile窗口,如图2-18所示→选择已经编译成功的shiyan.hex文件,点击打开按钮,出现图2-19的界面→选择使用的微机串口→选择倍速、增益等(使用STC89C52RC单片机采用默认选项即可)→点击Download/下载→出现图2-20的界面后给单片机上电→开始烧写,烧写进行中如图2-21所示,烧写完成如图2-22所示。

图2-17STC单片机烧写界面

图2-18选择hex文件

图2-19打开hex文件

图2-20开始上电

图2-21烧写进行中

图2-22烧写成功

第三章

基于12位A/D、D/A的单片机控制系统实验

本套实验系统一共提供了6个围绕单片机系统开展的实验:

基于定时器定时中断的扫描显示与异步通信实验、12位D/A转换实验、12位A/D转换实验、数字滞后-超前校正实验、数字PID控制实验、数字PID参数整定及控制算法改进实验、模糊控制实验。

该单片机系统如图1-1到图1-7所示。

本系统算法完全开放,系统结构组合灵活,可以自行修改和添加新的实验。

实验一 基于定时器定时中断的扫描显示与异步通信实验

一、实验目的

1.掌握单片机内部定时器的使用和C51编程方法;

2.掌握异步通信的工作原理和C51编程方法;

3.掌握扫描显示的工作原理和C51编程方法。

二、实验仪器

1.51SKJXSJ单板实验板1块(附12V1A的AC/DC开关型电源模块1个,RS232标准串行通信电缆1根),做步骤9、步骤10和步骤11时还要实验盒1个。

2.带DB9串口的台式PC机1台(装有KeilμVision3编译软件、STC-ISPV29Beta5下载软件、DOSBOX软件)。

3.如果不用截屏,还要具有照相功能的手机或数码照相机(自备)。

实验一图1扫描显示电路原理图

实验一图2单片机部分原理图

三、实验内容

利用定时器定时中断,在中断服务程序中完成八段数码管的显示,在主程序中实现有限范围的秒的加、减计数,并且根据加、减计数值更新显示缓冲区的数据,秒的加法计数从-100~100周期性计数,秒的减法计数从100~-100周期性计数。

秒加法计数值在左边4位数码管显示,秒加法计数值在右边4位数码管显示。

通过改变SW3SW2SW1拨码开关位置改变时间常数,从而可以改变扫描显示周期,并且关注没有闪烁感的最大扫描显示周期是多少?

规定每次秒计数值更新时,要把秒的加、减计数值通过异步串行通信口COM1发送给PC机进行显示,PC机运行shiyan1a.exe,则PC机屏幕上会显示当前通信数据的帧信息图和具体数据,包括空闲、1个起始位、8个数据位、1个停止位、空闲、1个起始位、8个数据位、1个停止位、空闲,其中8个数据位是从D0开始,到D7结束。

为了提高通信效率,采用最简单的2字节报文包通信方式,命名秒的加计数值为奇字节,秒的减计数值为偶字节。

在秒计数值更新时发送奇字节,利用奇字节发送结束申请串行中断,在串行中断服务程序中发送偶字节,并且偶字节发送结束不申请串行中断。

规定波特率为19200bps,当晶体频率11.0592MHz时,用定时器T1产生波特率为

方式1和方式3波特率=

(T1溢出率)/32(1-1)

注意定时器T1应禁止溢出中断。

T1的溢出率又和它的工作方式有关,为确保波特率准确,选择T1工作在方式2——即8位时间常数自动重装,波特率的计算公式为

19200=

fosc/[32*12(256-(TH1))](1-2)

则计算结果为(TH1)=253=0xfd。

要实现STC89C52与PC机串行通信,还要求电平转换,转换后的电平要符合RS232标准,因此需要扩展电平转换电路,如图实验一图3所示。

实验一图3TTL与RS232电平转换电路

四、实验电路连线和实验原理

本实验连线实验板无需另外接线,扫描显示电路原理图如图实验一图1所示,单片机部分原理图如图实验一图2所示,RS232通信电平转换电路原理图如图实验一图3所示,只须将通信线接到PC机的COM1口。

地址译码采用线选法译码,显示段码端口地址由写信号/WR和地址线A15,显示位码端口地址由写信号/WR和地址线A14,其余地址线无效,我们假设为1。

故显示段码端口地址为0111,1111,1111,1111B,即0x7FFF,进行写操作,即可输出显示段码,锁存于U4这个8位锁存器中。

显示位码端口地址为1011,1111,1111,1111B,即0xBFFF,进行写操作,即可输出显示段码,锁存于U5这个8位锁存器中。

采用8段共阴数码管,则扫描显示需要锁存8位段码,选用74HC273芯片能够实现,其中段码的LSB位对应段A,段码的MSB位对应段H,则小数点不亮时数符0~9的段码如实验一表1所示。

程序中可以用如下方法定义端口:

#defineDisplaydataXBYTE[0x7FFF]//数码管段码锁存器端口地址

实验一表1小数点不亮时共阴数码管段码表

数符

0

1

2

3

4

5

6

7

8

9

段码

0x3f

0x06

0x5b

0x4f

0x66

0x6d

0x7d

0x07

0x7f

0x6f

可以考虑用查表的方法实现数字到段码的查表法,具体表格定义如下:

ucharcodeDisptab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

涉及到符号时,+号段码为0x00;-号段码为0x40;小数点单独控制,需要小数点的位,对应段码获得后,再或上0x80即可。

为了显示两个数,其中一个-100~100,另外一个100~-100,这里包括符号位,共计需要8个数码管,则扫描显示需要1个8位锁存器锁存8位数码公共端信息,选用SN74ABT273芯片能够实现,其中位码的LSB位对8号数码管,段码的MSB位对1号数码管,编号从1到8对应功能和位码如实验一表2所示。

实验一表2编号从1到8数码管对应功能和位码

数码管编号

显示内容

二进制位码

十六进制

M

1

加法符号位

01111111B

0x7f

7

2

加法百位

10111111B

0xbf

6

3

加法十位

11011111B

0xdf

5

4

加法个位

11101111B

0xef

4

5

减法符号位

11110111B

0xf7

3

6

减法百位

11111011B

0xfb

2

7

减法十位

11111101B

0xfd

1

8

减法个位

11111110B

0xfe

0

程序中可以用如下方法定义端口

#defineDisplaybitXBYTE[0xBFFF]//数码管位码锁存器端口地址

可以考虑用查表的方法实现扫描位控到位码的查表法,具体表格定义如下。

ucharcodeDispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共阴位码表

扫描显示中经常需要考虑每位要显示一定的时间,经常使用软件延时的方法,但这种方法不好,我们采用定时器定时的方法,在中断服务程序中执行显示操作,具体方法如下。

Displaydata=dispbuf[M];//查段码表送数显的段端口

Displaybit=Dispbit[M];//查位码表送数显的位端口

M++;//修改下一次的显示位

当晶体频率11.0592MHz时,用定时器T0并且使用方式1定时中断,每中断一次,显示1位,如果扫描显示周期为T,则8位数码管全不显示一遍,时间为T,显示一位的时间为T/8,则T0时间常数的计算方法如下:

(1-3)

当T=5ms=0.005s时,

即时间常数高字节为0xfd,低字节位0xc0,1秒需要中断次数为

(1-4)

当T=5ms=0.005s时,n=200,T为其它数据时,采用上述方法计算时间常数和中断次数。

时间常数高字节表、低字节表和1秒对应中断次数均采用表格提供,目前定义的拨码开关SW3SW2SW1无论在什么位置,均是扫描周期5ms。

ucharcodetHtab[8]={0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd};//定时器计数初值高字节表

ucharcodetLtab[8]={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0};//定时器计数初值低字节表

ucharcodesecondtab[8]={200,200,200,200,200,200,200,200};//1秒中断次数计数值表

实验装置异步串行通信发送的数据是秒加计数值和秒减计数值,PC机屏幕绘图的截屏如实验一图4所示。

其中K表示空闲,Q表示起始,D表示数据,T表示停止。

实验一图4数据为帧信息

五、实验步骤

1.计算时间常数和中断次数,扫描周期分别为22ms、23ms、24ms、25ms、26ms、27ms、500ms,求出时间常数和1秒对应中断次数,填入实验一表3中。

实验一表3时间常数和1秒对应中断次数

扫描周期

5ms

22ms

23ms

24ms

25ms

26ms

27ms

500ms

T0定时周期

0.625ms

时间常数

0xfdc0

1秒对应

中断次数

200

2.编辑源程序,参考程序中的时间常数高字节表、低字节表和1秒对应中断次数均是5ms扫描周期的数据,利用计算好的实验一表3的数据,修改参考程序中的时间常数高字节表、低字节表和1秒对应中断次数。

3.用Keil集成开发环境建工程,然后编译该程序,得后缀名.HEX的可执行程序。

4.利用标准串行通信电缆从微机的COM1口连接到51SKJXSJ单板线路板的DB9插座,运行Ver:

2.9Beta5测试版STC-ISP.EXE,选择单片机型号:

STC89C52RC,打开你编译产生的HEX后缀名的文件,由于是晶体是24MHz,点击fullgain,点击下载按钮再MCU上电复位-冷启动(插上AC/DC开关型模块电源),这时会在下面窗口显示一些提示信息,正常在编程结束时在51SKJXSJ单板上扫描显示2个秒计数值,并且每秒钟会改变秒计时。

5.PC机上运行shiyan1a.exe。

6.给实验装置断电,依次设置SW3SW2SW1拨码开关位置,具体如实验一表4,其中首次OFF、OFF、OFF,每次设置后通电。

实验一表4SW3SW2SW1拨码开关与扫描周期的关系

查表偏移量

SW3

SW2

SW1

扫描周期(s)

有无闪烁感

7

OFF

OFF

OFF

0.5

6

OFF

OFF

ON

0.027

5

OFF

ON

OFF

0.026

4

OFF

ON

ON

0.025

3

ON

OFF

OFF

0.024

2

ON

OFF

ON

0.023

1

ON

ON

OFF

0.022

0

ON

ON

ON

0.005

7.观察实验装置数码管有无闪烁感,并且记录在实验一表4中。

8.观察PC机屏幕绘制的串行通信帧信息,用手机照两幅照片。

9.根据控制盒硬件平台(参考原理图1-2和图1-5,注意晶体是24MHz),利用8个数码管显示——即2个四位1组的数码管扫描显示,2个单独的数码管不显示,且实验一表3中的500ms改为250ms,设计程序,重做步骤2-步骤8。

10.如果改为10个数码管,2个单独的数码管仅做符号显示,2个四位1组的数码管各显示3位整数1位小数,每0.1秒进行一次加法计数和减法计数,实验一表3中扫描周期500ms改成50ms,又如何改造程序?

11.完成老师额外的要求。

六、实验报告

1.写出定量计算时间常数的方法,列写实验一表3的实验数据。

2.列写实验一表4的实验数据,没有闪烁感的最大扫描显示周期是多少?

3.贴上手机照片打印图2张,分析每幅照片通信数据帧格式。

4.绘图说明扫描显示规律。

5.画出主程序框图和定时中断服务程序框图。

七、预习要求

1.复习定时器、异步通信及中断有关知识;

2.复习扫描显示的有关软、硬件有关知识;

3.预习实验内容,看懂线路和参考程序。

4.按照控制盒的硬件原理图(重点参考原理图1-2和1-5)编写步骤9、步骤10和步骤11的程序,尤其注意单片机外接的晶体是24MHz。

八、参考程序

//SW1~SW8连P1^0~P1^7,ON位逻辑0,OFF为逻辑1

//SW3SW2SW1:

000=5ms;001=22ms;010=23ms;011=24ms;100=25ms;101=26ms;110=27ms;111=500ms

#include

#include

#defineucharunsignedchar//无符号字符型变量新表示方法定义

#defineuintunsignedint//无符号整型变量新表示方法定义

#defineDisplaydataXBYTE[0x7FFF]//数码管段码锁存器端口地址

#defineDisplaybitXBYTE[0xBFFF]//数码管位码锁存器端口地址

bitnew_cycle_flag=0;//有新采样数据位标志定义(1是有新数据)

chardispbuf[8];//显示缓冲区字符型数组定义

intAx_r1,Ax_m1,Ax;//给定量角度、反馈量角度整数定义

ucharM=0;//扫描显示位计数变量定义

ucharcounter_ms_s;//1秒中断次数计数器

ucharcodetHtab[8]={0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2