搞了几天了,还没显示; 下面是我的程序,大家帮忙看一下~ 我用ARM3231,LCD为TG12864E-02
#include "config.h" #define LCD_CS (1 << 8) //P0.8为LCD_CS #define LCD_DATA (1 << 9) //P0.9为LCD_DATA #define LCD_CLK (1 << 10) //P0.10为LCD_CLK #define LCD_IOCON (LCD_CS|LCD_DATA|LCD_CLK) //LCD接口的I/O设置字
/*延时子程序*/ void DelayNS(uint8 dly) { uint32 k; for(;dly > 0;dly--) for(k = 0;k < 5000;k++); }
/*********************************************************************************************** ** 函数名称:LCD_SendByte() ** 函数功能:发送一个字节 ** 入口参数:bbyte 字节数据 ** 出口参数:无 ***********************************************************************************************/ void LCD_SendByte(unsigned char bbyte) { unsigned char i; for(i=0;i<8;i++) { if( (bbyte&0x80)!=0 ) IO0SET = LCD_DATA; else { IO0CLR = LCD_DATA ; //SID=bbyte&0x80;取出最高位 } IO0SET = LCD_CLK; //SCLK=1; IO0CLR = LCD_CLK; //SCLK=0; bbyte<<=1; //左移 } }
/*********************************************************************************************** ** 函数名称:LCD_Write() ** 函数功能:LCD写指令或数据 ** 入口参数:control_flow 数据控制流,0 为写指令 1 为写数据 ddata 数据 ** 出口参数:无 ***********************************************************************************************/ void LCD_Write(unsigned char control_flow, unsigned char ddata) { unsigned char start_data,Hdata,Ldata; if(0==control_flow) start_data=0xf8; //写指令 else start_data=0xfa; //写数据 Hdata=ddata&0xf0; //取高四位 Ldata=(ddata<<4)&0xf0; //取低四位 LCD_SendByte(start_data); //发送起始信号 DelayNS(10); //延时是必须的 LCD_SendByte(Hdata); //发送高四位 DelayNS(10); //延时是必须的 LCD_SendByte(Ldata); //发送低四位 DelayNS(10); //延时是必须的 }
//显示字符串 void WriteStr(uint8 addr,uint8 *str) { LCD_Write(0,addr); DelayNS(2); while(*str != 0) LCD_Write(1,*str++); } /******************************************************************************************************** ** 函数名称 :DelayNS() ** 函数功能 :的长延时 ** 入口参数 :dly 延时参数,值越大,延时越久 ** 出口参数 :无 ********************************************************************************************************/ void LCD_CLS(void) { LCD_Write(0,0x30); //RE及DL设置 DelayNS(10); LCD_Write(0,0x01); //清屏 DelayNS(10); } /******************************************************************************************************** ** 函数名称 :DelayNS() ** 函数功能 :的长延时 ** 入口参数 :dly 延时参数,值越大,延时越久 ** 出口参数 :无 ********************************************************************************************************/ void LCD_INIT(void) { LCD_Write(0,0x30); //RE及DL设置 DelayNS(10); LCD_Write(0,0x0c); //显示状态开关 DelayNS(10); LCD_Write(0,0x01); //清屏 DelayNS(10); LCD_Write(0,0x06); //起始点设置,光标右移 DelayNS(10); }
int main (void) { uint8 str[] = {"xianshi:"}; PINSEL0 = PINSEL0&0xFFc0FFFF ; IO0DIR = LCD_IOCON; DelayNS(10); LCD_INIT(); //初始化LCD LCD_CLS(); DelayNS(10); while(1) { DelayNS(10); WriteStr(0x80,str); } return 0; } /********************************************************************************************************* ** End Of File ********************************************************************************************************/
|