SWAP A
ANL A,#0FH
MOV 71H,A ;个位
MOV A,TEMPHC
ANL A,#0FH
MOV 72H,A ;十位
MOV A,TEMPHC
SWAP A
ANL A,#0FH
MOV 73H,A ;百位
MOV A,TEMPHC
ANL A,#0F0H
CJNE A,#010H,DISPBCD0
SJMP DISPBCD2
DISPBCD0: MOV A,TEMPHC
ANL A,#0FH
JNZ DISPBCD2 ;十位数是0
MOV A,TEMPHC
SWAP A
ANL A,#0FH
MOV 73H,#0AH ;符号位不显示
MOV 72H,A ;十位数显示符号
DISPBCD2: RET
;==========================================================
; LCD 1602 显示子程序
;==========================================================
CONV:
MOV A,73H ;加载百位数据
MOV LCD_X,#6 ;设置位置
CJNE A,#1,CONV1
JMP CONV2
CONV1: MOV A,#" "
MOV B,LCD_X
CALL LCDP2
JMP CONV3
CONV2: CALL SHOW_DIG2 ;显示数据
CONV3: INC LCD_X ;
MOV a,72h ;十位
CALL SHOW_DIG2
inc LCD_X
MOV a,71h ;个位
CALL SHOW_DIG2
inc LCD_X
MOV A,#’.’
MOV B,LCD_X
CALL LCDP2
MOV A,70h ;加载小数点位
INC LCD_X ;设置位置
CALL SHOW_DIG2 ;显示数据
RET
;-------------------------------------------------------
SHOW_DIG2: ;在 LCD 的第二行显示数字
ADD A,#30H
MOV B,LCD_X
CALL LCDP2
RET
;---------------------------------------------------------
LCDP2: ;在LCD的第二行显示字符
PUSH ACC ;
MOV A,B ;设置显示地址
ADD A,#0C0H ;设置LCD的第二行地址
CALL WCOM ;写入命令
POP ACC ;由堆栈取出A
CALL WDATA ;写入数据
RET
;---------------------------------------------------------
SET_LCD: ;对 LCD 做初始化设置及测试
CLR LCD_EN
CALL INIT_LCD ;初始化 LCD
CALL STORE_DATA ;将自定义字符存入LCD的CGRAM
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
本文关键字:程序 51单片机,单片机-工控设备 - 51单片机