ml90614紅外溫度計(jì)程序_第1頁(yè)
ml90614紅外溫度計(jì)程序_第2頁(yè)
ml90614紅外溫度計(jì)程序_第3頁(yè)
ml90614紅外溫度計(jì)程序_第4頁(yè)
ml90614紅外溫度計(jì)程序_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include#include/#include#defineuintunsignedint#defineucharunsignedchar#defineNack_number10/端口定義sbitP_RS=P3八5;sbitP_RW=P3A6;sbitP_E=P3A7;sbitSCK=P3A2;sbitSDA=P3A3;/時(shí)鐘線/數(shù)據(jù)定義intbit_out=0,bit_in=0;uchartempH,tempL,err;#definein_mode0 x06/輸入方式顯示不移動(dòng))voidstart();voidstop();ucharReadByte(void);voidsend_bit

2、(void);voidSendByte(ucharnumber);voidread_bit(void);voiddelay(uintN);uintreadtemp(void);uintwreadtemp(void);voiddisplay(uintTem);voiddisplayw(uintTem);/MLX90614發(fā)起始位子程序/MLX90614發(fā)結(jié)束位子程序/MLX90614接收字節(jié)子程序/MLX90614發(fā)送位子程序/MLX90614接收字節(jié)子程序/MLX90614接收位子程序/延時(shí)程序/讀溫度數(shù)據(jù)/讀溫度數(shù)據(jù)/顯示子程序/顯示子程序unsignedcharltable6;#defin

3、eclear#definehome#definedis_on0 x01/清除顯示0 x02/地址歸位0 x0f/打開顯示:顯示控制00001DCB,D=1整體顯示開,即打開/開關(guān)讓屏顯示C=1游標(biāo)開,/B=1游標(biāo)位置反白允許(此處不允許)進(jìn)入點(diǎn)設(shè)置:000001I/DSI/D=1光標(biāo)右移,AC自動(dòng)加1,S=0,整體/函數(shù)聲明voidscreen_delay1(uintx);/延時(shí)函數(shù)voidscreen_initial();/液晶初始化函數(shù)voidscreen_instruct(uintdat);/液晶發(fā)送控制指令voidscreen_bit8_serial_input(uintix);液晶輸

4、入字節(jié)函數(shù)voiddis_str(ucharx,uchary,uchar*str);/液晶寫入函數(shù)voidscreen_write_abyte(uintdat);/發(fā)送數(shù)據(jù)函數(shù)/voidscreen_delay_ms();/延時(shí)函數(shù)/以下是12864液晶顯示函數(shù)/延時(shí)函數(shù)!/voidscreen_delay1(uintx)/51+17x(us)uinti,j;for(i=0;i1;i+)for(j=0;jx;j+);/液晶初始化函數(shù),通過(guò)去掉OxOc,可以實(shí)時(shí)顯示光標(biāo)位置!/voidscreen_initial()P_RS=0;/RS為低電平,進(jìn)行控制指令screen_instruct(dis

5、_on);/發(fā)送打開顯示指令screen_delay1(70);screen_delay1(3000);screen_instruct(in_mode);screen_delay1(7);screen_instruct(0 x0c);screen_delay1(7);screen_instruct(home);screen_delay1(3000);screen_instruct(clear);/發(fā)送清屏指令/發(fā)送輸入方式指令/顯示狀態(tài)的游標(biāo)和游標(biāo)位置不顯示/發(fā)送地址歸位指令/發(fā)送控制指令函數(shù)/voidscreen_instruct(uintdat)uintch;P_RS=1;ch=0 xf8

6、;screen_bit8_serial_input(ch);ch=dat&0 xf0;screen_bit8_serial_input(ch);ch=dat4;screen_bit8_serial_input(ch);P_RS=0;/輸入字節(jié)函數(shù)/voidscreen_bit8_serial_input(uintix)uinti;P_E=0;for(i=0;i8;i+)if(ix&0 x80)=0)P_RW=0;elseP_RW=1;ix=1;P_E=1;P_E=0;/使能端發(fā)出一個(gè)負(fù)跳變沿脈沖,詳見MPU寫資料模塊/寫入函數(shù)/voiddis_str(ucharx,uchary,uchar*s

7、tr)/16*4dataucharloc,*p;codeucharxline5=0,1,3,2,4;p=str;x=xlinex;screen_instruct(home);loc=(16*(x-1)+y-1);if(loc&0 x01)loc/=2;screen_instruct(loc|0 x80);screen_write_abyte();elseloc/=2;screen_instruct(loc|0 x80);while(*p)screen_write_abyte(*p+);screen_instruct(0 x9e);screen_write_abyte();/發(fā)送數(shù)據(jù)/voids

8、creen_write_abyte(uintdat)uintch;P_RS=1;ch=0 xfa;screen_bit8_serial_input(ch);ch=dat&0 xf0;screen_bit8_serial_input(ch);ch=dat4;screen_bit8_serial_input(ch);P_RS=0;/voidscreen_delay_ms()unsignedinti,j;for(i=0;i500;i+)for(j=0;j=27315)/溫度為正T=T-27315;a=T/100;b=T-a*100;ltable0=a/100+0;ltable1=a%100/10+0

9、;ltable2=a%10+0;ltable3=.;ltable4=b/10+0;ltable5=b%10+0;dis_str(2,7,ltable);else/溫度整數(shù)/溫度小數(shù)/溫度為負(fù)T=27315-T;a=T/100;b=T-a*100;ltable0=-;ltable1=a/10+0;ltable2=a%10+0;ltable3=.;ltable4=b/10+0;ltable5=b%10+0;dis_str(2,7,ltable);voiddisplayw(uintTem)uintT,a,b;T=Tem*2;if(T=27315)/溫度為正T=T-27315;a=T/100;b=T-

10、a*100;ltable0=a/100+0;ltable1=a%100/10+0;ltable2=a%10+0;ltable3=.;ltable4=b/10+0;ltable5=b%10+0;dis_str(3,7,ltable);else/溫度整數(shù)/溫度小數(shù)/溫度為負(fù)T=27315-T;a=T/100;b=T-a*100;ltable0=-;ltable1=a/10+0;ltable2=a%10+0;ltable3=.;ltable4=b/10+0;ltable5=b%10+0;dis_str(3,7,ltable);voidstart(void)停止條件是SCK=1時(shí),SDA由1到0SDA

11、=1;delay(4);SCK=1;停止條件是SCK=1時(shí),SDA由0/可以重發(fā)次數(shù)/8位依次發(fā)送/取最高位/發(fā)1/發(fā)0/發(fā)送一個(gè)位/左移一位/接收1位應(yīng)答信號(hào)/無(wú)應(yīng)答時(shí)重發(fā)delay(4);SDA=0;delay(4);SCK=0;delay(4);/voidstop(void)到1SCK=0;delay(4);SDA=0;delay(4);SCK=1;delay(4);SDA=1;/發(fā)送一個(gè)字節(jié)voidSendByte(ucharnumber)uchari,n,dat;n=Nack_number;Send_again:dat=number;for(i=0;i8;i+)if(dat&0 x8

12、0)bit_out=1;elsebit_out=0;send_bit();dat=dat1;read_bit();if(bit_in=1)stop();if(n!=0)n-;gotoRepeat;elsegotoexit;elsegotoexit;Repeat:start();gotoSend_again;exit:;/發(fā)送一個(gè)位voidsend_bit(void)if(bit_out=1)SDA=1;elseSDA=0;_nop_();SCK=1;delay(4);delay(4);SCK=0;delay(4);delay(4);/接收一個(gè)字節(jié)ucharReadByte(void)uchar

13、i,dat;dat=0;for(i=0;i8;i+)dat=dat1;read_bit();if(bit_in=1)/可以重發(fā)Nack_number=10次/重發(fā)/退出/重新開始/重發(fā)/退出/發(fā)1/發(fā)0/上升沿/初值為0/左移/接收一位dat=dat+1;/為1時(shí)對(duì)應(yīng)位加1/發(fā)送應(yīng)答信號(hào)0/帶回接收數(shù)據(jù)/數(shù)據(jù)端先置1/上升沿/讀數(shù)據(jù)SDA=0;send_bit();returndat;/接收一個(gè)位voidread_bit(void)SDA=1;bit_in=1;SCK=1;delay(4);delay(4);bit_in=SDA;_nop_();SCK=0;delay(4);delay(4);

14、/uintreadtemp(void)/開始條件/發(fā)送從地址00/發(fā)送命令/開始條件/讀從地址00/讀數(shù)據(jù)低字節(jié)/讀數(shù)據(jù)高字節(jié)/讀錯(cuò)誤信息碼/停止條件SCK=0;start();SendByte(0 x00);SendByte(0 x07);start();SendByte(0 x01);bit_out=0;tempL=ReadByte();bit_out=0;tempH=ReadByte();bit_out=1;err=ReadByte();stop();return(tempH*256+tempL);uintwreadtemp(void)SCK=0;/開始條件/發(fā)送從地址00/發(fā)送命令/開始條件/讀從地址00/讀數(shù)據(jù)低字節(jié)/讀數(shù)據(jù)高字節(jié)/讀錯(cuò)誤信息碼/停止條

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論