版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.綜合創(chuàng)新訓(xùn)練研究報(bào)告數(shù)字電壓表的訓(xùn)練 綜合創(chuàng)新訓(xùn)練研究報(bào)告研究題目:單片機(jī)實(shí)現(xiàn)數(shù)字電壓表的訓(xùn)練2013年 12 月20日工程訓(xùn)練中心一、實(shí)驗(yàn)題目3二、實(shí)驗(yàn)要求與任務(wù)31.實(shí)驗(yàn)要求:32.實(shí)驗(yàn)任務(wù):3三、EXP96教學(xué)實(shí)驗(yàn)箱、仿真器的用途簡單說明3四、實(shí)驗(yàn)電路及說明(硬件設(shè)計(jì))31.硬件設(shè)計(jì)方案(電路圖基本工作原理)32.8255的基本工作原理33.8255與單片機(jī)的連接及電路譯碼34.鍵盤與8255的連接方式及鍵盤判別原理35.時(shí)鐘系統(tǒng)的工作原理及時(shí)鐘功能的實(shí)現(xiàn)方法36.A/D的工作原理3五、程序編制及說明31.主程序設(shè)計(jì)及說明31.1主程序功能說明31.2主程序流程圖:32.各子程序設(shè)計(jì)及
2、說明32.1顯示子程序:32.2判鍵、鍵碼轉(zhuǎn)換子程序32.3存時(shí)間子程序:32.4時(shí)鐘顯示子程序:32.5A/D采集程序的實(shí)現(xiàn):3六、程序調(diào)試及問題、解決方法:31、程序編寫中的問題:32、顯示子程序調(diào)試問題分析:33、電壓測量程序的問題:3七、實(shí)驗(yàn)結(jié)果及結(jié)果分析31、標(biāo)準(zhǔn)數(shù)據(jù)與測量數(shù)據(jù)表(電壓表):32、誤差分析:3八、結(jié)論和創(chuàng)新點(diǎn)31、實(shí)驗(yàn)課題完成情況:32、課題創(chuàng)新點(diǎn)或新思路33、收獲與總結(jié):3九、簡易數(shù)字電壓表操作手冊(cè)3十、附錄:(全部程序)3:42一、 實(shí)驗(yàn)題目80C196單片機(jī)EXP96教學(xué)實(shí)驗(yàn)箱數(shù)字電壓表訓(xùn)練程序設(shè)計(jì)與調(diào)試二、 實(shí)驗(yàn)要求與任務(wù)1. 實(shí)驗(yàn)要求:在實(shí)驗(yàn)室已有單片機(jī)實(shí)驗(yàn)
3、系統(tǒng)及仿真器的硬件基礎(chǔ)支持下,編程完成一個(gè)帶時(shí)鐘功能的單片機(jī)控制的模擬信號(hào)采集系統(tǒng)(數(shù)字電壓表的設(shè)計(jì))。2. 實(shí)驗(yàn)任務(wù):、熟悉實(shí)驗(yàn)箱上鍵盤、LED顯示器與單片機(jī)的電路連接、熟悉仿真器的作用及文件建立、現(xiàn)場調(diào)試等軟件的使用、熟悉80C196的匯編語言程序的編制、編譯與調(diào)試。、完成實(shí)驗(yàn)箱鍵盤上LED顯示器程序的設(shè)計(jì)與調(diào)試、利用80C196的定時(shí)器完成時(shí)鐘程序的調(diào)試。、完成雙通道數(shù)字電壓表(含時(shí)鐘功能)程序的編制與調(diào)試。(要求實(shí)現(xiàn)鍵盤的判別及鍵盤數(shù)據(jù)的顯示,A/D數(shù)據(jù)采集,數(shù)字電壓表的實(shí)現(xiàn),要實(shí)現(xiàn)程序的主、從結(jié)構(gòu),程序調(diào)試完成后全速運(yùn)行中可以任意鍵入鍵盤數(shù)據(jù),并實(shí)時(shí)刷新顯示數(shù)據(jù),程序運(yùn)行過程中不得死
4、機(jī))。通過鍵盤實(shí)現(xiàn)時(shí)鐘的校時(shí)(校時(shí)要求實(shí)現(xiàn):小時(shí)、分、秒)、電壓采集通道的轉(zhuǎn)換、不同功能(時(shí)鐘與電壓表)的切換運(yùn)行,鍵盤功能利用鍵盤已經(jīng)提供的09數(shù)字鍵和AF功能鍵自行定義。、編制簡易操作手冊(cè)。三、 EXP96教學(xué)實(shí)驗(yàn)箱、仿真器的用途簡單說明實(shí)驗(yàn)箱是集單片機(jī)應(yīng)用技術(shù)、在線調(diào)試、在線仿真等功能于一體的開發(fā)系統(tǒng)。仿真器是用以實(shí)現(xiàn)硬件仿真的硬件。仿真器可以實(shí)現(xiàn)替代單片機(jī)對(duì)程序的運(yùn)行進(jìn)行控制,例如單步,全速,查看資源斷點(diǎn)等。盡管軟件仿真具有無需搭建硬件電路就可以對(duì)程序進(jìn)行驗(yàn)證的優(yōu)點(diǎn),但無法完全反映真實(shí)硬件的運(yùn)行狀況,因此還要通過硬件仿真來完成最終的設(shè)計(jì)。 目前的開發(fā)過程中硬件仿真是必需的。本實(shí)驗(yàn)系統(tǒng)包
5、括AEDK196W仿真機(jī)和EXP96實(shí)驗(yàn)箱。實(shí)驗(yàn)箱自帶電源,仿真機(jī)AEDK196W由仿真機(jī)主機(jī)、仿真電纜和仿真插頭三部分組成,可以通過EXP96實(shí)驗(yàn)箱上的XC1兩芯電源插座供電。進(jìn)行實(shí)驗(yàn)時(shí),實(shí)驗(yàn)箱需要和仿真機(jī)配合使用。仿真機(jī)通過仿真電纜接至實(shí)驗(yàn)箱上的仿真插座。具體參看圖一。四、 實(shí)驗(yàn)電路及說明(硬件設(shè)計(jì))1. 硬件設(shè)計(jì)方案(電路圖基本工作原理)實(shí)驗(yàn)箱配備了豐富的硬件電路,和詳細(xì)的實(shí)驗(yàn)內(nèi)容,同時(shí)模塊化、 積木化的結(jié)構(gòu)支持用戶自己開發(fā)實(shí)驗(yàn),以滿足INTEL 96系列單片機(jī)教學(xué)培訓(xùn)需要。硬件的配備使本實(shí)驗(yàn)系統(tǒng)可以工作在二種狀態(tài),使用跳線XB3(位于實(shí)驗(yàn)箱右下部)切換: (1)短路套XB3打在右端(V
6、CC),實(shí)驗(yàn)機(jī)上64K程序空間完全供用戶使用。 (2)短路套XB3打在左端(GND),實(shí)驗(yàn)機(jī)上提供16KRAM,3/4K I/O,37.25K ROM空間。實(shí)驗(yàn)箱電路中各接口芯片占用單片機(jī)地址如下:ROM(27512)空間地址: 00000BCFFHRAM(6264) 空間地址: 0C0000FFFFHD/A轉(zhuǎn)換芯片0832片選地址:0BD000BDFFH并行擴(kuò)展芯片244 : 0BE000BEFFH并行擴(kuò)展芯片8255的PA口地址: 0BF00H并行擴(kuò)展芯片8255的PB口地址: 0BF02H并行擴(kuò)展芯片8255的PC口地址: 0BF04H并行擴(kuò)展芯片8255的控制寄存器地址:0BF06H仿
7、真器中晶體振蕩器參數(shù):晶體振蕩器:11.0592MHz仿真器在進(jìn)行系統(tǒng)初始參數(shù)設(shè)置時(shí),按以下數(shù)據(jù)進(jìn)行設(shè)置:CPU類型:缺?。?0C196KB)總線寬度:8位ALE管腳:ALE仿真器:AEDK96W通訊:COM12. 8255的基本工作原理8255在單片機(jī)應(yīng)用系統(tǒng)中被廣泛用于可編程外部I/O擴(kuò)展接口使用,其構(gòu)成如下(見圖2):數(shù)據(jù)總線緩沖(驅(qū)動(dòng))器:用于和單片機(jī)的數(shù)據(jù)總線(D-BUS)連接,以實(shí)現(xiàn)單片機(jī)與8255芯片的數(shù)據(jù)傳送。并行I/O接口:8位的ABC口。這三個(gè)8位I/O接口功能通過編程決定其輸入/輸出功能讀/寫控制邏輯,用于管理8255所有數(shù)據(jù)、控制字、狀態(tài)字的傳送。l :片選控制, =0
8、: 8255選通l :讀控制, =0:允許單片機(jī)從8255讀取各口數(shù)據(jù)或狀態(tài)字l :寫控制, =0:允許單片機(jī)向8255各口寫入數(shù)據(jù)或向控制寄存器寫入命令字lA0A1口地址選擇00選通寄存器A(A口)01選通寄存器B(B口)01選通寄存器C(C口)11控制寄存器(控制口)l RESET:復(fù)位引腳,RESET=1 8255復(fù)位,控制寄存器清零,所有接口(A、B、C)被設(shè)置為輸入方式3. 8255與單片機(jī)的連接及電路譯碼8255占用CPU的地址如下 : PA8255 EQU 0BF00H ;8255的PA口地址 PB8255 EQU 0BF02H ;8255的PB口地址 PC8255 EQU 0B
9、F04H ;8255的PC口地址 C8255 EQU 0BF06H ;8255的控制字地址4. 鍵盤與8255的連接方式及鍵盤判別原理實(shí)驗(yàn)箱上由16個(gè)鍵構(gòu)成了鍵盤,該16個(gè)鍵分別與8255的PB口及PC0、PC1連接。其中, PB口用于讀入鍵值,稱為行線,PC口用于輸出鍵盤掃描信號(hào),稱為列線。 當(dāng)PC0、PC1輸出均為1,鍵盤封鎖 當(dāng)PC0、PC1分別為0,則可掃描鍵盤。通過PB口讀入數(shù)據(jù),判斷所操作的鍵值。 PC0=0 PC1=1 PB0PB7分別為0,表示所操作的鍵碼為07鍵 PC0=1 PC1=0 PB0PB7分別為0,表示所操作的鍵碼為8F鍵 鍵碼組合關(guān)系: 00000010b 111
10、11110B ( 20H FEH) 0 00000010b 11111101B ( 20H FDH) 1 . . 00000010b 01111111B ( 20H 7FH) 7 00000001b 11111110B ( 01H FEH) 8 00000001b 11111101B ( 01H FDH) 9 . . 00000001b 01111111B ( 01H 7FH) F5. LED的顯示方法(共陰型的工作原理、顯示碼的形成)及其與8255的連接,動(dòng)態(tài)掃描顯示原理。結(jié)構(gòu)圖及工作原理(試驗(yàn)箱采用共陰LED數(shù)碼管): 顯示代碼 建立在標(biāo)準(zhǔn)連接方式下的顯示代碼(ah連接D0D7):顯示字符
11、 0 1 2 3 4 5 6 7段選碼 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 顯示字符 8 9 A B C D E F段選碼 7FH 6FH 77H 7CH 39H 5EH 79H 71H動(dòng)態(tài)掃描顯示:每一瞬間只有一位顯示器處于點(diǎn)亮狀態(tài)試驗(yàn)箱電路設(shè)計(jì): PA口:與各個(gè)LED段碼引腳連接(注意:PA0PA7連接LED ha ) 由此產(chǎn)生的數(shù)碼管字形表為: ;*字形表* LED: DB 0FCH,60H,0DAH,0F2H,66H ;0、1、2、3、4 DB 0B6H,0BEH,0E0H,0FEH,0F6H ;5、6、7、8、9 需通過二十轉(zhuǎn)換程序?qū)⒍M(jìn)制碼轉(zhuǎn)換為LED段
12、碼。在段碼表中查找獲取需要顯示的數(shù)字或字母。送顯: 將段碼送到8255的PA口地址 PA8255EQU 0BF00H ;8255的PA口地址 STB AX,PA82550 ;段碼AX送入8255 PA口位控: PC5PC7通過74LS138譯碼器與各個(gè)LED位控引腳連接 C B A (PC7 PC6 PC5) 0 0 0 最低位LED選通 0 0 1 次低位LED選通 . 1 1 1 最高位LED選通6. 時(shí)鐘系統(tǒng)的工作原理及時(shí)鐘功能的實(shí)現(xiàn)方法本實(shí)驗(yàn)中選擇了使用軟件定時(shí)器的方法實(shí)現(xiàn)時(shí)鐘功能,以下是軟件定時(shí)器實(shí)現(xiàn)時(shí)鐘功能計(jì)算參數(shù): t1min=(2*8/11.059) us=1447ns N1=
13、50ms/1447ns=34554(定時(shí)50ms 每50毫秒中斷一次 soft_t 加載數(shù)值) N2=1000/50=20 (1s 對(duì)應(yīng)的中斷次數(shù))存儲(chǔ)數(shù)值或單元定義:定義常數(shù) t_vt:定標(biāo)50ms中斷一次,soft_T“1”秒=20。軟件定時(shí)器中斷次數(shù),常數(shù)值(非通用寄存器),改變此值,改變定時(shí)時(shí)間,顯示時(shí)間的快慢將發(fā)生變化。 soft_n:對(duì)應(yīng)50ms所需要的T1的定時(shí)常數(shù):34554定義存儲(chǔ)單元 T_count:定時(shí)中斷計(jì)數(shù)器(一個(gè)字節(jié)單元。裝載T1或軟件定時(shí)器達(dá)到1秒所需的溢出次數(shù)或中斷次數(shù)) DIS_BUF_P:顯示代碼存放緩沖區(qū)(8個(gè)字節(jié)單元,對(duì)應(yīng)實(shí)驗(yàn)箱上的8個(gè)LED顯示器) d
14、_buf:40h45h 十進(jìn)制數(shù)暫存緩沖區(qū)(使用5個(gè)字節(jié)單元。秒、分、時(shí) 二-十進(jìn)制轉(zhuǎn)換使用,分存萬、千、百、十、個(gè)位) t_buf:4ah4fh 十進(jìn)制數(shù) 時(shí)、分、秒單元(6個(gè)字節(jié)單元。分別存儲(chǔ)兩位的時(shí)、分、秒)YYYN=24?時(shí)分秒清零恢復(fù)現(xiàn)場中斷返回分單元+1=60?分單元數(shù)據(jù) 二十轉(zhuǎn)換分單元清0時(shí)單元+1時(shí)單元數(shù)據(jù) 二十轉(zhuǎn)換軟件定時(shí)器中斷保護(hù)現(xiàn)場重裝軟件定時(shí)器命令軟件定時(shí)器中斷保護(hù)現(xiàn)場重裝軟件定時(shí)器命令、數(shù)據(jù)時(shí)鐘計(jì)數(shù)器重賦值秒單元+1、數(shù)據(jù)秒單元數(shù)據(jù) 二十轉(zhuǎn)換時(shí)鐘計(jì)數(shù)器重賦值秒單元+1秒單元清0YNNN s_buf:二進(jìn)制數(shù)秒單元(一個(gè)字節(jié)單元) m_buf:二進(jìn)制數(shù)分單元(一個(gè)字節(jié)單
15、元) h_buf:二進(jìn)制數(shù)時(shí)單元(一個(gè)字節(jié)單元) 時(shí)鐘計(jì)數(shù)器-1=0?主程序設(shè)堆棧指針內(nèi)存單元清零8255初始化裝軟件定時(shí)器命令、數(shù)據(jù)設(shè)基準(zhǔn)時(shí)鐘計(jì)數(shù)器初值(根據(jù)軟件定時(shí)器中斷時(shí)間決定50mx=20次達(dá)到1s)開放軟件定時(shí)器中斷EI時(shí)鐘顯示=60?7. A/D的工作原理A/D轉(zhuǎn)換器:將被測的外部模擬信號(hào)轉(zhuǎn)換為計(jì)算機(jī)所能接受的數(shù)字量。硬件結(jié)構(gòu):A/D轉(zhuǎn)換原理(逐次逼近、對(duì)分搜索、雙積分):工作原理:8通道10位逐次逼近A/D轉(zhuǎn)換器 標(biāo)準(zhǔn)電壓Vref(5120mv)經(jīng)過內(nèi)部的256個(gè)梯形電阻網(wǎng)絡(luò)分壓(20mv),再經(jīng)過電容分壓至1024個(gè)標(biāo)準(zhǔn)電壓(5mv). 啟動(dòng)A/D轉(zhuǎn)換后,經(jīng)過88個(gè)狀態(tài)周期(T
16、s),完成轉(zhuǎn)換并將轉(zhuǎn)換碼存入AD結(jié)果單元。 AD的分辨率=Vref/1023被測電壓計(jì)算: Vin= AD的分辨率*N =(Vref/1023)*N 轉(zhuǎn)換時(shí)間:88Ts 11.059MHz晶體振蕩器: 轉(zhuǎn)換時(shí)間: 88Ts=15.915usA/D的控制及轉(zhuǎn)換結(jié)果處理: A/D命令寄存器(AD_COMMAND):通道號(hào):D2 D1 D00 0 0 ACH00 0 1 ACH10 1 0 ACH20 1 1 ACH31 0 0 ACH41 0 1 ACH51 1 0 ACH61 1 1 ACH7GO:啟動(dòng)位 GO=1:立即啟動(dòng)AD轉(zhuǎn)換 A/D結(jié)果寄存器 與結(jié)果的讀出包含兩部分內(nèi)容:S:狀態(tài)檢測位
17、S=1 正在轉(zhuǎn)換 S=0 轉(zhuǎn)換結(jié)束通道號(hào):正在轉(zhuǎn)換的通道AD轉(zhuǎn)換結(jié)果:10位,存在結(jié)果寄存器的高10位結(jié)果處理:根據(jù)公式:被測輸入電壓:Vin= AD的分辨率*N=(Vref/1023)*N (N為AD的轉(zhuǎn)換碼:000H3FFH)目前的結(jié)果存放方式:相當(dāng)于 N被擴(kuò)大了64倍,在計(jì)算Vin之間,必須對(duì)N值做還原處理,縮小64倍,方法:除以64(右移6位)五、 程序編制及說明1. 主程序設(shè)計(jì)及說明1.1 主程序功能說明在程序的開始對(duì)8255進(jìn)行初始化,調(diào)用清內(nèi)存子程序,清理時(shí)間單元緩沖區(qū)的內(nèi)存;然后設(shè)定PB口輸入,PA、PC口輸出;最后裝軟件定時(shí)器命令與參數(shù),并開放軟件定時(shí)器中斷。當(dāng)進(jìn)入主程序后,
18、調(diào)用顯示子程序,從00-00-00開始計(jì)時(shí)。在顯示過程中,同時(shí)進(jìn)行鍵盤掃描,若A鍵按下則進(jìn)入測電壓子程序,若D鍵按下則進(jìn)入設(shè)定時(shí)間初值子程序。若無鍵按下或有其他鍵按下,繼續(xù)顯示時(shí)間。 A鍵按下后,進(jìn)入選擇測量電壓通道的子程序。若6鍵按下,選擇6通道開始測電壓;若7鍵按下,選擇7通道開始測電壓;若5鍵按下,選擇6、7兩通道循環(huán)采集。其他鍵按下沒有作用。B鍵按下后,進(jìn)入設(shè)定時(shí)間初值子程序。1.2 主程序流程圖:2. 各子程序設(shè)計(jì)及說明一、二、22.1 顯示子程序:(1)動(dòng)態(tài)顯示原理:共有8個(gè)LED數(shù)碼顯示器,每一瞬間只有一位顯示器處于點(diǎn)亮狀態(tài)。利用視覺暫留的原理,為了讓人眼睛觀察到連續(xù)顯示的效果,
19、需要連續(xù)對(duì)8位數(shù)碼顯示器進(jìn)行循環(huán)掃描。即只有在循環(huán)顯示的程序中才會(huì)看到8位顯示器同時(shí)顯示程序賦給的值。顯示的值是要通過8255與LED相連,確定位選后將待顯示的值經(jīng)過二十進(jìn)制轉(zhuǎn)換并在段碼表中找出相應(yīng)的段碼并送入8255PA口進(jìn)行顯示。經(jīng)過8位的循環(huán)之后,又由于視覺暫留效應(yīng)會(huì)看到8位LED數(shù)碼顯示器會(huì)顯示出待顯示的值。(2)顯示程序流程圖:2.2 判鍵、鍵碼轉(zhuǎn)換子程序(1)判鍵、鍵碼轉(zhuǎn)換子程序原理:判鍵、鍵碼轉(zhuǎn)換子程序是通過先給8255PC口設(shè)掃描列線數(shù)據(jù)BL初值,02H或是、01H,然后通過判斷8255PB口的數(shù)據(jù)AL的值來判斷是否有鍵按下,并且經(jīng)過、一系列的移位,最終通過AL+BL判斷出是哪
20、一行鍵被按下來提取鍵碼,并將其鍵碼轉(zhuǎn)換成十六進(jìn)制碼。(2)判鍵、鍵碼轉(zhuǎn)換子程序:;*判鍵子程序*RD_KB: LDB B1L,#02H ;準(zhǔn)備掃描第一列鍵 07 STB B1L,PC82550 SKIP SKIP LDB A1L,PB82550 ;讀鍵碼 XORB A1L,#0FFH ;判斷是否有鍵按下? JNE KEYVAL ;有鍵按下,轉(zhuǎn)KEYVAL LDB B1L,#01H ;無鍵按下,換列操作 STB B1L,PC82550 SKIP SKIP LDB A1L,PB82550 XORB A1L,#0FFH JNE KEYVAL ;有鍵按下,轉(zhuǎn)KEYVAL JE NOKEY;*鍵碼轉(zhuǎn)換子
21、程序*KEYVAL: ANDB B1L,#01H ;列線高位清0,保留低位 SHL B1L,#03H ;當(dāng)為第二列鍵碼時(shí),數(shù)字加“8”,第二列數(shù)字的權(quán)值,獲得(8F) LDB A1H,A1L LDB A1L,#0FFHSHIFT: INCB A1L ;鍵碼轉(zhuǎn)換為:0F SHRB A1H,#01H ;通過鍵碼右移,"C=0",鍵碼加1,C=1,鍵碼轉(zhuǎn)換完成。 JNC SHIFT ORB A1L,B1L ;A1L+B1L=0F 鍵碼 LCALL KEY STB A1L,F1X+ ST A1L,I1X+ SCALL DELAYKBNOKEY: LDB A1L,#10HKBEXIT
22、: RETdelaykb: LD D1X,#0000H ;判鍵延時(shí)子程序delaykb1:DEC D1X JNE delaykb1 RET(3)判鍵、鍵碼轉(zhuǎn)換子程序流程圖:2.3 存時(shí)間子程序:(1)存時(shí)間子程序原理:在主程序中按B鍵進(jìn)入設(shè)定時(shí)間初值子程序。在設(shè)定時(shí)間初值子程序中中斷關(guān)閉,每次按下一個(gè)數(shù)字鍵,會(huì)依次存入小時(shí)高位、小時(shí)低位、分鐘高位、分鐘低位、秒鐘高位、秒鐘低位等6個(gè)存儲(chǔ)單元中,并且會(huì)把按下的數(shù)字顯示在相應(yīng)的LED位上。即可以實(shí)現(xiàn)輸入時(shí)間值的實(shí)時(shí)顯示。而且只要輸入的小時(shí)數(shù)大于24或分鐘數(shù)大于60或秒鐘數(shù)大于60,就會(huì)把之前輸進(jìn)去的時(shí)間值清零,等待重新輸入6個(gè)時(shí)間值。 在設(shè)定時(shí)間的
23、過程中,按下E鍵會(huì)開中斷,并返回主程序中,從設(shè)定的時(shí)間初值開始計(jì)時(shí)。按下其他鍵則沒有作用。(2)存時(shí)間子程序流程圖:2.4 時(shí)鐘顯示子程序:(1)功能說明:將時(shí)鐘十進(jìn)制數(shù)值送入顯示緩沖區(qū),尋找各自相應(yīng)的顯示代碼,經(jīng)過顯示移位,通過對(duì)8255PA口和PC口的控制,實(shí)現(xiàn)動(dòng)態(tài)顯示時(shí)鐘基本功能。(2)時(shí)鐘顯示子程序:2.5 A/D采集程序的實(shí)現(xiàn):(1)功能說明:在主程序中按A鍵后進(jìn)入測電壓程序。按6鍵進(jìn)入6通道采集電壓,按7鍵進(jìn)入7通道采集電壓,按5鍵則巡檢6、7通道電壓值。將A/D采集到的電壓數(shù)值顯示在低五位的顯示器,同時(shí)判定所采集的通道號(hào),顯示在最高位顯示器上。(2)A/D采集程序流程圖:六、 程
24、序調(diào)試及問題、解決方法:1、 程序編寫中的問題:本學(xué)期的創(chuàng)新訓(xùn)練單片機(jī)課程從一開始的時(shí)候由于我們課內(nèi)的微機(jī)原理課程是同步進(jìn)行的,開始的時(shí)候?qū)τ谶@個(gè)實(shí)驗(yàn)內(nèi)容不是很了解,匯編語言也是掌握不熟。編寫程序上出現(xiàn)了或多或少的錯(cuò)誤,最后隨著微機(jī)原理的學(xué)習(xí),以及對(duì)于這門課理解的不斷加深,最后解決了這些錯(cuò)誤。2、 顯示子程序調(diào)試問題分析:(1) 顯示子程序中延時(shí)的影響:若延時(shí)時(shí)間過短,顯示亮度高,但是難以分辨,難以讀數(shù);若延時(shí)時(shí)間過長,顯示亮度低,數(shù)碼顯示閃爍過快,因此示數(shù)不穩(wěn)定,難以讀數(shù)。經(jīng)過反復(fù)的調(diào)整能找到一個(gè)合適的延時(shí)時(shí)間,使顯示碼清晰可辨,而且穩(wěn)定,亮度適宜。(2) 在設(shè)定時(shí)間初值子程序中,最困難的問
25、題是在LED數(shù)碼顯示器上不斷更新當(dāng)前輸入的數(shù)值,而其他顯示位不變。經(jīng)過不斷地調(diào)試之后發(fā)現(xiàn)可以依次用六個(gè)循環(huán)顯示子程序,第零個(gè)顯示程序顯示00-00-00,輸入第一個(gè)數(shù)值的時(shí)候更改顯示的小時(shí)高位值,程序跳到第一個(gè)循環(huán)顯示子程序顯示小時(shí)高位,其他位保持0不變。依次類推。輸入六個(gè)數(shù)字后,按下E鍵就可以跳出設(shè)定時(shí)間初值子程序,開中斷,返回主程序,從設(shè)定的值開始計(jì)時(shí)。但是這樣的程序會(huì)有一個(gè)問題就是當(dāng)輸入錯(cuò)了的時(shí)候沒法改正,只有當(dāng)輸入的時(shí)超過24或分鐘、秒超過60的時(shí)候才會(huì)清零,這個(gè)問題到最后還是沒有解決這個(gè)問題。3、 電壓測量程序的問題:(1)電壓測定子程序讀取電壓的方法可以用中斷法,也可以用檢查電壓轉(zhuǎn)
26、換完成標(biāo)志的方法。考慮到與計(jì)時(shí)程序的兼容問題,我選擇了后者。(2)最初我們想借鑒老師所提供的演示程序中的思路,使用定時(shí)器1和HIS中斷實(shí)現(xiàn)電壓循環(huán)采集功能,但是后來因?yàn)槲译妷簻y量程序以及時(shí)鐘程序并沒有使用定時(shí)器1和HIS中斷,但在編程的過程中,我們發(fā)現(xiàn)使用這種思路會(huì)加入很多變量,很難實(shí)現(xiàn)所要求的雙通道巡檢功能。因此最終我們通過添加延時(shí)子程序AD56和AD57實(shí)現(xiàn)了雙通道巡檢。使程序在AD6和AD7的功能中循環(huán),我們不斷調(diào)整循環(huán)次數(shù)來改變6、7兩通道巡檢的時(shí)間間隔,使得其間隔達(dá)到最佳巡檢時(shí)間,完成了最終的實(shí)驗(yàn)要求。七、 實(shí)驗(yàn)結(jié)果及結(jié)果分析1、 標(biāo)準(zhǔn)數(shù)據(jù)與測量數(shù)據(jù)表(電壓表):序號(hào)標(biāo)準(zhǔn)電壓(mv)
27、測量電壓誤差備注ACH6 ACH7ACH6ACH7100000最小測量值25045055100.2%1.2%31002100410090.2%0.70%41501150315080.13%0.47%51990199319930.15%0.15%62500249725020.12%0.08%73000299730020.10%0.067%83490349234970.06%0.20%94000400140060.025%0.15%104500450145060.022%0.13%114720471647210.08%0.021%最大測量值2.誤差分析:從整體上看,本實(shí)驗(yàn)的誤差是很小的,絕對(duì)誤差值
28、相差不多,而相對(duì)誤差值是隨著電壓的增大而減小,高電壓下更為準(zhǔn)確。但總體上來說,這個(gè)誤差是可以被接受的。分析誤差來源可知以下幾點(diǎn):首先從實(shí)驗(yàn)數(shù)據(jù)表格中可以看出,基本上有著7通道電壓值比6通道電壓值大5mv的規(guī)律關(guān)系,這是由于系統(tǒng)內(nèi)的6、7兩個(gè)通道是會(huì)有略微差別的,因此顯示出來的結(jié)果或有細(xì)微不同,而現(xiàn)實(shí)的分辨率是5mv左右,因此兩通道之間有時(shí)可能會(huì)差上個(gè)5mv。其次,系統(tǒng)存在這系統(tǒng)誤差是不可避免的,這主要由A/D轉(zhuǎn)換自身的誤差決定,這是無法消除的;還有是由A/D基準(zhǔn)電壓不是標(biāo)準(zhǔn)的5.12V所致,若輸入為5.12V,則輸入電壓計(jì)算公式為:Vout= 51201023脳N(其中N為從A/D結(jié)果寄存器中
29、取出的結(jié)果),理論A/D的分辨率約為5mv,但若實(shí)際的A/D參考電壓與標(biāo)準(zhǔn)值相差較大時(shí)就會(huì)帶來較大的誤差,這一誤差可通過測量真實(shí)的參考電壓,求得實(shí)際的分辨率來提高精度。最后一點(diǎn)是測量儀器(標(biāo)準(zhǔn)數(shù)字電壓表)本身存在誤差,這一誤差也無法消除。八、 結(jié)論和創(chuàng)新點(diǎn)1、 實(shí)驗(yàn)課題完成情況:經(jīng)過一個(gè)學(xué)期的程序調(diào)試,我們小組基本上已經(jīng)完成了本次實(shí)驗(yàn)課題的全部要求,能夠?qū)崿F(xiàn)時(shí)鐘功能,并且可以任意設(shè)定有效時(shí)鐘,還完成了Ach6、Ach7雙通道電壓測量功能,并且可以兩個(gè)通道循環(huán)采集。同時(shí)期間也嘗試了修改老師已給的程序。同時(shí)還對(duì)整個(gè)系統(tǒng)進(jìn)行了多次改進(jìn)和優(yōu)化,用較少數(shù)目的按鍵實(shí)現(xiàn)了所有功能,并且各按鍵功能獨(dú)立,互不干
30、擾,這樣既提高了按鍵的利用率,又有利于系統(tǒng)的進(jìn)一步擴(kuò)展。2、 課題創(chuàng)新點(diǎn)或新思路本次實(shí)驗(yàn)課題中的電壓測量由于系統(tǒng)內(nèi)部的A/D基準(zhǔn)電壓不一定是標(biāo)準(zhǔn)電壓5.12V,而且相差越多,電壓測量誤差越大,鑒于這個(gè)現(xiàn)象,我們小組通過改變電壓計(jì)算過程中所確定的分辨率的大小,并測量計(jì)算對(duì)應(yīng)的誤差大小,通過比較后最終找到最佳的分辨率,從而將誤差減小到最低。以下是我們小組測量計(jì)算的6通道電壓數(shù)據(jù)和結(jié)果:當(dāng)分辨率為5.000mv時(shí),幾組數(shù)據(jù):V(伏)1234V標(biāo)準(zhǔn)1.002.003.004.00V測量1.0202.0503.0504.080誤差2%2.5%1.67%2%當(dāng)分辨率為4.950mv時(shí),幾組數(shù)據(jù):V(伏)1
31、234V標(biāo)準(zhǔn)1.002.003.004.00V測量1.0042.0143.0344.044誤差0.4%0.7%1.1%1.1%當(dāng)分辨率為4.898mv時(shí),幾組數(shù)據(jù):V(伏)1234V標(biāo)準(zhǔn)1.002.003.004.00V測量1.0022.0032.9974.001誤差0.2%0.15%0.1%0.025%當(dāng)分辨率為4.850mv時(shí),幾組數(shù)據(jù):V(伏)1234V標(biāo)準(zhǔn)1.002.003.004.00V測量0.9841.9782.9633.952誤差1.6%1.1%1.2%1.2%不同分辨率最大誤差:參數(shù)值5000495048984850最大誤差2.5%1.1%0.2%1.6%不同分辨率最大誤差圖像
32、:從圖像中可以看出,當(dāng)分辨率接近4.900mv時(shí),相對(duì)誤差最小,并且進(jìn)一步測量得出當(dāng)為4.898mv時(shí),相對(duì)誤差最小,因此我們實(shí)驗(yàn)中的程序設(shè)計(jì)就去的是這一個(gè)值:MULU DX,#4898 DIVU DX,#10003、 收獲與總結(jié):經(jīng)過了一個(gè)學(xué)期的課程學(xué)習(xí),我在這門綜合創(chuàng)新實(shí)習(xí)課程上學(xué)習(xí)到了很多的知識(shí),在自己學(xué)習(xí)應(yīng)用單片機(jī)匯編語言的寶貴經(jīng)歷中,獲得了很多難得的經(jīng)驗(yàn)。一個(gè)學(xué)期的學(xué)習(xí)后,我得到了一份充實(shí)的經(jīng)歷作為我的寶貴財(cái)富。在這學(xué)期里,我們雖然面臨了很多困難,但也通過自己的努力解決了不少問題,能夠最終將課程要求的題目完成,單片機(jī)上運(yùn)行起了自己的程序,我有了不小的成就感?;仡欉@學(xué)期的課程,我對(duì)單片
33、機(jī)和匯編語言的學(xué)習(xí)大概分為了:課程理論的學(xué)習(xí),演示程序的理解,程序的調(diào)試三個(gè)階段(第一和第二兩部分很長時(shí)間同時(shí)進(jìn)行)。在課程的開始老師給我們講解了關(guān)于單片機(jī)與匯編語言的基礎(chǔ)知識(shí),雖然老師講解得很仔細(xì),但是說實(shí)話我并沒有在那時(shí)學(xué)得很好。因?yàn)檫@學(xué)期的創(chuàng)新實(shí)習(xí)所用到的大量是微機(jī)原理課程中的知識(shí),我在這學(xué)期剛開始學(xué)習(xí)微機(jī)原理,微原的進(jìn)行在很大程度上與創(chuàng)新實(shí)習(xí)是并行開展的,所以開始遇到了不少困難。由于缺少微原的知識(shí),課程開始的那段時(shí)間,我們的項(xiàng)目進(jìn)行地非常的緩慢,在不少時(shí)候我甚至懷疑我們能不能將項(xiàng)目完成。但當(dāng)我們開始靜下心來,從演示程序入手,一點(diǎn)一點(diǎn)的對(duì)照書本和演示程序進(jìn)行理解,并且微原課開始深入的時(shí)候
34、,我們的工作效率提高了。雖然在此之后還是遇到了各種各樣的困難,但是在經(jīng)過了前一段時(shí)間的鍛煉,我們獨(dú)立解決困難,自主進(jìn)行學(xué)習(xí)的能力得到了提高后,我們還是解決了大部分困難。這也是我這學(xué)期除了知識(shí)以外最大收獲。我想在以后的學(xué)習(xí)生活中,一定也會(huì)遇到類似的問題,當(dāng)我再遇到這些困難的時(shí)候,我會(huì)因?yàn)檫@次的經(jīng)歷而有信心解決將來的困難。在這學(xué)期的學(xué)習(xí)中,我們還在解決問題的過程中,學(xué)會(huì)了相互協(xié)作,我們小組常與其他小組討論,當(dāng)我們遇到問題時(shí),常常會(huì)有其他同學(xué)幫助我們一同思考解決,如開始時(shí)我們對(duì)字操作和字節(jié)操作一直分得不是太清楚,但是經(jīng)過其他小組同學(xué)的提醒,我們?cè)谥蟮木幊讨芯妥⒁獾竭@個(gè)問題。當(dāng)其他小組有困難時(shí),我們
35、也常常與他們討論。有不少時(shí)候,我們會(huì)面臨同樣的問題,如果是我們小組已經(jīng)解決的問題,我們樂意與其他小組一起分享我們的經(jīng)驗(yàn)。我想,這是團(tuán)隊(duì)協(xié)作中非常重要的意識(shí)。最后再回望一下這學(xué)期這門課,感嘆時(shí)間過得真快,課題能做出來真不錯(cuò)。還要謝謝陳老師的講解和指導(dǎo),每次向老師請(qǐng)教的時(shí)候,老師找出問題的速度都非??於曳浅?zhǔn),這給我們問題的解決提供了很大的幫助。這學(xué)期學(xué)到很多,感謝創(chuàng)新實(shí)習(xí)這門課! 九、 簡易數(shù)字電壓表操作手冊(cè)運(yùn)行主程序后從00-00-00開始計(jì)時(shí)功能備注A按下后沒有顯示,等待用戶選擇電壓通道按下A鍵后,再按6、7鍵選擇電壓通道,按5鍵6、7通道巡檢,按其他鍵沒有作用;按下B鍵,設(shè)定初值后,再按
36、E鍵可以開始計(jì)時(shí),按其他鍵沒有作用;6按下后顯示ach6通道的輸入電壓值7按下后顯示ach7通道的輸入電壓值5按下后巡檢ach6、 ach7通道的輸入電壓值B按下后關(guān)中斷,顯示00-00-00,等待設(shè)定時(shí)間初值按數(shù)字鍵依次輸入時(shí)(24小時(shí)計(jì))、分、秒的六位數(shù)字若輸入有誤,需重新輸入時(shí)間值E按下后顯示當(dāng)前時(shí)間十、 附錄:(全部程序); soft_T_CLOCK PRO; 計(jì)算 t1min=(2*8/11.059) us=1447ns; soft_t 加載 數(shù)值 N1=50ms/1447ns=34554 50ms中斷一次; 1s 對(duì)應(yīng)的中斷次數(shù) N2=1000/50=20 C8255 EQU 0B
37、F06H ;8255命令口地址PA8255 EQU 0BF00H ;8255 PA口地址PB8255 EQU 0BF02H ;8255 PB口地址PC8255 EQU 0BF04H ;8255 PC口地址hso_time equ 04hAX EQU 1AH ;wordAL EQU 1AH ;low BYTEAH EQU 1BH ;high BYTEbx equ 1CHbl equ 1CHbh equ 1DHCX EQU 1EH ;DW 1cl equ 1EHch equ 1FH DX EQU 20H ;DW 1DL EQU 20H ;BYTEDH EQU 21H ;BYTEex equ 22H
38、el equ 22Heh equ 23Hcount0 equ 2Ah ;通用計(jì)數(shù)器1count1 equ 2Bh ;通用計(jì)數(shù)器2T_count equ 2Ch ;定時(shí)計(jì)數(shù)器(裝載T1達(dá)到1秒所需的溢出次數(shù))t_vt equ 20 ;定標(biāo)50ms中斷一次,soft_T“1”秒=20。軟件定時(shí)器中斷次數(shù),常數(shù)值(非通用寄存器),改變此值,變化顯示時(shí)間的快慢soft_n equ 34554 DIS_BUF_P equ 30h ;顯示代碼存放緩沖區(qū)d_buf equ 40h ;40h49h 十進(jìn)制數(shù)暫存緩沖區(qū)t_buf equ 4ah ;4ah4fh 十進(jìn)制數(shù) 時(shí)、分、秒單元s_buf equ 50H
39、 ;二進(jìn)制數(shù)秒單元m_buf equ 52h ;二進(jìn)制數(shù)分單元h_buf equ 54h ;二進(jìn)制數(shù)時(shí)單元fx equ 5ChFL EQU 5CHFH EQU 5DH A1L EQU 60H ;鍵值A(chǔ)1H EQU 61HB1X EQU 62HB1L EQU 62HC1L EQU 64h D1X EQU 66HD1L EQU 66HE1X EQU 68HE1L EQU 68H F1X EQU 6cHG1X EQU 6eH ;判斷六位I1X EQU 70HHH EQU 72H ;小時(shí)高位HL EQU HH+1 ;小時(shí)低位MH EQU 74HML EQU MH+1SH EQU 76HSL EQU S
40、H+1J1X EQU 78H HOURH EQU 80H ;小時(shí)高低位合成HOURL EQU 82HMINUTEH EQU 84HMINUTEL EQU 86H SECONDH EQU 88HSECONDL EQU 8AHDT1 EQU 7CH;*GX EQU 56HGL EQU GXGH EQU 57HAD_BUF EQU 90HAD_DISP EQU 0A0HPX EQU 0B0HPL EQU 0B0HPH EQU 0B1HADDRESS EQU 5EHCOUNT3 EQU 60HAD_COMMAND EQU 02HAD_RESULT_L EQU 02HAD_RESULT_H EQU 03
41、H;*org 200ah ;soft定時(shí)器中斷向量dw 2800hORG 2080H ;*程序初始化* LD SP,#100Hclrb s_bufclrb m_bufclrb h_buflcall clr_ramLDB A1L,#82H ;PB口輸入,PA,PC口輸出STB A1L,C82550nopldb T_count,#T_VT ;t1溢出次數(shù)ldb hsocom,#18H ;加載軟件定時(shí)器命令與參數(shù)add hsotim,timer1,#soft_nclrb int_pending ldb int_mask,#20h ;開放軟件定時(shí)器中斷ei ;*主程序* LOOP: LCALL TIM
42、EDISPLAY LDBFH,#11100001B STB FH,PC8255 LDB FL,PB8255 CMP FX,#0E1F7H ;B JE SET00 CMP FX,#0E1FBH ;A JE K20 SJMP LOOPSET00: LCALL DELAYKB LJMP SET0K20: LJMP AD_CHANGNEL;*時(shí)間顯示子程序*TIMEDISPLAY: LDB COUNT1,#6 ld cx,#t_buf ;取時(shí)間顯示位 ld ex,#dis_buf_pdis_lp0:ldb dl,cx+ clrb dh add dx,#LED ;尋找顯示代碼 LDb al,dx ;存顯
43、示代碼stb al,ex+djnz count1,dis_lp0ld ax,#dis_buf_pldb bl,5ax ;顯示移位 12位顯示秒,3位顯示小數(shù)點(diǎn),45位顯示分,6位顯示小數(shù)點(diǎn),78位顯示時(shí)stb bl,7ax ldb bl,4axstb bl,6axldb bl,3axstb bl,4ax ldb bl,2axstb bl,3axldb bl,#02h ;2位與5位顯示一橫杠stb bl,2axstb bl,5axld ex,#dis_buf_p ;dis_buf_p內(nèi)容送顯示LDB COUNT1,#8LDB AH,#00000000B ;位控譯碼dis_lp1:LD BX,#0BF00HLDB AL,ex+STB AL,BXLD BX,#0BF04HSTB AH,BXlcall delaytimeaddb ah,#20h ;指向下一位顯示器djnz count1,dis_lp1ret ;*time清內(nèi)存子程序*clr_ram:ldb count1,#24h ld ax,#0030h clr bxloopt_0: st bx,ax+ djnz count1,loopt_0 ret ;*time二-十轉(zhuǎn)換子程序* ;功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人財(cái)產(chǎn)抵押借款簡易協(xié)議文本版A版
- 二零二四全新石灰石環(huán)保綜合利用合同3篇
- 2024版特種設(shè)備吊裝運(yùn)輸合同3篇
- 個(gè)人房產(chǎn)買賣規(guī)范協(xié)議2024版A版
- 2024年04月中國建設(shè)銀行北京市分行度社會(huì)招考專業(yè)人才筆試歷年參考題庫附帶答案詳解
- 2025年農(nóng)業(yè)科技推廣合同會(huì)簽紀(jì)要3篇
- 2024版輪胎承包合同協(xié)議書
- 二零二五年度物流并購保密及市場共享協(xié)議2篇
- 專業(yè)節(jié)電器產(chǎn)品銷售協(xié)議規(guī)范2024版A版
- 2024年03月貴州貴州銀行六盤水分行招考筆試歷年參考題庫附帶答案詳解
- GB/T 12914-2008紙和紙板抗張強(qiáng)度的測定
- GB/T 1185-2006光學(xué)零件表面疵病
- ps6000自動(dòng)化系統(tǒng)用戶操作及問題處理培訓(xùn)
- 家庭教養(yǎng)方式問卷(含評(píng)分標(biāo)準(zhǔn))
- 城市軌道交通安全管理課件(完整版)
- 線纜包覆擠塑模設(shè)計(jì)和原理
- TSG ZF001-2006 安全閥安全技術(shù)監(jiān)察規(guī)程
- 部編版二年級(jí)語文下冊(cè)《蜘蛛開店》
- 鍋爐升降平臺(tái)管理
- 200m3╱h凈化水處理站設(shè)計(jì)方案
- 個(gè)體化健康教育記錄表格模板1
評(píng)論
0/150
提交評(píng)論