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

正文內(nèi)容

基于單片機(jī)控制的數(shù)字溫度計(jì)課程設(shè)計(jì)-wenkub

2023-03-09 11:25:24 本頁(yè)面
 

【正文】 上拉電阻。這樣可以節(jié)省掉 P0口上拉電阻, P1口處于電路更穩(wěn)定的考慮,我用了上拉電阻。當(dāng)溫度正常不超過(guò)上下限時(shí),綠色發(fā)光二級(jí)管亮。三極管基極接單片機(jī)的 P3^7口,平時(shí)輸出高電平,當(dāng)超過(guò)上下限時(shí)輸出低電平,三極管導(dǎo)通,驅(qū)動(dòng)蜂鳴器工作。 主程序里面先給單片機(jī)各個(gè)端口賦初值,然后執(zhí)行芯片初始 化程序,再讀取溫度并計(jì)算,最后送給數(shù)碼管顯示并和上下限溫度比較來(lái)決定是否報(bào)警。其程序流程圖如圖 8示 溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令,當(dāng)采用 12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為 750ms,在本程序設(shè)計(jì)中采用 1s 顯示程序延時(shí)法等待轉(zhuǎn)換的完成。程序流程圖如圖 11所示 圖 11 報(bào)警電路流程圖 開(kāi)始 溫度零下 ? 溫度值取補(bǔ)碼置“ — ”標(biāo) 志 計(jì)算小數(shù)位溫度 BCD值 計(jì)算整數(shù)位溫度 BCD值 結(jié)束 置“ +”標(biāo)志 N Y 得到溫度 是否超過(guò) 上下限 報(bào)警 不報(bào)警 N Y 4 結(jié)束語(yǔ) 經(jīng)過(guò)將近三周的單片機(jī)課程設(shè)計(jì),終于完成了我的數(shù)字溫度計(jì)的設(shè)計(jì),雖然沒(méi)有完全達(dá)到設(shè)計(jì)要求,但是還是很高興的。通過(guò)檢修,原來(lái)是數(shù)碼管裝反了。以后做事一定要小心認(rèn)真,可以為后期節(jié)省很多時(shí)間。 sbit k3 = P2^6。 sbit led1 = P2^2。 void ShowTem()。void alarm()。unsigned char read1820(void)。void delay_us(uchar a) { while(a)。 //拉低數(shù)據(jù)線,準(zhǔn)備 Reset OneWire Bus; delay_us(125)。 //延時(shí) 35us; while(DQ) //等待 Slave 器件 Ack 信號(hào); { _nop_()。 for(i=0。 //結(jié)束 Recovery time; _nop_()。 } //發(fā)送數(shù)據(jù) 。_nop_()。 //Recovery。 } } //*******read************ unsigned char read1820(void) { unsigned char i。 //準(zhǔn)備讀; for(i=0。 //Read init; _nop_()。 if(DQ) //在 12us處讀取數(shù)據(jù); tmp |= 0x80。 //恢復(fù) One Wire Bus; } return tmp。 write1820(0xcc)。 write1820(0xcc)。 init1820()。 tp =temp**10+。 tp = temp**10+。 //報(bào)警溫度的高低值 uint Tem。 } /*************** * 函 數(shù):設(shè)置低溫溫度報(bào)警值函數(shù) * 參 數(shù):無(wú) * 返 回 : 無(wú) ****************/ void SetLowTem() { while(1) { display((LNum*10)%10,LNum%10,(LNum%100)/10,18)。 } if(k3 == 0) delay_ms(50)。 //按鍵消抖 if(k4 == 0) { while(!k4)。 //等待按鍵釋放 while(1) { display((HNum*10)%10,HNum%10,(HNum%100)/10,17)。 //設(shè)置低溫報(bào)警溫度 break。 } if(k3 == 0) delay_ms(50)。 //按鍵消抖 if(k4 == 0) { while(!k4)。led2 = 0。 Tem=Tem/10。buzzer = 0。 buzzer = 0。buzzer = 1。 dula = table[first]。 dula = table1[second]。 dula = table[third]。 dula = table[forth]。 for(i=0。 j++)。 } } 附錄 4 實(shí)物圖 。 while(1) { SetHighTem()。 i++) for(j=0。dula = 0xff。 dula = 0xff。 dula = 0xff。 dula = 0xff。 //16是“ ” ,17是“ H”, 18是“ L” uchar code table1[]={ //第三個(gè)數(shù)碼管有小數(shù)點(diǎn),所以不一樣 0x40,0x79,0x24,0x30, 0x19,0x12,0x02,0x78, 0x00,0x10,0x08,0x03, 0x46,0x21,0x06,0x0e}。led2 = 0。led1 = 0。led1 = 0。buzzer = 1。 } } } ShowTem()。 //等待按鍵釋 放 HNum。 //按鍵消抖 if(k2 == 0) { while(!k2)。 //按鍵消抖 if(k1 == 0) { while(!k1)。 } } } /*************** * 函 數(shù):設(shè)置高溫溫度報(bào)警值函數(shù) * 參 數(shù):無(wú) * 返 回 : 無(wú) ****************/ void SetHighTem() { if(k1 == 0) //按鍵消抖 delay_ms(10)。 //等待按鍵釋放 LNum。 //按鍵消抖 if(k2 == 0) { while(!k2)。 /* 讀取 18b20溫度 */ if(flag == 1) //顯示負(fù)溫度 display(Tem%10,Tem%100/10,(Tem%1000)/100,16)。 } extern unsigned char idata flag。 tp=~tp。 flag = show[1] 7。 show[0]=read1820()。 write1820(0x44)。 float temp。 //延時(shí) 55us; DQ = 1。 //必須寫(xiě) 1,否則讀出來(lái)的將是不預(yù)期的數(shù)據(jù); delay_us(2)。i++) { tmp = 1。 DQ = 1。 //Recovery Time Start。 } //發(fā)送數(shù)據(jù); delay_us(30)。 //結(jié)束 Rec time; _nop_()。_nop_()。i++) {if(a amp。 //延時(shí) 125us; DQ = 1。 DQ = 1。 _nop_()。unsigned char idata flag。void init1820()。void SetHighTem()。 void display(uint first,uint second,uint third,uint forth)。 sbit led3 = P2^0。 sbit k1 = P2^4。通過(guò)這次動(dòng)手調(diào)試,掌握了一定的調(diào)試電路的方法。板子剛做好的時(shí)候,通上電后什么都不顯示,自己也很著急,弄了半天效果依舊。 圖 10 計(jì)算溫度流程圖 報(bào)警電路子程序 通過(guò) 18b20得到溫度以后,因?yàn)樾枰A粢晃恍?shù),所以返回的溫度值是其實(shí)際值得十倍。 主程序流程圖如圖 7所示。 12345678RST/VPD91011121314151617XTAL218XTAL119GND202122232425262728PSEN29ALE/PROG30EA/VPP313233343536373839VCC40AT89C52GNDS2S3S4S5LED3LED1LED2330Ra330Rb330Rc1kReBUZ1Q1
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1