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

正文內(nèi)容

畢業(yè)設(shè)計(jì)--基于51單片機(jī)的家用電熱水器設(shè)計(jì)-預(yù)覽頁

2025-01-02 04:53 上一頁面

下一頁面
 

【正文】 .................................................. 37 1 第 1 章 緒論 單片機(jī)是一種與我們生活息息相關(guān)的控制器,它存在于許多地方,例如:電子手表、掌上游戲機(jī)、數(shù)碼相機(jī)、錄音筆、電視機(jī)遙控器等等 。 市場(chǎng)上傳統(tǒng)的機(jī)械式電熱水器控制精度低、可靠性差, 甚至 存在 一定 的危險(xiǎn)隱患 。 TX1C 單片機(jī) 實(shí)驗(yàn) 開發(fā)板簡(jiǎn)介 XT1C 單片機(jī)開發(fā)板是哈爾濱市天祥電子綜合多年開發(fā)經(jīng)驗(yàn),在原 TX1B基礎(chǔ)上,經(jīng)過精心設(shè)計(jì)開發(fā)出的多功能 51 單片機(jī)開發(fā)平臺(tái)。 本文將使用 TX1C 開發(fā)板完成數(shù)字化電熱水器的設(shè)計(jì)。 單片機(jī)的 P0 口連接 74HC573 鎖存器 ,這樣可以節(jié)約單片機(jī)端口 , 即 可 多次操作 P0 口,使其 既 能控制 數(shù)碼管的片選,又能控制數(shù)碼管的位選,從而節(jié)省的單片機(jī)的外部接口,擴(kuò)展了功能。 加熱模塊 見圖 所示 , MOC3041 芯片的 2 號(hào)接口 連接 單片機(jī)的 P2^2 口 。 使用 LED 顯示器時(shí),要注意區(qū)分這兩種不同的接法。本設(shè)計(jì)采用的 TXC1 實(shí)驗(yàn)板是采用共陰 LED 顯示器,根據(jù)電路連接圖顯示 十六 進(jìn)制數(shù)的編碼 見 表 所示 。 段選在程序中由 duan 表示 ,單片機(jī)上是 P2^6 端口 ,與位選相同,操作時(shí)使 P2^6 呈現(xiàn)高電平,這時(shí) P0 的八個(gè)端口對(duì)數(shù)碼管的操作決定了亮的幾個(gè)數(shù)碼管顯示什么數(shù)字, P0 操作完成后使 P2^6 呈現(xiàn)低電平,這樣段選就已鎖定。 可以直接設(shè)置數(shù)碼管顯示 各 數(shù)字 的十六進(jìn)制 , 即 P0 口應(yīng)賦的十六進(jìn) 制,以便操作。 P2^7 賦低電平時(shí) , 74HC573 芯片將記住最近一次 L 端口是高電平時(shí)芯片輸入端的 8 位,并將其輸出,當(dāng)輸入端變化時(shí),輸出端不變化。 wei=1。 P0=0x00。 delay(1)。 要注意的是位選(程序中的 wei 變量) ,位選 是低電平時(shí)選擇該數(shù)碼管亮。 S20 代表確認(rèn)數(shù)字,按下后即可確認(rèn)要輸入數(shù)字的某一位。依次循環(huán)掃描三行 即可 時(shí)時(shí)檢測(cè)是否有鍵按下。具體程序如下: while(temp!=0xf0) { delay(5)。0xf0。 獨(dú)特的單線接口方式, DS18B20 在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與 DS18B20 的雙向通訊。在使用中不需要任何外圍元件,測(cè)量結(jié)果以 9~12 位數(shù)字量方式串行傳送。 DS18B20 的外形及管腳排列 見 圖 所示 。 DS18B20 的的初始化 見 圖 所示。 當(dāng)需要傳送 “0”時(shí),單片機(jī)應(yīng)該給 DS18B20 芯片的 DQ 接口賦低電平,并且持續(xù)拉低最少 60 微妙,然后將 DQ 釋放為高電平,再延時(shí)約 15 秒即可。 圖 DS18B20 的 讀 操作時(shí)序圖 DS18B20 的指令與格式 DS18B20 溫度格式圖見圖 所示。配置寄存器, 該字節(jié)各位的意義見 表 所示。對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位 S=0 時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng) S=1 時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。 ROM 指令表見表 所示, RAM指令表見表 所示。 跳過 ROM 0CCH 忽略 64 位 ROM 地址,直接向 DS1820 發(fā)溫度變換命令。結(jié)果存入內(nèi)部 9字節(jié) RAM中。 讀供電方式 0B4H 讀 DS1820的供電模式。 獨(dú)特的寄生電源方式有三個(gè)好處: 1. 進(jìn)行遠(yuǎn)距離測(cè)溫時(shí),無需本地電源 ; 2. 可以在沒有常規(guī)電源的條件下讀取 ROM; 3. 電路更加簡(jiǎn)潔,僅用一根 I/O 口實(shí)現(xiàn)測(cè)溫 。 圖 DS18B20 寄生電源供電方式 DS18B20 改進(jìn)的 寄 生電源供電方式 DS18B20 寄生電源強(qiáng)上拉供電方式電路圖 , 改進(jìn)的寄生電源供電方式見 圖 所示,為了使 DS18B20 在動(dòng)態(tài)轉(zhuǎn)換周期中獲得足夠的電流供應(yīng),當(dāng)進(jìn)行溫度轉(zhuǎn)換或拷貝到 E2 存儲(chǔ)器操作時(shí),用 MOSFET 把 I/O 線直接拉到VCC 就可提供足夠的電流,在發(fā)出任何涉及到拷貝到 E2 存儲(chǔ)器或啟動(dòng)溫度轉(zhuǎn)換的指令后,必須在最多 10μS 內(nèi)把 I/O 線轉(zhuǎn)換到強(qiáng)上拉狀態(tài)。 DS18B20 傳感器,組成多點(diǎn)測(cè)溫系統(tǒng)。 DS18B20 寄生電源供電方式 外部供電方式的多點(diǎn)測(cè)溫電路圖見圖 , 外部電源供電方式是DS18B20 最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強(qiáng),而且電路也比較簡(jiǎn) 單,可以開發(fā)出穩(wěn)定可靠的多點(diǎn)溫度監(jiān)控系統(tǒng)。 P3=0xfd。 while(temp!=0xf0) { temp=P3。 break。 break。//****0000 } 21 } 在這里使用了 _crol_函數(shù),所以頭文件中要增加 include,這里包括去抖和松手檢測(cè)。 void dsstart() { unsigned int i。 ds=1。如以下子函數(shù)。 //檢測(cè)到應(yīng)答脈沖 i=4。 bit readbit()//讀取一個(gè) bit 22 { unsigned int i。 //延時(shí)約 8us, 符合協(xié)議要求至少保持 1us ds=1。 i=8。 uchar date,a。 date=(a7)|(date1)。用于操控 DS18B20。 b=0。0x01。 ds=1。 } else//0 { ds=0。 ds=1?,F(xiàn)在只要調(diào)用這些函數(shù),來操控 DS18B20 使其能夠按協(xié)議規(guī)定將溫度數(shù)據(jù)傳送給單片機(jī)。 24 writeor(0xcc)。 int temp。 delay(1)。 geta=readbyte()。//左移 8 位 temp=temp|geta。 } 以上兩個(gè)程序流程為, changetemp()子函數(shù)中先初始化 DS18B20,芯片應(yīng)答以后寫入兩個(gè)以字節(jié)為 一個(gè) 單位的命令, 0xcc 與 0x44 它 們的作用分別為跳過讀序號(hào)列號(hào)的操作和啟動(dòng)溫度轉(zhuǎn)換 。 temp=8 的意義 是 temp=temp8, 所以 temp 的低 8 位將變成 temp 中的高 8 位,而 C 語言規(guī)定低 8 移位操作后不足的位數(shù)由 0 補(bǔ)上, 這時(shí)的目的就是要將 geta 中的數(shù)據(jù)賦予 temp 中的低 8 位,只需要將 temp 按位與上 geta, geta 中位為 1 與 上 temp中低 8 位 中 的 0 就是 1,而 geta 中位為 0 與 temp 中低 8 位的 0 相與就是 0,這樣就將 geta 中的值賦給了 temp 的低 8 位。 TH0=(6553646000)/256。 26 TR0=1。bbb=0。 while(1) { uint a。 b=scanff()。 主函數(shù)首先將所用到的全局變量賦值,然后進(jìn)入大循環(huán) 首先進(jìn)入溫度轉(zhuǎn)換函數(shù),使 DS18B20 啟動(dòng)溫度轉(zhuǎn)換,然后獲取溫度將兩個(gè)字節(jié)的數(shù)值賦給 a,而將輸入的溫度賦予 b ,再由 display(a,b)子函數(shù)輸出所有的值。 dda=abs(a)。 num6=dda%10。 dis[3]=num6。(dis[1]==0)) dis[1]=20。 for(i=1。 temp=_crol_(temp,1)。 duan=1。 } duan=1。amp。 dis[2]=num2。 srtemp=0xfe。 wei=1。 P0=0x00。 delay(1)。 } break。 dis[3]=num3。 for(i=1。 P0=srtemp。 duan=1。 duan=1。 break。 num3=b。 for(i=1。 P0=srtemp。 duan=1。 duan=1。 31 break。 if(dis[2]==21) dis[2]++。i4。//wein 打開后 是低電平亮 wei=0。 P0=table[dis[i]]。 P0=0x00。break。 在這里用到了 abs(a)和 _crol_所以要在再頭文件中寫到 include 和include, dda 用于防止 a 為負(fù)值的時(shí)候后面的操作不好完成。第二:正常的十幾度或者幾十度。amp。 else {if(dis[0]!=0)//超過 100 前面加小數(shù)點(diǎn) dis[1]=dis[1]+10。 ccc 的功能才會(huì)解除。這樣是防止前一個(gè)數(shù)字的輸入完成以后,后一個(gè)數(shù)字還未 輸入時(shí),顯示后一個(gè)數(shù)字的數(shù)碼管默認(rèn)不在顯示下劃線而是前一個(gè)確認(rèn)的數(shù)字,為了防止這種情況才有了 aaa的以上操作。 zd++。amp。amp。 } else { jiar=1。如果后者大于前者,則 P2^2 還是高電平并不引起加熱。 ( 3) 按設(shè)定溫度加熱到相應(yīng)水溫,并具有保溫功能。 圖 開發(fā)板等待輸入 36 輸入完成后,輸入的溫度比開發(fā)板所測(cè)量的環(huán)境溫度高時(shí)。 圖 溫度輸入完成并判定位加熱狀態(tài) 當(dāng)環(huán)境溫度 高于輸入溫度時(shí)加熱停止。 sbit jiar=P2^5。//20,21 void delay(uchar i) { uint j。 } } 38 void dsstart() { unsigned int i。 ds=1。 while(ds)。 } bit readbit()//讀取一個(gè) bit { unsigned int i。 //延時(shí)約 8us, 符合協(xié)議要求至少保持 1us ds=1。 i=8。 uchar date,a。 date=(a7)|(date1)。 uchar a。a8。 if(bit2)//寫入 1 { ds=0。b8。b8。b++。 writeor(0xcc)。 int temp。 delay(1)。 geta=readbyte()。//左移 8 位 temp=temp|geta。 } void display(uint a,uchar b) { uchar i,temp,srtemp,dis[4]。 num4=dda%1000/100。 dis[1]=num4。//num5 小數(shù)點(diǎn) if((dis[0]==0)amp。 42 else {if(dis[0]!=0)//超過 100 前面加小數(shù)點(diǎn) dis[1]=dis[1]+10。i++) { P0=0xff。 wei=0。 duan=0。 duan=0。 switch(bbb) { case 0: dis[1]=b。 43 if(dis[2]==21) dis[2]++。i4。//wein 打開后 是低電平亮 wei=0。 P0=table[dis[i]]。 P0=0x00。 dis[2]=b。 44 else dis[2]+=10。i++) { P0=0xff。// srtemp=_crol_(srtemp,1)。 duan=0。 duan=0。 dis[2]=num2。 else dis[2]+=10。i++) { P0=0xff。// srtemp=_crol_(srtemp,1)。 duan=0。 duan=0。 dis[2]=num2。 srtemp=0xfe。 wei=1。 P0=0x00。 delay(1)。 } aaa=0。 break。 temp=tempamp。 47 temp=P3。 switch(temp) { case 0xed:num=0。 case 0xbd:num=2。 } while(temp!=0xf0) { temp=P3。 temp=P3。 48 P3=0xfb。 while(temp!=0xf0) { temp=P3。break。break。 } } } P3=0xf7。 while(temp!=0xf0) { delay(5)。0xf0。 case 0xd7:num=9。 // case 0x77:bbb=1。0xf0。 } void main() { TMOD=0x01。 50 ET0=1。aa=0。num3=21。 a=gettemp(
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1