智能仪表实验.docx

上传人:b****4 文档编号:3685365 上传时间:2022-11-24 格式:DOCX 页数:19 大小:247.06KB
下载 相关 举报
智能仪表实验.docx_第1页
第1页 / 共19页
智能仪表实验.docx_第2页
第2页 / 共19页
智能仪表实验.docx_第3页
第3页 / 共19页
智能仪表实验.docx_第4页
第4页 / 共19页
智能仪表实验.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

智能仪表实验.docx

《智能仪表实验.docx》由会员分享,可在线阅读,更多相关《智能仪表实验.docx(19页珍藏版)》请在冰豆网上搜索。

智能仪表实验.docx

智能仪表实验

智能仪表实验

实验一:

LED显示实验

实验程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitD1=P1^0;

sbitD2=P1^1;

sbitD3=P1^2;

sbitD4=P1^3;

sbitD5=P1^4;

sbitD6=P1^5;

sbitD7=P1^6;

voidDelay1ms()//@12.000MHz

{

unsignedchari,j;

i=2;

j=239;

do

{

while(--j);

}while(--i);

}

voidDelayNms(uintx)//@12.000MHz

{

uinti;

for(i=0;i

Delay1ms();

}

voidmain()

{

while

(1)

{

P1=0X88;//D0,D1,D2,D4,D5,D6亮,显示0

DelayNms(1000);

P1=0XDB;//D2,D5亮,显示1

DelayNms(1000);

P1=0XA2;//D0,D2,D3,D4,D6亮,显示2

DelayNms(1000);

P1=0X92;//D0,D2,D3,D5,D6亮,显示3

DelayNms(1000);

P1=0XD1;//D1,D2,D3,D5亮,显示4

DelayNms(1000);

P1=0X94;//D0,D1,D3,D5,D6亮,显示5

DelayNms(1000);

P1=0X85;//D1,D3,D4,D5,D6亮,显示6

DelayNms(1000);

P1=0XDA;//D0,D2,D5亮,显示7

DelayNms(1000);

P1=0X80;//D0,D1,D2,D3,D4,D5,D6亮,显示8

DelayNms(1000);

P1=0X90;//D0,D1,D2,D3,D5,D6亮,显示9

DelayNms(1000);

}

}

实验二:

A/D转换实验:

实验程序:

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharADCDat[3];

//ucharbdataADCbase_at_0x2f;

sbitADC=PSW^5;

sbitCOM=P3^1;

voidTran()

{

ucharDat;

Dat=ADCDat[0];

if((Dat&0x40)==0x40)

{

P1=0xFF;P2=0xFF;P3|=0XF0;

return;

}

if((Dat&0x20)==0x20)

{

P1=0x00;P2=0x00;P3|=0X0F;

return;

}

if((Dat&0x80)==0x80)COM=0;

elseCOM=1;

Dat=_crol_(ADCDat[0],4);

Dat=Dat&0xf0;P3&=0X0f;P3|=Dat;

P1=ADCDat[1];P2=ADCDat[2];

return;

}

voidmain()

{

//ADCDat=0x20;

P0=0x0FF;TCON=0x01;IE=0x81;

while

(1)

{

//if(ADC==1)

//{

//ADC=0;Tran();

//}

}

}

voidint0()interrupt0using1

{

ucharDat1;

IE=0x00;

Dat1=P0;

if((Dat1&0xf0)==0)

{

Dat1=_crol_((Dat1&0x0f),4);

ADCDat[0]=(Dat1&0xe0)|(_crol_(Dat1,4))&0x01;

doDat1=P0;

while((Dat1&0x80)==0);

ADCDat[1]=_crol_((Dat1&0x0f),4);

doDat1=P0;

while((Dat1&0x40)==0);

Dat1=Dat1&0x0f;

ADCDat[1]=ADCDat[1]|Dat1;

doDat1=P0;

while((Dat1&0x20)==0);

ADCDat[2]=_crol_((Dat1&0x0f),4);

doDat1=P0;

while((Dat1&0x10)==0);

Dat1=Dat1&0x0f;

ADCDat[2]=ADCDat[2]|Dat1;

ADC=1;

}Tran();

IE=0x81;

}

实验三:

D/A转换实验

实验程序:

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodesine_table[]={0x80,0x8c,0x98,0xa5,0xb0,0xbc,0xc7,0xd1,

0xda,0xe2,0xea,0xf0,0xf6,0xfa,0xfd,0xff,

0xff,0xff,0xfd,0xfa,0xf6,0xf0,0xea,0xe3,

0xda,0xd1,0xc7,0xbc,0xb1,0xa5,0x99,0x8c,

0x80,0x73,0x67,0x5b,0x4f,0x43,0x39,0x2e,

0x25,0x1d,0x15,0xf,0x9,0x5,0x2,0x0,0x0,

0x0,0x2,0x5,0x9,0xe,0x15,0x1c,0x25,0x2e,

0x38,0x43,0x4e,0x5a,0x66,0x73};

sbitK1=P2^7;

sbitWR1=P2^5;

voidDelay(ucharx)

{

uchari;

while(--x)for(i=0;i<1;i++);

}

voidmain()

{

uchark;

while

(1)

{

if(K1==0)

{

for(k=0;k<64;k++)

{

WR1=1;

P0=sine_table[k];

WR1=0;

Delay

(1);

}

}

else

{

for(k=0;k<255;k=k+4)

{

WR1=1;

P0=sine_table[k];

WR1=0;

Delay

(1);

}

}

}

}

实验四:

步进电机实验

实验程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeFFW[]={0X03,0X02,0X06,0X04,0X0C,0X08,0X09,0X01,};

ucharcodeREV[]={0X01,0X09,0X08,0X0C,0X04,0X06,0X02,0X03,};

sbitK1=P3^0;

sbitK2=P3^1;

sbitK3=P3^2;

voiddelay_ms(uintx)

{

uchart;

while(x--)

for(t=0;t<120;t++);

}

voidSTEP_MOTOR_FFW(ucharn)

{

uchari,j;

for(i=0;i<1*n;i++)

{

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

{

if(K3==0)break;

P1=FFW[j];

delay_ms(200);

}

}

}

voidSTEP_MOTOR_REV(ucharn)

{

uchari,j;

for(i=0;i<1*n;i++)

{

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

{

if(K3==0)break;

P1=REV[j];

delay_ms(200);

}

}

}

voidmain()

{

ucharn=3;

while

(1)

{

if(K1==0)

{

P0=0XFE;

STEP_MOTOR_FFW(n);

//if(K3==0)break;

}

elseif(K2==0)

{

P0=0XFD;

STEP_MOTOR_REV(n);

//if(K3==0)break;

}

else

{

P0=0XFb;

//P1=0X03;

}

}

}

实验五、六:

热电阻测温装置

实验程序:

#include

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitCS=P3^3;//使能。

sbitCLK=P3^0;//时钟

sbitDO=P3^1;//数据输出

sbitDI=P3^1;//数据输入

charCC[]="11001001";

uchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

ucharcodetab2[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchartemp;

uintvvv,i;

uinttem;

//通道的选择:

0x02就是单通道0;0x03就是单通道1;

//0x00就是双通道ch0="+";ch0="-"

//0x01就是双通道ch0="-";ch0="+"

voiddelay(inttt)//延时

{

while(tt--)

{for(i=0;i<120;i++);}

}

voidstartADC()

{

CS=1;

_nop_();

_nop_();

CLK=0;

_nop_();

_nop_();

CS=0;

_nop_();

_nop_();

DI=1;

_nop_();

_nop_();

CLK=1;

_nop_();

_nop_();

DI=0;

_nop_();

_nop_();

CLK=0;

_nop_();

_nop_();

}

voidchoiceADC(uintCH)//CH为0选择通道ch0,为1,选择ch1进行AD转换

{

startADC();

if(CH==0)

{

DI=1;

_nop_();

CLK=1;//上升沿DI=1

_nop_();

CLK=0;//1个下降沿DI=1

_nop_();

DI=0;

_nop_();

CLK=1;

_nop_();

CLK=0;//第3个上升沿DI=0

_nop_();

}

else

{

CLK=0;

_nop_();

DI=1;

_nop_();

CLK=1;//上升沿DI=1

_nop_();

CLK=0;//1个下降沿DI=1

_nop_();

DI=1;

_nop_();

CLK=1;//第3个上升沿DI=0

_nop_();

}

/********通道选择结束开始读取转换后的二进制数****/

CLK=1;

_nop_();

CLK=0;//下降沿读数,一下进行判断和处理,共8次

for(i=0;i<8;i++)

{

DI=1;

if(DO)

{

temp|=0x01;

}

else

{

temp&=0xfe;

}

CLK=0;

_nop_();

CLK=1;

temp=temp<<1;

}

vvv=temp;

}

voiddisplay(uintdat)

{

P2=0xfb;

//P0=tab2[dat/100];

P0=(dat/100);

delay

(1);

//P0=0xff;

P2=0xfd;

//P0=tab2[dat%100/10];

P0=(dat%100/10);

delay

(1);

//P0=0xff;

P2=0xfe;

//P0=tab2[dat%10];

P0=(dat%10);

delay

(1);

//P0=0xff;

}

voidmain()

{

P2=0x00;

P0=0xff;

while

(1)

{

choiceADC(0);

delay

(1);

tem=29013-100*sqrt(336701-(longint)(785012*vvv/10000)+578)/2;

display(tem);

//display(vvv);

}

}

实验七:

串口通信实验

实验程序:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharrb[101];

ucharbi=0;

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

ucharcodeLEDTABVCC[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};

voiddelay(ucharm)

{

uchari;

while(--m)

for(i=0;i<120;i++);

}

voidmain()

{

uchari,a;

P0=0Xff;

rb[0]=0x0a;

SCON=0X50;

TMOD=0X20;

TH1=0XFD;

TL1=0XFD;

PCON=0X00;

IE=0X91;

IT0=1;

IP=0X01;

TR1=1;

while

(1)

{P2=0X01;

for(i=0;i<6;i++)

{if(i==0)P2=0X01;

if(rb[i]==0x0a)

break;

P0=LEDTABVCC[rb[i]];

delay(10);

//i++;

P2=_crol_(P2,1);

//P2=a;

}

//P0=0X00;

bi=0;

}

}

voiduart()interrupt4

{

ucharc;

if(RI==0)

return;

RI=0;

c=SBUF;

if(c>='0'&&c<='9')

{

rb[bi]=c-'0';

rb[bi+1]=0x0a;

bi=(bi+1)%100;

}

}

voidex0()interrupt0

{

uchar*s="单片机与串口调试助手之间的通信!

\r\n";

uchari=0;

while(s[i]!

='\0')

{

SBUF=s[i];

while(TI==0);

TI=0;

i++;

}

}

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

当前位置:首页 > 求职职场 > 简历

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

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