📄 lcd.asm
字号:
;**************************************;
LCD_R0: EQU 0E0H ;
MALE_ICON: BIT (LCD_R0+15).0 ; "MALE"
FEMALE_ICON: BIT (LCD_R0+17).0 ; "FEMAL"
HEIGHT_ICON: BIT (LCD_R0+06).0 ; "HIGH"
ST_POINT: BIT (LCD_R0+20).0 ; ":" STONE
KG_POINT: BIT (LCD_R0+23).0 ; "." P1
KG_ICON: BIT (LCD_R0+24).0 ; "KG"
FAT_ICON: BIT (LCD_R0+27).0 ; "FAT%"
RF_ICON: BIT (LCD_R0+21).0 ; "(((" RF_ICON
ST_ICON: BIT (LCD_R0+29).0 ; "ST"
LB_ICON: BIT (LCD_R0+31).0 ; "LB"
INCH_ICON: BIT (LCD_R0+14).0 ; "INCH"
CM_ICON: BIT (LCD_R0+12).0 ; "CM"
P2_POINT: BIT (LCD_R0+11).0 ; "." P2
WATER_ICON: BIT (LCD_R0+09).0 ; "WATER%"
FRACTION_LINE: BIT (LCD_R0+26).0 ; "-"
FT_POINT: BIT (LCD_R0+08).0 ; ":" FOOT
AGE_ICON: BIT (LCD_R0+00).0 ; "AGE"
MINUS_ICON: BIT (LCD_R0+16).1 ; "-"
;**************************************;
;**************************************;
ORG 1000H ;
SEG_TAB1: ; FOR DISPLAY DIGIT (1,2,3,4,5)
; ; FEBC XAGD ;
DB 0F5H ; 1111 0101 ; 0
DB 030H ; 0011 0000 ; 1
DB 067H ; 0110 0111 ; 2
DB 037H ; 0011 0111 ; 3
DB 0B2H ; 1011 0010 ; 4
DB 097H ; 1001 0111 ; 5
DB 0D7H ; 1101 0111 ; 6
DB 0B4H ; 1011 0100 ; 7
DB 0F7H ; 1111 0111 ; 8
DB 0B7H ; 1011 0111 ; 9
DB 0F6H ; 1111 0110 ; A
DB 0D3H ; 1101 0011 ; B
DB 0C5H ; 1100 0101 ; C
DB 073H ; 0111 0011 ; D
DB 0C7H ; 1100 0111 ; E
DB 0C6H ; 1100 0110 ; F
DB 000H ; 0000 0000 ; X 10H OFF
DB 0C3H ; 1100 0011 ; t 11H
DB 042H ; 0100 0010 ; r 12H
DB 053H ; 0101 0011 ; o 13H
DB 002H ; 0000 0010 ;"M -" 14H
DB 0C1H ; 1100 0001 ; L 15H
DB 004H ; 0000 0100 ;"H -" 16H
DB 001H ; 0000 0001 ;"L -" 17H
;**************************************;
;***************************************************************************;
; DISPLAY DIGIT ;
;***************************************************************************;
;FUNCTION: DISPLAY DIGIT1-4 ;
;R: [HL] [WX] [ACC_BUF] (4 NIBS) ;
;INPUT: [BCC_BUF] (4 BYTES) ;
DIGIT1234_DISP: ;
LD HL,#(LCD_R0+15) ; DIGIT 1
LD WX,#(BCC_BUF+6) ;
CALL DDISP ;
;--------------------------- ;
LD HL,#(LCD_R0+18) ; DIGIT 2
LD WX,#(BCC_BUF+4) ;
CALL DDISP ;
;--------------------------- ;
LD HL,#(LCD_R0+21) ; DIGIT 3
LD WX,#(BCC_BUF+2) ;
CALL DDISP ;
;---------------------------- ;
LD HL,#(LCD_R0+24) ; DIGIT 4
LD WX,#(BCC_BUF+0) ;
;---------------------------- ;
DDISP: LD A,@WX ;
LD Z,A ; GET LOW_ORDER NIB OF BCC_BUF
INCS WX ;
LD A,@WX ;
LD Y,A ; GET HIGH-ORDER NIB OF BCC_BUF
LD EA,YZ ;
DDISP1: LDC EA,@EA ; LOOK-UP-TABLE TO GET CODE
DDISP2: LD ACC_BUF,EA ; DISPLAY CODE --->BCC_BUF
;-------------------------- ;
LD A,ACC_BUF+1 ;
RCF ;
AND A,#1100B ;
RRC A ; 0110 *****************
LD X,A ; A SAVE TO WX
LD W,#0 ;
SMB 1 ;
LD A,@HL ;
LD E,#0 ;
AND A,#0001B ; 0001 *****************
OR EA,WX ;
LD @HL,A ; SEND DATA TO 1ST LCD_REG
SMB 0 ;
;-------------------------- ;
INCS HL ; HL + +
LD A,ACC_BUF+0 ;
AND A,#0111B ;
SMB 1 ;
LD @HL,A ; SEND DATA TO 2ND LCD_REG
SMB 0 ;
;-------------------------- ;
INCS HL ; HL + +
LD A,ACC_BUF+1 ;
AND A,#0011B ;
LD E,#0 ;
RCF ;
ADC EA,EA ; 0110 *****************
LD X,A ; A SAVE TO WX
LD W,#0 ;
SMB 1 ;
LD A,@HL ;
LD E,#0 ;
AND A,#0001B ; 0001 ******************
OR EA,WX ;
LD @HL,A ;SEND DATA TO 3RD LCD_REG
SMB 0 ;
RET ;
;--------------------------------------;
DN_DIGIT_DISP: ;
LD HL,#(LCD_R0+29) ;
JPS DDISP1 ;
RET
;****************************************************************************;
; DISPLAY TIP & ALARM ;
;****************************************************************************;
ORG 1080H ;
DB 13H,13H,13H,13H ;OOOO ;
DB 10H,13H,13H,13H ;XOOO ;
DB 10H,10H,13H,13H ;XXOO ;
DB 10H,10H,10H,13H ;XXXO ;
DB 10H,10H,10H,10H ;XXXX ;
DB 16H,16H,16H,16H ;UP_LINE ;
DB 17H,17H,17H,17H ;DN_LINE ;
DB 14H,14H,14H,14H ;MD_LINE ;
DB 08H,08H,08H,08H ;EIGHT 8888 ;
DB 0CH,0AH,15H,01H ;CAL1 ;
DB 0CH,0AH,15H,02H ;CAL2 ;
DB 12H,04H,00H,10H ;R40X ;
DB 12H,01H,02H,00H ;R120 ;
DB 10H,10H,15H,13H ;XXLO ;
DB 0EH,12H,12H,05H ;ERR5 ; SENSOR
DB 0EH,12H,12H,04H ;ERR4 ; 24C01
DB 0EH,12H,12H,03H ;ERR3 ; KB
DB 0EH,12H,12H,02H ;ERR2 ; CAL
DB 0EH,12H,12H,01H ;ERR1 ; CAPTURE ZERO
DB 0EH,10H,10H,10H ;E ;
DB 01H,14H,01H,02H ;1 - 12 ;
;-------------------- ;
;INPUT: EA ;
TIP_DISP: ;
RCF ;
ADC EA,EA ;
ADC EA,EA ;
LD WX,#80H ;
ADC WX,EA ;
LDC EA,@WX ;
LD BCC_BUF+6,EA ;
INCS WX ;
LDC EA,@WX ;
LD BCC_BUF+4,EA ;
INCS WX ;
LDC EA,@WX ;
LD BCC_BUF+2,EA ;
INCS WX ;
LDC EA,@WX ;
LD BCC_BUF+0,EA ;
JPS DIGIT1234_DISP ;
;**************************************;
;**************************************;
ORG 1100H ;
SEG_TAB3: ;
; ; EFCB XDGA ; FOR DISPLAY DIGIT (7,8,9,A,B)
DB 0F5H ; 1111 0101 ; 0
DB 030H ; 0011 0000 ; 1
DB 097H ; 1001 0111 ; 2
DB 037H ; 0011 0111 ; 3
DB 072H ; 0111 0010 ; 4
DB 067H ; 0110 0111 ; 5
DB 0E7H ; 1110 0111 ; 6
DB 071H ; 0111 0001 ; 7
DB 0F7H ; 1111 0111 ; 8
DB 077H ; 0111 0111 ; 9
DB 0F3H ; 1111 0011 ; A
DB 0E6H ; 1110 0110 ; B
DB 0C5H ; 1100 0101 ; C
DB 0B6H ; 1011 0110 ; D
DB 0C7H ; 1100 0111 ; E
DB 0C3H ; 1100 0011 ; F
DB 000H ; 0000 0000 ; X 10H OFF
;**************************************;
;INPUT: [BCC_BUF] ;
DIGIT_AB_DISP: ;
LD HL,#(LCD_R0+00) ;
LD EA,BCC_BUF+2 ; DIGIT A
CALL DISP ;
;--------------------------------------;
LD HL,#(LCD_R0+03) ; DIGIT B
LD EA,BCC_BUF+0 ;
CALL DISP ;
RET ;
;--------------------------------------;
;INPUT: [BCC_BUF] ;
DIGIT789_DISP: ;
LD HL,#(LCD_R0+06) ;
LD EA,BCC_BUF+4 ; DIGIT 7
CALL DISP ;
;--------------------------------------;
LD HL,#(LCD_R0+09) ; DIGIT 8
LD EA,BCC_BUF+2 ;
CALL DISP ;
;--------------------------------------;
LD HL,#(LCD_R0+12) ; DIGIT 9
LD EA,BCC_BUF+0 ;
DISP: LDC EA,@EA ; LOOK-UP-TABLE TO GET CODE
JPS DDISP2 ;
;**************************************;
; DISLAY UP DIGIT ;
; INPUT: EA ;
ORG 1200H ;
SEG_TAB4: ;
; ; XEDX XABC ; FOR DISPLAY DIGIT 5
DB 00H ; 0000 0000 ; 0 OFF
DB 03H ; 0000 0011 ; 1
DB 66H ; 0110 0110 ; 2
DB 27H ; 0010 0111 ; 3
DB 00H ; 0000 0000 ; 4 OFF
DB 00H ; 0000 0000 ; 5 OFF
DB 00H ; 0000 0000 ; 6 OFF
DB 00H ; 0000 0000 ; 7 OFF
DB 00H ; 0000 0000 ; 8 OFF
DB 00H ; 0000 0000 ; 9 OFF
;----------------------------------------
UP_DIGIT_DISP: ;
LD HL,#(LCD_R0+27) ;
LDC EA,@EA ; LOOK-UP-TABLE TO GET CODE
LD WX,EA ;
LD A,@HL ;
AND A,#0001B ;
LD E,A ;
LD E,#0H ;
OR WX,EA ;
LD A,W ;
SMB 1 ;
LD @HL,A ;
LD A,X ;
INCS HL ;
LD @HL,A ;
SMB 0 ;
RET ;
;**************************************;
;****************************************************************************;
; DISPLAY WEIGHT ;
;****************************************************************************;
;INPUT:BCC_BUF ;
DISP_WEIGHT: ;
JPS CHK_MINUS ; CHK DISPLAY ON OR OFF "- "
DISP_WT:LD A,BCC_BUF+3 ;
LD BCC_BUF+6,A ;
LD A,BCC_BUF+2 ;
LD BCC_BUF+4,A ;
LD A,BCC_BUF+1 ;
LD BCC_BUF+2,A ;
LD A,#0 ;
LD BCC_BUF+1,A ;
LD BCC_BUF+3,A ;
LD BCC_BUF+5,A ;
LD BCC_BUF+7,A ;
;--------------------- ;
BTSF KG_FLAG ; UNIT IS KG ?
JPS DW_01 ; YES.
BTST LB_ST_FLAG ; NO. & UNIT IS LB ?
JPS DW_2 ; NO. UNIT IS ST
;--------------------- ; |
;DISPLAY KG/LB. ; |
DW_01: LD A,BCC_BUF+6 ; YES.
CPSE A,#0 ;
JPS DW_4 ;
LD EA,#LCD_OFF_CON ;
LD BCC_BUF+6,EA ;
DW_1: LD A,BCC_BUF+4 ;
CPSE A,#0 ;
JPS DW_4 ;
LD EA,#LCD_OFF_CON ;
LD BCC_BUF+4,EA ;
JPS DW_4 ;
;--------------------- ;
DW_2: LD A,BCC_BUF+6 ; FOR DISPLAY STONE.
CPSE A,#0 ;
JPS DW_3 ;
LD EA,#LCD_OFF_CON ;
LD BCC_BUF+6,EA ;
DW_3: LD A,BCC_BUF+2 ;
CPSE A,#0 ;
JPS DW_4 ;
LD EA,#LCD_OFF_CON ;
LD BCC_BUF+2,EA ;
DW_4: CALL DIGIT1234_DISP ;
;--------------------- ;
BTSF CAL_EN ;
RET ;
BTSF SET_EN ;
RET ;
BTST DISP_MINUS_ON ;
JPS DW_40 ;
SMB 1 ;
BITS MINUS_ICON ;
SMB 0 ;
DW_40: BTSF KG_FLAG ; UNIT IS KG ?
JPS KG_ON ; YES.
BTSF LB_ST_FLAG ; NO. & UNIT IS LB ?
JPS LB_ON ; YES.
CALL STONE_ON ; NO. UNIT IS STONE
LD EA,FRACTION ;
LD WX,#00 ;
CPSE EA,WX ;
JPS DW_41 ;
CALL UPDN_DIGIT_OFF ; TURN OFF SMALL DIGIT
RET
;-------------------- ;
DW_41: LD A,FRACTION+0 ; FOR DISPALY FRACTION ...
LD E,#0 ;
CALL DN_DIGIT_DISP ;
LD A,FRACTION+1 ;
LD E,#0 ;
CALL UP_DIGIT_DISP ;
SMB 1 ;
BITS FRACTION_LINE ;
SMB 0 ;
RET ;
;**************************************;
;**************************************;
UPDN_DIGIT_OFF: ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -