📄 lcd_clock.asm
字号:
J EQ,KEY_DOWN
KOP_EXIT:
LD (KEY_NAME),0
RET
;---------------------------------------SET按键
KEY_SET:
LD A,(MENU);菜单数据到A
J NZ,KSET_N1;非0则进入下一个菜单
SET (MENU).H_SET;=0则进入小时设置
J KOP_EXIT
KSET_N1:
SHLC A
LD (MENU),A
LD CF,(MENU).3;菜单是否结束?
J CC,KOP_EXIT;没结束退出
LD (MENU),0
J KOP_EXIT
;---------------------------------------UP按键
KEY_ADD:
CMP (MENU),1
J EQ,KU_HSET
CMP (MENU),2
J EQ,KU_MSET
CMP (MENU),4
J EQ,KU_SSET
J KOP_EXIT
;-------------------------------小时设置状态下按UP键
KU_HSET:
INC (HOUR)
CMP (HOUR),24
J CS,KOP_EXIT
LD (HOUR),0
J KOP_EXIT
;-------------------------------分钟设置状态下按UP键
KU_MSET:
INC (MIN)
CMP (MIN),60
J CS,KOP_EXIT
LD (MIN),0
J KOP_EXIT
;-------------------------------秒钟设置状态下按UP键
KU_SSET:
INC (SEC)
CMP (SEC),60
J CS,KOP_EXIT
LD (SEC),0
J KOP_EXIT
;---------------------------------------DOWN按键
KEY_DOWN:
CMP (MENU),1
J EQ,KD_HSET
CMP (MENU),2
J EQ,KD_MSET
CMP (MENU),4
J EQ,KD_SSET
J KOP_EXIT
;-------------------------------小时设置状态下按DOWN键
KD_HSET:
DEC (HOUR)
CMP (HOUR),255
J NE,KOP_EXIT
LD (HOUR),23
J KOP_EXIT
;-------------------------------分钟设置状态下按DOWN键
KD_MSET:
DEC (MIN)
CMP (MIN),255
J NE,KOP_EXIT
LD (MIN),59
J KOP_EXIT
;-------------------------------秒钟设置状态下按DOWN键
KD_SSET:
DEC (SEC)
CMP (SEC),255
J NE,KOP_EXIT
LD (SEC),59
J KOP_EXIT
;===========================================================
;===========================================================
;名 称:LCD驱动程序(基于HT1621)
;说 明:控制HT1621驱动LCD段码液晶
;入口参数:HOUR、MIN、SEC
;出口参数:-
;程序入口:LCD_DISP
;占用资源:
;涉及模块:
;===========================================================
LCD_DISP:
LD HL,LCD_DAT0102
LCD_DCLR:
LD (HL),0X00
INC HL
CMP HL,0X4D
J NE,LCD_DCLR;LCD数据清零
;-------------------------------------小时显示,LDAT2021/1819
LD CF,(MENU).H_SET;在设置状态闪烁
J CC,HOUR_DIS
LD CF,(DIS_FLAG).FLASH
J CC,MIN_DTEST
HOUR_DIS:
LD A,(HOUR)
LD (LBIT),A;24小时制
CALL HEX2BCD
LD C,(HBIT)
LD HL,DIS_TABLCD
LD A,(HL+C);查表得出显示码
LD (LCD_DAT2021),A
LD C,(LBIT)
LD HL,DIS_TABLCD
LD A,(HL+C)
LD (LCD_DAT1819),A
;---------------------------------------分显示
MIN_DTEST:
LD CF,(MENU).M_SET;在设置状态闪烁
J CC,MIN_DIS
LD CF,(DIS_FLAG).FLASH
J CC,SEC_DTEST
MIN_DIS:
LD A,(MIN)
LD (LBIT),A
CALL HEX2BCD
LD C,(HBIT)
LD HL,DIS_TABLCD
LD A,(HL+C);查表得出显示码
LD (LCD_DAT1415),A
LD C,(LBIT)
LD HL,DIS_TABLCD1
LD A,(HL+C)
LD (LCD_DAT0506),A
;----------------------------------------秒显示
SEC_DTEST:
LD CF,(MENU).S_SET;在设置状态闪烁
J CC,SEC_DIS
LD CF,(DIS_FLAG).FLASH
J CC,F_DISP
SEC_DIS:
LD A,(SEC)
LD (LBIT),A
CALL HEX2BCD
LD C,(HBIT)
LD HL,DIS_TABLCD1
LD A,(HL+C);查表得出显示码
LD (LCD_DAT0910),A
LD C,(LBIT)
LD HL,DIS_TABLCD1
LD A,(HL+C)
LD (LCD_DAT1112),A
;----------------------------------------闪烁显示
F_DISP:
LD CF,(DIS_FLAG).FLASH
J CC,DIS_IN
LD (LCD_DAT1617),0X04
LD (LCD_DAT0708),0X40
;---------------------------------------写入命令码
DIS_IN:
CALL DIS_START
LD B,0XA0;B作为显示缓存器
LD (LCD_BCNT),0X09
CLR (P1).LCD_CS
CLR CF
CALL DIS_NOW
;****************************************字段显示
;-----------------------------------------COM
;----------------------------------------pin12
; LD B,(LCD_DAT0102);装入显示数据
; LD (LCD_BCNT),0X08;显示位数
; CALL DIS_NOW
;----------------------------------------pin34
; LD B,(LCD_DAT0304);装入显示数据
; LD (LCD_BCNT),0X08;显示位数
; CALL DIS_NOW
;----------------------------------------pin56
LD B,(LCD_DAT0506);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin78
LD B,(LCD_DAT0708);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin0910
LD B,(LCD_DAT0910);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin1112
LD B,(LCD_DAT1112);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin13
LD B,(LCD_DAT13);装入显示数据
LD (LCD_BCNT),0X04;显示位数
CALL DIS_NOW
;----------------------------------------pin1415
LD B,(LCD_DAT1415);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin1617
LD B,(LCD_DAT1617);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin1819
LD B,(LCD_DAT1819);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin2021
LD B,(LCD_DAT2021);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin2223
LD B,(LCD_DAT2223);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;----------------------------------------pin24
LD B,(LCD_DAT24);装入显示数据
LD (LCD_BCNT),0X08;显示位数
CALL DIS_NOW
;-----------------------------------------------
CALL DIS_KEEP
;CALL DIS_OFF
RET
;==========================================================
;===============================================显示硬件驱动
DIS_NOW:
CLR (P1).LCD_CLK
ROLC B
J CC,DAT_0
SET (P3).LCD_DAT
J WRITE_NOW
DAT_0:
CLR (P3).LCD_DAT
WRITE_NOW:
NOP
NOP
SET (P1).LCD_CLK
DEC (LCD_BCNT)
J NZ,DIS_NOW
RET
;=================================================显示初始化
DIS_START:
SET (P1).LCD_CS
LD B,0X80;开始设置模式
NOP
CLR (P1).LCD_CS
LD (LCD_BCNT),0X03
CALL DIS_NOW
LD B,0X01;SYS ON
LD (LCD_BCNT),0X09
CALL DIS_NOW
LD B,0X18;系统时钟源,片内RC振荡器
LD (LCD_BCNT),0X09
CALL DIS_NOW
LD B,0X29;BASE1/3 4COM
LD (LCD_BCNT),0X09
CALL DIS_NOW
LD B,0X03;打开LCD偏压发生器LCD ON
LD (LCD_BCNT),0X09
CALL DIS_NOW
SET (P1).LCD_CS
RET
;===================================================关闭显示
DIS_OFF:
SET (P1).LCD_CS
LD B,0X80;开始设置模式
NOP
CLR (P1).LCD_CS
LD (LCD_BCNT),0X03
CALL DIS_NOW
LD B,0X02
LD (LCD_BCNT),0X09
CALL DIS_NOW
SET (P1).LCD_CS
RET
;===========================================================
;===========================================================
HEX2BCD:
LD (HBIT),0X00
LD A,(LBIT)
BIN1:
CMP A,0X0A
J CS,OVER
SUB A,0X0A
; J CS,OVER
INC (HBIT)
J BIN1
OVER:
; ADD A,0X0A
LD (LBIT),A
RET
;===========================================================
DIS_KEEP:
LD IX,0X4E20;20000
DEC_IX:
DEC IX
J NZ,DEC_IX
RET
;===========================================================
DIS_TABLCD:
DB 0y11111010;0
DB 0y01100000;1
DB 0y10111100;2
DB 0y11110100;3
DB 0y01100110;4
DB 0y11010110;5
DB 0y11011110;6
DB 0y01110000;7
DB 0y11111110;8
DB 0y11110110;9
DIS_TABLCD1:
DB 0XAF;0
DB 0X06;1
DB 0XCB;2
DB 0X4F;3
DB 0X66;4
DB 0X6D;5
DB 0XED;6
DB 0X07;7
DB 0XEF;8
DB 0X6F;9
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -