freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的溫度計設計開發(fā)畢業(yè)論文(參考版)

2025-06-30 19:43本頁面
  

【正文】 write_dat。 delay(2)。K39。 delay(2)。O39。 delay(2)。T39。 write_(0x80+0x0d)。(t=warn_l1)) //溫度適中在26與28度之間 { write_(0x80+0x40)。 } else if ((twarn_h1)amp。 TD3=1。)。 write_data(39。)。 write_data(39。)。 write_data(39。 delay(2)。339。 delay(2)。H39。 delay(2)。T39。 write_(0x80+0x0d)。 led=0。 delay(2)。239。 delay(2)。D39。 delay(2)。T39。 write_(0x80+0x4d)。)。 write_data(39。)。 write_data(39。)。 write_data(39。(t=warn_h2)) //大于30度小于32度 { warn(t)。 } else if((twarn_h3)amp。 TD1=1。)。 write_data(39。)。 write_data(39。)。 write_data(39。 delay(2)。139。 delay(2)。H39。 delay(2)。T39。 write_(0x80+0x0d)。amp。 delay(2)。R39。 delay(2)。T39。 write_(0x80+0x4d)。 delay(2)。L39。 delay(2)。T39。 write_(0x80+0x0d)。 beep=0。(tem=warn_l1))) { beep=1。} else { while(~((temwarn_h1)amp。amp。 //乘以10表示小數(shù)點后面只取1位, return temp。 //溫度在寄存器中為12位 176。 //兩個字節(jié)組合為1個字 temp=temp|a。 //讀高8位 temp=b。 a=tempread()。 tempwritebyte(0xcc)。 dsreset()。 // 寫跳過讀ROM指令 tempwritebyte(0x44)。//18B20復位,初始化函數(shù) delay(1)。i++。 ds=1。 //寫 0 i=8。while(i0)i。 ds=1。 i++。 dat=dat1。j++) { testb=datamp。 for(j=1。 uchar j。 //讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里 } return(dat)。i++) { j=tempreadbit()。 for(i=1。}uchar tempread(void) //讀1個字節(jié){ uchar i,j,dat。while(i0)i。 dat=ds。i++。i++。 bit dat。 while(i0)i。 ds=1。 i=103。}////////////////////////DS18B20相關程序//////////////////////////////////void dsreset(void) //18B20復位,初始化函數(shù){ uint i。y0。x0。//顯示溫度及處理過程 }}/////////////延時函數(shù)///////////////////void delay(uint z)//延時函數(shù){uint x,y。//獲取十進制溫度deal(temp)。while(1) { tempchange()。 //顯示名字////////////////////////主程序//////////////////////////void main(){init_1602()。 //1602寫數(shù)據(jù)void dis_1602()。 //初始化1602void write_(uchar )。 //蜂鳴器報警聲音 ,s控制音調(diào),流水燈報警void deal(uint t)。 //DS18B20 開始獲取溫度并轉(zhuǎn)換uint get_temp()。 //讀1個字節(jié)void tempwritebyte(uchar dat)。 //18B20復位,初始化函數(shù)bit tempreadbit(void)。/////////////聲明子函數(shù)////////////////////void delay(uint z)。 //定義字符數(shù)組顯示數(shù)字uint temp。uint warn_h3=320。uint warn_h1=280。 //風扇3檔sbit led=P2^0。 //風扇1檔sbit TD2=P1^1。 //溫度傳感器信號線sbit beep=P2^1。sbit lcdrw=P2^6。//顯示溫度及處理過程 }}include include define uchar unsigned chardefine uint unsigned intsbit lcden=P2^7。//獲取十進制溫度deal(temp)。 while(1) { tempchange()。void main(){init_1602()。 delay(2)。K39。 delay(2)。O39。 delay(2)。T39。 write_(0x80+0x4d)。)。 write_data(39。)。 write_data(39。)。 write_data(39。 dis_1602()。amp。 led=0。 delay(2)。339。 delay(2)。D39。 delay(2)。T39。 write_(0x80+0x4d)。)。 write_data(39。)。 write_data(39。)。 write_data(39。 } else if(t=warn_h3) //大于32度 { warn(t)。 TD2=1。)。 write_data(39。)。 write_data(39。)。 write_data(39。 delay(2)。239。 delay(2)。H39。 delay(2)。T39。 write_(0x80+0x0d)。amp。 led=0。 delay(2)。139。 delay(2)。D39。 delay(2)。T39。 write_(0x80+0x4d)。)。 write_data(39。)。 write_data(39。)。 write_data(39。(t=warn_h1)) //小于30度大于28度 { warn(t)。 } else if((twarn_h2)amp。)。 write_data(39。)。 write_data(39。 led=0。)。 write_data(39。)。 write_data(39。程序如下:void deal(uint t) //溫度處理過程 { if(t=warn_l1) //小于26度 { warn(t)。 } }} }該程序是溫度處理程序,首先用if進行判斷,判斷當前溫度所在的范圍,當達到設定低溫時,在右上角顯示TL,以示當前溫度低;當溫度達到預告高溫時,在右上角顯示TH1,并在1602右下角顯示TD1,以示溫度需要降低,當達到高溫上線限時,在右上角顯示TH2,并在1602右下角顯示TD2,以示溫度急需要降低,當溫度再高的話,在右上角顯示TH3,并在1602右下角顯示TD3。 delay(2)。amp。(tem=warn_l1)) {beep=0。程序如下:void warn(uint s,uchar led) //蜂鳴器報警聲音 ,s控制音調(diào),流水燈報警{ void warn(uint tem) //蜂鳴器報警聲音 ,s控制音調(diào),燈報警{ if((temwarn_h1)amp。delay(2)。J39。delay(2)。a39。delay(2)。e39。delay(2)。s39。delay(2)。r39。delay(2)。o39。delay(2)。F39。程序如下:void disname(){write_(0x80+0x00)。delay(2)。delay(2)。write_data(digit[xiaoshu])。)。write_data(39。write_data(digit[ge])。write_data(digit[shi])。xiaoshu=temp%10。shi=temp/100。完后在顯示攝氏度的符號。}下面程序作用是顯示數(shù)據(jù),首先對溫度分割,分出來十位,個位,以及小數(shù)位。write_(0x06)。write_(0x38)。初始化程序如下:void init_1602() //初始化1602{lcdrw=0。再寫命令0x06作用是每當寫入一個字符后,地址指針加1,寫入一個字符,整屏顯示不移動。然后是顯示模式的設置寫命令0x38,功能是設置1602顯示,5X7點陣,8位數(shù)據(jù)接口。lcden=0。lcden=1。P0=date。寫命令程序如下:void write_data(uchar date) //1602寫數(shù)據(jù){lcdrw=0。lcden=0。lcden=1。P0=。寫命令程序如下:void write_(uchar ) //1602寫指令{lcdrw=0。 //temp是整型}////////////////////顯示程序//////////////////////////顯示驅(qū)動程序的設計也是要先初始化,因為初始化時候會往芯片里面寫命令和數(shù)據(jù),所以這里先介紹一下怎么給1602寫命令和數(shù)據(jù)。 temp=f_temp*10+。 f_temp=temp*。 temp=8。 //讀低8位 b=tempread()。 tempwritebyte(0xbe)。 delay(1)。讀取溫度程序如下:uint get_temp() //讀取寄存器中存儲的溫度數(shù)據(jù){ uchar a,b。 // 寫溫度轉(zhuǎn)換指令}這里的程序作用是從剛轉(zhuǎn)換到寄存器中的溫度讀出來,讀之前首先也是對芯片進行復位,讀之前也要寫0xcc這條跳過讀ROM的指令,跳過之后寫入數(shù)據(jù)0xbe進行從RAM中讀數(shù)據(jù),讀出來是二進制表示的,這里用兩個變量來存儲,如下:a存高8位,b存低8位,然后通過移位把它們合成一個字,乘以10保留一位小數(shù)。 tempwritebyte(0xcc)。溫度轉(zhuǎn)換程序如下:void tempchange(void) //DS18B20 開始獲取溫度并轉(zhuǎn)換{ dsreset()。 //讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里 } return(dat)。i++) { j=tempreadbit()。 for(i=1。}uchar tempread(void) //讀1個字節(jié){ uchar i,j,dat。while(i0)i。 dat=ds。i++。i++。 bit dat。在通信時是以 8 位“0”或“1”為一個字節(jié),字節(jié)的讀或?qū)懯菑母呶婚_始的,即 A7到 A0.。每一位的讀取之前都由控制器加一個起始信號。讀時間隙時控制時的采樣時間應該更加的精確才行,讀時間隙時也是必須先由主機產(chǎn)生至少 1uS的低電平,表示讀時間的起始。i++。 ds=1。 //寫 0 i=8。while(i0)i。 ds=1。 i++。 dat=dat1。j++) { testb=datamp。 for(j=1。 uchar j。整個位的發(fā)送時間應該保持在 60~120uS,否則不能保證通信的正常。采樣時間內(nèi)如果控制器將總線拉高則表示寫“1”,如果控制器將總線拉低則表示寫“0”。如下寫入的字為dat,而testb則是字的位,這里采用字右移后與0x01相與取出字的每一位,然后賦給單總線。 while(i0)i。 ds=1。 i=103。初始化函數(shù)如下:void dsreset(void) //18B20復位,初始化函數(shù){ uint i。 //初始化1602dis_1602()。 //1602寫指令void write_data(uchar date)。 //獲十進制溫度deal(temp)。 //
點擊復制文檔內(nèi)容
教學教案相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1