论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
;***************************************************
;以下接口定义根据硬件连线更改
ADCS BIT P2.5 ;使能接口
ADCLK BIT P2.4 ;时钟接口
ADDO BIT P2.3 ;数据输出接口(复用)
ADDI BIT P2.3 ;数据输入接口
CS BIT P3.0 ;H=DATA,L=COM
SID BIT P3.1 ;H=READ,L=WRITE
SCLK BIT P3.6 ;
KEYBUF EQU 30H
COM EQU 41H ;控制字暂存单元
DAT EQU 42H ;显示数据暂存单元
CODER EQU 43H ;字符代码暂存单元
ADDR EQU 44H ;地址暂存单元
ORG 0
LJMP START
ORG 3
LJMP KEYSCAN
ORG 30H
START:MOV SP,#90H
LCALL DEL_40MS
LCALL INI
MOV 70H,#00H
MOV 71H,#00H
MOV 34H,#02 ;装入通道功能选择数据值
SETB IT0
SETB EX0
MOV P1,#0FH ;将P1口低4位设为输入,高4位清零
SETB EA
MOV KEYBUF,#00H ;起初输出0V电压
MOV R2,#01H ;置送数时送数空间不同的标志位。
CLR A
MOV 24H,A ;清零24h,25h,31H,32H,33H。
MOV 25H,A
MOV 31H,A
MOV 32H,#05H
MOV 33H,#00H
MOV ADDR,#80H
MOV DPTR,#WEL_1
MOV 40H,#16
LCALL W_LINE
MOV ADDR,#90H
MOV DPTR,#WEL_2
MOV 40H,#9
LCALL W_LINE
MOV ADDR,#95H
MOV DPTR,#WEL_3
LCALL W_LINE1
MOV ADDR,#88H
MOV DPTR,#WEL_4
MOV 40H,#16
LCALL W_LINE
MOV ADDR,#98H
MOV DPTR,#WEL_5
MOV 40H,#16
LCALL W_LINE
LCALL DEL_1500MS
LOOP: LCALL LIGHT ;调显读数与示子程序
SJMP LOOP
;****************************************************
;键盘扫描程序
;键码存在KEYBUF单元,格式为数字0-9和.号,还有enter键
;****************************************************
KEYSCAN:PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
CLR RS1
SETB RS0 ;选择1区工作寄存器
LCALL DELAY
MOV A,P1
CPL A
ANL A,#0FH
JZ FINISH
MOV DPTR,#TAB1
MOV P1,#0EFH ;扫描第一行
LCALL DELAY
MOV P1,#0EFH
MOV A,P1
CPL A
ANL A,#0FH
JZ K1 ;第一行没键按下,则扫描第二行
SJMP KEND
K1: MOV P1,#0DFH ;扫描第二行
LCALL DELAY
MOV P1,#0DFH
MOV A,P1
CPL A
ANL A,#0FH
JZ K2 ;第二行没键按下,则扫描第三行
ADD A,#5
SJMP KEND
K2: MOV P1,#0BFH ;扫描第三行
LCALL DELAY
MOV P1,#0BFH
MOV A,P1
CPL A
ANL A,#0FH
JZ K3 ;第三行没键按下,则扫描第四行
ADD A,#10
SJMP KEND
K3: MOV P1,#7FH ;扫描第四行
LCALL DELAY
MOV P1,#7FH
MOV A,P1
CPL A
ANL A,#0FH
JZ FINISH ;第四行没键按下,则返回
ADD A,#15
KEND:MOVC A,@A+DPTR
MOV KEYBUF,A;
MOV 33H,#01H ;置有中断标志
SJMP FINISH
FINISH:MOV P1,#0FH ;为下一次扫描作准备
POP DPL
POP DPH
POP ACC
POP PSW
RETI
TAB1:DB 00H,01H,02H,00H,03H;,00H,00H,00H,33H
DB 00H,04H,05H,00H,06H;,00H,00H,00H,00H
DB 00H,07H,08H,00H,09H;,00H,00H,00H,0AH
DB 00H,0AH,00H,00H,0BH;,00H,00H,00H,46H
;**************************
;LCD的初始化子程序
;**************************
INI:
MOV COM,#30H ;功能设定,基本指令
LCALL WCOM
MOV COM,#30H ;基本指令,8-bit模式,基本指令
LCALL WCOM
MOV COM,#0CH ;显示开,游标关,反白关
LCALL WCOM
MOV COM,#01H ;清除显示
LCALL WCOM
MOV COM,#06H ;进入设定点,游标7右移,画面不移动
LCALL WCOM
RET
W_LINE:
MOV COM,ADDR
LCALL WCOM
MOV R4,40H ;连续写入N/2个中文或者N个西文字符
W_L1:
MOV A,#00H
MOVC A,@A+DPTR
MOV CODER,A
LCALL WCODE
INC DPTR
DJNZ R4,W_L1
RET
W_LINE1:
MOV COM,ADDR
LCALL WCOM
W_L11:
MOV A,70H
ANL A,#0FH
MOVC A,@A+DPTR
MOV CODER,A
LCALL WCODE
MOV A,#0BH
MOVC A,@A+DPTR
MOV CODER,A
LCALL WCODE
MOV A,71H
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV CODER,A
LCALL WCODE
MOV A,71H
ANL A,#0FH
MOVC A,@A+DPTR
MOV CODER,A
LCALL WCODE
MOV A,#0AH
MOVC A,@A+DPTR
MOV CODER,A
LCALL WCODE
;DJNZ R4,W_L1
RET
WCOM:
LCALL STWC
MOV A,COM
LCALL W4_D ;送入高四位指令
LCALL W4_0 ;连续送入四个0
LCALL W4_D ;送入高四位指令
LCALL W4_0 ;连续送入四个0
CLR CS
LCALL DEL_2MS
RET
WCODE:
LCALL STWD
MOV A,CODER
LCALL W4_D
LCALL W4_0
LCALL W4_D
LCALL W4_0
CLR CS
LCALL DEL_2MS
RET
STWC:
SETB CS
SETB SID
MOV R3,#5 ;连续送入5个"1",起始
STWC1: SETB SCLK
CLR SCLK
DJNZ R3,STWC1
CLR SID
MOV R3,#3
STWC2:
SETB SCL