當前位置:編程學習大全網 - 編程語言 - 單片機(型號89C52)之簡易數字電壓表的設計

單片機(型號89C52)之簡易數字電壓表的設計

這個是最基本的,妳首先要把他分開,AD采樣,和數值顯示兩部分,其實妳可以先讀懂C的程序,用Keil編譯器編譯,然後在Keil編譯器裏就可以看到匯編了,下面給妳個參看,運行條件為8051單片機,12M晶振,ADC0808,***陰數碼管。

;********************************************************

;########################################################

OE BIT P3.0 ;ADC0808的OE端

EOC BIT P3.1 ;ADC0808的EOC端

ST BIT P3.2 ;ADC0808的START和ALE端

ADD0 BIT P3.4 ;ADC0808的模擬輸入選擇端

ADD1 BIT P3.5

ADD2 BIT P3.6

LED_0 DATA 30H ;顯示緩沖區

LED_1 DATA 31H

LED_2 DATA 32H

LED_3 DATA 33H

ADC DATA 34H ;存放轉換後的數據

;//////主程序開始////////////////////////////////////////

ORG 0000H

AJMP START

ORG 0030H

;------初始化-----------------------------------

START: MOV SP,#60H ;設置堆棧

MOV LED_0,#00H ;清空顯示緩沖區

MOV LED_1,#00H

MOV LED_2,#00H

MOV LED_3,#00H

MOV DPTR,#TABLE ;送字型碼表首地址

SETB ADD0

SETB ADD1

CLR ADD2 ;選擇ADC0808的通道3

;------ADC0808轉換------------------------------

WAIT: CLR ST

SETB ST

CLR ST ;啟動轉換

JNB EOC,$ ;等待轉換結束

SETB OE ;允許輸出

MOV ADC,P1 ;暫存轉換結果

CLR OE ;關閉輸出

;------數據處理,已備顯示------------------------

MOV A,ADC ;將AD轉換結果轉換成BCD碼

MOV B,#0C3H ;乘以19.5MV

MUL AB

MOV R7,A

MOV R6,B

HB2: CLR A ;BCD碼初始化

CLR C

MOV R3,A

MOV R4,A

MOV R5,A

MOV R2,#10H ;轉換雙字節十六進制整數

HB3: MOV A,R7 ;從高端移出待轉換數的壹位到CY中

RLC A

MOV R7,A

MOV A,R6

RLC A

MOV R6,A

MOV A,R5 ;BCD碼帶進位自身相加,相當於乘2

ADDC A,R5

DA A ;十進制調整

MOV R5,A

MOV A,R4

ADDC A,R4

DA A

MOV R4,A

MOV A,R3

ADDC A,R3

MOV R3,A ;雙字節十六進制數的萬位數不超過6,不用調整

DJNZ R2,HB3

MOV A,R5

SWAP A

ANL A,#0FH

MOV LED_0,A

MOV A,R4

ANL A,#0FH

MOV LED_1,A

MOV A,R4

SWAP A

ANL A,#0FH

MOV LED_2,A

MOV A,R3

ANL A,#0FH

MOV LED_3,A

LCALL DISP ;調用顯示子程序

AJMP WAIT

;//////數碼管顯示子程序///////////////////////////////////////////////

DISP: MOV A,LED_0 ;數碼顯示子程序

MOVC A,@A+DPTR

CLR P2.3

MOV P0,A

LCALL DELAY

SETB P2.3

MOV A,LED_1

MOVC A,@A+DPTR

CLR P2.2

MOV P0,A

LCALL DELAY

SETB P2.2

MOV A,LED_2

MOVC A,@A+DPTR

CLR P2.1

MOV P0,A

LCALL DELAY

SETB P2.1

MOV A,LED_3

MOVC A,@A+DPTR

CLR P2.0

MOV P0,A

SETB P0.7

LCALL DELAY

SETB P2.0

RET

;//////延時子程序////////////////////////////////////

DELAY: MOV R6,#0AH ;延時5毫秒

D1: MOV R7,#0FAH

DJNZ R7,$

DJNZ R6,D1

RET

;//////數碼管字形碼表/////////////////////////////////

TABLE: DB 3FH,06H,5BH,4FH,66H

DB 6DH,7DH,07H,7FH,6FH

;/////程序結束////////////////////////////////////////

END

  • 上一篇:河北尚博工礦工程有限公司怎麽樣?
  • 下一篇:QC -80000體系文件如何建立?
  • copyright 2024編程學習大全網