阅读内容
MSP430控制6963c驱动液晶
| [日期:2008-06-23 ] [来源:net 作者:佚名] [字体:大 中 小] (投递新闻) |
/*****************************************************************************读液晶状态字到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(); }
|
|