微機(jī)課程設(shè)計(jì)智能雙路數(shù)字電壓表_第1頁(yè)
微機(jī)課程設(shè)計(jì)智能雙路數(shù)字電壓表_第2頁(yè)
微機(jī)課程設(shè)計(jì)智能雙路數(shù)字電壓表_第3頁(yè)
微機(jī)課程設(shè)計(jì)智能雙路數(shù)字電壓表_第4頁(yè)
微機(jī)課程設(shè)計(jì)智能雙路數(shù)字電壓表_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 . . . 目錄1.設(shè)計(jì)任務(wù) 2 1.1設(shè)計(jì)題目21.2設(shè)計(jì)目的2 1.3設(shè)計(jì)任務(wù)22.總體方案設(shè)計(jì)與方案論證 4 2.1總體方案設(shè)計(jì)與論證4 2.2溫度采集、計(jì)算的方案設(shè)計(jì)與論證53.系統(tǒng)總框圖與總體軟件設(shè)計(jì)說明 64.系統(tǒng)資源分配圖 75.局部程序設(shè)計(jì)說明 85.1顯示更新子程序 85.2溫度采集存儲(chǔ)子程序95.3PB口消抖和凍結(jié)子程序 115.4 自動(dòng)巡顯和手動(dòng)切換子程序 125.5轉(zhuǎn)換成溫度碼的子程序 135.6溫度碼轉(zhuǎn)化為BCD碼的子程序155.7鍵盤掃描和節(jié)拍設(shè)定的子程序175.8改進(jìn)后設(shè)定溫度上下限的子程序195.9改進(jìn)后實(shí)時(shí)鐘調(diào)整的子程序206.系統(tǒng)功能與其操作說明-217.

2、調(diào)試記錄與調(diào)試結(jié)果- 218.課程設(shè)計(jì)總結(jié)- 22附錄一:源程序清單 23附錄二:改進(jìn)后的程序 381、設(shè)計(jì)任務(wù)1.1設(shè)計(jì)題目智能雙路數(shù)字電壓表1.1設(shè)計(jì)目的通過小型微機(jī)應(yīng)用產(chǎn)品的設(shè)計(jì)與調(diào)試過程,運(yùn)用微機(jī)原理與接口技術(shù)課程所學(xué)的基本知識(shí),在設(shè)計(jì)中加以應(yīng)用,進(jìn)而得到理解、鞏固和提高,學(xué)習(xí)掌握分析與解決實(shí)際問題的方法與手段,提高設(shè)計(jì)、編程與調(diào)試的實(shí)際動(dòng)手能力,作為工程技術(shù)工作的一次基本訓(xùn)練。1.2設(shè)計(jì)任務(wù)設(shè)計(jì)一個(gè)以單片機(jī)為核心的智能雙路數(shù)字電壓表,通過多選一電子模擬開關(guān)與A/D轉(zhuǎn)換器巡回采集兩路被測(cè)電壓的數(shù)據(jù),進(jìn)行信號(hào)處理與標(biāo)度變換,以一定的節(jié)拍時(shí)間交替顯示,應(yīng)有顯示的符號(hào)標(biāo)示被測(cè)信號(hào)源回路,并可

3、通過按鈕開關(guān)操控凍結(jié)或切換形式,可通過鍵盤進(jìn)行參數(shù)設(shè)計(jì),編程并在單片機(jī)實(shí)驗(yàn)上模擬調(diào)試實(shí)現(xiàn)。(一) 基本設(shè)計(jì)要求1、八位LED 7段數(shù)碼管顯示當(dāng)前檢測(cè)回路的標(biāo)識(shí)、電壓值與其單位或其他界面信息。2、電壓測(cè)量圍0V4.96V,應(yīng)有輸入被測(cè)電壓超量程判斷與提示。3、應(yīng)采取數(shù)字濾波技術(shù)提高測(cè)量與顯示的穩(wěn)定性。4、基本顯示模式為:兩路被測(cè)電壓值按設(shè)定的節(jié)拍交替測(cè)量與顯示,電壓值保留二位小數(shù)。5、設(shè)置一個(gè)“凍結(jié)”按鈕開關(guān)以操控進(jìn)入或退出當(dāng)前回路的凍結(jié)顯示方式,凍結(jié)顯示期間每約0.5S更新一次測(cè)量值。6、設(shè)置一個(gè)“切換”按鈕開關(guān)以操控強(qiáng)行切換顯示下一檢測(cè)回路數(shù)據(jù)。7、對(duì)開關(guān)量輸入信號(hào)須進(jìn)行軟件消抖動(dòng)處理。8、

4、鍵盤設(shè)定交替測(cè)量顯示的節(jié)拍圍為0.5S5.0 S,設(shè)定分辨率0.1V,設(shè)定界面應(yīng)有醒目的當(dāng)前修改位提示。9、無操作時(shí)間超過30秒鐘后自動(dòng)恢復(fù)為基本的運(yùn)行狀態(tài)。(二) 功能擴(kuò)展提示:(選做)1、開機(jī)進(jìn)行接口部件與數(shù)碼顯示器、指示燈、訊響器等自檢。2、每隔一定的時(shí)間,穿插顯示實(shí)時(shí)鐘信息一定的時(shí)間,通過鍵盤設(shè)定其間隔參數(shù)。3、擴(kuò)展顯示模式二:同時(shí)顯示兩路電壓測(cè)量數(shù)據(jù),每約0.5S更新一次測(cè)量值,電壓值保留一位小數(shù)。設(shè)置一個(gè)“模式”撥動(dòng)開關(guān)以選擇兩種顯示模式之一。4、超上限告警功能,通過鍵盤設(shè)定電壓上限值圍為0V4.96V ,監(jiān)測(cè)到某回路電壓超上限時(shí)有相應(yīng)顯示容的閃爍提示、超上限LED指示燈亮、訊響告

5、警與繼電器觸點(diǎn)輸出控制功能。5、實(shí)現(xiàn)帶有回差的超上限告警功能,通過鍵盤設(shè)定回差值的圍為±0 .10V±0.50V,設(shè)定回差分辨率0.01V。6、添加超下限告警功能。7、添加多擋量程功能,如1.24V量程、0.31V量程。8、其他功能擴(kuò)展。2.總體方案設(shè)計(jì)與方案論證2.1總體方案的設(shè)計(jì)與方案論證.本課程設(shè)計(jì)的要顯示外部采集2路電壓,按一定的節(jié)拍進(jìn)行巡回顯示,還有兩路之間來回切換功能,某一路的凍結(jié)功能,對(duì)兩路交替顯示的節(jié)拍進(jìn)行設(shè)定,無操作返回顯示2路電壓的功能,每個(gè)功能都是根據(jù)相應(yīng)的按鍵是否操作去執(zhí)行相應(yīng)地程序,進(jìn)而實(shí)現(xiàn)相應(yīng)的功能,所以按鍵操作的正確判斷是程序執(zhí)行的關(guān)鍵,其總的

6、流程圖如下見如下框圖。芯片上電、復(fù)位第一路電壓顯示進(jìn)入凍結(jié)當(dāng)前界面再次按下PB2按下PB2第二路電壓顯示顯示設(shè)定節(jié)拍界面圖1-系統(tǒng)軟件設(shè)計(jì)的整體思路框圖2.2開關(guān)量的方案設(shè)計(jì)與論證方案一、表決法方案二、滾動(dòng)濾波法對(duì)開關(guān)量得輸入進(jìn)行滾存的方式,每次調(diào)用到開關(guān)量子程序時(shí),就把當(dāng)前的狀態(tài)值賦給前態(tài),依次把前幾次的采集值推為舊態(tài),當(dāng)這4次的開關(guān)量采集的值一致時(shí),才把當(dāng)前的采集值采集存為新態(tài),在通過新態(tài)和舊態(tài)的值比較就可以達(dá)到消除抖動(dòng)的效果,這種方法還可以實(shí)現(xiàn)按鍵是上升沿有效還是下降沿有效。2.3顯示查表的方案設(shè)計(jì)與論證方案一 把帶小數(shù)點(diǎn)的斷碼也寫進(jìn)斷碼表,顯示個(gè)位的時(shí)候直接查找有帶符號(hào)位的斷碼。 方案

7、二 顯示過程中先判斷顯示是否到達(dá)個(gè)位,如果到了就把個(gè)位的數(shù)據(jù)的最高位清零 上述的兩種方案中,第一種方案比較麻煩,要編寫特定的帶符號(hào)位斷碼,要判斷是否到顯示個(gè)位時(shí),才能查找?guī)Х?hào)位的斷碼,雖然可以實(shí)現(xiàn)顯示個(gè)位時(shí)可以實(shí)現(xiàn)顯示小數(shù)點(diǎn),但是編寫程序時(shí),邏輯較方案二太過于麻煩,所以我選擇了方案二 2.4電壓采集、計(jì)算方法與論證方案一、采用ADC0809對(duì)兩路的電壓的模擬量得采集、轉(zhuǎn)換成數(shù)字量, 在經(jīng)過標(biāo)度轉(zhuǎn)換使其圍在04.98V,采集進(jìn)來的數(shù)字量采用滾存的方式,存儲(chǔ)最新的4次電壓值,并用其平均值進(jìn)行標(biāo)度轉(zhuǎn)換,在標(biāo)度轉(zhuǎn)化中,對(duì)第一路和第二路的電壓分別進(jìn)行計(jì)算,最后把其轉(zhuǎn)換成BCD碼送到顯示緩沖區(qū)等待顯示。

8、方案二、采用ADC0809對(duì)兩路的電壓進(jìn)行采集,轉(zhuǎn)換成數(shù)字量,經(jīng)過標(biāo)度轉(zhuǎn)換使其量程在04.98,在標(biāo)度轉(zhuǎn)換中對(duì)第一路的電壓值和第二路的電壓值輪流計(jì)算,得到的數(shù)據(jù)為16進(jìn)制數(shù),最后把其轉(zhuǎn)換成BCD碼送到顯示緩沖區(qū)等待顯示 總上所述,在方案二中,沒有采用滾存的方式,這樣外界的電壓波動(dòng)很頻繁時(shí),會(huì)造成顯示波動(dòng),給人的第一感覺好像是這個(gè)系統(tǒng)不夠完善,還有在進(jìn)行標(biāo)度轉(zhuǎn)換時(shí),對(duì)兩路的電壓輪流進(jìn)行計(jì)算,這樣確實(shí)能夠?qū)崿F(xiàn)系統(tǒng)空間的節(jié)約,但是如果使用切換功能時(shí),此時(shí)剛剛還還沒有輪到某一路計(jì)算與標(biāo)度轉(zhuǎn)換時(shí),這樣顯示緩沖區(qū)得數(shù)據(jù)還是前一次的數(shù)據(jù),無法顯示最新的數(shù)據(jù),經(jīng)過比較,方案一在這兩點(diǎn)上比方案二好,但是方案一在

9、轉(zhuǎn)換標(biāo)度時(shí)使用系統(tǒng)的空間比方案二大,所以我選擇方案一。3.系統(tǒng)總框圖與總體軟件設(shè)計(jì)說明 初始化包括芯片初始化和工作初始化初始化 自檢包括對(duì)蜂鳴器、LED、每個(gè)數(shù)碼管的自檢系統(tǒng)自檢包括是開關(guān)量得消抖動(dòng),切換按鍵、凍結(jié)按鍵,設(shè)定節(jié)拍按鍵開關(guān)量掃描子程序第一部分:顯示第一路電壓的信息界面第二部分:顯示第二路電壓的信息界面第三部分:顯示設(shè)定節(jié)拍的信息界面拆字子程序利用鍵反轉(zhuǎn)法先讀出鍵的狀態(tài)在進(jìn)行查表查出鍵碼當(dāng)鍵碼對(duì)設(shè)定節(jié)拍單元賦值時(shí),對(duì)節(jié)拍設(shè)定的范圍進(jìn)行了限定鍵盤掃描子程序包括顯示第一路和第二路的電壓信息顯示更新利用滾存的方式對(duì)第一路和第二路的電壓進(jìn)行采集A/D采集子程序包括4次采集值的求和,標(biāo)度轉(zhuǎn)換

10、,16進(jìn)制轉(zhuǎn)換成BCD碼AD標(biāo)度轉(zhuǎn)換子程序圖3-系統(tǒng)軟件設(shè)計(jì)的總流程圖并解釋4.系統(tǒng)資源分配表+地址用途08H用于自檢程序中,用于存放位碼09H用于自檢程序中,用于存放短碼20H拆字子程序中要執(zhí)行的程序代碼21H第二路低字節(jié)的22H第二路高字節(jié)23H用于A/D滾動(dòng)采集,存最新的一次的數(shù)值24H用于A/D滾動(dòng)采集,存前一次的數(shù)值25H用于A/D滾動(dòng)采集,存前二次的數(shù)值26H用于A/D滾動(dòng)采集,存前三次的數(shù)值27H.0在定時(shí)1中,用于判斷是否進(jìn)入凍結(jié)狀態(tài)27H.1用于判斷給68H還是給67H賦值27H.2用于判斷是否進(jìn)入設(shè)定節(jié)拍界面27H.3用于判斷給U1計(jì)算還是U2計(jì)算27H.4用于判斷當(dāng)前的修

11、改位27H.5用于判斷是否到250MS27H.6用于判斷是給讀U1的數(shù)據(jù)采集還是讀U2的數(shù)據(jù)采集28H用于時(shí)鐘1,每200uS加1,其取值圍15029H用于時(shí)鐘1,每10mS加1,其取值圍11002AH用于時(shí)鐘1,用于計(jì)數(shù),每0.1s加130H顯示緩沖區(qū),對(duì)應(yīng)實(shí)驗(yàn)板的右邊第一位31H顯示緩沖區(qū),對(duì)應(yīng)實(shí)驗(yàn)板的右邊第二位32H顯示緩沖區(qū),對(duì)應(yīng)實(shí)驗(yàn)板的右邊第三位33H顯示緩沖區(qū),對(duì)應(yīng)實(shí)驗(yàn)板的右邊第四位34H顯示緩沖區(qū),對(duì)應(yīng)實(shí)驗(yàn)板的左邊第四位35H顯示緩沖區(qū),對(duì)應(yīng)實(shí)驗(yàn)板的左邊第三位36H顯示緩沖區(qū),對(duì)應(yīng)實(shí)驗(yàn)板的左邊第二位37H顯示緩沖區(qū),對(duì)應(yīng)實(shí)驗(yàn)板的左邊邊第一位38H用于時(shí)鐘0,每200uS加1,其取

12、值圍125039H用于時(shí)鐘0,每10mS加1,其取值圍1203AH用于時(shí)鐘0,每1S加1,其取值圍1303BH用于時(shí)鐘0,每250MS加140H用于A/D滾動(dòng)采集,存最新的一次的數(shù)值41H用于A/D滾動(dòng)采集,存前一次的數(shù)值42H用于A/D滾動(dòng)采集,存前二次的數(shù)值43H用于A/D滾動(dòng)采集,存前三次的數(shù)值44H存儲(chǔ)第一路的低字節(jié)45H存儲(chǔ)第一路的高字節(jié)48H用于判斷是否到達(dá)50次,用在A/D的計(jì)算中49H第5次對(duì)外部開關(guān)量得采集4AH第4次對(duì)外部開關(guān)量得采集4BH第3次對(duì)外部開關(guān)量得采集4CH第2次對(duì)外部開關(guān)量得采集4DH第1次對(duì)外部開關(guān)量得采集4EH外部開關(guān)的新態(tài)4FH外部開關(guān)的舊態(tài)50H用于存

13、儲(chǔ)第一路采集的個(gè)位和十位的電壓數(shù)字量(BCD碼)51H用于存儲(chǔ)第一路采集的百位的電壓數(shù)字量(BCD碼)52H用于存儲(chǔ)第二路采集的個(gè)位和十位的電壓數(shù)字量(BCD碼)53H用于存儲(chǔ)第三路采集的百位的電壓數(shù)字量(BCD碼)56H在key中,用于把10進(jìn)制轉(zhuǎn)換成16進(jìn)制57H在key中,用于把10進(jìn)制轉(zhuǎn)換成16進(jìn)制58H在key中,用于把10進(jìn)制轉(zhuǎn)換成16進(jìn)制59H用于A/D轉(zhuǎn)化的計(jì)算中,用于緩存,存放低字節(jié)乘125后積的低字節(jié)5AH用于A/D轉(zhuǎn)化的計(jì)算中,用于緩存,存放低字節(jié)乘125后積的高字節(jié)5BH用于A/D轉(zhuǎn)化的計(jì)算中,用于緩存,存放高字節(jié)乘125后積的低字節(jié)5CH用于A/D轉(zhuǎn)化的計(jì)算中,用于緩

14、存,存放高字節(jié)乘125后積的高字節(jié)5EH用于A/D轉(zhuǎn)化的計(jì)算中,用于緩存,其轉(zhuǎn)換結(jié)果存某一路的低字節(jié)5FH用于A/D轉(zhuǎn)化的計(jì)算中,用于緩存,其轉(zhuǎn)換結(jié)果存某一路的高字節(jié)60H在KEY中,在反轉(zhuǎn)法中61H在KEY中,用于存儲(chǔ)鍵號(hào)62H用于存放得到的數(shù)值63H用于key中,存放按鍵的前態(tài)64H存儲(chǔ)節(jié)拍65H在A/D的數(shù)字計(jì)算部分,用于存儲(chǔ)某一路的低字節(jié)66H在A/D的數(shù)字計(jì)算部分,用于存儲(chǔ)某一路的高字節(jié)67H用于存放U1和U2的交替節(jié)拍的小數(shù)部分(BCD碼)68H用于存放U1和U2的交替節(jié)拍的整數(shù)部分(BCD碼)6FH堆棧初始地址定時(shí)器0用于無操作定時(shí)30S和節(jié)拍界面的亮暗交替定時(shí)器1用于節(jié)拍定時(shí)R

15、0用于顯示更新中,其取值圍為30H37H用于標(biāo)度轉(zhuǎn)換中,其取值圍為40H43H用于標(biāo)度轉(zhuǎn)換中,其取值圍為23H26HR2用于標(biāo)度轉(zhuǎn)換中,其取值圍為04R3用于顯示更新中,其取值為01、02、04、08、10、20、40、80R5用于1S延時(shí)子程序中,其取值圍為0200用于30MS延時(shí)子程序中,其取值圍為0200R6用于1S延時(shí)子程序中,其取值圍為0200用于30MS延時(shí)子程序中,其取值圍為046R7用于1MS延時(shí)子程序中,其取值圍為0115用于1S延時(shí)子程序中,其取值圍為0200硬件資源配置名稱實(shí)現(xiàn)功能PB0切換按鍵PB1凍結(jié)按鍵PB2進(jìn)入設(shè)定節(jié)拍,退出設(shè)定節(jié)拍K0K9數(shù)值09按鍵P3.2訊鳴

16、器超量程報(bào)警P0口數(shù)據(jù)地址/數(shù)據(jù)總線復(fù)用P1口外部擴(kuò)展地址總線的高八位P2口片外芯片的線選端P3口WR、RD片外擴(kuò)展的讀寫信號(hào)5.局部程序設(shè)計(jì)說明5.1開關(guān)量采集子程序開關(guān)量消除抖動(dòng)采用滾動(dòng)慮波的方式消除抖動(dòng),其原理如下49H 起始地址 每次采集的信號(hào)前,先把49H4DH的 4AH 值一次往后推,再把采集的信號(hào)存入49H 4BH 中,再通過比較49H4DH的值,如果這 4CH 四個(gè)單元的值一致,則說明抖動(dòng)時(shí)間已 4DH 過,再把49H的采集的值存入4EH,最 4EH 后通過比較4FH和4EH的值來判斷按 4FH 鍵是否按下,還可以根據(jù)編程邏輯使得按鍵在下降沿有效還是上升沿有效。源程序清單如下:

17、PB:MOV 4FH,4EH ;把新態(tài)存為舊態(tài)MOV 4DH,4CH;把前4次的電平值推至4AH-4DHMOV 4CH,4BHMOV 4BH,4AHMOV 4AH,49HMOV DPTR,#0FDFDH;對(duì)外部開關(guān)量的采集MOVX A,DPTRMOV 49H,AMOV A,4DH;比較近5次輸入的電平值CJNE A,4CH,XFR;狀態(tài)不同則返回CJNE A,4BH,XFRCJNE A,4AH,XFRCJNE A,49H,XFRMOV 4EH,A ;近5次的值一致則存為新態(tài)XFR:RET5.2拆字子程序首先判斷20H里面存的程序代碼,在跳到相應(yīng)的程序段去執(zhí)行。其原理圖如下:取當(dāng)前路數(shù) 取進(jìn)程碼

18、判斷20H中的值 進(jìn)程代碼為1 進(jìn)程代碼為2 進(jìn)程代碼為3顯示第二路的電壓信息顯示第一路的電壓信息顯示設(shè)定節(jié)拍的信息 超過量程 超過量程超量程顯示和報(bào)警超量程顯示和報(bào)警返回拆字子程序流程圖源程序代碼如下CZ:MOV A,20HCLR CSUBB A,#01H JZ U1;20H等于#01H則進(jìn)入顯示U1MOV A,20H CLR C SUBB A,#02H JZ U2;20H等于#02H則進(jìn)入顯示U2MOV A,20H CLR C SUBB A,#03H JZ U3;20H等于#03H則進(jìn)入顯示U3U1:MOV 30H,#12H;顯示'U'MOV 31H,#13H;把數(shù)碼管熄滅

19、MOV A,50HANL A,#0FH;屏蔽高位MOV 32H,A;送到顯示緩沖區(qū)MOV A,50HANL A,#0F0H;屏蔽低位U2:MOV 30H,#12H;顯示'U'MOV 31H,#13H;把數(shù)碼管熄滅MOV A,52HANL A,#0FH;屏蔽高位MOV 32H,A;送到顯示緩沖區(qū)MOV A,52HANL A,#0F0H;屏蔽低位.U3:MOV 30H,#13H;右邊的三位數(shù)碼都全滅mov 31H,#13Hmov 32H,#13Hmov 33H,67H;把67H單元中的容送到顯示緩沖區(qū)JNB 27H.5,FHJ;判斷是否到達(dá)250MSJNB 27H.4,FHJ;判斷

20、是否對(duì)當(dāng)前位為修改位. RET5.3電壓采集子程序兩路電壓采集是采用輪流采集,滾動(dòng)儲(chǔ)存的方式。通過標(biāo)志位來判斷是對(duì)第一路采集還是對(duì)第二路采集。其流程圖如下:調(diào)用A/D字程序 標(biāo)志位為1 標(biāo)志位為0讀取第二路的信息讀取第一路的信息采用滾動(dòng)存儲(chǔ)的方式對(duì)采集的數(shù)值進(jìn)行存儲(chǔ)標(biāo)志位取反啟動(dòng)下一路轉(zhuǎn)換采用滾動(dòng)存儲(chǔ)的方式對(duì)采集的數(shù)值進(jìn)行存儲(chǔ)標(biāo)志位取反啟動(dòng)下一路轉(zhuǎn)換返回A/D采集流程圖其源程序代碼如下ADSUB: 27H.6,DIQ;27H.6為0則進(jìn)行U2采集 MOV 43H,42H;把前3次采集的值往后推MOV 42H,41HMOV 41H,40H MOV DPTR,#0FBF9H;對(duì)AN1進(jìn)行讀取已轉(zhuǎn)換

21、的值MOVX A,DPTRMOV 40H,AMOV DPTR,#0FBF8H MOVX DPTR,A;啟動(dòng)AN0的A/D轉(zhuǎn)換CPL 27H.6SJMP BDZH DIQ:MOV 26H,25H;把前3次采集的值往后推 MOV 25H,24H MOV 24H,23H MOV DPTR,#0FBF8H;對(duì)AN0進(jìn)行讀取已轉(zhuǎn)換的值movx a,DPTRMOV 23H,AMOV DPTR,#0FBF9H MOVX DPTR,A;啟動(dòng)AN1的A/D轉(zhuǎn)換MOV 23H,ACPL 27H.6RET5.4標(biāo)度轉(zhuǎn)換子程序這一過程是整個(gè)程序的核心所在,主要利用(D1+D2+D3+D4)*125/256這個(gè)標(biāo)度轉(zhuǎn)換

22、公式,這樣就可以實(shí)現(xiàn)所測(cè)的電壓量程在04.98V,在四次采集的數(shù)值乘以125的原理計(jì)算如下,因?yàn)橛?jì)算的結(jié)果為3個(gè)字節(jié)的16進(jìn)制數(shù),所以除以256就相當(dāng)于把這三個(gè)字節(jié)向有移動(dòng)8位,高位自動(dòng)補(bǔ)0,當(dāng)然還要判斷最后的那個(gè)字節(jié)是否要向上進(jìn)位(0舍1入)。4D的低字節(jié)4D的高字節(jié)125 存放4D低字節(jié)*125 存放4D高字節(jié)*125 0舍1入在上述過程中,最后結(jié)果取其前面兩個(gè)字節(jié),把最后一個(gè)字節(jié)0舍1入后,就相當(dāng)于除以256,最后得到2個(gè)字節(jié)的16進(jìn)制數(shù)即為轉(zhuǎn)換標(biāo)度后的數(shù)值。最后再把16進(jìn)制數(shù)轉(zhuǎn)換成BCD碼送到顯示緩沖單元即可。5.5鍵盤掃描子程序鍵盤掃描是利用鍵反轉(zhuǎn)法讀出鍵盤的電平值,通過查鍵碼表,把

23、電平值轉(zhuǎn)化為K0-K16鍵分別變?yōu)?-16的數(shù)字,通過判斷寄存器中的鍵號(hào),就能確定是那一個(gè)按鍵按下了。鍵反轉(zhuǎn)法的原理:(1)列線輸出為全0,隨后輸入行線電平如有0,則0所在的行就是按鍵所在行。是否進(jìn)入設(shè)定節(jié)拍界面 否 是讀出鍵號(hào)是否超出節(jié)拍范圍 是 否存入鍵號(hào) 標(biāo)志位為0 標(biāo)志位為1存入小數(shù)位存入個(gè)位返回其源程序如下:KEY:MOV 56H,#0;把56H清0 MOV 63H,60H;把當(dāng)前狀態(tài)推為前態(tài)MOV A,#81H;鍵盤掃描子程序(反轉(zhuǎn)法)ORL 60H,A ;兩次輸入的列線電平值、行線電平值組合成8位行列碼MOV A,60H CJNE A,#0FFH,XX;判斷鍵盤是否有操作SJMP

24、 YY XX:MOV 3AH,#0;有操作,則將3AH清0YY:MOV A,63H;判斷前態(tài)和當(dāng)前狀態(tài)是否一致 CJNE A,#0FFH,KM;前態(tài)沒有操作,則進(jìn)一步判斷當(dāng)前狀態(tài)MOV A,60H CJNE A,63H,LOE;當(dāng)前狀態(tài)有操作,則給62H賦值 RET;前態(tài)和當(dāng)前狀態(tài)一樣則返回LOE:JNB 27H.2,KM;不在設(shè)定界面則返回. RET判斷節(jié)拍的輸入圍見源程序中的KEY子程序。5.6 PB子程序中的功能說明PB0是實(shí)現(xiàn)切換功能,其經(jīng)過消除抖動(dòng)后實(shí)現(xiàn)第一路和第二路電壓信息的切換顯示,其源程序如下 MOV A,4EHCJNE A,#0FEH,XDR;判斷PB0是否有按下MOV A,

25、4FHCJNE A,#0FFH,XDR;判斷前態(tài)是否為高電平MOV A,20HCJNE A,#01H,JO;判斷此時(shí)的20H中的程序代碼,為1則賦2,為2則賦1MOV 48H,#01;將48H單元清0,即將0.5S更新一次立即執(zhí)行MOV 2AH,#0;將2AH單元清0,即將自動(dòng)切換的計(jì)數(shù)清0MOV 20H,#02HMOV 3AH,#00H;將無操作30S定時(shí)清0SJMP XDR JO:MOV 20H,#01H MOV 48H,#01;將48H單元清0,即將0.5S更新一次立即執(zhí)行MOV 3AH,#00H;將無操作30S定時(shí)清0MOV 2AH,#0;將2AH單元清0,即將自動(dòng)切換的計(jì)數(shù)清0PB1

26、是實(shí)現(xiàn)凍結(jié)顯示某一路的電壓信息,其源程序如下:MOV A,4EH CJNE A,#0FDH,XER;判斷PB1是否有按下MOV A,4FH CJNE A,#0FFH,XER;判斷前太是否為高電平 MOV 48H,#01;將0.5S更行立即更新 CPL 27H.0;標(biāo)記進(jìn)入凍結(jié)狀態(tài) MOV 3AH,#00H;將無操作30S定時(shí)清0PB2是實(shí)現(xiàn)進(jìn)入、退出設(shè)定節(jié)拍,其源程序如下: MOV A,4EH;判斷PB2是否有按下 CJNE A,#0FBH,XFR MOV A,4FH CJNE A,#0FFH,XFR;判斷前太是否為高電平 CPL 27H.2;標(biāo)記進(jìn)入設(shè)定狀態(tài) MOV 20H,#03H;將程序代碼

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論