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

正文內(nèi)容

基于stc89c52單片機(jī)的數(shù)字溫度計(jì)_單片機(jī)課程設(shè)計(jì)-資料下載頁(yè)

2025-08-16 14:16本頁(yè)面

【導(dǎo)讀】隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,實(shí)驗(yàn)結(jié)果表明,DS18B20與STC89C52結(jié)合可以實(shí)現(xiàn)最簡(jiǎn)溫度檢測(cè)系統(tǒng),

  

【正文】 讀取一個(gè)字節(jié) */ unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i) { DQ = 0。 // 給脈沖信號(hào) dat=1。 19 DQ = 1。 // 給脈沖信號(hào) if(DQ) dat|=0x80。 DelayUs2x(25)。 } return(dat)。 } /* 寫(xiě)入一個(gè)字節(jié) */ void WriteOneChar(unsigned char dat) { unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。0x01。 DelayUs2x(25)。 DQ = 1。 dat=1。 } DelayUs2x(25)。 } /* 讀取溫度 */ unsigned int ReadTemperature(void) { unsigned char a=0。 unsigned int b=0。 unsigned int t=0。 Init_DS18B20()。 WriteOneChar(0xCC)。 // 跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0x44)。 // 啟動(dòng)溫度轉(zhuǎn)換 DelayMs(10)。 20 Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器等(共可讀 9個(gè)寄存器) 前兩個(gè)就是溫度 a=ReadOneChar()。 //低位 b=ReadOneChar()。 //高位 b=8。 t=a+b。 return(t)。 } include /* uS 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值 unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是 0~255 這里使用晶振 12M,精確延時(shí)請(qǐng)使用匯編 ,大致延時(shí) 長(zhǎng)度如下 T=tx2+5 uS */ void DelayUs2x(unsigned char t) { while(t)。 } /* mS 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值 unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是 0~255 這里使用晶振 12M,精確延時(shí)請(qǐng)使用匯編 */ void DelayMs(unsigned char t) { while(t) { //大致延時(shí) 1mS DelayUs2x(245)。 DelayUs2x(245)。 } 21 } /* 內(nèi)容:顯示格式 符號(hào) C 可以顯示負(fù)溫度 */ include //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 include void DelayUs2x(unsigned char t)。 void DelayMs(unsigned char t)。 bit ReadTempFlag。//定義讀時(shí)間標(biāo)志 sbit sounder=P1^0。 define DataPort P0 //定義段數(shù)據(jù)端口 程序中遇到 DataPort 則用 P0 替換 define SegPort P2 //定義位數(shù)據(jù)端口 sbit ZD=P3^2。 unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 // 顯示段碼值 01234567 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}。 //分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮 ,即位碼 unsigned char TempData[8]。 //存儲(chǔ)顯示值的全局變量 void Display(unsigned char FirstBit,unsigned char Num)。//數(shù)碼管顯示函數(shù) void Init_Timer0(void)。//定時(shí)器初始化 /* 主函數(shù) */ void main (void) { unsigned int TempH,TempL,temp。 22 Init_Timer0()。 while (1) //主循環(huán) { if(ReadTempFlag==1) { ReadTempFlag=0。 temp=ReadTemperature()。 if(tempamp。0x8000) { TempData[0]=0x40。//負(fù)號(hào)標(biāo)志 temp=~temp。 // 取反加 1 temp+=1。 TempH=temp4。 /*if(TempH24) //中斷觸發(fā)語(yǔ)句?。。。。? { ZD=0。 }*/ } else { TempData[0]=0。 TempH=temp4。 if(TempH25||TempH21) //中斷觸發(fā)語(yǔ)句!?。。?! { ZD=0。 } } TempH=temp4。 TempL=tempamp。0x0F。 TempL=TempL*6/10。//小數(shù)近似處理 if(TempH/100==0) TempData[1]=0。 else TempData[1]=dofly_DuanMa[TempH/100]。 //百位溫度 23 if((TempH/100==0)amp。amp。((TempH%100)/10==0))//消隱 TempData[2]=0。 else TempData[2]=dofly_DuanMa[(TempH%100)/10]。 //十位溫度 TempData[3]=dofly_DuanMa[(TempH%100)%10]|0x80。 //個(gè)位溫度 ,帶小數(shù)點(diǎn) TempData[4]=dofly_DuanMa[TempL]。 TempData[6]=0x39。 //顯示 C符號(hào) } } } /* 顯示函數(shù),用于動(dòng)態(tài)掃描數(shù)碼管 輸入?yún)?shù) FirstBit 表示需要顯示的第一位,如賦值 2 表示從第三個(gè)數(shù)碼管開(kāi)始顯示 如輸入 0表示從第一個(gè)顯示。 Num 表示需要顯示的位數(shù),如需要顯示 99 兩位 數(shù)值則該值輸入 2 */ void Display(unsigned char FirstBit,unsigned char Num) { static unsigned char i=0。 DataPort=0。 //清空數(shù)據(jù),防止有交替重影 SegPort=dofly_WeiMa[i+FirstBit]。 //取位碼 DataPort=TempData[i]。 //取顯示數(shù)據(jù),段碼 i++。 if(i==Num) i=0。 24 } /* 定時(shí)器初始化子程序 */ void Init_Timer0(void) { TMOD |= 0x01。 //使用模式 1, 16 位定時(shí)器,使用 |符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響 TH0=(655362020)/256。 //重新賦值 2ms TL0=(655362020)%256。 EA=1。 //總中斷打開(kāi) ET0=1。 //定時(shí)器中斷打開(kāi) TR0=1。 //定時(shí)器開(kāi)關(guān)打開(kāi) EX0=1。 //外部中斷 0打開(kāi) } /* 定時(shí)器中斷子程序 */ void Timer0_isr(void) interrupt 1 { static unsigned int num。 TH0=(655362020)/256。 //重新賦值 2ms TL0=(655362020)%256。 Display(0,8)。 // 調(diào)用數(shù)碼管掃描 num++。 if(num==300) // { num=0。 ReadTempFlag=1。 //讀標(biāo)志位置 1 } } /* 外部中斷程序 */ void Inter0_isr(void) interrupt 0 { 25 unsigned int a=50000,i,b=2。 DataPort=0。 SegPort=0。 DataPort=dofly_DuanMa[0]。 while(a)。 while(b) { for(i=0。i200。i++) { DelayUs2x(200)。 sounder=!sounder。 } sounder=0。//防止一直給喇叭通電造成損壞 for(i=0。i200。i++) { DelayMs(1)。 } } sounder=1。 ZD=1。 } 26 致謝 本次論文 格式 是在 通信與電子工程學(xué)院的領(lǐng)導(dǎo)及各位老師的鞭撻下完成, 在論文 格式的 寫(xiě)作過(guò)程中 ,指導(dǎo)教師淵博的知識(shí)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、兢兢業(yè)業(yè)的工作作風(fēng)、忘我的工作精神和謙和的為人使我受益匪淺,老師的教誨和啟發(fā)使我終生難忘。在此向各位指導(dǎo)教師表示最誠(chéng)摯和最衷心的感謝。 27 項(xiàng)目創(chuàng)新及特色 采用可編程器件作為控制核心,與傳統(tǒng)的溫度計(jì)相比,具有示數(shù)直觀,精度可調(diào),測(cè)溫范圍廣,功能易擴(kuò)展等優(yōu)點(diǎn)。 通過(guò) DS18B20 直接讀取被測(cè)溫度值,進(jìn)行數(shù)據(jù)轉(zhuǎn)換,該器件的物理化學(xué)性能穩(wěn)定,線性 度較好,在 55℃ +125℃最大線性偏差小于 ℃,該器件可直接向單片機(jī)傳輸數(shù)字信號(hào),便于單片機(jī)處理及控制。 該溫度計(jì)還能直接采用測(cè)溫器件測(cè)量溫度,從而簡(jiǎn)化數(shù)據(jù)傳輸與處理過(guò)程。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1