單片機數(shù)據(jù)采集、處理及顯示程序設(shè)計_第1頁
單片機數(shù)據(jù)采集、處理及顯示程序設(shè)計_第2頁
免費預覽已結(jié)束,剩余7頁可下載查看

下載本文檔

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

文檔簡介

1、1 / 9 單片機數(shù)據(jù)采集、處理及顯示程序設(shè)計 . 總體設(shè)計方案: LED 初始顯示為 0,采用查詢的方式進行鍵盤掃描,以確定是否有輸入,不停地掃描 直到有輸入為止:輸入為 1 時,按鍵無效,繼續(xù)掃描直到再次有輸入,輸入為 0 時,則開 始進行數(shù)據(jù)的采集;采集一個周期,將采集后的數(shù)據(jù)進行濾波, 再求出 0、 1/2Vmax、Vmax, 送到 LED 顯示,結(jié)束后進行鍵盤掃描, 確定是否有按鍵 1 輸入,有則停止,無則繼續(xù)進行 數(shù)據(jù)采集,如此循環(huán)。 . 硬件邏輯圖: 1. 下圖為硬件邏輯圖: 2. 單片機及各外設(shè)參數(shù)選擇: A. 單片機為 8031/8051; B. 采用外部時鐘,振蕩頻率為 1

2、2MHz,則機器周期為1us; C. 由于本實驗只需 0、1 兩個按鍵就能實現(xiàn)控制(0 實現(xiàn)啟動,1 實現(xiàn)關(guān)閉),所以采 用簡單的1X2 非編碼鍵盤; D. 由于已知輸入信號為幅值 5V 的正弦信號,并要求 A/D 轉(zhuǎn)換的誤差小于 0.02V,因此, 選用 ADC0809,其能處理的信號為 0 5V,不需要進行信號放大; 其分辨率為 8 位, 轉(zhuǎn)換的誤差為 0.0196V,能滿足要求;其轉(zhuǎn)換時間大約為 100us; E. 為了保證轉(zhuǎn)換精度,在信號源與 ADC 之間還需加一 S/H,采用 LF398,保持電容選 擇為 1000PF; F. 由于要顯示 3 個數(shù)據(jù),且小數(shù)點后保留兩位有效數(shù)據(jù),所以

3、需要 3 X 4=12 個 LED, 本實驗選用 7 段 LED 且從左到右,依次顯示 0、1/2Vmax、Vmax; G. 由于要求利用串行口擴展接口來顯示數(shù)據(jù),所以需連接一寄存器,本實驗采用串行 輸入、并行輸出的移位寄存器: 74LS164 . 軟件編寫: 1 .流程圖如下: 本實驗采用查詢的方式來實現(xiàn)鍵盤的控制;在采集的過程中由于可能會有隨機干擾, 2 / 9 信號本身會在某一數(shù)值范圍附近上下波動, 所以采用算術(shù)平均濾波的方式進行濾波; 由于 輸入信號最大頻率為 0.2H z,選擇采樣周期為 2H z,即采樣周期為 500ms。3 / 9 LED 初始顯示為 0 之/鍵 0 啟動 ADC

4、 數(shù)據(jù)采集一個周期 N 是否有按鍵? 延時 10ms 去抖 是否仍有按鍵? 鍵 0?鍵 1? 2.采用匯編進行編程,具體的代碼及其說明如下: ORG 0000H LJMP START ORG 0300H START: ACALL DSP1 ;初始化顯示 0.00、0.00、0.00 SCAN: ACALL KEXAM ;判斷是否有按鍵 JNZ SCAN ;沒按鍵就繼續(xù) SCAN ACALL D10ms ;去抖 ACALL KEXAM 4 / 9 JNZ SCAN KEY: SETB P1.1 ;檢查鍵值 SETB P1.3 CLR P1.2 MOV A,P1 ANL A,#02H CJNE A

5、,#02H,SCAN ;按鍵為 1 則返回繼續(xù)查詢是否有按鍵 ; 按鍵為 0,進入到數(shù)據(jù)采集、轉(zhuǎn)換及顯示 ADC: MOV R1,#40H MOV DPTR,#07FF8H MOV R2,#10 ;一個周期采集 10 個點 L9: MOV R0,#30H MOV R3,#4 L10: MOV A,#0 SETB P1.4 ;S/H 保持 MOVX DPTR,A JNB P3.3 $ CLR P1.4 MOVX A,DPTR MOV R0,A INC R0 ;啟動 ADC ; 轉(zhuǎn)換結(jié)束 ;S/H 采樣 ACALL D5ms DJNZ R3,L10 ACALL Filter INC R1 ACAL

6、L D500ms ;濾波 DJNZ R2,L9 ACALL ORDER ACALL DSP2 ;查詢按鍵 ACALL KEXAM ; 計算要顯示的值 :最小值、最大值及中間值 ;顯示值 JNZ ADC ACALL D10ms ACALL KEXAM JNZ ADC SETB P1.1 SETB P1.3 CLR P1.2 MOV A,P1 ANL A,#02H CJNE A,#02H,START ;按鍵為 1 則返回開始,并顯示 0 AJMP ADC ;下面為子程序: ;判斷是否有按鍵 5 / 9 KEXAM: SETB P1.1 CLR P1.2 CLR P1.3 MOV A,P1 ANL

7、A,#02H ;0000 0010 RET ;初始化顯示 0.00、0.00、0.00 DSP1: MOV R0,#30H MOV R1,#40H MOV R2,#3 L0: MOV R1,#0 ACALL CHANGE0 將 R1 中的值轉(zhuǎn)換為有物理意義的值,存入 4 個 R0 中 ACALL CHANGE1 將 4 個 R0 中的值轉(zhuǎn)化為能顯示的數(shù)模 ACALL DPLED 顯示 4 個 R0 中的值 INC R1 DJNZ R2,L0 RET ;輸出顯示一個 LED DPLED: MOV R0,#30H MOV R4,#4 L1: MOV R3,#8 MOV A,R0 L2: RLC A

8、 MOV P3.0,C CLR P3.1 SETB P3.1 DJNZ R3,L2 INC R0 DJNZ R4,L1 RET ;將 RO 中要顯示的轉(zhuǎn)換為字模,然后覆蓋 R0 CHANGE1: MOV R0,#30H MOV R4,#4 L3: PUSH ACC MOV DPTR,#TABLE MOV A,R0 MOV A,A+DPTR 6 / 9 MOV R0,A INC R0 DJNZ R4,L3 RET ;標度變換:將 R1 中的值轉(zhuǎn)換為有物理意義的值,并存入 4 個 R0 中(如將 125 轉(zhuǎn)換為 2.45V) CHANGE0: PUSH ACC PUSH B ;除 17 MOV A

9、,R1 MOV B,#11H ;除以 17 DIV AB MOV R0,A INC R0 MOV A,B MOV B,#0AH MUL AB MOV A,B MOV B,#11H ;除以 17 DIV AB MOV R0,A INC R0 MOV A,B MOV B,#0AH MUL AB MOV A,B MOV B,#11H ;除以 17 DIV AB MOV R0,A ;除 3 DEC R0 DEC R0 DEC R0 MOV A,R0 MOV B,#03H ;除以 3 DIV AB MOV R0,A INC RO MOV A,B MOV B,#0AH MUL AB MOV A,B ADD

10、 A,R0 MOV B,#03H ;除以 3 7 / 9 DIV AB MOV R0,A INC RO MOV A,B MOV B,#0AH MUL AB MOV A,B ADD A,R0 MOV B,#03H ;除以 3 DIV AB ;將小數(shù)點 10 加上 INC RO MOV R0,A DEC RO DEC RO MOV A,RO INC RO MOV RO,A DEC RO MOV RO,#1OH POP B POP ACC RET ;延時 5ms D5ms: MOV R2,#0AH ;10 L4:MOV R3,#F8H ;248 L5:DJNZ R3,L5 ;248*2=496 DJ

11、NZ R2,L4 ;500*10=5000us=5ms RET ;延時 10ms D10ms: MOV R2,#14H ;20 L4:MOV R3,#F8H ;248 L5:DJNZ R3,L5 ;248*2=496 DJNZ R2,L4 ;500*20=10000us=10ms RET ;延時 500ms D500ms: MOV R2,#100 L6:MOV R3,#4 L7:MOV R4,#249 L8:NOP NOP 8 / 9 NOP DJNZ R4,L8 DJNZ R3,L7 DJNZ R2,L6 RET ;125*5=1245 ;1249*4=4996 ;5000*100=5000

12、00us=500ms ;算術(shù)平均濾波,將得到的值存入 R1 中 Filter: PUSH PSW PUSH A PUSH B MOV FLAG,#00H MOV R4,#4 MOV R0,#30H CLR A L11: ADD A,R0 JNC NEXT INC FLAG NEXT: INC RO DJNZ R4, L11 MOV R5,#4 DIVIDE: MOV B,A MOV A,FLAG CLR C RRC A MOV FLAG A MOV A,B RRC A DJNZ R5,DIVIDE MOV R1,A POP B POP A POP PSW RET ;將采集到的 R1 中的 10

13、 個值進行排序,采用冒泡法 ORDER: MOV R3,#9 L12: MOV A,R3 MOV R4,A MOV R1,#40H L13: MOV A,R1 INC R1 9 / 9 CLR C SUBB A,R1 JC DONE MOV A,R1 DEC R1 XCH A,R1 INC R1 MOV R1,A DONE: DJNZ R4,L13 DJNZ R3,L12 RET ;顯示 R1 中的值 DSP2: MOV R1,#40H ACALL CHANGE0 將 R1 中的值轉(zhuǎn)換為有物理意義的值,存入 4 個 R0 中 ACALL CHANGE1 將 4 個 R0 中的值轉(zhuǎn)化為能顯示的數(shù)模 ACALL DPLED 顯示 4 個 R0 中的值 INC R1 MOV R3,#2 L14: MOV R4,#4 INC R1 DJNZ R4,L14 ACALL CHANGE0 將 R1 中的值轉(zhuǎn)換為有物理意義的值,存入 4 個 R0 中 ACAL

溫馨提示

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

評論

0/150

提交評論