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

正文內(nèi)容

單片機(jī)控制的恒溫箱的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-資料下載頁(yè)

2025-06-27 13:31本頁(yè)面
  

【正文】 ****/void DS1302_Input_Byte(uchar Input) { uchar i。 ACC =Input。 for(i=8。 i0。 i) { T_DIO = ACC_0。 T_SCLK = 1。 T_SCLK = 0。 ACC = ACC 1。 } }/**************從DS1302讀取一字節(jié)數(shù)據(jù),返回讀到的數(shù)據(jù)****************************/uchar DS1302_Output_Byte(void) { uchar i。 for(i=8。 i0。 i) { ACC=1。 T_DIO= 1。 ACC_7 = T_DIO。 T_SCLK = 1。 T_SCLK = 0。 } return(ACC)。 }/**************向DS1302指定的地址寫(xiě)入數(shù)據(jù)*******************************/void DS1302_Write_one( uchar addr,dat ) // 寫(xiě)入地址、數(shù)據(jù)子程序 { T_CE=0。 //T_CE引腳為低,數(shù)據(jù)傳送中止 T_SCLK=0。 //清零時(shí)鐘總線 T_CE = 1。 //T_CE引腳為高,邏輯控制有效 DS1302_Input_Byte(addr)。 // 地址,命令 DS1302_Input_Byte(dat)。 // 寫(xiě)1Byte數(shù)據(jù) T_SCLK = 1。 T_CE = 0。 }//************從DS1302指定的地址讀取數(shù)據(jù),返回讀到的數(shù)據(jù)*******************************/uchar DS1302_Read ( uchar addr ) //數(shù)據(jù)讀取子程序{ uchar date。 T_CE=0。 T_SCLK=0。 T_CE = 1。 DS1302_Input_Byte(addr)。 // 地址,命令 date = DS1302_Output_Byte()。 // 讀1Byte數(shù)據(jù) T_SCLK = 1。 T_CE = 0。 return(date)。}//************向DS1302寫(xiě)入時(shí)間數(shù)據(jù)****************************************************/void DS1302_Write( uchar sec_w,min_w,hour_w){ DS1302_Write_one(0x8e,0x00)。//使能數(shù)據(jù)寫(xiě)入 DS1302_Write_one(0x80,sec_w)。//寫(xiě)入秒 DS1302_Write_one(0x82,min_w)。//寫(xiě)入分 DS1302_Write_one(0x84,hour_w)。//寫(xiě)入時(shí) DS1302_Write_one(0x8e,0x80)。//禁止寫(xiě)入數(shù)據(jù)}/************從DS1302讀取時(shí)間數(shù)據(jù)**********************************************************/void DS1302_readtime() { miao=DS1302_Read(0x81)。 //讀秒 fen=DS1302_Read(0x83)。 //讀分 shi=DS1302_Read(0x85)。 //讀時(shí)} . 溫度傳感器程序include include define uchar unsigned chardefine uint unsigned intinclude includesbit DQ=P3^0。/****************************************************************** 當(dāng)主機(jī)總線t0時(shí)刻從高拉至低電平時(shí)就產(chǎn)生寫(xiě)時(shí)間隙 從to 時(shí)刻開(kāi)始的1us之后,15us之前將所需寫(xiě)的位送到總線上 DSl820 在t0后的1560us 對(duì)總線采樣若低電平寫(xiě)入的位是0 ,若高電平寫(xiě)入的位是1 連續(xù)寫(xiě)2 個(gè)位之間的間隙應(yīng)大于1us 寫(xiě)1,總時(shí)間大于60us,在t0開(kāi)始延時(shí)1us就可以寫(xiě)1,15us之后ic來(lái)采樣,采樣時(shí)間最大45us 寫(xiě)0,總時(shí)間是60~120us,15~60us是ic在采樣,120以外就沒(méi)必要了,mcu總得釋放總線吧 不管寫(xiě)1還是寫(xiě)0,大于60us的話,ic肯定已經(jīng)采樣完成了,那mcu就可以釋放了 *******************************************************************/ void ds18b20_writeByte(uchar dat) //mcu向ic寫(xiě)一個(gè)字節(jié) { uchar i。 uchar tmep=dat。 for(i=0。i8。i++) { DQ=0。 //產(chǎn)生讀寫(xiě)時(shí)序的起始信號(hào) _nop_()。 //要求至少1us的延時(shí) DQ=dat amp。 0x01。 //對(duì)總線賦值,從最低位開(kāi)始寫(xiě)起 delayXus(10)。//延時(shí)74us,寫(xiě)0在60~120us之間釋放,寫(xiě)1的話大于60us均可釋放 DQ=1。 //釋放總線,為下一次mcu送數(shù)據(jù)做準(zhǔn)備, dat=1。 //有效數(shù)據(jù)移動(dòng)到最低位,2次寫(xiě)數(shù)據(jù)間隙至少需1us } }/************************************************************************** 下降沿產(chǎn)生讀時(shí)序 整個(gè)讀時(shí)序必須至少有60us的持續(xù)時(shí)間,相鄰兩個(gè)讀時(shí)序必須要有至少1us的恢復(fù)時(shí)間 DS18B20在讀時(shí)序產(chǎn)生1us后輸出數(shù)據(jù)到總線上,也有可能需要2~3個(gè)微秒,但不會(huì)更多 而要求主機(jī)釋放總線和采樣總線等動(dòng)作要在15μs內(nèi)完成,那么讓mcu采樣的最佳時(shí)機(jī) 是讀時(shí)序產(chǎn)生后的5~13us之間,在15~60us這段時(shí)間是18b20的私有時(shí)間,它會(huì)在這段 時(shí)間內(nèi)的任意時(shí)刻釋放總線,是不穩(wěn)定期,我們不要讓mcu在這段時(shí)間里對(duì)總線操作 *******************************************************/ uchar ds18b20_readByte() //mcu讀一個(gè)字節(jié) { uchar i,value=0。 for(i=0。i8。i++) { DQ=0。 //起始信號(hào) value=1。 //順便延時(shí)3~4個(gè)機(jī)器周期 DQ=1。 //mcu釋放總線 _nop_()。_nop_()。_nop_()。 // if(DQ) { value|=0x80。//保存高電平數(shù)據(jù),低電平的話不用保存,移位后默認(rèn)是0 } delayXus(8)。 // } return value。 } uint ds18b20_readTemperaData() //讀取溫度值 { uint temp=0。 if(ds18b20_init()) { ds18b20_writeByte(0xcc)。 //寫(xiě)指令:跳過(guò)rom檢測(cè) ds18b20_writeByte(0x44)。 //寫(xiě)指令:溫度轉(zhuǎn)換 //delayms(750)。// 轉(zhuǎn)換延時(shí)需要750ms以上,我們不等它 //首次轉(zhuǎn)換未完成時(shí),得到的初始化數(shù)據(jù)是85度,處理一下就可以了 //溫度轉(zhuǎn)換電路是硬件獨(dú)立的,不會(huì)阻塞初始化功能 if(ds18b20_init()) { ds18b20_writeByte(0xcc)。 //寫(xiě)指令:跳過(guò)檢測(cè)rom ds18b20_writeByte(0xbe)。 //寫(xiě)指令:讀取溫度值 temp=ds18b20_readByte()。 //先讀低8位數(shù)據(jù) temp|=(uint)ds18b20_readByte()8。 //再讀高8位數(shù)據(jù),然后合并 tempamp。= 0x0FFF。 //高4位數(shù)據(jù)反正沒(méi)用上,我們用來(lái)存放錯(cuò)誤碼 } } return temp。 } uchar ds18b20_init() //初始化 { uchar checkState=0。 DQ=1。 //總線初始狀態(tài) _nop_()。_nop_()。 DQ=0。 //mcu先將總線拉低 delayXus(80)。 //延時(shí)530us,要求480us~960us的低電平信號(hào) //當(dāng)ic接受到此復(fù)位信號(hào)后會(huì)回發(fā)一個(gè)存在信號(hào) //mcu若要接收此存在信號(hào)則先要釋放總線,讓ic控制該總線 //當(dāng)mcu釋放總線后的15~60us之后,ic才向總線發(fā)一個(gè)低電平信號(hào) //該信號(hào)存在時(shí)間為60~240us DQ=1。 //mcu釋放總線 delayXus(10)。 //mcu釋放15~60us以上,(8+6*10)*=73us, //這時(shí)DS18B20已經(jīng)拉低信號(hào),大約60~240us應(yīng)答保持時(shí)間, checkState=DQ。 //在這段60~240us時(shí)間內(nèi),mcu采樣是否有器件響應(yīng),0表示有響應(yīng) delayXus(70)。 //延時(shí)464us,加上之前的73us,共537us //雖然ic在拉低電平60~240us之后,會(huì)釋放總線,但整個(gè)時(shí)間至少480us //故我們共用時(shí)537us,這樣是為了不影響后續(xù)的操作 return 1。 //初始化成功 }
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1