久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 16962|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的智能壓力檢測(cè)系統(tǒng)的設(shè)計(jì)論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:338993 發(fā)表于 2018-5-26 23:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于單片機(jī)的智能壓力檢測(cè)系統(tǒng)的設(shè)計(jì)
摘要
壓力是工業(yè)生產(chǎn)過程中的重要參數(shù)之一。壓力的檢測(cè)或控制是保證生產(chǎn)和設(shè)備安全運(yùn)行必不可少的條件。實(shí)現(xiàn)智能化壓力檢測(cè)系統(tǒng)對(duì)工業(yè)過程的控制具有非常重要的意義。本設(shè)計(jì)主要通過單片機(jī)及專用芯片對(duì)傳感器所測(cè)得的模擬信號(hào)進(jìn)行處理,使其完成智能化功能。介紹了智能壓力傳感器外圍電路的硬件設(shè)計(jì),并根據(jù)硬件進(jìn)行了軟件編程。
本次設(shè)計(jì)是基于AT89C51單片機(jī)的測(cè)量與顯示。是通過壓力傳感器將壓力轉(zhuǎn)換成電信號(hào),再經(jīng)過運(yùn)算放大器進(jìn)行信號(hào)放大,送至8位A/D轉(zhuǎn)換器,然后將模擬信號(hào)轉(zhuǎn)換成單片機(jī)可以識(shí)別的數(shù)字信號(hào),再經(jīng)單片機(jī)轉(zhuǎn)換成LED顯示器可以識(shí)別的信息,最后顯示輸出。而在顯示的過程中通過鍵盤,向計(jì)算機(jī)系統(tǒng)輸入各種數(shù)據(jù)和命令,讓單片機(jī)系統(tǒng)處于預(yù)定的功能狀態(tài),顯示需要的值。
本設(shè)計(jì)的最終結(jié)果是,將軟件下載到硬件上調(diào)試出來了需要顯示的數(shù)據(jù),當(dāng)輸入的模擬信號(hào)發(fā)生變化的時(shí)候,通過A/D轉(zhuǎn)換后,LED將顯示不同的數(shù)值。

目錄
摘要
Abstract
第一章 緒論
11 研究背景
12 基于單片機(jī)的智能壓力檢測(cè)的原理
121 壓力的概念
122 測(cè)量壓力的意義
第二章  基于單片機(jī)的智能壓力檢測(cè)系統(tǒng)的硬件設(shè)計(jì)
21 壓力傳感器
211 壓力傳感器的選擇
212金屬電阻應(yīng)變片的工作原理
213 電阻應(yīng)變片的基本結(jié)構(gòu)
214 電阻應(yīng)變片的測(cè)量電路
22 信號(hào)放大電路
212 放大器的選擇
224 三運(yùn)放大電路
23 A/D轉(zhuǎn)換器
231 A/D轉(zhuǎn)換模塊器件選擇
232 A/D轉(zhuǎn)換器的簡(jiǎn)介
233 配置位說明
234 ADC0832工作時(shí)序圖
233 單片機(jī)對(duì)ADC0832的控制原理
24 單片機(jī)
241 AT89C51單片機(jī)簡(jiǎn)介
242主要特性
243 管腳說明
245 芯片擦除
25 單片機(jī)于鍵盤的接口技術(shù)
251 鍵盤功能及結(jié)構(gòu)概述
252 鍵盤抖動(dòng)及去除
253 單片機(jī)與鍵盤的連接
26  LED顯示接口
261發(fā)光二極管及LED顯示器
262七段數(shù)碼顯示器
263 LED數(shù)碼管靜態(tài)顯示接口
第三章 軟件設(shè)計(jì)
31 A/D轉(zhuǎn)換器的軟件設(shè)計(jì)
311 ADC0832芯片接口程序的編寫
32 單片機(jī)與鍵盤的接口程序設(shè)計(jì)
34 LED數(shù)碼管顯示程序設(shè)計(jì)
第四章 總結(jié)
參考文獻(xiàn)
附錄A
附錄B
致謝

第一章     緒論
1.1 研究背景

近年來,隨著微型計(jì)算機(jī)的發(fā)展,他的應(yīng)用在人們的工作和日常生活中越來越普遍。工業(yè)過程控制是計(jì)算機(jī)的一個(gè)重要應(yīng)用領(lǐng)域。其中由單片機(jī)構(gòu)成的嵌入式系統(tǒng)已經(jīng)越來越受到人們的關(guān)注。現(xiàn)在可以毫不夸張的說,沒有微型計(jì)算機(jī)的儀器不能稱為先進(jìn)的儀器,沒有微型計(jì)算機(jī)的控制系統(tǒng)不能稱其為現(xiàn)代控制系統(tǒng)的時(shí)代已經(jīng)到來。

壓力測(cè)量對(duì)實(shí)時(shí)監(jiān)測(cè)和安全生產(chǎn)具有重要的意義。在工業(yè)生產(chǎn)中,為了高效、安全生產(chǎn),必須有效控制生產(chǎn)過程中的諸如壓力、流量、溫度等主要參數(shù)。由于壓力控制在生產(chǎn)過程中起著決定性的安全作用,因此有必要準(zhǔn)確測(cè)量壓力。為了測(cè)到不同位置的壓力值,本次設(shè)計(jì)為基于單片機(jī)智能壓力測(cè)量系統(tǒng)。通過壓力傳感器將需要測(cè)量的位置的壓力信號(hào)轉(zhuǎn)化為電信號(hào),再經(jīng)過運(yùn)算放大器進(jìn)行信號(hào)放大,送至8位A/D轉(zhuǎn)換器,然后將模擬信號(hào)轉(zhuǎn)換成單片機(jī)可以識(shí)別的數(shù)字信號(hào),再經(jīng)單片機(jī)轉(zhuǎn)換成LED顯示器可以識(shí)別的信息,最后顯示輸出。基于單片機(jī)的智能壓力檢測(cè)系統(tǒng),選擇的單片機(jī)是基于AT89C51單片機(jī)的測(cè)量與顯示,將壓力經(jīng)過壓力傳感器變?yōu)殡娦盘?hào),再通過三運(yùn)放放將電信號(hào)放大為標(biāo)準(zhǔn)信號(hào)為0-5V的電壓信號(hào),然后進(jìn)入A/D轉(zhuǎn)換器將模擬量轉(zhuǎn)換為數(shù)字量,我們所采樣的A/D轉(zhuǎn)換器為ADC0832,ADC0832為8位分辨率A/D轉(zhuǎn)換芯片,其最高分辨可達(dá)256級(jí),可以適應(yīng)一般的模擬量轉(zhuǎn)換要求。其內(nèi)部電源輸入與參考電壓的復(fù)用,使得芯片的模擬電壓輸入在0~5V之間。芯片轉(zhuǎn)換時(shí)間僅為32μS,據(jù)有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn),以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強(qiáng)。獨(dú)立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。通過DI數(shù)據(jù)輸入端,可以輕易的實(shí)現(xiàn)通道功能的選擇。

正常情況下ADC0832與單片機(jī)的接口應(yīng)為4條數(shù)據(jù)線,分別是CS、CLK、DO、DI。但由于DO端與DI端在通信時(shí)并未同時(shí)有效并與單片機(jī)的接口是雙向的,所以電路設(shè)計(jì)時(shí)可以將DO和DI并聯(lián)在一根數(shù)據(jù)線上使用。

為了提高單片機(jī)系統(tǒng)I/O口線的利用效率,利用單片機(jī)AT87C51的串行口和串行移位寄存器74LS164擴(kuò)展輸出多位LED顯示.

鍵盤是單片機(jī)系統(tǒng)實(shí)現(xiàn)人機(jī)對(duì)話的常用輸入設(shè)備。我們通過鍵盤,向計(jì)算機(jī)系統(tǒng)輸入各種數(shù)據(jù)和命令,亦可通過使用鍵盤,讓單片機(jī)系統(tǒng)處于預(yù)定的功能狀態(tài)。要想實(shí)現(xiàn)壓力的顯示需硬件與軟件配合,最終調(diào)試出來。

1.2 基于單片機(jī)的智能壓力檢測(cè)的原理  

本次設(shè)計(jì)是以單片機(jī)組成的壓力測(cè)量,系統(tǒng)中必須有前向通道作為電信號(hào)的輸入通道,用來采集輸入信息。壓力的測(cè)量,需要傳感器,利用傳感器將壓力轉(zhuǎn)換成電信號(hào)后,再經(jīng)放大并經(jīng)A/D轉(zhuǎn)換為數(shù)字量后才能由計(jì)算機(jī)進(jìn)行有效處理。然后用LED進(jìn)行顯示,而鍵盤的作用是改變輸入量的系數(shù)的。它的原理圖如圖1.1所示。

圖1.1 壓力測(cè)量?jī)x表原理方框圖


我們這次主要做的是A/D轉(zhuǎn)換,單片機(jī)鍵盤和顯示,我們選用的A/D轉(zhuǎn)換器是ADC0832,單片機(jī)為AT89C51,鍵盤為4乘4的鍵盤,顯示為4位數(shù)碼管顯示。根據(jù)硬件電路編程,調(diào)試出來并顯示結(jié)果。

1.2.1 壓力的概念

壓力是工業(yè)生產(chǎn)中的重要參數(shù)之一,為了保證生產(chǎn)正常運(yùn)行,必須對(duì)壓力進(jìn)行測(cè)量和控制,但需說明的是,這里所說的壓力,實(shí)際上是物理概念中的壓強(qiáng),即垂直作用在單位面積上的力。

在壓力測(cè)量中,常用絕對(duì)壓力、表壓力、負(fù)壓力或真空度之分。所謂絕對(duì)壓力是指被測(cè)介質(zhì)作用在容器單位面積上的全部壓力,用符號(hào)pj表示。用來測(cè)量絕對(duì)壓力的儀表稱為絕對(duì)壓力表。地面上的空氣柱所產(chǎn)生的平均壓力稱為大氣壓力,用符號(hào)pq表示。用來測(cè)量大氣氣壓力的儀表叫氣壓表。絕對(duì)壓力與大氣壓力之差。稱為表壓力,用符號(hào)pb表示。即pb=pj-pq。當(dāng)絕對(duì)壓力值小于大氣壓力值時(shí),表壓力為負(fù)值(即負(fù)壓力),此負(fù)壓力值的絕對(duì)值,稱為真空度,用符號(hào)pz表示。

壓力是工業(yè)生產(chǎn)中的重要參數(shù),如高壓容器的壓力超過額定值時(shí)便是不安全的,必須進(jìn)行測(cè)量和控制。在某些工業(yè)生產(chǎn)過程中,壓力還直接影響產(chǎn)品的質(zhì)量和生產(chǎn)效率,如生產(chǎn)合成氨時(shí),氮和氫不僅須在一定的壓力下合成,而且壓力的大小直接影響產(chǎn)量高低。此外,在一定的條件下,測(cè)量壓力還可間接得出溫度、流量和液位等參數(shù)。

1643年,意大利人托里拆利首先測(cè)定標(biāo)準(zhǔn)的大氣壓力值為760毫米汞柱,奠定了液柱式壓力測(cè)量?jī)x表的基礎(chǔ)。1847年,法國人波登制成波登管壓力表,由于結(jié)構(gòu)簡(jiǎn)單、實(shí)用,很快在工業(yè)中獲得廣泛應(yīng)用,一直是常用的壓力測(cè)量?jī)x表。

二十世紀(jì)上半葉出現(xiàn)了遠(yuǎn)傳壓力表和電接點(diǎn)壓力表,從而解決了壓力測(cè)量值的遠(yuǎn)距離傳送和壓力的報(bào)警、控制等問題。60年代以后,為適應(yīng)工業(yè)控制、航空工業(yè)和醫(yī)學(xué)測(cè)試等方面的要求,壓力測(cè)量?jī)x表日益向體積輕巧、耐高溫、耐沖擊、耐振動(dòng)和數(shù)字顯示等方向發(fā)展。

1.2.2 測(cè)量壓力的意義

壓力是過程生產(chǎn)中四大重要參數(shù)之一,它在檢測(cè)生產(chǎn)過程能否完全可靠正常運(yùn)行的重要參數(shù)指標(biāo),尤其在化工生產(chǎn)過程中壓力這一參數(shù)更顯得尤為重要。

在化工生產(chǎn)過程中,壓力即影響物料平衡,也影響化學(xué)反應(yīng)速速,是標(biāo)志生產(chǎn)過程能否正常進(jìn)行的重要參數(shù)。

安全生產(chǎn)的需要,從確保安全生產(chǎn)的角度,壓力檢測(cè)也是非常重要的。如:確保壓力容器內(nèi)的壓力在安全指標(biāo)之內(nèi),確保易燃易爆介質(zhì)的壓力不超標(biāo)。

在其他工業(yè)生產(chǎn)中壓力檢測(cè)于控制也非常重要。常可見到一些工業(yè)裝置上都有壓力表。如:汽包壓力,當(dāng)壓力過高容易爆炸,壓力低動(dòng)力不足;還有爐膛壓力;一般維持在0mmH2O,高了爐門縫冒煙塵,低了膛內(nèi)出現(xiàn)負(fù)壓降低溫度。若維持在10 mmH2O,節(jié)能20%。

壓力也是間接測(cè)量物位的手段,用孔板測(cè)量流量?jī)H能產(chǎn)生差壓,而這個(gè)差壓考?jí)毫z測(cè)的方法來測(cè)取才能最終求出流量。液面的高度可以靠測(cè)取壓力的大小來表示。

總之,壓力檢測(cè)是一般成產(chǎn)過程所不可缺少的環(huán)節(jié),只有按工藝要求保持壓力的穩(wěn)定,才能維持生產(chǎn)的正常進(jìn)行。所以壓力準(zhǔn)確測(cè)量在實(shí)際過程是非常重要的。



第二章  基于單片機(jī)的智能壓力檢測(cè)系統(tǒng)的硬件設(shè)計(jì)
2.1 壓力傳感器

2.1.1 壓力傳感器的選擇

壓力傳感器是壓力檢測(cè)系統(tǒng)中的重要組成部分,由各種壓力敏感元件將被測(cè)壓力信號(hào)轉(zhuǎn)換成容易測(cè)量的電信號(hào)作輸出,給顯示儀表顯示壓力值,或供控制和報(bào)警使用。力學(xué)傳感器的種類繁多,如電阻應(yīng)變片壓力傳感器、半導(dǎo)體應(yīng)變片壓力傳感器、壓阻式壓力傳感器、電感式壓力傳感器、電容式壓力傳感器諧振式壓力傳感器及電容式加速度傳感器等。 而電阻應(yīng)變式傳感器具有悠久的歷史。由于它具有結(jié)構(gòu)簡(jiǎn)單、體積小、使用方便、性能穩(wěn)定、可靠、靈敏度高動(dòng)態(tài)響應(yīng)快、適合靜態(tài)及動(dòng)態(tài)測(cè)量、測(cè)量精度高等諸多優(yōu)點(diǎn),因此是目前應(yīng)用最廣泛的傳感器之一。電阻應(yīng)變式傳感器由彈性元件和電阻應(yīng)變片構(gòu)成,當(dāng)彈性元件感受到物理量時(shí),其表面產(chǎn)生應(yīng)變,粘貼在彈性元件表面的電阻應(yīng)變片的電阻值將隨著彈性元件的應(yīng)變而相應(yīng)變化。通過測(cè)量電阻應(yīng)變片的電阻值變化,可以用來測(cè)量位移加速度、力、力矩、壓力等各種參數(shù)。

2.1.2金屬電阻應(yīng)變片的工作原理

應(yīng)變式壓力傳感器是把壓力的變化轉(zhuǎn)換成電阻值的變化來進(jìn)行測(cè)量的,應(yīng)變片是由金屬導(dǎo)體或半導(dǎo)體制成的電阻體,是一種將被測(cè)件上的應(yīng)變變化轉(zhuǎn)換成為一種電信號(hào)的敏感器件。它是壓阻式應(yīng)變傳感器的主要組成部分之一。電阻應(yīng)變片應(yīng)用最多的是金屬電阻應(yīng)變片和半導(dǎo)體應(yīng)變片兩種。金屬電阻應(yīng)變片又有絲狀應(yīng)變片和金屬箔狀應(yīng)變片兩種。通常是將應(yīng)變片通過特殊的粘和劑緊密的粘合在產(chǎn)生力學(xué)應(yīng)變基體上,當(dāng)基體受力發(fā)生應(yīng)力變化時(shí),電阻應(yīng)變片也一起產(chǎn)生形變,使應(yīng)變片的阻值發(fā)生改變,從而使加在電阻上的電壓發(fā)生變化。這種應(yīng)變片在受力時(shí)產(chǎn)生的阻值變化通常較小,一般這種應(yīng)變片都組成應(yīng)變電橋,并通過后續(xù)的儀表放大器進(jìn)行放大,再傳輸給處理電路(通常是A/D轉(zhuǎn)換和CPU)顯示或執(zhí)行機(jī)構(gòu)。其阻值隨壓力所產(chǎn)生的應(yīng)變而變化。金屬電阻應(yīng)變片的工作原理是吸附在基體材料上應(yīng)變電阻隨機(jī)械形變而產(chǎn)生阻值變化的現(xiàn)象,俗稱為電阻應(yīng)變效應(yīng)。對(duì)于金屬導(dǎo)體,如圖2.1所示,一段圓截面的導(dǎo)線的金屬絲,設(shè)其長(zhǎng)為L(zhǎng),截面積為A(直徑為D) ,原始電阻為R,金屬導(dǎo)體的電阻值可用下式表示:

          R=ρL∕A                         (2.1)

式中:ρ——金屬導(dǎo)體的電阻率(Ω·cm2/m)    S——導(dǎo)體的截面積(cm2)  

L——導(dǎo)體的長(zhǎng)度(m)

圖2.1 金屬電阻絲應(yīng)變效應(yīng)

當(dāng)金屬絲受到軸向力 F而被拉伸或壓縮產(chǎn)生形變 ,其電阻值會(huì)隨之變化 ,通過對(duì)(2.1)式兩邊取對(duì)數(shù)后再取全微分得:

                                 (2.2)

式中為材料軸向線應(yīng)變 ,且 跟據(jù)材料力學(xué) ,在金屬絲單向受力狀態(tài)下 ,有

                         (2.3)

式中μ為導(dǎo)體材料的泊松比。因此 ,有

                       (2.4)

試驗(yàn)發(fā)現(xiàn) ,金屬材料電阻率的相對(duì)變化與其體的相對(duì)變化間的關(guān)系為

                           (2.5)

式中 , c為常數(shù)(由一定的材料和加工方式?jīng)Q定)將式 (2.5)代入 (2.4) ,且當(dāng)ΔR=R時(shí) ,可得

                    (2.6)

式中,k=(1+2µ)+c(1-2µ)為金屬絲材料的應(yīng)變靈敏系數(shù)。

上式表明 ,金屬材料電阻的相對(duì)變化與其線應(yīng)變成正比。這就是金屬材料的應(yīng)變電阻效應(yīng)。

電阻變化率 △R/R 的表達(dá)式為:K=ΔR/Rµ/ε,式中μ—材料的泊松系數(shù);ε—應(yīng)變量。

當(dāng)金屬絲受外力作用時(shí),其長(zhǎng)度和截面積都會(huì)發(fā)生變化,從上式中可很容易看出,其電阻值即會(huì)發(fā)生改變,假如金屬絲受外力作用而伸長(zhǎng)時(shí),其長(zhǎng)度增加,而截面積減少,電阻值便會(huì)增大。當(dāng)金屬絲受外力作用而壓縮時(shí),長(zhǎng)度減小而截面增加,電阻值則會(huì)減小。只要測(cè)出加在電阻的變化(通常是測(cè)量電阻兩端的電壓),即可獲得應(yīng)變金屬絲的應(yīng)變情。

2.1.3 電阻應(yīng)變片的基本結(jié)構(gòu)

電阻應(yīng)變片主要由四部分組成。如圖 2.2所示 ,電阻絲是應(yīng)變片敏感元件;基片、覆蓋片起定位和保護(hù)電阻絲的作用,并使電阻絲和被測(cè)試件之間絕緣;引

出線用以連接測(cè)量導(dǎo)線。

圖 2.2 電阻應(yīng)變片的基本結(jié)構(gòu)

2.1.4 電阻應(yīng)變片的測(cè)量電路

應(yīng)變片可以將應(yīng)變轉(zhuǎn)換為電阻的變化,為了顯示于記錄應(yīng)變的大小,還要將電阻的變化再轉(zhuǎn)換為電壓或電流的變化,因此需要有專用的測(cè)量電路,通常采用直流電橋和交流電橋。

2.1.4.1電橋電路的工作原理

由于應(yīng)變片的電橋電路的輸出信號(hào)一般比較微弱,所以目前大部分電阻應(yīng)變式傳感器的電橋輸出端與直流放大器相連,如圖2.3所示。

      

圖2.3直流電橋

設(shè)電橋的各臂的電阻分別為R1R3R2R4  它們可以全部或部分是應(yīng)變片。由于直流放大器的輸入電阻比電橋電阻大的多,因此可將電橋輸出端看成開路,這種電橋成為電壓輸出橋,輸出電壓U0

U0=                         (2.7)

由上式可見:若R1R3=R2R4,則輸出電壓必為零,此時(shí)電橋處于平衡狀態(tài),稱為平衡電橋。

平衡電橋的平衡條件為:

R1R3=R2R4      

     應(yīng)變片工作時(shí),其電阻變化ΔR,此時(shí)有不平衡電壓輸出。

(2.8)

由式(2.8)表明:ΔR《 R1 時(shí),電橋的輸出電壓于應(yīng)變成線性關(guān)系。若相鄰兩橋臂的應(yīng)變極性一致,即同為拉應(yīng)變活壓應(yīng)變時(shí),輸出電壓為兩者之差,若不同時(shí),則輸出電壓為兩者之和。若相對(duì)兩橋臂的極性一直,輸出電壓為兩者之和,反之則為兩者之差。

電橋供電電壓U越高,輸出電壓U0 越大,但是,當(dāng)U大時(shí),電阻應(yīng)變片通過的電流也大,若超過電阻應(yīng)變片所允許通過的最大工作電流,傳感器就會(huì)出現(xiàn)蠕變和零漂。基于這些原因可以合理的進(jìn)行溫度補(bǔ)償和提高傳感器的測(cè)量靈敏度。

2.1.4.2 非線性誤差及溫度補(bǔ)償

由式(2.8)的線性關(guān)系是在應(yīng)變片的參數(shù)變化很小,極ΔR《 R1 的情況下得出的,若應(yīng)變片承受的壓力太大,則上述假設(shè)不成立,電橋的輸出電壓應(yīng)變之間成非線性關(guān)系。在在這種情況下,用按線性關(guān)系刻度的儀表進(jìn)行測(cè)量必然帶來非線性誤差。為了消除非線性誤差,在實(shí)際應(yīng)用中,常采用半橋差動(dòng)或全橋差動(dòng)電路,如圖2.4所示,以改善非線性誤差和提高輸出靈敏度。

        UU

           (a)半橋差動(dòng)電路                    (b) 全橋差動(dòng)電路

                                圖2.4 差動(dòng)電橋


圖2.4(a)為半橋差動(dòng)電路,在傳感器這中經(jīng)常使用這種方法。粘貼應(yīng)變片時(shí),使兩個(gè)應(yīng)變片一個(gè)受壓,一個(gè)受拉。應(yīng)變符號(hào)相反,工作時(shí)將兩個(gè)應(yīng)變片接入電橋的相鄰兩臂。設(shè)電橋在初始時(shí)所示平衡的,且為等臂電橋,考慮到ΔRR1=ΔR2 則得半橋差動(dòng)電路的輸出電壓為

                            (2.9)

由上式可見,半橋差動(dòng)電路不僅可以消除非線性誤差,而且還使電橋的輸出靈敏度提高了一倍,同時(shí)還能起到溫度補(bǔ)償?shù)淖饔谩H绻磮D2.4(b)所示構(gòu)成全橋差動(dòng)電路同樣考慮到 ΔRR1=ΔR2=ΔR3=ΔR4時(shí)得全橋差動(dòng)電路的輸出電壓為

                                                        (2.10)

可見,全橋的電壓靈敏度比單臂工作時(shí)的靈敏度提高了4倍非線性誤差也得到了消除,同時(shí)還具有溫度補(bǔ)償?shù)淖饔茫撾娐芬驳玫搅藦V泛的應(yīng)用。

2.2 信號(hào)放大電路2.1.2 放大器的選擇

被測(cè)的非電量經(jīng)傳感器得到的電信號(hào)幅度很小,無法進(jìn)行A/D轉(zhuǎn)換,必須對(duì)這些模擬電信號(hào)進(jìn)行放大處理。為使電路簡(jiǎn)單便于調(diào)試,本設(shè)計(jì)采用三運(yùn)算放大器,因?yàn)樵诰哂休^大共模電壓的條件下,儀表放大器能夠?qū)芪⑷醯牟罘蛛妷盒盘?hào)進(jìn)行放大,并且具有很高的輸入阻抗。這些特性使其受到眾多應(yīng)用的歡迎,廣泛用于測(cè)量壓力和溫度的應(yīng)變儀電橋接口、熱電耦溫度檢測(cè)和各種低邊、高邊電流檢測(cè)。

2.2.4 三運(yùn)放大電路

本次設(shè)計(jì)的放大器采用了三運(yùn)放,因?yàn)樗哂懈吖材R种票鹊姆糯箅娐贰K扇齻(gè)集成運(yùn)算放大器組成,如圖2.5所示。

2.5 三運(yùn)放高共摸抑制比放大電路

其中A1和A2為兩個(gè)性能一致(主要指輸入阻抗,共模抑制比和增益)的同相輸入通用集成運(yùn)算放大器,構(gòu)成平衡對(duì)稱差動(dòng)放大輸入級(jí),A3構(gòu)成雙端輸入單端輸出的輸出級(jí),用來進(jìn)一步抑制A1和A2的共模信號(hào),并適應(yīng)接地負(fù)載的需要。由于每個(gè)放大器求和點(diǎn)的電壓等于施加在各自正輸入端的電壓,因此,整個(gè)差分輸入電壓現(xiàn)在都呈現(xiàn)在RG兩端。因?yàn)檩斎腚妷航?jīng)過放大后(在A1 和A2的輸出端)的差分電壓呈現(xiàn)在R5,RG和R6這三只電阻上,所以差分增益可以通過僅改變RG進(jìn)行調(diào)整。 這種連接有另外一個(gè)優(yōu)點(diǎn):一旦這個(gè)減法器電路的增益用比率匹配的電阻器設(shè)定后,在改變?cè)鲆鏁r(shí)不再對(duì)電阻匹配有任何要求。如果R5 = R6,R1= R3和R2 = R4,則VOUT = (VIN2-VIN1)(1+2R5/RG)(R2/R1)。

由于RG兩端的電壓等于VIN,所以流過RG的電流等于VIN/RG,因此輸入信號(hào)將通過A1 和A2 獲得增益并得到放大。然而須注意的是對(duì)加到放大器輸入端的共模電壓在RG兩端具有相同的電位,從而不會(huì)在RG上產(chǎn)生電流。由于沒有電流流過RG(也就無電流流過R5和R6),放大器A1 和A2 將作為單位增益跟隨器而工作。因此,共模信號(hào)將以單位增益通過輸入緩沖器,而差分電壓將按〔1+(2 RF/RG)〕的增益系數(shù)被放大。這也就意味著該電路的共模抑制比相比與原來的差分電路增大了〔1+(2 RF/RG)〕倍。
    在理論上表明,得到所要求的前端增益(由RG來決定),而不增加共模增益和誤差,即差分信號(hào)將按增益成比例增加,而共模誤差則不然,所以比率〔增益(差分輸入電壓)/(共模誤差電壓)〕將增大。因此CMR理論上直接與增益成比例增加,這是一個(gè)非常有用的特性。
    最后,由于結(jié)構(gòu)上的對(duì)稱性,輸入放大器的共模誤差,如果它們跟蹤,將被輸出級(jí)的減法器消除。這包括諸如共模抑制隨頻率變換的誤差。

2.3 A/D轉(zhuǎn)換器

模擬量輸入通道的任務(wù)是將模擬量轉(zhuǎn)換成數(shù)字量。能夠完成這一任務(wù)的器件稱之為模數(shù)轉(zhuǎn)換器,簡(jiǎn)稱A/D轉(zhuǎn)換器。本次設(shè)計(jì)的中A/D轉(zhuǎn)換器的任務(wù)是將放大器輸出的模擬信號(hào)轉(zhuǎn)換位數(shù)字量進(jìn)行輸出。

2.3.1 A/D轉(zhuǎn)換模塊器件選擇

目前單片機(jī)在電子產(chǎn)品中已得到廣泛應(yīng)用,許多類型的單片機(jī)內(nèi)部已帶有A/D轉(zhuǎn)換電路,但此類單片機(jī)會(huì)比無A/D轉(zhuǎn)換功能的單片機(jī)在價(jià)格上高幾元甚至很多,我們采用一個(gè)普通的單片機(jī)加上一個(gè)A/D轉(zhuǎn)換器,實(shí)現(xiàn)A/D轉(zhuǎn)換的功能,這里A/D轉(zhuǎn)換器可選ADC0832、ADC0809等;串行和并行接口模式是A/D轉(zhuǎn)換器諸多分類中的一種,但卻是應(yīng)用中器件選擇的一個(gè)重要指標(biāo)。在同樣的轉(zhuǎn)換分辨率及轉(zhuǎn)換速度的前提下,不同的接口方式會(huì)對(duì)電路結(jié)構(gòu)及采用周期產(chǎn)生影響。對(duì)A/D轉(zhuǎn)換器的選擇我們通過比較ADC0809和ADC0832來決定。這兩個(gè)轉(zhuǎn)換器都是常見的A/D轉(zhuǎn)換器,其中ADC0809的并行接口A/D轉(zhuǎn)換器,ADC0832是串行接口A/D轉(zhuǎn)換器。我們所做的設(shè)計(jì)選擇ADC0832,A/D轉(zhuǎn)換在單片機(jī)接口中應(yīng)用廣泛 ,串行 A/D轉(zhuǎn)換器具有功耗低、性價(jià)比較高、芯片引腳少等特點(diǎn)。

2.3.2 A/D轉(zhuǎn)換器的簡(jiǎn)介

在這次設(shè)計(jì)中我們A/D轉(zhuǎn)換器選用兩通道輸入的八位ADC0832,ADC0832[3]是美國國家半導(dǎo)體公司生產(chǎn)的一種8 位分辨率、雙通道A/D轉(zhuǎn)換芯片。由于它體積小,兼容性強(qiáng),性價(jià)比高而深受單片機(jī)愛好者及企業(yè)歡迎,其目前已經(jīng)有很高的普及率。ADC0832 為8位分辨率A/D轉(zhuǎn)換芯片,其最高分辨可達(dá)256級(jí),可以適應(yīng)一般的模擬量轉(zhuǎn)換要求。其內(nèi)部電源輸入與參考電壓的復(fù)用,使得芯片的模擬電壓輸入在0~5V之間。芯片轉(zhuǎn)換時(shí)間僅為32μS,據(jù)有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn),以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強(qiáng)。獨(dú)立的芯片使能輸入,使多器件掛接和處理器控制變得更加方便。通過DI 數(shù)據(jù)輸入端,可以輕易的實(shí)現(xiàn)通道功能的選擇。有關(guān)引腳說明如下:

• CS 片選使能,低電平芯片使能。

• CH0 模擬輸入通道0,或作為IN+/-使用。

• CH1 模擬輸入通道1,或作為IN+/-使用。

• GND 芯片參考0電位(地)。

• DI 數(shù)據(jù)信號(hào)輸入,選擇通道控制。

• DO 數(shù)據(jù)信號(hào)輸出,轉(zhuǎn)換數(shù)據(jù)輸出。

• CLK 芯片時(shí)鐘輸入。

• Vcc/REF 電源輸入及參考電壓輸入(復(fù)用)。

正常情況下ADC0832 與單片機(jī)的接口應(yīng)為4條數(shù)據(jù)線,分別是CS、CLK、DO、DI。它的結(jié)構(gòu)示意圖如圖2.6所示。


圖2.6 ADC0832結(jié)構(gòu)示意圖


2.3.3 配置位說明

ADC0832工作時(shí),模擬通道的選擇及單端輸入和差分輸入的選擇,都取決于輸入時(shí)序的配置位。當(dāng)差輸入時(shí),要分配輸入通道的極性,兩個(gè)輸入通道的任何一個(gè)通道都可作為正極或負(fù)極。ADC0832的配置位邏輯表如表2.1所示。

表2.1的配置位邏輯表

表中“+”表示輸入通道的端點(diǎn)為正極性;“-”表示輸入端點(diǎn)為負(fù)極性H或L表示高、低電平。輸入配置位時(shí),高位(CH0)在前,低位(CH1)在后。

2.3.4 ADC0832工作時(shí)序圖

當(dāng) CS由高變低時(shí),選中ADC0832 。在時(shí)鐘的上升沿,DI 端的數(shù)據(jù)移入 ADC0832內(nèi)部的多路地址移位寄存器。在第一個(gè)時(shí)鐘期間,DI為高,表示啟動(dòng)位,緊接著輸入兩位配置位。當(dāng)輸入啟動(dòng)位和配置位后,選通輸入模擬通道,轉(zhuǎn)換開始。轉(zhuǎn)換開始后,經(jīng)過一個(gè)時(shí)鐘周期延接著在第一個(gè)時(shí)鐘周期延遲,以使選定的通道穩(wěn)定。ADC0832緊接著在第4個(gè)時(shí)鐘下降沿輸出轉(zhuǎn)換數(shù)據(jù)。數(shù)據(jù)輸出時(shí)先輸出最高位(D7~D0)輸出完轉(zhuǎn)換結(jié)果后,又以最低位開始重新遍數(shù)據(jù)(D7~D0 ),兩次發(fā)送的最低位共用。當(dāng)片選CS為高時(shí),內(nèi)部所有寄存器清 ,輸出變?yōu)楦咦钁B(tài)。如果要再進(jìn)行一次模 數(shù)轉(zhuǎn)換,片選 必須再次從高向低跳變,后面再輸入啟動(dòng)位和配置位。

圖2.7 ADC083工作時(shí)序圖









2.3.3 單片機(jī)對(duì)ADC0832的控制原理

圖2.8 ADC0832與單片機(jī)的接口電路

正常情況下ADC0832與單片機(jī)的接口應(yīng)為4條數(shù)據(jù)線,分別是CS、CLK、DO、DI。但由于DO端與DI端在通信時(shí)并未同時(shí)有效并與單片機(jī)的接口是雙向的,所以電路設(shè)計(jì)時(shí)可以將DO和DI并聯(lián)在一根數(shù)據(jù)線上使用。

當(dāng)ADC0832未工作時(shí)其CS輸入端應(yīng)為高電平,此時(shí)芯片禁用,CLK和DO/DI的電平可任意。當(dāng)要進(jìn)行A/D轉(zhuǎn)換時(shí),須先將CS使能端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。此時(shí)芯片開始轉(zhuǎn)換工作,同時(shí)由處理器向芯片時(shí)鐘輸入端CLK輸入時(shí)鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號(hào)。在第1個(gè)時(shí)鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號(hào)。在第2、3個(gè)脈沖下沉之前DI端應(yīng)輸入2位數(shù)據(jù)用于選擇通道功能。其功能項(xiàng)見表2.2。

表2.2ADC0832的功能表

MUX Address

Channel

SGL/

DIF

ODD/

SIGN

0

1

1

0

+


1

1


+


MUX Address

Channel

SGL/

DIF

ODD/

SIGN

0

1

1

0

+

-

1

1

-

+


如表2.2所示,當(dāng)此2位數(shù)據(jù)為“1”、“0”時(shí),只對(duì)CH0進(jìn)行單通道轉(zhuǎn)換。當(dāng)2位數(shù)據(jù)為“1”、“1”時(shí),只對(duì)CH1進(jìn)行單通道轉(zhuǎn)換。當(dāng)2位數(shù)據(jù)為“0”、“0”時(shí),將CH0作為正輸入端IN+,CH1作為負(fù)輸入端IN-進(jìn)行輸入。當(dāng)2位數(shù)據(jù)為“0”、“1”時(shí),將CH0作為負(fù)輸入端IN-,CH1作為正輸入端IN+進(jìn)行輸入。

到第3個(gè)脈沖的下沉之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開始利用數(shù)據(jù)輸出DO進(jìn)行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個(gè)脈沖下沉開始由DO端輸出轉(zhuǎn)換數(shù)據(jù)最高位DATA7,隨后每一個(gè)脈沖下沉DO端輸出下一位數(shù)據(jù)。直到第11個(gè)脈沖時(shí)發(fā)出最低位數(shù)據(jù)DATA0,一個(gè)字節(jié)的數(shù)據(jù)輸出完成。也正是從此位開始輸出下一個(gè)相反字節(jié)的數(shù)據(jù),即從第11個(gè)字節(jié)的下沉輸出DATD0。隨后輸出8位數(shù)據(jù),到第19個(gè)脈沖時(shí)數(shù)據(jù)輸出完成,也標(biāo)志著一次A/D轉(zhuǎn)換的結(jié)束。最后將CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行處理就可以了。

作為單通道模擬信號(hào)輸入時(shí)ADC0832的輸入電壓是0~5V且8位分辨率時(shí)的電壓精度為19.53mV。如果作為由IN+與IN-輸入的輸入時(shí),可是將電壓值設(shè)定在某一個(gè)較大范圍之內(nèi),從而提高轉(zhuǎn)換的寬度。在進(jìn)行IN+與IN-的輸入時(shí),如果IN-的電壓大于IN+的電壓則轉(zhuǎn)換后的數(shù)據(jù)結(jié)果始終為00H。

2.4 單片機(jī)

隨著電子技術(shù)的發(fā)展,單片機(jī)的功能將更加完善,因而單片機(jī)的應(yīng)用將更加普及。它們將在智能化儀器、家電產(chǎn)品、工業(yè)過程控制等方面得到更廣泛的應(yīng)用。單片機(jī)將是智能化儀器和中、小型控制系統(tǒng)中應(yīng)用最多的有種微型計(jì)算機(jī)。

2.4.1 AT89C51單片機(jī)簡(jiǎn)介

AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本,如圖2.9所示。AT89C51單機(jī)為很多嵌入式控制系統(tǒng)提供靈活性高且廉價(jià)的方案。

圖2.9 AT89C51單片機(jī)的結(jié)構(gòu)示意圖

2.4.2主要特性

·與MCS-51 兼容
·4K字節(jié)可編程閃爍存儲(chǔ)器
壽命:1000寫/擦循環(huán)
數(shù)據(jù)保留時(shí)間:10年
·全靜態(tài)工作:0Hz-24Hz
·三級(jí)程序存儲(chǔ)器鎖定
·128*8位內(nèi)部RAM
·32可編程I/O線
·兩個(gè)16位定時(shí)器/計(jì)數(shù)器
·5個(gè)中斷源
·可編程串行通道
·低功耗的閑置和掉電模式
·片內(nèi)振蕩器和時(shí)鐘電路

2.4.3 管腳說明

VCC:供電電壓。  

GND:接地。

P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。

P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。

P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。

P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。

P3口也可作為AT89C51的一些特殊功能口:

P3口管腳 備選功能

P3.0 RXD(串行輸入口)

P3.1 TXD(串行輸出口)

P3.2 /INT0(外部中斷0)

P3.3 /INT1(外部中斷1)

P3.4 T0(記時(shí)器0外部輸入)

P3.5 T1(記時(shí)器1外部輸入)

P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)

P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)

P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。

RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。

ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。

/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。

/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。

XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。

XTAL2:來自反向振蕩器的輸出。

2.4.4 振蕩器特性

XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。

2.4.5 芯片擦除

整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。

此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。

2.5 單片機(jī)于鍵盤的接口技術(shù)2.5.1 鍵盤功能及結(jié)構(gòu)概述

鍵盤是單片機(jī)系統(tǒng)實(shí)現(xiàn)人機(jī)對(duì)話的常用輸入設(shè)備。操作員通過鍵盤,向計(jì)算機(jī)系統(tǒng)輸入各種數(shù)據(jù)和命令,亦可通過使用鍵盤,讓單片機(jī)系統(tǒng)處于預(yù)定的功能狀態(tài)。

鍵盤按照其內(nèi)部不同電路結(jié)構(gòu),可分為編碼鍵盤和非編碼鍵盤二種。編碼鍵盤本身除了帶有普通按鍵之外,還包括產(chǎn)生鍵碼的硬件電路。使用時(shí),只要按下編碼鍵盤的某一個(gè)鍵,硬件邏輯會(huì)自動(dòng)提供被按下的鍵的鍵碼,使用十分方便,但價(jià)格較貴。由非編碼鍵盤組成的簡(jiǎn)單硬件電路,僅提供各個(gè)鍵被按下的信息,其他工作由軟件來實(shí)現(xiàn)。由于價(jià)格便宜,而且使用靈活,因此廣泛應(yīng)用在單片機(jī)應(yīng)用系統(tǒng)中。                                                                                                                                                                                                                                                                                                                                                                                               

非編碼鍵盤按照其鍵盤排列的結(jié)構(gòu),又可分為獨(dú)立式按鍵和行列式按鍵兩種類型。

2.5.2 鍵盤抖動(dòng)及去除

目前各種結(jié)構(gòu)的鍵盤,主要是利用機(jī)械觸點(diǎn)的合、斷作用,產(chǎn)生一個(gè)電壓信號(hào),然后將這個(gè)電信號(hào)傳送給CPU。由于機(jī)械觸點(diǎn)的彈性作用,在閉合及斷開的瞬間均有抖動(dòng)過程。抖動(dòng)時(shí)間長(zhǎng)短,與開關(guān)的機(jī)械特性有關(guān),一般約5~10ms之間。圖2.10為閉合及斷開時(shí)的電壓抖動(dòng)波形:

圖2.10  鍵閉合及斷開時(shí)的電壓抖動(dòng)波形

按鍵的穩(wěn)定閉合期,由操作人員的按鍵動(dòng)作所確定,一般為十分之幾秒至幾秒時(shí)間。為保證CPU對(duì)鍵的一次操作僅作一次輸入處理,必須去除抖動(dòng)影響及人為的操作時(shí)問長(zhǎng)短的影響。

通常去抖動(dòng)影響的措施有硬、軟件兩種;可用基本R-S觸發(fā)器或單穩(wěn)態(tài)電路構(gòu)成硬件去抖動(dòng)電路如圖2.11所示。也可采用軟件延時(shí)的方法除去鍵盤抖動(dòng)產(chǎn)生的影響。采用軟件除去抖動(dòng)影響的辦法是,在檢測(cè)到有鍵按下時(shí),執(zhí)行一個(gè)10ms左右的延時(shí)程序,然后再去判斷該鍵電平是否仍保持閉合狀態(tài)電平,如保持閉合狀態(tài)電平則可確認(rèn)該鍵為按下狀態(tài),從而消除了抖動(dòng)影響。

圖2.11  RC去抖動(dòng)電路

2.5.3 單片機(jī)與鍵盤的連接

鍵盤與單片機(jī)的連接在單片機(jī)系統(tǒng)中鍵盤中按鈕數(shù)量較多時(shí),為了減少I/O口的占用,常常將按鈕排列成矩陣形式,如2.13圖所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鈕加以連接。這樣,一個(gè)端口(如P1口)就能組成4*4=16個(gè)按鈕,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就能組成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。在實(shí)際應(yīng)用中,4×4鍵盤主要由數(shù)字0~9和功能鍵組成。這里給出一個(gè)比較常用的鍵盤排列方式,如表2.3所示。

表2.3 按鍵表

1

2

3

命令

4

5

6

功能

7

8

9

確認(rèn)

0

上移

下移

退出


按照鍵盤與單片機(jī)的連接方式可分為獨(dú)立式鍵盤與矩陣式鍵盤。獨(dú)立式鍵盤相互獨(dú)立,每個(gè)按鍵占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會(huì)影響其他按鍵的工作狀態(tài)。如圖2.12所示這種按鍵軟件程序簡(jiǎn)單,但占用I/O口線較多(一根口線只能接一個(gè)鍵),適用于鍵盤應(yīng)用數(shù)量較少的系統(tǒng)中。

圖2.12獨(dú)立式按鍵接口電路

于獨(dú)立是按鍵接口電路要比較矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些如圖2.13所示。


圖2.13 單片機(jī)矩陣式鍵盤接口電路

上圖中列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鈕沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別及編程辦法如下所述。矩陣式鍵盤的按鈕識(shí)別辦法 確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鈕識(shí)別辦法,如上圖所示鍵盤,介紹過程如下。判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鈕之中。若所有列線均為高電平,則鍵盤中無鍵按下。

判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其辦法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鈕就是閉合的按鈕。

2.6  LED顯示接口

本次設(shè)計(jì)是利用89C51單片機(jī)串行口和74LS164移位寄存器實(shí)現(xiàn)多個(gè)LED顯示的一種方法,利用該方法設(shè)計(jì)的多路LED顯示系統(tǒng)具有硬件結(jié)構(gòu)簡(jiǎn)單、軟件編程容易和價(jià)格低廉等特點(diǎn).

2.6.1發(fā)光二極管及LED顯示器

發(fā)光二極管是由半導(dǎo)體發(fā)光材料做成的PN結(jié),只要在發(fā)光二極管兩端通過正向電流5-20mA就能達(dá)到正常發(fā)光。LED的發(fā)光顏色通常有紅、綠、黃、白,其外形和電氣圖形符號(hào)如圖2.14所示。單個(gè)LED通常是通過亮、滅來指示系統(tǒng)運(yùn)行狀態(tài)和用快速閃爍來報(bào)警。

aa)外形  b)圖形符號(hào)

圖2.14 LED

通常所說的LED顯示器由7個(gè)發(fā)光二極管組成,因此也稱之為七段LED顯示器,其排列形狀如圖2.15所示。顯示器中還有一個(gè)圈點(diǎn)型發(fā)光二極管(在圖中以dp表示),用于顯示小數(shù)點(diǎn)。通過七個(gè)發(fā)光二極管亮暗的不同組合,可以顯示多種數(shù)字、字母以及其它符號(hào)。

LED顯示器中的發(fā)光二極管共有兩種連接方法:

·共陽極接法

把發(fā)光二極管的陽極連在一起構(gòu)成公共陽極。使用時(shí)公共陽極接+5V。陰極端輸入低電平的段發(fā)光二極管導(dǎo)通點(diǎn)亮,輸入高電平的則不點(diǎn)亮。

·共陰極接法

把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極。使用時(shí)會(huì)共陰極接地,陽極端輸入高電平的段發(fā)光二極管導(dǎo)通點(diǎn)亮,輸入低電平的則不點(diǎn)亮。

圖2.15 LED顯示

用LED顯示器顯示十六進(jìn)制數(shù)的字型代碼如下表所示:

表2.4 十六進(jìn)制數(shù)字形代碼

2.6.2七段數(shù)碼顯示器

七段LED顯示器需要由驅(qū)動(dòng)電路驅(qū)動(dòng)。在七段LED顯示器中,共陽極顯示器,用低電平驅(qū)動(dòng);共陰極顯示器,用高電平驅(qū)動(dòng)。點(diǎn)亮顯示器有靜態(tài)和動(dòng)態(tài)兩種方式。

2.6.2.1靜態(tài)顯示

所謂靜態(tài)顯示,就是當(dāng)顯示器顯示某一字符時(shí),相應(yīng)段的發(fā)光二極管恒定地導(dǎo)通或截止。這種顯示方法的每一位都需要有一個(gè)8位輸出口控制。

靜態(tài)顯示器的優(yōu)點(diǎn)是顯示穩(wěn)定,在發(fā)光二極管導(dǎo)通電流一定的情況下顯示器的亮度高,控制系統(tǒng)在運(yùn)行過程中,僅僅在需要更新顯示內(nèi)容時(shí),CPU才執(zhí)行一次顯示更新子程序,這樣大大節(jié)省了CPU的時(shí)間,提高了CPU的工作效率;缺點(diǎn)是位數(shù)較多時(shí),所需的I/O口太多,硬件開銷太大。

圖2.16 四位靜態(tài)顯示電路

2.6.2.2 動(dòng)態(tài)顯示

所謂動(dòng)態(tài)顯示就是一位一位地輪流點(diǎn)亮各位顯示器(掃描),對(duì)于顯示器的每一位而言,每隔一段時(shí)間點(diǎn)亮一次。在同一時(shí)刻只有一位顯示器在工作(點(diǎn)亮),利用人眼的視覺暫留效應(yīng)和發(fā)光二極管熄滅時(shí)的余輝效應(yīng),看到的卻是多個(gè)字符“同時(shí)”顯示如圖2.17所示。

圖2.17 四位動(dòng)態(tài)顯示的電路

顯示器亮度既與點(diǎn)亮?xí)r的導(dǎo)通電流有關(guān),也與點(diǎn)亮?xí)r間和間隔時(shí)間的比例有關(guān)。調(diào)整電流和時(shí)間參數(shù),可實(shí)現(xiàn)亮度較高較穩(wěn)定的顯示。

動(dòng)態(tài)顯示器的優(yōu)點(diǎn)是節(jié)省硬件資源,成本較低。但在控制系統(tǒng)運(yùn)行過程中,要保證顯示器正常顯示,CPU必需每隔一段時(shí)間執(zhí)行一次顯示子程序,占用CPU大量時(shí)間,降低了CPU的工作效率,同時(shí)顯示亮度較靜態(tài)顯示器低。

若顯示器的位數(shù)不大于8位,則控制顯示器公共極電位只需一個(gè)8位I/O口(稱為掃描口或字位口),控制各位LED顯示器所顯示的字形也需要一個(gè)8位口(稱為數(shù)據(jù))。

2.6.3 LED數(shù)碼管靜態(tài)顯示接口

在單片機(jī)應(yīng)用系統(tǒng)中,數(shù)碼管顯示器顯示常用兩種辦法:靜態(tài)顯示和動(dòng)態(tài)掃描顯示。基于LED的優(yōu)點(diǎn)在本次設(shè)計(jì)中采用了數(shù)碼管的靜態(tài)顯示。所謂靜態(tài)顯示,就是每一個(gè)數(shù)碼管顯示器都要占用單獨(dú)的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種辦法單片機(jī)中CPU的開銷小。能供給單獨(dú)鎖存的I/O接口電路很多,常用的串并轉(zhuǎn)換電路74LS164,他的電路如圖2.18所示。

圖2.18 靜態(tài)LED顯示電路

MCS-51單片機(jī)串行口方式為移們寄存器方式,外接4片74LS164作為4位LED數(shù)碼管顯示器的靜態(tài)顯示接口,把AT89C51的RXD作為數(shù)據(jù)輸出線,TXD作為移位時(shí)鐘脈沖。74LS164為TTL單向8位移位寄存器,可實(shí)現(xiàn)串行輸入,并行輸出。其中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個(gè)管腳按邏輯與運(yùn)算規(guī)律輸入信號(hào),共公一個(gè)輸入信號(hào)時(shí)可并接。CLK(第8腳)為時(shí)鐘輸入端,可連接到串行口的TXD端。每一個(gè)時(shí)鐘信號(hào)的上升沿加到CLK端時(shí),移位寄存器移一位,8個(gè)時(shí)鐘脈沖過后,8位二進(jìn)制數(shù)全部移入74LS164中。R(第9腳)為復(fù)位端,當(dāng)R=0時(shí),移位寄存器各位復(fù)0,只有當(dāng)R=1時(shí),時(shí)鐘脈沖才起作用。Q1…Q8(第3-6和10-13管腳)并行輸出端分別接LED數(shù)碼管顯示器的hg---a各段對(duì)應(yīng)的管腳上。在74LS164獲得時(shí)鐘脈沖的瞬間(是在脈沖的下降沿),如果數(shù)據(jù)輸入端(第1,2管腳)是高電平,則就會(huì)有一個(gè)1進(jìn)入到74LS164的內(nèi)部,如果數(shù)據(jù)輸入端是低電平,則就會(huì)有一個(gè)0進(jìn)入其內(nèi)部。在給出了8個(gè)脈沖后,最先進(jìn)入74LS164的第一個(gè)數(shù)據(jù)到達(dá)了最高位,再來一個(gè)脈沖,第一個(gè)脈沖就會(huì)從最高位移出。 6片7LS164首尾相串,而時(shí)鐘端則接在一起,這樣,當(dāng)輸入8個(gè)脈沖時(shí),從單片機(jī)RXD端輸出的數(shù)據(jù)就進(jìn)入到了第一片74LS164中了,而當(dāng)?shù)诙䝼(gè)8個(gè)脈沖到來后,這個(gè)數(shù)據(jù)就進(jìn)入了第二片74LS164,而新的數(shù)據(jù)則進(jìn)入了第一片74LS164,這樣,當(dāng)?shù)诹鶄(gè)8個(gè)脈沖完成后,首次送出的數(shù)據(jù)被送到了最左面的74LS164中,其他數(shù)據(jù)依次出現(xiàn)在第一、二、三、四、五片74LS164中。


第三章 軟件設(shè)計(jì)
3.1 A/D轉(zhuǎn)換器的軟件設(shè)計(jì)

單片機(jī)控制系統(tǒng)中通常要用到AD轉(zhuǎn)換,根據(jù)輸出格式,常用的AD轉(zhuǎn)換方式可分為并行AD和串行AD。并行方式一般在轉(zhuǎn)換后可直接接收,但芯片的引腳比較多;串行方式所用芯片引腳少,封裝小,但需要軟件處理才能得到所需要的數(shù)據(jù)。可是單片機(jī)I/O引腳本來就不多,使用串行器件可以節(jié)省I/O資源。

ADC0832是8位逐次逼近模數(shù)轉(zhuǎn)換器,可支持兩個(gè)單端輸入通道和一個(gè)差分輸入通道。相同功能的器件還有ADC0834,ADC0838,ADC0831。所不同的是它們的輸入通道數(shù)量不同。它們的通道選擇和配置都是通過軟件設(shè)置。

3.1.1 ADC0832芯片接口程序的編寫

單片機(jī)串行工作方式時(shí) ,串行口是作為同步移位寄存器使用。這時(shí)以 P3.3端作為數(shù)據(jù)移位的入口和出口 ,而由P3.6端提供移位時(shí)鐘脈沖。單片機(jī)串行口方式 0與 ADC0832的接口,單片機(jī)P2.0接ADC0832的CS,P3.6接0832的CLK作為時(shí)鐘信號(hào)輸出端 ,P3.7 接 0832的 DO和DI作為啟動(dòng)位、配置位的發(fā)送端以及 A/D轉(zhuǎn)換后輸出數(shù)據(jù)的接收端。由于 ADC0832在 CS變低后的前 3個(gè)周期內(nèi),DO端為高阻態(tài);轉(zhuǎn)換開始后 ,DI線禁止 ,因此 ,DI端和 DO端可連接在一起。ADC0832的時(shí)鐘頻率最高為 400kHz,單片機(jī)晶振可選用 4MHz,在 TXD的輸出頻率為 4MHz/12 =333. 3kHz,符合要求。ADC0832輸出的串行數(shù)據(jù)共 15位 ,由兩段 8位數(shù)據(jù)組成 ,前一段是最高位在先 ,后一段是最高在后 ,兩段數(shù)據(jù)的最低位共用。只有在時(shí)鐘的下降沿 ,ADC0832的串行數(shù)據(jù)才移出一位。由單片機(jī)控制時(shí)鐘信號(hào)的發(fā)送 ,并由P3.6發(fā)出 ,以達(dá)到控制 ADC0832輸出數(shù)據(jù)位的目的。為了得到一列完整的 8位數(shù)據(jù) ,單片機(jī)分兩次采集含有不同位的數(shù)據(jù) ,再合成一列完整的 8位數(shù)據(jù)。

ADC0832通過內(nèi)部多路器來控制選擇通道,處理器的控制命令通過DI引腳輸入。如下流程圖所示,當(dāng)模擬信號(hào)輸入開始后,首先是CS使能信號(hào)也就是片選信號(hào)有效,這時(shí)是低電平有效,如果片選是高電平時(shí)停止轉(zhuǎn)換。當(dāng)時(shí)鐘信號(hào)有效時(shí)輸入通道的控制字來確定所選擇的通道,讀取數(shù)據(jù)后就開始將模擬量轉(zhuǎn)換位數(shù)字量,A/D轉(zhuǎn)換結(jié)束后,單片機(jī)讀取數(shù)值,如果沒轉(zhuǎn)換完,又回到使能開始。

     

圖3.1 ADC0832數(shù)據(jù)讀取程序流程

3.2 單片機(jī)與鍵盤的接口程序設(shè)計(jì)

AT89C51單片機(jī)的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個(gè)上拉電阻到正電源+5V,并把列線P1.0-P1.3設(shè)置為輸入線,行線P1.4-P.17設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的辦法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無鍵閉合,不然有鍵閉合。 去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。 若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。辦法是對(duì)鍵盤的行線進(jìn)行掃描。P1.4-P1.7按下述4種組合依次輸出: P1.7 1 1 1 0   P1.6 1 1 0 1   P1.5 1 0 1 1   P1.4 0 1 1 1 在每組行輸出時(shí)讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,不然有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時(shí)的抖動(dòng)。

從以上分析得到單片機(jī)鍵盤掃描程序的流程圖如圖3.2所示。程序如下

   

圖3.2單片機(jī)矩陣式鍵盤接口流程圖
3.4 LED數(shù)碼管顯示程序設(shè)計(jì)

利用單片機(jī)內(nèi)部的串行接口,可以實(shí)現(xiàn)靜態(tài)的顯示處理。這樣不僅可以節(jié)省單片機(jī)的并行接口資源,而且在大多數(shù)不使用串行接口的情況下,可以減少或是免去擴(kuò)展接口。

在這種設(shè)計(jì)中,串行口工作于方式0,數(shù)據(jù)的輸入輸出都通過RxD實(shí)現(xiàn),移位脈沖則由TxD發(fā)出。每次傳送一個(gè)字節(jié)數(shù)據(jù)。每輸出一個(gè)字節(jié)數(shù)據(jù),單片機(jī)自動(dòng)使串行中斷請(qǐng)求標(biāo)志TI置。通過測(cè)試該狀態(tài),即可確定該字節(jié)是否發(fā)送完畢。由硬件電路圖可知,74LS164是串行輸入并行輸出的移位寄存器。它具有兩個(gè)串行輸入端和8位并行輸出端(QA~QH)。

當(dāng)顯示數(shù)據(jù)從RxD端輸出到移位寄存器74LS164的輸入端AB時(shí),74LS164將串行數(shù)據(jù)轉(zhuǎn)換成8位輸出碼QA~QH,然后加到共陽極LED顯示器上。究竟在哪一位上顯示,還要P1口的狀態(tài)而定。當(dāng)某一位為低電平時(shí),該位LED顯示,其他位不顯示。由于接口電路中顯示模型輸出地址和位選信號(hào)可一次選中,故只要一次輸出即可顯示一位。

圖3.3 LED的顯示流程圖


第四章 總結(jié)
在設(shè)計(jì)中遇到不少困難,這對(duì)自己是一個(gè)考驗(yàn),剛開始拿到題目的時(shí)候頭緒并不是很多,通過查閱資料對(duì)整個(gè)系統(tǒng)有了一定的認(rèn)識(shí)。單片機(jī)的相關(guān)內(nèi)容在大三的課程學(xué)過,但是學(xué)得并不是很深,在設(shè)計(jì)前我重新學(xué)習(xí)了一遍單片機(jī)的知識(shí),包括芯片接口和51系列單片機(jī)的指令等。串行A/D轉(zhuǎn)換器ADC0832是新接觸的一種芯片,除學(xué)習(xí)芯片功能外,主要了解了對(duì)芯片串行輸出的控制,這里的軟件設(shè)計(jì)是一個(gè)難點(diǎn),我們這次用的是用PROTEI99繪圖軟件,我們以前學(xué)過但是學(xué)的不深這對(duì)我來說是個(gè)難點(diǎn),但是通過看書和同學(xué)老師的幫忙,使得我畫好了原理圖和PCB版的出圖。還有就是焊版,焊不好就無法顯示要的數(shù)據(jù),調(diào)試是最關(guān)鍵的時(shí)候,剛開始的時(shí)候沒有顯示,在修改程序的時(shí)候花了不少時(shí)間最后,終于顯示可以想要的結(jié)果。當(dāng)程序下載到焊版的時(shí)候,首先是顯示0000,如果改變滑動(dòng)變阻器時(shí),通過ADC0832就可以顯示不同的數(shù)據(jù),我做的首先是采集模擬量,然后顯示需要的數(shù)據(jù)。

我認(rèn)為我們專業(yè)學(xué)習(xí)硬件知識(shí)相對(duì)比軟件多,所以在軟件設(shè)計(jì)方面我還有很大不足。程序的設(shè)計(jì)經(jīng)過“學(xué)習(xí)–模仿–編寫–修改–再修改–定型”等階段,在軟件的學(xué)習(xí)上我也花了比較多的時(shí)間和精力,讓我欣慰的是收獲也很大。


附錄A

硬件原理圖


附錄B
  1. #include<reg51.h>
  2. #include<stdio.h>
  3. #include<math.h>
  4. #include <intrins.h>
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. #define ADC0832CH0 channel;
  8. //*********定義變量區(qū)*******************
  9. sbit clk_adc0832=P3^6;                                          //定義各個(gè)控制引腳
  10. sbit cs_adc0832=P2^0;
  11. sbit di_adc0832=P3^7;
  12. sbit do_adc0832=P3^7;
  13. sbit LED0_CS=P1^0;
  14. sbit LED1_CS=P1^1;
  15. sbit LED2_CS=P1^2;
  16. sbit LED3_CS=P1^3;
  17. sbit  adarm=P2^2;
  18. uchar code table[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};//0,1,2,3,4,5,6,7,8,9,off  //共陽極筆端碼
  19. uchar ch;   //采樣返回?cái)?shù)據(jù)
  20. //*********函數(shù)聲明區(qū)********************
  21. void tkey(void);            //鍵盤函數(shù)
  22. unsigned runADC0832(bit);    //A/D轉(zhuǎn)換
  23. void Delayms(uint x);    //延時(shí)顯示函數(shù)
  24. void Update_LED();           //LED顯示函數(shù)
  25. void LED_analyze();
  26. //**********主函數(shù)開始**********
  27. void main()
  28. {
  29. P0=0XFF;
  30. P1=0XFF;
  31. P2=0XFF;
  32. P3=0XFF;
  33. Uart_Init();
  34. TH0=0x3C;
  35. TL0=0xAF;
  36. ET0=1;   //開外部中斷0
  37. EA=1;    //全局中斷打開
  38. TR0=1;
  39. nCounter=0;
  40. Change_Flag=0;
  41. while(1)
  42. {
  43. void tkey(void);
  44. runADC0832();
  45. if(Change_Flag==1)
  46.   { Update_LED();
  47.   if(ch>9999)
  48.   ch=0;
  49.   printf("counter refreshed %d \n",ch);
  50.   }
  51. delay();
  52. /********矩鍵查尋鍵值4*4程序******/按鍵為P1.0---P1.7
  53. void Tkey(void)
  54. {
  55.   uchar readkey;//rereadkey;
  56.   uchar x_temp,y_temp;
  57.   P1=0x0f;
  58.   x_temp=P1&0x0f;
  59.   if(x_temp==0x0f) goto keyout;
  60.   P1=0xf0;
  61.   y_temp=P1&0xf0;
  62.   readkey=x_temp|y_temp;
  63.   readkey=~readkey;
  64. switch(readkey)
  65. {
  66. case 0x11:key=0; break;
  67. case 0x21:key=1; break;
  68.   case 0x41:key=2; break;
  69.   case 0x81:key=3; break;
  70.   case 0x12:key=4; break;
  71.   case 0x22:key=5; break;
  72.   case 0x42:key=6; break;
  73.   case 0x82:key=7; break;
  74.   case 0x14:key=8; break;
  75.   case 0x24:key=9; break;
  76.   case 0x44:key=10;break;
  77.   case 0x84:key=11;break;
  78.   case 0x18:key=12;break;
  79.   case 0x28:key=13;break;
  80.   case 0x48:key=14;break;
  81.   case 0x88:key=15;break;
  82.   default:  key=16;break;
  83.     }
  84. keyout:_nop_();
  85. }//**********A/D轉(zhuǎn)換子程序開始***************
  86. unsigned runADC0832(void)  //讀ADC0832函數(shù)
  87. {            
  88. uchar i=0;
  89.     uchar j;
  90.     uint dat=0;
  91.     uchar ndat=0;
  92.     if(channel==0)channel=2;
  93.     if(channel==1)channel=3;
  94.     ADDI=1;
  95.     _nop_();
  96.     _nop_();
  97.     ADCS=0;//拉低CS端
  98.     _nop_();
  99.     _nop_();
  100.     ADCLK=1;//拉高CLK端
  101.     _nop_();
  102.     _nop_();
  103.     ADCLK=0;//拉低CLK端,形成下降沿1
  104.     _nop_();
  105.     _nop_();
  106.     ADCLK=1;//拉高CLK端
  107.     ADDI=channel&0x1;
  108.     _nop_();
  109.     _nop_();
  110.     ADCLK=0;//拉低CLK端,形成下降沿2
  111.     _nop_();
  112.     _nop_();
  113.     ADCLK=1;//拉高CLK端
  114.     ADDI=(channel>>1)&0x1;
  115.     _nop_();
  116.     _nop_();
  117.     ADCLK=0;//拉低CLK端,形成下降沿3
  118.     ADDI=1;//控制命令結(jié)束
  119.     _nop_();
  120.     _nop_();
  121.     dat=0;
  122.     for(i=0;i<8;i++)
  123.     {
  124.         dat|=ADDO;//收數(shù)據(jù)
  125.         ADCLK=1;
  126.         _nop_();
  127.         _nop_();
  128.         ADCLK=0;//形成一次時(shí)鐘脈沖
  129.         _nop_();
  130.         _nop_();
  131.         dat<<=1;
  132.         if(i==7)dat|=ADDO;
  133.     }
  134.     for(i=0;i<8;i++)
  135.     {
  136.         j=0;
  137.         j=j|ADDO;//收數(shù)據(jù)
  138.         ADCLK=1;
  139.         _nop_();
  140.         _nop_();
  141.         ADCLK=0;//形成一次時(shí)鐘脈沖
  142.         _nop_();
  143.         _nop_();
  144.         j=j<<7;
  145.         ndat=ndat|j;
  146.         if(i<7)ndat>>=1;
  147.     }
  148.     ADCS=1;//拉高CS端
  149.     ADCLK=0;//拉低CLK端
  150.     ADDO=1;//拉高數(shù)據(jù)端,回到初始狀態(tài)
  151.     dat<<=8;
  152.     dat|=ndat;
  153.     return(dat);            //return ad k
  154. }
  155. void control(uchar d)  //數(shù)據(jù)個(gè)、十、百、千取數(shù)函數(shù)
  156. ch=ch%10000;
  157. AD_bcd[0] =ch/1000;
  158.   AD_bcd[1]=(ch/100)%10;
  159. AD_bcd[2] =(ch%100)/10;
  160.   AD_bcd[3]=(ch%100)%10;
  161.   update_disbuf();
  162. }
  163. void update_disbuf(void)    //對(duì)應(yīng)顯示的數(shù)據(jù)函數(shù)
  164. { P0=dis_code[AD_bcd[0]];
  165.   LED_0=0;
  166.   Delayms(10);
  167.   LED_0=1;
  168.   P0=dis_code[AD_bcd[1]];
  169.   LED_1=0;
  170.   Delayms(10);
  171.   LED_1=1;
  172.   P0=dis_code[AD_bcd[2]];
  173.   LED_2=0;
  174.   Delayms(10);
  175.   LED_2=1;
  176.   P0=dis_code[AD_bcd[3]];
  177.   LED_3=0;
  178.   Delayms(10);
  179.   LED_3=1;
  180. }
復(fù)制代碼

完整的Word格式文檔51黑下載地址:
基于單片機(jī)的智能壓力檢測(cè)系統(tǒng)的設(shè)計(jì).doc (1.11 MB, 下載次數(shù): 101)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:436452 發(fā)表于 2018-11-30 15:41 | 只看該作者
樓主有整個(gè)文件夾嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:394999 發(fā)表于 2019-4-10 09:03 | 只看該作者
仿真電路圖有嗎?能給我一下嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:97097 發(fā)表于 2019-9-26 14:54 | 只看該作者


學(xué)習(xí)學(xué)習(xí)備用
回復(fù)

使用道具 舉報(bào)

5#
ID:701369 發(fā)表于 2020-3-3 11:35 | 只看該作者
求電路圖親
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲乱码一区二区三区在线观看 | 在线视频第一页 | www.久久99| 久草网址 | 中文字幕一区二区三区乱码图片 | 国产精品国产三级国产aⅴ原创 | 91亚洲国产亚洲国产 | 久久精品男人的天堂 | 精品视频在线播放 | 日韩精品一区二区三区在线观看 | 99re热精品视频国产免费 | 国产区精品视频 | 视频一二区 | 神马福利 | 精品视频一区二区三区 | 一区二区三区四区五区在线视频 | 伊人久久综合 | 一区二区在线 | 国产亚洲一区二区三区 | 91丨国产 | 精品欧美一区二区中文字幕视频 | 国产在线一区二区 | 91免费版在线观看 | 欧美成人精品 | 手机看黄av免费网址 | 亚洲综合99 | 成人在线免费电影 | 国产精品欧美一区喷水 | 国产日韩免费视频 | 亚洲欧美激情精品一区二区 | 日日干干夜夜 | 欧美做暖暖视频 | 激情av网站| 91伊人 | 伊伊综合网 | 亚洲人成人一区二区在线观看 | 日韩精品一区二区三区中文字幕 | 精品欧美一区二区精品久久久 | 国产成人精品a视频一区www | 精品粉嫩aⅴ一区二区三区四区 | 操操日 |