【文章內(nèi)容簡介】
000000000000H11111111 11111000FFF8H11111111 01011110FF5EH11111110 01101111FE6FH5511111100 10010000FC90H 數(shù)據(jù)來源:《FPGA與DS18B20組成的測溫系統(tǒng)的設(shè)計》 DS18B20的芯片結(jié)構(gòu):DS18B20采用3腳PR35封裝或8腳SOIC封裝。其管腳排列如圖423(b)所示。 圖43 DS18B20管腳排列 圖中GND為地。I/O為數(shù)據(jù)輸入/輸出端(即單線總線)。該腳為漏極開路輸出,常態(tài)下呈高電平。VDD是外部+5V電源端,不用時應(yīng)接地。NC為空腳。DS18B20的供電方式有兩種:一種為寄生電源,另一種為外加電源。用戶也可通過1線端口對DS18B20進(jìn)行操作,其步驟為:復(fù)位ROM功能命令存儲器功能命令執(zhí)行/數(shù)據(jù)。在本設(shè)計中采用的是DS18B20的3腳封裝形式。DS18B20的測溫原理DS18B20的測溫原理如圖44所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。圖中還隱含著記數(shù)門,當(dāng)記數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進(jìn)行記數(shù),進(jìn)而完成溫度測量。記數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前首先將55℃所對應(yīng)的一個基數(shù)分別置入減法計數(shù)器溫度寄存器中,減法計數(shù)器1和溫度寄存器被預(yù)置在55℃所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法記數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,減法計數(shù)器1的預(yù)置值將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行記數(shù),如此循環(huán)直到減法計數(shù)器2記數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。斜率累加器用語補償和修正測溫過程中的非線形性,其輸出用于修正減法計數(shù)器的預(yù)置值,只要記數(shù)門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值達(dá)到被測溫度值。[4] DS18B20測溫原理如圖44所示:斜率累加器計數(shù)器1低溫度系數(shù)振蕩器預(yù)置比較=0溫度寄存器計數(shù)器2=0高溫度系數(shù)振蕩器預(yù)置停止圖44 DS18B20測溫原理 本次設(shè)計使用的是Altera公司ACEX 1K系列的EP1K30TC1443。ACEX 。 ACEX1K器件的特點(1)具有宏功能的增強(qiáng)嵌入式陣列(如實現(xiàn)高效存儲和特殊的邏輯功能)和實現(xiàn)一般功能的邏輯陣列,每個EAB的雙口能力達(dá)到16bit寬,可提供低價的可編程單芯片系統(tǒng)集成。(2)高密度:1萬到10萬個典型門,高達(dá)49152位內(nèi)部RAM(每個EAB有4096位,這些都可在不降低邏輯能力的情況下使用)。(3)系統(tǒng)級特點:;低功耗;雙向I/O性能達(dá)到250MHz;;內(nèi)置JTAG邊界掃描測試電路;;通過外部的配制器件、智能控制器或JTAG端口可實現(xiàn)在線重配置。(4)靈活的內(nèi)部連線:快速、可預(yù)測聯(lián)縣延時的快速通道;實現(xiàn)算術(shù)功能(諸如快速加法器、計數(shù)器和比較器)的專用進(jìn)位鏈;實現(xiàn)高速、多扇入功能的專用級聯(lián)鏈;實現(xiàn)內(nèi)部總線的三態(tài)模擬;多達(dá)6個全局時鐘信號和4個全局清除信號。(5)強(qiáng)大的I/O引腳:每個引腳都有一個獨立的三態(tài)輸入、勢能控制和漏極開路配置選項;可編程輸出電壓的擺率控制可以減小開關(guān)噪聲。 ACEX1K功能描述每個ACEX1K器件包含一個實現(xiàn)存儲及特殊邏輯功能的增強(qiáng)型嵌入式陣列和一個實現(xiàn)一般邏輯功能的邏輯陣列。 (1)嵌入式陣列由一系列的EAB組成,當(dāng)實現(xiàn)存儲功能時,每個EAB提供4096位;當(dāng)實現(xiàn)邏輯功能時,每個EAB可以提供100至600個門。EAB可以獨立使用。 (2)邏輯正列由邏輯塊組成。每個LAB包含8個邏輯單元(LE)和一個局部互聯(lián)。一個LE由一個4輸入LUT、一個可編程觸發(fā)器和為實現(xiàn)進(jìn)位及級聯(lián)功能的專用信號路徑組成。8個LE可實現(xiàn)中規(guī)模的邏輯塊,如八位計數(shù)器、地趾解碼器和狀態(tài)機(jī),也可以跨LAB進(jìn)行結(jié)合以實現(xiàn)更大的功能塊。每個LAB代表大概96個可用邏輯門。 (3)ACEX1K器件的內(nèi)部的信號連接是通過快速通道互連布線結(jié)構(gòu)實現(xiàn)的,快速通道是遍布整個器件長、寬的一系列快速、連續(xù)的水平和垂直的通道。 (4)整個I/O引腳由I/O單元(IOE)驅(qū)動。IOE位于快速通道互聯(lián)結(jié)構(gòu)的行和列的末端,每個IOE包含一個雙向I/O緩沖器和一個可驅(qū)動輸入信號、輸出信號或雙向信號的輸出寄存器或輸入寄存器。IOE還具有許多特性,比如JTAG編程支持、擺率控制、三態(tài)緩沖和漏極開路輸出[6]。 LED顯示電路發(fā)光二極管LED是能將電信號轉(zhuǎn)換成光信號的發(fā)光器件,7段LED數(shù)碼管則是在一定形狀的絕緣材料上,利用單只LED組合排列成的“8”字型,分別引出它們的電極,點亮相應(yīng)的筆段來顯示出09的數(shù)字。7段LED數(shù)碼管則是在一定形狀的絕緣材料上,利用單只LED組合排列成的“8”字型,分別引出它們的電極,點亮相應(yīng)的筆段來顯示出09的數(shù)字。根據(jù)LED的接法不同分為共陰和共陽兩類,將多只LED的陰極連在一起即為共陰式,而將多只LED的陽極連在一起即為共陽式。它們的發(fā)光原理是一樣的,只是電源極性不同。以共陰式為例,若把陰極接地,在相應(yīng)段的陽極接上正電源,該段即會發(fā)光。[8]LED的顯示方式分為靜態(tài)顯示和動態(tài)顯示。所謂LED靜態(tài)驅(qū)動:靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機(jī)的I/O端口進(jìn)行驅(qū)動,或者使用如BCD碼二十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動:其點亮和關(guān)閉有該I/O口來對其控制,互不干涉,對I/O驅(qū)動能力弱的MCU,必須增加外部驅(qū)動芯片或三極管等器件。此種設(shè)計一般應(yīng)用在單個LED的驅(qū)動或LED數(shù)量較少,且所選的MCUIO比較充裕的情況下。 LED的動態(tài)顯示方式: 數(shù)碼管動態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃a,b,c,d,e,f,g, h,dp的同名端連在一起,另外為每個數(shù)碼管的公共極增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的公共極,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一 組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,卻能夠節(jié)省大量的I/O端口,而且功耗更低。通過對兩種顯示方式的介紹和比較可以看出,選擇動態(tài)顯示方式才能夠滿足設(shè)計需要。因為本次設(shè)計的系統(tǒng)對I/O端口的要求不高,所以可以選擇靜態(tài)顯示方式以減小設(shè)計的復(fù)雜程度。 系統(tǒng)總電路圖各模塊說明:TIM:定時時長設(shè)置模塊;TEMPCONDITIONER:控制模塊;FENPIN:分頻模塊;TIAOJIE:溫度設(shè)置模塊;SHOW: 測量所得溫度顯示模塊;SHOWT:設(shè)置的時長顯示模塊;SHOWDE:設(shè)置的溫度顯示模塊;系統(tǒng)總電路圖如圖45所示:圖45 系統(tǒng)總電路圖5 系統(tǒng)軟件設(shè)計 溫度設(shè)置模塊溫度調(diào)節(jié)模塊的功能是根據(jù)生活需要對室內(nèi)溫度進(jìn)行設(shè)置。本設(shè)計基于空調(diào)使用中的一般性,設(shè)置的溫度調(diào)節(jié)范圍為16℃~30℃,溫度調(diào)節(jié)的最小單位為1℃。 圖51 溫度設(shè)置模塊電路符號1)端口說明 Clk:工作時鐘; Rise:升溫按鍵;高電平有效,低電平無效。 Down:降溫按鍵;高電平有效,低電平無效。 Res:復(fù)位;高電平復(fù)位。低電平時計數(shù)器在時鐘下進(jìn)行加減工作。 Dout:輸出設(shè)置溫度值。 2)原理分析該模塊的默認(rèn)起始溫度為22℃,當(dāng)復(fù)位信號的上升沿到來的時候溫度回到22℃。當(dāng)檢測到CLK的上升沿到來且RISE信號為高電平、同時此時的設(shè)置溫度小于30℃時,溫度輸出信號DOUT=RISE,并將該溫度值輸出給控制模塊和顯示模塊。同理當(dāng)檢測到CLK的上升沿到來且DOWN信號為高電平、同時此時的設(shè)置溫度大于16℃時,溫度輸出信號DOUT=DOWN并將值輸出給控制和顯示模塊。該模塊設(shè)置的溫度調(diào)節(jié)范圍為16℃~30℃,當(dāng)超過這個范圍進(jìn)行調(diào)節(jié)的話空調(diào)會自動默認(rèn)恢復(fù)到22℃。該模塊VHDL語言描述:LIBRARY IEEE。USE 。ENTITY TIAOJIE ISPORT(CLK :IN BIT。 RES :IN STD_LOGIC。 RISE :IN INTEGER RANGE 30 DOWNTO 16。 DOWN :IN INTEGER RANGE 30 DOWNTO 16。 DOUT :BUFFER INTEGER RANGE 30 DOWNTO 16)。END。ARCHITECTURE ONE OF TIAOJIE ISBEGIN PROCESS(CLK,RISE,DOWN,RES) BEGIN IF RES =39。139。 THEN DOUT = 22。 默認(rèn)初始值為22℃ ELSIF CLK39。EVENT AND CLK = 39。139。 THEN IF RISE30 THEN DOUT = RISE。 END IF。 IF DOWN16 THEN DOUT = DOWN。 END IF。 IF (RISE30) AND (DOWN16) THEN DOUT=22。 END IF。 END IF。 END PROCESS。 END。 3)調(diào)節(jié)模塊的時序仿真波形如圖所示:圖52 溫度調(diào)節(jié)模塊時序仿真波形圖 當(dāng)復(fù)位信號的上升沿到來的時候溫度回到22℃。當(dāng)檢測到CLK的上升沿到來且RISE信號為25℃時,溫度輸出信號DOUT輸出25。當(dāng)檢測到CLK的上升沿到來且DOWN信號為20℃時,溫度輸出信號DOUT輸出20。 定時模塊定時模塊的功能是對空調(diào)的設(shè)置溫度時間進(jìn)行控制管理,利用計數(shù)器來實現(xiàn)定時功能,這里的定時有4個檔可以選擇,、2小時。通過KEY鍵可以設(shè)置定時長度。最后通過一個4路選擇器將選定的定時長度送給控制模塊和顯示模塊。其模塊圖如下: 圖53 定時模塊電路1) 端口說明key: 時間調(diào)節(jié)按鍵信號;clk: 時鐘信號;ena,enb,enc,ene: 計數(shù)器使能信號,高電平有效;a,b,c,d: 4路選擇器的數(shù)據(jù)源;y: 定時選擇輸出信號;led: 定時顯示信號,傳遞給后面的顯示模塊進(jìn)行設(shè)置時間的顯示;2) 原理分析該模塊分兩部分來實現(xiàn),前一部分是4個不同檔位的計數(shù)器,然后在通過4路選擇器進(jìn)行選擇。,其他時長的計數(shù)器原理都一樣的。計數(shù)器的使能信號為高電平時該計數(shù)器進(jìn)行計數(shù)操作,每次當(dāng)clk的上升沿到來的時候計數(shù)器加1,當(dāng)計數(shù)器計數(shù)到1799時計數(shù)器清零,輸出信號c1為低電平;當(dāng)計數(shù)小于1799時c1為高電平。后一部分為4路選擇器,4個輸入信號源cccc4通過兩位地址碼sel來選擇。當(dāng)sel為“00”時選擇c1。 當(dāng)sel為“01”時選擇c2。 當(dāng)sel為“10”時選擇c3。 當(dāng)sel為“11”時選擇c4。然后將定時值送給控制模塊和顯示模塊。該模塊用VHDL語言描述,其關(guān)鍵程序段如下:LIBRARY IEEE。 定時設(shè)置USE 。ENTITY TIM ISPORT( CLK :IN STD_LOGIC。 ENA :IN STD_LOGIC。 ENB :IN STD_LOGIC。 ENC :IN STD_LOGIC。 ENE :IN STD_LOGIC。 KEY :IN INTEGER RANGE 1 TO 4。 Y :OUT STD_LOGIC。 LED :OUT INTEGER RANGE 0 TO 25)。END。ARCHITECTURE ONE OF TIM ISSIGNAL C1:STD_LOGIC。SIGNAL C2:STD_LOGIC。SIGNAL C3:STD_LOGIC。SIGNAL C4:STD_LOGIC。SIGNAL A:INTEGER。SIGNAL B:INTEGER。SIGNAL C:INTEGER。SIGNAL D:INTEGER。BEGIN P_A :PROCESS(CLK,ENA,ENB,ENC,ENE) VARIABLE QA,QB,QC,QE:INTEGER。 BEGIN IF CLK39。EVENT AND CLK=39。139。 THEN IF ENA=39。139。 THEN IF QA1799 THEN QA:=QA+1。C1=39。139。 ELSE IF QA=1799 THEN QA:=0。C1=39。039。 END IF。 END IF。 END IF。 IF ENB=39。139。 THEN IF QB1799 THEN QB:=QB+1。C2=39。13