電路圖:
;內(nèi)容:5位LCD筆段式LCD顯示
;lcd接法SEG0-PD0...SEG7-PD7,SEG8-PE.0
;COM0-PC0,COM1-PC1,COM2-PC6,COM3-PC7
;完整源碼下載:http://www.zg4o1577.cn/f/htbdlcd.rar
include HT66F50.inc
ds .section 'data'
COM0 EQU PC.0 ;COM0管腳定義
COM1 EQU PC.1 ;COM0管腳定義
COM2 EQU PC.6 ;COM0管腳定義
COM3 EQU PC.7 ;COM0管腳定義
SEG EQU PD ;SEG管腳定義
SEG9 EQU PE.0 ;seg8管腳定義
SEG01 EQU [90H] ;SEG0與seg1管腳數(shù)據(jù)寄存器
SEG23 EQU [91H] ;SEG2與seg3管腳數(shù)據(jù)寄存器
SEG45 EQU [92H] ;SEG4與seg5管腳數(shù)據(jù)寄存器
SEG67 EQU [93H] ;SEG6與seg7管腳數(shù)據(jù)寄存器
SEG8 EQU [94H] ;SEG8管腳數(shù)據(jù)寄存器
SEG_0 EQU [95H] ;SEG管腳數(shù)據(jù)處理暫存寄存器
LCD1 EQU [9AH] ;第1位LCD顯示數(shù)據(jù)寄存器
LCD2 EQU [9BH] ;第2位LCD顯示數(shù)據(jù)寄存器
LCD3 EQU [9CH] ;第3位LCD顯示數(shù)據(jù)寄存器
LCD4 EQU [9DH] ;第4位LCD顯示數(shù)據(jù)寄存器
LCD5 EQU [9EH] ;第5位LCD顯示數(shù)據(jù)寄存器
cs .section 'code'
ORG 0000H
JMP A1
Q1:
DC 06FH ; 0
DC 00AH ; 1
DC 073H ; 2
DC 03BH ; 3
DC 01EH ; 4
DC 03DH ; 5
DC 07DH ; 6
DC 00BH ; 7
DC 07FH ; 8
DC 03FH ; 9
DC 05FH ; A
DC 07CH ; B
DC 065H ; C
DC 07AH ; D
DC 075H ; E
DC 055H ; F
A1:
MOV A,08H ;
MOV CP0C,A ;設(shè)置管腳不為比較器輸入口
MOV CP1C,A ;
MOV A,7FH ;
MOV SCOMC,A ;設(shè)置PC.0.1.6.7為COM口并使能
CLR PCC ;設(shè)置PC口為輸出口
CLR PDC ;設(shè)置PD口為輸出口
CLR PEC.0 ;設(shè)置PE.0為輸出口
MOV A,1 ;
MOV LCD1,A ;LCD1顯示數(shù)據(jù)
MOV A,2 ;
MOV LCD2,A ;LCD2顯示數(shù)據(jù)
MOV A,3 ;
MOV LCD3,A ;LCD3顯示數(shù)據(jù)
MOV A,4 ;
MOV LCD4,A ;LCD4顯示數(shù)據(jù)
A2:
MOV A,LOW Q1 ;數(shù)據(jù)表地址低8位
MOV TBLP,A
MOV A,HIGH Q1 ;數(shù)據(jù)表地址高8位
MOV TBHP,A ;
MOV A,LCD1 ;顯示數(shù)據(jù)地址碼
ADDM A,TBLP ;查找數(shù)據(jù)表所在位置
TABRD SEG01 ;查表并存數(shù)據(jù)到SEG01
MOV A,LOW Q1 ;
MOV TBLP,A
MOV A,HIGH Q1 ;
MOV TBHP,A ;
MOV A,LCD2 ;
ADDM A,TBLP ;
TABRD SEG23 ;查表并存數(shù)據(jù)到SEG23
MOV A,LOW Q1 ;
MOV TBLP,A
MOV A,HIGH Q1 ;
MOV TBHP,A ;
MOV A,LCD3 ;
ADDM A,TBLP ;
TABRD SEG45 ;查表并存數(shù)據(jù)到SEG45
MOV A,LOW Q1 ;
MOV TBLP,A
MOV A,HIGH Q1 ;
MOV TBHP,A ;
MOV A,LCD4 ;
ADDM A,TBLP ;
TABRD SEG67 ;查表并存數(shù)據(jù)到SEG67
MOV A,LOW Q1 ;
MOV TBLP,A ;
MOV A,HIGH Q1 ;
MOV TBHP,A ;
MOV A,LCD5 ;
ADDM A,TBLP ;
TABRD SEG8 ;查表并存數(shù)據(jù)到SEG8
CLR COM0EN ;設(shè)置管腳為PC.0
CLR COM0 ;輸出低電平
CALL RR0 ;調(diào)用seg管腳數(shù)據(jù)處理程序
MOV A,SEG_0 ;
MOV SEG,A ;將處理后的數(shù)據(jù)從seg連接口輸出
CLR SEG9
CALL M001 ;延時(shí)
SET COM0 ;輸出高電平
CPL SEG_0 ;將管腳數(shù)據(jù)取反
MOV A,SEG_0 ;
MOV SEG,A ;數(shù)據(jù)從seg腳輸出
SET SEG9
CALL M001 ;延時(shí)
SET COM0EN ;設(shè)置管腳為com0口輸出VDD/2電壓
CALL M001 ;延時(shí)
clr COM1EN ;設(shè)置管腳為PC.1
clr com1 ;輸出低電平
CALL RR0 ;調(diào)用seg管腳數(shù)據(jù)處理程序
MOV A,SEG_0 ;
MOV SEG,A ;將處理后的數(shù)據(jù)從seg連接口輸出
CLR SEG9
CALL M001 ;延時(shí)
SET COM1 ;輸出高電平
CPL SEG_0 ;將管腳數(shù)據(jù)取反
MOV A,SEG_0 ;
MOV SEG,A ;數(shù)據(jù)從seg腳輸出
SET SEG9
CALL M001 ;延時(shí)
SET COM1EN ;設(shè)置管腳為com1口輸出VDD/2電壓
CALL M001 ;延時(shí)
clr COM2EN ;設(shè)置管腳為PC.6
clr com2 ;輸出低電平
CALL RR0 ;調(diào)用seg管腳數(shù)據(jù)處理程序
MOV A,SEG_0 ;
MOV SEG,A ;將處理后的數(shù)據(jù)從seg連接口輸出
CLR SEG9
CALL M001 ;延時(shí)
SET COM2 ;輸出高電平
CPL SEG_0 ;將管腳數(shù)據(jù)取反
MOV A,SEG_0 ;
MOV SEG,A ;數(shù)據(jù)從seg腳輸出
SET SEG9
CALL M001 ;延時(shí)
SET COM2EN ;設(shè)置管腳為com2口輸出VDD/2電壓
CALL M001 ;延時(shí)
clr COM3EN ;設(shè)置管腳為PC.7
clr com3 ;輸出低電平
CALL RR0 ;調(diào)用seg管腳數(shù)據(jù)處理程序
MOV A,SEG_0 ;
MOV SEG,A ;將處理后的數(shù)據(jù)從seg連接口輸出
CLR SEG9
CALL M001 ;延時(shí)
SET COM3 ;輸出高電平
CPL SEG_0 ;將管腳數(shù)據(jù)取反
MOV A,SEG_0 ;
MOV SEG,A ;將處理后的數(shù)據(jù)從seg連接口輸出
SET SEG9
CALL M001 ;
SET COM3EN ;設(shè)置管腳為com3口輸出VDD/2電壓
CALL M001 ;延時(shí)
JMP A2
;*********************************************************
;********seg數(shù)據(jù)處理子程序********************************
;*********************************************************
;SEG01中為第一位要顯示的編碼SEG0與SEG1控制
;SEG23--SEG8分別控制對應(yīng)的編碼
;當(dāng)掃描COM0時(shí)SEG(0-7)輸出第0位與第1位
;當(dāng)掃描COM1時(shí)SEG(0-7)輸出第2位與第3位
;當(dāng)掃描COM2時(shí)SEG(0-7)輸出第4位與第5位
;當(dāng)掃描COM3時(shí)SEG(0-7)輸出第6位與第7位
;**********************************************************
RR0:
RRC SEG01 ;將SEG01第0位通過帶進(jìn)位C移到seg_0寄存器
RRC SEG_0 ;
RRC SEG01 ;將SEG01第1位通過帶進(jìn)位C移到seg_0寄存器
RRC SEG_0 ;
RRC SEG23 ;將SEG23第0位通過帶進(jìn)位C移到seg_0寄存器
RRC SEG_0 ;
RRC SEG23 ;將SEG23第1位通過帶進(jìn)位C移到seg_0寄存器
RRC SEG_0 ;
RRC SEG45 ;將SEG45第0位通過帶進(jìn)位C移到seg_0寄存器
RRC SEG_0 ;
RRC SEG45 ;將SEG45第1位通過帶進(jìn)位C移到seg_0寄存器
RRC SEG_0 ;
RRC SEG67 ;將SEG67第0位通過帶進(jìn)位C移到seg_0寄存器
RRC SEG_0 ;
RRC SEG67 ;將SEG67第1位通過帶進(jìn)位C移到seg_0寄存器
RRC SEG_0 ;移完時(shí)SEG_0寄存器則是掃描COM時(shí)所需seg口
RET ;輸出狀態(tài)
;*********************************************************
; 延時(shí)子程序
;*********************************************************
M001:
MOV A,4
MOV [8AH],A
M002:
MOV A,250
MOV [8BH],A
SDZ [8BH]
JMP $-1
SDZ [8AH]
JMP M002
RET
END