求数字电压表,三位数码管显示(1)采用ADC0809,测量0~5V(2)汇编语言(3)有原理图(4)程序有必要的注释希望各位大哥帮忙啊.怎么没有原理图啊,55
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 16:26:11
求数字电压表,三位数码管显示(1)采用ADC0809,测量0~5V(2)汇编语言(3)有原理图(4)程序有必要的注释希望各位大哥帮忙啊.怎么没有原理图啊,55
求数字电压表,三位数码管显示
(1)采用ADC0809,测量0~5V
(2)汇编语言
(3)有原理图
(4)程序有必要的注释
希望各位大哥帮忙啊.
怎么没有原理图啊,55
求数字电压表,三位数码管显示(1)采用ADC0809,测量0~5V(2)汇编语言(3)有原理图(4)程序有必要的注释希望各位大哥帮忙啊.怎么没有原理图啊,55
(1)原理图我博客上有
(2)程序清单:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;名称:数字电压表
;作者;w418781840,日期:2008.6.12
;功能:实验现0~5V电压的测量,测量值用三位数管显示
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLK BIT P3.5;定义CLK
ORG 0000H
LJMP MAIN ;转入主程序
ORG 0013H
LJMP AGA ; ;中断TNT1,用于读取转换后的数据
ORG 001BH
LJMP WQ ;T1中断入口,用于产生时钟和显示
;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0030H
MAIN:MOV TMOD,#10H ;工作方式1
MOV TH1,#(65536-200)/256 ;产生500HZ
MOV TL1,#(65536-200)%256
SETB EA ;开总中断.
SETB ET1 ; 开T1中断
SETB TR1 ;启动T1
SETB EX1 ;开外部中断1
SETB IT1 ; 边沿触发
MOV DPTR ,#1FFFH ;指向通道INC0
MOVX @DPTR,A ;启动转换
LOOP:LCALL DISPLAY ;调用显示程序.
SJMP LOOP
;;;;;;;;外部1中断,;显示数据转为3位BCD码子程序
;;显示数据转为3位BCD码存入33H,34H,35H(最大值约为5.00V);;;;;;;;;
AGA:MOV DPTR,#1FFFH
MOVX A,@DPTR ;读取转换后的数据.
MOV B,#51 ;255÷51=5.00V运算
DIV AB
MOV 33H,A ; ;个位数放入33H
MOV A,B ; ;余数大于19H,F0为1,乘法溢出,结果加5
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP2
ADD A,#5
LOOP2:MOV 34H,A ; ;小数后第一位放入34H
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP3
ADD A,#5H
LOOP3:MOV 35H,A ; ;小数后第二位放入35H
MOVX @DPTR,A ; 启动转换
RETI
;;;;;;;;;;;;显示程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY:MOV R1,#33H ;指向显示数据首址
MOV R0,#0FEH ;扫描控制字初值
PLAY:MOV A,R0 ;扫描字放入A
MOV P2,A ;从P2口输出
MOV A,@R1 ;取显示数据到A
MOV DPTR,#TAB ;取段码表地址
MOVC A,@A+DPTR ;查显示数据对应段码
CJNE R0,#0FEH,PAP ; 查看是第一位否.
ORL A,#80H ;是,则取小数点.
PAP:MOV P1,#0FFH ;防闪烁.
MOV P1,A ;段码放入P1口
LCALL DL1MS ;显示1MS
INC R1 ;指向下一地址
MOV A,R0 ;扫描控制字放入A
JNB ACC.2,ENDOUT ;ACC.3=0时一次显示结束
RL A ;A中数据循环左移
MOV R0,A ;放回R5内
AJMP PLAY ;跳回PLAY循环
ENDOUT:RET
TAB:DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 延时程序
;1MS延时程序,LED显示程序用
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DL1MS:MOV R6,#14H
DL1:MOV R7,#19H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;;T1定时器中断服务程序,用于给ADC0809产生时钟周期;;;
WQ:MOV TH1,#(65536-200)/256
MOV TL1,#(65536-200)%256
CPL CLK ;取反.
RE:RETI
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;