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

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

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

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

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

单片机,是一种微型计算机,能够通过多种形式的借口使其内部程序对外部工作电路进行有效的控制。

四、电气连接图

五、系统连线图

六、程序设计

1#include<

Reg52.h>

2#include<

intrins.h>

3#include<

absacc.h>

4

5#define_HI1

6#define_LOW0

7#define_on1

8#define_off0

9

10#defineint_EX00//外部中断0

11#defineint_T01//定时器0中断

12#defineint_EX12//外部中断1

13#defineint_T13//定时器1中断

14#defineint_ES4//串行口可中断

15#defineint_ET25//8052定时器2中断

16

17#defineucharunsignedchar

18#defineuintunsignedint

19

20

21sbitTXC=P3^5;

//MAX485

22

23sbitEOC2543=P3^2;

//ADC2543

24sbitCLK2543=P1^0;

25sbitDIN2543=P1^1;

26sbitDOUT2543=P1^2;

27sbitCS2543=P1^3;

28

29sbitWDOG=P3^4;

//MAX813

30

31sbitADD1=P2^0;

32sbitADD2=P2^1;

//ADDRESS

33

34sbitIN1=P0^0;

35sbitIN2=P0^1;

36sbitIN3=P0^2;

37sbitIN4=P0^3;

38

39sbitOUT1=P0^4;

40sbitOUT2=P0^5;

41sbitOUT3=P0^6;

42sbitOUT4=P0^7;

43

44unsignedintoverflow_count=0;

45unsignedintnow_Vco0=0;

46unsignedintnow_Vco1=0;

47unsignedintnow_Vco2=0;

48unsignedintSetP=0;

49ucharT0_INTERVAL;

50ucharbstart=0;

51unsignedintT0_Init;

52

53

54ucharidatarxd232[6];

55ucharidataAddress;

 

56ucharSendBusy;

57

58voiddelay(ucharxms)//delay1-255ms(22.1184M)

59{

601uchari,j;

611for(j=0;

j<

xms;

j++)

621{

632for(i=0;

i<

220;

i++)

642{

653_nop_();

663_nop_();

673_nop_();

683_nop_();

693_nop_();

703_nop_();

713

723}

732}

741}

75

76uintpick_ch0(void)//adcCH0

77{

781uchari;

//12bits/msb/bin

791uintvol=0;

801CLK2543=_HI;

811DIN2543=_LOW;

821CS2543=_LOW;

831_nop_();

841_nop_();

851_nop_();

861_nop_();

871_nop_();

881CLK2543=_HI;

//时钟上升沿写入CH数据"

0000"

891_nop_();

901CLK2543=_LOW;

911_nop_();

921CLK2543=_HI;

931_nop_();

941CLK2543=_LOW;

951_nop_();

961CLK2543=_HI;

971_nop_();

981CLK2543=_LOW;

991_nop_();

1001CLK2543=_HI;

1011_nop_();

1021CLK2543=_LOW;

1031for(i=0;

i<

8;

i++)

1041{

1052CLK2543=_HI;

//时钟上升沿写入数据"

0000_0000"

1062_nop_();

1072CLK2543=_LOW;

1082}

1091CS2543=_HI;

1101for(i=10;

i>

0;

i--)//delay10us

1111while(EOC2543==0);

//在EOC=0时等待!

1121CS2543=_LOW;

1131_nop_();

1141_nop_();

1151_nop_();

1161_nop_();

1171_nop_();

1181CLK2543=_LOW;

1191for(i=0;

11;

1201{if(DOUT2543==_HI){vol|=0x01;

}

1212elsevol|=0x00;

1222vol=_irol_(vol,1);

1232CLK2543=_HI;

//时钟下升沿读出数据,

1242_nop_();

1252CLK2543=_LOW;

}

1261CS2543=_HI;

1271_nop_();

1281_nop_();

1291_nop_();

1301_nop_();

1311returnvol;

1321}

133

134uintpick_ch1(void)//adcCH1

135{uchari;

1361uintvol=0;

1371CLK2543=_HI;

1381DIN2543=_LOW;

1391CS2543=_LOW;

1401_nop_();

1411_nop_();

1421_nop_();

1431_nop_();

1441_nop_();

1451CLK2543=_HI;

0001"

1461_nop_();

1471CLK2543=_LOW;

1481_nop_();

1491CLK2543=_HI;

1501_nop_();

1511CLK2543=_LOW;

1521_nop_();

1531CLK2543=_HI;

1541_nop_();

1551CLK2543=_LOW;

1561_nop_();

1571DIN2543=_HI;

1581CLK2543=_HI;

1591_nop_();

1601CLK2543=_LOW;

1611DIN2543=_LOW;

1621for(i=0;

1631{CLK2543=_HI;

1642_nop_();

1652CLK2543=_LOW;

};

1661CS2543=_HI;

1671for(i=10;

1681while(EOC2543==0);

1691CS2543=_LOW;

1701_nop_();

1711_nop_();

1721_nop_();

1731_nop_();

1741_nop_();

1751CLK2543=_LOW;

1761for(i=0;

1771{if(DOUT2543==_HI){vol|=0x01;

}

1782elsevol|=0x00;

1792vol=_irol_(vol,1);

1802CLK2543=_HI;

1812_nop_();

1822CLK2543=_LOW;

1831CS2543=_HI;

1841_nop_();

1851_nop_();

1861_nop_();

1871_nop_();

1881returnvol;

1891}

190

191uintpick_ch2(void)//adcCH2

192{uchari;

1931uintvol=0;

1941CLK2543=_HI;

1951DIN2543=_LOW;

1961CS2543=_LOW;

1971_nop_();

1981_nop_();

1991_nop_();

2001_nop_();

2011_nop_();

2021CLK2543=_HI;

0010"

2031_nop_();

2041CLK2543=_LOW;

2051_nop_();

2061CLK2543=_HI;

2071_nop_();

2081CLK2543=_LOW;

2091_nop_();

2101DIN2543=_HI;

2111CLK2543=_HI;

2121_nop_();

2131CLK2543=_LOW;

2141DIN2543=_LOW;

2151_nop_();

2161CLK2543=_HI;

2171_nop_();

2181CLK2543=_LOW;

2191for(i=0;

2201{CLK2543=_HI;

2212_nop_();

2222CLK2543=_LOW;

2231CS2543=_HI;

2241for(i=10;

2251while(EOC2543==0);

2261CS2543=_LOW;

2271_nop_();

2281_nop_();

2291_nop_();

2301_nop_();

2311_nop_();

2321CLK2543=_LOW;

2331for(i=0;

2341{if(DOUT2543==_HI){vol|=0x01;

2352elsevol|=0x00;

2362vol=_irol_(vol,1);

2372CLK2543=_HI;

2382_nop_();

2392CLK2543=_LOW;

2401CS2543=_HI;

2411_nop_();

2421_nop_();

2431_nop_();

2441_nop_();

2451returnvol;

2461}

247

248voidpick_ch0_16s(void)//采16次取平均值(四舍五入)

249{

2501uintsum_Vco=0;

2511uchari;

2521for(i=0;

16;

i++)

2531{

2542sum_Vco+=pick_ch0();

2552};

2561i=sum_Vco%16;

2571if(i>

10)

2581now_Vco0=sum_Vco/16+1;

2591else

2601now_Vco0=sum_Vco/16;

2611}

262

263voidpick_ch1_16s(void)//采16次取平均值(四舍五入)

264{

2651uintsum_Vco=0;

2661uchari;

2671for(i=0;

2681{

2692sum_Vco+=pick_ch1();

2702};

2711i=sum_Vco%16;

2721if(i>

2731now_Vco1=sum_Vco/16+1;

2741else

2751now_Vco1=sum_Vco/16;

2761}

277

278voidpick_ch2_16s(void)//采16次取平均值(四舍五入)

279{

2801uintsum_Vco=0;

2811uchari;

2821for(i=0;

2831{

2842sum_Vco+=pick_ch2();

2852};

2861i=sum_Vco%16;

2871if(i>

2881now_Vco2=sum_Vco/16+1;

2891else

2901now_Vco2=sum_Vco/16;

2911}

292

293

294voidmain(void)

295{

296

297E=0x00;

//初始化时禁止所有中断

298TMOD=0x11;

//定时器1工作在工作方式2,定时器0工作在方式1,16位定时计数器

299SCON=0x50;

//串行口工作在方式1,10位数据收发,1位起始位,8位数据位,1位停止位

300TCON=0x00;

//

301

302P1=0xFF;

//先写1到各个I/O端口

303P2=0xFF;

304P3=0xFF;

305P0=0xFF;

3061

3071T0_INTERVAL=10;

3081T0_Init=65536-921.6*T0_INTERVAL;

3091

3101if((ADD2==_LOW)&

&

(ADD1==_LOW))

3111Address=0x03;

3121elseif((ADD2==_LOW)&

(ADD1==_HI))

3131Address=0x02;

3141elseif((ADD2==_HI)&

3151Address=0x01;

3161else

3171Address=0x00;

3181

3191SendBusy=_LOW;

3201TXC=_LOW;

3211RCAP2H=0xFF;

3221RCAP2L=220;

//11.0592M/9600Baud

3231RCLK=_on;

//Timer2作为波特率发生器

3241TCLK=_on;

3251TR2=_on;

3261ES=_on;

3271

3281OUT1=0;

3291OUT2=0;

3301OUT3=0;

3311OUT4=0;

3321

3331delay(100);

3341TH0=T0_Init/256;

//25ms,fosc=11059200Hz,fosc/12=921600Hz,

3351例如t=25,X=23040,则应从42496开始计数,t=50,X=46080,则应从19456开始计数

3361t=10,X=9216,则应从56320开始计数,t=5,X=4608,则应从60928开始计数

3371TL0=T0_Init%256;

3381ET0=1;

//开定时器0中断

3391TR0=1;

3401EA=1;

3411delay(100);

3421

3431do{

3442

3452if(TR0==0)

3462{

3473pick_ch0_16s();

//采集

3483if(bstart==1)

3493{

3504if(((int)((now_Vco0*0.5/100.0-4)*18.75*10))<

SetP)

3514OUT1=_LOW;

3524else

3534OUT1=_HI;

3544}

3553else

3563OUT1=_HI;

3573if(SendBusy==_LOW)

3583TR0=1;

3593}

3602}while

(1);

3611

3621}

363

364voidTimer0(void)interruptint_T0using1

365{

3661if(overflow_count>

=4)

3671{

3682overflow_count=0;

3692TR0=0;

3702}

3711else

3721overflow_count=overflow_count+1;

3731

3741T0_Init=65536-921.6*T0_INTERVAL;

3751TH0=T0_Init/256;

3761TL0=T0_Init%256;

3771

3781}

379

380

381void_RS232()interruptint_ESusing3//RS232接收中断

382{

3831uchari;

3841uchartemp;

3851if(TI==_on)

3861{

3872TI=_off;

3882gotorx_end;

3892}

3901else

3911RI=_off;

3921for(i=1;

6;

i++)//shif

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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