📄 jingtailcd.#1
字号:
#include <c8051f020.inc>
;***********定义**************
CSA EQU P2.0 ;液晶片选在(左,前)显示
CSB EQU P2.1 ;在(右、后)显示
E EQU P2.4 ;使能信号
DI EQU P2.2 ;选择存指令还是数据单元
RW EQU P2.3
;(P7口:LCD的DB口)
DAT EQU 61H ;字符数据
COM EQU 62H ;液晶数据与指令的传送
JCS1CS2 EQU 63H ;片选
COMXSTART EQU 64H ;起始页地址存放单元
COMXEND EQU 65H ;终止页地址存放单元
COMYSTART EQU 66H ;起始列地址存放单元
COMYEND EQU 67H ;终止列地址存放单元
;*********************LCD*****************************
ORG 00H
START: MOV SP,#60H
MOV WDTCN,#0DEH
MOV WDTCN,#0ADH
; LCALL PORT_INIT
; LCALL LCD_INIT
MOV COMXSTART,#0B8H ;液晶清屏
MOV COMXEND, #0BFH
MOV COMYSTART,#40H
MOV COMYEND, #7FH
; LCALL CLEAR
; LCALL GUDING
main:
nop
JMP MAIN
;***************测得数据前面为"实测为:"*********************
GUDING: MOV DPTR, #SHI
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH ;实
MOV COMYSTART,#40H
MOV COMYEND, #4FH
MOV JCS1CS2, #00H
LCALL DISP
MOV DPTR, #CE
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH ;测
MOV COMYSTART,#50H
MOV COMYEND, #5FH
MOV JCS1CS2, #00H
LCALL DISP
MOV DPTR, #MAOHAO
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH ;:
MOV COMYSTART,#60H
MOV COMYEND, #6FH
MOV JCS1CS2, #00H
LCALL DISP
RET
;*****************LCD初始化*********************
LCD_INIT:MOV COM,#3FH
LCALL PRL0
MOV COM,#0C0H
LCALL PRL0
RET
;******************清屏程序*********************
CLEAR: MOV R4,#00H ;页面地址暂存器设置
CLEAR1: MOV A,R4
ORL A, #0B8H ;"或"页面地址设置代码
MOV COM,A ;页面地址设置
lcall PRL0
MOV COM,#40H ;列地址设置为"0"
LCALL PRL0
MOV R3, #40H ;一页清64个字节
CLEAR2: MOV DAT,#00H ;显示数据为"0"
LCALL PRL1
DJNZ R3,CLEAR2 ;页内字节清零循环
INC R4 ;页地址暂存器加1
CJNE R4,#08H,CLEAR1 ;RAM区清零循环
RET
;===================================================
; WRITE COMMAND PROGRAM
;===================================================
PRL0: ;写命令子程序
SETB CSA
SETB CSB
CLR DI
CLR RW
PRL01: NOP
NOP
MOV P7,COM
SETB E
nop
CLR E
RET
;==================================================
; WRITE DATA PROGRAM
;==================================================
PRL1: ;写数据子程序
PUSH ACC
SETB CSA ;Write data
SETB CSB
PRL101: NOP
NOP
MOV P7,DAT
SETB DI
SETB E
NOP
CLR E
POP ACC
RET
;***********************************************************
DISP: PUSH ACC
PUSH PSW
SETB RS0
CLR RS1
MOV R0,#COMXSTART
MOV R1,#COMYSTART
INC COMXEND
INC COMYEND
PUT1: MOV A,@R0
MOV COM,A ;Set PAGE
LCALL PRL0
MOV A,@R1 ;Set LINE
MOV COM,A
LCALL PRL0
PUT2:
; LCALL WORD
LCALL PRL11
MOV A,@R1
INC A
MOV @R1,A
CJNE A,COMYEND,PUT2
MOV A,COM
MOV @R1,A
MOV A,@R0
INC A
MOV @R0,A
CJNE A,COMXEND,PUT1
POP PSW
POP ACC
RET
;***********************************************************
;WORD: ;查表程序
; MOV A,#00H
; MOVC A,@A+DPTR
; MOV DAT,A
; INC DPTR
; RET
;************************************************************
;写数据子程序
PRL11: MOV A,JCS1CS2
CJNE A,#00H,PRL1111
SETB CSA ;选择左片
CLR CSB
LJMP PRL111
PRL1111: CLR CSA ;选择右片
SETB CSB
PRL111: MOV P7,DAT
SETB DI
CLR RW
SETB E
nop
nop
CLR E
RET
;********************C8051F020 I/O口初始化**********************
PORT_INIT: MOV XBR0,#00H
MOV XBR1,#00H
MOV XBR2,#40H
mov p2mdout,#0ffh
RET
delay: mov r4,#20
d2 : mov r5,#248
djnz r5,$
djnz r4,d2
ret
;***************************************************************
SHI:
;-- 文字: 实 --
DB 000,010H,00CH,004H,04CH,0B4H,094H,005H,0F6H,004H,004H,004H,014H,00CH,004H,000
DB 000,082H,082H,042H,042H,023H,012H,00AH,007H,00AH,012H,0E2H,042H,002H,002H,000
CE:
;-- 文字: 测 --
DB 008H,031H,086H,060H,000,0FEH,002H,0F2H,002H,0FEH,000,0F8H,000,000,0FFH,000
DB 004H,0FCH,003H,000,080H,047H,030H,00FH,010H,067H,000,007H,040H,080H,07FH,000
MAOHAO:
;-- 文字: : --
DB 000,000,000,0C0H,0C0H,000,000,000,000,000,000,000,000,000,000,000
DB 000,000,000,030H,030H,000,000,000,000,000,000,000,000,000,000,000
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -