版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 濱海職業(yè)學(xué)院全日制高等職業(yè)教育畢業(yè)實踐環(huán)節(jié)畢業(yè)設(shè)計(典型性項目)說明書 基于單片機的溫度報警器設(shè)計(方案) 佳璐 院系:濱海職業(yè)學(xué)院機電工程系 專業(yè):電子信息工程技術(shù) 年級:2012級 學(xué)號: 指導(dǎo)教師: 時間:2015年4月主要容簡介在農(nóng)業(yè)生產(chǎn)中,溫室的溫度很難把握。往往超過或低于允許值,致使大批良種的報廢,耽誤農(nóng)時,影響生產(chǎn)。這就需要設(shè)計一個溫度報警器,在環(huán)境溫度超過一定圍時報警,來提醒使用者。 基于以上背景設(shè)計基于單片機的溫度報警器。本設(shè)計采用ATMEL公司的ATmega16單片機為硬件核心系統(tǒng),添加數(shù)碼管、按鍵和溫度傳感器芯片,組成完整的硬件系統(tǒng)。采用C語言為編程語言,進行系統(tǒng)的軟件
2、系統(tǒng)開發(fā)。通過本系統(tǒng)硬件、軟件部分設(shè)計完成如下目標:1、完成系統(tǒng)的硬件部分設(shè)計,硬件部分包括電源、顯示、按鍵、溫度接口、報警觸發(fā)等部分設(shè)計。在此基礎(chǔ)上保證軟件功能實現(xiàn)。2、溫度報警器可以通過按鍵方便設(shè)定報警圍。3、溫度報警器通過數(shù)碼管顯示實時顯示測量的環(huán)境溫度。當(dāng)環(huán)境溫度溫度超出設(shè)定圍時,啟動報警。本設(shè)計硬件制作方便,通過C語言程序?qū)崿F(xiàn)軟件設(shè)計,可移植性強,能夠精準的對環(huán)境進行溫度測量并顯示,實用性強。關(guān)鍵字:M16;18B20;溫度控制;C語言目錄一、緒論4(一)研究背景與現(xiàn)狀4(二)設(shè)計容與要求4二、關(guān)鍵技術(shù)簡介5三、M16單片機概述6(一)ATmega16的主要性能6(二)M16的基本組
3、成與引腳6(三)M16的引腳基本功能6(四)外部晶體振蕩器8四、溫度傳感器18B20介紹8(一)溫度傳感器18B20的特性8(二)溫度傳感器18B20的基本組成,見下圖4所示。9(三)溫度傳感器18B20的測溫操作10五、硬件設(shè)計12(一)硬件電路設(shè)計12(二)電源和復(fù)位電路設(shè)計13(三) 輸入、輸出部分設(shè)計14(四)驅(qū)動部分設(shè)計15六、軟件設(shè)計15(一)顯示部分設(shè)計15(二)按鍵檢測設(shè)計21(三)1wire 是一種通訊協(xié)議實現(xiàn)23(四)軟件總體設(shè)計28一、緒論(一)研究背景與現(xiàn)狀1在農(nóng)業(yè)生產(chǎn)中,溫室的溫度很難把握。往往超過或低于允許值,致使大批良種的報廢,耽誤農(nóng)時,影響生產(chǎn)。日常生活中,經(jīng)常
4、要用到高功率電器,但是高功率電器的發(fā)熱量大,有時候可能引起火災(zāi)。等等之類的情況,這就需要一個溫度報警器在環(huán)境溫度超過一定圍時報警,來提醒使用者。經(jīng)過試用和改進,溫度報警器可適用于變壓器超溫報警、環(huán)境溫度監(jiān)測、配電柜溫度監(jiān)測與風(fēng)扇自動控制、機房、倉庫、魚塘、蔬菜大棚溫度監(jiān)測與報警等等。2溫度控制器目前普遍采用的幾種方法:方案一:采用單總線的DS1820的溫度傳感器的控制儀。方案二:采用集溫濕度傳感器于一體的SHT11芯片為主要芯片的控制儀。雖然SHT11是瑞士Sensiri-on公司生產(chǎn)的具有二線串行接口的單片全校準數(shù)字式新型相對濕度和溫度傳感器,可用來測量相對濕度、溫度和露點等參數(shù),具有數(shù)字式
5、輸出、免調(diào)試、免標定、免外圍電路與全互換的特點。但是本設(shè)計只對溫度控制,設(shè)計原理簡單,基于經(jīng)濟效益的考慮此次選擇傳統(tǒng)的模擬式溫度度傳感器既方案一。(二)設(shè)計容與要求1本溫度報警器為超溫報警,與高于選定的高溫或低于選定的低溫均預(yù)報警,也就是說溫度超過某個選定的溫度圍則報警,溫度在這個圍則不報警。外觀如圖1所示:.圖1 設(shè)計外觀圖2使用方法:打開電源開關(guān)然后按如下操作:打開電源開關(guān)然后按如下操作:(1)下限設(shè)置:按下“SET”,進入溫度上限設(shè)置,數(shù)字閃爍,同時左第1位最上面顯示一橫,表示上限設(shè)置,按一次“”溫度值加0.1攝氏度,按一次“”,溫度值減小0.1攝氏度,設(shè)置好上限;這時再按“SET”一次
6、,進入下限溫度設(shè)置,數(shù)字閃爍,同時左第1位最下面顯示一橫,表示是下限設(shè)置,按一次“”溫度值加0.1攝氏度,按一次,溫度值減小0.1攝氏度,設(shè)置好下限,再按一次“SET”,退出上下限設(shè)置,并把設(shè)置好的上下限參數(shù)保存到EEPROM中(2)負載載控制開關(guān)控制:有時不需要控制負載,就是待機狀態(tài),在工作狀態(tài)下,按下WAIT,下面的數(shù)碼管會關(guān)顯示,什么也不顯示,表示不控制負載,這時再按下WAIT,又回到工作狀態(tài),設(shè)置狀態(tài)也保存EEPROM中,交替顯示所設(shè)定的溫度上下限值。二、關(guān)鍵技術(shù)簡介1 單片機的技術(shù)的背景狀況單片機是靠程序的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨特的一些功能,這是
7、別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復(fù)雜的功能要是用美國50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板,但是如果要是用美國70年代成功投放市場的系列單片機,結(jié)果就會有天壤之別。只因為單片機的通過你編寫的程序可以實現(xiàn)高智能,高效率,以與高可靠性。2目前單片機滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄象機、攝象機、全自動洗衣機的控
8、制,以與程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領(lǐng)域的機器人、智能儀表、醫(yī)療器械了。三、M16單片機概述(一)ATmega16的主要性能1、先進的、高性能的的8位CPU核結(jié)構(gòu):1)耗先進的RISC(精簡指令集計算機)結(jié)構(gòu);2)高速度,低功耗的新8位中央處理器;2、非易失性程序和數(shù)據(jù)存儲器:3、豐富的核外功能資源電路:完善的串、并、與JTAG(聯(lián)合測試行動組) 接口。4、電壓圍寬、功率消耗低、時鐘頻率靈活。5、極高的性價比和適于高級語言開發(fā);(二)M16的基本組成與引腳M16的基本組成與引腳配置,見下圖2所示。圖2 M16的組成結(jié)構(gòu)圖(三)M16的引腳基本功能1、VCC:數(shù)字
9、電路電源(+5V)2、GND:地(0V)3、端口A(PA7PA0)端口A為8位雙向I/O口,也是A/D轉(zhuǎn)換器的模擬輸入端。具有可編程的部上拉電阻。其輸出緩沖器可以輸出和吸收大電流。作為輸入使用時,若部上拉電阻使能,端口被外部電路拉低時將輸出電流。4、端口B(PB7.PB0)為8位雙向I/O口,具有可編程的部上拉電阻。作為輸入使用時,若部上拉電阻使能,端口被外部電路拉低時將輸出電流。5、端口C(PC7.PC0)為8位雙向I/O口,具有可編程的部上拉電阻。作為輸入使用時,若部上拉電阻使能,端口被外部電路拉低時將輸出電流。在復(fù)位過程中,即使系統(tǒng)時鐘還未起振,端口C也處于高阻狀態(tài)6、端口D(PD7.P
10、D0)為8位雙向I/O口,具有可編程的部上拉電阻。作為輸入使用時,若部上拉電阻使能,則端口被外部電路拉低時將輸出電流。7、RESET:復(fù)位輸入引腳。8、XTAL1:反相振蕩放大器與片時鐘操作電路的輸入端。9、XTAL2:反相振蕩放大器的輸出端9、XTAL2:反相振蕩放大器的輸出端。10、AVCC:端口A與A/D轉(zhuǎn)換器的電源。11、AREF:A/D的模擬基準電壓輸入引腳。(1)ATmega16所有的I/O端口與外圍設(shè)備都被放置于I/O專用空間。所有的I/O寄存器都可以通過IN與OUT指令來訪問,在32個通用工作寄存器和I/O之間傳輸數(shù)據(jù)。地址為0x00-0x1F的前32個I/O寄存器還可用SBI
11、和CBI指令直接進行位尋址,而SBIS和SBIC則用來檢查某一位的值。(2)M16系統(tǒng)可編程的Flash程序存儲器:ATmega16具有16K字節(jié)(8K字0000-1FFF)的在線編程Flash,用于存放程序指令代碼。其結(jié)構(gòu)具有兩個主要的存儲器空間:應(yīng)用程序存儲空間和引導(dǎo)程序存儲空間。兩個空間通過對應(yīng)鎖定位來選擇,引導(dǎo)區(qū)程序可用SPM指令再應(yīng)用修改(4) 外部晶體振蕩器外部晶體振蕩器接線圖,如下圖3所示。圖3 外部晶體振蕩器四、溫度傳感器18B20介紹(一)溫度傳感器18B20的特性1.DS18B20可以程序設(shè)定912位分辨率可調(diào),適用電壓為3V5V,精度為0.5C??蛇x更小的封裝方式,更寬的
12、電壓適用圍。分辨率設(shè)定,與用戶設(shè)定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價格比也非常出色!DS1822與DS18B20軟件兼容,是DS18B20的簡化版本。省略了存儲用戶定義報警溫度、分辨率參數(shù)的EEPROM,精度降低為2C,適用于對性能要求不高,成本控制嚴格的應(yīng)用,是經(jīng)濟型產(chǎn)品。TO-92、SOIC與CSP封裝可選,經(jīng)濟型版本無EEPROM合自己的經(jīng)濟的測溫系統(tǒng)。2.繼“一線總線”的早期產(chǎn)品后,DS1820開辟了溫度傳感器技術(shù)的新概念。DS18B20和DS1822使電壓、特性與封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟的測溫系統(tǒng)。(
13、二)溫度傳感器18B20的基本組成,見下圖4所示。圖4 溫度傳感器DS1820數(shù)字溫度計以9位數(shù)字量的形式反映器件的溫度值。DS1820通過一個單線接口發(fā)送或接收信息,因此在中央微處理器和DS1820之間僅需一條連接線(加上地線)。用于讀寫和溫度轉(zhuǎn)換的電源可以從數(shù)據(jù)線本身獲得,無需外部電源。因為每個DS1820都有一個獨特的片序列號,所以多只DS1820可以同時連在一根單線總線上,這樣就可以把溫度傳感器放在許多不同的地方。這一特性在HVAC環(huán)境控制、探測建筑物、儀器或機器的溫度以與過程監(jiān)測和控制等方面非常有用。1.引腳說明16腳SSOPPR35符號說明82DQ數(shù)據(jù)輸入/輸出腳。對單線操作:漏極
14、開路73 VDD可選的VDD引腳。DS1820S(16腳SSOP):所有上表中沒提到的腳均接地 DS1820的主要部件模塊圖5 DS1820的主要部件模塊圖5的方框圖示出了DS1820的主要部件。DS1820有三個主要數(shù)字部件:1)64位激光ROM,2)溫度傳感器,3)非易失性溫度報警觸發(fā)器TH和TL。器件用如下方式從單線通訊線上汲取能量:在信號線處于高電平期間把能量儲存在部電容里,在信號線處于低電平期間消耗電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。DS1820也可用外部5V電源供電。(三)溫度傳感器18B20的測溫操作DS1820通過一種片上溫度測量技術(shù)來測量溫度。圖6示出了
15、溫度測量電路的方框圖。圖6 溫度測量電路圖DS1820是這樣測溫的:用一個高溫度系數(shù)的振蕩器確定一個門周期,部計數(shù)器在這個門周期對一個低溫度系數(shù)的振蕩器的脈沖進行計數(shù)來得到溫度值。計數(shù)器被預(yù)置到對應(yīng)于-55的一個值。如果計數(shù)器在門周期結(jié)束前到達0,則溫度寄存器(同樣被預(yù)置到-55)的值增加,表明所測溫度大于-55。同時,計數(shù)器被復(fù)位到一個值,這個值由斜坡式累加器電路確定,斜坡式累加器電路用來補償感溫振蕩器的拋物線特性。然后計數(shù)器又開始計數(shù)直到0,如果門周期仍未結(jié)束,將重復(fù)這一過程。斜坡式累加器用來補償感溫振蕩器的非線性,以期在測溫時獲得比較高的分辨力。這是通過改變計數(shù)器對溫度每增加一度所需計數(shù)
16、的的值來實現(xiàn)的。因此,要想獲得所需的分辨力,必須同時知道在給定溫度下計數(shù)器的值和每一度的計數(shù)值。DS1820部對此計算的結(jié)果可提供0.5的分辨力。溫度以16bit帶符號位擴展的二進制補碼形式讀出,表1給出了溫度值和輸出數(shù)據(jù)的關(guān)系。數(shù)據(jù)通過單線接口以串行方式傳輸。DS1820測溫圍-55+125,以0.5遞增。如用于華氏溫度,必須要用一個轉(zhuǎn)換因子查找表。意DS1820溫度表示值為1/2LSB。最高有效(符號)位被復(fù)制充滿存儲器中兩字節(jié)溫度寄存器的高MSB位,由這種“符號位擴展”產(chǎn)生出了示于表1的16bit溫度讀數(shù)??捎孟率龇椒ǐ@得更高的分辨力。首先,讀取溫度值,將0.5位(LSB)從讀取的值中截
17、去,這個值叫做TEMP_READ。然后讀取計數(shù)器中剩余的值,這個值是門周期結(jié)束后保留下來的值(COUNT_REMAIN)。最后,我們用到在這個溫度下每度的計數(shù)值(COUNT_PER_C)。用戶可以用下面的公式計算實際溫度值:TEMPEATURE=TEMP_READ-0.25=(COUNT_PER_C-COUNT_REMAIN)/COUNT_PER_CDS18B20的使用:CPU對DS18B20的訪問流程是:先對DS18B20初始化,再進行ROM操作命令,最后才能對存儲器操作,數(shù)據(jù)操作。DS18B20每一步操作都要遵循嚴格的工作時序和通信協(xié)議。如主機控制DS18B20完成溫度轉(zhuǎn)換這一過程,根據(jù)D
18、S18B20的通訊協(xié)議,須經(jīng)三個步驟:每一次讀寫之前都要對DS18B20進行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預(yù)定的操作。 DS18B20常用控制命令,如表4-1所示。表1 DS18B20控制命令表指 令 約定代碼 操 作 說 明 溫度轉(zhuǎn)換 44H 啟動DS18B20進行溫度轉(zhuǎn)換 讀暫存器 BEH 讀暫存器9個字節(jié)容 寫暫存器 4EH 將數(shù)據(jù)寫入暫存器的TH、TL字節(jié) 復(fù)制暫存器48H 把暫存器的TH、TL字節(jié)寫到E2RAM中 重新調(diào)E2RAMB8H 把E2RAM中的TH、TL字節(jié)寫到暫存器TH字節(jié) 讀電源供電方式B4H 啟動DS18B20發(fā)送
19、電源供電方式的信號給主CPU 五、硬件設(shè)計(一)硬件電路設(shè)計系統(tǒng)設(shè)計包括硬件系統(tǒng)、軟件系統(tǒng)兩部分組成,系統(tǒng)硬件電路如圖5-1所示。硬件系統(tǒng)設(shè)計由電源、復(fù)位、按鍵、傳感器接口、報警驅(qū)動、顯示等部分組成。它們可以分成三類:1)電源、復(fù)位:復(fù)位、按鍵部分2)輸入輸出:按鍵、顯示部分3)驅(qū)動:傳感器接口、報警驅(qū)動部分圖7 系統(tǒng)硬件原理圖(1)(二)電源和復(fù)位電路設(shè)計系統(tǒng)采用交流供電,系統(tǒng)經(jīng)過外接12V交流變壓器,將市電變成12V交流電。系統(tǒng)經(jīng)過全波整流將交流電變成直流電,一部分整流后直流電通過直流穩(wěn)壓芯片7812變成平滑的12V直流電,提供給報警器接口。另一部分整流后直流電通過直流穩(wěn)壓芯片7805變成
20、平滑的直流電,提供給系統(tǒng)其他部分。單片機常見的復(fù)位電路有:上電復(fù)位、手動復(fù)位。本設(shè)計采用上電復(fù)位。圖7 系統(tǒng)軟件原理流程圖(2)(三) 輸入、輸出部分設(shè)計輸入、輸出部分是單片機的信息傳輸通道,本部分實現(xiàn)按鍵的讀取(輸入)、溫度值的顯示(輸出)。傳統(tǒng)的按鍵設(shè)計,由電阻和按鍵組成,電阻的一端接電源,電阻的另一端接按鍵和單片機引腳。當(dāng)按鍵按下時,單片機引腳為低電平;當(dāng)按鍵放開時,單片機引腳為高電平。本系統(tǒng)在進行輸入部分在設(shè)計時利用了ATmega16單片機的部上拉電阻,直接將按鍵連接到引腳,節(jié)省了4個電阻。顯示部分設(shè)計由8個共陽級數(shù)碼管和8個三極管組成,采用動態(tài)顯示方法實現(xiàn)數(shù)字顯示。8個數(shù)碼管的數(shù)字腳
21、并接到單片機PA端口,確定數(shù)碼管的顯示容;數(shù)碼管公共端分別接三極管發(fā)射極,確定在某一時刻,那個數(shù)碼管顯示。8個三極管集電極電源,三極管基極接極接單片機PC端口,當(dāng)某PC端口為高電平時,對應(yīng)數(shù)碼管被選中,數(shù)字腳顯示數(shù)字。(四)驅(qū)動部分設(shè)計傳感器接口按照18b20的要求,接電源和地后,數(shù)據(jù)引腳通過上拉電阻接單片機即可。報警器采用電平驅(qū)動,具體報警設(shè)備可以外接,也可用蜂鳴器。此外還采用發(fā)光二極管、小燈泡等發(fā)光設(shè)備進行報警提示。外接報警設(shè)備通過三極管驅(qū)動繼電器完成六、軟件設(shè)計(一)顯示部分設(shè)計1、數(shù)碼管的外觀圖8數(shù)碼管的外觀圖9 5011系列數(shù)碼管的引腳排列一個“8”字型的顯示模塊用“a、b、c、d、
22、e、f、g、dp” 8 個發(fā)光二極管組合而成。每個發(fā)光二極管稱為一字段。其部電原理圖如圖63、64,分別是共陰極和共陽極LED數(shù)碼管兩種結(jié)構(gòu)形式。圖10共陰極數(shù)碼管 圖11共陽極數(shù)碼管以共陰極數(shù)碼管為例,由圖中可以看出:如果要點亮數(shù)碼管的某一段,只需將該段加上高電平,然后使數(shù)碼管的公共端3、8腳為低電平,那么該段就會點亮。2、單個數(shù)碼管的電路連接 單個數(shù)碼管的電路連接可以直接同AVR單片機的某個口連接。在圖65中,PC0接A段對應(yīng)引腳,PC1接B段對應(yīng)引腳, PC7接dp段對應(yīng)引腳,采用的是共陽極數(shù)碼管。圖12單個數(shù)碼管的電路連接2、單數(shù)字的顯示單數(shù)字的顯示通過PC端口輸出數(shù)字對應(yīng)字段的編碼,
23、在數(shù)碼管上就可顯示對應(yīng)數(shù)字。程序如下:#include#includeunsigned char seg=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,i;int main()DDRC=0xff;PORTC=0xff;while(1)for(i=0;i=9;i+)PORTC=segi;_delay_ms(2000.0);程序的關(guān)鍵是字形編碼的書寫,不同的字形編碼會得到不同的符號。在字形編碼眾多時,字形編碼會占用大量的存空間,字形編碼這類數(shù)據(jù)的特點是:我們只需要讀取它們的容,而不會修改其容,即只進行讀操作不進行寫操作。這種特點的數(shù)據(jù),可以看成
24、常數(shù),對于常數(shù)可以保存在程序區(qū)。3、多數(shù)字動態(tài)顯示 單個數(shù)碼管僅顯示一個數(shù)字,多數(shù)情況往往需要顯示多個數(shù)字。多個數(shù)字的顯示多采用動態(tài)顯示方法。4數(shù)碼管動態(tài)顯示原理圖,如圖6-6所示。 圖13 四數(shù)碼管動態(tài)顯示原理圖從多數(shù)字動態(tài)顯示電路可以看出:所有的數(shù)碼管的一樣腳連在一起,再接到PC端口。各數(shù)碼管的公共端分別接在PD03。4、基本多數(shù)字動態(tài)程序 在多數(shù)字動態(tài)顯示電路下,要顯示數(shù)字的字形數(shù)據(jù)由PC端口送出,此字形數(shù)據(jù)由那個數(shù)碼管顯示,只要那個數(shù)碼管的公共端同其他不同,對共陽極那個數(shù)碼管的公共端為高電平,其他為低電平。程序如下:#include#include#includeconst prog_
25、uchar seg=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98;unsigned char i;int main()DDRC=0xff;PORTC=0xff;DDRD=0xff;PORTD=0xff;while(1)PORTC=pgm_read_byte(seg+0);PORTD=0xf8;_delay_ms(50.0);PORTC=pgm_read_byte(seg+1);PORTD=0xf4;_delay_ms(50.0);PORTC=pgm_read_byte(seg+2);PORTD=0xf2;_delay_ms(50.0);PO
26、RTC=pgm_read_byte(seg+3);PORTD=0xf1;_delay_ms(50.0);這個基本多數(shù)字動態(tài)程序不夠靈活,只能顯示提前設(shè)定的數(shù)字,通過帶緩沖區(qū)的多數(shù)字動態(tài)程序可以靈活實現(xiàn)數(shù)字顯示。5、帶緩沖區(qū)的多數(shù)字動態(tài)程序 帶緩沖區(qū)的多數(shù)字動態(tài)程序是將顯示部分提出,單獨寫成子程序,在調(diào)用子程序前,將要顯示數(shù)據(jù)放入顯示緩存區(qū),再調(diào)用顯示子程序。#include#include#includeconst prog_uchar seg=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98;unsigned char buf=4,7,9,8
27、,i;void dsp();int main()DDRC=0xff;PORTC=0xff;DDRD=0xff;PORTD=0xff;while(1)dsp();void dsp()PORTC=pgm_read_byte(seg+buf0);PORTD=0xf8;_delay_ms(50.0);PORTC=pgm_read_byte(seg+buf1);PORTD=0xf4;_delay_ms(50.0);PORTC=pgm_read_byte(seg+buf2);PORTD=0xf2;_delay_ms(50.0);PORTC=pgm_read_byte(seg+buf3);PORTD=0xf
28、1;_delay_ms(50.0);數(shù)組buf為顯示緩存區(qū),在其中放入不同數(shù)值,執(zhí)行顯示子程序dsp后,會顯示對應(yīng)數(shù)字。(二)按鍵檢測設(shè)計按鍵是基本方便的輸入手段,可通過按鍵開關(guān)控制發(fā)光二極管的亮滅來,說明AVR單片機的端口檢測外部信號的功能和方法。1、單按鍵的電路典型的單按鍵的電路如圖67所示,在按鍵沒有按下時,PA5引腳信號為高電平,當(dāng)按鍵按下時PA5引腳信號為低電平。通過檢測引腳的電平會方便的知道按鍵的狀態(tài)。圖14 按鍵電路我們?nèi)粘Kf的按鍵,外觀如圖68所示,有四個腳。按鍵兩側(cè)的腳是連通的,之所以做成四個腳,是為了安裝牢固。圖15 按鍵開關(guān)2、按鍵的響應(yīng)過程理想的按鍵的閉合和斷開時,接
29、觸點的電壓應(yīng)該立即變高或者變低,但是由于機械觸點的彈性以與按鍵按動時電壓突變等原因,在觸點閉合或斷開的瞬間會出現(xiàn)電壓抖動現(xiàn)象,如圖69所示。在發(fā)生抖動的時間一般在5-10ms。一次按鍵處理過程如下:當(dāng)按鍵按下之后,相應(yīng)的按鍵接觸點的電壓以高低電平的方式輸入到單片機的I/O口。按鍵的閉合與斷開是有一定時間的,一般為0.1-1S。而AVR單片機的機器周期一般為1us甚至更短,在0.1-1S的時間段,程序會檢測很多次按鍵的輸入電平,這樣單片機可能會認為按鍵被按下了多次,從而出現(xiàn)誤判。圖17 按鍵閉合斷開時的電壓波動示意圖3、按鍵去抖動的方法和原理為了去除按鍵的抖動,保證單片機對按鍵的一次輸入只響應(yīng)一
30、次,可以采用硬件和軟件兩種方法:硬件電路去抖動是在外圍電路中加入去抖動電路(如R-S觸發(fā)器);軟件去抖動是在程序中加入延時程序以跳過抖動時間,等待信號穩(wěn)定后再次判斷按鍵的輸入電平,如果信號電平保持不變,則可以確認一次按鍵按下。硬件去抖動電路的原理用R-S觸發(fā)器形成去抖電路是單片機外圍電路設(shè)計中常用的方法,這種方法可以減少單片機軟件對按鍵動作的延時和計算。典型的硬件去抖動電路如圖610,74LS02構(gòu)成一個R-S觸發(fā)器電路實現(xiàn)按鍵的消抖電路。圖610 74LS02實現(xiàn)的硬件消抖電路軟件消抖的原理和實現(xiàn)軟件消抖的基本原理是在軟件中對按鍵進行兩次檢測確認,記載第一次檢測到按鍵按下后,間隔10ms左右
31、再次檢測按鍵是否按下,只有在兩次都檢測到按鍵按下時才最終確認有鍵按下,這樣就避開了按鍵的抖動時間,從而消除了抖動的影響。 在按鍵接口軟件的設(shè)計中,除了要考慮按鍵消抖外,一般還要判別按鍵的釋放,只有檢測到按鍵釋放后,才能確定為一次完整的按鍵動作。通用的案件檢測程序如下:Keyscan()if(PINA&0X20)=0) /判斷按鍵是否按下,等于0表示按鍵按下delayms(20); /延時20ms。避開按鍵抖動時間if(PINA&0X20)=0) /再次判斷按鍵是否按下, /按鍵按下的處理程序While(PINA&0X20)=0); /判斷按鍵是否放開,不等于表示按鍵釋放,退出處理函數(shù)(三)1w
32、ire 是一種通訊協(xié)議實現(xiàn)對18b20的操作實質(zhì)是1wire 是一種通訊協(xié)議。1wire 是一種通訊協(xié)議,它只有一個信號線,信號線即可以進行輸入也可以進行輸出操作。在此基礎(chǔ)上進行移植,在實際應(yīng)用過程中意義重大。而以往使用AVR進行引腳操作時,一個引腳要么輸入、要么輸出。在1wire下,一個引腳既要實現(xiàn)輸入操作、也要實現(xiàn)輸出操作,因而需要對DDR操作進行深入的了解,認識DDR操作對引腳電平的影響。1wire通訊協(xié)議基本基本操作包括復(fù)位、寫數(shù)據(jù)位、讀位數(shù)據(jù)。8個位操作形成字節(jié)數(shù)據(jù)的讀寫,所有操作都在復(fù)位后才可以開始。1、復(fù)位時序?qū)S18B20進行所有操作之前,首先要將它復(fù)位。復(fù)位時序圖6-11如
33、下:圖18 復(fù)位時序圖 (1)主機將信號線置為低電平,時間為480960S。 (2)主機將信號線置為高電平,時間為1560S。 (3)從機(DS18B20)發(fā)出60240S 的低電平作為應(yīng)答信號,后釋放信號線,信號線恢復(fù)為高電平。主機收到此信號后,才能認定復(fù)位操作完成,可以對DS18820進行其它操作。2、對DS18B20操作的宏復(fù)位的實現(xiàn)代碼為實現(xiàn)代碼的可移植性,實現(xiàn)對DS18B20的操作代碼前,定義如下宏。#define OW_PIN PD0#define OW_IN PIND#define OW_OUT PORTD#define OW_DDR DDRD#define OW_GET_IN(
34、) ( OW_IN & (1OW_PIN)#define OW_OUT_LOW() ( OW_OUT &= (1 OW_PIN) )#define OW_OUT_HIGH() ( OW_OUT |= (1 OW_PIN) )#define OW_DIR_IN() ( OW_DDR &= (1 OW_PIN ) )#define OW_DIR_OUT() ( OW_DDR |= (1 OW_PIN) )3、復(fù)位的實現(xiàn)代碼unsigned char ow_reset(void) unsigned char err; OW_OUT_LOW(); OW_DIR_OUT(); /主機將信號線置為低電平 _delay_us(490); /延時480us OW_DIR_IN(); /主機將信號線置為高電平,因為有上拉電阻 _delay_us(66); /延時60userr =OW_GET_IN(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶葉購買交易合同
- 2024水產(chǎn)養(yǎng)殖生態(tài)保護區(qū)建設(shè)與保護合作協(xié)議3篇
- 房產(chǎn)按揭貸款合同
- 廣告屏租賃合同
- 城區(qū)房屋贈與合同
- 2024版出借信息咨詢與服務(wù)合同
- 2024年車位交易法律范本及車庫買賣合同版B版
- 2024自然人互貸現(xiàn)金協(xié)議樣式大全
- 2024簽訂電梯安裝工程合同中的安全規(guī)范與標準3篇
- 西游記妖怪名錄全覽
- MOOC 計量經(jīng)濟學(xué)-西南財經(jīng)大學(xué) 中國大學(xué)慕課答案
- 無人機測試與評估標準
- 2024版國開電大法學(xué)本科《國際經(jīng)濟法》歷年期末考試總題庫
- 2023-年2月山東公務(wù)員錄用考試《申論B》考試真題
- 中國人壽保險培訓(xùn)
- 2024年國家電投五凌電力限公司招聘歷年高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 陪診服務(wù)培訓(xùn)課件模板
- 兒童食物過敏的流行病學(xué)調(diào)查與風(fēng)險因素分析
- 云邊有個小賣部詳細介紹
- 2023南頭古城項目簡介招商手冊
- 鄉(xiāng)鎮(zhèn)權(quán)責(zé)清單
評論
0/150
提交評論