資源描述:
《智能風(fēng)扇調(diào)速系統(tǒng)風(fēng)扇調(diào)速系統(tǒng)程序》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、#includecodeunsignedcharseg7code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40};//顯示段碼sbitTMDAT=P3^1;//DS18B20的數(shù)據(jù)輸入/輸出腳DQ,根據(jù)情況設(shè)定sbitP2_7=P2^7;sbitP2_6=P2^6;sbitP2_5=P2^5;sbitjia=P2^4;sbitjian=P2^3;sbitdi=P2^2;sbitzh=P2^1;sbitga=P2^0;j=0;unsignedintsdata;//測(cè)量到的溫度的整數(shù)部
2、分//unsignedcharxiaoshu1;//小數(shù)第一位//unsignedcharxiaoshu2;//小數(shù)第二位//unsignedcharxiaoshu;//兩位小數(shù)bitfg=1;//溫度正負(fù)標(biāo)志//////////*顯示延時(shí)程序*///////////////voidDelay(unsignedinttc){while(tc!=0){unsignedinti;for(i=0;i<80;i++);tc--;}}////////////延時(shí)部分///////////////voidyanshi(unsignedintcount){unsignedchari;w
3、hile(count--){for(i=0;i<115;i++);}}voiddel()/*延時(shí)1秒*/{unsignedchari,j,k;for(i=20;i>0;i--)for(j=100;j>0;j--)for(k=248;k>0;k--);}/////////////發(fā)送復(fù)位///////////////voidfashong(void){unsignedchari;TMDAT=0;for(i=0;i<103;i++);TMDAT=1;for(i=0;i<4;i++);}bittmrbit(void)//讀一位//{unsignedinti;bitdat;TMD
4、AT=0;i++;TMDAT=1;i++;i++;//微量延時(shí)//dat=TMDAT;for(i=0;i<8;i++);return(dat);}unsignedchartmrbyte(void)//讀一個(gè)字節(jié){unsignedchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tmrbit();dat=(j<<7)
5、(dat>>1);}return(dat);}voidtmwbyte(unsignedchardat)//寫一個(gè)字節(jié){unsignedcharj,i;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;
6、dat=dat>>1;if(testb){TMDAT=0;//寫0i++;i++;TMDAT=1;for(i=0;i<8;i++);}else{TMDAT=0;//寫0for(i=0;i<8;i++);TMDAT=1;i++;i++;}}}voidtmstart(void)//發(fā)送ds1820開始轉(zhuǎn)換{fashong();//復(fù)位yanshi(1);//延時(shí)tmwbyte(0xcc);//跳過序列號(hào)命令tmwbyte(0x44);//發(fā)轉(zhuǎn)換命令44H,}voidtmrtemp(void)//讀取溫度{unsignedchara,b;fashong();//復(fù)位yanshi
7、(1);//延時(shí)tmwbyte(0xcc);//跳過序列號(hào)命令tmwbyte(0xbe);//發(fā)送讀取命令a=tmrbyte();//讀取低位溫度b=tmrbyte();//讀取高位溫度if(b>0x7f)//最高位為1時(shí)溫度是負(fù){a=~a;b=~b+1;//補(bǔ)碼轉(zhuǎn)換,取反加一fg=0;//讀取溫度為負(fù)時(shí)fg=0}sdata=a/16+b*16;//整數(shù)部分//xiaoshu1=(a&0x0f)*10/16;//小數(shù)第一位//xiaoshu2=(a&0x0f)*100/16%10;//小數(shù)//xiaoshu=xiaoshu1*10+xiaoshu2;//小數(shù)}voidDS
8、18B20PRO(void){tmstart();//yanshi(5);//如果是不斷地讀取的話可以不延tmrtemp();//讀取溫度,執(zhí)行完畢溫度將存于}voidLed(){if(fg==1)//溫度為正時(shí)顯示的數(shù)據(jù){P2_7=0;P0=seg7code[sdata/10];//輸出十位Delay(8);P2=P2
9、0xf0;P2_6=0;P0=seg7code[sdata%10]
10、0x80;//輸出個(gè)位Delay(8);P2=P2
11、0xf0;P2_5=0;P0=seg7code[j%10]
12、0x80;//輸出延時(shí)位De