傳感器畢業(yè)設計論文_第1頁
傳感器畢業(yè)設計論文_第2頁
傳感器畢業(yè)設計論文_第3頁
傳感器畢業(yè)設計論文_第4頁
傳感器畢業(yè)設計論文_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、引言隨著“信息時代”的到來,作為獲取信息的手段傳感器技術得到了顯著的進步,其應用領域越來越廣泛,對其要求越來越高,需求越來越迫切。傳感器技術已成為衡量一個國家科學技術發(fā)展水平的重要標志之一。因此,了解并掌握傳感器的基本結構、工作原理及特性是非常重要的。為了提高對傳感器的認識和了解,尤其是對溫度傳感器的深入研究以及其用法與用途,基于實用、廣泛和典型的原則而設計了本系統。本文利用單片機結合傳感器技術而開發(fā)設計了紅外抄表系統。文中把傳感器理論與單片機實際應用有機結合,詳細地講述了利用溫度傳感器DS18B20測量環(huán)境溫度,以及實現紅外數據傳輸的過程。本設計應用性比較強,只要對電路部分稍加改裝,就可以實

2、現抄讀其它的數字儀表設備:如數字電度表,數字水表等等。設計后的系統具有操作方便,控制靈活等優(yōu)點。其主要功能和指標如下:1、利用溫度傳感器(DS18B20)測量某一點環(huán)境溫度;2、測量范圍為5599,精度為±0.5; 3、用4位數碼管進行顯示實際溫度值顯示;4、手持端通過紅外發(fā)射管發(fā)射測溫信號;5、測溫端通過紅外發(fā)射管發(fā)送到手持端; 6、手持端可以隨時查看指定待測物體的溫度值。設計的核心是環(huán)境溫度的測量以及紅外數據的發(fā)射和接收,和溫度的顯示。文中對每個部分功能、實現過程作了詳細地介紹。1 方案選擇該系統主要由溫度測量和數據采集和發(fā)送三部分組成。下面列舉兩種實現方案:方案一:溫度檢測可以

3、使用低溫熱偶或鉑電阻,數據采集部分則使用帶有A/D通道的單片機。考慮到一般的A/D輸入通道都只能接收大信號,所以還要設計相應的放大電路。而模擬信號在長距離傳輸過程中,抗電磁干擾是令人傷腦筋的問題。此方案的軟件簡單,但硬件復雜,且檢測點數追加時,各敏感元件參數的不一致性,都將會導致誤差的產生,難以完全清除,而且成本會有較大增長幅度。方案二:使用單片機和數字式單總線溫度傳感器構成。其具有下列特點:具有高的測量精度和分辨率,測量范圍大;抗干擾能力強,穩(wěn)定性好;信號易于處理、傳送和自動控制;便于動態(tài)及多路測量,讀數直觀;安裝方便,維護簡單,工作可靠性高。單總線溫度傳感器可以采用DALLAS公司生產的D

4、S18B20系列,這類溫度傳感器直接輸出數字信號,且多路溫度傳感器可以掛在1條總線上,共同占用單片機的1個I/O口即可實現。在提升單片機I/O口驅動能力的前提下,理論上可以任意擴充檢測的溫度點數。比較兩個方案后可以發(fā)現,方案二更適合于用作本系統的實施方案。盡管方案二不需要A/D,但考慮到系統擴充等因素,單片機可以選用AT98C2051。2 硬件部分采用方案二的硬件設計比較簡單,系統構成如圖1所示。 數碼管紅外發(fā)射AT89C51DS18B20紅外接收紅外發(fā)射 數碼管AT89C51圖 1溫度測試系統和手持接收系統組成框圖2.1 DS18B20介紹DA按鍵LLAS公司的DS18B20單總線數字傳感器

5、工作溫度紅外接收范圍是-55125,在-3085范圍內溫度測量精度為±0.5;具有溫度報警功能,用戶可設置最高和最低報警溫度,且設置值掉電不丟失;采用DALLAS公司特有的單總線通信協議,只用一條數據線就可實現與MCU的通信;此外,DS18B20能夠直接從數據線獲得電源,無需外部電池供電。DS18B20通過使用在板(on_board)溫度測量專利技術來測量溫度。其溫度測量電路是通過計數時鐘周期來實現的,DS18B20有兩個溫度系數振蕩器,溫度測量時對高溫度系數振蕩器產生的門開同期內,低溫度系數振蕩器經歷的時鐘周期的個數進行計數而得到的。DS18B20數字溫度傳感器提供9位(二進制)溫

6、度讀數,指示器件溫度,所以無需A/D轉換。信息經過單線接口送入DS18B20 或從DS18B20送出,因此從主機CPU到DS18B20僅需一條線連接,而且DS18B20的電源可由數據線本身提供(相對于外部電源,轉換時間要延長)。因此每一個DS18B20在出廠時已經給定了唯一的序號因此從理論上說任意多個DS18B20可以連接在一條單線總線上。DS18B20的測量范圍從-55到+125,增量為0.5(最高精度可達0.1),轉換速度小于1s(典型值)。AT89C51DS18B20而在本遙測系統中采用外部電源供電溫度測量工作方式,其中電阻R是上拉電阻,使得單線總線的空閑狀態(tài)是高電平。它與CPU(AT8

7、9C51)的接法如圖2。 5 V R 地圖 2 DS18B20與單片機的連接由于DS18B20只有一根數據線。因此它和主機(單片機)通信是需要串行通信,而AT89C51有兩個串行端口,所以可以不用軟件來模擬實現。經過單線接口訪問DC18B20必須遵循如下協議:初始化、ROM操作命令、存儲器操作命令和控制操作。要使傳感器工作,一切處理均從序列開始。主機發(fā)送(Tx)-復位脈沖(最短為480s的低電平信號)。接著主機便釋放此線并進入接收方式(Rx)。總線經過4.7K的上拉電阻被拉至高電平狀態(tài)。在檢測到I/O引腳上的上升沿之后,DS18B20等待15-60s,并且接著發(fā)送脈沖(60-240s的低電平信

8、號)。然后以存在復位脈沖表示DS18B20已經準備好發(fā)送或接收,然后給出正確的ROM命令和存儲操作命令的數據。DS18B20通過使用時間片來讀出和寫入數據,時間片用于處理數據位和進行何種指定操作的命令。它有寫時間片和讀時間片兩種。寫時間片:當主機把數據線從邏輯高電平拉至邏輯低電平時,產生寫時間片。有兩種類型的寫時間片:寫1時間片和寫0時間片。所有時間片必須有60微秒的持續(xù)期,在各寫周期之間必須有最短為1微秒的恢復時間。讀時間片:從DS18B20讀數據時,使用讀時間片。當主機把數據線從邏輯高電平拉至邏輯低電平時產生讀時間片。數據線在邏輯低電平必須保持至少1微秒;來自DS18B20的輸出數據在時間

9、下降沿之后的15微秒內有效。為了讀出從讀時間片開始算起15微秒的狀態(tài),主機必須停止把引腳驅動拉至低電平。在時間片結束時,I/O引腳經過外部的上拉電阻拉回高電平,所有讀時間片的最短持續(xù)期為60微秒,包括兩個讀周期間至少1s的恢復時間。一旦主機檢測到DS18B20的存在,它便可以發(fā)送一個器件ROM操作命令。所有ROM操作命令均為8位長。DS18B20的引腳定義和封裝形式如圖3所示。DQ為數字信號輸入/輸出端;GND為電源地;VDD為外接電源。DS18B20的光刻ROM中存有64位序列號,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品類型標號,接著的48

10、位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20擁有惟一的地址序列碼,以確保在一根總線上掛接多個DS18B20。所有的串行通訊,讀寫每一個bit位數據都必須嚴格遵守器件的時序邏輯來編程,同時還必須遵守總線命令序列,對單總線的DS18B20芯片來說,訪問每個器件都要遵守下列命令序列:首先是初始化;其次執(zhí)行ROM命令;最后就是執(zhí)行功能命令(ROM命令和功能命令后面以表格形式給出)。    如果出現序列混亂,則單總線器件不會響應主機。當然,搜索ROM命令和報警搜索命令,在執(zhí)行

11、兩者中任何一條命令之后,要返回初始化。    基于單總線上的所有傳輸過程都是以初始化開始的,初始化過程由主機發(fā)出的復位脈沖和從機響應的應答脈沖組成。應答脈沖使主機知道,總線上有從機,且準備就緒。在主機檢測到應答脈沖后,就可以發(fā)出ROM命令。這些命令與各個從機設備的唯一64 位ROM代碼相關。在主機發(fā)出ROM命令,以訪問某個指定的DS18B20,接著就可以發(fā)出DS18B20支持的某個功能命令。這些命令允許主機寫入或讀出DS18B20便箋式RAM、啟動溫度轉換。軟件實現DS18B20的工作嚴格遵守單總線協議:(1)主機首先發(fā)出一個復位脈沖,信號線上的DS18B20器件

12、被復位。(2)接著主機發(fā)送ROM命令,程序開始讀取單個在線的芯片ROM編碼并保存在單片機數據存儲器中,把用到的DS18B20的ROM編碼離線讀出,最后用一個二維數組保存ROM編碼,數據保存在X25043中。(3)系統工作時,把讀取了編碼的DS18B20掛在總線上。發(fā)溫度轉換命令,再總線復位。(4)然后就可以從剛才的二維數組匹配在線的溫度傳感器,隨后發(fā)溫度讀取命令就可以獲得對應的溫度值了。在主機初始化過程,主機通過拉低單總線至少480us,來產生復位脈沖。接著,主機釋放總線,并進入接收模式。當總線被釋放后,上拉電阻將單總線拉高。在單總線器件檢測到上升沿后,延時1560us,接著通過拉低總線60-

13、240us,以產生應答脈沖。寫時序均起始于主機拉低總線,產生寫1時序的方式:主機在拉低總線后,接著必須在15us之內釋放總線。產生寫0時序的方式:在主機拉低總線后,只需在整個時序期間保持低電平即可(至少60us)。在寫字節(jié)程序中的寫一個bit位的時候,沒有按照通常的分別寫0時序和寫1時序,而是把兩者結合起來,當主機拉低總線后在15us之內將要寫的位c給DO:如果c是高電平滿足15us內釋放總線的要求,如果c是低電平,則DOc這條語句仍然是把總線拉在低電平,最后都通過延時58us完成一個寫時序(寫時序0或寫時序1)過程。每個讀時隙都由主機發(fā)起,至少拉低總線1us,在主機發(fā)起讀時序之后,單總線器件

14、才開始在總線上發(fā)送0或1。所有讀時序至少需要60us。單片機通過命令實現對DS18B20的控制,其支持的主要命令如表1所示。表 1 DS18B20主要命令及其功能說明命令碼功能說明命令碼功能說明33H讀ROM中的64位地址序列碼BEH讀9字節(jié)暫存寄存器55H只有地址碼匹配的DS18B2才能接收后續(xù)的命令4EH寫入溫度上/下限,緊隨其后是2字節(jié)數據,對應上限和下限值F0H鎖定總線上DS18B20的個數和識別其ROM中的64位地址序列碼48H將9字節(jié)暫存寄存器的第3和4字節(jié)復制到EEPROM中ECH只有溫度超過上限或下限的DS18B20才做出響應B8H將EEPROM的內容恢復到暫存寄存器的第3和4

15、字節(jié)44H啟動DS18B20進行溫度轉換,結果存入9字節(jié)的暫存寄存器B4H讀供電模式,寄生供電時DS18B20發(fā)送0,外接電源時DS18B20發(fā)送1CCH忽略地址序列碼,適合單片DS18B202.2 單片機的選擇(1)AT89C51的特性及引腳說明主要特性·與MCS-51 兼容 ·4K字節(jié)可編程閃爍存儲器 ·壽命:1000寫/擦循環(huán)·數據保留時間:10年·全靜態(tài)工作:0Hz-24Hz·三級程序存儲器鎖定·128*8位內部RAM·32可編程I/O線·兩個16位定時器/計數器·5個中斷源 ·

16、;可編程串行通道 ·低功耗的閑置和掉電模式·片內振蕩器和時鐘電路 AT89C51的引腳功能,圖4所示:圖 4 AT89C51的引腳功能圖管腳說明 VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每個管腳可吸收8TTL門電流。當P1口的管腳寫“1”時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FLASH編程時,P0口作為原碼輸入口,當FLASH進行校驗時,P0輸出原碼,此時P0外部電位必須被拉高。 P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管

17、腳寫入“1”后,電位被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳電位被內部上拉電阻拉高,且作為輸入。作為輸入時,P2口的管腳電位被外部拉低,將輸出電流,這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉的優(yōu)勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容

18、。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入時,由于外部下拉為低電平,P3口將輸出電流(ILL),也是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 (外部中斷0)P3.3 (外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 (外部數據存儲器寫選通)P3.7 (外部數據存儲器讀選通)P3口同時為閃

19、爍編程和編程校驗接收一些控制信號。 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令時ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 :

20、外部程序存儲器的選通信號。在由外部程序存儲器取址期間,每個機器周期兩次有效。但在訪問外部數據存儲器時,這兩次有效的信號將不出現。 :當保持低電平時,訪問外部ROM;注意加密方式1時,將內部鎖定為RESET;當端保持高電平時,訪問內部ROM。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。內部結構框圖如圖5所示。圖5 AT89C51的內部結構框圖(2)AT89C51的基本操作 如圖6所示,在X1和X2之間接一只石英振蕩晶體構成了單片機的時鐘電路,它還有另一種接法,是把外部振蕩器的信號直

21、接連接到XTAL1端,XTAL2端懸空不用。 AT89C51復位引腳RST/VP通過片內一個施密特觸發(fā)器(抑制噪聲作用)與片內復位電路相連,施密特觸發(fā)器的輸出在每一個機器周期由復位電路采樣一次。當振蕩電路工作,并且在RST引腳上加一個至少保持2個機器周期的高電平時,就能使AT89C51完成一次復位。復位不影響RAM的內容。復位后,PC指向0000H單元,使單片機從起始地址0000H單元開始重新執(zhí)行程序。所以,當單片機運行出錯或進入死循環(huán)時,可按復位鍵重新啟動。MCS-51單片機通常采用上電自動復位和按鈕復位兩種復位方式。上電復位利用電容器充電來實現。按鈕復位又分為按鈕電平復位和按鈕脈沖復位。前

22、者將復位端通過電阻與Vcc相接;后者利用RC微分電路產生正脈沖來達到復位目的。復位電路參數的選擇應能保證復位高電平持續(xù)時間大于2個機器周期。本系統采用的是按鍵脈沖復位,具體電路和原理將在下面的章節(jié)介紹。圖 6 AT89C51基本操作電路振蕩器特性:XTAL1、XTAL2為片內振蕩器的反相放大器的輸入和輸出端??刹捎檬⒕w或陶瓷振蕩器組成時鐘振蕩器,如需從外部輸入時鐘AT89C51,時鐘信號從XTAL1輸入,XTAL2應懸空。由于輸入到內部電路是經過一個2分頻觸發(fā)器,所以輸入的外部時鐘信號無需特殊要求,但它必須符合電平的最大和最小值及時序規(guī)范。 2.3 其它元器件的選擇 除了測溫芯片DS18B

23、20以及單片機AT89C51以外,在電源輸入部分還選用了L7805CV穩(wěn)壓芯片和濾波電容,以及用于紅外部分的4011四與非門邏輯芯片,當然還有紅外發(fā)射和接收管,這里接收管采用TO-92三腳封裝的一體化接收頭,顯示不分采用了12PIN的數碼管LDS-5461AH,總共可以顯示四位數據和小數點,其位選部分使用了NPN三極管來進行位掃描。具體功能及細節(jié)詳見電路原理部分。2.4 電路設計由于是基于單片機實現,硬件電路就相對簡單很多,只需要設計一下電源穩(wěn)壓電路、鍵盤電路、顯示電路、測溫電路、紅外發(fā)射和接收電路以及它們與單片機的連接即可。(1)單片機工作部分由圖6已知AT89C51的基本操作電路。但其中的

24、一些參數還得依據具體要求來設計。具體接幾兆晶體是基于機器周期考慮。一個機器周期由6個狀態(tài)(S1S6)組成,每個狀態(tài)又持續(xù)兩個振蕩周期(分為P1和P2)。這樣,一個機器周期由12個振蕩周期組成,由S1P1(狀態(tài)1節(jié)拍1)到S6P2(狀態(tài)6節(jié)拍2)。若是采用12MHz的晶體振蕩器,則每個周期恰好為1us,如此對于編程而言相對容易些。因而選擇12MHz的晶體振蕩器。此外在兩引腳之間加入一個20pF的小電容是為了使系統更穩(wěn)定,避免雜音干擾而關機。(2)電源部分 如圖7所示,電源接入采用5V的直流電對整個系統供電,使用了L7805CV芯片來對輸入電壓進行穩(wěn)壓,在芯片旁邊設計了三個電容,它們的目的是慮除外

25、界對電路的干擾,使電路得到一個穩(wěn)定線性的直流電壓。為了確認電路進入工作狀態(tài),還在設計時加入了一個發(fā)光二極管,用于顯示電源是否正常工作,如果電路處于接電狀態(tài),二極管就會導通而發(fā)光。圖 7 電源接入部分(3)顯示部分的設計由LED組成的7段發(fā)光管顯示器是不太復雜的單片機應用系統常用外部設備之一,在這里我們就選用一個4數碼管一體化來顯示溫度值,當測得的溫度是大于零時(正溫度)顯示兩位整數和兩位小數,當溫度是小于零時(零下)第一位自動顯示“-”號,后三位顯示兩位整數和一位小數。 7段發(fā)光管顯示器由7段發(fā)光線段組成,并按“日”字形排列,每一段都是一個發(fā)光二極管,如圖8所示。圖中將7個LED的陰極連在一起

26、,稱之為共陰極接法。反之為共陽極接法。如果將公共陰極接地,而在ag各段的陽極加上不同的電壓,就會使各段的發(fā)光情況不同,形成不同的發(fā)光字符。加在7段陽極上的電壓可以用數字量表示,如果某一段的陽極為數字量1,則這個段就發(fā)光;如為0,則不發(fā)光。數字量與段的對應關系如表2所示。表2 七段LED字形碼顯示字符共陽極字符碼共陰極字符碼03FHC0H106HF9H25BHA4H34FHB0H466H99H56DH92H67DH82H707HF8H87FH80H96FH90H圖 8 七段結構及外形圖 在這次電子日歷時鐘的設計中使用了四個7段LED顯示器,而多位顯示器連用有兩種方法。其一,每一位都用各自的8位輸

27、出口控制,在顯示某字符時,相應的段恒定發(fā)光或不發(fā)光。這種顯示方法屬于靜態(tài)顯示。顯然,靜態(tài)顯示需占用較多的I/O口線。其二,是動態(tài)顯示。即將多個7段LED的段選端復接在一起,只用一個8位輸出口控制段選,段選碼同時加到各個7段LED顯示器上,通過控制各個顯示器公共陽極輪流接高電平的辦法,逐一輪流地啟動各個LED。在這種方法中,只要恰當地選擇點亮時間和間隔時間,就會給人以這樣一種假相:似乎各位LED是“同時”顯示的。動態(tài)顯示法是目前各種單片機采用的流行方法。其優(yōu)點是硬件簡單,“動態(tài)”由軟件實現。因而我選用動態(tài)顯示的方法。(4)LED驅動電路的設計LED是電流控制的顯示器件,若想使LED發(fā)光則必須保證

28、有足夠大的電流流過LED的各段。流過LED的電流大時,LED發(fā)光亮度高;流過LED的電流小時,LED發(fā)光亮度就低,為了使LED 能夠長期可靠地工作應使流過LED的電流為其額定電流。為LED顯示器提供電流的電路稱為LED的驅動電路。由于顯示部分選擇了動態(tài)顯示,因此驅動電路也選擇動態(tài)驅動。動態(tài)顯示電路的驅動電路分為段驅動電路和位驅動電路兩種。段驅動電路考慮到所有的段電流均流過位選線,因此位驅動電路的驅動能力應為段驅動能力的8倍(最嚴重情況八段全亮)。圖9為動態(tài)顯示時的驅動電路原理圖,圖中采用了達林頓復合驅動電路。驅動電路可采用分立元件電路,也可采用集成驅動電路,此外有些硬件譯碼電路本身包括驅動電路

29、。由于這里采用動態(tài)輸出,且單片機的內部結構決定了數碼管可以直接由單片機驅動。因此采用分立元件的顯示驅動電路也很簡單,如圖10所示。 限流電阻 段碼ag 段驅動電路 位選線 位驅動電路圖 9 動態(tài)驅動電路 圖 10 位選控制電路具體顯示部分電路如圖11所示。它是4位LED動態(tài)顯示接口電路。LED顯示器為共陽極,字段線并聯,共用AT89C51的P0口(輸出字段碼),每位LED的公共端由89C51的P2口控制,即由P2口輸出位碼,經過開關三極管控制位選。顯然圖中各顯示位不可能同時顯示不同的數字或符號,只有采用動態(tài)的方法輪流使每位顯示器顯示,并保留一段時間,通常保留時間為10ms。由于LED具有余輝性

30、以及人眼視覺的惰性,雖然每位顯示器的顯示是分時段性,但只要適當選取掃描頻率,人眼的視覺就是連續(xù)的。圖 11 四位動態(tài)LED顯示器接口電路(5)鍵盤電路的設計這里設計鍵盤的功能是清零,啟動和單片機復位鍵,所以手持端只需三個鍵測溫端只需一個鍵即可完成。單片機系統所用的鍵盤有編碼鍵盤和非編碼鍵盤兩種。 編碼鍵盤本身除了按鍵之外,還包括產生鍵碼的硬件電路。只要按下編碼鍵盤的某一個鍵,它就能產生這個鍵的代碼,并稱為鍵碼,與此同時還產生一個脈沖信號,以通知CPU接收鍵碼,編碼鍵盤的優(yōu)點是使用比較方便,亦不需要編寫太復雜的程序。其缺點是使用的硬件較復雜。非編碼鍵盤的按鍵是排列成行、列矩陣形式的。按鍵的作用只

31、是簡單地實現接點的接通或斷開,因此必須有一套相應的程序與之配合,才能產生相應的鍵碼,非編碼鍵盤幾乎不需要附加什么硬件電路。因此為了簡潔電路,我使用非編碼鍵盤。但使用非編碼鍵盤需要通過軟件來解決按鍵的識別、防抖動以及如何產生鍵碼的問題?;阪I數少的原因我采用獨立式鍵盤接口與單片機相連接,因為它占用的I/O口不多。圖中每個按鍵占用一個口,彼此獨立,互不影響。上拉電阻保證按鍵沒被按下時,I/O口輸入高電平。獨立式鍵盤可工作在查詢方式下,通過I/O口讀入鍵狀態(tài),當有鍵被按下時I/O口變?yōu)榈碗娖?,而未被按下的鍵對應為高電平,這樣通過讀電平狀態(tài)可判斷是否有鍵按下和哪個鍵被按下。(6)紅外發(fā)射與接收 利用單

32、片機異步通訊口,用紅外光發(fā)射管和一體化接收管來實現接收和發(fā)送點信號的功能。通訊距離約3-10米,異步通訊波特率1200。 圖 12 紅外發(fā)射和接收電路 電路原理:紅外發(fā)送電路由4011MOS與非門和38KHz振蕩器組成,串口發(fā)送控制門電路和紅外光發(fā)射管驅動輸出電路組成。單片機串口發(fā)送TXD端為0時,紅外光發(fā)射管發(fā)出38KHz調制紅外光線。TXD端為1時,發(fā)射管就不發(fā)光。見上圖12。紅外接收電路為紅外接收專門集成電路,當收到38KHz調制紅外光線時,輸出端為0,平時為1。正可與單片機串口發(fā)送接收端RXD配接。(7)實際電路 最終通過Protel 99 SE軟件將以上各個部分電路及元器件組合在一起

33、,得到一個完整的電路圖,如圖13和圖14。然后對各個元器件進行合理的封裝,對封裝后的PCB進行排版以得到最好的布局,為接下來焊接元器件有一定的幫助,而且合理的布局也能使完成后的實物更美觀。 由于本設計兩部分電路都有紅外發(fā)射和接收部分,而區(qū)別在于遠端有一個測溫電路而手持端沒有,所以在設計電路圖時將兩部分設計成一樣的結構,即在手持端也有設計了測溫芯片的接口,只要對手持端的程序稍加修改也能實現測溫的功能。這樣在后期制作時便于對電路的安裝與調試,而且也有利于電路的功能擴展。下面給出了兩部分的電路圖。圖 13 測溫端電路圖圖 14 手持端電路圖3 軟件部分 軟件用C語言進行編程,采用模塊化設計方法。開始

34、開始發(fā)送信號接收信號接收數據測溫顯示顯示發(fā)送數據圖 15 手持端與測溫端的框圖3.1 軟件模塊的劃分該系統的控制軟件主要可以分為測溫和紅外兩個大的部分,其中具體有單片機初始化程序、定時中斷服務程序、DS18B20接口程序、紅外發(fā)射編碼和紅外接收解碼程序等模塊。3.1.1 定時/計數器應用(1)定時/計數器功能簡介AT89C51單片機內部設有兩個16位可編程的定時/計數器,簡稱定時器0和定時器1,分別用T0和T1表示。其功能同一般定時計數器,主要作用是:第一,作為一段特定時間長短的定時;第二,可以計算由T1或T0引腳輸入的脈沖數,前者在應用上可以產生正確的時間延遲及定時去執(zhí)行中斷服務程序,而后者

35、則是計數器或者計頻器的設計。在本設計中這兩種作用都用到了。這兩個定時器本身有四種工作模式可供使用,如表3所示。表3 四種工作模式M1 MO工作方式功能說明0 0模式013位計數器 0 1模式116位計數器1 0模式28位自動重裝計數器1 1模式3定時器0:分成兩個8位計數器定時器1:停止計數(2)定時器相關的控制寄存器TMOD為模式控制寄存器,主要用來設置定時/計數器的操作模式;TCON為控制寄存器,主要用來控制定時器的啟動與停止。兩個16位的定時/計數器T0和T1均可以分成2個獨立的8位計數器即TH0、TL0、TH1、TL1,它們用于存定時或計數的初值。模式控制寄存器-TMOD TMOD是一

36、個專用寄存器,用于控制T1和T0的操作模式及工作方式,其各位定義如下:D7D6D5D4D3D2D1D0GATEC/M1M0GATEC/M1M0 定時器1 定時器0· GATE:門控位。當GATE0,定時器只由軟件控制位TR0或TR1來控制啟停。位為1,定時器啟動開始工作;為0時,定時器停止工作。當GATE1時,定時器的啟動要由外部中斷引腳和位共同控制。只有當外部中斷引腳或為高時,置1才能啟動定時器工作。·C/:功能選擇位。當C/O時設置為定時器工作方式;計數脈沖由內部提供,計數周期等于機器周期。當C/1時設置為計數器工作方式,計數脈沖為外部引腳T0或T1的引入的外部脈沖信號

37、。 ·M1、M0:操作模式控制位,2位可形成4種編碼,對應于4種操作模式。TMOD模式控制寄存器不能進行位尋址,只能用字節(jié)傳送指令設置定時器的工作方式及操作模式,低4位用于定義定時器0,高4位用于定義定時器1。系統復位時TMOD所有位均為0。模式控制字的設置舉例:若設置定時器1為定時器工作方式,由軟件啟動,選擇操作模式2;定時器0為計數方式,由軟件啟動,選擇操作模式1。則TMOD各位設置為:0 0 l 0 0 1 O l 25H用MOV TMOD,25H指令寫入TMOD中??刂萍拇嫫?TCON TCON的作用是用于控制定時器的啟動、停止及定時器的溢出標志和外部中斷觸發(fā)方式等。各位定義

38、如下:8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT0·TF1和TF0;分別為定時器1和定時器0溢出標志。當定時器計滿產生溢出時,由硬件自動置“1”,并可申請中斷。進人中斷服務程序后,由硬件自動清0。這兩位也可作為程序查詢的標志位,在查詢方式下應由軟件來清0。·TR1和TR0:為定時器1和定時器0的啟動控制位。當由軟件使清0而停止定時器的工作。定時器啟動時該位應置“1”。定時器的啟動與門控位和外部中斷引腳有關。當GATE設置為0,定時器的啟動由1控制;而當GATE設置為1時,定時器啟動除了1外,還要求外部中斷引腳1時定時器方可

39、啟動工作。 ·IE1和IE0:為外部中斷1和外部0的中斷請求標志位。當外部中斷源有請求時其對應的中斷標志位置“1”。其復位由觸發(fā)方式來設置。·IT1和IT0:為外部中斷1和外部中斷0的觸發(fā)方式選擇位。設置為“0”時為電平觸發(fā)方式;設置為“1”時為邊沿觸發(fā)方式。TCON中低4位是與外部中斷有關的位,高4位為定時器控制位。它是一個可以進行位尋址的寄存器。當系統復位時所有位均為0。若要啟動定時器可以使用位操作指令SETB 來啟動。(3)定時計數器的操作模式模式0模式0是一個13位的定時/計數器,16位的寄存器只用了高8位()和低5位(的D4D0位),的高3位未用。計時工作脈沖定時

40、器的工作時鐘可以由內部或是外部來提供,由C/位來決定,當C/1時,由外部引腳T0來供給,作為計數器使用,當C/0時,則由內部時鐘來提供,作為一般的定時器使用,而定時器的時鐘為系統工作時鐘除以12,在AT89C51中,石英振蕩晶體使用11.0592MHz,所以定時器每一個計數時間脈沖寬為: 12/11.0592MHz1.085us (3.1.1)若石英振蕩晶體改為12MHz,定時器每一個計數時間脈沖寬為: 12/12MHz1.0us (3.1.2)激活定時器定時器動作的必要條件有: ·GATE=0時,TR01,定時器0就會工作; ·GATE1時,除了TR01,INT0還須是高

41、電平。若使用定時器內部時鐘工作C/0,GATE=0,在模式0操作下,用命令:MOV TMOD,#00H便可設置定時器0 于模式0做計時工作,將TR0設為1,定時器便會開始工作了。定時時間長短設置 在模式0 工作下,計數器最多可計數個數為M=8192,由0到8192便產生溢出而引發(fā)中斷信號,引起定時器0的中斷(TF01)??赡苤灰嫈?00個脈沖便產生中斷,只要將初值8092(8192-100)加載計數器即可,一旦激活計數器后,計數變?yōu)?093、8094、一直到8192則產生中斷,這樣就計數100次了,而時間長度為: 1.085us*100108.5us (3.1.3)也就是經過108.5us后

42、就產生中斷了。在定時器0中,加載定時器的初值,匯編語言指令為:TL0=(8192-C).MOD.32 (3.1.4)TH0=(8192-C)/32 (3.1.5)其中C為所要計數的值,“MOD”為取余數的運算,除以32后取余數部分?!?”為除法運算,在做完除法后取整數部分。計時溢出 當計時終了產生溢出,定時器應用兩種方法可知道系統產生定時器中斷了:·檢查其中斷控制寄存器TCON中的TF0及TF1,若為1則表示產生計時溢出了。·執(zhí)行對應的中斷服務程序。模式1在模式1 工作下,計數器最多可計數個數為 M65536,計時時間最長為 1.085us*6553672ms (3.1.6

43、)而計數初值的加載方法為:TL0(65536-C).MOD.256 (3.1.7) TH0(65536-C)/256 (3.1.8)其中C為所要計數的值,計數時間長度為: 1.085us*C (3.1.9)模式2模式2有自動重新加載初值的功能,使定時器做更精確的計時。在模式2 工作下,計數器最多可計數個數為M256,計時時間最長為: 1.085us*2560.28ms (3.1.10)而計數初值的加載方法為: TH0256-C (3.1.11)其中C為所要計數的值,計數時間長度為: 1.085us*C (3.1.12)模式3在模式3中,定時器1停止計時工作,而定時器0分為兩個獨立的8位定時器。

44、其計數初值加載方法同模式2。3.1.2 中斷控制應用(1)中斷源AT89C51單片機的中斷源:2個外部輸人中斷源(P3.2)和(P3.3);3個內部中斷源T0和T1的溢出中斷源及串行口發(fā)送/接收中斷源。在本系統中只使用了3個內部中斷源:TF0和TF1:定時器0和定時器1的溢出中斷。當T0或T1計數器加1,計數產生溢出時,則將TCON中的TF0或TF1置1,向CPU申請中斷。RI和TF1:串行口的接收和發(fā)送中斷。當串行口接收或發(fā)送完一幀數據時,將TCON中的RI或TI位置1,向CPU申請中斷。當某中斷源的中斷請求被CPU響應之后,CPU將自動把此中斷源的中斷入口地址(又稱中斷矢量地址)裝入PC,

45、中斷服務程序即從此地址開始執(zhí)行。因此一般在此地址單元中存放一條絕對跳轉指令,可以跳至用戶安排的中斷服務程序的入口處。AT89C51單片機各中斷源的矢量地址是固定的。見表4。表4 單片機中斷源的矢量地址表中斷源矢量地址自然優(yōu)先級外部中斷0中斷0003H最高最低T0定時器0中斷000BH外部中斷1中斷0013HT1定時器1中斷002BHR1或T1串行口中斷0023H(2)中斷請求標志SCON的中斷標志串行口的中斷請求標志由串行口控制寄存器SCON的D0和D1位來設置。RI(SCON.0)為接收中斷標志位;TI(SCON.1)為發(fā)送中斷標志位。其中斷申請信號的產生過程為: 發(fā)送過程:當CPU將一個數

46、據寫入發(fā)送緩沖器SBUF時,就啟動發(fā)送。每發(fā)送完一幀數據。由硬件自動將TI位置1。但CPU響應中斷時,并不能清除TI位,所以必須由軟件清除。 接收過程:在串行口允許接收時即可串行接收數據,當一幀數據接收完畢,由硬件自動將RI位置1。同樣CPU響應中斷時不能清除RI位,必須由軟件清除。 AT89C51單片機系統復位后,TCON和SCON中各位均清0,應用時要注意各位的初始狀態(tài)。(3)中斷允許控制中斷的開放和屏蔽AT89C51單片機中的專用寄存器IE稱為中斷允許寄存器,其作用是用來對各中斷源進行開放或屏蔽的控制。其各位的定義如下:AFHAEHADHACHABHAAHA9HA8HEAET2ESET1

47、EX1ET0EX0IE.7:EA0。CPU中斷允許位。EA1,CPU開放中斷;EA0,CPU屏蔽所有中斷請求。IE.4:ES0。串行中斷允許位。ES1,允許串行口中斷;ES0,禁止串行口中斷。IE.3:ET1。T1中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。IE.2:EX1。外部中斷1允許位。EX11,允許外部中斷1中斷;EX10,禁止外部中斷1中斷。IE.1:ET0。T0中斷允許位。ET01,允許T0中斷;ET00,禁止T0中斷。IE.0:EX0。外部中斷0允許位。EX01,允許外部中斷0中斷;EX00,禁止外部中斷0 中斷。 系統復位后,IE中各中斷允許位均被清零,即禁

48、止所有中斷。中斷源優(yōu)先級結構靠設置IP寄存器把各中斷源的優(yōu)先級分為高低2級,它遵循2條基本原則: ·低優(yōu)級中斷可以較高優(yōu)先級中斷所中斷,反之不能。 ·一種中斷(不管什么優(yōu)先級)一旦得到響應,與它同級的中斷不能再中斷它。 為了實現這2條規(guī)則,中斷系統內部包含2個不可尋址的“優(yōu)先級激活”觸發(fā)器。其中一個指示某高優(yōu)級的中斷正在得到服務,所有后來的中斷都被阻斷。另一個觸發(fā)器指示某低優(yōu)先級的中斷正在得到服務,所有同級的中斷都被阻斷,但不阻斷高優(yōu)先級的中斷。當CPU同時收到幾個同一優(yōu)先級的中斷請求時,根據內部的硬件查詢順序,CPU將按自然優(yōu)先級順序確定該響應哪個中斷請求。其自然優(yōu)先級由

49、硬件形成,排列如表:表5 自然優(yōu)先級中斷源同級自然優(yōu)先級外部中斷0最高級最低級定時器0中斷外部中斷1定時器1中斷串行口中斷定時器2中斷 最低級(52系列單片機中)在每一個機器周期中,CPU對所有中斷源都順序地檢查一遍,這樣到任一機器周期的S6狀態(tài),可找到所有已激活的中斷請求,并排好了優(yōu)先級。在下一個機器周期的S1狀態(tài),只要不受阻斷就開始響應其中最高優(yōu)先級的中斷請求。若發(fā)生下列情況,中斷響應會受到阻斷: ·同級或高優(yōu)先級的中斷正在進行中; ·現在的機器周期還不是執(zhí)行指令的最后一個機器周期,即正在執(zhí)行的指令還沒完成前不響應任何中斷; ·正在執(zhí)行的是中斷返回指令RETI

50、或是訪問專用寄存器IE或IP的指令,換而言之,在RETI或者讀寫IE或IP之后,不會馬上響應中斷請求,至少要在執(zhí)行其它一條指令之后才會響應。若存在上述任一種情況,中斷查詢結果就被取消。否則,在緊接著的下一個機器周期,中斷查詢結果變?yōu)橛行А?4)中斷處理過程中斷處理過程可分為三個階段:即中斷響應、中斷處理和中斷返回。由于各計算機系統的中斷系統硬件結構不同,中斷響應的方式就有所不同。中斷響應中斷響應條件CPU響應中斷的條件有:·有中斷源發(fā)出中斷請求;·中斷總允許位EA1,即CPU開中斷;·申請中斷的中斷源的中斷允許位為1,即沒有被屏蔽。 以上條件滿足,一般CPU會響應

51、中斷,但在上一節(jié)中所述的中斷受阻斷的情況下,本次的中斷請求CPU不會響應。如果中斷響應條件滿足,而且不存在中斷受阻的情況下,則CPU將響應中斷。在此情況下,CPU首先使被響應中斷的相應“優(yōu)先級激活”觸發(fā)器置位,以阻斷同級和低級的中斷。然后,根據中斷源的類別,在硬件的控制下內部自動形成長調用指令(LCALL),此指令的作用將自動把斷點壓入堆棧,但不自動保存PSW的內容。然后將對應的中斷源的矢量地址裝入程序計數器PC,使程序轉向該中斷的矢量地址,以轉至中斷服務程序對應的入口地址。在使用時,通常在這些地址單元中存放一條絕對跳轉指令,使程序轉移到用戶安排的中斷服務程序入口處。中斷處理中斷處理包括兩部分

52、內容:一是保護現場,二是中斷服務。 現場通常有PSW、工作寄存器、專用寄存器等。如果在中斷服務程序中要用這些寄存器,則在進入中斷服務之前應將它們的內容保護起來稱為保護現場;同時在中斷結束,執(zhí)行RETI指令之前應恢復現場。編寫中斷服務程序時需注意到:·各中斷源的入口矢量地址之間,只相隔8個單元,一般中斷服務程序是容納不下的,最常用的解決方法是在中斷人口矢量地址單元處存放一條無條件轉移指令,而轉至存儲器其它的任何空間去。·若要在執(zhí)行當前中斷程序時禁止更高優(yōu)先級中斷,應用軟件關閉CPU中斷,或屏蔽更高級中斷源的中斷,在中斷返回前再開放中斷。·在保護現場和恢復現場時,為了不使現場信息受到破壞或造成混亂,在此情況下,應關CPU中斷,使CPU暫不響應新的中斷請求。這樣就要求在編寫中斷服務程序時,注意在保護現場之前要關中斷,在保護現場之后若允許高優(yōu)先級中斷打斷它,則應開中斷。同樣在恢復現場之前應關中斷,恢復之后再開中斷。中斷返回 中斷處理程序的最后一條指令是中斷返回指令RET1。它的功能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論