單片機的數(shù)字電壓表課程設計_第1頁
單片機的數(shù)字電壓表課程設計_第2頁
單片機的數(shù)字電壓表課程設計_第3頁
單片機的數(shù)字電壓表課程設計_第4頁
單片機的數(shù)字電壓表課程設計_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機課程設計單片機課程設計 題題 目:目: 基于單片機的數(shù)字電壓表基于單片機的數(shù)字電壓表 學院名稱:學院名稱: 電氣工程學院電氣工程學院 指導老師:指導老師: 班班 級:級: 學學 號:號: 學生姓名:學生姓名: 20102010 年年 1212 月月 3131 日日 2 單片機課程設計任務書單片機課程設計任務書 1課程設計的內容和要求(包括原始數(shù)據(jù)、技術要求、工作要求 等): 一、設計電壓測量電路 數(shù)字式電壓表是電壓測量的常用儀表,本課題即要求應用單片機、a/d 轉 換器及其他器件組成數(shù)字式電壓檢測儀表。 二、主要技術指標與要求: 被測電壓可數(shù)字顯示; 測量電壓范圍為 05v,精度為1v;

2、 電壓連續(xù)可調, 電壓超出測量范圍時,報警信號。 三設計思路 首先要對該設計進行分析,用 protel99 將該電路的原理圖繪出, 然后用匯編語言編寫出程序并畫出流程圖,再用仿真軟件進行仿真調試, 最后仿真通過,記錄仿真結果。 2對課程設計成果的要求包括圖表、實物等硬件要求: 設計電路,安裝調試或仿真,分析實驗結果,并寫出設計說明書。 要求圖紙布局合理,符合工程要求,所有的器件的選擇要有計算依據(jù)。 3 四主要參考文獻 1 何立民. 單片機高級教程,m. 北京:北京航空航天大學出 版社,2007 2 何立民. 單片機應用系統(tǒng)設計,m.北京:北京航空航天大學 出版社,1990 3 何立民. 單片機

3、應用技術選編 17,m.北京:北京航空航天 大學出版社,19931999 4 杭和平. 單片機原理與應用m. 北京:機械工業(yè)出版社, 2008 5 樓然苗. 51 系列單片機設計實例m. 北京:北京航空航天大 學出版社,2003 6 龍澤明. mcs-51 單片機原理及工程應用m.國防工業(yè)出版社, 2005 五課程設計工作進度計劃 序 號 起 迄 日 期工 作 內 容 1 2010-12-20布置任務,教師講解設計方法及要 求 22010-12-21學生查找閱讀資料,并確定方案 32010-12-22學生討論方案 42010-12-23設計及計算 52010-12-242010-12-29 制

4、作實物并寫說明書 62010-12-30答辯 72010-12-31答辯 主指導教 師 日期: 2010 年 12 月 20 日 4 基于單片機的數(shù)字電壓表的設計 內容摘要:內容摘要: 本次設計主要解決 a/d 轉換、數(shù)據(jù)處理及顯示鍵盤控制等模塊??刂葡到y(tǒng)采用 at89s52 單片機,a/d 轉換采用 adc0809。顯示采用 4 位 led 顯示數(shù)碼管的具有 電壓測量功能的具有一定精度的數(shù)字電壓表。簡易數(shù)字電壓表可以測量 05v 的 3 路輸入電壓值,并在四位 led 數(shù)碼管上輪流顯示或單路選擇顯示。 關鍵詞:關鍵詞: a/d 轉換 顯示電路 at89s51 單片機 鍵盤電路 仿真 引言:引

5、言: 數(shù)字電壓表是采用數(shù)字化測量技術,把連續(xù)的模擬量(直流輸入電壓)轉換成 不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。傳統(tǒng)的指針式電壓表功能單一、 精度低,不能滿足數(shù)字化時代的需求,采用單片機的數(shù)字電壓表,由精度高、 抗干擾能力強,可擴展性強、集成方便,還可與 pc 進行實時通信。目前,由各 種單片 a/d 轉換器構成的數(shù)字電壓表,已被廣泛用于電子及電工測量、工業(yè)自 動化儀表、自動測試系統(tǒng)等智能化測量領域,示出強大的生命力。與此同時, 由 dvm 擴展而成的各種通用及專用數(shù)字儀器儀表,也把電量及非電量測量技術 提高到嶄新水平。本文重點介紹單片 a/d 轉換器以及由它們構成的基于單片機 的數(shù)字電壓

6、表的工作原理。 5 一、一、 設計方案的制定和最優(yōu)選擇設計方案的制定和最優(yōu)選擇 .2 2 1.1 設計要求 .2 1.2 顯示元件的選擇 .2 1.3 模數(shù)轉換器的選擇 .2 1.3 單片機的選擇 .3 二、二、 系統(tǒng)總體設計及其原理圖系統(tǒng)總體設計及其原理圖 .5 5 2.1 系統(tǒng)總體設計框圖 .5 2.2 單片機系統(tǒng).5 2.3 ad 轉換電路.7 2.4 信號調理模塊.8 三、三、 軟件設計與流程軟件設計與流程.1111 3.1 程序設計流程圖 .11 3.2 各模塊的程序 .13 33 軟件的調試 .15 3.4keilc 的簡介.15 四、總結四、總結.1616 附錄一附錄一.1717

7、 6 一、設計方案的制定和最優(yōu)選擇設計方案的制定和最優(yōu)選擇 1.1 設計要求 (1)電壓測量范圍 0-5v; (2)能用數(shù)碼管顯示電壓值; (3)測量精度達 0.1v; (4)要求系統(tǒng)具備復位功能; 1.2 顯示元件的選擇 可供選擇的元件主要有液晶、點陣顯示器和數(shù)碼管等三種,基于經(jīng)濟,技 術難度等方面的客觀原因,采用數(shù)碼管顯示,數(shù)碼管顯示技術較為簡單,掌握 的比較熟練,且作為本設計的備選部件,能夠完全符合設計的要求,故采用數(shù) 碼管顯示數(shù)字 1.3 模數(shù)轉換器的選擇 我們選型的時候一般需要考慮以下一些參數(shù): 確定 a/d 轉換器的精度:精度是反映轉換器的實際輸出接近理想輸出的精確程 度的物理量。

8、 分辯率(resolution) 指數(shù)字量變化一個最小量時模擬信號的變化量,定義為滿 刻度與 2n 的比值。分辯率又稱精度,通常以數(shù)字信號的位數(shù)來表示。 量化誤差 (quantizing error) 由于 ad 的有限分辯率而引起的誤差,即有限分 辯率 ad 的階梯狀轉移特性曲線與無限分辯率 ad(理想 ad)的轉移特性曲線 (直線)之間的最大偏差。通常是 1 個或半個最小數(shù)字量的模擬變化量,表示 為 1lsb、1/2lsb。 在轉化過程中,由于存在量化誤差和系統(tǒng)誤差,精度會有所損失。其中量化誤 差對于精度的影響是可計算的,它主要決定于 a/d 轉換器件的位數(shù)。 選擇 a/d 轉換器的轉換速

9、率 轉換速率(conversion rate)是指完成一次從模擬轉換到數(shù)字的 ad 轉換所需的 時間的倒數(shù)。采樣時間則是另外一個概念,是指兩次轉換的間隔。為了保證轉 換的正確完成,采樣速率(sample rate)必須小于或等于轉換速率。常用單位是 ksps 和 msps,表示每秒采樣千/百萬次。 選擇合適的量程 模擬信號的動態(tài)范圍較大,有時還有可能出現(xiàn)負電壓。在選擇時,待測信號的 動態(tài)范圍最好在 a/d 器件的量程范圍內。 選擇 a/d 器件的輸出接口 a/d 器件接口的種類很多,有并行總線接口的,有 spi、i2c、1-wire 等串行總 線接口的。它們在原理和精度上相同,但是控制方法和接

10、口電路會有很大差異。 7 選擇 a/d 器件的通道數(shù)和封裝 這與系統(tǒng)有關,通道數(shù)要滿足整個采集系統(tǒng)的需要。封裝則決定 pcb 布板的時 候的大小,而且在高速應用的時候也影響連線的分布參數(shù)。 選擇 a/d 器件溫度范圍 這僅僅與一些苛刻的環(huán)境有關,注意每個 ad 有固定的應用的溫度范圍。 綜上標準,結合本次設計,選擇芯片 adc0809 來作為 a/d 轉換器,adc0809 是一塊 8 路 8 位模數(shù)轉換芯片,將模擬電路和數(shù)字電路集成在一個用 28 個功能 端的電路內,包含了 a/d 轉化、邏輯控制、譯碼驅動等電路,其轉換時間為 100s 左右,符合作品 8 路采集要求且電路設計簡單,電路板布

11、線不復雜,便 于焊接、調試。 1.3 單片機的選擇 因為在上單片機課的時候是以 51 單片機為模板學習的,故選擇 at89s52 單 片機來進行設計。 at89s52 at89s52 是一種低功耗、高性能 cmos8 位微控制器,具有 8k 在系統(tǒng)可編程 flash 存儲器。使用 atmel 公司高密度非易失性存儲器技術制造,與工業(yè) 80c51 產(chǎn)品指令和引腳完全兼容。片上 flash 允許程序存儲器在系統(tǒng)可編程, 亦適于常規(guī)編程器。在單芯片上,擁有靈巧的 8 位 cpu 和在系統(tǒng)可編程 flash,使得 at89s52 為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方 案。 at89s52

12、 引腳圖 p0 口是一個 8 位漏極開路的雙向 i/o 口。作為輸出口,每位能驅動 8 個 ttl 邏 8 輯電平。對 p0 端口寫“1”時,引腳用作高阻抗輸入。 當訪問外部程序和數(shù)據(jù)存儲器時, p0 口也被作為低 8 位地址/數(shù)據(jù)復 用。在這種模式下, p0 不具有內部上拉電阻。 在 flash 編程時,p0 口也用來接收指令字節(jié);在程序校驗時,輸出指 令字節(jié)。程序校驗 時,需要外部上拉電阻。 p1 口:p1 口是一個具有內部上拉電阻的 8 位雙向 i/o 口,p1 輸出 緩沖器能驅動 4 個 ttl 邏輯電平。對 p1 端口寫“1”時,內部上拉電阻把端口拉高,此 時可以作為輸入 口使用。作

13、為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將 輸出電流(iil) 。 此外,p1.0 和 p1.1 分別作定時器 /計數(shù)器 2 的外部計數(shù)輸入 (p1.0/t2)和定時器/計數(shù)器 2 的觸發(fā)輸入( p1.1/t2ex) ,具體如下表所示。 在 flash 編程和校驗時, p1 口接收低 8 位地址字節(jié)。 引腳號第二功能 p1.0 t2(定時器/計數(shù)器 t2 的外部計數(shù)輸入),時鐘輸出 p1.1 t2ex(定時器/計數(shù)器 t2 的捕捉/重載觸發(fā)信號和方向控制) p1.5 mosi(在系統(tǒng)編程用) p1.6 miso(在系統(tǒng)編程用) p1.7 sck(在系統(tǒng)編程用) p2 口:p2 口是一

14、個具有內部上拉電阻的 8 位雙向 i/o 口,p2 輸出 緩沖器能驅動 4 個 ttl 邏輯電平。對 p2 端口寫“1”時,內部上拉電阻把端口拉高,此 時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將 輸出電流(iil) 。 在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 movx dptr) 時,p2 口送出高八位地址。在這種應用中, p2 口使用很強的內部上 拉發(fā)送 1。在使用 8 位地址(如 movx ri)訪問外部數(shù)據(jù)存儲器時, p2 口輸出 p2 鎖存 器的內容。 在 flash 編程和校驗時, p2 口也接收高 8 位地址字節(jié)和一些

15、控制信號。 p3 口:p3 口是一個具有內部上拉電阻的 8 位雙向 i/o 口,p3 輸出 9 緩沖器能驅動 4 個 ttl 邏輯電平。對 p3 端口寫“1”時,內部上拉電阻把端口拉高,此 時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將 輸出電流(iil) 。 p3 口亦作為 at89s52 特殊功能(第二功能)使用,如下表所示。 在 flash 編程和校驗時, p3 口也接收一些控制信號。 端口引腳 第二功能 p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口) p3.2 into(外中斷 0) p3.3 int1(外中斷 1) p3.4 to(定時

16、/計數(shù)器 0) p3.5 t1(定時/計數(shù)器 1) p3.6 wr(外部數(shù)據(jù)存儲器寫選通 ) p3.7 rd(外部數(shù)據(jù)存儲器讀選通 ) 此外,p3 口還接收一些用于 flash 閃存編程和程序校驗的控制信號。 rst復位輸入。當振蕩器工作時, rst 引腳出現(xiàn)兩個機器周期以上 高電平將是單片機復位。 ale/prog當訪問外部程序存儲器或數(shù)據(jù)存儲器時, ale(地址鎖存允許) 輸出脈沖用于鎖存地址的低 8 位字節(jié)。一般情況下, ale 仍以時鐘振蕩頻 率的 1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要 注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ale 脈沖。 對 fla

17、sh 存儲器編程期間,該引腳還用于輸入編程脈沖( prog) 。 如有必要,可通過對特殊功能寄存器( sfr)區(qū)中的 8eh 單元的 d0 位 置位,可禁止 ale 操作。該位置位后,只有一條 movx 和 movc 指令才能將 ale 激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置 ale 禁止位無效。 psen程序儲存允許( psen)輸出是外部程序存儲器的讀選通信號, 當 at89s52 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次 psen 有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩 次 psen 信號。 ea/vpp外部訪問允許,欲使 cpu

18、 僅訪問外部程序存儲器(地址為 0000h-ffffh) ,ea 端必須保持低電平(接地)。需注意的是:如果加密位 lb1 被編程,復位時內部會鎖存 ea 端狀態(tài)。 如 ea 端為高電平(接 vcc 端) ,cpu 則執(zhí)行內部程序存儲器的指令。 flash 存儲器編程時,該引腳加上 +12v 的編程允許電源 vpp,當然這 必須是該器件是使用 12v 編程電壓 vpp。 xtal1:振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端。 10 xtal2:振蕩器反相放大器的輸出端。 一、一、 系統(tǒng)總體設計及其原理圖系統(tǒng)總體設計及其原理圖 2.1 系統(tǒng)總體設計框圖 本系統(tǒng)采用 at89s52 單片機作為控

19、制核心,以 adc0809 為數(shù)據(jù)采樣系統(tǒng),實現(xiàn) 被測電壓的數(shù)據(jù)采樣;使用系列比較器檢測輸入電壓的范圍,用共陰極數(shù)碼管 顯示結果。 2.2 單片機系統(tǒng) 單片機最小系統(tǒng)包括復位電路,晶振電路,電源電路,仿真時需搭建復位 電路和晶振電路。 晶振電路: 圖 圖 1.1 單片機最小系統(tǒng)如下所示,其中 p1 口用于驅動數(shù)碼管,p0 口用于接收 adc0809 轉換的數(shù)據(jù)。p2 口用于控制 adc0809。 輸入電壓 51 單片機 極性檢測 電壓檢測 顯示電路 ad 轉換 11 單片機最小系統(tǒng): 2.3 ad 轉換電路 利用 adc0809 作為 ad 數(shù)據(jù)采樣器件, adc0809 是 cmos 單片型

20、逐次逼近式 ad 轉換器它由 8 路模擬開關、地址鎖存與譯碼器、比較器、8 位開關樹型 da 轉 換器、逐次逼近。adc0809 的工作過程是:首先輸入 3 位地址,并使 ale=1,將 地址存入地址鎖存器中。此地址經(jīng)譯碼選通 8 路模擬輸入之一到比較器。start 上升沿將逐次逼近寄存器復位。下降沿啟動 ad 轉換,之后 eoc 輸出信號變 低,指示轉換正在進行。直到 ad 轉換完成,eoc 變?yōu)楦唠娖?,指?ad 轉 換結束,結果數(shù)據(jù)已存入鎖存器,這個信號可用作中斷申請。當 oe 輸入高電平 時,輸出三態(tài)門打開,轉換結果的數(shù)字量輸出到數(shù)據(jù)總線上。 adc0809 各個管教功能: in0in

21、7:8 路模擬量輸入端。 12 2-12-8:8 位數(shù)字量輸出端。 adda、addb、addc:3 位地址輸入線,用于選通 8 路模擬輸入中的一路 ale:地址鎖存允許信號,輸入,高電平有效。 start: ad 轉換啟動信號,輸入,高電平有效。 eoc: ad 轉換結束信號,輸出,當 ad 轉換結束時,此端輸出一個高 電平(轉換期間一直為低電平) 。 oe:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當 ad 轉換結束時,此端輸 入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。 clk:時鐘脈沖輸入端。要求時鐘頻率不高于 640khz。 ref(+) 、ref(-):基準電壓。 vcc:電源,單一5

22、v。gnd:接地。 adc0809 與單片機的連接。 x1 crystal c1 30pf c2 30pf r1 1k c3 10uf +5v xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/in

23、t0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1 15 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u1 at89c51 2 -1msb 21 add b 24 add a 25 add c 23 vref(+) 12 vref(-) 16 in3 1 in4 2 in5 3 in6 4 in7 5 start 6 2 -5 8 eoc 7 output enable 9 clock

24、 10 vcc 11 2 -2 20 gnd 13 2 -7 14 2 -6 15 2 -8lsb 17 2 -4 18 2 -3 19 in2 28 in1 27 in0 26 ale 22 u2 adc0809 +5v 2.4 信號調理模塊 該部分主要實現(xiàn)的功能是自動量程切換和電壓變換,模塊主要由電壓極性檢測 電路、電壓范圍粗測電路、電壓變換電路三部分組成。 電壓極性檢測電路 13 電壓極性檢測電路采用過零比較器檢測負電壓的方式實現(xiàn)的,運算放大器 lm324 的反向端接地,同向端通過 100k 電阻接輸入信號。 電壓范圍粗測電路 為了粗略地得到被測量的電壓范圍我們采用多組比較器的方式,通過

25、階梯 式比較的方法確定輸入電壓的范圍 量程切換電路 電路由衰減電阻、切換繼電器和運算放大器組成,對應的是衰減 1/2、1/3、1/4 和無零漂放大 50 倍,切換電路如圖所示。電壓變換到 0-5v 標 準信號后,再由 a/d 轉換進行采樣,最后由單片機算法還原。 總體原理圖及其接線 14 硬件連線: (1) 把“單片機系統(tǒng)”區(qū)域中的p1.0p1.7與“動態(tài)數(shù)碼顯示”區(qū)域中的 abcdefgh端口用8芯排線連接。 (2) 把“單片機系統(tǒng)”區(qū)域中的p2.0p2.7與“動態(tài)數(shù)碼顯示”區(qū)域中的 s1s2s3s4s5s6s7s8端口用8芯排線連接。 (3) 把“單片機系統(tǒng)”區(qū)域中的p3.0與“模數(shù)轉換模

26、塊”區(qū)域中的st端子用 4.導線相連接。 (4) 把“單片機系統(tǒng)”區(qū)域中的p3.1與“模數(shù)轉換模塊”區(qū)域中的oe端子用 導線相連接。 (5) 把“單片機系統(tǒng)”區(qū)域中的p3.2與“模數(shù)轉換模塊”區(qū)域中的eoc端子 用導線相連接。 (6) 把“單片機系統(tǒng)”區(qū)域中的p3.3與“模數(shù)轉換模塊”區(qū)域中的clk端子 用導線相連接。 15 (7) 把“模數(shù)轉換模塊”區(qū)域中的a2a1a0端子用導線連接到“電源模塊”區(qū) 域中的gnd端子上。 (8) 把“模數(shù)轉換模塊”區(qū)域中的in0端子用導線連接到“三路可調電壓模 塊”區(qū)域中的vr1端子上。 (9) 把“單片機系統(tǒng)”區(qū)域中的 p0.0p0.7 用 8 芯排線連接

27、到“模數(shù)轉換 模塊”區(qū)域中的 d0d1d2d3d4d5d6d7 端子上。 二、二、 軟件設計與流程軟件設計與流程 3.1 程序設計流程圖 主程序的流程圖 主程序流程圖 顯示子程序流程圖 顯示子程序采用動態(tài)掃描法實現(xiàn)四位數(shù)碼管的數(shù)值顯示。測量所得的 a/d 轉換 數(shù)據(jù)放在 70h77h 內存單元中,測量數(shù)據(jù)在顯示時需轉換成 10 進制 bcd 碼放在 78h7bh 單元中,其中 7bh 存放通道標志數(shù)。寄存器 r3 用作 8 路循環(huán)控制,r0 用作顯示數(shù)據(jù)地址指針。 開始 初始化 調用 a/d 轉換子程序 調用顯示子程序 16 顯示子程序流程圖 模/數(shù)轉換測量子程序 流程圖 模/數(shù)據(jù)轉換測量子程

28、序用來控制對 0809 八路模擬輸入電壓的 a/d 轉換,并將 對應數(shù) 70h77 h 內存單元。 17 啟動測試 n 取數(shù)據(jù)(p2.5=1) 0809地址加1 開始 結束 a/d轉換結束? 地址數(shù)小于8? n y y a/d 轉換流程圖 3.2 各模塊的程序 主程序 start: lcall clearmemio ;初始化 main:lcall test ;測量一次 lcalldisplay ;顯示數(shù)據(jù)一次 ajmp main nop ;pc 值出錯處理 nop nop ljmp start 顯示子程序: org 0 sjmp $ test:clra ;模/數(shù)轉換子程序 movp2,a mo

29、vr0,#70h ;轉換值存放首址 movr7,#03h ;轉換 8 次控制 lcalltestart ;啟動測試 wait:jbp3.2,movd ;等 a/d 轉換結束信號 ajmp wait 18 testart:setbp2.3 ;測試啟動 nop nop clrp2.3 setb p2.4 nop nop clrp2.4 nop nop nop nop ret movd: setb p2.5 ;取 a/d 轉換數(shù)據(jù) mova,p0 movr0,a clrp2.5 incr0 mova,p2 ;通道地址加 1 inca movp2,a cjne a,#03h,testend ;等 8

30、路 a/d 轉換結束 testend:jc testcon clra ;結束恢復端口 movp2,a mova,#0ffh movp0,a movp1,a movp3,a ret testcon:lcalltestart ljmpwait end a/d 轉換程序: unbcd: mov a,r0 ;255/51=5.00v 運算 movb,#51 divab mov7ah,a ;個位數(shù)放入 7ah mova,b ;余數(shù)大于 19h,f0 為 1,乘法溢出,結 果加 5 clrf0 subb a,#1ah 19 movf0,c mova,#10 mulab movb,#51 divab jbf

31、0,loop2 adda,#5 loop2:mov 79h,a ;小數(shù)后第一位放入 79h mova,b clrf0 subb a,#1ah movf0,c mova,#10 mulab movb,#51 divab jb f0,loop3 adda,#5 loop3: mov78h,a;小數(shù)后第二位放入 78h ret 33 軟件的調試 軟件調試的任務是利用開發(fā)工具 keil c51 進行在線仿真調試,發(fā)現(xiàn)和糾正 程序的錯誤,同時也能發(fā)現(xiàn)硬件的故障。軟件調試是一個模塊一個模塊進行的。 首先單獨調試各子程序是否能夠按照預期的功能,接口電路的控制是否正常。 最后調試整個程序。尤其注意的是各模塊間

32、能否正確的傳遞參數(shù)。 1. 檢查 led 顯示模塊程序。觀察在 led 上是否能夠顯示相應的字符。 2. 檢查按鍵模塊程序。 3所有程序運行正常后,在這個程序中加入中斷延時 50ms。 3.4keilc 的簡介 keil 軟件是目前最流行開發(fā) mcs-51 系列單片機的軟件,這從近年來各仿 真機廠商紛紛宣布全面支持 keil 即可看出。keil 提供了包括 c 編譯器、宏匯 編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通 過一個集成開發(fā)環(huán)境(uvision)將這些部分組合在一起。運行 keil 軟件需要 pentium 或以上的 cpu,16mb 或更多 ram、20m

33、以上空閑的硬盤空間、 20 win98、nt、win2000、winxp 等操作系統(tǒng)。掌握這一軟件的使用對于使用 51 系 列單片機的愛好者來說是十分必要的。 四、總結四、總結 經(jīng)過將近兩周的單片機課程設計,終于完成了數(shù)字電壓表的設計,這次設 計基本達到設計要求。 在本次設計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設計但 這次設計讓我增長很多知識。程序設計是一個很靈活的東西,它反映了我們解 決問題的邏輯思維和創(chuàng)新能力,它是一個設計的靈魂所在。因此在整個設計過 程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣 銜接各個子程序才是關鍵的問題所在,這需要對單片機的結構很熟

34、悉。通過我 們努力和老師的指導最終完成了程序設計。 要設計一個成功的電路,必須要有耐心,要有堅持的毅力。在整個電路的 設計過程中,花費時間最多的是各個單元電路的連接及電路的細節(jié)設計上,如 在多種方案的選擇中,我們仔細比較分析其原理以及可行的原因。這就要求我 們對硬件系統(tǒng)中各組件部分有充分透徹的理解和研究,并能對之靈活應用。通 過這次實訓,我在書本理論知識的基礎上又有了更深層次的理解。 在兩周的設計中,我受益匪淺,讓我對專業(yè)知識有了更深的理解,收獲知 識的同時,還收獲了閱歷,收獲了成熟與合作。我們通過查找大量資料,請教 老師,以及不懈的努力,不僅培養(yǎng)了獨立思考的能力還培養(yǎng)了動手操作能力。 更重要

35、的是我們學會了學習的方法,這是日后最實用的。面對社會的挑戰(zhàn),只 有通過不斷的學習和實踐才能完成知識的積累,才能更好的提高自己取得更好 的成績。 在這次課程設計的撰寫過程中,我得到了許多人的幫助。 首先我要感謝老師在課程設計上給予我的指導、提供給我的支持和幫助,這是 我能順利完成這次報告的主要原因,更重要的是老師幫我解決了許多技術上的 難題,讓我能把系統(tǒng)做得更加完善。在此期間,我不僅學到了許多新的知識, 而且也開闊了視野,提高了自己的設計能力。 其次,我要感謝幫助過我的同學,他們也為我解決了不少我不太明白的設計商 的難題。同時也感謝學院為我提供良好的做畢業(yè)設計的環(huán)境。 最后再一次感謝所有在設計中

36、曾經(jīng)幫助過我的良師益友和同學! 21 主要參考文獻 1 何立民. 單片機高級教程,m. 北京:北京航空航天大學 出版社,2007 2 何立民. 單片機應用系統(tǒng)設計,m.北京:北京航空航天 大學出版社,1990 3 何立民. 單片機應用技術選編 17,m.北京:北京航空 航天大學出版社,19931999 4 杭和平. 單片機原理與應用m. 北京:機械工業(yè)出版社, 2008 5 樓然苗. 51 系列單片機設計實例m. 北京:北京航空航 天大學出版社,2003 6 龍澤明. mcs-51 單片機原理及工程應用m.國防工業(yè)出版 社,2005 附錄一 org 0000h ljmp start org 0

37、003h reti org 000bh reti org 0013h reti org 001bh reti org 0023h reti org 002bh reti 22 初始程序中的各變量 clearmemio:clra mov p2,a mov r0,#70h mov r2,#0dh loopmem:mov r0,a inc r0 djnz r2,loopmem mov20h,#00h mova,#0ffh movp0,a movp1,a movp3,a ret 主程序 start: lcall clearmemio ;初始化 main:lcall test ;測量一次 lcalldi

38、splay ;顯示數(shù)據(jù)一次 ajmp main nop ;pc 值出錯處理 nop nop ljmp start 顯 示 控 制 程 序 display:jb00h,disp11 ;標志位為 1,則轉單路顯示控制子程 序 movr3,#03h ;8 路信號循環(huán)顯示控制子程序 movr0,#70h ;顯示數(shù)據(jù)初址 70h77h mov7bh,#00h ;顯示通道路數(shù)初值 disloop1:lcalltunbcd ;顯示數(shù)據(jù)轉為三位 bcd 碼存入 7ah、79h、78h movr2,#0ffh ;每路顯示時間控制在 4ms255,約 1s disloop2:lcalldisp ;調四位顯示程序

39、lcallkeywork1 ;按鍵檢測 23 djnz r2,disloop2 incr0 ;顯示下一路 inc7bh ;通道顯示數(shù)加 1 djnz r3,disloop1 ret disp11:mov a,7bh ;單路顯示控制子程序 subb a,#01h mov7bh,a adda,#70h movr0,a disloop11:lcalltunbcd;顯示數(shù)據(jù)轉為三位 bcd 碼存入 7ah、79h、78h movr2,#0ffh ;每路顯示時間控制在ms25 disloop22:lcalldisp ;調四位顯示程序 lcallkeywork2 ;按鍵檢測 djnz r2,disloop

40、22 inc7bh ;通道顯示數(shù)加 ret 顯示數(shù)據(jù)轉為三位 bcd 碼子程序 ;顯示數(shù)據(jù)轉為三位 bcd 碼存入 7ah、79h、78h(最大值 5.00v) unbcd: mov a,r0 ;255/51=5.00v 運算 movb,#51 divab mov7ah,a ;個位數(shù)放入 7ah mova,b ;余數(shù)大于 19h,f0 為 1,乘法溢出,結 果加 5 clrf0 subb a,#1ah movf0,c mova,#10 mulab movb,#51 divab jbf0,loop2 adda,#5 24 loop2:mov 79h,a ;小數(shù)后第一位放入 79h mova,b

41、clrf0 subb a,#1ah movf0,c mova,#10 mulab movb,#51 divab jb f0,loop3 adda,#5 loop3: mov78h,a;小數(shù)后第二位放入 78h ret 共陽顯示子程序,顯示內容在 78h7bh disp: movr1,#78h;共陽顯示子程序,顯示內容在 78h7bh movr5,#0feh ;數(shù)據(jù)在 p1 輸出,列掃描在 p3.0p3.3 play:mov p1,#0ffh mova,r5 anlp3,a mova,r1 movdptr,#tab movc a,a+dptr movp1,a jbp3.2,play1;小數(shù)點處理

42、 clrp1,7;小數(shù)點顯示(顯示格式為 xx.xx) play1:lcalldl1ms inc r1 mov a,p3 jnb acc.3,endout rl a movr5,a movp3,#0ffh ajmp play 25 endout:mov p3,#0ffh mov p1,#0ffh ret tab:db 0c0h,0f9h,0a4h,0b0h db 99h,92h,82h,0f8h,80h,90h,0ffh ;段碼表 延時程序 dl10ms:mov r6,#0d0h;10ms 延時子程序 dl1:mov r7,#19h dl2:djnzr7,dl2 djnz r6,dl1 ret

43、 電壓測量(a/d)子程序 ;一次測量數(shù)據(jù) 3 個,依次放入 70h72h 單元中 test:clra ;模/數(shù)轉換子程序 movp2,a movr0,#70h ;轉換值存放首址 movr7,#03h ;轉換 8 次控制 lcalltestart ;啟動測試 wait:jbp3.2,movd ;等 a/d 轉換結束信號 ajmp wait testart:setbp2.3 ;測試啟動 nop nop clrp2.3 setb p2.4 nop nop clrp2.4 nop nop nop nop ret movd: setb p2.5 ;取 a/d 轉換數(shù)據(jù) 26 mova,p0 movr0

44、,a clrp2.5 incr0 mova,p2 ;通道地址加 1 inca movp2,a cjne a,#03h,testend ;等 8 路 a/d 轉換結束 testend:jc testcon clra ;結束恢復端口 movp2,a mova,#0ffh movp0,a movp1,a movp3,a ret testcon:lcalltestart ljmpwait 按鍵檢測子程序 keywork1: jnbp3.5,key1 keyout:ret key1:lcalldisp ;延時消抖 jbp3.5,keyout wait11: jnbp3.5,wait12 cpl00h m

45、ovr2,#01h movr3,#01h ret wait12: lcall disp ;鍵釋放等待時顯示用 ajmpwait11 keywork2: jnb p3.5,key1 jnbp3.6,key2 ret key2:lcall disp ;延時消抖用 27 jb p3.6,keyout wait22: jnb p3.6,wait21 inc7bh mov a,7bh cjne a,#08h,keyout11 keyout11: jckeyout1 mov 7bh,#00h keyout1:ret wait21: lcall disp ;鍵釋放等待時顯示用 ajmp wait22 end

46、 加入中斷程序延時 50ms 的程序 org 0000h ljmp start org 0003h reti ljmp main org 000bh ljmp main1 reti org 0013h reti org 001bh reti org 0023h reti org 002bh reti ;初始化程序中的變量 clearmemio: clr a mov p2,a mov r0,#70h mov r2,#0dh loopmem: mov r0,a 28 inc r0 djnz r2,loopmem mov 20h,#00h mov a,#0ffh mov p0,a mov p1,a

47、mov p3,a ret ;主程序 start: lcall clearmemio main:lcall test lcall display ajmp main nop nop nop mov th0,#0f6h mov tl0,#03ch ljmp start main1:mov tcon,#01h mov tmod,#01h mov th0,#0f6h mov tl0,#3ch setb ea setb et0 setb tr0 sjmp $ lcall display ajmp main nop nop nop mov th0,#0f6h mov tl0,#03ch 29 ljmp s

48、tart ;顯示控制程序 display: jb 00h,disp11 mov r3,#03h mov r0,#70h mov 7bh,#00h disloop1: lcall tunbcd mov r2,#0ffh disloop2: lcall disp lcall keywork1 djnz r2,disloop2 inc r0 inc 7bh djnz r3,disloop1 ret disp11: mov a,7bh subb a,#01h mov 7bh,a add a,#70h mov r0,a disloop11: lcall tunbcd mov r2,#0ffh disloop22: lcall disp lcall

溫馨提示

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

評論

0/150

提交評論