提供一个测试程序,仅供参考
; 这个程序只是一个模块测试程序,但是基本操作已经有了,具体程序与硬件有关
; 开机时要先对HT1621进行初始化,初始化内容和LCD结构也有关系,比如COM口数量等
;//****************************************************************
;// 模块名称: LCD_Initialize
;// 功能描述: HT1621初始化
;//****************************************************************
LCD_Initialize:
MOV A, #cntSYS_EN ;// 系统允许
CALL LCD_Command
MOV A, #cntBASE_COM ;// 设置:1/3 偏压、4COM
CALL LCD_Command
MOV A, #cntOSC_SEL ;// 选择内部RC振荡器:256KHz
CALL LCD_Command
MOV A, #cntLCD_ON ;// LCDON
CALL LCD_Command
RET
;//****************************************************************
;// 功能描述: 把显存中的数据写入HT1621中
;// 入口参数: R7=缓冲区字节数
;//****************************************************************
LCD_WriteData:
CLR ioLCD_CS ;
NOP
NOP
SETB ioLCD_Data ;
NOP
NOP
NOP
NOP
CLR ioLCD_WR ;
NOP
NOP
NOP
NOP
; 送写命令和6位起始地址:101000000,从HT121显存00单元开始写
SETB ioLCD_WR ; // 写第9位“1”
NOP
NOP
MOV A, #01000000B ; // 01 A5 A4 A3 A2 A1 A0 101即写指令
CALL LCD_SendByte
; 送数据,显示缓冲区中的1个字节对应HT1621两个连续的单元(HT1621一个单元是4BIT)
; 所以缓冲区字节数是液晶屏段(Segment)数的1半
MOV R0, #ucLCDBUF0 ; 显示缓冲区地址 --> R0
LCD_WRD00:
MOV A, @R0
CALL LCD_SendByte
INC R0
DJNZ R7, LCD_WRD00
SETB ioLCD_CS
SETB ioLCD_Data
RET
;//****************************************************************
;// 模块名称: LCD_Command
;// 功能描述: HT1621命令模式
;// 入口参数: A=命令字;
;//****************************************************************
LCD_Command:
CLR ioLCD_CS ;
NOP
NOP
NOP
NOP
SETB ioLCD_Data ;// send 1
NOP
NOP
NOP
NOP
CLR ioLCD_WR ;
NOP
NOP
NOP
NOP
SETB ioLCD_WR ;
NOP
NOP
NOP
NOP
CLR ioLCD_Data ;// send 0
NOP
NOP
NOP
NOP
CLR ioLCD_WR ;
NOP
NOP
NOP
NOP
SETB ioLCD_WR ;
NOP
NOP
NOP
NOP ;// send 0
CLR ioLCD_WR ;
NOP
NOP
NOP
NOP
SETB ioLCD_WR ;
CALL LCD_SendByte ;
SETB ioLCD_Data
NOP
NOP
NOP
NOP ; // 送任意位
CLR ioLCD_WR ;
NOP
NOP
NOP
NOP
SETB ioLCD_WR
NOP
NOP
NOP
NOP
SETB ioLCD_CS ;
RET
;//****************************************************************
;// 模块名称: LCD_SendByte
;// 功能描述: 向HT1621送8Bit数据
;// 入口参数: A=数据;
;//****************************************************************
LCD_SendByte:
MOV B, #8 ; 8BIT
LCD_SDBLP:
RLC A
MOV ioLCD_Data, C
NOP
NOP
NOP
CLR ioLCD_WR ;
NOP
NOP
NOP
NOP
SETB ioLCD_WR ;
NOP
NOP
NOP
DJNZ B, LCD_SDBLP
RET
发表时间:2006年8月12日15:32:04