單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計畢業(yè)論文.doc_第1頁
單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計畢業(yè)論文.doc_第2頁
單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計畢業(yè)論文.doc_第3頁
單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計畢業(yè)論文.doc_第4頁
單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計畢業(yè)論文.doc_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

南 陽 理 工 學(xué) 院 本科生畢業(yè)設(shè)計(論文)學(xué) 院: 電子與電氣工程學(xué)院 專 業(yè): 電氣工程及其自動化 學(xué) 生: 趙曉婷 指導(dǎo)教師: 朱清慧 完成日期 2014 年 5 月南陽理工學(xué)院本科生畢業(yè)設(shè)計(論文) 單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計 design of real time data acquisition and display system using mcu總 計: 29 頁表 格: 2 個插 圖: 18 幅單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計南 陽 理 工 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(論文)單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計design of real time data acquisition and display system using mcu學(xué) 院: 電子與電氣工程學(xué)院 專 業(yè): 電氣工程及其自動化 學(xué) 生 姓 名: 趙曉婷 學(xué) 號: 1209614012 指 導(dǎo) 教 師(職稱): 朱清慧(教授) 評 閱 教 師: 完 成 日 期: 南陽理工學(xué)院 nanyang institute of technology單片機實時數(shù)據(jù)采集顯示系統(tǒng)設(shè)計電氣工程及其自動化專業(yè) 趙曉婷摘 要 本文介紹了單片機控制的實時數(shù)據(jù)采集系統(tǒng)的硬件和軟件設(shè)計與仿真過程。硬件部分設(shè)計采用單片機at89c51、字符液晶顯示器(hd44780控制器)、圖形液晶顯示器(ks0108控制器)以及a/d轉(zhuǎn)換器ad1674等組成一個完整的單片機控制系統(tǒng),并且使用8255a芯片對at89c51的i/o口進行了擴展。系統(tǒng)程序采用模塊化的編程思路,通過c語言進行編程設(shè)計,主要程序為a/d轉(zhuǎn)換模塊和液晶顯示模塊。最后,在proteus平臺上進行了軟件與硬件交互仿真,實現(xiàn)了系統(tǒng)各項性能指標要求。關(guān)鍵字 實時數(shù)據(jù)采集;at89c51;液晶顯示;c語言ii design of real time data acquisition and display system using mcuelectrical engineering and automation specialty zhao xiao-tingabstract: this paperintroduces the design andsimulationof hardware andsoftwareof real time data acquisition system controlled by single chip microcomputer. the hardware design uses a single chip at89c51, character liquid crystal display (hd44780 controller), lcd display (ks0108 controller) and a/d converter ad1674 to form a complete microcomputer control system, and using the 8255a chip has expanded the at89c51 i/o port. system uses a modular design concept, through the c programming language, the main program for the a/d conversion module and liquid crystal display module. finally, system conducts the software and hardware simulation on the proteus platform, realizing therequirementsofperformance indicators about the system.key words:real time data acquisition;at89c51;lcd;c language 目 錄1引 言12 系統(tǒng)方案設(shè)計22.1 系統(tǒng)設(shè)計框圖22.2 器件的選擇23 系統(tǒng)硬件組成及接口電路設(shè)計33.1 系統(tǒng)硬件組成33.2 系統(tǒng)接口電路設(shè)計43.2.1 ad1674與at89c51的接口電路43.2.2 8255a與at89c51的接口電路73.2.3 ks0108與8255a的接口電路83.2.4 hd44780與8255a的接口電路104 系統(tǒng)軟件設(shè)計114.1 系統(tǒng)主程序114.2 ad1674轉(zhuǎn)換程序124.3 lcd12864顯示程序124.3.1 溫度曲線顯示程序124.3.2 漢字顯示程序134.4 lcd1602字符顯示程序145系統(tǒng)仿真145.1 軟件介紹145.2 proteus仿真15結(jié)束語17參考文獻18附錄19致謝291引 言數(shù)據(jù)采集系統(tǒng)起始于20世紀中期,在過去的幾十年里,隨著信息領(lǐng)域各種技術(shù)的發(fā)展,在數(shù)據(jù)采集方面的技術(shù)也取得了長足的進步,采集數(shù)據(jù)的信息化是目前社會的發(fā)展主流方向。各種領(lǐng)域都用到了數(shù)據(jù)采集,在科學(xué)實驗、地震數(shù)據(jù)采集等領(lǐng)域已經(jīng)得到應(yīng)用。 我國的數(shù)字地震觀測系統(tǒng)主要采用tde-124c型tde-224c型地震數(shù)據(jù)采集系統(tǒng)。近年來,又成功研制了動態(tài)范圍更大、線性度更高、兼容性更強、低功耗可靠性的tde-324c型地震數(shù)據(jù)采集系統(tǒng)。該數(shù)據(jù)采集對拾震計輸出的電信號模擬放大后送至a/d數(shù)字化,a/d采用同時采樣,采樣數(shù)據(jù)經(jīng)dsp數(shù)字濾波處理后,變成數(shù)字地震信號。該數(shù)據(jù)采集系統(tǒng)具備24位a/d轉(zhuǎn)化位數(shù),采樣頻率有50hz、100hz、200hz。由美國pasco公司生產(chǎn)的“科學(xué)工作室”是將數(shù)據(jù)采集應(yīng)用于物理實驗的嶄新系統(tǒng),它由三部分組成:(1)傳感器:利用先進的傳感技術(shù)可實時采集物理實驗中各物理量的數(shù)據(jù);(2)計算機接口:將來自傳感器的數(shù)據(jù)信號輸入計算機,采樣速率最高為25萬次每秒;(3)軟件:中文及英文的應(yīng)用軟件。同時工業(yè)生產(chǎn)控制系統(tǒng)中離不開顯示,而液晶顯示控制器的應(yīng)用越來越廣泛。此課題結(jié)合工業(yè)控制系統(tǒng)中常用的幾種液晶顯示控制器,用單片機對其進行控制。以proteus為設(shè)計和仿真平臺,對字符液晶顯示器和圖形液晶顯示器進行各種顯示控制設(shè)計,目的在于擴展單片機控制系統(tǒng)知識,熟練掌握幾種常用的液晶顯示器的控制原理和使用方法,為日后綜合控制系統(tǒng)中液晶顯示器的使用打下堅實基礎(chǔ)。本設(shè)計分為a/d轉(zhuǎn)換部分和lcd液晶顯示部分兩部分設(shè)計:a/d轉(zhuǎn)換部分是通過選擇一路模擬通道輸入,進入a/d轉(zhuǎn)換器進行轉(zhuǎn)換,轉(zhuǎn)換后送入單片機進行處理,同時通過滑動變阻器進行數(shù)值的變換。lcd液晶顯示部分分曲線圖顯示部分和數(shù)值字符顯示部分,通過其控制器與單片機的接口編程實現(xiàn)正確顯示。 而本設(shè)計具體的技術(shù)要求如下:l 雙液晶屏顯示,一個顯示數(shù)值字符,一個實時繪圖(二維),溫度用一位小數(shù)和兩位整數(shù)表示,并能顯示負值; l 要求a/d轉(zhuǎn)換器的精度在12位;l 單片機采用at89c51,在keil中用匯編或c語言進行編程;l 在proteus對系統(tǒng)進行仿真并調(diào)試出結(jié)果。要做到以上要求就需要對設(shè)計需要的每一個元件其作用十分清楚,進行正確的單片機接口電路的設(shè)計,再通過軟件編程實現(xiàn)實時數(shù)據(jù)的顯示。2 系統(tǒng)方案設(shè)計2.1 系統(tǒng)設(shè)計框圖系統(tǒng)設(shè)計框圖如圖1所示。i/o 擴展單片機a/d轉(zhuǎn)換器lcd顯示字符采集信號lcd顯示圖形圖1 系統(tǒng)設(shè)計框圖系統(tǒng)是以單片機為核心器件,控制lcd進行圖形和字符的顯示。采用a/d轉(zhuǎn)換器將輸入的模擬信號轉(zhuǎn)換成數(shù)字信號后送入單片機進行處理,后由單片機送出,通過i/o 擴展芯片將采集轉(zhuǎn)換后的數(shù)據(jù)分別送入字符液晶顯示器和圖形液晶顯示器進行顯示。當(dāng)然兩個液晶顯示器的一些引腳還要受單片機的控制,這樣不斷改變采集數(shù)值,實現(xiàn)實時采集系統(tǒng)的設(shè)計。2.2 器件的選擇 (1)單片機的選擇單片機是一種面向大規(guī)模的集成電路芯片,是微型計算機中的一個重要的分支。此系統(tǒng)是由cpu、隨即存取數(shù)據(jù)存儲器、只讀程序存儲器、輸入輸出電路(i/o口),還有可能包括定時/計數(shù)器、串行通信口、顯示驅(qū)動電路(lcd和led驅(qū)動電路)、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器及a/d轉(zhuǎn)換器等電路集成到一個單塊芯片上,構(gòu)成了一個最小但完善的計算機系統(tǒng)。單片機要使用特定的組譯和編譯軟件編譯程序,再用keil c把程序下載到單片機內(nèi)??紤]到應(yīng)用的靈活性,方便性,在此設(shè)計中選擇at89c51單片機1。(2)a/d轉(zhuǎn)換器的選擇a/d轉(zhuǎn)換器根據(jù)需要有8位、10位、12位、16位等,位數(shù)越多分辨率越高,價格也就越昂貴,因此就有了以下幾種分類:l 逐次逼近型: 它是一種速度快、精度較高、成本較低的直接式轉(zhuǎn)換器,其轉(zhuǎn)換時間在幾微秒到幾百微秒之間。l 積分型:此類型其優(yōu)點是用簡單電路就能獲得高分辨率,但缺點是由于轉(zhuǎn)換精度依賴于積分時間,因此轉(zhuǎn)換速率極低。l 并行比較型:此類型采用多個比較器,僅作一次比較而實行轉(zhuǎn)換,又稱flash(快速)型。由于轉(zhuǎn)換速率極高,n位的轉(zhuǎn)換需要2n-1個比較器,因此電路規(guī)模也極大,一般情況下不建議使用。根據(jù)以上幾種分類的介紹以及所了解的實際應(yīng)用情況,在此采用逐次逼近型的。又考慮到設(shè)計所需要的精度要求在此選擇了12位a/d轉(zhuǎn)換器ad1674。(3)lcd顯示器的選擇由于設(shè)計技術(shù)的要求和應(yīng)用廣泛性的要求在此選擇了采用lgm12641bs1r (ks0108控制器)進行漢字和圖形的顯示,采用lm016l(hd44780控制器)進行數(shù)值字符的顯示,即為溫度數(shù)值的顯示。這部分采用8255a芯片來擴展單片機的輸入輸出口,從而實現(xiàn)將同一數(shù)據(jù)進行字符和圖形的顯示,同時顯示的漢字和圖形所用的代碼是通過點陣取模軟件獲得的。3 系統(tǒng)硬件組成及接口電路設(shè)計3.1 系統(tǒng)硬件組成本設(shè)計中采用單片機at89c51、12位a/d轉(zhuǎn)換器ad1674、字符液晶顯示器(hd44780控制器)lm016l、圖形液晶顯示器(ks0108控制器)lgm12641bs1r、可編程擴展i/o口芯片8255a、74ls373地址鎖存器,74ls138譯碼器等器件組成。通過對各自的控制,實現(xiàn)系統(tǒng)的設(shè)計。系統(tǒng)硬件接線原理圖見附錄所示。at89c51是硬件電路組成的核心器件,所有的器件都要通過它來工作,所以在此先簡單介紹一下。 at89c51是美國atmel公司生產(chǎn)的低電壓,高性能cmos8位單片機,器件采用atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準mcs-51指令系統(tǒng)。片內(nèi)置通用8位中央處理器(cpu)和flash存儲單元,功能強大。at89c51單片機可為您提供許多高性價比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。主要性能參數(shù):l 4k字節(jié)可重擦寫flash閃速存儲器;l 1000次擦寫周期;l 全靜態(tài)操作:0hz24mhz;l 1288字節(jié)內(nèi)部ram;l 32個可編程i/o口:p0p3,每一個i/o口都有8位;l 2個16位定時/計數(shù)器;l 5個中斷源;l 可編程串行uart通道;l 低功耗空閑和掉電模式;除此之外它本身具有振蕩器和時鐘電路,掉電方式保存ram中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位;空閑方式停止cpu的工作,但允許ram,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作2。at89c51引腳結(jié)構(gòu)圖如圖2所示。圖2 at89c51引腳結(jié)構(gòu)圖如圖所示它共有40個引腳,其中40和20引腳分別為vcc和gnd,在此隱藏了。p0口是一組8位漏極開路型雙向i/o口,也是地址/數(shù)據(jù)總線復(fù)用口;p1、p2和p3全是內(nèi)部帶上拉電阻的8位雙向i/o口;p3口除了作為一般的i/o口線外,還可以作控制端口;在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器時,p2口送出高8位地址數(shù)據(jù);rst:復(fù)位輸入;ale:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié); :程序儲存允許輸出,是外部程序存儲器的讀選通信號;:外部訪問允許使能端;xtal1:反相振蕩放大器及內(nèi)部時鐘發(fā)生器的輸入端;xtal2:反相振蕩放大器的輸出端。3.2 系統(tǒng)接口電路設(shè)計3.2.1 ad1674與at89c51的接口電路ad1674 是美國ad 公司推出的一種12 位帶并行微機接口的逐次逼近型模/數(shù)轉(zhuǎn)換芯片。該芯片內(nèi)部自帶采樣保持器(sha)、10伏基準電壓源、時鐘源以及可和微處理器總線直接接口的暫存/三態(tài)輸出緩沖器3。ad1674的基本特點和參數(shù)如下:l 采樣頻率為100khz;l 轉(zhuǎn)換時間為10s;l 具有1/2lsb的積分非線性(inl)以及12位無漏碼的差分非線性(dnl);l 滿量程校準誤差為0.125%;l 內(nèi)有+10v基準電源,也可使用外部基準源;l 四種單極或雙極電壓輸入范圍分別為5v,10v,0v10v和0v20v;l 數(shù)據(jù)可并行輸出,采用8/12位可選微處理器總線接口;l 采用雙電源供電:模擬部分為12v/15v,數(shù)字部分為+5v;l 使用溫度范圍: ad1674a/b為-4085(i級);l 采用28腳密封陶瓷dip封裝形式。ad1674的引腳結(jié)構(gòu)圖如圖3所示。圖3 ad1674的引腳結(jié)構(gòu)圖12/:數(shù)據(jù)輸出位選擇輸入端。當(dāng)該端輸入為低時,數(shù)據(jù)輸出為雙8位字節(jié);當(dāng)該端輸入為高時,數(shù)據(jù)輸出為單12位字節(jié);cs:片選信號輸入端;ce:操作使能端;輸入為高時,芯片開始進行讀/轉(zhuǎn)換操作;sts:轉(zhuǎn)換狀態(tài)輸出端。輸出為高時表明轉(zhuǎn)換正在進行;輸出為低時表明轉(zhuǎn)換結(jié)束。vcc:+12v/+15v模擬供電輸入;vee:-12v/-15v模擬供電輸入;agnd:模擬接地端; r/:讀/轉(zhuǎn)換狀態(tài)輸入端。在完全控制模式下,輸入為高時為讀狀態(tài);輸入為低時為轉(zhuǎn)換狀態(tài);在獨立工作模式下,在輸入信號的下降沿時開始轉(zhuǎn)換。a0:位尋址/短周期轉(zhuǎn)換選擇輸入端。在轉(zhuǎn)換開始時,若a0為低,則進行 12位數(shù)據(jù)轉(zhuǎn)換;若a0為高,則進行周期更短的8位數(shù)據(jù)轉(zhuǎn)換;當(dāng)r/=1且12/=0時,若a0為低,則在高8位(db4db11)作數(shù)據(jù)輸出;若a0為高,則在db0 db3和db8db11作數(shù)據(jù)輸出,而db4db7置零;db11db8:在12位輸出格式下,輸出數(shù)據(jù)的高4位;在8位輸出格式下,a0為低時也可輸出數(shù)據(jù)的高4位;10vin:10v范圍輸入端,包括0v10v單極輸入或5v雙極輸入;20vin:20v范圍輸入端,包括0v20v單極輸入或10v雙極輸入ref in:基準電壓輸入端,在10v基準電源上接50電阻后連于此端;ref out:+10v基準電壓輸出端;bip off:雙極電壓偏移量調(diào)整端,該端在雙極輸入時可通50電阻ref out端相連。ad1674控制邏輯真值表如表1所示3。表1 ad1674控制邏輯真值表cecsr/12/a0執(zhí)行操作0無操作1無操作1000啟動12位數(shù)據(jù)轉(zhuǎn)換1001啟動8位數(shù)據(jù)轉(zhuǎn)換1011允許12位并行輸出10110允許高8位并行輸出10101允許低4位并行輸出 在本次設(shè)計中采用的是雙極性輸入模式,其與單片機的接口電路如圖4所示。圖4 ad1674與at89c51的接口電路圖中顯示采用的是雙極性接法,所以加了正負電源,模擬輸入采用量程為10v即為雙極5v雙極輸入。電壓偏移量調(diào)整端在雙極輸入時通過50電阻與ref out端相連。db0 db11為12位數(shù)據(jù)輸出端,轉(zhuǎn)換過后通過控制a0的狀態(tài)來控制輸出,此位由單片機的p3.1來控制。為了實現(xiàn)分兩次送出正確的的數(shù)據(jù)到達單片機,p1口加了上拉電阻。同時也為了防止單片機發(fā)熱引起的可靠性降低,使得最終顯示狀態(tài)發(fā)生問題,從而加入排阻,也因此得出如上圖的連接4。3.2.2 8255a與at89c51的接口電路8255a是一種可編程的i/o接口芯片,可以與mcs-51系統(tǒng)單片機以及外設(shè)直接相連,廣泛用作外部并行i/o擴展接口。8255a引腳結(jié)構(gòu)圖如下圖5所示。 圖5 8255a引腳結(jié)構(gòu)圖(1)8255a引腳功能:d0-d7:數(shù)據(jù)總線共8條,用于傳送cpu和8255a間的數(shù)據(jù)、命令和狀態(tài)字;reset:復(fù)位線,高電平有效;:片選線,低電平有效;、:為讀命令線,為寫命令線,皆為低電平有效;a0、a1:地址輸入線:用于選中pa、pb、pc口和控制寄存器中哪一個工作;pa7pa0:a組,支持工作方式0、1、2,常作數(shù)據(jù)端口;pb7pb0:b組,支持工作方式0、1常作數(shù)據(jù)端口;pc7pc0:c組,僅支持工作方式0,可作數(shù)據(jù)、狀態(tài)和控制端口,分兩個4位每位可獨立操作控制最靈活,最難掌握;(2)8255a控制字和狀態(tài)字8255a通過控制字可設(shè)定為3種工作模式:方式0,方式1,方式2。工作方式0為基本的輸入/輸出工作方式;方式1為選通輸入/輸出工作方式,在這種工作方式下,選通信號與輸入/輸出數(shù)據(jù)一起傳送,由選通信號對數(shù)據(jù)進行選通;方式2為帶選通雙向總線i/o方式,所以方式2又稱為雙向傳輸方式2??刂谱钟袃蓚€,一個是工作方式控制字,用于8255a的初始化;另一個是c口位控制字,用于c口的位操作。這兩個控制字使用同一口地址,由最高位d7區(qū)分,若d7為1,此控制字為8255a的工作方式控制字;若d7為0,此控制字為8255a的c口的位控制字。方式控制字用于設(shè)定8255a三個端口工作于什么方式,是輸入還是輸出方式。c口置位/復(fù)位控制字可以使c口各位單獨置位或復(fù)位,以實現(xiàn)某些控制功能。(3)8255a與單片機at89c51的接口電路連接如圖6所示。圖6 8255a與單片機at89c51的接口電路單片機at89c51的p0口做輸出口時,需要加上拉電阻,從而得圖中連接;同時8255a作i/o口擴展時需要加鎖存器和譯碼器,此決定8255a芯片選通,并決定其輸出口pa、pb、pc哪路輸出數(shù)據(jù)。這樣可將同一數(shù)據(jù)同時送于不同的液晶顯示器進行顯示,除此之外利用譯碼器可以選擇哪路數(shù)據(jù)選通,當(dāng)外接電路較復(fù)雜時,任務(wù)分配較清晰,控制方便2。3.2.3 ks0108與8255a的接口電路ks0108是一種點陣液晶圖形顯示控制器,具有512字節(jié)的顯示ram和8位并行數(shù)據(jù)總線。proteus中內(nèi)置ks0108控制器的12864圖形液晶顯示器如圖7所示。圖7 ks0108控制器的液晶顯示器結(jié)構(gòu)圖中,圖形液晶顯示器共有18個引腳,其中db0db8為8位并行數(shù)據(jù)總線,- vout為負電壓輸出,與調(diào)壓輸入端vo及滑動變阻器一起連接,作為led背光調(diào)壓使用。是低電平復(fù)位端。e為使能端,r/w、di分別為讀/寫選擇端和命令/數(shù)據(jù)選擇端,vcc(4.5v5.5v)和gnd為電源端。cs1和cs2分別為左右半屏的片選信號,高電平有效5。ks0108控制器的指令匯總?cè)缫韵卤?所示。指令名稱控制狀態(tài)指令代碼dir/wd7d6d5d4d3d2d1d0顯示開關(guān)設(shè)置000011111d顯示起始行設(shè)置0011l5l4l3l2l1l0頁面地址設(shè)置0010111p2p1p0列地址設(shè)置0001c5c4c3c2c1c0讀取狀態(tài)字01busy0on/offreset0000寫顯示數(shù)據(jù)10 數(shù)據(jù)讀顯示數(shù)據(jù)11 數(shù)據(jù)表2 ks0108控制器的指令表(1)busy=1表示ks0108正在處理計算機發(fā)來的指令或數(shù)據(jù);busy=0表示ks0108 接口控制電路已處于“準備好”狀態(tài),等待計算機的訪問。(2)on/off:表示當(dāng)前顯示狀態(tài),為1表示關(guān)顯示狀態(tài),為0表示開顯示狀態(tài)。(3)reset:表示當(dāng)前ks0108的工作狀態(tài),即反映rst端的電平狀態(tài)。當(dāng)rst為低電平狀態(tài)時,ks0108處于復(fù)位工作狀態(tài),reset=1;當(dāng)rst為高電平狀態(tài)時,ks0108處于正常工作狀態(tài),reset=0。(4)l5l0為顯示起始行的地址,取值在03fh(164)范圍內(nèi)。(5)p2p0確定當(dāng)前所要選擇的頁面地址,取值在07h,代表18頁。(6)c5c0=03fh(164)代表某一頁面上的某一單元地址,隨后的一次讀或?qū)?數(shù)據(jù)將在這個單元上進行。ks0108控制器與8255a的接口電路如圖8所示6。圖8 ks0108控制器與8255a的接口電路db0db8與pb0pb7相連接送數(shù)據(jù),用8255a的pc2來選通此控制器,讓其進行工作,用pc1和pc0分別控制讀/寫選擇端和命令/數(shù)據(jù)選擇端。cs1和cs2控制屏的顯示范圍,這里有單片機的引腳進行控制。3.2.4 hd44780與8255a的接口電路hd44780是一種點陣液晶顯示控制器,用來控制字符液晶顯示器,目前應(yīng) 用比較廣泛。它有以下特點:l 內(nèi)置cgrom字符發(fā)生器,含192個固定字符,可供用戶顯示調(diào)用;l 內(nèi)置cgram字符發(fā)生器,用戶通過編程設(shè)計最多8個自定義字符,存放其中,供顯示調(diào)用;l 內(nèi)置ddram顯示數(shù)據(jù)存儲器,可以存放最多80個顯示字符,把cgrom或cgram中的顯示數(shù)據(jù)調(diào)入ddram,便可在顯示屏上顯示,ddram中的單元和顯示屏的位置存在一一對應(yīng)關(guān)系;l 自動復(fù)位上電功能;l 雙向8位或4位總線接口;l 豐富的控制指令:清顯存、光標位置設(shè)置、數(shù)據(jù)輸入時光標或數(shù)據(jù)移位設(shè)置、開或關(guān)顯示屏等;l hd44780模塊有兩個寄存器,一個用來輸入指令,另一個用來讀寫數(shù)據(jù)。指令用來告訴模塊怎樣存放或哪里存放數(shù)據(jù)6。proteus中內(nèi)置hd44780控制器的字符液晶顯示器如下圖9所示。圖9 hd44780控制器的字符液晶顯示器rs: 命令或數(shù)據(jù)選擇端,當(dāng)rs=0時,總線上傳送的是命令;當(dāng)rs=1時,總線上傳送的是數(shù)據(jù)。rw:讀/寫選擇端,當(dāng)rw=0時,為寫操作;當(dāng)rw=1時,為讀操作。d0d7:總線數(shù)據(jù),可以傳送命令,也可以傳送數(shù)據(jù),由rs來控制。hd44780控制器與8255a的接口電路如圖10所示。圖10 hd44780控制器與8255a的接口電路由于8255a 在此設(shè)計中只用到了a口和b口用作數(shù)據(jù)端口, 因而c口就作了控制端口,從而有圖可知hd44780控制器的使能端e和命令或數(shù)據(jù)選擇端rs受8255a的pc5和pc7控制。d0d7與pa0pa7相連接,將數(shù)據(jù)送入顯示器進行顯示。4 系統(tǒng)軟件設(shè)計4.1 系統(tǒng)主程序軟件設(shè)計時,需要先搞清楚總體的設(shè)計方案,從而用流程圖來展示主程序。當(dāng)信號輸入時,主程序啟動,根據(jù)內(nèi)部設(shè)定的條件逐步運行,達到設(shè)計目的。主程序執(zhí)行的流程圖如下圖11所示。圖11 主程序執(zhí)行流程圖由上的流程圖可知,程序先從主函數(shù)開始即main() 函數(shù)。在主函數(shù)中進行變量的定義和賦值,以及子函數(shù)的調(diào)用指令,即所謂的初始化。之后進行定義數(shù)組,將所要顯示的設(shè)定值賦予此數(shù)組,這樣一上電就可顯示設(shè)定值,也就定義了顯示范圍。此后調(diào)用a/d轉(zhuǎn)換子函數(shù),進行模/數(shù)轉(zhuǎn)換,由于單片機只能處理8位數(shù)據(jù),所以要進行兩次數(shù)據(jù)的送入單片機,即所謂的數(shù)值處理。12位轉(zhuǎn)換值通過8255a進行i/o擴展,后同時送入液晶顯示器進行溫度曲線圖和溫度數(shù)值的實時顯示7。 4.2 ad1674轉(zhuǎn)換程序ad1674是12位ad轉(zhuǎn)換器,at89c51只能一次接收8位數(shù)據(jù),所以要分兩次轉(zhuǎn)換。首先要對其進行初始化,使得ce=0關(guān)閉數(shù)據(jù)采集,后令ce=1,cs=0,rc=1,12/=1,a0=0,允許高八位數(shù)據(jù)并行輸出,讀取轉(zhuǎn)換結(jié)果的高8位,后送入p1口,使ce = 0,芯片使能關(guān)閉。再令ce=1,cs=0,rc=1, 12/=0,a0=1,允許低四位數(shù)據(jù)并行輸出,再讀取轉(zhuǎn)換結(jié)果的低4位,關(guān)閉芯片,再對讀取的數(shù)據(jù)進行整合成12位數(shù)據(jù)。之后對數(shù)值進行判斷,進行正確的顯示。由此得出流程圖如圖12所示。圖12 ad1674轉(zhuǎn)換流程圖4.3 lcd12864顯示程序4.3.1 溫度曲線顯示程序溫度曲線顯示程序流程圖如圖13所示。圖13 溫度曲線顯示程序流程圖執(zhí)行此程序前先要檢查lcd是否在忙,若忙不執(zhí)行,不忙執(zhí)行寫指令,準備數(shù)據(jù)的寫入,有了寫命令后,進行數(shù)據(jù)的寫入。數(shù)據(jù)寫入之后,此控制器要讀取其值以便進行顯示,所以執(zhí)行讀指令和讀數(shù)據(jù)。數(shù)據(jù)讀入正確后,執(zhí)行坐標函數(shù),進行描點,之后可得顯示圖形。lcd12864的讀/寫依靠控制端cs1和cs2進行控制,而cs1和 cs2是由單片機的p3.4和p3.5進行控制,此端口控制屏的顯示范圍。其最主要的是坐標函數(shù),需要規(guī)定首行和首列,以及頁碼。規(guī)定好后進行描點,而點的代碼通過點陣取模軟件繪圖獲得8。4.3.2漢字顯示程序漢字顯示程序流程圖如圖14所示。圖14 漢字顯示函數(shù)流程圖此部分程序主要是執(zhí)行漢字顯示函數(shù)void show(),在這顯示之前,先需要對要顯示的漢字進行初始化,之后執(zhí)行l(wèi)cd12864寫指令,后再設(shè)定漢字的頁碼,因而在此設(shè)定顯示首頁地址為0xb8,首列地址為0x40,列地址會自動加1,執(zhí)行后執(zhí)行曲線圖點陣代碼,即所獲得需要的漢字,后執(zhí)行顯示函數(shù),這樣得以實現(xiàn)曲線圖的顯示功能,從而完成此部分設(shè)計8。4.4 lcd1602字符顯示程序此部分程序包括對1602的初始化函數(shù)、寫命令函數(shù)、寫數(shù)據(jù)函數(shù)和lcd1602的實時顯示函數(shù)幾部分組成,所以可得流程圖如圖15所示。圖15 lcd1602字符顯示流程圖由流程圖可知要想顯示數(shù)值,首先要定義變量,之后進入主函數(shù)main()。接下來要規(guī)定哪一行進行顯示,在這里選擇第一行,占用前16個字節(jié)進行溫度值的顯示,這就是1602的初始化。定義好預(yù)設(shè)值后要進行顯示這就需要取值,每一位顯示什么,這需要對采集轉(zhuǎn)換好的數(shù)值進行處理,將每一位取出來,綜合后實時顯示。完成之后要先執(zhí)行1602寫命令和寫數(shù)據(jù)函數(shù),當(dāng)打開屏幕時,通過判斷溫度標志位為1還是0,進行正確數(shù)值的顯示,當(dāng)標志位為0時顯示負溫度值,為1時顯示正溫度值,這樣完成顯示。5系統(tǒng)仿真5.1 軟件介紹進行系統(tǒng)仿真之前首先要完成硬件和軟件兩部分,在此之前先要了解一些軟件。(1)c51集成開發(fā)軟件keil c此軟件是美國keil software公司出品的51系列兼容單片機c語言軟件開發(fā)系統(tǒng),與匯編相比,c語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,因此使用起來十分方便9。(2)proteus軟件proteus是由labcenterelectronics開發(fā)的功能強大的單片機仿真軟件,與其他的仿真軟件相比較,在下面的優(yōu)點:l 能仿真模擬電路、數(shù)字電路、數(shù)?;旌想娐?;l 能繪制原理圖、pcb圖;l 幾乎包括實際中所有使用的儀器其最大的亮點在于能夠?qū)纹瑱C進行實物級的仿真。從程序的編寫,編譯到調(diào)試,目標版的仿真一應(yīng)俱全。支持匯編語言和c語言的編程,還可配合keil c實現(xiàn)程序的聯(lián)合調(diào)試,將proteus中繪制的原理圖作為實際中的目標板,而用keil c集成環(huán)境實現(xiàn)對目標板的控制,與實際中通過硬件仿真器對目標板的調(diào)試幾乎完全相同,并且支持多顯示器的調(diào)試5。(3)點陣取模軟件此軟件是為了進行液晶顯示而設(shè)計的,只要輸入所需要的圖片或漢字,點擊取模方式,就可得到所需要的點陣代碼,之后寫入lcd模塊中指定的位置執(zhí)行顯示函數(shù)就可以實現(xiàn)所需要的功能。例如將其顯示漢字“趙”字,這樣需要先在輸入口輸入此字,后選擇輸出格式,從而獲得所需代碼,獲取圖如圖16所示8。圖16 取字代碼獲取圖5.2 proteus仿真打開 proteus isis,進入proteus isis編輯環(huán)境,將所需要的元器件調(diào)用出來后進行正確連接,連接好后進行保存。在點陣取模軟件中繪制所需要的圖形和漢字,之后選擇取模方式,在這里選擇c51方式獲得點陣代碼。在keilvision4編程軟件中進行c語言程序的編寫,然后在keil 中生成的“*.hex”程序文件。步驟是選擇工程管理窗口的target1,再選擇project-option for targettarget1,打開工程屬性設(shè)置對話框,共有8個選項卡,主要設(shè)置工作包括在target選項卡中設(shè)置晶振頻率。選擇output選項卡,然后選中create hex file,其它選項卡內(nèi)容一般可取默認值。工程設(shè)置后按f7鍵(或點擊編譯工具欄上相應(yīng)圖標)進行編譯生成“*.hex”十六進制的目標文件。hex文件生成窗口如圖17所示1011。圖17 hex文件生成窗口將在keil c中生成的.hex文件加載入proteus isis中的at89c51中,點擊開始進行仿真,手動調(diào)節(jié)滑動變阻器可改變數(shù)值,實現(xiàn)在一定范圍內(nèi)的數(shù)值顯示,仿真結(jié)束后點擊其左下角的stop鍵結(jié)束仿真,系統(tǒng)仿真結(jié)果圖如圖18所示12 13。圖18 系統(tǒng)結(jié)果仿真圖如圖所示顯示的溫度值為負值,數(shù)值為12.6度,即小數(shù)點后一位數(shù)。實時溫度曲線圖就正如lcd1所示,調(diào)節(jié)圖中的滑動變阻器可以更改數(shù)值,這樣不停地改變實現(xiàn)實時數(shù)據(jù)的更新與顯示,從而完成溫度數(shù)值范圍在-30+30之間的顯示13。31結(jié)束語 本論文主要介紹了如何將采集到的溫度值進行實時顯示,這里主要包括數(shù)值和曲線顯示。在此設(shè)計采用的只是一種方案,還有多種方案可以采用,比如:在設(shè)計的過程中采用的12位并行a/d轉(zhuǎn)換器可以換成12位串行的,或者直接采用ds18b20溫度傳感器進行設(shè)計等等。在此設(shè)計的過程中元器件的選取要合適且控制方便,因而選擇了最基礎(chǔ)的且最常用的單片機型號,這樣在設(shè)計時就方便了很多。設(shè)計存在的缺陷:(1)在設(shè)計顯示模塊時選用了lcd顯示,沒能很好地解決功耗問題。在技術(shù)方面還顯得很落后;(2)顯示數(shù)值不夠精確,在這方面對數(shù)值的處理有待提高;(3)lcd顯示部分只做了最基礎(chǔ)的顯示,還可以進行較豐富的顯示,在這方面可以有更深的思考和研究。 本設(shè)計的目的在于對液晶顯示模塊的應(yīng)用,因此在設(shè)計的過程中就需要更加深刻的認識此種設(shè)計思路,分模塊進行研究,從而實現(xiàn)更廣范圍的應(yīng)用。參考文獻1 周國運.單片機原理及應(yīng)用(c語言版)m.北京:中國水利水電出版社,2009.2 胡漢才.單片機原理及其接口技術(shù)m.北京:清華大學(xué)出版社,2005.11.3 楊振江.a/d、d/a轉(zhuǎn)換器接口技術(shù)m.西安:西安電子科技大學(xué)出版社,1996:55-62.4 劉孝趙,吳振磊,柳承鋼.基于proteus 軟件的單片機仿真實例j.科技廣場,2013,(5):140-143.5 朱清慧.proteus顯示控制系統(tǒng)設(shè)計與實例m.北京:清華大學(xué)出版社,2011:284-308.6 胡力剛,陳寧.單片機在液晶顯示器系統(tǒng)中的應(yīng)用j.信息科學(xué)技術(shù),2005,(16):12-15.7 王曉閩,劉浩.多模塊程序設(shè)計的關(guān)鍵技術(shù)模塊接口j.山東建筑工程學(xué)院學(xué)報,2004,(5):140-143.8 黃海宏,王海欣.液晶顯示漢字的字模提取新方法j.液晶與顯示,2005,3(19):88-91.9 劉克成,張凌曉,邵艷玲.c語言程序設(shè)計m.北京:中國鐵道出版社,2006.3.10 胡偉,季曉衡.單片機c程序設(shè)計及應(yīng)用實例m.北京:人民郵電出版社,2003:35-50.11 guiyun tian.foundation and application of microcontrollerm.higher education press (hep),2004:32-40.12 wilson r p,lam m s.efficient context-sensitive pointer analysis for c language design and implementationj.la jolla,ca,1995,4(15):51-55.13 唐曉慧,韋萍萍.基于proteus 軟件的單片機軟硬件仿真實驗j.畢節(jié)學(xué)院學(xué)報,2012,30(19): 97-99.附錄附錄一 系統(tǒng)硬件接線原理圖系統(tǒng)硬件接線原理圖附錄二 系統(tǒng)程序#include#include /通過此頭文件定義的宏來訪問絕對地址#define uchar unsigned char #define uint unsigned int#define addo (10.0/4095.0)/轉(zhuǎn)換進率,12位精度(212-1=4095),滿量程為10v#define a xbyte0x3ffc /8255a a口地址 p2.70011 1111 1111 1100p0.0 /(高三位001用于選通y1,低兩位用于選a1a0)#define b xbyte0x3ffd /8255a b口 p2.70011 1111 1111 1101p0.0#define c xbyte0x3ffe /8255a c口 p2.70011 1111 1111 1110p0.0#define com xbyte0x3fff /8255a 控制口地址 p2.70011 1111 1111 1111p0.0#define line 0xc0 /首行地址為0xc0#define page 0xb8 /首頁地址為0xb8#define col 0x40 /首列地址為0x40/*管腳定義*/sbit sts=p30;sbit a0=p31;sbit ce=p32;sbit rc=p33;sbit cs1=p34;sbit cs2=p35;sbit wr1=p36;sbit rd1=p37;uchar biaozhiwei;/用于判斷采集模擬信號的正負unsigned long int temp;uchar code number=0123456789;uchar tab1=sheshidu=+29.9 ;/ 10 11. 13 14(第14位是空格)uchar tab2=sheshidu=-29.9 ;/ 10 11. 13 14(第14位是空格)uchar code tab3=0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00;uchar code sz=0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;/0-8uchar code qu=/*- 文字: 曲 -*/ /*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 -*/0x00,0xf0,0x10,0x10,0x10,0xff,0x10,0x10,0x10,0xff,0x10,0x10,0x10,0xf0,0x00,0x00,0x00,0xff,0x42,0x42,0x42,0x7f,0x42,0x42,0x42,0x7f,0x42,0x42,0x42,0xff,0x00,0x00;uchar code xian=/*- 文字: 線 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 -*/0x20,0x30,0xac,0x63,0x20,0x18,0x80,0x90,0x90,0xff,0x90,0x49,0x4a,0x48,0x40,0x00,0x22,0x67,0x22,0x12,0x12,0x12,0x40,0x40,0x20,0x13,0x0c,0x14,0x22,0x41,0xf8,0x00;uchar code tu=/*- 文字: 圖 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 -*/0x00,0xfe,0x02,0x42,0x22,0x32,0x5e,0x92,0x52,0x32,0x12,0x02,0x02,0xfe,0x00,0x00,0x00,0xff,0x42,0x42,0x42,0x51,0x55,0x64,0x69,0x41,0x42,0x42,0x42,0xff,0x00,0x00;uchar code zuobiao=/*- 調(diào)入了一幅圖像:c:usersadministratordesktop畫圖坐標.bmp -*/*- 寬度x高度=128x64 -*/0x00,0x00,0x00,0x2a,0x2a,0x3e,0x00,0x3e,0x22,0x3e,0x00,0xff,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x54,0x5c,0x00,0x7c,0x44,0x7c,0x00,0xff,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0xf8,0x88,0xf8,0x00,0xff,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論