本帖最后由 yue497676042 于 2014-6-24 14:19 编辑
各位好,
我用了一个S6B0108驱动的19264,按照示例写了程序,液晶一直没有显示。对比度及背光都正常。逐条写语句,用示波器检测引脚波形均正常。
试了很久,都没有显示。延时都增加了,还是一个点都没有显示。请各位帮忙看看,新手在此万分感谢:
(因为是试试,所以只操作第一部分屏,即设置/CS1=0,/CS2=1;/CS3=1)
#include<p33FJ256GP710.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_RS LATBbits.LATB8
#define LCD_RW LATBbits.LATB9
#define LCD_E LATBbits.LATB10
#define LCD_CS1 LATBbits.LATB11
#define LCD_RST LATBbits.LATB12
#define LCD_CS2 LATBbits.LATB13
#define LCD_CS3 LATBbits.LATB14
#define LCD_BLA LATBbits.LATB15
/****************************************************************************
* 名 称:void Delay(uchar n)
* 功 能:延迟函数1ms
* 入口参数:n
* 出口参数:无
* 说 明:经过示波器检测,11.0592MHz下精确1ms。
****************************************************************************/
void Delay(uint n)
{
uint j;
uint k;
for(j=0;j<n;j++)
for(k=730;k>0;k--) asm("nop");
}
/****************************************************************************
* 名 称:LCD_Write(uchar dat_com,uchar content)
* 功 能:液晶数据/指令写入函数
* 入口参数:dat_com,content
* 出口参数:无
* 说 明:dat_com=0为指令,dat_com=1为数据。
****************************************************************************/
void LCD_Write(uchar dat_com,uchar content)
{
LCD_E=0;
LCD_RW=0;
LCD_RS=dat_com;
*(vola
tile char*)(&LATB)=content;
LCD_E=1;
Delay(10);
LCD_E=0;
}
void main()
{
RCON=0x00;
AD1PCFGH=0xFF;
AD1PCFGL=0xFF;
AD2PCFGL=0xFF;
TRISB=0x0000;
LATB=0xFCFF; //初始化
LCD_RST=0;
Delay(500);
LCD_RST=1;
Delay(500); //复位
LCD_CS1=0;
LCD_CS2=1;
LCD_CS3=1; //只对CS1操作
LCD_Write(0,0x3F); //开显示
Delay(1000);
LCD_Write(0,0xC0); //起始行设置
Delay(1000);
LCD_Write(0,0xB8); //页设置首页
Delay(1000);
LCD_Write(0,0x40); //列设置首行
Delay(1000);
LCD_Write(1,0xFF); //随便写入一个数据0xFF
Delay(1000);
LCD_Write(1,0xFF); //随便写入一个数据0xFF
while(1);
}
一周热门 更多>