测控技术实验报告.docx

上传人:b****5 文档编号:29544232 上传时间:2023-07-24 格式:DOCX 页数:27 大小:309.87KB
下载 相关 举报
测控技术实验报告.docx_第1页
第1页 / 共27页
测控技术实验报告.docx_第2页
第2页 / 共27页
测控技术实验报告.docx_第3页
第3页 / 共27页
测控技术实验报告.docx_第4页
第4页 / 共27页
测控技术实验报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

测控技术实验报告.docx

《测控技术实验报告.docx》由会员分享,可在线阅读,更多相关《测控技术实验报告.docx(27页珍藏版)》请在冰豆网上搜索。

测控技术实验报告.docx

测控技术实验报告

实验一单片机程序设计基础

1.实验设备

硬件使用的是单片机SS-8051高级单片机实验仪,软件使用的是Keiluv2软件开发环境。

2.实验目的

熟悉单片机的调试环境与指令系统

3.实验内容

自编一个汇编小程序,使用Keiluv2软件开发环境,进行编译、调试、运行程序。

Keiluv2操作流程的简单说明:

1.NEWPROJECT↙,建一个新的项目,取项目名并存于F:

盘下(最好在F盘下建一个自己的文件夹)。

在出现的对话框中选Atmel/AT89c51芯片型号;或者可以从File/devicesdatabase的对话框中选择芯片型号。

2.FILE/NEW↙,建立一个新文件,在打开的窗口下输入程序,取文件名并存盘。

3.选中SourceGroup1点击鼠标右键,在出现的菜单中选中AddFilestoGroup`SourceGroup1`,将文件加入到项目中。

4.选中Target1点击鼠标右键,在出现的菜单中选中OptionsforTarget`Target1`:

●在出现的对话框中打开output项的对话框,选中`GreatHEXFile`,以保证编译时能生成.HEX文件,为后续下载程序做准备。

●在出现的对话框中打开debug项的对话框,选中`Use`,选Keilmonitor51driver。

选人、Runtomain()。

5.Project/Buildtarget或Rebuildalltargetfiles,编译所输入的程序,检查语法错误,更改错误直至无错为止。

6.Debug/‘Start/StopDebugSession’↙,开始调试程序,检查逻辑错误。

4.实验过程

程序:

ORG00H

MOVA,3AH

ADDA,01H

END

运算结果:

3BH

 

1.新建工程,选取8051芯片如下图

2.新建文件,存盘并加入项目中。

如下

3.选中Target1点击鼠标右键,在出现的菜单中选中OptionsforTarget`Target1`:

4.调试程序直至无错为止。

实验二51单片机的串行通信实验

一.实验内容

连线并编制程序,完成单片机与PC机通信的功能。

二.实验目的

1.了解单片机串口通信的基本功能;

2.了解单片机与PC机串口通信的硬件接口电路;

3.学会单片机和PC机串口程序的编制和调试。

三.实验电路

四.常用的各种波特率设置表

波特率

振荡频率

SMOD

TIMER

C/T

模式

自动装入

4800

12M

1

0

2

0F3H

2400

12M

0

0

2

0F3H

1200

12M

1

0

2

0F6H

19200

11.0592M

1

0

2

0FDH

9600

11.0592M

0

0

2

0FDH

4800

11.0592M

0

0

2

0FAH

2400

11.0592M

0

0

2

0F4H

1200

11.0592M

0

0

2

0E8H

五.实验程序

 

实验三V/F转换电路实验

1、实验内容

V/F转换电路的调试。

2、实验要求

1、在了解LM331工作原理(转换原理)的基础上,考虑以下几个问题:

输入电压范围;输出频率范围;输入和输出间的对应关系。

2、调试电路,直至V/F转换器可以正确输出波形。

如果V/F转换器没有输出或输出波形不理想,请分析查找原因,并将波形调至等占空比。

3、用示波器、频率计等工具观察V/F转换器的输出波形,观察定标调整环节W1,W2和W3对波形的影响。

4、通过实测数据分析V/F转换器的线性,画出实际的V、F对应关系。

3、实验电路图

 

实验四V/F转换的数据采集

一.实验内容

连线并编制程序:

使用定时器和计数器完成LM331脉冲输出信号的采集功能,对采集的数据进行处理,最终得到频率值。

二.实验目的

定时器中断的使用;

学习定时器中断间隔时间的计算;

掌握计数器的使用方法;

学习中断处理程序的编程方法。

三.原理简述

1.定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/12。

本实验中时钟频率为12M,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔0.05秒产生一次中断,CPU响应中断后R0中计数值减一,令(R0)=14H,即可实现1秒的延时,

时间常数可按下法确定:

机器周期=12/晶振频率=12/12=1uS

定时器需设初值为X,则(2^16—X)*1=50000uS

求出X=15536

化为十六进制:

X=3CB0H,故初始值为:

TH1=3CH,TL1=B0H。

2.初始化程序

包括定时器初始化和中断系统初始化,主要对IP,IE,TCON,TMOD的相应位进行正确的设置,并将时间常数送入定时器中。

由于只有定时器中断,IP不必设置。

注意一点:

定时器1初始化时建议用如下的指令:

ANLTMOD,#0FH

ORLTMOD,#10H

3.设计中断服务程序和主程序

中断服务程序除了要完成计数减1工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。

主程序则对计数器的数值进行处理,转换成频率值。

四.实验程序

#include

#include

intf,f0;

voidmain()

{

TMOD=0X51;//T1是计数器且工作在方式2下8位计数器,T0是定时器且工作在方式1下16位定时器

TH0=0X9E;//定时器T0高八位初值X16位

TL0=0X58;//定时器TO低八位初值X16位

TH1=0X00;//计数器高八位初值

TL1=0X00;//计数器低八位初值

ET0=1;//打开定时器T0的运行开关

EA=1;//开总中断

TR0=1;//开定时器0

TR1=1;//开定时器1

while

(1);//死循环

}

voidtime1()interrupt1using2

{

EA=0;//关总中断

TR0=0;//关定时器0

TR1=0;//关计数器1

f=TL1+TH1*256;//把数字构成16位的

f0=f*2;//频率的计算公式

TMOD=0X51;//01010001T1是计数器且工作在方式2下8位计数器,T0是定时器且工作在方式1下16位定时器

TH0=0X9E;//定时器T0高八位初值X16位

TL0=0X58;//定时器TO低八位初值X16位

TH1=0X00;//计数器高八位初值

TL1=0X00;//计数器低八位初值

ET0=1;////打开定时器T0的运行开关

EA=1;//开总中断

TR0=1;//开定时器0

TR1=1;//开计数器1

}

实验五7279键盘显示控制实验

一.实验题目

连线并编制程序,将HD7279A的全部编码送HD7279A显示,以一秒钟为间隔显示下一位,以前的显示内容左移。

二.实验目的

1.了解HD7279A键盘显示芯片的基本应用;

2.掌握HD7279A键盘显示芯片的接口电路及编程方法。

三.原理简述

1.HD7279A是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。

2.HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外还有多种控制命令,如消隐、闪烁、左移、右移、段寻址等。

命令的具体形式可查阅HD7279A相关的技术资料。

四.实验电路

注意:

另外,在实验之前,应将8单元的U7(7406)和U6(74LS245)芯片取下,因7279已经有直接驱动数码管的能力,如果另外放置驱动芯片,反而会影响数码管的显示效果。

五.实验程序

//程序清单(C51):

#include//调用C51的头文件

#include

typedefunsignedcharByte;/*在程序中用BYTE代替unsignedchar了,这只是为了编写代码的方便而已!

BYTE在这里还是一个类型,并不是一个变量,里面没有存储东西。

*/

bdataByteBIT_COUNT,TIMER,TIMER1,TEN,DATA_IN,DATA_OUT,AA,BB;/*位变量BIT_COUNT,TIMER,TIMER1,TEN,DATA_IN,DATA_OUT,AA,BB被定义为bdata存储类型,编译时编译器将把该变量定位在51单片机片内数据存储区(RAM)中的位寻址区(地址:

20H----2FH)*/

sbitdata_in0=DATA_IN^0;//定义IN口第0位为data_in0

sbitdata_out7=DATA_OUT^7;//定义out口第7位为data_out7

sbitDAT=P1^2;/*HD7279A的DATA连接于P1.2*/

sbitKEY=P1^3;/*HD7279A的KEY连接于P1.3*/

sbitCS=P1^4;/*HD7279A的CS连接于P1.4*/

sbitCLK=P1^5;/*HD7279A的CLK连接于P1.5*/

voidSEND(void);//调用SEND(void)函数

voidLONG_DELAY(void);//调用LONG_DELAY(void)函数

voidSHORT_DELAY(void);//调用SHORT_DELAY(void)函数

voidRECEIVE(void);//调用RECEIVE(void)函数

voidmain(void)//定义主函数

{

START:

_nop_();/*空操作,就是不进行任何操作的延时,作用一般就是用作延时用*/

P1=0xDB;/*11011011处于无效状态*/;

TIMER=50;/*计时器初值*/

START_DELAY:

TIMER1=255;/*开延时*/

START_DELAY1:

TIMER1--;/*开延时*/

if(TIMER1>0)//如果TIMER1>0

gotoSTART_DELAY1;//跳至START_DELAY1

TIMER--;//计时器自减1

if(TIMER>0)//判断计时器的值是否大于0,使进START_DELAY

gotoSTART_DELAY;

DATA_OUT=0xA4;

SEND();/*发送*/

CS=1;/*片选无效*/

MAIN1:

if(KEY==1)

gotoMAIN1;/*键没有按下,循环*/

DATA_OUT=0x15;/*将00010101赋值给DATA_OUT*/

SEND();/*发送*/

RECEIVE();/*接收*/

CS=1;/*片选无效*/

AA=DATA_IN;/*把输入数据复制给AA*/

if(AA==6)BB=1;/*数码管显示00000110*/

if(AA==5)BB=2;/*00000101*/

if(AA==4)BB=3;/*00000100*/

if(AA==14)BB=4;/*00010100*/

if(AA==13)BB=5;/*00010011*/

if(AA==12)BB=6;/*00010010*/

if(AA==22)BB=7;/*00100010*/

if(AA==21)BB=8;/*00100001*/

if(AA==20)BB=9;/*00100000*/

if(AA==30)BB=11;/*00110000*/

if(AA==29)BB=0;/*00101001*/

if(AA==28)BB=12;/*00101000*/

TEN=0;/*MOVTEN,A*/

DATA_OUT=0xA1;/*MOVDATA_OUT,#10100001B*/

SEND();/*CALLSEND*/

DATA_OUT=0xA1;/*MOVDATA_OUT,#10100001B*/

SEND();/*CALLSEND*/

DATA_OUT=0x81;/*MOVDATA_OUT,#10000001B*/

SEND();/*CALLSEND*/

DATA_OUT=TEN;/*MOVDATA_OUT,TEN*/

SEND();/*CALLSEND*/

DATA_OUT=0x80;/*MOVDATA_OUT,#10000000B*/

SEND();/*CALLSEND*/

DATA_OUT=BB;/*MOVDATA_OUT,B*/

SEND();/*CALLSEND*/

CS=1;/*片选无效*/

WAIT:

if(KEY==0)/*有键按下*/

gotoWAIT;/*跳到WAIT函数*/

gotoMAIN1;/*跳到WAIT1函数*/

}

voidSEND(void)/*定义SEND(void)函数*/

{

BIT_COUNT=8;/*位数为8*/

CS=0;/*片选有效*/

LONG_DELAY();/*长延时*/

SEND_LOOP:

CY=data_out7;/*将data_out7赋值给cy,为进位的位,cy复位即cy=0*/

DAT=CY;/*将进位赋值给DAT*/

CLK=1;/*时钟高电平,它变成高电平以后,HD7279延时T6才输出数据*/

AA=DATA_OUT;/*将输出数据复制给AA*/

AA=_crol_(AA,1);/*循环左移*/

DATA_OUT=AA;/*将左移后的数据输出*/

SHORT_DELAY();/*短延时*/

CLK=0;/*CLK变低电平*/

SHORT_DELAY;/*延时T7*/

BIT_COUNT--;/*位数自减一*/

if(BIT_COUNT>0)/*判断位数是不是>0*/

gotoSEND_LOOP;/*DJNZ/*跳至SEND_LOOP*/BIT_COUNT,SEND_LOOP;/**/

DAT=0;/**/

}

voidLONG_DELAY(void)/*定义长延时函数*/

{

TIMER=25;/*计数初值25*/

DELAY_LOOP:

TIMER--;/*延时循环自减一*/

if(TIMER>0)

gotoDELAY_LOOP;

}/*RET*/

voidSHORT_DELAY(void)/*定义短延时函数*/

{

TIMER=4;/*MOVTIMER,#4;/*计数初值为4*/

DELAY_LOOP1:

TIMER--;/*延时循环自减一*/

if(TIMER>0)/**/

gotoDELAY_LOOP1;/*跳至DELAY_LOOP1*/

}

voidRECEIVE(void)/*定义RECEIVE(void)函数*/

{

BIT_COUNT=8;/*MOVBIT_COUNT,#8*/

DAT=1;/*SETBDAT*/

LONG_DELAY();/*CALLLONG_DELAY*/

RECEIVE_LOOP:

CLK=1;/*SETBCLK*/

SHORT_DELAY();/*CALLSHORT_DELAY*/

AA=DATA_IN;/*MOVA,DATA_IN*/

AA=_crol_(AA,1);/*RLAA*/

DATA_IN=AA;/*MOVDATA_IN,A*/

CY=DAT;/*MOVC,DAT*/

data_in0=CY;/*MOVDATA_IN.0,C*/

CLK=0;/*CLRCLK*/

SHORT_DELAY();/*CALLSHORT_DELAY*/

BIT_COUNT--;//BIT_COUNT自减1

if(BIT_COUNT>0)//BIT_COUNT判断是否〉0,若是进入循环ECEIVE_LOOP

gotoRECEIVE_LOOP;

DAT=0;/*CLRDAT*/

}

实验六电机调速控制实验

一.实验内容

连线并编制程序,产生脉冲信号,控制直流电动机的运行。

二.实验目的

掌握采用单片机控制直流电动机的硬件接口技术。

掌握直流电动机驱动程序的设计与调试方法。

熟悉直流电动机的工作特性。

三.实验电路

4.实验程序

#include//调用C51的头文件

typedefunsignedcharByte;//typedef定义可以在程序中用BYTE代替unsignedchar

sbitPAA=P1^0;//定义位变量PAA为P1^0

voidDelayXms()//定义延时函数

{

inti,j;

for(i=0;i

for(j=0;j<100;j++)

}

voidmain(void)//定义主函数

{

P1=0x0;//使P1口8个脚都输出低电平

while

(1)//循环

{PAA=0;//产生矩形方波

DelayXms(10);

PAA=1;

DelayXms(10);

}

}

 

实验七模/数转换实验

一.实验内容:

利用实验台上的ADC0809做A/D转换器,实验台上的电源和地提供模拟量输入,编制程序,将模拟量转换成数字量,用发光二极管显示。

二.实验目的:

1.掌握A/D转换与单片机的接口方法。

2.了解A/D芯片ADC0809转换性能及编程方法。

3.通过实验了解单片机如何进行数据采集。

三.实验原理简述:

A/D转换器大致有三类:

一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。

实验用的ADC0809属于第二类,是八位A/D转换器。

每采集一次需100uS。

ADC0809START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。

实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换。

故启动A/D转换只需如下两条指令:

MOVDPTR,#00H

MOVX@DPTR,A

A中为何内容是不重要的,这是一次虚拟写。

中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031INTO相接。

中断处理程序中,使用如下指令即可读取A/D转换结果:

MOVDPTR,#00H

MOVXA,@DPTR

4.实验原理图:

●Enable:

输出允许信号位

5.程序框图:

这里给出软件延时方法的程序框图和程序:

6.实验程序

#include

#include//调用C51的头文件

#defineaddXBYTE[0x800]//宏定义将add定义为XBYTE[0x800]

voiddelay(intc)//延时子程序

{inti,j;

for(i=0;i

for(j=0;j<100;j++);

}

voidmain()

{

chark;//定义字符型变量K

while

(1)//死循环

{add=0x0;//通道至0

delay(50);//延时

k=add;//将add赋值给K

P1=~k;//取反并赋给P1口

}

}

实验八微型打印机接口控制实验

一.实验内容:

将实验仪接上微型打印机,控制打印机打印出各种效果的汉字和字符。

二.实验目的:

了解微型打印机接口及其打印字符的方法;

了解微型打印机打印汉字的方法;

了解单片机与微型打印机的连线方法。

三.有关说明:

并行接口连接

接口与引脚定义:

本系列打印机并口与CENTRONICS兼容,支持BUSY/ACK握手协议,接口插座如下图:

并行接口各引脚信号的定义如下图表所示:

注:

1.“入”表示输入到打印机。

2.“出”表示从打印机输出。

3.信号的逻辑电平为TTL电平。

并行接口引脚信号时序

并口时序如下图所示:

 

四.实验电路:

五.实验程序

//北京炜煌科技打印机示例程序

//NockyTian

//2007-07-17

#include

//Hardwareconfiguration

#definePRINTER_DATAP0//定义打印机数据线端口

sbitBUSY=P3^2;//定义打印机忙信号引脚

sbitnSTB=P3^7;//定义打印机nSTB信号引脚

sbitPE=P3^3;//定义打印机纸状态检测信号引脚

sbitnACK=P3^2;//定义打印机应答信号引脚

sbitnERR=P3^1;//定义打印机错误检测信号引脚

sbitnSEL=P3^0;//定义打印机在线检测信号引脚

#defineCR0x0d

#defineLF0x0a

voidPrintByte(unsignedcharbyte_data);

voidPrintString(char*str);

voidPrintByteN(unsignedchar*data_src,unsignedcharN);

voidmain(void)

{

charstr[]="Printerdemo";

PrintString("北京炜煌WH");

PrintByte(CR);

while

(1);

}

/*PrintByte()

*Sendabytetoprinter

*NockyTian@2006-7-17

*/

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1