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

正文內(nèi)容

基于51單片機的家用電熱水器的設計畢業(yè)設計(參考版)

2025-07-07 12:45本頁面
  

【正文】 。 30 致謝 在本次設計過程中首先要感謝我們的張守興老師的悉心指 導,他淵博的專業(yè)知識,嚴謹?shù)闹螌W態(tài)度,精益求精的工作作風,誨人不倦的高尚師德,嚴以律己、寬以待人的崇高風范,樸實無華、平易近人的人格魅力對我影響深遠。 本文的設計在開發(fā)板上完成了基本功能,對以后的以后的單片機開發(fā)有很好的借鑒意義。 當然,本設計中也有不足之處,在設計完成后單片機有時會有死機的情況,復位后又恢復到正常狀態(tài)。 本文主要完成的工作有: ( 1)本文闡述了 鍵盤輸入電路的基本原理,如何通過硬件與軟件消除抖動 ( 2) 本文闡述了 數(shù)碼管顯示原理,與如何動態(tài)顯示數(shù)字的方法并闡釋了如何方便快捷的調(diào)用數(shù)組使數(shù)碼管顯示相應的數(shù)字。 當環(huán)境溫度 高于輸入溫度時加熱停止。這里第二個發(fā)光二極管只是模擬加熱并沒有加熱功能,實際電路板中只需要將 P1^1 接在 MOC3041的 2 號接口上即可。 開發(fā)板等待輸入 輸入完成后,輸入的溫度比開發(fā)板所測量的環(huán)境溫度高時。 首先單片機顯示出采集到的溫度值,等待系統(tǒng)鍵入溫度,一旦鍵入 3 個數(shù)字,則第一個、第二個、第三個數(shù)字分別為需要溫度的十位、個位和小數(shù)點后一位。 ( 2) 可用鍵盤方便地設定水溫,并顯示設定的 溫度。這樣就達到了控溫的目的。 } } } 采用定時器 T0,定時器設定每 30ms 中斷一次,判斷輸入的數(shù)值與采集的數(shù)值之間的大小,如果前者較大就使 P2^1 變?yōu)榈碗娖?,從而?MOC3041 啟動并引起加熱。 P1=0xff。 jiar=0。num3!=21) { jiar=1。num2!=21amp。num1!=21amp。 if(a=numyamp。 if(zd==6) { zd=0。 TL0=(6553646000)%256。 中斷加熱子函數(shù)的分析 27 以下是程序: void timer0() interrupt 1 { int a。這里要注意的是每次都要 將 aaa 清零,因為 aaa 為 1 時,輸入子函數(shù) uchar scanff()的返回值變?yōu)橐粋€使數(shù)碼管顯示一個下劃線的數(shù)值, aaa 為 0 時鍵盤可以通過 uchar scanff()向數(shù)碼管顯示 09 中的任何一個數(shù)值。 這里鍵盤輸入溫度的數(shù)碼管顯示使用的是 switch(bbb)語句完成的, bbb 共有 0、 3,這四種情況, bbb 等于 0 時是無任何輸入的情況, bbb 等于 1 時是輸入了需要溫度的十位, bbb 等于 2 時是輸入了需要溫度的個位, bbb 等于 3 時是 輸入了需要溫度的小數(shù)點后一位,這里沒有超過 100 度和低于 0度的設計。 ccc 的作用是防止出現(xiàn)什么都不輸入直接確認給程序帶來的 bug,出現(xiàn)這種情況時系統(tǒng)不做其他的任何反應,保持在這時的輸入狀態(tài),直到用戶輸入了一個數(shù)字為止。 } 上面這句話就是第一種和第四種情 況的描述。 if(a0)//負值 后面加個小數(shù)點 dis[3]+=10。(dis[1]==0)) dis[1]=20。 if((dis[0]==0)amp。第三:只有幾度沒有超過十度。這里顯示時 需要 考 慮 DS18B20 采集的數(shù)據(jù)中的各種情況,第一:超過了 100 度。分別將 dda 的千位、百位、十位、個位取出存放在 Numx,num1, num2, num3 中。 } } 首先 要清楚 a 是 DS18B20 芯片獲取的溫度, b 是 需要 輸入的溫度,也就是 要求的水溫。 default:bbb=0。num=21。 duan=0。 duan=1。 duan=0。 26 duan=1。// srtemp=_crol_(srtemp,1)。 P0=srtemp。i++) { P0=0xff。 for(i=1。 else dis[2]+=10。 dis[3]=num3。 case 3: dis[1]=num1。 } aaa=0。 P0=0x00。 delay(1)。 P0=table[dis[i]]。 P0=0x00。//wein 打開后 是低電平亮 wei=0。 wei=1。i4。 srtemp=0xfe。 if(dis[2]==21) dis[2]++。 25 dis[3]=b。 case 2: dis[1]=num1。 } aaa=0。 P0=0x00。 delay(1)。 P0=table[dis[i]]。 P0=0x00。//wein 打開后 是低電平亮 wei=0。 wei=1。i4。 srtemp=0xfe。 if(dis[2]==21) dis[2]++。 num2=b。 case 1: dis[1]=num1。 duan=0。 duan=1。 duan=0。 duan=1。// 24 srtemp=_crol_(srtemp,1)。 P0=srtemp。i++) { P0=0xff。 for(i=1。 else dis[2]+=10。 dis[3]=num3。 num1=b。ccc!=21) bbb++。 if(aaa==1amp。 P0=0x00。 delay(3)。 P0=table[dis[i]]。 P0=0。 P0=temp。 wei=1。i4。 } temp=0xfb。//如果百位 和十位都為 0 不顯示 23 if(a0)//負值 后面加個小數(shù)點 dis[3]+=10。amp。 dis[2]+=10。 dis[2]=num5。 dis[0]=numx。 num5=dda%100/10。 numx=dda/1000。 uint dda。 顯示函數(shù)的分析 以下 是 display()函數(shù)的具體內(nèi)容。 } } 這里的 aaa 用于控制是否確定輸入的一個數(shù)字是需要的數(shù)字, bbb 用于標記已經(jīng)輸入到了三個數(shù)字的 第幾個數(shù)字 。 numy=gettemp()。 a=gettemp()。 uchar b。num3=21。 num1=21。aaa=0。 zd=0。 ET0=1。 22 TL0=(6553646000)%256。 主函數(shù)的分析 首先給出主函數(shù): void main() { TMOD=0x01。 現(xiàn)在已 獲得了 溫度的數(shù)據(jù), 還要通過軟件計算出具體傳送數(shù)據(jù)代表的溫度值,在前面已經(jīng)談到數(shù)據(jù)中的 1 就代表了 攝氏度。使用 readbyte()讀取兩個字節(jié)的數(shù)據(jù),分別賦予 geta、 getb兩個字符型變量,再將 getb 賦予 temp( temp 是一個整型變量擁有兩個字節(jié)的容量),這樣 temp 的低 8為就是 getb 中的值了。然后溫度獲取 gettemp()子函數(shù)完成。//,變大十倍且 四舍五入 return(temp)。 tt=temp*。 temp=8。//讀取兩個字節(jié) getb=readbyte()。//讀取溫度命令 delay(2)。 writeor(0xcc)。 dswait()。 21 uchar geta,getb。 } uint gettemp()//獲取溫度 { float tt。// 跳過讀序號列號的操作 writeor(0x44)。 delay(1)。軟件實施方法如下: void changetemp()//溫度轉(zhuǎn)變函數(shù) { dsstart()。 } } } 當以上程序書寫完成后,準備工作基本完成。 b++。b++)。 for(b=0。b++)。 for(b=0。 b++,b++。 order=1。a++) { bit2=orderamp。 for(a=0。 bit bit2。 void writeor(uchar order)//寫入命令 { uint b。 } 20 以下為寫入命令程序。 b++。 while(b8) { a=readbit()。 b=0。 } uchar readbyte()//讀取一個字節(jié) { uint b。 while(i0) i。 //延時約 16us, 符合協(xié)議要求的至少延時 15us 以上 b=ds。 i++。 i++。 bit b??梢栽跍囟炔杉x取時調(diào)用。 while(i0) i。 //等待應答信號 while(~ds)。 void dswait() { unsigned int i。 } 然后延時等待,回應。 //產(chǎn)生一個 上升沿 , 進入等待應答狀態(tài) i=4。 //拉低約 800us, 符合協(xié)議要求的 480us 以上 while(i0) i。 19 ds=0。首先要初始化 DS18B20 以下 為初始化程序。 經(jīng)過檢測以后通過不同的 temp 值,使 num 被賦予相應的數(shù)值,這樣 num 就是要輸入的一個數(shù)字。0xf0。 } while(temp!=0xf0) { temp=P3。 case 0x7d:num=3。 case 0xbd:num=2。 case 0xdd:num=1。 switch(temp) { case 0xed:num=0。0xf0。 temp=P3。 17 圖 外部供電方式的多點測溫電路圖 18 第 3 章 系統(tǒng)軟件設計 鍵盤輸入的程序 while(temp!=0xf0) { delay(5)。站長推薦大家在開發(fā)中使用外部電源供電方式,畢竟比 寄生電源方式只多接一根 VCC引線。 圖 設計中采用的 測溫電路 直接將 DS18B20 的 I/O 口接在單片機的 P2^2 上 ,這樣在硬件方面就可以進行數(shù)據(jù)交流,從而達到溫度數(shù)據(jù)傳輸?shù)哪康?。注意?在外部供電的方式下, DS18B20 的 GND 引腳不能懸空,否則不能轉(zhuǎn)換溫度,讀取的溫度總是 85℃ 。 DS18B20 外部 電源供電方式 DS18B20 的外部電源供電方式見圖 所示, 在外部電源供電方式下, DS18B20 工作電源由 VDD 引腳接入,此時 I/O 線不需要強上拉,不存在電源電流不足的問題,可以保證轉(zhuǎn)換精度,同時在總線上理論可以掛接任意多。在強上拉方式下可以解決電流供應不走的問題,因此也適合于多點測溫應用,缺點就是要多占用一根 I/O 口線進行強上拉切換。并且工作電源 VCC 必須保證在 5V,當電源電壓下降時,
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1