单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 340|回复: 0
打印 上一主题 下一主题
收起左侧

240128液晶屏T6963C驱动求大神愿意不吝赐教,万分感谢

[复制链接]
跳转到指定楼层
楼主
异客 发表于 2019-4-6 12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
240128液晶屏,搞了一个星期了,都没能显示字符,求救了,哪位大神愿意不吝赐教啊,万分感谢

以下是源程序:



#include "LCD_240128.h"


//========================================================================
// 函数: void LCD_DataWrite(unsigned int Data)
// 描述: 写一个字节的显示数据至 LCD 中的显示缓冲 RAM 当中
// 参数: Data 写入的数据
// 返回: 无
// 备注: 无
// 版本:
//========================================================================
void LCD_DataWrite(unsigned char Data)
{
    LCD_CD_SetLow();
    LCD_CE_SetLow();
    LCD_WR_SetLow();
//    __delay_us(5);
    LATC = Data;
    __delay_us(5);
    LCD_WR_SetHigh();
    LCD_CE_SetHigh();
//    LCD_CD_SetHigh();
}
//========================================================================
// 函数: void LCD_CmdWrite(unsigned int Command)
// 描述: 写一个字节的数据至 LCD 中的控制寄存器当中
// 参数: Command 写入的命令,低八位有效(byte)
// 返回: 无
// 备注: 无
// 版本:
//========================================================================
void LCD_CmdWrite(unsigned char Command)
{
    LCD_CD_SetHigh();
    LCD_CE_SetLow();
    LCD_WR_SetLow();
//    __delay_us(5);
    LATC = Command;
    __delay_us(5);
    LCD_WR_SetHigh();
    LCD_CE_SetHigh();
//    LCD_CD_SetLow();
}

/******************************************************************************
*名称: WriteDC()
*功能: 液晶写1数据1命令程序,dat为要写入的数据,cmd为要写入的命令
******************************************************************************/
void WriteDC(unsigned char Data,unsigned char Command)      //写一个数据和一个指令
{   
    LCD_DataWrite(Data);   
    LCD_CmdWrite(Command);   
}
/******************************************************************************
*名称: WriteDDC()
*功能: 液晶写2数据1命令程序,data为要写入的数据,cmd为要写入的命令
******************************************************************************/
void WriteDDC(unsigned char Data1, unsigned char Data2, unsigned char Command)   //写两个数据和一个指令
{   
    LCD_DataWrite(Data1);         
    LCD_DataWrite(Data2);   
    LCD_CmdWrite(Command);     
}   


/******************************************************************************
*名称: LCD_Init()
*功能: 液晶初始化程序
*      初始地址设置好后,在不同的地址段相同WriteData()输出不同
******************************************************************************/
void LCD_Init(void)         //液晶初始化
{   
    unsigned char Data1,Data2,Command;   
    LCD_WR_SetHigh();
    LCD_CE_SetHigh();
//    LCD_RST_SetLow();
//    __delay_us(5);
    LCD_RST_SetHigh();
    /*********************设置文本显示*****************************/   
    Data1 = 0x00;   
    Data2 = 0x10;              //图形显示占用32*128=0xfff,故文本从0x1000开始
    Command = 0x40;                //设置文本显示区首地址   
    WriteDDC(Data1,Data2,Command);   
    Data1 = 0x20;              //可以整屏显示
    Data2 = 0x00;   
    Command = 0x41;                //设置文本显示区宽度   
    WriteDDC(Data1,Data2,Command);   
    Data1 = 0x00;   
    Data2 = 0x00;   
    Command = 0x42;                //设置图形显示区首地址   
    WriteDDC(Data1,Data2,Command);   
    Data1 = 0x20;   
    Data2 = 0x00;   
    Command = 0x43;                //设置图形显示区宽度   
    WriteDDC(Data1,Data2,Command);  
    Command =0xa2;                 //设置光标形状
    LCD_CmdWrite(Command);
    Command = 0x80;                //显示方式设置
                             //启用外部字符发生器,显示方式是文本与图形与
    LCD_CmdWrite(Command);
    Command = 0x9e;                //启用光标闪烁,光标不显示,文本显示与图形显示   
    LCD_CmdWrite(Command);   
}

unsigned char Photo_code[] =
{   
/*---- 图片文件来自:【xxxx.jpg】 ----*/
/*---- 图片宽度:96     图片高度:93 ----*/
/*---- 本数据文件建立日期:         ; 建立时间:         ----*/
/*---- 本数据文件由PICtoCODE【图片数据生成器】V1.0自动生成! ----*/

};
#define CG_length 352

unsigned char CG_code[] =
{

};


/******************************************************************************
*名称: Write_Str()
*功能: 液晶写字符程序,显示ASCII字符,row为行(0~15),rol为列(0~29)
*      显示ASCII字符为8*8点阵(屏为240*128点阵)
******************************************************************************/
void Write_Str(unsigned char row,unsigned char rol,unsigned char str)
{
    unsigned int addres;
    unsigned char Data1,Data2;
    addres=row*32+rol+0x1000;
    Data2=addres>>8;
    Data1=addres;
    WriteDDC(Data1,Data2,0x24);
    LCD_CmdWrite(0xb0);
    LCD_DataWrite(str);
    LCD_CmdWrite(0xb2);
}


/******************************************************************************
*名称: Write_Photo()
*功能: 液晶画图程序,row为图片开始行(0~127),rol为图片开始列(0~29),
*      width为图片长(单位Bit),deep 为图片宽(单位bit)
******************************************************************************/
void Write_Photo(unsigned char row,unsigned char rol,unsigned char width,unsigned char deep)
{
    unsigned int address,Photolength,i;
    unsigned char j,Data1,Data2,Command;
    Photolength=width*deep;
    address = row*32+rol;
    Data1 = address;                 //取地址低八位   
    Data2 = address>>8;                //取地址高八位   
    Command = 0x24;
    WriteDDC(Data1,Data2,Command);
    LCD_CmdWrite(0xb0);//自动写模式
    for(i=0;i<Photolength;i++)
    {
        LCD_DataWrite(Photo_code);
        j++;
        if(j==width)
        {
            LCD_CmdWrite(0xb2);           //退出自动写模式
            address=address+32;
            Data1 = address;                 //取地址低八位   
            Data2 = address>>8;                //取地址高八位   
            Command = 0x24;
            WriteDDC(Data1,Data2,Command);
            j=0;
            LCD_CmdWrite(0xb0);         //进入自动写模式
        }
    }
    LCD_CmdWrite(0xb2);
}




/******************************************************************************
*名称: Write_Chinese()
*功能: 液晶写汉字程序,row为汉字开始行,rol为汉字开始列,Chinese为汉字字符串在
*      CGRAM中的初地址 ,length为汉字字符串的长度,(一个16*16点阵的汉字长度为4)
******************************************************************************/
void SetCGRAM(void)   
{      
    unsigned char Data1,Data2,Command;   
    unsigned int i;
    Data1 = 0x03;   
    Data2 = 0x00;                  //设置偏移地址寄存器
    Command = 0x22;                       
    WriteDDC(Data1,Data2,Command);   
    Data1 = 0x00;   
    Data2 = 0x1c;   
    Command = 0x24;                   //设置地址指针   
    WriteDDC(Data1,Data2,Command);   
    Command = 0xb0;                   //进入自动写模式   
    LCD_CmdWrite(Command);   
    for (i = 0;i < CG_length; ++i)   
    {      
        LCD_DataWrite(CG_code);     
    }   
    Command = 0xb2;                   //退出自动写模式   
    LCD_CmdWrite(Command);      
}
/******************************************************************************
*名称: Write_Chinese()
*功能: 液晶写汉字程序,row为汉字开始行(0~15),rol为汉字开始列(0~29),
*      Chinese为汉字字符串在CGRAM中的初地址 ,
*      length为汉字字符串的长度,(一个16*16点阵的汉字长度为4)
******************************************************************************/
void Write_Chinese(unsigned char row,unsigned char rol,unsigned char Chinese,unsigned char length) // 0x80 0x82 0x84 86     
{                                                                    // 0x81 0x83 0x85 87   
    unsigned char Data1,Data2,Command;   
    unsigned char i;   
    unsigned int address;   
    /****************先写汉字上半部分*********************************/   
    address = row * 32 + rol+0x1000;   
    Data1 = address;                 //取地址低八位   
    Data2 = address>>8;                //取地址高八位   
    Command = 0x24;                      //设置地址指针,字符显示首位置   
    WriteDDC(Data1,Data2,Command);   
    Command = 0xb0;                      //进去自动写模式   
    LCD_CmdWrite(Command);
    for(i=0;i<length;i++)
    {
        LCD_DataWrite(Chinese+i);
        i++;
    }
    Command = 0xb2;                   //退出自动写模式   
    LCD_CmdWrite(Command);
   /****************再写汉字下半部分*********************************/   
    address = address+32;   
    Data1 = address;                 //取地址低八位   
    Data2 = address>>8;                //取地址高八位   
    Command = 0x24;                      //设置地址指针,字符显示首位置   
    WriteDDC(Data1,Data2,Command);   
    Command = 0xb0;                      //进去自动写模式   
    LCD_CmdWrite(Command);
    for(i=1;i<length;i++)
    {
        LCD_DataWrite(Chinese+i);
        i++;
    }
    Command = 0xb2;                   //退出自动写模式   
    LCD_CmdWrite(Command);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

快速回复 返回顶部 返回列表