版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 一、設(shè)計任務(wù)---------------------------------------------------1</p><p> 二、總體方案設(shè)計與方案論證------------------------------3</p><p> 三、總框圖及總體軟件設(shè)計說明---
2、------------------------6</p><p> 四、系統(tǒng)資源分配說明---------------------------------------11</p><p> 五、局部程序框圖及其設(shè)計說明---------------------------12</p><p> 六、系統(tǒng)功能與操作說明---------------------
3、---------------18</p><p> 七、調(diào)試記錄及調(diào)試結(jié)果------------------------------------18</p><p> 八、課程設(shè)計總結(jié)----------------------------------------------21</p><p> 九、源程序清單(詳細注釋)----------------
4、---------------22</p><p><b> 一、設(shè)計任務(wù)</b></p><p> 設(shè)計課題:智能雙路數(shù)字電壓表</p><p> 設(shè)計目的:通過小型微機應(yīng)用產(chǎn)品的設(shè)計與調(diào)試過程,運用《微機原理及接口技術(shù)》課程所學(xué)的基本知識,在設(shè)計中加以應(yīng)用,進而得到理解、鞏固和提高,學(xué)習(xí)掌握分析與解決實際問題的方法與手段,提高設(shè)計、編
5、程與調(diào)試的實際動手能力,作為工程技術(shù)工作的一次基本訓(xùn)練。</p><p> 設(shè)計任務(wù):設(shè)計一個以單片機為核心的智能雙路數(shù)字電壓表,通過多選一電子模擬開關(guān)及A/D轉(zhuǎn)換器巡回采集兩路被測電壓的數(shù)據(jù),進行信號處理及標度變換,以一定的節(jié)拍時間交替顯示,應(yīng)有顯見的符號標示被測信號源回路,并可通過按鈕開關(guān)操控凍結(jié)或切換顯示,可通過鍵盤進行參數(shù)設(shè)定,編程并在單片機實驗板上模擬調(diào)試實現(xiàn)。</p><p>
6、;<b> 基本設(shè)計要求:</b></p><p> 1、八位LED 7段數(shù)碼管顯示當(dāng)前檢測回路的標識、電壓值及其單位或其他界面信息。</p><p> 2、電壓測量范圍0V~4.96V,應(yīng)有輸入被測電壓超量程判斷及提示。</p><p> 3、應(yīng)采取數(shù)字濾波技術(shù)提高測量與顯示的穩(wěn)定性。</p><p> 4、
7、基本顯示模式為:兩路被測電壓值按設(shè)定的節(jié)拍交替測量與顯示,電壓值保留二位小數(shù)。</p><p> 5、設(shè)置一個“凍結(jié)”按鈕開關(guān)以操控進入或退出當(dāng)前回路的凍結(jié)顯示方式,凍結(jié)顯示期間每約0.5S更新一次測量值。</p><p> 6、設(shè)置一個“切換”按鈕開關(guān)以操控強行切換顯示下一檢測回路數(shù)據(jù)。</p><p> 7、對開關(guān)量輸入信號須進行軟件消抖動處理。</
8、p><p> 8、鍵盤設(shè)定交替測量顯示的節(jié)拍范圍為0.5S~5.0 S,設(shè)定分辨率0.1V,設(shè)定界面應(yīng)有醒目的當(dāng)前修改位提示。</p><p> 9、無操作時間超過30秒鐘后自動恢復(fù)為基本的運行狀態(tài)。</p><p> 功能擴展提示:(選做)</p><p> 1、開機進行接口部件及數(shù)碼顯示器、指示燈、訊響器等自檢。</p>
9、<p> 2、每隔一定的時間,穿插顯示實時鐘信息一定的時間,通過鍵盤設(shè)定其間隔參數(shù)。</p><p> 3、擴展顯示模式二:同時顯示兩路電壓測量數(shù)據(jù),每約0.5S更新一次測量值,電壓值保留一位小數(shù)。設(shè)置一個“模式”撥動開關(guān)以選擇兩種顯示模式之一。</p><p> 4、超上限告警功能,通過鍵盤設(shè)定電壓上限值范圍為0V~4.96V ,監(jiān)測到某回路電壓超上限時有相應(yīng)顯示內(nèi)容的
10、閃爍提示、超上限LED指示燈亮、訊響告警及繼電器觸點輸出控制功能。</p><p> 5、實現(xiàn)帶有回差的超上限告警功能,通過鍵盤設(shè)定回差值的范圍為±0 .10V~±0.50V,設(shè)定回差分辨率0.01V。</p><p> 6、添加超下限告警功能。</p><p> 7、添加多擋量程功能,如1.24V量程、0.31V量程。</p>
11、<p><b> 8、其他功能擴展。</b></p><p> 二、總體方案設(shè)計與方案論證</p><p> 本次課程設(shè)計是要設(shè)計出一個智能雙路數(shù)字電壓表,能符合實際應(yīng)用且充分考慮到客戶的需求?;诨镜脑O(shè)計要求,我采取了先設(shè)計出若干個具有不同功能的子模塊,再由主流程不斷循環(huán)調(diào)用,同時各個子模塊之間還可以通過設(shè)定標志位或調(diào)用同一單元進行彼此的相互關(guān)
12、聯(lián),采用這種模塊化的設(shè)計方式是為了使能使各個程序塊分工明確,設(shè)計思路清晰明了,降低程序復(fù)雜度,使程序設(shè)計、調(diào)試和維護等操作簡單化。</p><p> 由設(shè)計要求,將程序分為以下十四個模塊,分別是系統(tǒng)初始化、開關(guān)輸入與消抖、標度轉(zhuǎn)換、拆字送顯緩、鍵盤掃描、顯示更新、AD采集與數(shù)據(jù)滾存、交替顯示、凍結(jié)控制、切換控制、設(shè)定節(jié)拍、節(jié)拍位閃爍、設(shè)定模式下無操作控制、時鐘顯示。同時還增加一個主流程模塊,用于在后十三個模塊之
13、間不斷循環(huán)。實現(xiàn)電壓表的工作正常進行。</p><p> 由于電壓表具有不同的工作模式,在不同的模式下數(shù)碼管的顯示內(nèi)容是不同的,因此設(shè)計了一個進程代碼單元,使得在不同進程代碼下拆字送顯緩的內(nèi)容是不同的,同時由于某些功能只有在某個進程時方可以實現(xiàn),也可以通過判斷這個進程代碼單元的內(nèi)容來決定是否可以執(zhí)行該功能。采取這種控制方案便可以實現(xiàn)電壓表不同模式的顯示和控制。</p><p> 在模塊
14、化的程序結(jié)構(gòu)和用代碼單元來代表不同模式的大方案下,一下是每個模塊的具體方案:</p><p><b> 系統(tǒng)總初始化模塊</b></p><p> 在系統(tǒng)初始化模塊中需要向82C55芯片和A/D0809芯片的控制端口送入對應(yīng)的控制字,實現(xiàn)數(shù)碼管與鍵盤接口等的初始化,完成各PB按鍵、SW電平開關(guān)等端口的輸入輸出設(shè)定,同時還要在系統(tǒng)初始化模塊中給一些變量或存儲單元賦初
15、值,為系統(tǒng)開始工作做好準備。</p><p> 2.開關(guān)輸入與消抖模塊</p><p> 對PB口采用滾動濾波法實現(xiàn)開關(guān)消抖,將29H到2EH共7個單元作為開關(guān)輸入狀</p><p> 的存儲單元。其中2EH為新態(tài),2FH為前態(tài),29H、2AH、2BH、2CH、2DH存儲的是最近五次的電平值,通過比較近五次的電平值是否相等,若相等則將該值存入新態(tài)單元中,供后面
16、的其他模塊子程序調(diào)用。不相等則繼續(xù)存儲比較。同時在后面的其他模塊調(diào)用時,通過比較2EH與2FH的內(nèi)容就可以對開關(guān)的各種狀態(tài)進行判斷,同時還很好的消除了抖動的影響。</p><p><b> 3.標度轉(zhuǎn)換模塊</b></p><p> 在標度轉(zhuǎn)換模塊這里有兩種方案可供選擇:</p><p> 一種是首先判斷高位66H單元中式1還是0,若是1
17、,則對BCD碼的百位存放單元賦值2,而后對低位67H單元中的值除以一百取到百位值,加到BCD碼百位存放單元中,而后取余數(shù)除以十,整數(shù)加到十位存放單元中并判定若是和值超過10則百位加一,之后取除以十以后的余數(shù)加到個位單元中,然后再次判斷十位單元是否需要加1,乃至百位單元是否需要加1。但由于此種方法過于繁瑣,因此在調(diào)試模塊中改用xx老師提供的辦法寫出另一種實現(xiàn)方式的程序。</p><p> 高位依舊判斷是0還是1,
18、是1則低位的值應(yīng)加上256,所以只需在高位加2,而低位先加上56,再進行進位判斷。具體程序在調(diào)試報告中說明,但由于新寫好的程序未有機會調(diào)試,因此在程序清單部分中還是采用老方法。</p><p><b> 4.拆字送顯緩模塊</b></p><p> 在拆字送顯緩模塊中,需要對數(shù)碼管不同的顯示模式分開拆字送顯緩,因此進程代碼在這里就起到了很好的區(qū)別對待作用了。分別用
19、01,02,03,10,11代表進程模式為顯示第一路、顯示第二路、顯示時鐘、設(shè)定節(jié)拍整數(shù)位以及設(shè)定節(jié)拍小數(shù)位。同時在基本模式即第一第二路電壓值顯示狀態(tài)下,對數(shù)碼管其他位固定賦值“U1= V”“U2= V”即可,僅需對由標度轉(zhuǎn)換后的單元拆字送到需要顯示電壓值的四個數(shù)碼管對應(yīng)的顯緩單元中。而節(jié)拍設(shè)定模式下僅顯示兩位節(jié)拍值與節(jié)拍單位。</p><p><b> 5.鍵盤掃描模塊</b><
20、;/p><p> 鍵盤掃描方法共有線反轉(zhuǎn)法和掃描法。掃描法的思想是先把某一位置為低電平,其余位為高電平,然后檢查各電平的變化。弱某行線電平為低電平,則可確定此行列交叉點為按下鍵。但由于此方法需要多次掃描,過于麻煩,因而我們采用的是線反轉(zhuǎn)法。</p><p> 線反轉(zhuǎn)法就是通過兩步:第一步使列線全為輸出低電平,行線輸入,則行線由高變低所在行為按鍵所在行;第二步使使行線全為輸出低電平,列線輸入
21、,則列線由高變低所在列為按鍵所在列。</p><p> 同時設(shè)定兩個單元62H與61H為舊態(tài)單元與新態(tài)單元。判斷出鍵盤按下的鍵號存入61H中,可以通過比較61H與62H的內(nèi)容判斷鍵盤按鍵的狀態(tài)。并在其他子模塊中調(diào)用61H中的值實現(xiàn)不同按鍵的不同操作。</p><p><b> 6.顯示更新模塊</b></p><p> 本模塊的功能是將拆
22、字后顯示緩沖單元所存的內(nèi)容通過查表得相應(yīng)字段碼一一送往各個數(shù)碼管顯示,其中有包括對基本模式下電壓值的小數(shù)點以及節(jié)拍設(shè)定數(shù)據(jù)個位小數(shù)點的處理。</p><p> 7.AD采集與數(shù)據(jù)滾存模塊</p><p> 由于有雙路數(shù)據(jù),采用主流程循環(huán)奇數(shù)次對第一路進行采集并滾存,偶數(shù)次為另一路。同時由于AD轉(zhuǎn)換需要一定的轉(zhuǎn)換時間,所以采用先讀取某一路上一次轉(zhuǎn)換的結(jié)果,設(shè)四個單元滾存數(shù)據(jù),然后再啟動另
23、外一路下一次轉(zhuǎn)換的流程。每一路都滾存四個單元并求取其平均值,這羊能夠提高數(shù)據(jù)測量與顯示的穩(wěn)定性</p><p><b> 8.交替顯示模塊</b></p><p> 該模塊僅在進程模式為基本工作模式下進行,通過引入定時器中斷程序中的一個計時單元來判斷時間是否與設(shè)定節(jié)拍的時間相一致,一致時則切換到另一路顯示的進程中。</p><p><
24、b> 9.凍結(jié)控制模塊</b></p><p> 凍結(jié)控制是通過PB口上的按鍵PB2來控制的,當(dāng)PB2處于按下狀態(tài)就進入凍結(jié)模式,凍結(jié)模式下是能夠保持顯示此時的工作模式,沒有交替顯示,持續(xù)顯示第一路、第二路或時鐘模式,凍結(jié)模式下可以進行強制手動切換,但不能進入設(shè)定模式。</p><p> 10.強制切換控制模塊</p><p> 強制切換模
25、式是在進程代碼為01或者02即顯示第一路和第二路電壓的基本模式時方可實現(xiàn)的,由PB3按鍵控制,按下PB3按鍵能夠由當(dāng)前顯示的這一路立刻跳轉(zhuǎn)到顯示另一路電壓值。凍結(jié)模式下亦可強制切換。</p><p> 11. 節(jié)拍設(shè)定模塊</p><p> 節(jié)拍設(shè)定也是由PB口上的兩個按鍵來控制的,PB7鍵按下進入節(jié)拍設(shè)定模式,按下鍵盤上的數(shù)字鍵進行對節(jié)拍整數(shù)位和小數(shù)位的設(shè)定,同時設(shè)置兩個存儲單元一個
26、為臨時節(jié)拍單元用于拆字顯示,一個為確定節(jié)拍單元,用于交替顯示比較。PB0為確定鍵,當(dāng)確定鍵按下后將設(shè)定完的節(jié)拍值送入確定節(jié)拍單元,作為之后交替顯示的節(jié)拍時間。</p><p> 12.節(jié)拍位閃爍模塊</p><p> 此模塊是當(dāng)進入節(jié)拍設(shè)定時用于提示當(dāng)前為哪一位修改,其實現(xiàn)原理是將定時器中斷中的1S計時單元拿來分段,某一段中讓數(shù)碼管亮,而某一段對數(shù)碼管當(dāng)前位關(guān)顯示。當(dāng)整數(shù)位設(shè)定時有數(shù)字
27、鍵按下后立刻跳到小數(shù)位閃爍,不斷循環(huán)。</p><p> 13.設(shè)定時無操作控制模塊</p><p> 無操作是在設(shè)定模式下當(dāng)一定時間內(nèi)PB口與鍵盤上均無任意鍵按下時即跳轉(zhuǎn)回基本工作模式。通過引入定時器中斷中的一個計時單元來與設(shè)定的時間進行判斷,同時在鍵盤與PB口掃描程序中對案件有否按下進行判斷,按下則對該計時單元清零,由此實現(xiàn)無操作控制。</p><p>&l
28、t;b> 14.時鐘顯示模塊</b></p><p> 時鐘顯示模式的進程代碼為03,在定時器中斷子程序中能實現(xiàn)實時鐘功能,因此我們只需在交替顯示模塊中沒交替幾輪后便使進程代碼跳為顯示時鐘的模式,而后由拆字子程序拆存放時鐘時分秒值的那幾個單元便可以在數(shù)碼管上每幾個輪回顯示一次實時鐘。</p><p> 三、總框圖及總體軟件設(shè)計說明</p><p&
29、gt; 1.總體軟件模塊圖如下所示:</p><p><b> 設(shè)定節(jié)拍控制 </b></p><p> 設(shè)定節(jié)拍位閃爍控制 </p><p> 設(shè)定模式下定時實現(xiàn)無操作</p><p><b> 時鐘顯示</b></p><p><b> 總體軟件設(shè)計
30、說明:</b></p><p> 單片板一上電后首先進行系統(tǒng)的初始化,對兩片82C55芯片的控制口寫入控制字,完成各端口的輸入輸出設(shè)定,定義82C55(U3)為數(shù)碼管顯示與矩陣鍵盤接口</p><p> A和B口輸出字段字位,C口輸入。82C55(U5)為LED顯示,開關(guān),按鍵接口,A口輸出驅(qū)動L8-15,B口輸入按鍵P0-7,C口輸入電平開關(guān)SW0-7。同時給一些變量或存
31、儲單元賦初值,開T0中斷,初始化T0定時方式為方式2,TH0、TL0均賦初值為48H。</p><p> 在進入主循環(huán)之前,先進行九輪調(diào)用AD采集子模塊,目的是為了讓四個滾存單元先存好AD轉(zhuǎn)換的值以便在第一次調(diào)用標度轉(zhuǎn)換時就可以以準確的AD轉(zhuǎn)換值進行計算,保證了測量的穩(wěn)定性。</p><p> 之后進入主循環(huán),首先調(diào)用的是開關(guān)輸入及消抖子程序,放在最開始的目的是為了方便后續(xù)子模塊對PB
32、口按鍵開關(guān)的使用,本次設(shè)計普遍采用按鍵下降沿有效,因此后續(xù)模塊只需判斷弱前態(tài)為高電平,新態(tài)為低電平即按鍵按下,進行操作即可。</p><p> 接下來調(diào)用的是標度轉(zhuǎn)換子模塊,之所以要將標度轉(zhuǎn)換放在主流程調(diào)用的前端是為了能夠在第一輪就有AD轉(zhuǎn)換后轉(zhuǎn)成可顯示的BCD碼電壓值輸出顯示,標度轉(zhuǎn)換約每0.5s調(diào)用一次,因此在子程序開頭應(yīng)有判斷主流程循環(huán)50次后方進行一次標度轉(zhuǎn)換。</p><p>
33、 接下來調(diào)用的是拆字送顯緩模塊,拆字送顯緩中每次對進程代碼單元內(nèi)的內(nèi)容進行判斷,根據(jù)各個不同進程代碼進入到相應(yīng)的拆字模塊中進行不同的拆字,在拆字送顯緩模塊中還應(yīng)對基本工作模式下的第一路和第二路電壓值進行判斷,看是否有超過最大量程4.96V,若有超量程應(yīng)有超量程提示,此時數(shù)碼管會顯示出’“UI=1---V”或“U2=1---V”。</p><p> 拆字送顯緩模塊調(diào)用完后進入鍵盤掃描模塊,鍵盤掃描模塊即用線反轉(zhuǎn)
34、法判斷出哪個鍵號按下,鍵號存入61H單元中以供后用。而后進入顯示更新模塊中,本模塊的功能是將顯緩單元中的內(nèi)容通過查表得相應(yīng)字段碼一一送往對應(yīng)的顯示緩沖單元顯示,該模塊包括對電壓值的個位小數(shù)點的處理,當(dāng)判斷查表轉(zhuǎn)到33H單元時,就將33H中的內(nèi)容附上小數(shù)點。</p><p> 接下來是AD采集模塊,AD采集模塊中分兩路輪流采集,主流程循環(huán)奇次采集U1電壓,偶次循環(huán)采集U2電壓,每次采集都讀取一次AD轉(zhuǎn)換后的值存到
35、四個滾存單元的最外層,同時四個滾存單元滾存一輪,則每個單元的值都滾到下一單元,而最內(nèi)側(cè)單元的值是最早讀取的則被覆蓋。然后再啟動另一路電壓的AD轉(zhuǎn)換,用主流程10ms的時間作為轉(zhuǎn)換的延時時間。因此AD采集是每10MS采集一次。</p><p> 而后是交替顯示模塊,除了基本的實現(xiàn)按照節(jié)拍設(shè)定的時間來交替顯示外,為保證一輪交替后能夠立刻顯示最新的電壓值,因此在一輪交替后會將標度轉(zhuǎn)換子程序開頭的計數(shù)單元賦值1,從而能
36、夠在隨后調(diào)用標度轉(zhuǎn)化時立刻減一開始標度轉(zhuǎn)換。同時在一輪交替完也會進行對27H計數(shù)單元加一,以實現(xiàn)達到一定交替次數(shù)后進行一次時鐘顯示。</p><p> 凍結(jié)模塊是PB口上的PB2按鍵控制,按下凍結(jié)當(dāng)前路顯示,再次按下退出。強制切換模式是由PB3按鍵控制,按下就會強制跳到另一路的電壓顯示,這兩種控制在跳轉(zhuǎn)到另一路時都要對交替顯示中的計時單元置零,使之能正常的進行交替顯示,否則當(dāng)該計時單元超過設(shè)定節(jié)拍單元后會一直增
37、加到FFH,再回到00H,這樣會使得某一路顯示得特別長時間。</p><p> 設(shè)定與閃爍模塊的工作模式是,按下PB7,則設(shè)定節(jié)拍單元將初始節(jié)拍值送臨時節(jié)拍單元,則此時數(shù)碼管會顯示臨時節(jié)拍單元的節(jié)拍值,同時整數(shù)位閃爍,表示此時數(shù)字鍵按下會改變整數(shù)位值,當(dāng)有數(shù)字鍵按下則小數(shù)位立刻開始閃爍,此時進入設(shè)定小數(shù)位,當(dāng)有數(shù)字鍵按下后又會返回到整數(shù)位的設(shè)定,而按下的鍵號都會立刻送到臨時節(jié)拍單元,直到確定鍵PB0按下,便會將
38、此時臨時節(jié)拍單元存的值送回確定節(jié)拍單元中。這便是新的節(jié)拍。而在設(shè)定完成后回到基本工作模式也要對標度轉(zhuǎn)換的計數(shù)單元賦值為1.</p><p> 無操作模塊子程序主要是執(zhí)行計時單元與設(shè)定時間相一致時返回基本工作模式,而具體判斷有否按鍵按下則主要在鍵盤掃描與PB口開關(guān)消抖子模塊中判定。</p><p> 四、系統(tǒng)資源分配說明</p><p> AT89S51片內(nèi)存儲
39、單元分配:</p><p> 五、局部程序框圖及其設(shè)計說明</p><p> 之前的介紹都是按照主流程調(diào)用模塊的順序來介紹,接下來為方便了解整體的工作思路,將按照電壓表工作模式來介紹。</p><p><b> AD采集模塊</b></p><p> 實現(xiàn)輪流采集AN0,AN1兩路AD轉(zhuǎn)換后的值并滾存到四個滾存單
40、元中,同時啟動另一路的轉(zhuǎn)換</p><p> 奇次 偶次</p><p> 讀取AN0(U1) AD轉(zhuǎn) 讀取AN0(U1) AD轉(zhuǎn)</p><p> 換的值,進行一次滾存,
41、 換的值,進行一次滾存,</p><p> 啟動AN1的AD轉(zhuǎn)換 啟動AN1的AD轉(zhuǎn)換</p><p><b> 2.標度轉(zhuǎn)換模塊</b></p><p> 實現(xiàn)將4個滾存單元中的值相加求平均值,然后轉(zhuǎn)換成BCD碼輸出顯示到數(shù)碼管上</p><
42、p><b> 否</b></p><p><b> 67H單元加1</b></p><p> 是 </p><p> 將四個滾存單元內(nèi)的值</p><p><b> 相加,和的高位存入</b></p><p>
43、 4AH,低位存入4BH</p><p> 將存低位的4BH中的值乘上</p><p> 125,乘完后高位存64H</p><p> 高位存65H,此為低位乘法</p><p> 將存高位的4AH中的值乘上</p><p> 125,乘完后高位存66H,</p><p> 高位存
44、67H,此為高位乘法</p><p> 4AH與4BH乘完125后的</p><p> 值進行錯位相加,即64H加</p><p> 上67H,值存入67H中</p><p> 是 否</p><p><b> 66H加1</b></p>&l
45、t;p><b> 3.節(jié)拍設(shè)定模塊</b></p><p> 節(jié)拍設(shè)定模塊就是當(dāng)設(shè)定鍵(PB7)按下后進入節(jié)拍設(shè)定模式,確定鍵(PB0)退出</p><p><b> 開關(guān)消抖子模塊</b></p><p> 實現(xiàn)對PB口采用滾動濾波法實現(xiàn)開關(guān)消抖,將29H到2EH共7個單元作為開關(guān)輸入狀</p>
46、<p> 的存儲單元。其中2EH為新態(tài),2FH為前態(tài)同時在后面的其他模塊調(diào)用時,通過比較2EH與2FH的內(nèi)容就可以對開關(guān)的各種狀態(tài)進行判斷,同時還很好的消除了抖動的影響。</p><p><b> 交替顯示模塊</b></p><p> 通過引入定時器中斷程序中的一個計時單元來判斷時間是否與設(shè)定節(jié)拍的時間相一致,一致時則切換到另一路顯示的進程中。&
47、lt;/p><p> 當(dāng)計時單元與確定節(jié) 當(dāng)計時單元與確定節(jié)拍單</p><p> 拍單元的值相等時 ,對 元的值相等時,對20H單元</p><p> 20H單元賦值為02 賦值為01</p>
48、<p><b> 6.凍結(jié)模塊</b></p><p> 凍結(jié)控制是通過PB口上的按鍵PB2來控制的,當(dāng)PB2處于按下狀態(tài)就進入凍結(jié)模式,凍結(jié)模式下是能夠保持顯示此時的工作模式,沒有交替顯示,持續(xù)顯示第一路、第二路或時鐘模式</p><p><b> 7.無操作模塊</b></p><p> 無操作是在設(shè)
49、定模式下當(dāng)一定時間內(nèi)PB口與鍵盤上均無任意鍵按下時即跳轉(zhuǎn)回基本工作模式。通過引入定時器中斷中的一個計時單元來與設(shè)定的時間進行判斷,同時在鍵盤與PB口掃描程序中對案件有否按下進行判斷,按下則對該計時單元清零,由此實現(xiàn)無操作控制</p><p><b> 8.強制切換模塊</b></p><p> 強制切換模式是在進程代碼為01或者02即顯示第一路和第二路電壓的基本模
50、式時方可實現(xiàn)的,由PB3按鍵控制,按下PB3按鍵能夠由當(dāng)前顯示的這一路立刻跳轉(zhuǎn)到顯示另一路電壓值。</p><p> 六、系統(tǒng)功能與操作說明</p><p><b> 系統(tǒng)功能</b></p><p> 本次設(shè)計的是一個以單片機為核心的雙路巡回采集電壓表系統(tǒng)。顯示儀表是8個數(shù)碼管,每路的電壓值在通過A/D轉(zhuǎn)換巡回采集以及進行數(shù)據(jù)的處理和變
51、換后,能以一定的節(jié)拍時間(2S)在數(shù)碼管上巡回顯示且不斷更新每一路的最新電壓值,其中數(shù)碼管的最高兩位顯示當(dāng)前采集并轉(zhuǎn)換的電壓值,最低位顯示電壓的符號V,左數(shù)第三位顯示等號,左數(shù)第四.五、六、七位顯示電壓值??刹僮鞴δ苡校?lt;/p><p> 1.可通過按動PB按鍵上的PB2與PB3進行對電壓顯示的凍結(jié)和強行切換;</p><p> 2.按鍵PB7可以控制進入交替顯示的節(jié)拍設(shè)定模式,PB0
52、是確定鍵控制電壓表按照設(shè)定的節(jié)拍進行交替顯示,當(dāng)初在設(shè)定模式下,若是30秒內(nèi)無任意鍵按下,將會自動返回到基本工作模式。</p><p> 同時該電壓表會在每交替顯示5次后穿插顯示一次時鐘,且由于該電壓表量程為0~4.96V,當(dāng)超過最大值4.96V時會有超上限顯示</p><p><b> 操作說明</b></p><p> 單板機上電以后
53、,先要等待約1S的時間等待芯片上電復(fù)位結(jié)束,然后進入主程序流程,在數(shù)碼管上可以看到能以一定的節(jié)拍時間(2S)在數(shù)碼管上依序顯示兩路電壓的序號及電壓值,其中數(shù)碼管的最高兩位顯示當(dāng)前采集并轉(zhuǎn)換的電壓值,最低位顯示電壓的符號V,左數(shù)第三位顯示等號,左數(shù)第四.五、六、七位顯示電壓值。同時每交替顯示5輪后將會出現(xiàn)一次實時鐘,顯示當(dāng)前時間。</p><p> PB7與PB0按鍵是分別用來控制設(shè)定節(jié)拍與節(jié)拍設(shè)定結(jié)束的確定按鍵
54、。通過按下PB7按鍵進入節(jié)拍設(shè)定的整數(shù)位設(shè)定,此時可以看到節(jié)拍的整數(shù)位開始閃爍,按下鍵盤上的數(shù)字鍵后整數(shù)位值立刻被改變,同時小數(shù)位閃爍,表示進入小數(shù)位的設(shè)定,再按下任意數(shù)字鍵,將會再次返回到整數(shù)位的設(shè)定,直到PB0確定鍵按下后,系統(tǒng)將會回到基本工作模式,同時按照設(shè)定好的節(jié)拍進行交替顯示。若是進入設(shè)定模式按下確定鍵之前,沒有任意鍵按下則30S內(nèi)會自動回到基本工作模式下。</p><p> PB2按鍵是控制進入與退
55、出凍結(jié)模式,凍結(jié)模式將會靜止在當(dāng)前電壓的顯示路上,同時每0.5s更新顯示值。PB3按鍵是實現(xiàn)強制切換,按下可以是現(xiàn)在兩路電壓之間不斷切換顯示。</p><p> 在基本工作模式下,旋轉(zhuǎn)AN0與AN1上的電位器,可以觀察到兩路電壓值均會發(fā)生變化,從0V~4.96V,AN0電位器對應(yīng)U1路的顯示值,AN1電位器對應(yīng)U2路顯示,由于最大值為4.96V,所以當(dāng)旋轉(zhuǎn)電位器時值大于4.96V后,將會出現(xiàn)超量程提示。<
56、/p><p> 七、調(diào)試記錄及調(diào)試結(jié)果</p><p> 在設(shè)計的最初兩天,我們一接到老師布置的設(shè)計任務(wù)書,就開始緊鑼密鼓的構(gòu)思程序的設(shè)計了,在老師提示的用一個進程單元存放不同代碼以區(qū)別不同顯示模式的思路下,我們首先便有了一個大致的框架,因此我先編寫出了系統(tǒng)初始化,拆字送顯緩模塊,顯示更新模塊和交替顯示模塊,在第一天調(diào)試我就成功實現(xiàn)已編寫程序的功能,當(dāng)下感到備受鼓舞,而之后我便開始啃節(jié)拍設(shè)
57、定以及鍵盤掃描程序這塊相對較難啃的骨頭,結(jié)果第二天調(diào)試來調(diào)試去始終毫無斬獲,沮喪之余便轉(zhuǎn)而改寫凍結(jié)或外切換功能,待這兩個功能實現(xiàn)后方才又重新回去調(diào)試節(jié)拍設(shè)定與鍵盤功能。</p><p> 在節(jié)拍設(shè)定編寫的一開始,我犯了一個常識性錯誤,以為在整數(shù)位設(shè)定完后按下確定鍵方才進行小數(shù)位的設(shè)定,而小數(shù)位設(shè)定完后再按下確定鍵才把節(jié)拍值送到確定單元中。而事實上在生產(chǎn)實際中,均是在整數(shù)與小數(shù)位之間不斷巡回,直到最終確定鍵按下才
58、送入確定單元中,因此我對自己的設(shè)計思路重新進行了修正。另外在拆字送顯緩模塊中將整數(shù)位的設(shè)定模式與小數(shù)位的設(shè)定模式歸為一類使得一開始始終無法進入到設(shè)定的界面中。一分開后就能夠正常的實現(xiàn)了。</p><p> 另外在我進行退出凍結(jié)模式,或者是設(shè)定完后返回基本工作模式時,總是要等很長時間才會進入2S的交替顯示狀態(tài),而后在老師的提示下我才明白原來是在要返回時沒有對交替顯示的計時單元清零,因此那個單元一直在進行加運算,自
59、然會延時很長的時間。</p><p> 而后無操作模塊中,調(diào)試的時候我設(shè)定的是無按鍵按下開始算起10S后回到基本工作模式,可是事實上變成從已進入設(shè)定模式無論有無按鍵按下均10S后自動跳回,究其原因原來是對按鍵按下的判定錯誤導(dǎo)致無法實現(xiàn)從最后一次按鍵按下之后開始延時。</p><p> 以上便是第一周調(diào)試時出現(xiàn)的比較記憶深刻的問題,第二周開始調(diào)試AD采集與滾存以及標度轉(zhuǎn)換模塊。我先調(diào)試標
60、度轉(zhuǎn)換子模塊,由于邊度轉(zhuǎn)換子模塊要實現(xiàn)較多的功能,因此我將這個子模塊下面又分成幾個小塊,并分塊進行調(diào)試,直至所有小塊均調(diào)試成功后才合并在一起最終調(diào)試。但是一開始我沒弄明白AD采集與標度轉(zhuǎn)換的關(guān)系,以為是每一路的標度轉(zhuǎn)換也是按照主流程循環(huán)奇次或者偶次決定哪一路進行標度轉(zhuǎn)換,因此程序編寫有誤。在最終求出的二進制電壓平均值要轉(zhuǎn)換成BCD碼的變換程序中,我采用的方法是首先判斷高位66H單元中式1還是0,若是1,則對BCD碼的百位存放單元賦值2,
61、而后對低位67H單元中的值除以一百取到百位值,加到BCD碼百位存放單元中,而后取余數(shù)除以十,整數(shù)加到十位存放單元中并判定若是和值超過10則百位加一,之后取除以十以后的余數(shù)加到個位單元中,然后再次判斷十位單元是否需要加1,乃至百位單元是否需要加1。但由于此種方法過于繁瑣,因此改用xx老師提供的辦法,高位依舊判斷是0還是1,是1則低位的值應(yīng)加上256,所以只需在高位加2,而低位先加上56,再進行進位判斷,這樣步驟便變得簡單了許多。</
62、p><p><b> 以下是修改程序:</b></p><p> MOV A,66H ;對66H單元判斷是1還是0</p><p> CJNE A,#01,ZB11;不相等跳轉(zhuǎn)</p><p> MOV 68H,#2 ;是1的話,百位賦值為2</p><p> MOV A,67H ;取出低字
63、節(jié)單元內(nèi)容</p><p> MOV B,#100 ;對B賦值100</p><p> DIV AB除以100</p><p> ADD A,#02H;商值加2</p><p> MOV 68H,A;送68H單元</p><p> MOV A,B;余數(shù)送A</p><p> ADD
64、A,#56;余數(shù)加56</p><p> MOV B,#100;對B賦值100</p><p> DIV AB;余數(shù)加56后除以100</p><p> ADD A,68H;商值與高字節(jié)68H單元相加</p><p> ZB11:MOV 68H,A;高字節(jié)值送68H單元</p><p> MOV A,B;取出
65、余數(shù)(低字節(jié)值)</p><p> MOV B,#10;對B賦值10</p><p> DIV AB;余數(shù)除以10</p><p> MOV 69H,A;商值送69H單元</p><p> MOV 6AH,B;余數(shù)值送6AH單元</p><p><b> ZBT: RET</b><
66、/p><p><b> 八、課程設(shè)計總結(jié)</b></p><p> 大學(xué)的課程設(shè)計是從大三開始的,而印象中最深的莫過于數(shù)字電子的課程設(shè)計與這次微機的課程設(shè)計了,還記得上學(xué)期數(shù)字電子的課程設(shè)計那兩周時間內(nèi),熬夜布線畫圖,洗板是遇到質(zhì)量問題接連換了三塊板,而后期在調(diào)試時也是充滿了各種緊張與挫折。經(jīng)歷了上學(xué)期的歷練,我感覺這次的課程設(shè)計我會相對更沉穩(wěn)一些,設(shè)計與調(diào)試中也會更
67、加有自信與有把握一些了,但是由于在第一周的周末急需回家辦理赴海外考試的手續(xù),為怕耽誤設(shè)計我在第一周也盡量抓緊將程序設(shè)計妥當(dāng),以至于晚上也去調(diào)試,后來才知道實驗室老師是因為我要去才留下來值班,真的是十分過意不去,辛苦了這位實驗室的老師了。</p><p> 在第一周的調(diào)試時,我進行的比較順利,因此在老師提供AD采集與標度轉(zhuǎn)換的方法之前我已將其他功能調(diào)試妥當(dāng),而之后第二周的調(diào)試就略顯緊張與急躁了,在發(fā)現(xiàn)問題時我不夠
68、冷靜,沒有盡力去思索如何發(fā)現(xiàn)問題,而是總想求助于同學(xué)和老師,這點是不可取的,但是它又有一個好處就是當(dāng)我求助于班級里的高手或者是詢問老師時會發(fā)現(xiàn)有時候一個高手在你身邊為你指出錯誤還不如教你如何排查并找出這個錯誤, 通過詢問我也學(xué)會了如何更加全面的運用KEIL軟件以及如何迅速的縮小范圍以及找出錯誤點,這點是在平時上課時學(xué)不到的,收獲確實很大。另外,在設(shè)計時在我思路卡殼的時候,我也會求助于班上已經(jīng)設(shè)計出來了的同學(xué),并且學(xué)到了不少好的設(shè)計思路與
69、好的想法,這也要得益于大家在這兩周的時間都是全情投入且始終樂于交流彼此的想法并熱于幫助他人解答疑惑,這種氛圍真的很美妙,我想這也是課程設(shè)計的真諦之一吧,促進大家一同來進行頭腦風(fēng)暴,并搭建一個互相交流研究的平臺,以促進我們更好的進步。</p><p> 兩周的實習(xí)收獲著實很大,當(dāng)然也有很痛苦的時候,比如一整天都對著電腦,眼睛會很疲勞,也有研究程序到半夜一兩點的,但身邊的人的這種熱情確實讓我真實的感受到了一種工科人
70、對工作的認真的投入精神,兩周的實習(xí)老師也陪伴了我們兩周,xx老師的治學(xué)嚴謹,要求嚴格甚至較苛刻與平時的和藹可親和循循善誘的反差也給我們留下了深刻的印象,現(xiàn)在“有錯就改”已經(jīng)成為了我們生活中的口頭禪了。我還記得在上單片機的第一節(jié)課的時候xx老師說要給我們洗腦,洗成一個合格的工科人,我想經(jīng)過一學(xué)期的學(xué)習(xí)我確實深刻的感受到了這一點,記得在大一大二的時候我總認為自己學(xué)不來這個專業(yè),學(xué)不來工科,但是現(xiàn)在我其實已經(jīng)完完全全的拋棄了這個想法并且總是能
71、積極的投入到每一門學(xué)科的學(xué)習(xí)中去,我想這和我們系里對與人才的培養(yǎng)以及每一位教過我的老師的優(yōu)秀的教學(xué)方法和嚴格要求是分不開關(guān)系的。因此當(dāng)xx老師在答辯時問我說喜不喜歡挑戰(zhàn),我的答案是是的,現(xiàn)在我會珍惜每一次挑戰(zhàn),因為在大學(xué)里的每一次挑戰(zhàn)就是在我們進入社會之前的每一塊奠基石。在此謝謝老師對我的歷練,培養(yǎng)以及幫助,還有實驗室老師的幫助,還有在這兩周內(nèi)幫助過我的同學(xué)們。感謝xx老師對我們用心的栽培,還有</p><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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計-數(shù)字電壓表
- 單片機課程設(shè)計---數(shù)字電壓表
- 單片機課程設(shè)計-數(shù)字電壓表
- 單片機(數(shù)字電壓表)課程設(shè)計
- 單片機課程設(shè)計----數(shù)字電壓表
- 單片機課程設(shè)計-數(shù)字電壓表
- 單片機課程設(shè)計--數(shù)字電壓表
- 單片機課程設(shè)計--數(shù)字電壓表
- 單片機課程設(shè)計---數(shù)字電壓表設(shè)計
- 單片機課程設(shè)計---數(shù)字電壓表設(shè)計
- 單片機課程設(shè)計---數(shù)字電壓表設(shè)計
- 單片機課程設(shè)計--簡易數(shù)字電壓表
- 單片機(數(shù)字電壓表)課程設(shè)計.rar
- 單片機課程設(shè)計數(shù)字電壓表
- 單片機數(shù)字電壓表課程設(shè)計.doc
- 單片機(數(shù)字電壓表)課程設(shè)計.rar
- 單片機(數(shù)字電壓表)課程設(shè)計.rar
- 單片機課程設(shè)計---數(shù)字電壓表 (2)
- 單片機課程設(shè)計報告——數(shù)字電壓表
- 課程設(shè)計----單片機簡易數(shù)字電壓表
評論
0/150
提交評論