




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘要在實(shí)際的工作中需要對(duì)現(xiàn)場(chǎng)的溫度、濕度、壓力、流量等各種工藝參數(shù)隨時(shí)進(jìn) 行采集、檢測(cè)和監(jiān)控,同時(shí)還要將采集到的數(shù)據(jù)及時(shí)傳遞給上位機(jī),以實(shí)現(xiàn)對(duì)參數(shù)的 隨機(jī)查詢,對(duì)信息的存儲(chǔ)與處理,及時(shí)調(diào)整控制方案,捉高生產(chǎn)效率和產(chǎn)品的質(zhì)量。 為此我們利用at89c51snd1單片機(jī)作為主控制器,設(shè)計(jì)了一個(gè)簡(jiǎn)單易行的數(shù)據(jù)采集系 統(tǒng)。我們的系統(tǒng)利用at89c51snd1的強(qiáng)大功能來實(shí)現(xiàn)對(duì)模擬信號(hào)的采集和輸出、顯示。 通過其口帶的ad轉(zhuǎn)換采集來口實(shí)際生活中的各種模擬信號(hào)(比如:溫度、壓力、還 有連續(xù)的蘆咅信號(hào)等),并且利用一個(gè)多路模擬開關(guān)cd4051可以實(shí)現(xiàn)多路數(shù)據(jù)的采 集。采集到的數(shù)據(jù)誤并小于0. 1%, 旦出現(xiàn)
2、故障且具有報(bào)警功能。在軟件設(shè)計(jì)過程中, 使用的編程工具是c語(yǔ)言,它可讀性強(qiáng),簡(jiǎn)單可靠。關(guān)鍵詞:數(shù)據(jù)采集c語(yǔ)言單片機(jī)abstractin the actual work, the scene temperature, the humidity, the pressure, the current capacity and each kind of craft parameter need to be carried on gathering, examinating and monitoring whenever needed. simultaneously, the gathered data
3、 is promptly transmitted to the position machine, so as to realize stochastically inquiry to the parameter, process and memorize with the information, adjust the control plan promptly, and enhance the production efficiency and the product quality. thus, we use the at89c51snd1 microprocessor control
4、unit as the host controller to have designed a design a simple and feasible data acquisition system. our system realizes gathering and the output, the display of the simulated signal with formidable function of the at89c5 isndl.it gathers each kind of simulated signal (for instance: the temperature,
5、 the pressure, the continual sound signal and so on ) of the practical life with the ad transformation. it also can realize multichannel data gathering with a multichannel analog switch cd4051. the gathered data error is smaller than 0.1%, once it appears the break soon makes the police function wor
6、k. in the software design process, the programming tool is the c language it has strongly readability, and it's simple and reliable.keywords: data acquisition c language mcu引言11概述211本課題研究的背景和意義21. 2本課題的任務(wù)和要求31. 3課題設(shè)計(jì)總體方案的確定32數(shù)據(jù)采集系統(tǒng)的組成與基本原理52. 1數(shù)據(jù)采集系統(tǒng)的基本紐成52. 2數(shù)據(jù)采集系統(tǒng)的工作原理92. 3數(shù)據(jù)采集系統(tǒng)的硬件框圖23數(shù)據(jù)采集系統(tǒng)的
7、軟件設(shè)計(jì)23.1主程序流程圖及說明23. 2初始化顯示了程序的編程73.3 lcd數(shù)據(jù)顯示程序的編程93. 4鍵盤模塊的編程124數(shù)據(jù)采集系統(tǒng)的調(diào)試134.1主程序功能的調(diào)試134. 2 lcd顯示程序的調(diào)試144. 3鍵盤功能的調(diào)試14致謝15附錄16m寸錄a16p付錄b16m寸錄c16參考文獻(xiàn)17引言在工業(yè)生產(chǎn)過程中,為了保證系統(tǒng)的安全止常運(yùn)行以及實(shí)時(shí)的監(jiān)控與檢測(cè)但在 實(shí)際工作現(xiàn)場(chǎng)中要做到實(shí)時(shí)監(jiān)測(cè)卻很難,這要用到數(shù)據(jù)采集系統(tǒng)。數(shù)據(jù)釆集系統(tǒng)的主要功能是把檢測(cè)到的來口生產(chǎn)過程中的各種模擬信號(hào)變成數(shù) 字信號(hào),并進(jìn)行分析、處理、存儲(chǔ)和顯示。在過去30到40年以來數(shù)據(jù)采集技術(shù)已經(jīng) 取得了很大的飛躍。
8、舉例來說,在40年以前,在一個(gè)著名的學(xué)院實(shí)驗(yàn)室中,為追蹤用 青銅做的土ii圳中的溫度上升情況的裝置是由熱電偶、繼電器、杳詢臺(tái)、一捆紙和一支 鉛筆。今天的大學(xué)學(xué)生很可能在pc機(jī)上口動(dòng)處理和分析數(shù)據(jù),有很多種可供你選擇的 方法去采集數(shù)據(jù)。至于選擇哪一種方法取決于多種因素,包扌舌任務(wù)的復(fù)雜度、你所需 要的速度和精度、你想要的證據(jù)資料等等。無論是簡(jiǎn)單的還是復(fù)雜的,數(shù)據(jù)采集系統(tǒng) 都能夠運(yùn)行并發(fā)揮它的作用。隨著技術(shù)的發(fā)展,通過電了設(shè)備,數(shù)據(jù)采集的已經(jīng)得到簡(jiǎn)化和變得比較精確、 多用途和可靠。設(shè)備從簡(jiǎn)單的存儲(chǔ)器發(fā)展到復(fù)雜的電腦系統(tǒng)。數(shù)據(jù)采集產(chǎn)品像聚焦點(diǎn) 一樣為系統(tǒng)服務(wù),和一系列產(chǎn)品一起,諸如傳感器顯示溫度、水
9、流、程度或者過程。 但數(shù)據(jù)采集系統(tǒng)最重要的部分還是控制器部分和數(shù)據(jù)采集部分。為此,我們以at89c51snd1c單片機(jī)作為主控制器設(shè)計(jì)了一種簡(jiǎn)單易行的數(shù)據(jù) 采集系統(tǒng)。1概述1.1本課題研究的背景和意義在實(shí)際工業(yè)生產(chǎn),生產(chǎn)工作現(xiàn)場(chǎng),往往為了生產(chǎn)安全等需耍,要對(duì)工作參數(shù)如 溫度、電壓、液位、聲咅等進(jìn)行實(shí)時(shí)檢測(cè)與監(jiān)控,但由于工作現(xiàn)場(chǎng)條件差,數(shù)據(jù)動(dòng)態(tài) 性等原因,要做到實(shí)時(shí)監(jiān)測(cè)往往很難。為解決這一問題可以先將現(xiàn)場(chǎng)的工作參數(shù)進(jìn)行實(shí)時(shí)采集,然后再通過數(shù)據(jù)通信 方式將采集到的數(shù)據(jù)傳送到遠(yuǎn)端的主控室。這就耍用到數(shù)據(jù)采集系統(tǒng)。數(shù)據(jù)采集系統(tǒng)就是將模擬信號(hào)經(jīng)ad轉(zhuǎn)換后,進(jìn)行信號(hào)處理,最后經(jīng)da轉(zhuǎn)換器 將數(shù)字信號(hào)轉(zhuǎn)換為
10、模擬信號(hào)輸出。數(shù)字采集系統(tǒng)的簡(jiǎn)單框圖如卜圖圖11所示。圖1-1數(shù)據(jù)采集簡(jiǎn)單框圖由單片機(jī)作為控制單元的數(shù)據(jù)采集系統(tǒng)的工作過程可以分為以下幾個(gè)步驟:數(shù) 據(jù)采集是將被測(cè)量參數(shù)的信號(hào)轉(zhuǎn)換為能夠識(shí)別的信號(hào)并輸入給單片機(jī);數(shù)據(jù)處理是由 單片機(jī)執(zhí)行算法,得到與被測(cè)量相對(duì)應(yīng)的數(shù)字信號(hào);數(shù)據(jù)輸岀是將處理結(jié)果送到輸岀 設(shè)備進(jìn)行顯示、存儲(chǔ)等操作。在生產(chǎn)實(shí)踐和科學(xué)研究中,采集的數(shù)據(jù)往往都是犬量的。而從數(shù)據(jù)采集的角度 來看,進(jìn)行整個(gè)系統(tǒng)的全部數(shù)據(jù)采集需耍教多的吋間,會(huì)降低系統(tǒng)的實(shí)吋性。從這個(gè) 系統(tǒng)而言,如何提高系統(tǒng)的可靠性是關(guān)鍵所在,所以必須在硬件設(shè)計(jì)、芯片選擇和軟 件編程等方面綜合考慮,以滿足實(shí)際系統(tǒng)對(duì)系統(tǒng)可靠性、實(shí)
11、時(shí)性的耍求。1. 2本課題的任務(wù)和要求通過學(xué)習(xí)單片機(jī)c51語(yǔ)言的基本知識(shí),熟悉開發(fā)環(huán)境keilc和和flip使用,掌 握at89c51snd1c單片機(jī)的基本特性,設(shè)計(jì)基于at89c51snd1c單片機(jī)的數(shù)據(jù)采集系統(tǒng)。 雖然我使用的單片機(jī)和8051系列可以兼容,但是他的相當(dāng)強(qiáng)大的功能以及軟件設(shè)計(jì) 過程屮要求使用的是c語(yǔ)言編程,使得在設(shè)計(jì)中要先立足對(duì)基礎(chǔ)認(rèn)識(shí)的學(xué)習(xí)和掌握, 并月要對(duì)畢業(yè)設(shè)計(jì)的實(shí)驗(yàn)板jmb1e學(xué)習(xí)板有相當(dāng)程度的掌握,這樣也使設(shè)計(jì)工作更繁 重。不過這樣對(duì)我以后的工作是一個(gè)鍛煉。在進(jìn)行設(shè)計(jì)前要先對(duì)數(shù)據(jù)采集系統(tǒng)軟件設(shè) 計(jì)的開發(fā)環(huán)境進(jìn)行了解。1、數(shù)據(jù)釆集。在數(shù)據(jù)采集模塊,主要采集直流信號(hào),經(jīng)
12、過一個(gè)簡(jiǎn)單的濾波,如 平均值濾波。然后把采集的數(shù)值存儲(chǔ)起來??梢酝ㄟ^按鍵和通過串口把數(shù)據(jù)主動(dòng)或由 上位機(jī)通過命令索要把采集數(shù)據(jù)傳遞上去,ad采集部分采用at89c51snd1c內(nèi)部自帶 ad,但耍采集多路數(shù)據(jù),因此需要另增加一個(gè)多路模擬開關(guān)(cd4051) o由于這部分 采用cpu內(nèi)部自帶的ad,所以比較簡(jiǎn)單,定時(shí)采集,多次采集求一次平均,如采集8 次平均得到一次的采集值,然后把采集的值放在數(shù)據(jù)存儲(chǔ)器屮保存起來。2、液晶顯示。主要用來采集當(dāng)前采集的數(shù)據(jù),并月可以通過按鍵設(shè)定需要完成 的功能,液品顯示模塊選用的cm12232液品顯示屏。這部分程序主要完成對(duì)數(shù)字和漢 字的顯示包括字庫(kù)的編寫。3、鍵
13、盤。采用定時(shí)器實(shí)現(xiàn),定時(shí)掃描鍵盤,發(fā)現(xiàn)冇按鍵按下執(zhí)行相應(yīng)的鍵盤功 能設(shè)定數(shù)據(jù)采集,并通過rs-232和usb完成通信。4個(gè)功能鍵依次是確定鍵、返回鍵、 加一鍵和移位鍵。4、rs-232通信,完成與電腦的通信。(可在完成數(shù)據(jù)采集的基礎(chǔ)上選作)1. 3課題設(shè)計(jì)總體方案的確定數(shù)據(jù)采集的主要功能是把檢測(cè)到的來口牛產(chǎn)過程中的各種模擬信號(hào)變成數(shù)字信 號(hào),并精心分析、處理、存儲(chǔ)和顯示。該數(shù)據(jù)采集系統(tǒng)的總體設(shè)計(jì)包描以下兒個(gè)部件, 詳見表l-lo多路模擬開關(guān)cd4051單片機(jī)主要芯片:at89c51snd1c (含鍵盤和ad轉(zhuǎn)換)閃存:擴(kuò)展的flash閃存(k9d5608);顯示:lcd 顯示(cm 12232
14、)電源:釆用的是雙電源驅(qū)動(dòng)(電池驅(qū)動(dòng)和mac586):通訊方式:采用rs232通訊接口表1-1數(shù)據(jù)采集系統(tǒng)部件表在木設(shè)計(jì)方案中最重要的核心元件就是at89c51snd1,該芯片兼自鍵盤和ad 轉(zhuǎn)換功能。下面對(duì)這一芯片進(jìn)行簡(jiǎn)單介紹。方案中系統(tǒng)芯片at89c51snd1 口帶ad轉(zhuǎn)換模塊,外加一個(gè)8路的模擬開關(guān) cd4051 o顯然采用系統(tǒng)口帶的ad轉(zhuǎn)換模塊給設(shè)計(jì)帶來方便。而且at89c51snd1 功能非常強(qiáng)大。atmel公司生產(chǎn)的at89c51snd1這款芯片是專門為mp3而設(shè)計(jì)的單片機(jī)芯片。其 主要特點(diǎn)是內(nèi)部集成了 mpeg2解碼器和usb通訊接口,內(nèi)含64k的內(nèi)部程序存儲(chǔ)器, 支持在系統(tǒng)編
15、輯isp功能,通過usb或者串行口對(duì)芯片進(jìn)行編程操作,內(nèi)部數(shù)據(jù)存儲(chǔ) 器為2056字節(jié)。它最高支持20mhz的工作頻率,工作電壓為3v,內(nèi)部集成的mpeg2 解碼功能支持48, 44. 1, 32, 24, 22. 05及16赫茲的釆樣序列,可直接與dac咅頻 轉(zhuǎn)換芯片連接,支持usb1. 1協(xié)議全速引擎,并提供和應(yīng)的鍵盤中斷、ide/ata、tpi /mmc 及isp接口。由此可見其功能十分強(qiáng)大。通過這次畢業(yè)設(shè)計(jì)可以對(duì)這一芯片進(jìn)行一定 的了解,這一單片機(jī)芯片的典型應(yīng)用主要是有4個(gè)方面。(1)mp3播放器;(2) pda, 照相機(jī),mp3移動(dòng)電話;(3)汽車多媒體mp3; (4)家庭多媒體mp3
16、。2數(shù)據(jù)采集系統(tǒng)的組成與基本原理2. 1數(shù)據(jù)采集系統(tǒng)的基本組成該系統(tǒng)主要包括5個(gè)部分。分別是數(shù)據(jù)采集模塊、顯示模塊、鍵盤功能模塊、 串口通信模塊和報(bào)警部分。數(shù)據(jù)采集模塊:它主要包括多路模擬開關(guān)、ad轉(zhuǎn)換、flash存儲(chǔ)器和控制單 元。在該數(shù)據(jù)采集系統(tǒng)中選用的是多路開關(guān)是cd4051 ,轉(zhuǎn)換部分采用的是 at89c51snd1內(nèi)部口帶的2路ad采集通道°at89c51snd1具有2路10位ad轉(zhuǎn) 換接口,基本上由通道選擇、采樣保持電路、逐次逼近邏輯、梯形電阻dac轉(zhuǎn)換器、 比較器和控制邏輯等構(gòu)成。ad接口框圖如圖2-1所示:adcon 5addon.3aden | | adsst1ad
17、con .4adccontrol adeoc hclock -/adcinterruptrevestaddhrsarr.7r dac arefp arefn1023adda型vrefadcsadcgn.orl eadcen13:sample and hold;addl圖2-1、ad電路框圖ad轉(zhuǎn)換接口具有aino、ain1兩個(gè)模擬電壓輸入引腳,這兩個(gè)通道由adcon寄 存器的adcs位來選擇。還有arefp、arefn兩個(gè)參考電壓輸入引腳,其中arefn負(fù) 參考引腳內(nèi)部和gnd連接,所以aino和ain1輸入的電壓是對(duì)地的。arefp止參考 端電壓vrcf限定最大可轉(zhuǎn)換的模擬電壓值,也就是ai
18、)輸入的模擬電壓vin的最大 值,當(dāng)vin=vrcf時(shí)ad轉(zhuǎn)換的結(jié)果是10位二進(jìn)制的最大值1023。這樣可以確保采 集精度小于0. 1%。圖中adc clock是ad轉(zhuǎn)換電路的時(shí)鐘,來口于單片機(jī)的外圍電路時(shí)鐘per clocko在xi模式卜,per clock是晶體振蕩頻率的2分頻。per clock經(jīng)過2分 頻后,再按adclk寄存器指定的分頻系數(shù)進(jìn)行分頻便得到adcclocko因此可通過adclk寄存器來配置ad轉(zhuǎn)換器的時(shí)鐘,決定其轉(zhuǎn)換時(shí)間,影響最大轉(zhuǎn)換速率。adclk 寄存器的分頻系數(shù)adcd有效5位,取值范圍031。但如果adcd為0,則和adcd為 32時(shí)效果相同。多路模擬開關(guān)使用的
19、是cd4051 o cd4051是微機(jī)控制系統(tǒng)中廣泛使用的八選一 模擬開關(guān),具有雙向傳輸性能。直流供電電壓電源為+5v到+15v,輸入電壓所能傳送 的數(shù)字信號(hào)電位變化范圍為3到15v,模擬信號(hào)的峰峰值為15v。其引腳、功能如圖 2-2所示。1n/dutut/inin/qutinhvcevss/ 4116215c3 d14440135511261171089vdd1 jn/out0 fa圖2.2cd4051引腳圖cd4051是由邏輯電平轉(zhuǎn)化,二進(jìn)制譯碼器及八個(gè)開關(guān)電路組成。c、b、a為 二進(jìn)制控制輸入端,改變c、b、a的數(shù)值(從000-111),二進(jìn)制譯碼器可譯岀8種 狀態(tài),并選出其屮的一個(gè)通道
20、,使輸入與輸出接通。以上轉(zhuǎn)換過程是在允許輸入端控 制下進(jìn)行的,當(dāng)inh=1時(shí),通道全斷開,到inh=0時(shí),其中一個(gè)通道接通。其真值 表如表2-1所示。改變in/out和out/in的接法可以完成“多到1 ”或“ 1到多"的 轉(zhuǎn)換。輸入狀態(tài)接通通道號(hào)輸入狀態(tài)接通通道號(hào)1nhcb acd4051inhcb acd405100000#01004#00011#01015#00102#01106#00113#01117#表2-1 cd4051真值表鍵盤功能模塊:at89c51snd1單片機(jī)具冇鍵盤接口,包括4個(gè)鍵盤輸入引腳, 可接4個(gè)獨(dú)立按鍵或者擴(kuò)展矩陣鍵盤。在擴(kuò)展為矩陣鍵盤吋還需要另外4個(gè)i
21、o端口 作掃描用,但只需在鍵盤中斷產(chǎn)生后掃描一個(gè)循環(huán)。鍵盤功能包括“加一鍵”、“移 位鍵”、“設(shè)定鍵”和“確定鍵”共4個(gè)按鍵,分別對(duì)應(yīng)單片機(jī)的4個(gè)鍵盤輸入引 腳。鍵盤的引腳對(duì)應(yīng)關(guān)系和屯路原理圖如圖2-3和圖2-4所示。s1kinokin1kin2kin3kinokin1kin2kin3456pl.o/kinop1.1/kin1p1.2/ktn2p1.3/ktn3圖23鍵盤電路kinokin1kin2kin31en 1.4圖2-4鍵盤接口電路框圖4個(gè)鍵盤輸入引腳可以看作是4個(gè)獨(dú)立的屮斷源,但他們共享一個(gè)中斷向量。ien1.4位即ekb是鍵盤中斷的總使能位,由于at89c51snd1的中斷向量比較
22、多, 所以中斷使能寄存器是ien0和ien1兩個(gè),其中ien0和普通51單片機(jī)的ie寄存器 基本一致。鍵盤接口有兩個(gè)sfr:鍵盤控制寄存器kbcon和鍵盤狀態(tài)寄存器kbstaokbcon的高4位kinl3:0設(shè)置鍵盤輸入引腳的有效檢測(cè)電平,本系統(tǒng)設(shè)置低電 平有效;低4位kinm3:0是4個(gè)鍵盤輸入引腳的獨(dú)立屏蔽位,可以單獨(dú)設(shè)定某個(gè)引腳 是否為鍵盤輸入,不作為鍵盤輸入的引腳(通過kinmx屏蔽掉)還可以作為10端口 使用。kbsta的低4位kinf3:0實(shí)際上是4個(gè)鍵盤屮斷源的屮斷標(biāo)志位,當(dāng)有輸入 引腳岀現(xiàn)有效電平時(shí),對(duì)應(yīng)標(biāo)志位置位。鍵盤中斷可以認(rèn)為是邊沿觸發(fā)的外部屮斷, 并且讀取kbsta寄存
23、器時(shí)自動(dòng)清除標(biāo)志位。單片機(jī)響應(yīng)鍵盤中斷后,在中斷服務(wù)程 序屮讀取kbsta并判斷是具體哪個(gè)按鍵引起的中斷并作出相應(yīng)動(dòng)作。lcd顯示模塊:lcd液晶屏擴(kuò)展模塊。本學(xué)習(xí)板配套的cm12232圖形點(diǎn)陣液晶屏 是接在擴(kuò)展插座上的,占用p1.o1.7和p4 口。lcd擴(kuò)展接線如圖2-5所示。圖2-5 lcd擴(kuò)展模塊接線圖lcd型號(hào)是cm12232兼容點(diǎn)陣圖形stn液晶屏,是一個(gè)獨(dú)立的模塊。其分辨率是 水平122個(gè)點(diǎn),垂直分兩組共32個(gè)點(diǎn),可以顯示兩行漢字或四行英文字母,也可以顯 示簡(jiǎn)單的圖形。12231型lcd模塊包含兩個(gè)驅(qū)動(dòng)掃描芯片,分別工作于主、從狀態(tài)。 每個(gè)芯片有獨(dú)立的使能端,但其他控制信號(hào)并聯(lián)。
24、每個(gè)芯片有61根列線和16根行線, 通過主從芯片z間的時(shí)序控制,使得它們可以協(xié)作完成對(duì)122根列線和32根行線的掃 描動(dòng)作。由于兩個(gè)芯片的這種接口,在訪問lcd的時(shí)候必須分別或同時(shí)將命令或數(shù)據(jù) 寫到指定芯片屮。比如,需耍兩個(gè)芯片都執(zhí)行的控制命令,可以同時(shí)使能e1和e2; 而寫入顯示數(shù)據(jù)時(shí)則必須分清所寫字節(jié)是要寫到哪個(gè)芯片,這由該字節(jié)數(shù)據(jù)所對(duì)應(yīng)的 顯示點(diǎn)陣信息所在的區(qū)域決定。而且,作為整個(gè)屏幕來說,我們認(rèn)為從左到右應(yīng)該為 從0到121的象素坐標(biāo)排列,但對(duì)于每個(gè)芯片而言都是從0至ij60的范帀,也就是說驅(qū) 動(dòng)程序需要完成這樣的轉(zhuǎn)換。另外還有串行通訊模塊和報(bào)警功能模塊。這里不是本設(shè)計(jì)的重點(diǎn)不再做詳細(xì)
25、介 紹。2. 2數(shù)據(jù)采集系統(tǒng)的工作原理多路數(shù)據(jù)實(shí)時(shí)監(jiān)控系統(tǒng)常用于口動(dòng)化工業(yè)生產(chǎn)或大型設(shè)備(如激光器)中,經(jīng) 常需要對(duì)生產(chǎn)過程或運(yùn)行狀態(tài)的各種工作參數(shù)(如壓力、溫度、流量、電壓、電流等) 實(shí)時(shí)的巡冋檢測(cè)、監(jiān)視并報(bào)警,以確保系統(tǒng)的穩(wěn)定可靠性。該系統(tǒng)主要是利用at89c51snd1作為數(shù)據(jù)采集系統(tǒng)的主控制器,通過ad采 集模塊對(duì)外界的模擬信號(hào)進(jìn)行采集和處理,通過鍵盤功能將采集到的數(shù)據(jù)顯示在液晶 模塊cm 12232上,對(duì)被采集的數(shù)據(jù)進(jìn)行上限設(shè)置,一旦高于設(shè)定值將會(huì)報(bào)警。at89c51snd1是該數(shù)據(jù)采集系統(tǒng)中的核心部件,at89c51snd1是atmel公 司的基于8位c51核的單片機(jī),與at89c
26、51等8051單片機(jī)兼容。該芯片共80引 腳,封裝為tqfp80,就是四邊各20引腳的貼片封裝。at89c51snd1內(nèi)部主要資 源見圖2-6:圖2-6 at89c51snd1內(nèi)部架構(gòu)框圖at89c51snd1的引腳使用情況分類說明如下:1)鍵盤中斷輸入引腳ktn0vktn3,和pl. 0>1. 3復(fù)用。外接4個(gè)鍵盤作為數(shù)據(jù) 采集控制端口。鍵盤電路見圖2-32) 時(shí)鐘電路filt、0scx1和0scx2o接在filt引腳的阻容網(wǎng)絡(luò)是單片機(jī)內(nèi)部 pll鎖相環(huán)的濾波電路,以給usb和mp3部件提供更高的頻率。0scx1和0sc2外接晶 體振蕩器,為系統(tǒng)提供基本的20m時(shí)鐘。3) adc電路引
27、腳arefp、arefn、a1n0和ain1。這些引腳主要用在外接輸入模 擬信號(hào),用一個(gè)5芯插排引出,以供用戶使用。如圖2-6所示,其屮arefn已經(jīng)接 地。avdd33 |11areep12ain03ain14gnd |52-6 adc部分引腳圖2.3數(shù)據(jù)采集系統(tǒng)的硬件框圖該數(shù)據(jù)采集系統(tǒng)的硬件框圖如下圖2-7所示,硬件原理圖詳見附錄b。圖2-7系統(tǒng)原理框圖3數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)3.1主程序流程圖及說明下面介紹該數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)。并對(duì)設(shè)計(jì)進(jìn)行說明。主流程圖如圖3-1所示:圖3-1數(shù)據(jù)采集主程序流程圖說明:主程序流程圖主要用來實(shí)現(xiàn)整個(gè)程序的初始化部分,及部分功能程序的掃描完成,如完成對(duì)鍵
28、盤按鍵有無按下的掃描、串口通信接收數(shù)據(jù)的掃描、串口發(fā)送數(shù)據(jù)標(biāo)志的掃描。以下簡(jiǎn)單介紹各部分功能程序的實(shí)現(xiàn)思想及部分子程序流程圖。1、鍵盤掃描在定時(shí)器0屮使用定時(shí)10ms掃描,如果發(fā)現(xiàn)有按鍵按下,將此按鍵 編碼存儲(chǔ)起來,在接下來的一次掃描如果得到的編碼與上次-樣,說明的卻有按鍵按 下,如果不一樣或掃描不到按鍵按下,就認(rèn)為是鍵盤抖動(dòng),無需處理,將鍵碼扔掉。 如果發(fā)現(xiàn)有按鍵按下,在主循環(huán)屮掃描有按鍵按下執(zhí)行鍵盤功能程序。中斷入口鍵盤延時(shí)公抖動(dòng)讀鍵盤10 口中斷返回圖3-2鍵盤中斷子程序流程圖2、ad傳換。在數(shù)據(jù)采集系統(tǒng)中,ad傳換是其中重要的一個(gè)部分。因?yàn)橹粌油?過它才能對(duì)實(shí)際數(shù)據(jù)進(jìn)行傳換,轉(zhuǎn)換成數(shù)字
29、信號(hào)后,才能被計(jì)算機(jī)識(shí)別。下而就是ad 轉(zhuǎn)換部分的說明和介紹。ad轉(zhuǎn)換電路用到的寄存器有adcon、adclk、addh和addl共4個(gè)。adc0n控制 寄存器的aden位使能ad轉(zhuǎn)換電路,iflj adsst位則啟動(dòng)一次轉(zhuǎn)換過程。編程ad轉(zhuǎn)換 接口的大致流程是:1)配置adclk寄存器的adcd分頻系數(shù)值,mp3學(xué)習(xí)板品振為20m, adcd值不 能太小否則傳換結(jié)呆容易出錯(cuò)。2)置位adc0n寄存器的aden位使能ad轉(zhuǎn)換電路并等待幾個(gè)微秒的延遲時(shí)間; 由adcs位選擇通道,adcs-0為通道1, a1n1冇效,反z adcs=1則為通道0, a1n0冇 效;置位adsst位,啟動(dòng)轉(zhuǎn)換過程。
30、3)ad轉(zhuǎn)換結(jié)束后adc0n寄存器的ade0c標(biāo)志位由硬件置位,表示轉(zhuǎn)換結(jié)呆可讀。 ade0c標(biāo)志位必須由軟件清零。如果屮斷使能寄存器1en1的eadc位置位(允許adc 中斷),adeoc標(biāo)志位可以產(chǎn)生屮斷。當(dāng)然,程序中也可以查詢adeoc標(biāo)志位來判斷 轉(zhuǎn)換是否結(jié)束,如果adeoc置位則可以讀取保存在寄存器addh和addl的轉(zhuǎn)換結(jié)果。 addh是轉(zhuǎn)換結(jié)果的高8位,addl的低2位是轉(zhuǎn)換結(jié)果的最低2位。查詢到adeoc置 位后必須由軟件將其清零。編寫一個(gè)配置,使能ad轉(zhuǎn)換接口的程序,循環(huán)連續(xù)啟動(dòng)ad轉(zhuǎn)換并顯示結(jié)果的程 序。這部分代碼參考及流程圖如下:adclk = oxof; /設(shè)置adc的
31、時(shí)鐘分頻系數(shù)adcon |= aden; /使能 adcfor(i=0;i<5;i+);adcon |= adcs; /選擇通道 0/ adcon gadcs; /選擇通道 1while (1)/ adcon |= ad1dl; /轉(zhuǎn)換期間掛起cpu核adcon |= adsst; /啟動(dòng)轉(zhuǎn)換while(! (adcon & adeoc) ; /等待轉(zhuǎn)換結(jié)束adcon &二adeoc; /軟件清除結(jié)束標(biāo)志adcvalue = addh;printuc v); /清除顯示行內(nèi)容并回車printuf c'a/d = %drz,, adc value) ; /顯示轉(zhuǎn)換結(jié)
32、果并回車(adc_value>128)?(led = 0) : (led = 1) ;/如果大于 128 點(diǎn)亮 leddelayo ; /延時(shí)控制采集頻率在程序中從串口顯示字符串以乜回車符結(jié)束,而不是換行符',這樣可 以看到在同一位置顯示數(shù)據(jù)的效果。為了取得好的顯示效果,采集頻率不要太快,以 免超級(jí)終端顯示閃爍。另外,如果ad轉(zhuǎn)換結(jié)果大于128將點(diǎn)亮led,反之熄滅。注 意,ad轉(zhuǎn)換接口的有效結(jié)果只有8位,也就是說只需讀取addh即可,這樣程序也方 便處理和顯示。adcon寄存器是不可位尋址的,所以不能直接置位或清零adsst等位。程序屮都 是通過位運(yùn)算完成對(duì)某一位的改變的。首先
33、按照adcon寄存器的位說明來定義各位名 稱的宏:sdefine ad1dl 0x40sdefine aden 0x20sdefine adeoc 0x10sdefine adsst 0x08sdefine adcs 0x01這樣的宏定義實(shí)際上指明了各位名稱對(duì)應(yīng)的位掩碼,例如aden定義成0x20是因 為aden是adcon寄存器的第5位,該位掩碼是00100000b即0x20。有了這樣的宏定 義,我們要置位aden位就可以用adcon | = aden;來完成;而清除adeoc位可以用adcon &= adeoc;來完成。許多類似的程序都可以這樣實(shí)現(xiàn)對(duì)不可位尋址寄存器某位的置位 或清
34、零。圖3-3 ad轉(zhuǎn)換流程圖3、定時(shí)器中斷定時(shí)器中斷主要用來工作狀態(tài)指示,報(bào)警指示和定時(shí)啟動(dòng)ad轉(zhuǎn)換,其程序流程圖如下:圖3-4 to定時(shí)屮斷子程序流程圖3. 2初始化顯示子程序的編程在該數(shù)據(jù)采集系統(tǒng)中,顯示芯片用的是cm 12232,前面已對(duì)該芯片作過介紹,這 里不在進(jìn)行描述,只對(duì)要顯示的功能進(jìn)行說明。開機(jī)進(jìn)行初始化操作,顯示液晶屏開 機(jī)顯示“姓名學(xué)號(hào)”如“魏方合32”。在顯示數(shù)據(jù)之前首先要做的是顯示初始化, 參考代碼如下:void lcd_init() unsigned char i,j;sendcommand(lcdcomd_disoff);sendcommand(lcdcomd_sta
35、ticoff); sendcommand(lcdcomd_duty32); /必須指定32位顯示模式,32行掃描。sendcommand(lcdcomd_adccw);sendcommand(lcdcomd_disoff);sendcommand(lcdcomd_reset); /start line=0,segment addr=o,page addr=() sendcommand(lcdcomd_dison);只有做了以上工作才可以根據(jù)lcd寫數(shù)據(jù)的時(shí)序,編寫程序。發(fā)送數(shù)據(jù)的參考代 碼如下:void senddata(unsigned char seg,unsigned char page
36、,unsigned char dots) /seg is from 0 to 121 and page is from 0 to 3.page=3-page; 將 page 反轉(zhuǎn)sendcommand(lcdcomd_pageaddripage);/發(fā)送命令指定 pageif (seg<61)/如果邏輯地址小于61則將數(shù)據(jù)送到從芯片 seg=60-seg; /反轉(zhuǎn)段地址sendcommand(lcdcomd_segaddriseg);/ 發(fā)送命令指定段地址lcd_di=1;lcd_rw =0;lcd_bus =dots;lcd_e2=1;lcddelayo;lcd_e2 =0;lcdde
37、layo;else /如果邏輯地址大于61則將數(shù)據(jù)送到主芯片seg=121-seg; /反轉(zhuǎn)段地址,主芯片實(shí)際地址依然61到0sendcommand(lcdcomd_segaddriseg);lcd_di=1;lcd_rw =0;lcd_bus =dots;lcd_e1 =1;lcddelayo;lcd_e1 =0;lcddelayo;lcd_bus=oxff;該函數(shù)的參數(shù)分別指定所寫字節(jié)的段、頁(yè)地址和點(diǎn)陣內(nèi)容。參照前面給出的地址 表,該函數(shù)將指定的邏輯段、頁(yè)的值轉(zhuǎn)換成lcd芯片的實(shí)際地址。有了以上的準(zhǔn)備工作后,要想顯示字符還不夠,還需要冇字符的點(diǎn)陣字模。也就 是要將代表該字符的點(diǎn)陣信息保存為
38、數(shù)據(jù)。并11要建立漢字和字符庫(kù),以便程序調(diào)用。 比如顯示“魏”字要通過字模板寫岀對(duì)應(yīng)的數(shù)組,根據(jù)程序需要,寫入庫(kù)中。0x12,0x54,0x58,ox7f,0x98,0x94,0x10,ox3f,0x25,0x65,oxbf,0x25,0x25,ox3f,0x00,0 xoo,0x42,0x52,oxec,0x48,0x74,0x40,0x02,0x04,0x18,oxeo,0x00,oxfe,0x32,0x52,0x36,0 xoo,以上代碼就是魏字的編寫代碼。當(dāng)然如果定義的頁(yè)地址和列地址不同,上述代碼 也不同。3. 3 lcd數(shù)據(jù)顯示程序的編程lcd顯示主要是為了對(duì)遠(yuǎn)端的實(shí)際工作參數(shù)進(jìn)行現(xiàn)
39、場(chǎng)監(jiān)控,以便控制需要,一旦 出現(xiàn)故障及時(shí)發(fā)現(xiàn),及時(shí)處理。借用ad轉(zhuǎn)換器以及單片機(jī)的高速處理數(shù)據(jù)特點(diǎn)就可 以實(shí)現(xiàn)需要。在該數(shù)據(jù)采集系統(tǒng)中,顯示當(dāng)前釆集值,并通過鍵盤設(shè)定采集閥值和 運(yùn)行數(shù)據(jù)采集。一旦出現(xiàn)故障(超出設(shè)定值),將執(zhí)行報(bào)警。lcd數(shù)據(jù)顯示程序的部分代碼如下所示:(1) 、初始化:void lcd_init() unsigned char i,j;sendcommand(lcdcomd_disoff);sendcommand(lcdcomd_staticoff);sendcommand(lcdcomd_duty32);sendcommand(lcdcomd_adccw);sendcomm
40、and(lcdcomd_disoff);sendcommand(lcdcomd_reset); /start line=0,segment addr=o,page addr=osendcommand(lcdcomd_dison);for(i=0;i< 122;i+)for(j=0;j<4;j+)senddata(i,j,oxoo);(2) 、清屏顯示void cleandis()uchar i,j;for(i=0;i< 122;i+)for(j=0;j<4;j+)senddata(i,j,oxoo);(3) 、發(fā)送數(shù)據(jù)代碼void senddata(unsigned c
41、har seg,unsigned char page,unsigned char dots)/seg is from 0 to 121 and page is from 0 to 3.page=3-page;sendcommand(lcdcomd_pageaddripage);訐(seg<61) seg=60-seg;sendcommand(lcdcomd_segaddriseg);lcd_di=1;lcd_rw =0;lcd_bus =dots;lcd_e2=1;lcddelayo;lcd_e2 =0;lcddelayo;elseseg=121-seg;sendcommand(lcdc
42、omd_segaddriseg);lcd_di=1;lcd_rw =0;lcd_bus =dots;lcd_e1 =1;lcddelayo;lcd_e1 =0;lcddelayo;lcd_bus=oxff;(4) 、顯示當(dāng)前采集值顯示當(dāng)前采集值void displ()dishz(0,0,3);dishz( 17,0,4);dishz(34,0,5);dishz(51,0,6);dishz(68,0,7);diszf(0,2,adqianwei);diszf(9,2,adbaiwei);diszf(l 8,2,adshiwei);diszf(27,2,adgewei);(5) 、顯示設(shè)定閥值顯示
43、設(shè)定采集閥值void disp2()dishz(0,0,8);dishz( 17,0,9);dishz(34,0,5);dishz(51,0,6);dishz(68,0,10);dishz(85,0,7);diszf(0,2,sdqianwei);diszf(9,2,sdbaiwei);diszf(l 8,2,sdshiwei);diszf(27,2,sdgewei);3. 4鍵盤模塊的編程at89c51snd1單片機(jī)的鍵盤接口并沒有硬件去抖能力,甚至寄生的干擾也可能 導(dǎo)致中斷。因此鍵盤去抖動(dòng)是鍵盤程序中必須面對(duì)的一個(gè)問題。如果軟件沒有去抖處 理的話,可能岀現(xiàn)一退岀中斷服務(wù)程序就立刻乂響應(yīng)中斷
44、的現(xiàn)象,從而造成錯(cuò)誤。因 為鍵盤屮斷屬于邊沿觸發(fā)并且kbsta寄存器讀后口動(dòng)清零,如果在進(jìn)入中斷服務(wù)程 序后立刻讀kbsta并處理,則隨后的抖動(dòng)可能使kbsta再次置位,等本次中斷服務(wù) 完成后,就會(huì)立刻進(jìn)入第2次中斷。所以,中斷服務(wù)程序中讀取kbsta并保存其值 后需要延時(shí)約20ms,再比較該值和pl 口狀態(tài)是否對(duì)應(yīng),如果不對(duì)應(yīng)則認(rèn)為是無效按 鍵,不作任何處理;在退岀中斷服務(wù)程序之前要再讀一次kbsta以使其清零,也就 是清除在延時(shí)和中斷處理過程中產(chǎn)生的抖動(dòng)。這部分代碼可參考如下,鍵盤中斷的向 量是11。void key_interrupt() interrupt 11unsigned cha
45、r i,j,k;k = kbsta&0x0f; 保存kbsta 的kinf3:0 值for(i=0;i<50;i+)for(j=0;j<200;j+); 延時(shí)if(k=(pl&0x0f)如果延時(shí)后pl 口狀態(tài)和所保存的kinf3:0值對(duì)應(yīng).處理鍵碼k二kbsta;/讀取kbsta并舍棄其值,清除抖動(dòng)產(chǎn)生的中斷標(biāo)志return;4數(shù)據(jù)采集系統(tǒng)的調(diào)試4.1主程序功能的調(diào)試該數(shù)據(jù)采集系統(tǒng)的主要的功能就是利用at89c51snd1作為核心處理器通過輸入 采樣開關(guān)cd4051將外界的模擬信號(hào)采集并通過ad轉(zhuǎn)換部分將采集到的數(shù)據(jù)轉(zhuǎn)換成 計(jì)算機(jī)能夠識(shí)別的數(shù)字信號(hào),并且通過鍵盤控制
46、來設(shè)定采集數(shù)據(jù)的范圍和故障設(shè)定, 以便實(shí)時(shí)對(duì)數(shù)據(jù)進(jìn)行監(jiān)控。經(jīng)過長(zhǎng)期的學(xué)習(xí),編程,在經(jīng)過了 10()多天的畢業(yè)設(shè)計(jì)終于完成了基于 at89c51snd1單片機(jī)的數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)。主程序調(diào)試過程中遇到了一些問題,由于所用的at89c51snd1芯片十分復(fù)雜, 具有80個(gè)引腳,而且里面兼有2路的ad采集通道,雖然給設(shè)計(jì)帶來方便,帶由于在 進(jìn)行宏定義時(shí)對(duì)要進(jìn)行定義的參數(shù)考慮不周全,漏掉了#define aden 0x20,以至無法 完成ad采集,后來再參考學(xué)習(xí)版中的資料后,找到了原因。經(jīng)過改正很好的實(shí)現(xiàn)了 對(duì)0-5v模擬電壓的采集,通過lcd顯示很好的驗(yàn)證了結(jié)果。在ad轉(zhuǎn)換程序設(shè)計(jì)時(shí),原本采用的
47、是延時(shí)查詢的方式。為了較好的實(shí)現(xiàn)實(shí)時(shí)數(shù) 據(jù)的采集,改用了定時(shí)中斷和ad中斷,采用定時(shí)中斷來啟動(dòng)ad轉(zhuǎn)換,這樣可以大 大提高工作效率。利用定時(shí)屮斷,系統(tǒng)自動(dòng)的檢查是否需要啟動(dòng)ad轉(zhuǎn)換,4. 2 lcd顯喬程序的調(diào)試在該數(shù)據(jù)采集系統(tǒng)中,lcd占了很大的一塊,數(shù)據(jù)的采集監(jiān)控離開了它就實(shí)現(xiàn)不 了。通過它,人可以直接與計(jì)算機(jī)進(jìn)行數(shù)據(jù)的交互聯(lián)系。它是反映數(shù)據(jù)實(shí)時(shí)采集,進(jìn) 行監(jiān)控的窗口。在該模塊的調(diào)試中,最初由于對(duì)lcd顯示原理了解不足,以致編寫出來的初始化 顯示字符都是反的,因?yàn)閏m12232芯片對(duì)數(shù)據(jù)的顯示采用的是字模顯示格式為單色點(diǎn) 陣液晶字模,縱向取模,字節(jié)止序/32字節(jié)。若采用倒序,則顯示字符為反寫。另外還 有就是由于沒有對(duì)數(shù)據(jù)顯示前對(duì)lcd進(jìn)行初
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年建筑施工吊裝作業(yè)人員勞務(wù)派遣協(xié)議
- 2025年科技研發(fā)策劃貸款協(xié)議書范本
- 合規(guī)管理對(duì)企業(yè)品牌聲譽(yù)的長(zhǎng)期影響
- 企業(yè)在融資中的法律風(fēng)險(xiǎn)管理
- 2025年圍欄護(hù)欄個(gè)性化定制與安裝服務(wù)協(xié)議
- 高管責(zé)任與公司治理的關(guān)聯(lián)性分析
- 語(yǔ)文教育數(shù)字化轉(zhuǎn)型與創(chuàng)新路徑
- 理賠業(yè)務(wù)風(fēng)險(xiǎn)管理跨文化協(xié)作風(fēng)險(xiǎn)基礎(chǔ)知識(shí)點(diǎn)歸納
- 大連景點(diǎn)介紹課件視頻
- 農(nóng)業(yè)機(jī)器人技術(shù)在生產(chǎn)中的應(yīng)用前景
- 多重耐藥菌病人的處理流程
- 《常見性病防治知識(shí)》課件
- 駐村第一書記工作總結(jié)模版
- 2025物理大一輪復(fù)習(xí)講義復(fù)習(xí)講義答案精析
- 2025年高考政治搶押秘籍(江蘇專用)時(shí)政熱點(diǎn)04哪吒2(學(xué)生版+解析)
- 廣東省深圳市2025年中考模擬歷史試題四套附參考答案
- 粵語(yǔ)知識(shí)測(cè)試題及答案
- 2025年北京市東城區(qū)初三語(yǔ)文一模作文《根基》寫作指導(dǎo)+范文
- 2025年果蔬清洗機(jī)市場(chǎng)分析現(xiàn)狀
- 太陽(yáng)能光伏發(fā)電系統(tǒng)多目標(biāo)容量?jī)?yōu)化配置技術(shù)研究
- 中央2024年中國(guó)合格評(píng)定國(guó)家認(rèn)可中心招聘筆試歷年參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論