📄 jingtailcd.#2
字号:
#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:
clr p2.5
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
NOP
NOP
NOP
NOP
setb p2.5
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 + -