【正文】
動(dòng) A/D 轉(zhuǎn)換 ,即執(zhí)行一道“ MOVX DPTR ,A”指令產(chǎn)生 RW 信號(hào),使 ALE, START有效,鎖存通道號(hào)并啟動(dòng) A/D 轉(zhuǎn)換, A/D 轉(zhuǎn)換完畢后, EOC 端發(fā)出一正脈沖,申請(qǐng)中斷。系統(tǒng)內(nèi)部資源分配和參數(shù)設(shè)置如下: A/D 端口地址 ( ADPORT): 7FF8H 數(shù)字濕度檢測(cè)控制裝置 14 顯示緩沖起始地址:( LEDBUF): 30H 段碼存儲(chǔ)起始地址( TEMP): 40H 設(shè)定溫值存儲(chǔ)地址( SETTEMP): 50h 測(cè)量溫度存儲(chǔ)地址( CURTEMP): 51H 溫度設(shè)定上限( HIGHLIMIT): 80 溫度設(shè)定下限( LOWLIMIT): 25 溫度測(cè)量上限( HIGHTEMP) 107 溫度測(cè)量下限( LOETEMP) 21 初始化程序代碼如下: ADPORT EQU 7FF8H ; A/D 端口地址 LEDBUF EQU 30H ;顯示緩沖 TEMP EQU 40H ;段碼存儲(chǔ) UP EQU 1 ;增溫 DOWN EQU 2 ;減溫 LOWLIMIT EQU 25 ;設(shè)定值下限 HIGHLIMIT EQU 80 ;設(shè)定值上限 LOWTEMP EQU 21 ; A/D 0 HIGHTEMP EQU 107 ; A/D 255 SETTEMP EQU 50H ;設(shè)定溫值 CURTEMP EQU 51H ;測(cè)量溫度 DIN BIT 0B0H ; CLK BIT 0B1H ; ORG 0000H LJMP START 主程序 主程序代碼如下: START: MOV SETTEMP, 20 ;初始恒溫值為 20℃ MLOOP: 數(shù)字濕度檢測(cè)控制裝置 15 CALL TESTKEY ;測(cè)試有無(wú)鍵入 JNZ KEYPRESSED ;更改設(shè)定值 CALL DISPLAYRESULT ;數(shù)制轉(zhuǎn)換 CALL DISPLAYLED ;顯示 CALL READTEMP ;讀入溫度 CONTROL: ...... ;控制子程序 KEYPRESSED: ...... ;鍵盤子程序 END A/D 轉(zhuǎn)換子程序 根據(jù)系統(tǒng)硬件連接圖可知,在系統(tǒng)中將 ADC0809 作為一個(gè)外部擴(kuò)展并行 I/O 口,采用線選尋址。程序流程圖如圖31 所示。二是執(zhí)行軟件,它是用來(lái)完成各種實(shí)質(zhì)性的功能如測(cè)量、顯示等功能。 211 繼電器控制電路 本次單片機(jī)溫控系統(tǒng)的功能是由硬件電路配合軟件來(lái)實(shí)現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來(lái)了。觸電輸出部分可以直接與市 電連接。如采用 TTL 或 CMOS 等邏輯電平控制時(shí),采用有足夠帶載能力的低電平驅(qū)動(dòng),并盡可能使 “0” 電平低于 。 繼電器的特性參數(shù)包括輸入和輸出參數(shù), 主要的參數(shù)為 額定輸入電壓 、 額定輸出電流 、 浪涌電流 。當(dāng)不通電時(shí),則開關(guān)觸點(diǎn)斷開。繼電器一般由通電線圈和觸電組成。 本設(shè)計(jì)采用繼電器作為控制電路的主要器件,繼電器具有一定的隔離作用,在繼電器前面加一個(gè)三極管用以放大輸出信號(hào)就可以驅(qū)動(dòng)繼電器的數(shù)字濕度檢測(cè)控制裝置 12 閉合和斷開,從而實(shí)現(xiàn)弱電控制強(qiáng)電的效果。另一方面,許多外部設(shè)備在開關(guān)過程中會(huì)產(chǎn)生很強(qiáng)的電磁干擾信號(hào),如果不隔離會(huì)使系統(tǒng)進(jìn)行錯(cuò)誤的處理。所謂的開關(guān)量控制就是通過控制設(shè)備的“開”或“關(guān)”狀態(tài)的 時(shí)間來(lái)達(dá)到控制的目的。 控制電路 在本設(shè)計(jì)中,被測(cè)溫度信號(hào)經(jīng)采樣處理后,還需要通過單片機(jī)系統(tǒng)的 口輸出用以控制溫度,控制的方式主要有模擬量控制和開關(guān)量控制。當(dāng)有鍵按下時(shí),按鍵的觸點(diǎn)在閉合和斷開時(shí)均會(huì)產(chǎn)生抖動(dòng),這時(shí)觸點(diǎn)的邏輯電平是不穩(wěn)定的,如果不妥善處理,將會(huì)使按鍵命令的錯(cuò)誤執(zhí)行和重復(fù)執(zhí)行。 通過對(duì)鍵盤接口 和 的查詢判斷是否有鍵按下。 本設(shè)計(jì)中由于所用鍵盤不多,所以采用獨(dú)立連接式的查詢式鍵盤就能夠滿足設(shè)計(jì)要求。優(yōu)點(diǎn) 就是 電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單 ;缺點(diǎn)就是每 個(gè)按鍵需占用一根 I/O口線,在按鍵數(shù)量較多時(shí), I/O 口浪費(fèi)大,電路結(jié)構(gòu)顯得復(fù)雜。 獨(dú)立式按鍵接口就是各按鍵相互獨(dú)立,每個(gè)按鍵單獨(dú)占用一根 I/O 口線,每根 I/O 口線的按鍵工作狀態(tài)不會(huì)影響其他 I/O 口線上的工作狀態(tài)。原理圖如圖 210 所示: 1 2 3 4 5 6ABCD654321DCBAT i t l eN u m be r R e v i s i o nS i z eBD a t e : 1 8 J u n 2 0 07 S he e t o f F i l e : C : \ D o c u m e n t s a n d S e t t i n gs \ A d m i n i s t r a t o r \ M y D o c u m e nt s \硬件原理圖 \溫度控制硬件原理圖 .d dbD r a w n B y:A1B2Q03Q14Q25Q36Q410Q511Q612Q713C L K8MR9U17 4L S 1 64R X DT X DA1B2Q03Q14Q25Q36Q410Q511Q612Q713C L K8MR9U27 4L S 1 64A1B2Q03Q14Q25Q36Q410Q511Q612Q713C L K8MR9U37 4L S 1 64A1B2Q03Q14Q25Q36Q410Q511Q612Q713C L K8MR9U47 4L S 1 64V C CT X D T X D T X DabfcgdeD P Y1234567abcdefg8dpdp99D S 1D P Y _7 S E G _D PabfcgdeD P Y1234567abcdefg8dpdp99D S 2D P Y _7 S E G _D PabfcgdeD P Y1234567abcdefg8dpdp99D S 3D P Y _7 S E G _D PabfcgdeD P Y1234567abcdefg8dpdp99D S 4D P Y _7 S E G _D PR11 0KR21 0KR31 0KR41 0K 圖 210 LED串行靜態(tài)顯示 數(shù)字濕度檢測(cè)控制裝置 11 鍵盤接口 鍵盤的工作方式選取的原則是:既要保證能及時(shí)響應(yīng)按鍵的操作,又不過多的占用 CPU 的工作時(shí)間。與動(dòng)態(tài)掃描相比較,無(wú)需 CPU 不停的掃描,頻繁地為顯示服務(wù),節(jié)省了 CPU 時(shí)間,軟件設(shè)計(jì)也比較簡(jiǎn)單。 表 21 74LS164輸入輸出關(guān)系如所示 輸入 輸出 清除 時(shí)鐘 A B QA QB ~ QH L X X X H L X X H ↑ H H H ↑ L X H ↑ X L L L ~ L QA0 QB0 ~ QH0 H QAn ~ QGn L QAn ~ QGn L QAn ~ QGn 圖 29 74LS164引腳如圖 串行顯示電 路屬于靜態(tài)顯示,比動(dòng)態(tài)顯示亮度更大一些。具體輸入輸出關(guān)系如表 21 所示。 74LS164 是 8 位串入并出移位寄存器。 4 位字型碼送完后, TXD 保持高電平。其中, RXD 作為 164 的數(shù)據(jù)輸入, TXD 作為 4 片 164的同步時(shí)鐘。待 8 位數(shù)據(jù)輸完后,硬件將狀態(tài)寄存器的 TI 位置 1, TI 必須由軟件清零。 波特率(每秒傳輸?shù)奈粩?shù))固定在 fosc/12,即當(dāng)晶振為 12MHZ 時(shí),波特率為 1MBPS。 MCS51系列單片機(jī)的串行口 RXD,TXD為一個(gè)全雙工串行通信口,當(dāng)工作在方式 0下可作同步移位寄存器用,其數(shù)據(jù)由 RXD( ) 端串行輸入或輸出;而同步移位時(shí)鐘由 TXD( )串行輸出,在同步時(shí)鐘的作用下,實(shí)現(xiàn)由串行到并行的數(shù)據(jù)通信。 MOV DPTR , 7FF8H MOVX A , DPTR。平時(shí),使 OE 處于低電平封鎖狀態(tài),在響應(yīng)中斷后, AT89C51 執(zhí)行中斷服務(wù)程序中如下兩條指令就可以使 OE 變?yōu)楦唠娖?,從而打開三態(tài)輸出鎖存器,讓 CPU 提取 A/D 轉(zhuǎn)換后的數(shù)字量。本系統(tǒng) AT89C51 主頻是 12MHZ, ALE 信號(hào)頻率為 2MHZ,使 AT89C51的 ALE 上信號(hào)經(jīng)過 4 分頻后接到 ADC0809 的 CLOCK 輸入端,就可獲得500KHZ 的 A/D 轉(zhuǎn)換脈沖,當(dāng)然, ALE 上脈沖會(huì)在 MOVX 指令的每個(gè)機(jī)器周期少出現(xiàn)一次,但通常情況下影響不大。 ADC0809 所需時(shí)鐘信號(hào)可以由 AT89C51 的 ALE 信號(hào)提供。故 確定 ADC0809 其中一個(gè)地址為 : 0111 1111 1111 1000B=7FF8H ,其中“ __ ”表示固定量。 對(duì) ADC0809 地址的確定:根據(jù)系統(tǒng)硬件連接圖可知所選定模擬電壓路數(shù)為 IN0,其對(duì)應(yīng)的地址為 ABC=000,即 、 、 =0 0 0。本系統(tǒng)采用中斷方式傳送數(shù)據(jù), EOC 線作為 CPU 的中斷請(qǐng)求輸入線。轉(zhuǎn)換結(jié)束信號(hào) EOC 通過一個(gè)反相器接到 INT1。地址線 和讀控制信號(hào)線 __RD用一個(gè)或非門聯(lián)合控制輸出允許控制端 (EOC)。故 ADC0809 可以和微機(jī)直接接口,本設(shè)計(jì)就是用 8051 和 ADC0809 直接相連的。 起放大作用的是同相輸入放大器 OP07。 電壓比較器用于對(duì)輸出電壓小信號(hào)電壓進(jìn)行調(diào)零,在上述電路圖中的電壓比較器部分由于 R2=R4 R3=R5 可 得 電 壓 比 較 器 的 輸 出 電 壓120 ii UUU ?? 根據(jù)電壓跟隨器的輸出電壓 2iU 調(diào)節(jié)電位計(jì) R9就改變電壓比較器的輸入電壓 1iU 。信號(hào)調(diào)整 電路如圖 27 所示 在該放大電路中,電壓跟隨 器起阻抗匹配的作用。 為了使溫度檢測(cè)電路的輸出電壓能夠適合于 A/D 轉(zhuǎn)換器的參考電壓,利用超低溫漂移高精度運(yùn)算放大器 0P07 將溫度電壓信號(hào)進(jìn)行放大到 0~5V 的范圍之內(nèi),便于 A/D進(jìn)行轉(zhuǎn)換 ,以提高溫度采集電路的可靠性。本系統(tǒng)所采用的 A/D 轉(zhuǎn)換器為 ADC0809,由于 ADC0809數(shù)字濕度檢測(cè)控制裝置 7 的輸入信號(hào)應(yīng)在 0~5V 之間,因此,經(jīng)過放大電路放大的信號(hào)進(jìn)入 A/D 轉(zhuǎn)換器的電壓信號(hào)應(yīng)控制在 0~5V之間,根據(jù)此原則可設(shè)計(jì)合適的放大倍數(shù)。 圖 26 絕對(duì)攝氏溫標(biāo)轉(zhuǎn)換電路 將 AD590 放入 0℃ 的冰水混合溶液中, A1 同相輸入端的電壓應(yīng)為,同樣使 A2的輸出電壓也為 ,因此 A1 與 A2兩輸出端之間的電壓: - = 0V即對(duì)應(yīng)于 0℃