测控技术实验报告Word文档下载推荐.docx

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

测控技术实验报告Word文档下载推荐.docx

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

测控技术实验报告Word文档下载推荐.docx

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

波特率

振荡频率

SMOD

TIMER

C/T

模式

自动装入

4800

12M

1

2

0F3H

2400

1200

0F6H

19200

11.0592M

0FDH

9600

0FAH

0F4H

0E8H

五.实验程序

程序功能说明:

该程序的功能是将PC机中发来的数据接收之后又发送出来,在PC机端则在接收之后在窗口中显示。

源程序清单:

AJMPSTART;

设置主程序地址

ORG30H

START:

MOVSP,#60H;

设置SP的值

MOVTH1,#0FeH;

设置波特率为9600

MOVTL1,#0FeH

MOVTMOD,#00100000B;

选择计时器1方式2产生波特率

MOVIE,#00H;

禁止所有的中断,采用查询方式

MOVSCON,#01010000B;

设置串口为方式1,接收允许

SETBTR1;

启动定时器1

AGAIN:

ACALLIN;

接收字符子程序

ACALLOUT;

回送字符子程序

AJMPAGAIN;

循环

out:

movsbuf,a;

发送字符子程序

wait:

jbcti,end1;

发送完毕返回

sjmpwait;

否则等待TI=1

end1:

ret

in:

jbcri,end2;

接收到字符(RI=1)时启动接收

sjmpin;

否则查询是否接收到字符

end2:

mova,sbuf;

启动接收

ret

END;

程序结束

程序清单(C51):

#include<

reg51.h>

#include<

intrins.h>

typedefunsignedcharByte;

BytedataAA;

voidOUT(void)

{

SBUF=AA;

/*发送字符子程序*/

if(TI==1)

{

TI=0;

gotoend1;

}/*发送完毕返回*/

gotowait;

/*否则等待TI=1*/

_nop_();

}

voidIN(void)

in1:

if(RI==1)

RI=0;

gotoend2;

}/*接收到字符(RI=1)时启动接收*/

gotoin1;

/*否则查询是否接收到字符*/

end2:

AA=SBUF;

/*启动接收*/

voidmain(void)

TH1=0xF3;

/*设置波特率为2400*/

TL1=0xF3;

TMOD=0x20;

/*选择计时器1方式2产生波特率*/

IE=0;

/*禁止所有的中断,采用查询方式*/

SCON=0x50;

/*设置串口为方式1,接收允许*/

TR1=1;

/*启动定时器1*/

IN();

/*接收字符子程序*/

OUT();

/*回送字符子程序*/

gotoAGAIN;

/*循环*/

实验三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工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。

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

四.实验程序

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

//开定时器1

while

(1);

//死循环

voidtime1()interrupt1using2

EA=0;

//关总中断

TR0=0;

//关定时器0

TR1=0;

//关计数器1

f=TL1+TH1*256;

//把数字构成16位的

f0=f*2;

//频率的计算公式

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

//定时器T0高八位初值X16位

//定时器TO低八位初值X16位

//计数器高八位初值

//计数器低八位初值

////打开定时器T0的运行开关

//开总中断

//开定时器0

//开计数器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):

//调用C51的头文件

/*在程序中用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)//定义主函数

{

_nop_();

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

P1=0xDB;

/*11011011处于无效状态*/;

TIMER=50;

/*计时器初值*/

START_DELAY:

TIMER1=255;

/*开延时*/

START_DELAY1:

TIMER1--;

if(TIMER1>

0)//如果TIMER1>

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*/

/*CALLSEND*/

DATA_OUT=0x81;

/*MOVDATA_OUT,#10000001B*/

DATA_OUT=TEN;

/*MOVDATA_OUT,TEN*/

DATA_OUT=0x80;

/*MOVDATA_OUT,#10000000B*/

DATA_OUT=BB;

/*MOVDATA_OUT,B*/

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--;

/*延时循环自减一*/

0)

gotoDELAY_LOOP;

}/*RET*/

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

TIMER=4;

/*MOVTIMER,#4;

/*计数初值为4*/

DELAY_LOOP1:

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*/

//BIT_COUNT自减1

if(BIT_COUNT>

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

gotoRECEIVE_LOOP;

/*CLRDAT*/

标题:

数码管的显示

效果:

静态显示一位数码管,显示0-9

#include"

reg51.h"

//头文件:

unsignedchartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//变量定义:

表:

共阳数码管0有效依次显示0-9共十个数

sbitSMG1=P1^0;

///引脚定义:

定义数码管阳级控制脚,第一个为P1口的0

sbitSMG2=P1^1;

//定义数码管阳级控制脚,第二个为P1口的1

voiddelay(unsignedintd_time);

//函数声明:

//延时子函时,

voidmain(void)//主函数,C语言的入口函数:

unsignedchari;

//定义循环变量

while

(1)

{SMG1=0;

//@@@选择第一位数码管,这是静态显示,P0口输出显示,不需要刷新,也可选择第二位SMG2=0;

也可两位同时输出显示

for(i=0;

i<

10;

i++)//循环显示0-9

{

P0=table[i];

//查表输出数码管段值给P0口,显示相应的0-9

delay(500);

//延时

}

voiddelay(unsignedinttmp)//延时子函数,参数范围0-65536

{unsignedcharj;

while(tmp--)

{

j=255;

while(j--);

实验六电机调速控制实验

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

二.实验目的

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

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

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

三.实验电路

4.实验程序

//调用C51的头文件

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

sbitPAA=P1^0;

//定义位变量PAA为P1^0

voidDelayXms()//定义延时函数

inti,j;

for(i=0;

count;

i++)

for(j=0;

j<

100;

j++)

voidmain(void)//定义主函数

P1=0x0;

//使P1口8个脚都输出低电平

while

(1)

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

当前位置:首页 > 小学教育 > 数学

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

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