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

正文內(nèi)容

基于ds18b20電子實(shí)時(shí)時(shí)鐘萬年歷系統(tǒng)c程序設(shè)計(jì)畢業(yè)論文-資料下載頁

2025-06-27 17:46本頁面
  

【正文】 Inter Corp. 1981 附錄1 仿真電路圖 完整電路圖 鍵盤電路 溫度傳感器電路 附錄2 一、DS1302芯片的操作程序(部分程序)/*****************************************************函數(shù)功能:向1302寫一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):x***************************************************/ void Write1302(unsigned char dat){ unsigned char i。 SCLK=0。 //拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準(zhǔn)備 delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 for(i=0。i8。i++) //連續(xù)寫8個(gè)二進(jìn)制位數(shù)據(jù) { DATA=datamp。0x01。 //取出dat的第0位數(shù)據(jù)寫入1302 delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 SCLK=1。 //上升沿寫入數(shù)據(jù) delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 SCLK=0。 //重新拉低SCLK,形成脈沖 dat=1。 //將dat的各數(shù)據(jù)位右移1位,準(zhǔn)備寫入下一個(gè)數(shù)據(jù)位 } }/*****************************************************函數(shù)功能:根據(jù)命令字,向1302寫一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):Cmd,儲(chǔ)存命令字;dat,儲(chǔ)存待寫的數(shù)據(jù)***************************************************/ void WriteSet1302(unsigned char Cmd,unsigned char dat) { RST=0。 //禁止數(shù)據(jù)傳遞 SCLK=0。 //確保寫數(shù)居前SCLK被拉低 RST=1。 //啟動(dòng)數(shù)據(jù)傳輸 delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 Write1302(Cmd)。 //寫入命令字 Write1302(dat)。 //寫數(shù)據(jù) SCLK=1。 //將時(shí)鐘電平置于已知狀態(tài) RST=0。 //禁止數(shù)據(jù)傳遞 }/*****************************************************函數(shù)功能:從1302讀一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):x***************************************************/ unsigned char Read1302(void) { unsigned char i,dat。 delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 for(i=0。i8。i++) //連續(xù)讀8個(gè)二進(jìn)制位數(shù)據(jù) { dat=1。 //將dat的各數(shù)據(jù)位右移1位,因?yàn)橄茸x出的是字節(jié)的最低位 if(DATA==1) //如果讀出的數(shù)據(jù)是1 dat|=0x80。 //將1取出,寫在dat的最高位 SCLK=1。 //將SCLK置于高電平,為下降沿讀出 delaynus(2)。 //稍微等待 SCLK=0。 //拉低SCLK,形成脈沖下降沿 delaynus(2)。 //稍微等待 } return dat。 //將讀出的數(shù)據(jù)返回} /*****************************************************函數(shù)功能:根據(jù)命令字,從1302讀取一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):Cmd***************************************************/ unsigned char ReadSet1302(unsigned char Cmd) { unsigned char dat。 RST=0。 //拉低RST SCLK=0。 //確保寫數(shù)居前SCLK被拉低 RST=1。 //啟動(dòng)數(shù)據(jù)傳輸 Write1302(Cmd)。 //寫入命令字 dat=Read1302()。 //讀出數(shù)據(jù) SCLK=1。 //將時(shí)鐘電平置于已知狀態(tài) RST=0。 //禁止數(shù)據(jù)傳遞 return dat。 //將讀出的數(shù)據(jù)返回}/*****************************************************函數(shù)功能: 對1302進(jìn)行寫設(shè)置和寫數(shù)據(jù)***************************************************/ void Init_DS1302(void){ WriteSet1302(0x8E,0x00)。 //1302進(jìn)行初始化,根據(jù)寫狀態(tài)寄存器命令字,寫入不保護(hù)指令 WriteSet1302(0x80,((time_m/10)4|(time_m%10)))。 //根據(jù)寫秒寄存器命令字,寫入秒的初始值 WriteSet1302(0x82,((time_f/10)4|(time_f%10)))。 //根據(jù)寫分寄存器命令字,寫入分的初始值 WriteSet1302(0x84,((time_s/10)4|(time_s%10)))。 //根據(jù)寫小時(shí)寄存器命令字,寫入小時(shí)的初始值 WriteSet1302(0x86,((time_r/10)4|(time_r%10)))。 //根據(jù)寫日寄存器命令字,寫入日的初始值 WriteSet1302(0x88,((time_y/10)4|(time_y%10)))。 //根據(jù)寫月寄存器命令字,寫入月的初始值 WriteSet1302(0x8a,((time_w/10)4|(time_w%10)))。 //根據(jù)寫周寄存器命令字,寫入周的初始值 WriteSet1302(0x8c,((time_n/10)4|(time_n%10)))。 //根據(jù)寫年寄存器命令字,寫入年的初始值}二、溫度模塊程序(部分程序) /*產(chǎn)生復(fù)位脈沖初始化DS18B20*/void Init(){ uint i=100。 DQ=0。 while(i0)i。//拉低約900us DQ=1。//拉高電平,產(chǎn)生上升沿 i=4。 while(i0)i。}/*等待應(yīng)答脈沖*/void Wait(){ uint i。 while(DQ)。 while(~DQ)。 //檢測到應(yīng)答脈沖 i=4。 while(i0)i。}/*讀數(shù)據(jù)一位*/bit Rebit(){ uint i。 bit b。 DQ=0。 i++。//保持低電平至少1us DQ=1。 i++。i++。//延時(shí)15us以上,讀時(shí)隙下降沿后15us,DS18B20輸出數(shù)據(jù)才有效 b=DQ。 i=9。 while(i0)i。//讀時(shí)隙不低于60us return(b)。}/*讀一個(gè)字節(jié)數(shù)據(jù)*/uchar Rebyte(){ uchar i,j=0,k=0。 for(i=0。i8。i++) { k=Rebit()。 j=(k7)|(j1)。 } return(j)。}/*寫一個(gè)字節(jié)數(shù)據(jù)*/void Wrbyte(uchar b){ uint i,j。 bit temp。 for(j=0。j8。j++) { temp=bamp。0x01。 b=1。 if(temp) { /*寫1*/ DQ=0。 i++。i++。//延時(shí)15us DQ=1。 i=8。 while(i0)i。//整個(gè)寫1時(shí)隙不低于60us } else { /*寫0*/ DQ=0。 i=8。 while(i0)i。 DQ=1。 i++。i++。 } }}/*啟動(dòng)溫度轉(zhuǎn)化*/void Convert(){ Init()。//初始化DS18B20 Wait()。//等待應(yīng)答 delay(1)。//延時(shí) Wrbyte(0xcc)。//skip rom命令 Wrbyte(0x44)。//convert T命令}/*讀取溫度值*/void Retemp(){ Init()。//初始化DS18B20 Wait()。//等待應(yīng)答 delay(1)。//延時(shí) Wrbyte(0xcc)。//skip rom命令 Wrbyte(0xbe)。//read scratchpad(讀暫存器)命令 tplsb=Rebyte()。//溫度低位字節(jié)(其中第四位為小數(shù)部分) tpmsb=Rebyte()。//溫度高位字節(jié)(其中高五位為符號位) temp=(tpmsb*256+tplsb)*。//轉(zhuǎn)換}//溫度顯示void Display(){ Convert()。//溫度轉(zhuǎn)換 delay(10)。 Retemp()。//讀溫度 delay(10)。 WriteAddress(0xb)。 WriteData(digit[temp/10])。 WriteData(digit[temp%10])。
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1