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

正文內(nèi)容

基于單片機(jī)的多功能萬年歷-資料下載頁

2025-06-19 16:43本頁面
  

【正文】 nsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat。 //儲存讀出的一個字節(jié)數(shù)據(jù) for (i=0。i8。i++) { DQ =1。 // 先將數(shù)據(jù)線拉高 _nop_()。 //等待一個機(jī)器周期 DQ = 0。 //單片機(jī)從DS18B20讀書據(jù)時,將數(shù)據(jù)線從高拉低即啟動讀時序 dat=1。 _nop_()。 //等待一個機(jī)器周期 DQ = 1。 //將數(shù)據(jù)線人為拉高,為單片機(jī)檢測DS18B20的輸出電平作準(zhǔn)備 for(time=0。time2。time++) 。 //延時約6us,使主機(jī)在15us內(nèi)采樣 if(DQ==1) dat|=0x80。 //如果讀到的數(shù)據(jù)是1,則將1存入dat else dat|=0x00。//如果讀到的數(shù)據(jù)是0,則將0存入dat //將單片機(jī)檢測到的電平信號DQ存入r[i] for(time=0。time8。time++) 。 //延時3us,兩個讀時序之間必須有大于1us的恢復(fù)期 } return(dat)。 //返回讀出的十進(jìn)制數(shù)據(jù)}/*****************************************************函數(shù)功能:向DS18B20寫入一個字節(jié)數(shù)據(jù)入口參數(shù):dat***************************************************/ void WriteOneChar(unsigned char dat){ unsigned char i=0。 for (i=0。 i8。 i++) { DQ =1。 // 先將數(shù)據(jù)線拉高 _nop_()。 //等待一個機(jī)器周期 DQ=0。 //將數(shù)據(jù)線從高拉低時即啟動寫時序 DQ=datamp。0x01。 //利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù), //并將其送到數(shù)據(jù)線上等待DS18B20采樣 for(time=0。time10。time++) 。//延時約30us,DS18B20在拉低后的約15~60us期間從數(shù)據(jù)線上采樣 DQ=1。 //釋放數(shù)據(jù)線 for(time=0。time1。time++) 。//延時3us,兩個寫時序間至少需要1us的恢復(fù)期 dat=1。 //將dat中的各二進(jìn)制位數(shù)據(jù)右移1位 } for(time=0。time4。time++) 。 //稍作延時,給硬件一點(diǎn)反應(yīng)時間}/******************************************************************************以下是與溫度有關(guān)的顯示設(shè)置 ******************************************************************************/ /*****************************************************函數(shù)功能:顯示沒有檢測到DS18B20***************************************************/ void display_error(void) { unsigned char i。 Lcd(row_1)。 //寫顯示地址,將在第1行第1列開始顯示 i = 0。 //從第一個字符開始顯示 while(Error[i] != 39。\039。) //只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫 { Lcddat(Error[i])。 //將字符常量寫入LCD i++。 //指向下一個字符 delay(100)。 //延時100ms較長時間,以看清關(guān)于顯示的說明 } while(1) //進(jìn)入死循環(huán),等待查明原因 。}/*****************************************************函數(shù)功能:顯示說明信息***************************************************/ void display_explain(void) { unsigned char i。 Lcd(row_1)。 //寫顯示地址,將在第1行第1列開始顯示 i = 0。 //從第一個字符開始顯示 while(Str[i] != 39。\039。) //只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫 { Lcddat(Str[i])。 //將字符常量寫入LCD i++。 //指向下一個字符 delay(100)。 //延時100ms較長時間,以看清關(guān)于顯示的說明 } }/*****************************************************函數(shù)功能:顯示溫度的小數(shù)點(diǎn)***************************************************/ void display_dot(void){ Lcd(row_2+0x09)。 //寫顯示地址,將在第2行第10列開始顯示 Lcddat(39。.39。)。 //將小數(shù)點(diǎn)的字符常量寫入LCD delay(50)。 //延時1ms給硬件一點(diǎn)反應(yīng)時間 }/*****************************************************函數(shù)功能:顯示溫度的單位(Cent)***************************************************/ void display_cent(void){ uchar i。 Lcd(row_2+0x0c)。 //寫顯示地址,將在第2行第13列開始顯示 i = 0。 //從第一個字符開始顯示 while(Cent[i] != 39。\039。) //只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫 { Lcddat(Cent[i])。 //將字符常量寫入LCD i++。 //指向下一個字符 delay(50)。 //延時1ms給硬件一點(diǎn)反應(yīng)時間 } }/*****************************************************函數(shù)功能:顯示溫度的整數(shù)部分入口參數(shù):x***************************************************/ void display_temp1(unsigned char x){ unsigned char k,l。 //k,l分別儲存溫度的十位和個位 k=(x%100)/10。 //取十位 l=x%10。 //取個位 Lcd(row_2+0x07)。 //寫顯示地址,將在第2行第8列開始顯示 Lcddat(digit[k])。 //將十位數(shù)字的字符常量寫入LCD Lcddat(digit[l])。 //將個位數(shù)字的字符常量寫入LCD delay(50)。 //延時1ms給硬件一點(diǎn)反應(yīng)時間 } /*****************************************************函數(shù)功能:顯示溫度的小數(shù)數(shù)部分入口參數(shù):x***************************************************/ void display_temp2(unsigned char x){ Lcd(row_2+0x0a)。 //寫顯示地址,將在第2行第11列開始顯示 Lcddat(digit[x])。 //將小數(shù)部分的第一位數(shù)字字符常量寫入LCD delay(50)。 //延時1ms給硬件一點(diǎn)反應(yīng)時間}/*****************************************************函數(shù)功能:做好讀溫度的準(zhǔn)備***************************************************/ void ReadyReadTemp(void){ Init_DS18B20()。 //將DS18B20初始化 WriteOneChar(0xCC)。 // 跳過讀序號列號的操作 WriteOneChar(0x44)。 // 啟動溫度轉(zhuǎn)換 for(time=0。time100。time++) 。 //溫度轉(zhuǎn)換需要一點(diǎn)時間 Init_DS18B20()。 //將DS18B20初始化 WriteOneChar(0xCC)。 //跳過讀序號列號的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器,前兩個分別是溫度的低位和高位 }/*****************************************************函數(shù)功能:主函數(shù)***************************************************/ void ShowTemp(void) { uchar TL。 //儲存暫存器的溫度低位 uchar TH。 //儲存暫存器的溫度高位 uchar TN。 //儲存溫度的整數(shù)部分 uchar TD。 //儲存溫度的小數(shù)部分 lcdtemp_init()。 //將液晶初始化 delay(5)。 //延時5ms給硬件一點(diǎn)反應(yīng)時間 if(Init_DS18B20()==1) display_error()。 display_explain()。 display_dot()。 //顯示溫度的小數(shù)點(diǎn) display_cent()。 //顯示溫度的單位 while(1) //不斷檢測并顯示溫度 { ReadyReadTemp()。 //讀溫度準(zhǔn)備 TL=ReadOneChar()。 //先讀的是溫度值低位 TH=ReadOneChar()。 //接著讀的是溫度值高位 TN=TH*16+TL/16。 //實(shí)際溫度值=(TH*256+TL)/16,即:TH*16+TL/16 //這樣得出的是溫度的整數(shù)部分,小數(shù)部分被丟棄了 TD=(TL%16)*10/16。 //計(jì)算溫度的小數(shù)部分,將余數(shù)乘以10再除以16取整, //這樣得到的是溫度小數(shù)部分的第一位數(shù)字(保留1位小數(shù)) display_temp1(TN)。 //顯示溫度的整數(shù)部分 display_temp2(TD)。 //顯示溫度的小數(shù)部分 delay(10)。 } }void Tempscan(){ if(Ckey==0) { delay(5)。 if(Ckey==0) { TR0=0。 ShowTemp()。 } }} void main(){ secled=0。 setled=1。 lcd_init()。 ds1302_init()。 init()。 while(1) { Tkeyscan()。 Akeyscan()。 Tempscan()。 }}void timer0() interrupt 1{ miao = BCD_Decimal(read_1302(0x81))。 fen = BCD_Decimal(read_1302(0x83))。 shi = BCD_Decimal(read_1302(0x85))。 week=BCD_Decimal(read_1302(0x8b))。 ri
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1