




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、/*端口定義*P1.0SCK(SHT10)P1.1DATA(SHT10)P0P2.0P2.1DB0 DB7 (LCD1602)RSRWP2.2E(LCD1602)(LCD1602)(LCD1602)*/#include<reg52.h>#include<intrins.h>#include<stdio.h>#include<string.h>#include<absacc.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedint/按鍵設(shè)置sbitTEM
2、_UP=P1A2;sbitTEM_DOWN=Pi3;sbitHUM_UP=P1A4;sbitHUM_DOWN=P1A5;sbitSHEZHI_ENTER=P1A6;sbitSHEZHI_EXIT=P1A7;floatf_tem_up_value=50.0;floatf_tem_down_value=-30.0;floatf_hum_up_value=10.0;floatf_hum_down_value=100.0;/1602液晶端口定義*sbitLcdRs=P2A0;sbitLcdRw=P2A1;sbitLcdEn=P2A2;sbitACC0=ACCA0;sbitACC7=ACCA7;ucha
3、rstr7;/向LCD入命*0/ Command1/ Data0x01/清屏0x02/光標(biāo)返回原點(diǎn)#defineLCD_COMMAND#defineLCD_DATA#defineLCD_CLEAR_SCREEN#defineLCD_HOMING/設(shè)置顯示模式*#defineLCD_SHOW0x04/顯示開#defineLCD_HIDE0x00/口二¥顯示關(guān)#defineLCD_CURSOR0x02/顯示光標(biāo)#defineLCD_NO_CURSOR0x00/無光標(biāo)#defineLCD_FLASH0x01/光標(biāo)閃動(dòng)#defineLCD_NO_FLASH0x00/光標(biāo)不閃動(dòng)#defineL
4、CD_AC_UP0x02#defineLCD_AC_DOWN0x00/default#defineLCD_MOVE0x01/畫面可平移#defineLCD_NO_MOVE0x00/default/設(shè)置輸入模式*unsignedcharLCD_Wait(void);voidLCD_Write(bitstyle,unsignedcharinput);/*1602液晶顯示部分子程序*/voiddelay(uintz)uintx,y;for(x=z;x>0;x-)for(y=110;y>0;y-);voidLCD_Write(bitstyle,unsignedcharinput)LcdRs
5、=style;P0=input;delay(5);LcdEn=1;delay(5);LcdEn=0;voidLCD_SetDisplay(unsignedcharDisplayMode)LCD_Write(LCD_COMMAND,0x08|DisplayMode);voidLCD_SetInput(unsignedcharInputMode)LCD_Write(LCD_COMMAND,0x04|InputMode);/ 初始化 LCD*voidLCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38);/8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣LCD_Write
6、(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);/開啟顯示,無光標(biāo)LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);清屏/LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);/AC遞增,畫面不動(dòng)voidGotoXY(unsignedcharx,unsignedchary)/ 液晶字符輸入的位置*if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);/將字符輸出到液晶顯示vo
7、idPrint(unsignedchar*str)while(*str!='0')LCD_Write(LCD_DATA,*str);str+;voidzhuanhuan(floata)/浮點(diǎn)數(shù)轉(zhuǎn)換成字符串函數(shù)memset(str,0,sizeof(str);sprintf(str,"%f",a);voidwelcome()LCD_Initial();GotoXY(0,0);Print("Welcome!");GotoXY(0,1);Print("Codeofsht10");delay(200);/*;模塊名稱:dela
8、y_n10us();功能:延時(shí)函數(shù),延時(shí)約n個(gè)10us較精確的延時(shí)函數(shù),"_nop_()"延時(shí)1us12M!l振;*/voiddelay_n10us(uintn)/延時(shí)n個(gè)10us12Mll振uinti;for(i=n;i>0;i-)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/*部分LCD1602 設(shè) 置END*/*第二部分DHT90 設(shè) 置START*sbit SCK = P1A0;/sbit DATA = Pil; /定義通訊時(shí)鐘端口定義通訊數(shù)據(jù)端口typedef union unsigned int i; /
9、 float f; value;定義了兩個(gè)共用體enumTEMP,HUMI;/TEMP=0,HUMI=1用于判斷是否結(jié)束通訊結(jié)束數(shù)據(jù)傳輸#definenoACK0/#defineACK1/adrcommandr/w#defineSTATUS_REG_W0x06/00000110#defineSTATUS_REG_R0x07/00000111#defineMEASURE_TEMP0x03/00000011#defineMEASURE_HUMI0x05/00000101#defineRESET0x1e/00011110/*定義函數(shù)*/voids_transstart(void);/啟動(dòng)傳輸函數(shù)vo
10、ids_connectionreset(void);/連接復(fù)位函數(shù)chars_write_byte(unsignedcharvalue);/DHT90寫函數(shù)chars_read_byte(unsignedcharack);/DHT90讀函數(shù)chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode);/測(cè)量溫濕度函數(shù)voidcalc_dht90(float*p_humidity,float*p_temperature);/溫濕度補(bǔ)償/*;模塊名稱:s_transstart();功能:啟動(dòng)傳輸函數(shù);*/v
11、oids_transstart(void)/generatesatransmissionstart/DATA:|/SCK:_|_|DATA=1;SCK=0;/Initialstate_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;/*;模塊名稱:s_connectionreset();功能:連接復(fù)位函數(shù);*/voids_connectionreset(void)/communicationreset:DATA-line=1andatleas
12、t9SCKcyclesfollowedbytransstart/DATA:|/SCK:_|_|_|_|_|_|_|_|_|_|unsigned char i;DATA=1; SCK=0; for(i=0;i<9;i+) SCK=1;SCK=0; s_transstart();/Initial state/9 SCK cycles/transmission start/*;模塊名稱:s_write_byte();功能:SHT10寫函數(shù);*/chars_write_byte(unsignedcharvalue)/writesabyteontheSensibusandcheckstheackn
13、owledgeunsignedchari,error=0;for(i=0x80;i>0;i/=2)/shiftbitformaskingif(i&value)DATA=1;/maskingvaluewithi,writetoSENSI-BUSelseDATA=0;SCK=1;/clkforSENSI-BUS_nop_();_nop_();_nop_();/pulswithapprox.3usSCK=0;DATA=1;/releaseDATA-lineSCK=1;/clk#9forackerror=DATA;/checkack(DATAwillbepulleddownbyDHT90
14、),DATA在第9個(gè)上升沿將被DHT90自動(dòng)下拉為低電平。_nop_();_nop_();_nop_();SCK=0;DATA=1;/releaseDATA-linereturnerror;/error=1incaseofnoacknowledge/返回:0成功,1失敗/*;模塊名稱:s_read_byte();功能:SHT10讀函數(shù);*/chars_read_byte(unsignedcharack)/readsabyteformtheSensibusandgivesanacknowledgeincaseof"ack=1"unsignedchari,val=0;DATA=
15、1;/releaseDATA-linefor(i=0x80;i>0;i/=2)/shiftbitformaskingSCK=1;/clkforSENSI-BUSif(DATA)val=(val|i);/readbit_nop_();_nop_();_nop_();/pulswithapprox.3usSCK=0;if(ack=1)DATA=0;/incaseof"ack=1"pulldownDATA-LineelseDATA=1;/如果是校驗(yàn)(ack=0),讀取完后結(jié)束通訊_nop_();_nop_();_nop_();/pulswithapprox.3usSCK=1
16、;/clk#9forack_nop_();_nop_();_nop_();/pulswithapprox.3usSCK=0;_nop_();_nop_();_nop_();/pulswithapprox.3usDATA=1;/releaseDATA-linereturnval;/*;模塊名稱:s_measure();功能 : 測(cè)量溫濕度函數(shù);*/chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)/makesameasurement(humidity/temperature)withchecks
17、umunsignederror=0;unsignedinti;s_transstart();/transmissionstartswitch(mode)/sendcommandtosensorcaseTEMP:error+=s_write_byte(MEASURE_TEMP);break;caseHUMI:error+=s_write_byte(MEASURE_HUMI);break;default:break;for(i=0;i<65535;i+)if(DATA=0)break;/waituntilsensorhasfinishedthemeasurementif(DATA)error
18、+=1;/ortimeout(2sec.)isreached* (p_value)=s_read_byte(ACK);/readthefirstbyte(MSB)* (p_value+1)=s_read_byte(ACK);/readthesecondbyte(LSB)* p_checksum=s_read_byte(noACK);/readchecksumreturnerror;/*;模塊名稱:calc_dht90();功能:溫濕度補(bǔ)償函數(shù);*/voidcalc_dht90(float*p_humidity,float*p_temperature)/calculatestemperature
19、Candhumidity%RH/input:humiTicks(12bit)/tempTicks(14bit)/output:humi%RH/tempCconstfloatC1=-4.0;/for12BitconstfloatC2=+0.0405;/for12BitconstfloatC3=-0.0000028;/for12BitconstfloatT1=+0.01;/for14Bit5VconstfloatT2=+0.00008;/for14Bit5Vfloat rh=*p_humidity;float t=*p_temperature;/rh:HumidityTicks12Bit/t:Te
20、mperatureTicks14Bitfloatrh_lin;/rh_lin:Humiditylinearfloatrh_true;/rh_true:Temperaturecompensatedhumidityfloatt_C;/t_C:TemperatureCt_C=t*0.01-40;/calc.temperaturefromtickstoCrh_lin=C3*rh*rh+C2*rh+C1;/calc.humidityfromticksto%RHrh_true=(t_C-25)*(T1+T2*rh)+rh_lin;/calc.temperaturecompensatedhumidity%R
21、Hif(rh_true>100)rh_true=100;/cutifthevalueisoutsideofif(rh_true<0.1)rh_true=0.1;/thephysicalpossiblerange*p_temperature=t_C;/returntemperatureC*p_humidity=rh_true;/returnhumidity%RH/*主函數(shù)*voidmain(void)valuehumi_val,temp_val;unsignedcharerror,checksum;LcdRw=0;s_connectionreset();welcome();/顯示歡迎畫面delay(2000);LCD_Initial();while(1)/shezhi();error=0;error+=s_measure(unsigned/m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025太陽(yáng)能槽式復(fù)合拋物面聚光集熱土壤儲(chǔ)熱技術(shù)
- 個(gè)人勞動(dòng)法權(quán)益保障合同
- 個(gè)人抵押借款擔(dān)保合同
- 分期付款購(gòu)買機(jī)動(dòng)車合同書
- 醫(yī)療器械藥品購(gòu)銷合同
- 醫(yī)院場(chǎng)地租賃合同書樣本
- 五金電器銷售合同6篇
- 2025年紅河b2貨運(yùn)上崗證模擬考試
- 合同范本銷售人員聘用合同7篇
- 面板自動(dòng)檢測(cè)機(jī)競(jìng)爭(zhēng)策略分析報(bào)告
- 2025年九年級(jí)數(shù)學(xué)中考復(fù)習(xí)計(jì)劃
- 2024屆江西省南昌市高三一模英語(yǔ)試卷(解析版)
- 2023年長(zhǎng)沙自貿(mào)投資發(fā)展集團(tuán)有限公司招聘筆試真題
- 辦公樓電氣系統(tǒng)改造方案
- 水電預(yù)留預(yù)埋施工組織設(shè)計(jì)方案
- 黑龍江省水資源稅適用稅額表2024
- 骨科常用體外治療儀器
- 2024解析:第十五章電流和電路-基礎(chǔ)練(解析版)
- 2024江蘇太倉(cāng)市城市建設(shè)投資集團(tuán)限公司招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2024年全新統(tǒng)計(jì)法培訓(xùn)課件:普法教育新方向
- 2020-2024年五年高考?xì)v史真題分類匯編(全國(guó))專題14 中國(guó)古代史(非選擇題)(解析版)
評(píng)論
0/150
提交評(píng)論