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