版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 智能儀表綜合訓(xùn)練課程設(shè)計報告</p><p><b> 題 目:</b></p><p><b> 學(xué)生姓名:</b></p><p><b> 學(xué) 號:</b></p><p> 專 業(yè):測控技術(shù)與儀器</p>&
2、lt;p><b> 班 級:</b></p><p><b> 指導(dǎo)教師:</b></p><p><b> 目 錄</b></p><p> 1.1 設(shè)計意義2</p><p> 1.2 設(shè)計目的3</p><p> 1.
3、3 設(shè)計內(nèi)容3</p><p> 2.1 功能的實現(xiàn)3</p><p> 2.2 方案論證3</p><p> 2.2.1 單片機的選擇4</p><p> 2.2.2 A/D模數(shù)轉(zhuǎn)換器選擇4</p><p> 2.2.3 串行口的選擇4</p><p> 2.2.4 顯
4、示單元選擇4</p><p> 3.1 硬件系統(tǒng)原理5</p><p> 3.2 電路設(shè)計6</p><p> 3.2.1 單片機選型6</p><p> 3.2.2 模數(shù)轉(zhuǎn)換電路6</p><p> 3.2.3 顯示電路7</p><p> 3.2.4 串口電路7&l
5、t;/p><p> 3.2.5 晶振電路8</p><p> 3.2.6 硬件原理圖仿真9</p><p> 4.1 Keil4簡介9</p><p> 4.2 程序設(shè)計9</p><p> 4.2.1主程序設(shè)計10</p><p> 4.2.2 A/D轉(zhuǎn)換程序設(shè)計10<
6、;/p><p> 4.2.3 LCD顯示程序設(shè)計10</p><p> 5.1 程序調(diào)試11</p><p> 5.1.1 硬件調(diào)試11</p><p> 5.1.2 軟件調(diào)試11</p><p> 5.2 程序下載11</p><p><b> 5.3 總結(jié)12&
7、lt;/b></p><p><b> 第一章 概述</b></p><p><b> 1.1 設(shè)計意義</b></p><p> 隨著計算機技術(shù)的飛速發(fā)展和普及,數(shù)據(jù)采集系統(tǒng)也迅速地得到應(yīng)用。在生產(chǎn)過程中,應(yīng)用這一系統(tǒng)可對生產(chǎn)現(xiàn)場的工藝參數(shù)進(jìn)行采集,監(jiān)視和記錄,為提高產(chǎn)品質(zhì)量,降低成本提供信息和手段。在科
8、學(xué)研究中,應(yīng)用數(shù)據(jù)采集系統(tǒng)可獲得大量的動態(tài)信息,是研究瞬間物理過程的有力工具,也是獲取科學(xué)奧秘的重要手段之一??傊徽撛谀膫€應(yīng)用領(lǐng)域中,數(shù)據(jù)采集與處理越及時,工作效率就越高,取得的經(jīng)濟效益也越高。</p><p> 電子計算機的發(fā)展對通信起了巨大的推動作用.計算機和通信緊密結(jié)合可以構(gòu)成靈活多樣的通信控制系統(tǒng)也可以構(gòu)成強有力的信息處理系統(tǒng),這樣對社會的發(fā)展產(chǎn)生深刻的影響.數(shù)據(jù)通信是電子計算機廣泛應(yīng)用的必然產(chǎn)物.
9、計算機與它的終端之間需要數(shù)據(jù)通信,計算機與計算機之間更需要數(shù)據(jù)通信.此處在遙測,遙感,雷達(dá),自動控制等系統(tǒng)中都要用到計算機,因而都需要數(shù)據(jù)通信. </p><p> 數(shù)據(jù)采集系統(tǒng),從嚴(yán)格的意義上來說,應(yīng)該是用計算機控制的多路數(shù)據(jù)自動檢測或巡回檢測,并且能夠?qū)?shù)據(jù)實行存儲、處理、分析計算以及檢測的數(shù)據(jù)中提取可用的信息,供顯示、記錄、打印或描繪的系統(tǒng)。 數(shù)據(jù)采集系統(tǒng)一般由數(shù)據(jù)輸入系統(tǒng),數(shù)據(jù)存儲與
10、管理,數(shù)據(jù)處理,數(shù)據(jù)輸出及顯示這四個部分組成。輸入通道要實現(xiàn)對被測對象的檢測,采樣和信號轉(zhuǎn)換工作。數(shù)據(jù)存儲與管理要用存儲器把采集到的數(shù)據(jù)存儲起來,建立相應(yīng)的數(shù)據(jù)庫,并進(jìn)行管理和調(diào)用。數(shù)據(jù)處理就是從采集到的原始數(shù)據(jù)中,刪除有關(guān)干擾噪聲,無關(guān)信息和必要的信息,提取出反映被測對象特征的重要信息。另外,就是對數(shù)據(jù)進(jìn)行統(tǒng)計分析,以便于檢索;或者把數(shù)據(jù)恢復(fù)成原來的物理量形式,以可輸出的形態(tài)在輸出設(shè)備上輸出,例如打印,顯示,繪圖等。數(shù)據(jù)輸出及顯示就是
11、把數(shù)據(jù)以適當(dāng)?shù)男问竭M(jìn)行輸出和顯示。</p><p> 數(shù)據(jù)采集對可調(diào)電位器的模擬信號進(jìn)行測量和處理,以微型計算機技術(shù)為基礎(chǔ)而形成的一門綜合應(yīng)用技術(shù)。數(shù)據(jù)采集也是從一個或多個信號獲取對象信息的過程。隨著微型計算機技術(shù)的飛速發(fā)展及普及,數(shù)據(jù)采集檢測已成為日益重要的檢測技術(shù),廣泛應(yīng)用與工農(nóng)也等需要同時檢測溫度、濕度和壓力的場合。數(shù)據(jù)采集是工業(yè)控制等系統(tǒng)中的重要環(huán)節(jié),通常采用一些功能相對獨立的單片機系統(tǒng)來實現(xiàn),作為測控
12、系統(tǒng)不可或缺的部分,數(shù)據(jù)采集的性能特點直接影響到整個系統(tǒng)。</p><p><b> 1.2 設(shè)計目的</b></p><p> 本設(shè)計的主要目的是實現(xiàn)單片機的數(shù)據(jù)采集,顯示功能及上位機通訊。為實現(xiàn)這些功能,進(jìn)行了有關(guān)的硬件電路原理圖設(shè)計與軟件編程設(shè)計。硬件電路設(shè)計中,運用PROTEL99SE,在已給實驗板和實驗原理圖的基礎(chǔ)上,選擇實驗板上所用于本設(shè)計的器件,并進(jìn)
13、行了涉及硬件原理圖的設(shè)計以及實驗的硬件連接。軟件編程設(shè)計中,運用KEIL4編程環(huán)境,對設(shè)計要實現(xiàn)的功能進(jìn)行編程,整體程序可分為一個主程序和多個子程序,子程序有基于ADC0832的A/D轉(zhuǎn)換程序、基于AT89C51的標(biāo)度轉(zhuǎn)換程序和基于LCD1602的液晶顯示程序。通過四個人完成的設(shè)計,讓我們對數(shù)據(jù)采集有了清晰的認(rèn)識,對單片機數(shù)據(jù)采集及處理數(shù)據(jù)的原理有了更深的了解,達(dá)到學(xué)習(xí)和實踐相結(jié)合,學(xué)以致用的目的。</p><p&g
14、t;<b> 1.3 設(shè)計內(nèi)容</b></p><p> 本設(shè)計運用單片機STC89C52進(jìn)行數(shù)據(jù)采集的設(shè)計,讓電壓模擬量(0-5V)通過模擬量/數(shù)字量轉(zhuǎn)換芯片(ADC0832),送入單片機,進(jìn)行數(shù)據(jù)處理之后,通過移位寄存器(74LS164),并在LCD1602上顯示。實驗的模擬量數(shù)據(jù)是通過一個可調(diào)電位器輸出0-5V的模擬量,顯示的是溫度。</p><p> 第
15、二章 總體方案設(shè)計</p><p><b> 2.1 功能的實現(xiàn)</b></p><p> 本系統(tǒng)采用A/D轉(zhuǎn)換器送入模擬信號,而單片機扶著處理接受過來的數(shù)字量的處理和顯示電腦和單片機之間用RS-232進(jìn)行通信。這樣就可以在計算機上編程序,然后下載到單片機內(nèi)部進(jìn)行處理。系統(tǒng)框圖如圖2.1所示。</p><p><b> 圖2
16、.1系統(tǒng)框圖</b></p><p><b> 2.2 方案論證</b></p><p> 2.2.1 單片機的選擇</p><p> 單片機是一種面向大規(guī)模的集成電路芯片,是微型計算機中的一個重要的分支。此系統(tǒng)是有CPU、隨機存取數(shù)據(jù)存儲器、只讀程序存儲器。輸入輸出電路(I/O口),還包括串行通信口、顯示驅(qū)動電路(LCD驅(qū)動
17、電路)、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器及A/D轉(zhuǎn)換器等集成到一個單塊芯片上,構(gòu)成一個最小但完善的計算機系統(tǒng)。單片機要使用特定的組譯和編譯軟件編譯程序,再用KEIL4把程序下載到單片機內(nèi)部。</p><p> 而本設(shè)計選用的是STC89C42。</p><p> 2.2.2 A/D模數(shù)轉(zhuǎn)換器選擇</p><p> A/D轉(zhuǎn)換器是將模擬量轉(zhuǎn)換成數(shù)字量的器件,A/D轉(zhuǎn)
18、換器的種類很多,就位數(shù)來說,可以分為8位、10位、12位和16位等。位數(shù)越高其分辨率就越高,價格就越貴。A/D轉(zhuǎn)換器的型號很多,而其轉(zhuǎn)換時間和轉(zhuǎn)換誤差也各不相同。</p><p> ?、?逐漸逼近式A/D轉(zhuǎn)換器:它是一種速度快、精度較高、成本較低的直接式轉(zhuǎn)換器,其轉(zhuǎn)換時間在幾微秒到幾百微秒之間。 </p><p> ⑵ 雙積分A/D轉(zhuǎn)換器:它是一種間接式的A/D轉(zhuǎn)換器,優(yōu)點是抗
19、干擾能力強,精度比較高,缺點是數(shù)度很慢,適用于對轉(zhuǎn)換數(shù)度要求不高的系統(tǒng)。 </p><p> (3)并行式A/D轉(zhuǎn)換器:它又被稱為flash(快速)型,它的轉(zhuǎn)換數(shù)度很高,但她采用了很多個比較器,而n位的轉(zhuǎn)換就需要2n-1個比較器,因此電路規(guī)模也極大,價格也很貴,只適用于視頻A/D轉(zhuǎn)換器等數(shù)度特別高的領(lǐng)域。 </p><p> 鑒于上面三種方案,在價格、轉(zhuǎn)換速度等多種
20、標(biāo)準(zhǔn)下,在本設(shè)計選用的是逐漸逼近式A/D轉(zhuǎn)換器——ADC0832。</p><p> 2.2.3 串行口的選擇</p><p> 該串行口選用了標(biāo)準(zhǔn)RS-232接口,常用的芯片是MAX232,MAX232的優(yōu)點是:</p><p> ?、?一片芯片可以完成發(fā)送和接受功能</p><p><b> 單一電源+5V供電</b
21、></p><p> 它的電路設(shè)計與連接比較簡單而且功能齊全</p><p> 2.2.4 顯示單元選擇</p><p> 液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用
22、中并無差別。本實驗采用的是2行16字的LCD1602液晶顯示模塊。</p><p> 2.2.5 按鍵的選擇</p><p> 鍵盤是一種常見的輸入設(shè)備,用戶可以向計算機輸入數(shù)據(jù)或命令。根據(jù)按鍵的識別方法分類,有編碼鍵盤和非編碼鍵盤兩種。通過硬件識別的鍵盤稱編碼鍵盤;通過軟件識別的鍵盤稱為非編碼鍵盤。非編碼鍵盤有兩種接口方法:一種是獨立按鍵接口;另一種是矩陣式按鍵接口。</p&g
23、t;<p> 在單片機中,如果所需的按鍵較少,可采用獨立式鍵盤。每只按鍵接單片機的一條I/O線,通過對線的查詢,即可識別各按鍵的狀態(tài)。如圖3-7所示。4只按鍵分別接單片機的P1.4~P1.7I/O線上。無按鍵按下時,P1.4~P1.7線上均輸入高電平。當(dāng)某按鍵按下時,與其相連的I/O線將得到低電平輸入。</p><p> 本設(shè)計采用的是獨立鍵盤。</p><p><
24、b> 獨立按鍵接口</b></p><p> 第三章 硬件設(shè)計與仿真</p><p> 3.1 硬件系統(tǒng)原理</p><p> 該系統(tǒng)主要原理如下圖所示,它有STC89C52、RS232、LCD1602等組成。</p><p> 圖3.1 硬件原理圖</p><p><b>
25、 3.2 電路設(shè)計</b></p><p> 3.2.1 單片機選型</p><p> 該系統(tǒng)所用單片機型號為STC89C52,該芯片由8位通用CPU、程序存儲器、隨機讀寫數(shù)據(jù)存儲器及常用外設(shè)電路組成。在芯片中,P0、P2口可作為一般的I/O口使用,當(dāng)需要再擴展外部存儲器時,P0口將作為低8位地址總線或數(shù)據(jù)總線使用,P2口作為高8位地址總線使用。由于定時/計數(shù)器、串行通信、
26、中斷控制器等外圍電路集成在CPU芯片內(nèi),因而STC89C52的芯片內(nèi)部也包含了這些外圍電路的控制寄存器、狀態(tài)寄存器以及數(shù)據(jù)輸入/輸出寄存器,這些外圍電路的接口寄存器構(gòu)成了STC89C52的特殊功能寄存器。</p><p> 在本設(shè)計中,ADC0832的片選端接單片機的P1.0口,時鐘脈沖端接單片機的P1.7端。其他端則是數(shù)據(jù)輸入和輸出端。</p><p> 3.2.1 單片機芯片<
27、;/p><p> 3.2.2 模數(shù)轉(zhuǎn)換電路</p><p> ADC0832的輸入通道是CH0和CH1,本設(shè)計模擬信號從CH0通道送入,所以CH0和CH1短接在一起連到電位器;CS為片選使能,低電平芯片使能,連接STC89C52的P1.0;CLK芯片時鐘輸入,DI數(shù)據(jù)信號輸入端,DO數(shù)據(jù)信號輸出端,但由于DO端和DI端在通信時并未同時有效并與單片機的接口是雙向的,所以電路設(shè)計時將DO和DI
28、并聯(lián)在一根數(shù)據(jù)線上使用。</p><p> 模數(shù)轉(zhuǎn)換電路如下圖所示:</p><p> 3.2.2 模數(shù)轉(zhuǎn)換電路</p><p> 3.2.3 顯示電路</p><p> 因為液晶材料本身并不發(fā)光,所以在顯示屏兩邊都設(shè)有作為光源的燈管,同時在液晶顯示屏背面有一塊背光板(或稱勻光板)和反光膜,背光板是由熒光物質(zhì)組成的,可以發(fā)射光線,其作
29、用主要是提供均勻的背景光源。在這里,背光板發(fā)出的光線在穿過第一層偏振過濾層(也就是上文中提到的夾層)之后進(jìn)入包含成千上萬水晶液滴的液晶層,液晶層中的水晶液滴都被包含在細(xì)小的單元格結(jié)構(gòu)中,一個或多個單元格構(gòu)成屏幕上的一個像素,而這些像素可以是亮的,也可以是不亮的,大量排列整齊的像素中亮與不亮便形成了單色的圖像。</p><p> 本設(shè)計采用的是LCD1602液晶顯示屏。原理圖如下圖所示:</p>&
30、lt;p> 3.2.3 顯示電路</p><p> 3.2.4 串口電路</p><p> 計算機與計算機或計算機與終端之間的數(shù)據(jù)傳送可以采用串行通訊和并行通訊兩種方式。由于串行通訊具有線路少、成本低,特別是在遠(yuǎn)程傳輸時,避免了多條線路特性的不一致而被廣泛使用。在串行通訊時,要求通訊雙方都采用一個標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來進(jìn)行通訊.,RS232接口是目前最常用的一
31、種串行通訊接口。由于PC機RS232C串行通信接口和AT89S52單片機的信號電平不一致,所以在PC機RS-232C串口和單片機串口應(yīng)具有1個電平轉(zhuǎn)換裝置,而MAX232就可以完成這一功能,因此采用3線制雙工通信連接方式,即單片機串行口的TXD、RXD和GND經(jīng)電平轉(zhuǎn)換分別與PC機的RXD、TXD和SG相連。此方式省去了9線的連接,這種方式完全可以進(jìn)行數(shù)據(jù)的傳輸。</p><p> 3.2.4 串口電路<
32、/p><p> 3.2.5 晶振電路</p><p> 當(dāng)使用片內(nèi)振蕩電路時,X1、X2與晶振及電容C1、C2的連接方式構(gòu)成晶振電路。在該電路中,晶振、電容C1、C2以及片內(nèi)與非門構(gòu)成了電容三點式振蕩器。振蕩電容C1和C2的取值范圍與晶振的種類和頻率有關(guān)。為了減少寄生電容對振蕩頻率的影響,在印制板上電容C1、C2應(yīng)盡可能靠近CPU芯片的X1和X2引腳,必要時可以采用溫度系數(shù)較小的NPO電容
33、。</p><p><b> 3.2.5晶振電路</b></p><p> 3.2.6 硬件原理圖仿真</p><p> 仿真結(jié)果如下圖所示:</p><p> 3.2.6硬件原理仿真圖</p><p><b> 第4章 軟件設(shè)計</b></p>&l
34、t;p> 4.1 Keil4簡介</p><p> Keil4提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(UVISION)將這些組合在一起。 </p><p> Keil4有以下幾個特點: 1、 全功能的源代碼編輯器; 2、 器件庫用來配置開發(fā)工具設(shè)置;
35、0;3、 項目管理器用來創(chuàng)建和維護(hù)用戶的項目; 4、 集成的MAKE工具可以匯編、編譯和連接用戶嵌入式應(yīng)用; 5、 所有開發(fā)工具的設(shè)置都是對話框形式的; 6、 真正的源代碼級的對CPU和外圍器件的調(diào)試器; 7、 高級GDI(AGDI)接口用來在目標(biāo)硬件上進(jìn)行軟件調(diào)試以及和Monitor-51進(jìn)行通信。</p><p><
36、;b> 4.2 程序設(shè)計</b></p><p> 整個程序設(shè)計分為三大塊,A/D轉(zhuǎn)換程序、LCD1602顯示程序、主程序。按設(shè)計方法的思路將A/D轉(zhuǎn)換程序以子程序調(diào)用的形式出現(xiàn),LCD顯示程序設(shè)為庫文件,然后由主程序調(diào)用子程序和頭文件完成設(shè)計功能。</p><p> 4.2.1主程序設(shè)計</p><p> 主程序只做調(diào)用別的程序作用,其流
37、程圖如下圖所示。主程序一開始就進(jìn)入循環(huán)狀態(tài),首先調(diào)用A/D轉(zhuǎn)換程序,接收轉(zhuǎn)換數(shù)字信號,進(jìn)行數(shù)據(jù)處理,然后調(diào)用LCD初始化程序。 </p><p> 圖4.2.1主程序流程圖</p><p> 4.2.2 A/D轉(zhuǎn)換程序設(shè)計</p><p> A/D轉(zhuǎn)換程序的功能是:當(dāng)通過電位器將模擬信號送入ADC0832后,ADC0832將模擬信號轉(zhuǎn)換為數(shù)字信號,通過程
38、序?qū)⒌玫降臄?shù)字信號返回,以便主程序調(diào)用。在程序中應(yīng)依照ADC0832芯片的管腳功能以及單片機對它的控制原理,使能芯片產(chǎn)生時鐘信號,設(shè)置好通道選擇,以便芯片正確轉(zhuǎn)換數(shù)據(jù),流程圖如圖4.2所示:</p><p> 4.2.2 A/D轉(zhuǎn)換流程圖</p><p> 4.2.3 LCD顯示程序設(shè)計</p><p> LCD顯示程序功能是將經(jīng)過單片機處理過的信號實時顯示出
39、來,程序流程圖如圖4.3所示:</p><p> 圖4.3LCD顯示流程圖</p><p> 第五章 調(diào)試與總結(jié)</p><p><b> 5.1 程序調(diào)試</b></p><p> 5.1.1 硬件調(diào)試</p><p> 硬件調(diào)試的主要任務(wù)是排除硬件故障,其中包括設(shè)計的錯誤和工藝性
40、故障等。檢查所設(shè)計的硬件電路板所有的引腳是否正確,尤其是電源的連接是否正確;檢查各總線是否有短路的故障。檢查開關(guān)/按鍵是否正常,是否連接正確,為了保護(hù)芯片,應(yīng)先對各IC座電位進(jìn)行檢查,確認(rèn)無誤后再插入芯片。將芯片的仿真插頭插入單片機插座進(jìn)行調(diào)試,檢查各接口是否滿足設(shè)計要求,用正常的程序測試硬件電路的好壞。</p><p> 5.1.2 軟件調(diào)試</p><p> 軟件調(diào)試的任務(wù)是利用開
41、發(fā)工具進(jìn)行在線仿真調(diào)試,發(fā)現(xiàn)和糾結(jié)程序的錯誤,同時也能發(fā)現(xiàn)硬件故障。軟件調(diào)試是每個模塊進(jìn)行的。首先單獨調(diào)試各子程序是否能達(dá)到預(yù)期的功能,接口電路的控制是否正常。尤其是注意各模塊間能否正確的傳遞參數(shù)。</p><p><b> 5.2 程序下載</b></p><p> 啟動程序STC-ISP后,第一步就是選擇器件。軟件支持STC全系列的51單片機芯片,因此,第一步
42、必須選擇相對應(yīng)的型號。</p><p> 第二步就應(yīng)該選擇將要被燒寫的HEX文件。HEX文件由單片機開發(fā)環(huán)境輸入、編輯代碼、最后編譯產(chǎn)生。</p><p> 選好了文件后,可以發(fā)現(xiàn)“文件校驗”中的數(shù)據(jù)發(fā)生了變化??梢酝ㄟ^留意這個數(shù)據(jù)是否變化來確定打開文件是否成功。</p><p> 第三步就是設(shè)置串口。選擇適當(dāng)?shù)拇趨?shù)后就是下載,如圖5.3所示:</p
43、><p> 第四步就是下載觀察現(xiàn)象是否正確。</p><p><b> 5.3 總結(jié)</b></p><p> 經(jīng)過這次畢業(yè)設(shè)計,我在用專業(yè)知識、專業(yè)技能分析和解決問題的能力得到全面系統(tǒng)的鍛煉。而且在單片機應(yīng)用系統(tǒng)開發(fā)過程、單片機的基本原理,以及常用編程設(shè)計思路技巧方面都向前邁了一大步,為以后成為合格的人才打下堅實的基礎(chǔ)。</p>
44、<p> 同時,我也發(fā)現(xiàn)了很多不足之處,這需要在實踐中進(jìn)一步完善。在此次設(shè)計的整體過程中,我始終保持積極態(tài)度和韌性。其中在硬件電路設(shè)計的時候碰到了很大的阻力,通過耐心并且細(xì)致的深入的研究,找出了許多問題的出處,雖然最終沒有完全盡善盡美,但是這樣的一個過程,同樣使我得到了很多的磨練,受益良多。</p><p><b> 參考文獻(xiàn)</b></p><p>
45、; [1] 閻石. 數(shù)字電子技術(shù)基礎(chǔ). 高等教育出版社</p><p> [2] 徐愛均. 智能化測量控制儀表原理與設(shè)計. 北京航空航天大學(xué)出版社</p><p> [3] 張友德. 單片微型機原理、應(yīng)用與實驗. 復(fù)旦大學(xué)出版社</p><p> [4] 楊記文. 匯編語言程序設(shè)計教程. 清華大學(xué)出版社</p><p> 附錄A:基
46、于LCD的數(shù)據(jù)采集系統(tǒng)原理圖</p><p><b> 附錄B:源程序</b></p><p> #include<reg52.h></p><p> #include<intrins.h></p><p> #define uchar unsigned char</p>&
47、lt;p> #define uint unsigned int</p><p> uchar code L0[]={"0123456789-"};</p><p> uchar code L1[]={"WENDU:"};</p><p> uchar code L2[]={"."};</
48、p><p> uchar code L3[]={"cent"};</p><p> uchar code L4[]={"please key in "};</p><p> uchar code L5[]={"password "};</p><p> uchar KeyCtl[
49、4];</p><p> sbit RS=P1^0;</p><p> sbit RW=P1^1;</p><p> sbit E=P1^2;</p><p> sbit BF=P0^7;</p><p> sbit cs=P2^0;</p><p> sbit clk=
50、P3^6;</p><p> sbit dodi=P3^7;</p><p> sbit key1 = P1^4;</p><p> sbit key2 = P1^5;</p><p> sbit key3 = P1^6;</p><p> sbit key4 = P1^7;</p>
51、<p> uchar flag;</p><p> void delay(uchar x){ </p><p><b> uint i,j;</b></p><p> for(i=100;i>0;i--)</p><p> for(j=x;j>0;j--);</p><
52、;p><b> }</b></p><p> bit cmxh(void){ </p><p><b> bit mxh;</b></p><p><b> RS=0;</b></p><p><b> RW=1;</b><
53、/p><p><b> E=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b&g
54、t; _nop_();</b></p><p><b> mxh=BF;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b>
55、;</p><p><b> _nop_();</b></p><p><b> E=0;</b></p><p> return mxh;</p><p><b> }</b></p><p> void write_zl(uchar x)
56、</p><p><b> { </b></p><p> while(cmxh()==1);</p><p><b> RS=0;</b></p><p><b> RW=0;</b></p><p><b> E=0;&l
57、t;/b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> _nop_(); </p><p><b&g
58、t; P0=x;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b>&
59、lt;/p><p><b> E=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><
60、b> _nop_();</b></p><p><b> E=0;</b></p><p><b> }</b></p><p> void write_date(uchar y)</p><p><b> { </b></p>
61、<p> while(cmxh()==1);</p><p><b> RS=1;</b></p><p><b> RW=0;</b></p><p><b> E=0;</b></p><p><b> _nop_();</b>
62、</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> P0=y;</b></p><p>&l
63、t;b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> E=1;</b&
64、gt;</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p
65、><b> E=0;</b></p><p><b> }</b></p><p> void writeAdress(uchar Ad)</p><p><b> { </b></p><p> write_zl(Ad|0x80);</p&
66、gt;<p><b> }</b></p><p> void LCDINT() </p><p><b> { </b></p><p> delay(15);</p><p> write_zl(0x38);</p><p>
67、<b> delay(5);</b></p><p> write_zl(0x38);</p><p> delay(5); </p><p> write_zl(0x38);</p><p><b> delay(5);</b></p><p> w
68、rite_zl(0x0c);</p><p><b> delay(5);</b></p><p> write_zl(0x06);</p><p><b> delay(5);</b></p><p> write_zl(0x01);</p><p><b&g
69、t; delay(5);</b></p><p><b> }</b></p><p> uchar readadc0832(bit ch)</p><p><b> {</b></p><p> uchar i,data1=0,data2=0;</p><
70、;p><b> clk=0;</b></p><p><b> dodi=1;</b></p><p><b> cs=0;</b></p><p><b> clk=1;</b></p><p><b> clk=0;</
71、b></p><p><b> dodi=1;</b></p><p><b> clk=1;</b></p><p><b> clk=0;</b></p><p><b> dodi=ch;</b></p><p>
72、;<b> clk=1;</b></p><p> clk=0; dodi=1;</p><p> for(i=0;i<8;i++) </p><p><b> {</b></p><p><b> clk=1;</b></p>&
73、lt;p><b> clk=0;</b></p><p> if(dodi)data1|=0x80>>i;</p><p><b> }</b></p><p> for(i=0;i<8;i++)</p><p><b> {</b><
74、;/p><p> if(dodi)data2|=0x01<<i;</p><p><b> clk=1;</b></p><p><b> clk=0;</b></p><p><b> }</b></p><p><b>
75、cs=1;</b></p><p><b> dodi=1;</b></p><p><b> clk=1;</b></p><p> if(data1==data2)return(data1);</p><p><b> }</b></p>
76、<p> void xsL1()</p><p><b> { </b></p><p><b> uchar i;</b></p><p><b> delay(5);</b></p><p> writeAdress(0x00);</
77、p><p><b> i=0;</b></p><p> while(L1[i]!='\0')</p><p><b> { </b></p><p> write_date(L1[i]);</p><p><b> i++; </
78、b></p><p> delay(200);</p><p><b> }</b></p><p><b> }</b></p><p> void xsL2()</p><p><b> { </b></p
79、><p> uchar i; </p><p><b> delay(5);</b></p><p> writeAdress(0x09);</p><p><b> i=0;</b></p><p> while(L3[i]!='\0
80、9;)</p><p><b> { </b></p><p> write_date(L3[i]);</p><p><b> i++; </b></p><p> delay(200);</p><p><b> }</b></
81、p><p><b> }</b></p><p> void xsL3() //</p><p><b> { </b></p><p> writeAdress(0x49);</p><p> write_date('.');</
82、p><p> delay(200);</p><p><b> }</b></p><p> void xsL4()//</p><p><b> { </b></p><p> uchar i; </p>&l
83、t;p><b> delay(5);</b></p><p> writeAdress(0x00);</p><p><b> i=0;</b></p><p> while(L4[i]!='\0')</p><p><b> { </b>&
84、lt;/p><p> write_date(L4[i]);</p><p><b> i++; </b></p><p> delay(200);</p><p><b> }</b></p><p><b> }</b></p>
85、<p> void xsL5()//</p><p><b> { </b></p><p> uchar i; </p><p><b> delay(5);</b></p><p> writeAdress(0x40);</p
86、><p><b> i=0;</b></p><p> while(L5[i]!='\0')</p><p><b> { </b></p><p> write_date(L5[i]);</p><p><b> i++; </b
87、></p><p> delay(200);</p><p><b> }</b></p><p><b> }</b></p><p> void deplay_templ1(uint x)</p><p><b> { </b>
88、</p><p> uint j,k,l;</p><p><b> j=x/100;</b></p><p> k=(x%100)/10;</p><p><b> l=x%10;</b></p><p> writeAdress(0x06);</p>
89、<p> if(flag==1)</p><p><b> { </b></p><p> write_date(L0[10]);</p><p><b> }</b></p><p><b> else</b></p><p>
90、;<b> {</b></p><p> write_date(L0[j]);</p><p> delay(700);</p><p><b> }</b></p><p> write_date(L0[k]);</p><p> write_date(L0[l
91、]);</p><p> delay(50);</p><p><b> }</b></p><p> void deplay_templ2(uchar x)</p><p><b> { </b></p><p> writeAdress(0x4a);&l
92、t;/p><p> write_date(L0[x]);</p><p> delay(50);</p><p><b> }</b></p><p> void Init_Uart()</p><p><b> {</b></p><p>
93、TMOD=0x20;</p><p> TH1=TL1=0xFD;</p><p> SCON=0x50;</p><p> PCON=0x00;</p><p><b> TR1=1;</b></p><p><b> }</b></p><p
94、> void send_char(unsigned char txd)</p><p><b> { </b></p><p><b> SBUF=txd;</b></p><p> while(!TI);</p><p><b> TI=0;</b>
95、</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> uint temp,Data,shu = 3;</p><p> uchar KeyZhi=0,count=0,i;</p
96、><p><b> while(1)</b></p><p><b> {</b></p><p> if((KeyCtl[0]== 0x01)&(KeyCtl[1]== 0x02)&(KeyCtl[2]== 0x03)&(KeyCtl[3]== 0x03))</p><p&g
97、t;<b> {</b></p><p><b> xsL1();</b></p><p><b> xsL2();</b></p><p> deplay_templ1(Data);</p><p><b> } </b></p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- STC89C52單片機.doc
- STC89C52單片機.doc
- STC89C52單片機.doc
- stc89c52單片機.pdf
- stc89c52單片機.pdf
- STC89C52單片機.doc
- stc89c52單片機.pdf
- STC89C52單片機.doc
- 單片機課程設(shè)計---基于stc89c52的旋轉(zhuǎn)led時鐘
- STC89C52單片機.doc
- STC89C52單片機.doc
- STC89C52單片機.doc
- STC89C52單片機.doc
- stc89c52單片機.pdf
- STC89C52單片機.doc
- stc89c52單片機.pdf
- 單片機課程設(shè)計報告--基于stc89c52單片機的實驗平臺開發(fā)設(shè)計
- 單片機課程設(shè)計報告--基于stc89c52單片機的實驗平臺開發(fā)設(shè)計
- 單片機課程設(shè)計報告---基于stc89c52的溫度測控系統(tǒng)設(shè)計
- 基于stc89c52單片機的智能回收箱設(shè)計.doc
評論
0/150
提交評論