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

正文內(nèi)容

基于ds18b20的溫度控制器(編輯修改稿)

2024-11-25 15:25 本頁面
 

【文章內(nèi)容簡介】 定位一只特定的 DS18B20 只有和 64 位 ROM 序列完全匹配的 DS18B20 才能響應(yīng)隨后的存儲器操作命令。所有和 64 位 ROM 序列埠匹配的從機(jī)都將等待復(fù)位脈沖。這條命令在總線上有單個(gè)或多個(gè)器件時(shí)都可以使用。 桂林電子科技大學(xué)實(shí)訓(xùn)說明書用紙 8 本電 路采用 DS18B20 的 12 位分辨率,即溫度時(shí)間為 750ms。而 DS18B20 每次,每一步的工作都是從它的復(fù)位開始,并且 DS18B20 只有一根 I/O 線,因此它工作必須嚴(yán)格遵守總線協(xié)議,嚴(yán)格遵守時(shí)序,此時(shí)單片機(jī)復(fù)位脈沖給 DQ,此過程至少經(jīng)過 480us,最后DQ會回復(fù)一個(gè)信號到 上,當(dāng)信號是 0的時(shí)候表明初始化成功,反之,則初始化沒成功。當(dāng)復(fù)位成功之后就表明 DS18B20 已經(jīng)做好了測溫的準(zhǔn)備。接著單片機(jī)必須發(fā)出SKIP ROM( CCH)命令來訪問總線上 DS18B20,并且每次也必須先發(fā)出此命令單片機(jī)才能控制它 進(jìn)行溫度轉(zhuǎn)換并把溫度寫進(jìn) DS18B20,接著才可以讀取溫度值到單片機(jī)上。其中DS18B20 測溫流程如圖 23 所示。溫度值在 DS18B20 內(nèi)是個(gè) 2個(gè)字節(jié)的數(shù)據(jù),因此每次讀溫度,和寫溫度則必須進(jìn)行兩次,并且先得到的數(shù)是存在低 8 位的,后得到的數(shù)據(jù)是后 8 位。 初始化 DS18B20 → ROM 匹配 → 溫度變換 → 延時(shí) ↓ 跳過 ROM 匹配 ← 讀暫存器 ← 轉(zhuǎn)換成顯示碼 ← 數(shù) 碼管顯示 圖 23 測溫流程圖 測出的溫度值是個(gè)以 16 位二進(jìn)制形式來表示的數(shù),其中高 5 位是符號位,當(dāng)為 1的時(shí)候表示溫度是負(fù)的;反之,為正值。而當(dāng)單片機(jī)發(fā)出讀命令的時(shí)候也就是把這 16位數(shù)據(jù)讀到單片機(jī)內(nèi),接著把這個(gè)數(shù)(正數(shù))乘以 就可以轉(zhuǎn)換成實(shí)際的溫度值,而當(dāng)溫度為負(fù)的時(shí)候則必須把這個(gè)數(shù)取反再加 1 接著再乘以 才可以轉(zhuǎn)換成實(shí)際的溫度值。通過程序把這個(gè)數(shù)分成整數(shù)和小數(shù)部分進(jìn)行處理顯示,接著通過除整和取余來分別來顯示各位上的數(shù)。在最左邊的那個(gè)數(shù)碼管是顯示符號的。 具體程序如下: ds18b20_init()。 write_byte(0xcc)。 write_byte(0x44)。 //啟動溫度轉(zhuǎn)換 delay(700)。 match_rom(ds18b20_romA)。 //匹配第一路 write_byte(0xbe)。 //讀溫度 match_rom(ds18b20_romB)。 //匹配第二路 write_byte(0xbe)。 //讀溫度 鍵盤掃描設(shè)置溫度上下限 K1 和 K4 鍵用 來進(jìn)行模式轉(zhuǎn)換,按下 K1 鍵選擇設(shè)置溫度下限, K2 鍵選擇設(shè)置溫度桂林電子科技大學(xué)實(shí)訓(xùn)說明書用紙 9 上限, K2用來加, K3 用來減。 具體 程序如下: void keyscan() while(K4==0) { while(K1==0) { delay(60)。 { delay(60)。 while(K4==0)。 while(K1==0)。 flag=1。} flag=0。} while((K2==0)amp。amp。(flag==1)) while((K2==0)amp。amp。(flag==0)) { delay(60)。 { delay(60)。 while(K2==0)。 while(K2==0)。 TEM_min++。} TEM_max++。} while((K3==0)amp。amp。(flag==1)) while((K3==0)amp。amp。(flag==0)) { delay(60)。 { delay(60)。 while(K3==0)。 while(K3==0)。 TEM_min。} TEM_max。} } 報(bào)警電路 當(dāng)測量溫度值高于溫度上限或低于溫度下限,蜂鳴器報(bào)警。程序如下: while(TEM_min=55) TEM_min=55。 while(TEM_min=TEM_max) TEM_min=TEM_max。 while(TEM_max=125) TEM_max=125。 if((TEM_mintemp4)|(TEM_maxtemp5)) { FMQ=0。 delay(30)。} else FMQ=1。 關(guān)照檢測 及繼電器控制 電路 由于光照強(qiáng)度的不同,光敏電阻兩端的電壓值會 改變,光照越電壓越小, 通過ADC0832 來檢測光敏電阻兩端的電壓值 以此來 顯示關(guān)照的強(qiáng)度 。 當(dāng)溫度低于設(shè)置的溫度上限 時(shí),繼電器接通,外界加熱裝置工作,當(dāng)溫度高于設(shè)置的溫度上限時(shí),繼電器斷開,外界加熱裝置停止工作,這樣來實(shí)現(xiàn)恒溫控制。 電路接法如圖 24: 桂林電子科技大學(xué)實(shí)訓(xùn)說明書用紙 10 圖 24 ADC0832 接法 具體程序如下 : uint Adc0832(unsigned char channel) ADCLK=0。 { _nop_()。_nop_()。 uchar i=0。 ADDI=1。//控制命令結(jié)束 ,接受數(shù)據(jù) uchar j。 _nop_()。_nop_()。 uint dat=0。 ADDI=0。//channelamp。0x01 uchar ndat=0。 _nop_()。_nop_()。 ADCS=1。 ADCLK=0。 ADCLK=0。 //拉低 CLK 端 ,用于選擇通道 if(channel==0)channel=2。 _nop_()。_nop_()。 if(channel==1)channel=3。 ADCLK=1。//拉高 CLK 端 ADDI=1。 ADDI=1。//(channel1)amp。0x1。 _nop_()。_nop_()。 dat=0。 ADCS=0。//拉低 CS 端 for(i=0。i8。i++) _nop_()。_nop_()。 { dat|=ADDO。//收數(shù)據(jù) ADCLK=1。//拉高 CLK 端 ADCLK=1。 _nop_()。_nop_()。 _nop_()。 _nop_()。 ADCLK=0。 ADCLK=0。//形成一次時(shí)鐘脈沖 //拉低 CLK 端 ,啟動轉(zhuǎn)換 _nop_()。 _nop_()。 _nop_()。_nop_()。 dat=1。 if(i==7)dat|=ADDO。} if(i7)ndat=1。} for(i=0。i8。i++)//進(jìn)行數(shù)據(jù)校驗(yàn) ADCLK=0。//拉低 CLK 端 { j=0。 ADDO=1。//拉高數(shù)據(jù)端 ,回到初始狀態(tài) j=j|ADDO。//收 數(shù)據(jù) dat=8。 ADCLK=1。 dat|=ndat。 _nop_()。_nop_()。 return(dat)。 //返回 ad值 桂林電子科技大學(xué)實(shí)訓(xùn)說明書用紙 11 ADCLK=0。//形成一次時(shí)鐘脈沖 } _nop_()。_nop_()。 j=j7。 ndat=ndat|j。 3 電路板的制作與調(diào)試 布線及 PCB 圖 31 PCB 圖 按照原理圖進(jìn)行 電路的制作 與調(diào)試 進(jìn)行電路板焊接時(shí),注意 元器件的管腳 不要焊反。 焊接的時(shí) 候要注意不要把不相連的點(diǎn)掛接。焊接的時(shí)候烙鐵的溫度不要太高,焊接的時(shí)間不要太長,以免焊盤脫落和在焊接的時(shí)候就把器件燒壞。焊接完后好對電路圖進(jìn)行檢測,看是否所有器件都是好的,位置都是正確的, 看是否有掛接和虛焊的。 在接電之前應(yīng)該線測電源跟地是否短接,和檢測電路是否有不該接的地方接到了一起。用萬用表檢測是否有線斷路。接上電后應(yīng)該檢測各個(gè)器件的的電源跟地腳的電平是否正確。接上電后要觸摸芯片查看是否有發(fā)燙現(xiàn)象,若有則應(yīng)立即關(guān)掉電源。硬件沒有問題后結(jié)合軟件調(diào)試 。 桂林電子科技大學(xué)實(shí)訓(xùn)說明書用紙 12 整機(jī) 調(diào)試 將 單片機(jī) 燒錄好程序 , 接上電源,將兩個(gè) DS18B20 靠得很近,檢查是否溫度相差不大。再將兩個(gè)置于不同的環(huán)境中,檢查溫度值是否不同。再檢測按鍵和報(bào)警電路,按下按鍵,檢測其是否和預(yù)期的變化一致,將溫度上限設(shè)為低于(或溫度下限高于) DS18B20讀出的溫度值,檢測蜂鳴器是否會響。當(dāng)現(xiàn)場溫度低于設(shè)置的溫度下限時(shí),檢測單片機(jī)是否能驅(qū)動繼電器工作從而實(shí)現(xiàn)恒溫控制。檢測光照強(qiáng)度時(shí),只需讓現(xiàn)場的光照強(qiáng)度改變,檢測讀出的光照指數(shù)是否改變就可以了。 板的參數(shù)測試 表 31 參數(shù)測試 實(shí)際溫度( V) 測量結(jié)果( V) 4 程序設(shè)計(jì) 程序流程圖 (見附錄 2) 具體程序(見附錄 1) 程序設(shè)計(jì) ( 1) LCD1602 的驅(qū)動程序:可根據(jù)其具體的資料,按照嚴(yán)格的時(shí)序來進(jìn)行寫數(shù)據(jù)和寫命令。 ( 2)延時(shí)子程序:由于有按鍵抖動,要加入延時(shí)去除抖動。該子程序主要一個(gè) for循環(huán)來實(shí)現(xiàn)延時(shí),通過軟件測試,該子程序執(zhí)行的時(shí)間約為 1us。在寫 LCD1602 及 DS18B0的時(shí)序時(shí)也需要延時(shí)子程序。 ( 3) DS18B20 初始化函數(shù):所有與 DS18B20 的通信首先必須初始化。 根據(jù)初始化的時(shí)序要求,要先拉低總線,再加入延時(shí)以保持 DQ 為低至少 480us,隨后使 DQ=1,拉高總線等待單片機(jī)應(yīng)答信號。 ( 4)讀函數(shù):根據(jù)讀時(shí)序,讀函數(shù)首先使 DQ=0,拉低總線至少 1us,然后使 DQ=1釋放總線,在總線上傳送數(shù)據(jù)。每次通過右移讀一位數(shù)據(jù),通過 for 循環(huán)實(shí)現(xiàn) 8 次右移,從而讀出一個(gè)字節(jié)的數(shù)據(jù)。所有讀時(shí)序必須持續(xù)至少 60us,因此要加入延時(shí)以完成一次讀時(shí)序。 桂林電子科技大學(xué)實(shí)訓(xùn)說明書用紙 13 ( 5)寫函數(shù):根據(jù)寫時(shí)序,要將總線拉低( DQ=0)開始寫時(shí)序,拉低總線 15us 內(nèi)釋放總線。 DS18B20 在單片機(jī)發(fā)出寫時(shí)序后的 15us~60us 的時(shí)間窗口內(nèi)采樣總線。通過實(shí)現(xiàn) 8 次循環(huán)的 for 語句及右移操作,實(shí)現(xiàn)寫入一個(gè)字節(jié)的數(shù)據(jù)。 ( 6)主程序:主程序中首先設(shè) 調(diào)用初始化程序 , 發(fā) MACTH ROM 命令, 讀序號列號的操作發(fā)轉(zhuǎn)換溫度命令,再進(jìn)行溫度轉(zhuǎn)換。每次執(zhí)行循環(huán)時(shí)都判斷各個(gè)按鍵的狀態(tài),當(dāng)有按鍵按下時(shí),則執(zhí)行相應(yīng)的語句以實(shí)現(xiàn)按鍵控制功能。在循環(huán)中,將讀取出的溫度高字節(jié)和低字節(jié)通過移位及邏輯與語句,將兩個(gè)字節(jié)合并成一個(gè) 16 位數(shù),該 16位數(shù)的前5位為符號位。當(dāng)溫度大于 0 時(shí),該 16位數(shù)乘上 即為實(shí)際溫度值,當(dāng)溫度小于0時(shí),該 16 位數(shù)取反加 1 再乘上 即得到實(shí)際溫度值。在死循環(huán)中將實(shí)際溫度的整數(shù)部分和小數(shù)部分分開,并以 LCD1602 顯示。 5 結(jié)論 本次實(shí)訓(xùn)是老師給任務(wù)同學(xué)自己選擇項(xiàng)目。我選擇的是 基于 DS18B20 溫度控制 。學(xué)完單片機(jī)的理論知識之后,我已經(jīng)對系統(tǒng)的設(shè)計(jì)有了一定的信心。 本次實(shí)訓(xùn) 時(shí)間為三周,主要分三個(gè)內(nèi)容:查詢、設(shè)計(jì)電路圖以及電路圖的仿真;畫原理圖及 PCB 圖;硬件的制作與調(diào)試。 第一步是電路的仿真, 實(shí)訓(xùn)第一周,選完題目后,我就開始著手查找資料, 因?yàn)橹坝袑W(xué)過一點(diǎn) LCD1602 的知識,這次想運(yùn)用到實(shí)際中來,故在顯示部分選擇了液晶顯示。在弄懂了 LCD1602 和 DS18B20 及 ADC0832 的原理后,我開始做仿真,仿真過程中遇到了很多問題,關(guān)于 LCD1602 的驅(qū)動程序和 DS18B20 的時(shí)序問題和讀寫命令及 ADC0832 的時(shí)序和原理問題。但 都一一解決了。 第二步是 PCB 的排版,這次的設(shè)計(jì)用到的芯片比較多, 可是在不線的過程中我學(xué)到了很多技巧,比如,在布局的時(shí)候要注意芯片的擺放位置,這樣會給布線帶來很大的方便。而且要注意元件擺放的間距,避免由于空間太小元件擺 放不下。 第 三 步就是打印腐蝕電路板打孔和焊接了。這步也是成功的關(guān)鍵,在印制電路板時(shí)要注意印制的質(zhì)量,如果效果不好,要用油性筆把不清楚的或者斷的線補(bǔ)上。腐蝕的時(shí)間不能太短,太長也會導(dǎo)致斷線。在這步中,最重要的應(yīng)該是焊接,有了前面的焊接基礎(chǔ),在這次焊接中我沒有出現(xiàn)什么問題,還提高了自己的焊接技術(shù)了。在一本次制作中,最主要的就是接下來的第五步了。 第 四 步是電路的調(diào)試。在調(diào)試在本次調(diào)試過成中,我在前面學(xué)習(xí)的基礎(chǔ)上,學(xué)會了更加靈活地用軟件來調(diào)試硬件,把硬件調(diào)試好后用硬件來調(diào)試軟件。 在 調(diào)試過程中, 我遇到了許多意想不到的 問題,可謂是花樣百出,調(diào)試過程中發(fā)現(xiàn)原來仿真的的時(shí)序和實(shí)際中的時(shí)序得到的結(jié)果不一樣,經(jīng)過反復(fù)修改才正確讀出了溫度。最讓我苦惱的是實(shí)現(xiàn)擴(kuò)展程序的 能在同一個(gè) IO 中連接 2個(gè)或 2個(gè)以上的 D
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1