您当前的位置:五五电子网电子知识单片机-工控设备51单片机测试72段LCD驱动器SD0418 正文
测试72段LCD驱动器SD0418

测试72段LCD驱动器SD0418

点击数:7891 次   录入时间:03-04 11:52:16   整理:http://www.55dianzi.com   51单片机
;========================================================
;本程序用于测试72段LCD驱动器SD0418
;========================================================

;========================================================
;系统配置:系统时钟=4MHz,CLOCK=4,WDT=DISABLED
;MCU:EM78P156E
;管脚连接:P5.0(MCU)->DATA(SD0418),P5.1(MCU)->WR(SD0418)
;          P5.2(MCU)->CS(SD0418)
;========================================================

DATA == 0
WR   == 1
CS   == 2
PORT5   == 0X05
COM_MODE == 0X04 ;发送命令模式
WRITE_MODE  == 0X05 ;写数据模式
COM_REG == 0X10 ;命令寄存器
COM_DATA == 0X11 ;控制命令数据寄存器
ADD_REG == 0X12 ;发送数据RAM地址寄存器
DATA_REG == 0X13 ;发送数据寄存器
COUNTER == 0X20 ;发送数据计数器
NUMBER   ==      0X21 ;循环计数器
TEMP   == 0X22 ;显示数据地址暂存
TEMP1   == 0X23 ;显示数据暂存
;*******************************************************
ORG 0X00
JMP START
ORG 0X08
START: ;程序初始化
CLRA
IOW PORT5 ;I/O口初始化
MOV A,@COM_MODE ;开启SD0418
MOV COM_REG,A
MOV A,@0X01
MOV COM_DATA,A
CALL    SD0418
MOV A,@COM_MODE ;打开LCD偏压发生器
MOV COM_REG,A
MOV A,@0X03
MOV COM_DATA,A
CALL    SD0418 ;LCD 1/3偏压方式,4公共端
MOV A,@COM_MODE
MOV COM_REG,A
MOV A,@0X29
MOV COM_DATA,A
CALL    SD0418
;*******************************************************
DISPLAY:         ;测试SD0418显示
MOV A,@0X00 ;所有字段不显示
MOV TEMP1,A
CALL    ALLDISPLAY        ;调用所有段显示子程序
MOV A,@0X0F ;所有字段显示
MOV TEMP1,A
CALL ALLDISPLAY ;调用所有段显示子程序
MOV A,@0X00 ;所有字段不显示
MOV TEMP1,A
CALL ALLDISPLAY ;调用所有段显示子程序
DISPLAY2: ;依次显示SEG0-SEG5段
MOV A,@0X00
MOV TEMP,A
MOV A,@0X06
MOV NUMBER,A
CALL SEGDISPLAY ;调用段显示子程序
DISPLAY4: ;依次显示SEG13-SEG19段
MOV A,@0X0D
MOV TEMP,A
MOV A,@0X07
MOV NUMBER,A
CALL    SEGDISPLAY ;调用段显示子程序
DISPLAY6: ;依次显示SEG26-SEG30段
MOV A,@0X1A
MOV TEMP,A
MOV A,@0X05
MOV NUMBER,A
CALL    SEGDISPLAY
JMP     DISPLAY ;循环显示
;********************************************************
;所有段显示子程序
;功能:所有字段均显示储存在TEMP1中的内容
;入口:显示内容储存在TEMP1 出口:NONE
;********************************************************
ALLDISPLAY:
MOV A,@0X1E ;显示数据首地址
MOV TEMP,A
ALL1:
MOV A,@WRITE_MODE   ;写数据模式
MOV COM_REG,A
MOV A,TEMP
MOV ADD_REG,A ;数据地址
MOV A,TEMP1
MOV DATA_REG,A ;数据
CALL    SD0418
DJZ TEMP
JMP ALL1 ;TEMP不为0则继续
MOV A,@WRITE_MODE         ;TEMP=0显示SEG0字段
MOV COM_REG,A
MOV A,TEMP
MOV ADD_REG,A
MOV A,TEMP1
MOV DATA_REG,A
CALL    SD0418
CALL    DELAY ;延时
CALL    DELAY
RET
;********************************************************
;段显示子程序
;功能:显示各独立字段
;入口:连续段首地址储存在TEMP中,连续个数在NUMBER中
;出口:NONE
;********************************************************
SEGDISPLAY:
MOV A,@0X01 ;显示数据内容
MOV TEMP1,A
SEGDISPLAY1:
MOV A,@WRITE_MODE   ;写数据模式
MOV COM_REG,A
MOV A,TEMP
MOV ADD_REG,A ;数据地址
MOV A,TEMP1
MOV DATA_REG,A ;数据
CALL    SD0418
CALL    DELAY
BC      0X03,0 ;依次显示字段中的每个笔划
RLC TEMP1
JBS TEMP1,4
JMP SEGDISPLAY1 ;未显示完字段中的每个笔划则继续
INC TEMP ;显示完字段中的每个笔划则继续到下一字段
DJZ NUMBER
JMP SEGDISPLAY ;未显示完连续段则继续
NOP ;显示完连续段则结束
RET
;*******************************************************
SD0418:
BC PORT5,CS ;选通SD0418
MOV A,@0X03 ;发送模式(三位数据)
MOV COUNTER,A
SENDMODE:
JBS COM_REG,2
JMP SM1
BS PORT5,DATA
JMP SM2
SM1:
BC PORT5,DATA
SM2:
CALL   CLK
RLC COM_REG
DJZ COUNTER
JMP SENDMODE
JBS COM_REG,3 ;发送指令?
JMP SENDCOM ;是则跳转到发送指令段
MOV A,@0X06 ;否则发送显示数据地址(六位)
MOV COUNTER,A
SENDADDR:
JBS ADD_REG,5
JMP SA1
BS PORT5,DATA
JMP SA2
SA1:
BC PORT5,DATA
SA2:
CALL    CLK
RLC ADD_REG
DJZ COUNTER
JMP SENDADDR
MOV A,@0X04 ;发送显示数据(四位)
MOV COUNTER,A
SENDDATA:
JBS DATA_REG,0
JMP SD1
BS PORT5,DATA
JMP SD2
SD1:
BC PORT5,DATA
SD2:
CALL    CLK
RRC DATA_REG
DJZ COUNTER
JMP SENDDATA
JMP SD0418END ;发送完显示数据则返回
SENDCOM:
MOV A,@0X08 ;发送指令(九位)
MOV COUNTER,A
SC1:
JBS COM_DATA,7
JMP SC2
BS PORT5,DATA
JMP SC3
SC2:
BC PORT5,DATA
SC3:
CALL    CLK
RLC COM_DATA
DJZ COUNTER
JMP SC1
BC PORT5,DATA ;发送第九位数据
CALL    CLK
SD0418END:
BS PORT5,CS ;禁止MCU与SD0418间通信
RET
;*******************************************************
CLK: ;发送时钟
NOP
NOP
NOP
NOP
NOP
BC PORT5,WR
NOP
NOP
NOP
NOP
NOP
BS PORT5,WR
NOP
NOP
NOP
NOP
NOP
RET
;*******************************************************
DELAY: ;延时子程序
MOV A,@0XFF
MOV 0X18,A
DELAY1:
MOV A,@0XFF
MOV 0X17,A
DELAY2:
DJZ 0X17
JMP DELAY2
DJZ 0X18
JMP DELAY1
RET




本文关键字:驱动器  51单片机单片机-工控设备 - 51单片机

《测试72段LCD驱动器SD0418》相关文章>>>