📄 sample1.txt
字号:
MSP430F149控制6963c驱动液晶
/*****************************************************************************
读液晶状态字到STA
功能:用于往液晶写数据或命令之前判断忙闲
******************************************************************************/
void read_sta(void)
{
P4DIR = 0x00; //P4数据输入
P3OUT = P3_2_DATAIO; //4245(x1)数据传送方向选择为:由液晶到430
P3OUT = P3_1_CD; //命令方式
P3OUT &= ~P3_0_RD; //read
STA = P4IN; //读回状态
P3OUT = P3_0_RD; //cancel read
P4DIR = 0xff; //P4口置为数据输出方式
P3OUT &= ~P3_2_DATAIO; //4245(x1)数据传送方向选择为:由430到液晶
}
/*****************************************************************************
判状态位S1,S0 函数(读写指令和读写数据状态)
******************************************************************************/
void ST1( void )
{
do
{
read_sta();
}
while( (STA & 0x03) != 0x03 );
}
/*****************************************************************************
判状态位S2函数(数据自动读状态)
******************************************************************************/
void ST2( void )
{
do
{
read_sta();
}
while( (STA & 0x04) != 0x04);
}
/*****************************************************************************
-判状态位S3函数(数据自动写状态)-
******************************************************************************/
void ST3( void )
{
do
{
read_sta();
}
while( (STA & 0x08) != 0x08 );
}
/*****************************************************************************
写入数据字节
******************************************************************************/
void write_data(unsigned char Byte )
{
ST1();
P4OUT = Byte;
P3OUT &= ~P3_1_CD; //数据方式
P2OUT &= ~P2_7_WR ; // write
P2OUT = P2_7_WR ;
}
/*****************************************************************************
自动写入数据字节
******************************************************************************/
void autowrite_data(unsigned char Byte )
{
P4OUT = Byte;
P3OUT &= ~P3_1_CD; //数据方式
P2OUT &= ~P2_7_WR ; // write
P2OUT = P2_7_WR ;
}
/*****************************************************************************
写入命令字
******************************************************************************/
void write_cmd(unsigned char cmd )
{
ST1();
P4OUT = cmd ;
P3OUT = P3_1_CD ; //命令方式
P2OUT &= ~P2_7_WR ; // write
P2OUT = P2_7_WR ;
}
/*****************************************************************************
写只有一个参数的命令
******************************************************************************/
void write_onepara(unsigned char dat1,unsigned char command )
{
write_data( dat1 );
write_cmd( command );
}
/*****************************************************************************
写含有双参数的命令
******************************************************************************/
void write_doublepara(unsigned char dat1,unsigned char dat2,unsigned char command )
{
write_data( dat1 );
write_data( dat2 );
write_cmd( command );
}
/*****************************************************************************
清显示缓冲的函数
******************************************************************************/
void CLEAR_RAM( void )
{
int i;
write_doublepara( 0x00,0x00,0x24 ); /* 设置显示RAM 首地址 */
write_cmd( 0xb0 ); /* 设置自动写方式 */
for(i=0;i<8200;i++) /* 清8K存储器 */
{
ST3(); /* 判状态位S3 */
write_data(0x00); /* 写入数据 */
}
write_cmd( 0xb2 ); /* 设置自动写结束指令 */
}
/*****************************************************************************
对液晶屏的一些初始设置函数
******************************************************************************/
void LcdIni( void )
{
write_doublepara(0x00,0x00,0x40); /*设文本显示区域首地址*/
write_doublepara(0x28,0x00,0x41); /*设文本显示区域宽度*/
write_doublepara(0x03,0x00,0x22); /* 设置CGRAM偏置地址 */
write_doublepara(0x00,0x08,0x42); /*设图形显示区域首地址*/
write_doublepara(0x1e,0x00,0x43); /*设图形显示区域宽度*/
// write_cmd(0xa2); /*光标形状设置*/
// write_doublepara(0x08,0x08,0x21); /* 设置光标 位置*/
write_cmd(0x80); /*显示方式设置逻辑"或"合成, 内部字符发生器有效*/
write_cmd(0x98); /*显示开关设置 关文本和开图形显示*/
CLEAR_RAM();
}
文章录入:尘封往事 责任编辑:尘封往事
上一篇文章: MSP430+液晶SED1335控制器子程序
下一篇文章: 没有了
/*****************************************************************************
读液晶状态字到STA
功能:用于往液晶写数据或命令之前判断忙闲
******************************************************************************/
void read_sta(void)
{
P4DIR = 0x00; //P4数据输入
P3OUT = P3_2_DATAIO; //4245(x1)数据传送方向选择为:由液晶到430
P3OUT = P3_1_CD; //命令方式
P3OUT &= ~P3_0_RD; //read
STA = P4IN; //读回状态
P3OUT = P3_0_RD; //cancel read
P4DIR = 0xff; //P4口置为数据输出方式
P3OUT &= ~P3_2_DATAIO; //4245(x1)数据传送方向选择为:由430到液晶
}
/*****************************************************************************
判状态位S1,S0 函数(读写指令和读写数据状态)
******************************************************************************/
void ST1( void )
{
do
{
read_sta();
}
while( (STA & 0x03) != 0x03 );
}
/*****************************************************************************
判状态位S2函数(数据自动读状态)
******************************************************************************/
void ST2( void )
{
do
{
read_sta();
}
while( (STA & 0x04) != 0x04);
}
/*****************************************************************************
-判状态位S3函数(数据自动写状态)-
******************************************************************************/
void ST3( void )
{
do
{
read_sta();
}
while( (STA & 0x08) != 0x08 );
}
/*****************************************************************************
写入数据字节
******************************************************************************/
void write_data(unsigned char Byte )
{
ST1();
P4OUT = Byte;
P3OUT &= ~P3_1_CD; //数据方式
P2OUT &= ~P2_7_WR ; // write
P2OUT = P2_7_WR ;
}
/*****************************************************************************
自动写入数据字节
******************************************************************************/
void autowrite_data(unsigned char Byte )
{
P4OUT = Byte;
P3OUT &= ~P3_1_CD; //数据方式
P2OUT &= ~P2_7_WR ; // write
P2OUT = P2_7_WR ;
}
/*****************************************************************************
写入命令字
******************************************************************************/
void write_cmd(unsigned char cmd )
{
ST1();
P4OUT = cmd ;
P3OUT = P3_1_CD ; //命令方式
P2OUT &= ~P2_7_WR ; // write
P2OUT = P2_7_WR ;
}
/*****************************************************************************
写只有一个参数的命令
******************************************************************************/
void write_onepara(unsigned char dat1,unsigned char command )
{
write_data( dat1 );
write_cmd( command );
}
/*****************************************************************************
写含有双参数的命令
******************************************************************************/
void write_doublepara(unsigned char dat1,unsigned char dat2,unsigned char command )
{
write_data( dat1 );
write_data( dat2 );
write_cmd( command );
}
/*****************************************************************************
清显示缓冲的函数
******************************************************************************/
void CLEAR_RAM( void )
{
int i;
write_doublepara( 0x00,0x00,0x24 ); /* 设置显示RAM 首地址 */
write_cmd( 0xb0 ); /* 设置自动写方式 */
for(i=0;i<8200;i++) /* 清8K存储器 */
{
ST3(); /* 判状态位S3 */
write_data(0x00); /* 写入数据 */
}
write_cmd( 0xb2 ); /* 设置自动写结束指令 */
}
/*****************************************************************************
对液晶屏的一些初始设置函数
******************************************************************************/
void LcdIni( void )
{
write_doublepara(0x00,0x00,0x40); /*设文本显示区域首地址*/
write_doublepara(0x28,0x00,0x41); /*设文本显示区域宽度*/
write_doublepara(0x03,0x00,0x22); /* 设置CGRAM偏置地址 */
write_doublepara(0x00,0x08,0x42); /*设图形显示区域首地址*/
write_doublepara(0x1e,0x00,0x43); /*设图形显示区域宽度*/
// write_cmd(0xa2); /*光标形状设置*/
// write_doublepara(0x08,0x08,0x21); /* 设置光标 位置*/
write_cmd(0x80); /*显示方式设置逻辑"或"合成, 内部字符发生器有效*/
write_cmd(0x98); /*显示开关设置 关文本和开图形显示*/
CLEAR_RAM();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -