版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、畢業(yè)論文設計可燃氣體報警器設計第1章 單片機相關知識介紹1.1 單片機中斷與復位2.1.1單片機中斷系統(tǒng)1. 中斷的概念中斷是通過硬件來改變cpu程序運行的方向。計算機在執(zhí)行程序的過程中,由于cpu以外的某種原因,有必要盡快中止當前程序的執(zhí)行,而去執(zhí)行相應的處理程序,在處理結束后,再回來繼續(xù)執(zhí)行被中止了的源程序。這種程序在執(zhí)行過程中由于外界的原因而被中間打斷的情況稱為“中斷”。2. 89c51 的中斷系統(tǒng)89c51的中斷系統(tǒng)主要由幾個與中斷有關的特殊功能的寄存器,中斷入口,順序查詢邏輯電路等組成。與中斷有關的特殊功能寄存器有四個,分別為中斷源寄存器(即專用寄存器tcon和scon的相關位),中
2、斷允許控制寄存器ie和中斷優(yōu)先級控制寄存器ip。89c51單片機有5個中斷源,可提供兩個中斷優(yōu)先級,即可實現(xiàn)二級中斷嵌套。5個中斷源的排列順序由中斷優(yōu)先級控制寄存器ip和順序查詢邏輯電路共同決定。5個中斷源對應5個固定的中斷入口地址。(1) 中斷請求源: 外部中斷請求源:即外中斷0和1,經由外部引腳引入的,在單片機上有兩個引腳,名稱為int0、int1,也就是p3.2、p3.3這兩個引腳。在內部的tcon中有四位是與外中斷有關的。it0:int0觸發(fā)方式控制位,可由軟件進和置位和復位,it0=0,int0為低電平觸發(fā)方式,it0=1,int0為負跳變觸發(fā)方式。ie0:int0中斷請求標志位。當
3、有外部的中斷請求時,這位就會置1(這由硬件來完成),在cpu響應中斷后,由硬件將ie0清0。it1、ie1的用途和it0、ie0相同。(2)內部中斷請求源:tf0:定時器t0的溢出中斷標記,當t0計數(shù)產生溢出時,由硬件置位tf0。當cpu響應中斷后,再由硬件將tf0清0。tf1:與tf0類似。ti、ri:串行口發(fā)送、接收中斷。(3) 中斷允許寄存器ie中斷的允許或禁止是由片內可進行位尋址的8位中斷允許寄存器ie來控制的。見表2-1 表2-1 8位中斷允許寄存器eaxxeset1ex1et0ex0其中ea是總開關,如果它等于0,則所有中斷都不允許。es串行口中斷允許et1定時器1中斷允許,ex1
4、外中斷1中斷允許。et0定時器0中斷允許,ex0外中斷0中斷允許。(4)五個中斷源的自然優(yōu)先級與中斷服務入口地址外中斷0:0003h 定時器0:000bh外中斷1:0013h 定時器1:001bh串口 :0023h它們的自然優(yōu)先級由高到低排列。中斷優(yōu)先級中由中斷優(yōu)先級寄存器ip來置值的,ip中某位設為1,相應的中斷就是高優(yōu)先級,否則就是低優(yōu)先級。xxxpspt1px1pt0px02.1.2單片機復位電路復位是單片機的初始化操作,其主要功能是把pc初始化位0000h單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復位鍵重新啟動。
5、除pc之外,復位操作還對其它一些專用寄存器有影響,他們的復位狀態(tài)如下;pc 0000h tcon 00hacc 00h tlo 00hpsw 00h th0 00hsp 07h tl1 00hdptr 0000h th1 00hp0p3 0ffh scon 00hip xx000000b sbuf 不定ie 0x000000b pcon 0xx0000btmod 00h復位操作還對單片機的個別引腳信號有影響,例如把ale和信號變?yōu)闊o效狀態(tài),即ale = 0, = 1。本實驗采用按鍵電平復位方式,晶振為12mhz,r1為200,r2為2k,c為10uf。復位電路雖然簡單,但其作用非常重要。一個單
6、片機是否正常工作,首先要檢查是否能復位成功。1.2 at89c51單片機對adc0809的接口mcs-51與adc接口時必須弄清并處理好三個問題:1要給start線送一個100ns寬的啟動正脈沖;2. 獲取eoc線上的狀態(tài)信息,因為它是a/d轉換的結束標志;3.要給“三態(tài)輸出鎖存器”分配一個端口地址,也就是給oe線上送一個地址譯碼器輸出信號。mcs-51和adc接口通??梢圆捎貌樵兒椭袛鄡煞N方式。采用查詢法傳送數(shù)據(jù)時mcs-51應對eoc線查詢它的狀態(tài):若它為低電平,表示a/d轉換正在進行,則mcs-51應當繼續(xù)查詢;若查詢到eoc變?yōu)楦唠娖?,則給oe線送一個高電平,以便提取a/d轉換后的數(shù)字
7、量。采用中斷方式傳送數(shù)據(jù)時,eoc線作為cpu的中斷請求輸入線。cpu響應中斷后,應字中斷服務程序中使oe線變?yōu)楦唠娖剑蕴崛/d轉換后的數(shù)字量。 mcs-51對adc0809的接口adc0809內部有一個8位“三態(tài)輸出鎖存器”可以鎖存a/d轉換后的數(shù)字量,故它本身既可看作一種輸入設備,也可認為是并行i/o接口芯片。因此,adc0809可以直接和mcs-51接口,當然也可通過像8255這樣的其他芯片連接。但在大多數(shù)情況下,51系列單片機是和adc0809直接相連的1.3 at89c51的介紹是一個低電壓,高性能cmos 8位單片機,片內含4k bytes的可反復擦寫的flash只讀程序存儲器
8、和128 bytes的隨機存取數(shù)據(jù)存儲器(ram),器件采用atmel公司的高密度、非易失性存儲技術生產,兼容標準mcs-51指令系統(tǒng),片內置通用8位中央處理器和flash存儲單元,內置功能強大的微型計算機的at89c51提供了高性價比的解決方案。at89c51是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(i/o)端口,同時內含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,at89c51可以按照常規(guī)方法進行編程,也可以在線編程。其將通用的微處理器和flash存儲器結合在一起,特別是可反復擦寫的flash存儲器可有效地降低開發(fā)成本。第2章 硬件部分的設計及調試
9、2.1 硬件部分的設計2.1.1 系統(tǒng)的組成整個報警器由三個部分組成:濃度檢測及顯示模塊。主控模塊和報警及事故處理模塊。系統(tǒng)的組成框圖如圖3-4所示。故障處理報警控制濃度顯示at89c51氣體濃度檢測工作狀態(tài)設置圖3-4 系統(tǒng)組成框圖2.1.2 系統(tǒng)各模塊功能1.氣體濃度檢測模塊系統(tǒng)采用三點單獨檢測的方法,可用來巡回檢測三個不同的房間;也可用來巡回檢測同一個房間的不同方位.檢測器件選用高溫一氧化碳氣體傳感器(gs-a1),該傳感器對一氧化碳具有很高的靈敏度,穩(wěn)定性和抗?jié)裥粤己?加活性碳罩后,可防止乙醇等有機氣體的干擾.檢測結果經高精度運放器op07放大后,送入adc0809模p數(shù)轉換芯片進行模
10、)數(shù)轉換,單個傳感器檢測電路圖如圖5。 2.模數(shù)轉換模塊在本設計中,另一重要模塊就是a/d模數(shù)轉換模塊。因為模擬信號不能直接送往單片機進行處理,必須進行a/d轉換。模數(shù)轉換的過程有四個階段,即:采樣,保持,量化和編碼。本設計利用adc0809實現(xiàn)模數(shù)轉換。adc0809是8位逐次漸進型的a/d轉換器,它采用coms工藝20個引腳雙列直插式封裝,它有三態(tài)瑣存器,直接驅動數(shù)據(jù)總線,與微機相連時不需要附加接口電路。adc0809的主要性能如下:1分辨率為8位。2最大轉換誤差為1lsb。3轉換時間為100us。4邏輯點平與coms和ttl相兼容。5+5v單電源供電。6可對0到+5v的輸入模擬信號進行轉
11、換。圖3-5 a/d轉換模塊引腳圖程序中預采用模數(shù)轉換電路由adc0809芯片組成,三路檢測結果從in0、in1、in2輸入,轉換順序由adda、addb、addc控制,轉換結果送單片機p0口供單片機進行數(shù)據(jù)處理。3.顯示電路由p0口輸入的數(shù)據(jù),在單片機內部進行標度變換后,從單片機的串行口輸出進行顯示.系統(tǒng)的工作狀態(tài)和氣體濃度,采用led數(shù)碼管顯示,每30秒刷新一次.為了不再擴展ipo口,系統(tǒng)采用串行口的移位功能擴展為4位靜態(tài)顯示電路.第一位為系統(tǒng)工作狀態(tài)顯示,后三位為一氧化碳氣體濃度顯示.當?shù)谝晃粸椤?0”時,表示系統(tǒng)工作在三點巡回檢測同一個房間狀態(tài);為“8”時表示系統(tǒng)工作在三點巡回檢測同一
12、個房間正常工作狀態(tài);為“1”、“2”、“3”時表示系統(tǒng)工作在單獨檢測狀態(tài),此時后三位顯示的數(shù)據(jù)分別為第1號、第2號、第3號傳感器所檢測到的一氧化碳氣體濃度。濃度顯示單位為5ppm.74ls164為串行輸入,并行輸出寄存器,當p2.0=1且at89c51的txd端有輸出時,74ls164接收串行數(shù)據(jù),更新顯示;當p2.0=0時,顯示的內容不變。4.主控模塊系統(tǒng)采用單片機進行控制,選用at89c51單片機.該單片機為atmel公司的產品,其指令系統(tǒng)完全與8031/8051兼容,內帶4k字節(jié)的內存和程序保護系統(tǒng),便于程序的調試修改和保密,各管腳的功能如下:1)ale端的功能:ale端與adc0809
13、的clock相連,為adc0809輸入時鐘脈沖.2)p0口的功能:p0口與adc0809的數(shù)據(jù)輸出口相連,接收apd轉換結果.3)p1口的功能:p1.0端接工作狀態(tài)控制開關,開關閉合時,系統(tǒng)進入正常工作狀態(tài);p1.1端外接的開關為三點巡回測量同一個房間控制開關,當開關閉合時有效;p1.2p1.4端接adc0809的adda、addb、addc三端,控制adc0809的八路模擬輸入轉換.4)p2口的功能:p2.1端與wr端通過外接的與門求反后與adc0809的start和ale相連,用以啟動apd轉換,且將8路地址鎖存;p2.1端與rd端通過外接的與門求反后與adc0809的oe端相連,用以允許
14、將apd轉換結果輸出,讓單片機讀取轉換結果;p2.2端用作系統(tǒng)音樂報警信號控制端,高電平有效;p2.3端用作排風扇啟動信號控制端,高電平有效;p2.4端用作電磁閥啟動信號控制端,高電平有效.5)p3口的功能:p3.0、p3.1端和p2.0端用于控制系統(tǒng)的顯示輸出.5.報警與事故處理模塊當氣體濃度超過允許值時,該模塊動作,發(fā)出警報信號并根據(jù)不同情況進行事故處理.p2.2端為音樂控制端,p2.3端為電磁閥啟動控制端,p2.4為排風扇控制端,均為高電平有效.為防止市電對系統(tǒng)的干擾,p2.3和p2.4端都經過光電耦合管對電磁閥和排風扇進行控制.系統(tǒng)各模塊之間的接線圖如圖6所示.圖5 單個傳感器電路圖
15、2.1.3 系統(tǒng)的控制1系統(tǒng)要求設置正常工作狀態(tài),除正常工作狀態(tài)外,電磁閥要求處于關閉狀態(tài),以切斷煤氣通道,防止煤氣外泄。2在非正常工作狀態(tài)下,當室內一氧化碳的濃度達到100ppm時系統(tǒng)應啟動音樂報警,若2min報警無效,系統(tǒng)應啟動排風扇進行通風排氣。3系統(tǒng)進入正常工作狀態(tài)后,先啟動排風扇進行通風,然后啟動電磁閥供給煤氣。4系統(tǒng)進入正常工作狀態(tài),自45min后,每隔10min音樂響起一次,用來提醒用戶在工作完畢后,停止供氣。5在正常工作狀態(tài)下,當系統(tǒng)檢測到一氧化碳的濃度達到300ppm時,應關閉電磁閥,切斷煤氣通道以防止意外事故的發(fā)生。2.1.4 系統(tǒng)主要器件的介紹3.1.4.1 gs傳感器介
16、紹設計中所用到的氣體傳感器是gs系列傳感器,下面具體介紹一下gs系列氣體傳感器:gs系列氣敏元件采用半導體敏感材料,工藝獨特為國內首創(chuàng),其靈敏度、選擇性、穩(wěn)定性、抗干擾性、響應時間及壽命等主要性能,均達到國內先進水平.用該系列元件組裝成易燃易爆和有毒氣體泄漏報警器及檢測裝置,可廣泛運用于礦山、油田、化工、國防、醫(yī)藥及家庭.gs系列傳感器主要有以下特點:(1)靈敏度高、功耗低,輸出信號強.(2)選擇性好、對被檢測的氣體非常敏感,而對干擾氣體則靈敏度很低(3)穩(wěn)定性、可靠性強(4)具有抗高溫、抗高濕性能(5)元件不含任何貴金屬催化劑,具有抗中毒及抗飽和性能.但由于氣體傳感器是使用半導體材料來制作,
17、不可避免的是有溫度漂移問題,如何處理好氣體傳感器溫度補償問題是報警器設計的關鍵(圖3-1、圖 3-2).以前的一般做法是把報警器的報警閥值電壓作補償,這樣的電路會簡單一些,但溫度補償?shù)男Ч惶硐?,主要是在低溫環(huán)境里,氣體傳感器的表面溫度降低導致氣體傳感器的性能變差,解決的方法是在低溫環(huán)境里提高氣體傳感器的加熱功率,使氣體傳感器的表面溫度維持相對恒定,達到使氣體傳感器穩(wěn)定工作的目的。圖3-1 傳感器輸出特性曲線圖圖3-2 傳感器加溫度補償所需的加熱電壓曲線 氣體傳感器加熱電源的原理見圖 3-3,利用 pic 單片機的脈沖寬度調制輸出功能(簡稱 pwm), 及 a/d 轉換輸入功能實現(xiàn)電源電壓的
18、穩(wěn)定和自我調整。 如圖所示,是降壓式開關電源(buck 式)的基本電路。其中,vin 為輸入電壓,vout 為輸出電壓,q1、q2 為開關三極管,r1、r2、r3 為電阻,l 為電感,d 為肖特基二極管;c 為電容,mqk 為氣體傳感器,通常有:,;。其中,n 為脈寬占空比,ton 為開關三極管導通時間,toff 為開關三極管關閉時間,rx 為開關電源的負載電阻,vp 為輸出紋波電壓.實際使用開關速度為 20khz,輸出的電壓為 2.250.01v,輸出電流為 120ma,vp0.1v.該電路的工作原理是:預先設定目標工作電壓值,輸出 at89c51 單片機的 pwm,啟動開關電源工作,通過a
19、/d 轉換電路將電源電壓值讀入單片機,如果電壓值偏離給定值,則調整 pwm 輸出,這樣形成一個電壓調整的閉合環(huán)路,直到電壓值維持恒定,而環(huán)境溫度將決定電壓給定值的大小,達到隨外界溫度的改變而改變加熱功率的目的,以補償氣體傳感器的溫度變化,同時使用開關電源減少了線性穩(wěn)壓電源的壓降損耗.該開關電源電路的電壓穩(wěn)定精度取決于單片機 a/d 和 pwm 的精度,該 at89c51 單片機基本能夠滿足氣體泄漏報警器的性能需求。圖3-3 傳感器加熱電源原理圖 3.1.4.2 74ls164移位寄存器介紹74ls164 8 位移位寄存器(串行輸入,并行輸出) 簡要說明 164 為 8 位移位寄存器,其主要電特
20、性的典型值如下:當清除端(clear)為低電平時,輸出端(qaqh)均為低電平。 串行數(shù)據(jù)輸入端(a,b)可控制數(shù)據(jù)。當 a、b 任意一個為低電平,則禁 止新數(shù)據(jù)輸入,在時鐘端(clock)脈沖上升沿作用下 q0 為低電平。當 a、b 有一個為高電平,則另一個就允許輸入數(shù)據(jù),并在 clock 上升沿作用下決定 q0 的狀態(tài)。 引出端符號 clock 時鐘輸入端 clear 同步清除輸入端(低電平有效) a,b 串行數(shù)據(jù)輸入端 qaqh 輸出端邏輯及封裝圖雙列直插封裝極限值 電源電壓7v 輸入電壓 5.5v 工作環(huán)境溫度 54164 -070 儲存溫度 -65150真值表h高電平 l低電平 x任
21、意電平 低到高電平跳變 qa0,qb0,qh0 規(guī)定的穩(wěn)態(tài)條件建立前的電平 qan,qgn 時鐘最近的前的電平時序圖下面再介紹一下74ls164驅動數(shù)碼管:在單片機應用系統(tǒng)中,顯示器顯示常用兩種方法:靜態(tài)顯示和動態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個顯示器都要占用單獨的具有鎖存功能的i/o接口用于筆劃段字形代碼。這樣單片機只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼,因此,使用這種方法單片機中cpu的開銷小。可以提供單獨鎖存的i/o接口電路很多,這里以常用的串并轉換電路74ls164為例,介紹一種常用靜態(tài)顯示電路,以使大家對靜態(tài)顯示有一定的了解。 m
22、cs-51單片機串行口方式0為移位寄存器方式,外接6片74ls164作為6位led顯示器的靜態(tài)顯示接口,把8031的rxd作為數(shù)據(jù)輸出線,txd作為移位時鐘脈沖。74ls164為ttl單向8位移位寄存器,可實現(xiàn)串行輸入,并行輸出。其中a、b(第1、2腳)為串行數(shù)據(jù)輸入端,2個引腳按邏輯與運算規(guī)律輸入信號,共一個輸入信號時可并接。t(第8腳)為時鐘輸入端,可連接到串行口的txd端。每一個時鐘信號的上升沿加到t端時,移位寄存器移一位,8個時鐘脈沖過后,8位二進制數(shù)全部移入74ls164中。r(第9腳)為復位端,當r=0時,移位寄存器各位復0,只有當r=1時,時鐘脈沖才起作用。q1q8(第3-6和1
23、0-13引腳)并行輸出端分別接led顯示器的hga各段對應的引腳上。在給出了8個脈沖后,最先進入74ls164的第一個數(shù)據(jù)到達了最高位,然后再來一個脈沖會有什么發(fā)生呢?再來一個脈沖,第一個脈沖就會從最高位移出,搞清了這一點,下面讓我們來看電路,6片7ls164首尾相串,而時鐘端則接在一起,這樣,當輸入8個脈沖時,從單片機rxd端輸出的數(shù)據(jù)就進入到了第一片74ls164中了,而當?shù)诙€8個脈沖到來后,這個數(shù)據(jù)就進入了第二片74ls164,而新的數(shù)據(jù)則進入了第一片74ls164,這樣,當?shù)诹鶄€8個脈沖完成后,首次送出的數(shù)據(jù)被送到了最左面的164中,其他數(shù)據(jù)依次出現(xiàn)在第一、二、三、四、五片74ls1
24、64中。2.2 硬件電路的調試本設計的元器件較少,所以采用萬用板手工焊接。焊接完成后,檢查有無可能出現(xiàn)的虛焊、漏焊,檢查電源線和接地線。確定無問題后將電路板通電。首先用示波器觀察單片機at89c51的18、19管腳有無頻率為10mhz的三角波。若有,表示晶振正常工作,單片機能保證正常工作。若無,檢查晶振電路,排除故障。接著用單片機仿真器向p1口送數(shù)值,檢查led數(shù)碼管能否正常顯示,若不能,檢查譯碼器7448是否工作,有無電壓輸出,檢查led是否損壞。最后檢查adc0809在有電壓15v接入的情況下,有無電壓輸出。若無問題,硬件調試完畢。第3章 軟件部分的設計及調試3.1 軟件部分的設計本設計的
25、主要功能實現(xiàn)在于程序的編寫,流程圖如圖4-1: 圖4-1 軟件流程圖如圖所示,整個報警器程序上分成中斷取值轉換、調零、報警、顯示四大模塊3.1.1 主程序整個程序一共使用了兩個中斷,一個外部中斷即int0中斷,一個定時/計數(shù)器中斷即it0中斷.這兩個中斷各有其作用,int0中斷是用來判斷a/d轉換器adc0809對模擬信號的轉換是否完成,當a/d轉換結束后,adc0809發(fā)出結束eoc(高電平)信號,該信號可供單片機查詢,也可反相后作為向單片機發(fā)出中斷信號,而本設計正是用的這個方法,使得程序進入中斷取值程序.而程序中所用到的it0中斷,是為產生一個周期為2s的方波而設計的,其作用是為看門狗產生
26、喂狗子信號.具體程序如下: org 00h jmp start ;主程序入口地址 org 03h jmp into ;外中斷into入口 org 0bh jmp itop ; 定時器0中斷入口 org 0100hstart: mov ie,#10000001b ;int0中斷使能 mov ip,#00000001b ;int0中斷優(yōu)先 mov tcon,#00000000b ;設置int0為電平觸發(fā) mov scon,#00000000b ;串行口發(fā)送,接收標志位請0 mov sp,#60h ;設堆棧指針 mov tmod,#01h ;設置t0為方式1 call pt0m0here: ajmp
27、 here ;自身跳轉pt0m0: mov tl0,#0ch ;t0中斷服務程序,t0重新置初值 mov th0,#0feh setb tr0 ;啟動t0 setb et0 ;允許t0中斷 setb ea ;cpu開中斷 retitop: mov tl0,#0ch ;t0中斷服務程序,t0置初值 mov th0,0feh cpl p1.0 ;p1.0狀態(tài)取反 reti acall led ;調用led自檢子程序 mov 33h,#00h ;設置中斷完成標志為0 mov dptr,#0feffh ;adc0809的端口地址 movx dptr,a ;使bus為高阻抗,令adc0809開始轉換wa
28、it:mov a,33h ;等待a/d轉換完成信號 jnz intok jmp wait ;未完成則跳回等待intok: mov a,32h ;將最新的濃度值存入累加器中,(若a/d未工作,則a=0) jnz l1 mov a,30h jmp l2l1: mov 30h,31h mov a,31h ;將新濃度載入累加器l2: call bcd ;調用bcd碼調整程序 call disp ;顯示當前濃度 call adzero ;調用零點調整子程序 call alarm ;調用判斷報警程序 call bcd call disp ;調用顯示子程序 clr a ;清除累加器值 jmp start ;
29、返回在主程序通過對33h中數(shù)值的判斷斷定a/d是否轉換完成,當33h中為1時,轉換完成,程序調用調零、報警、顯示模塊對輸入數(shù)據(jù)進行處理。3.1.2 調零子程序:由于未知問題,可能造成送入單片機中顯示的模擬電壓量與真實電壓存在區(qū)別,這種誤差可以通過在中斷處理中對a/d轉換的數(shù)值加上一個調整值來解決。這樣,我們就能根據(jù)實際情況來對報警器輸出的數(shù)值進行控制,使其記數(shù)更加精確,使用更方便。我們可以利用對端口的電平高低來判斷是否需要進行調零處理,故可將按鍵開關接于端口p2.2.若開關按下,則說明有調零需要,于是進入調零處理程序;若開關沒有按下,則說明沒有調零需要,系統(tǒng)進入下一步.通過設置一個按鍵,既可保
30、證程序順利進行,又方便用戶使用.具體程序如下:adzero:call delayjb p2.2,jmp1 ;判斷調零按鈕是否按下,沒按則跳jmp1.jmp1:ret通過對p2.2位的判斷來分辨是否有調零請求,若有則跳入調零模式,調零模式中程序如下:loop1:call delay jnb p2.2,$ ;消除抖動延時 mov a,40h ;將調零預設值40h送入 clr c ;清除進位標志 subb a,#01h ;調零值減1 jnc loop2 ;未借位則跳loop2 mov a,#05h ;有借位則重設調零值為5loop2:mov 40h,a ;將調零值送回40h保存 mov a,r3 ;
31、將當前濃度值送入a jz xend dec a ;當前濃度值減1(響應調整變化)xend1 :mov 30h,a ;送回30h保存 mov 31h,a ;送回31h保存 call bcd ;調用bcd碼調整 call disp ;調用顯示子程序jmp loopxend: mov a,#63h jmp xend1進入調零模式后,若有按鍵則,led數(shù)碼管示數(shù)響應按鍵變化。若3秒無任何按鍵,則退出調零模式返回主程序。3.1.3 顯示子程序因為通過a/d轉換進入單片機8051的濃度值以十六進制存在,為了讓led顯示需要轉換為bcd碼,其bcd碼轉換程序如下:bcd:mov 55h,#00h ;存放bc
32、d轉換中的百位數(shù)mov 56h,#00h ;存放bcd轉換中的十位數(shù)clr c ;清除進位標志為下面的subb準備 mov r2,#00h ;清除r2chan:subb a,#64h ;減100jc chan1 ;不能減,轉inc r1 ;百位值jmp chan ;循環(huán)判斷百位chan1: add a,#64h ;還原百位數(shù) clr c ;清除進位標志為下面的subb準備chan2: subb a,#0ah ;減10jc chan3 ;不夠減,跳inc r2 ;夠減十位加1jmp chan2 ;重復減10chan3: add a,#0ah ;還原十位數(shù)mov 60h,r2 ;把十位數(shù)放60h中
33、mov 61h,a ;把個位數(shù)放61h中ret這樣把轉換成的bcd碼,個位存于61h中,十位存入60h中,再編寫顯示模塊如下:disp: mov r7,#03h mov r0,#60hled1: mov a,r0 mov dptr,#tableled2: movc a,a+dptr mov sbuf,a jnb ti,$ clr ti inc r0 djnz r7,led1 ret將數(shù)值送入到led顯示74ls164驅動數(shù)碼管的過程:在單片機應用系統(tǒng)中,顯示器顯示常用兩種方法:靜態(tài)顯示和動態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個顯示器都要占用單獨的具有鎖存功能的i/o接口用于筆劃段字形代碼。這樣單
34、片機只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼,因此,使用這種方法單片機中cpu的開銷小。可以提供單獨鎖存的i/o接口電路很多,這里以常用的串并轉換電路74ls164為例,介紹一種常用靜態(tài)顯示電路,以使大家對靜態(tài)顯示有一定的了解。 mcs-51單片機串行口方式0為移位寄存器方式,外接3片74ls164作為3位led顯示器的靜態(tài)顯示接口,把8031的rxd作為數(shù)據(jù)輸出線,txd作為移位時鐘脈沖。74ls164為ttl單向8位移位寄存器,可實現(xiàn)串行輸入,并行輸出。其中a、b(第1、2腳)為串行數(shù)據(jù)輸入端,2個引腳按邏輯與運算規(guī)律輸入信號,共一個輸入信
35、號時可并接。t(第8腳)為時鐘輸入端,可連接到串行口的txd端。每一個時鐘信號的上升沿加到t端時,移位寄存器移一位,8個時鐘脈沖過后,8位二進制數(shù)全部移入74ls164中。r(第9腳)為復位端,當r=0時,移位寄存器各位復0,只有當r=1時,時鐘脈沖才起作用。q1q8(第3-6和10-13引腳)并行輸出端分別接led顯示器的hga各段對應的引腳上。在給出了8個脈沖后,最先進入74ls164的第一個數(shù)據(jù)到達了最高位,然后再來一個脈沖會有什么發(fā)生呢?再來一個脈沖,第一個脈沖就會從最高位移出,搞清了這一點,下面讓我們來看電路,3片7ls164首尾相串,而時鐘端則接在一起,這樣,當輸入8個脈沖時,從單
36、片機rxd端輸出的數(shù)據(jù)就進入到了第一片74ls164中了,而當?shù)诙€8個脈沖到來后,這個數(shù)據(jù)就進入了第二片74ls164,而新的數(shù)據(jù)則進入了第一片74ls164,這樣,當?shù)诹鶄€8個脈沖完成后,首次送出的數(shù)據(jù)被送到了最左面的164中,其他數(shù)據(jù)依次出現(xiàn)在第一、二、三片74ls164中。由于本設計采用的是機械按鍵,與地線想連,按鍵按下,輸入為低電平,釋放按鍵則輸入為高電平。實際上,機械式按鍵的落片存在著輕微的彈跳現(xiàn)象其時間由操作員按鍵的動作所確定,為了確保cpu對按鍵的一次閉合僅做一次處理,必須去除抖動,一般通過調用子程序延時來解決,在鍵的穩(wěn)定閉合或釋放時才讀出鍵的狀態(tài),具體程序如下:delay:
37、movr 5,#60 設定30毫秒d1: mov r6,#248 ;設定0.5毫秒djnz r6,$ djnz r5,d1 ret因為石英晶體為12mhz,一個機器周期為1微秒,這樣如上程序可達到延時30毫秒的目的。3.1.4 報警子程序本設計采用了聲光報警,當探測器探測的濃度超過報警設定值時就會同時產生音樂報警和燈光報警,此時紅燈亮啟,喇叭發(fā)出音樂,而正常時,喇叭關閉,紅燈關閉,而顯示正常的綠色led亮啟,本設計為了安全起見,還設置了事故處理裝置,即出現(xiàn)危險使,探測器除了報警外,還會使排氣扇的閥門打開,對室內進行排氣,以免產生氣體爆炸或是中毒.具體程序如下alarm: mov a,30h ;
38、將當前濃度值送如累加器 clr c ;清除進位標志 subb a,50h ;與預警值進行判斷 jnc good1 ;若無借位,則當前濃度值高于或者等于預警值,跳good1報警 setb p1.6 ;關閉聲光報警 setb p1.7 clr p2.3 ;關閉排氣閥門 setb p1.5 ;關閉黃色led clr p1.4 ;打開綠色led(顯示正常) ret good1: clr p1.6 ;打開聲光報警(危險報警) clr p1.7 clr p2.3 ;打開排氣閥門 setb p1.5 ;關閉黃色led setb p1.4 ;關閉綠色led(顯示不正常? ret3.1.5 中斷取值子程序:從硬
39、件電路圖可以看出,a/d0809的intr端通過反相器與單片機的外部中斷int0相連,由a/d0809的管腳功能可知,當a/d開始轉換送入的模擬電壓時,intr端為低電平,轉換完成后,intr端變成高電平,通過反相器變成低電平使單片機89c51產生外部中斷,進入中斷處理程序:;* * * * * * * * * * * * * * * * *into: push acc ;將累加器值壓入堆棧保存 push psw ;將psw值壓入堆棧保存 movx a,dptr ;將a/d轉換好的值送入累加器 mov 32h,a ;將a/d讀得的值存入32h保存 clr c subb a,51h ;判斷獲得的
40、電壓是否小于1v(50) jnc ok1 mov 32h,#00h ;當前a/d轉換的電壓小于1v,則a/d轉換得的示數(shù)為00 jmp emp1 ok1: mov a,32h call adjust ;調用adjust將其調整為濃度對應的16進制 call addd ;調用addd將其與調零預設值相加,得到調整后的16進制 mov 31h,a ;將調整后的值送入31h保存 emp1: mov ie,#10000000b ;關閉int0中斷使能,關閉中斷 pop psw ;至堆棧取回psw值 pop acc ;至堆棧取回acc值 mov 33h,#01h ;中斷完成,設置完成標記33h為1 re
41、ti;* * * * * * * * * * * * * * * * *; 調整相加子程序;* * * * * * * * * * * * * * * * * adjust: clr c subb a,#32h ;將a/d轉換的值減50再除10乘5可得當前濃度的16進制值 mov b,#0ah div ab mov b,#05h mul ab ret addd: add a,40h table: db 0c0h,0f9h,0a4h,0b0h,99h db 92h, 82h, 0f8h,80h, 90h end在中斷處理過程中,因為a/d0809在模擬電壓為15v時送入單片機的數(shù)值為50250,
42、為了使示數(shù)在099間變化,編寫數(shù)值轉換程序如下:adjust: clr c subb a,#32h ;將a/d轉換的值減50再除10乘5可得當前濃度的16進制值 mov b,#0ah div ab mov b,#05h mul ab ret中斷處理過程中斷處理過程可分為三個階段,即中斷響應,中斷處理和中斷返回。圖2-1單片機中斷流程圖圖中,保護現(xiàn)場之后的開中斷是為了允許有更高級中斷打斷此中斷服務程序。3.2 軟件程序的調試程序輸入完后就進入調試階段。調試時采用逐個調試的方法,即先調試其中每個子程序,確保無誤后再對整個程序進行整體調試,直到程序順利運行,達到設計目的。事實證明了調試過程是極其緩慢
43、與艱苦的,在軟件調試過程中,由于對中斷操作的處理不當,使我很長時間一直停滯不前,通過對自己耐心極限的挑戰(zhàn),最終發(fā)現(xiàn)了問題,我相信這是對自己獨立工作能力的一個很好的鍛煉,一次難得的經歷。附錄軟件設計源程序;30h:存放舊濃度地址31h:現(xiàn)在濃度值(a/d轉換后換算取得的新濃度);40h:初始調零值=0 32h:a/d轉換后的值 33h:a/d轉換完成(中斷完成)標志;50h:初始預警值=5055h:存放bcd轉換中的百位數(shù);56h:存放bcd轉換中的十位數(shù)60h:轉換完的個位存放地址;61h:轉換完的十位存放地址62h:轉換完的百位存放地址;63h:存放轉換完的壓縮bcd碼供顯示用 r1:bcd
44、轉換中存放的百位數(shù)(可做百位報警);r2:bcd轉換中存放十位數(shù)60hr3:當前濃度值保存;r4:設置改變模式延時時間r5,r6:延時程序中用到;sp:堆棧-#70h;* * * * * * * * * * * * * * * * *; 可燃氣體探測報警器; 2008.5.20;* * * * * * * * * * * * * * * * *;* * * * * * * * * * * * * * * * *; 各引腳用途及系統(tǒng)功能說明;p1.4 接綠燈,指示正常;p1.5 接黃燈,指示故障;p1.6 接紅燈,燈光報警;p1.7 接喇叭,音樂報警;p2.0 接adc0809;p2.2 接調零開關;p2.3 接繼電器,控制排氣閥門;* * * * * * * * * * * * * * * * *; 主 程 序;* * * * * * * * * * * * * * * * * org 00h jmp start ;主程序入口地址 org 03h jmp into ;外中斷into入口 org 0bh jmp itop ; 定時器0中斷入口 org 0100hstart: mov ie,#10000001b ;int0中斷使能 mov ip,#00000001b ;int0中斷優(yōu)先 mov tcon,#000000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版某三期護坡樁工程施工過程監(jiān)測與評估合同4篇
- 2025年度生態(tài)地板安裝與環(huán)保認證服務合同4篇
- 二零二五年度品牌推廣電子商務B2B購銷數(shù)字資產交易合同4篇
- 2025年度文化創(chuàng)意產業(yè)聘用員工勞動合同標準文本4篇
- 二零二五年度健康食品品牌形象設計與市場推廣合同3篇
- 二零二五年度生態(tài)農場果品出口貿易合同4篇
- 二零二五年度家政服務合同中退款條款
- 二零二五年度商業(yè)空間面積調整補充合同4篇
- 2025年美發(fā)店大數(shù)據(jù)分析與營銷策略合作合同協(xié)議書
- 課題申報參考:媒介化加速視域下社交媒體新個體文化的建構與引導研究
- 小學數(shù)學知識結構化教學
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請范本
- 飯店管理基礎知識(第三版)中職PPT完整全套教學課件
- 2023年重慶市中考物理A卷試卷【含答案】
- 【打印版】意大利斜體英文字帖(2022年-2023年)
- 2023年浙江省嘉興市中考數(shù)學試題及答案
- 【考試版】蘇教版2022-2023學年四年級數(shù)學下冊開學摸底考試卷(五)含答案與解析
- 《分數(shù)的基本性質》數(shù)學評課稿10篇
- 第八章 客戶關系管理
- 新版人教版高中英語選修一、選修二詞匯表
評論
0/150
提交評論