打印

我调试不好12864(st7565)的驱动

[复制链接]
3236|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我写过ks0108的可以,这个就写不好,哪里错了啊aaaa?



#include <p30f4011.h>
#define RES LATBbits.LATB7
#define A0  LATBbits.LATB6
#define CLK LATBbits.LATB5
#define SDA LATBbits.LATB4
const unsigned char L[8]={0x00,0x42,0x7e,0x82,0x40,0x60,0x00};

//延时
void delay(int x)
{
    int y;
    for(;x>0;x--)
    {
        for(y=0;y<1000;y++)
        {}
        
    }
}

//写一个字节   
void write(unsigned char byte)
{
    unsigned char i,data;
    CLK=1;
    for(i=0;i<8;i++)
    {
        CLK=0;
        data=byte&0x80;
        if(data)
        {
            SDA=1;
        }
        else
        {
            SDA=0;
        }
        
        asm("nop");
        asm("nop");
        CLK=1;
        asm("nop");
        asm("nop");
        byte<<=1;
    }
}

//写命令
void writecommandlcd(unsigned char byte)
{
        A0=0;
        write(byte);

}

//写数据
void writebytelcd(unsigned char byte)
{
        A0=1;
        write(byte);

}



//设置页列
void lcdsetxy(unsigned char x,unsigned char y)
{
    unsigned temp;
    writecommandlcd(0xb0|x);
    temp=y>>4;
    writecommandlcd(0x10|temp);
    temp=0x0f&y;
    writecommandlcd(temp);
}

//显示一个字符
void display88(unsigned char x,unsigned y,const char *p)
{
    unsigned i;
    lcdsetxy(x,y);
    for(i=0;i<8;i++)
    {
        writebytelcd(*(p++));
    }
}

//初始化
void lcdint()
{
        RES=0;复位
        delay(10);
        RES=1;
        delay(10);
        writecommandlcd(0xe2);内部复位
        writecommandlcd(0xaf);开显示
        writecommandlcd(0x2f);
        writecommandlcd(0x26);
        writecommandlcd(0x81);
        writecommandlcd(0x0f);
        writecommandlcd(0xa0);
        writecommandlcd(0xc0);
        writecommandlcd(0xa6);
        writecommandlcd(0xa4);
        writecommandlcd(0xac);
        writecommandlcd(0x00);
        writecommandlcd(0xf8);
        writecommandlcd(0x00);
   
        writecommandlcd(0x40);显示起始行
        display88(1,1,L);
}







相关帖子

沙发
相信哥咯|  楼主 | 2011-5-2 01:20 | 只看该作者
本帖最后由 相信哥咯 于 2011-5-2 01:23 编辑

谁方便的话看下,多谢:'(

我上次驱动的ks0108的

使用特权

评论回复
板凳
zhaoyu2005| | 2011-5-3 09:07 | 只看该作者
writecommandlcd(0x26);

writecommandlcd(0x81);
writecommandlcd(0x0f);
这两个命令改下,估计是对比度不对,先把这两个值调到中间位置,看看,正常初始化后,显示屏的显示区应该能看出来

使用特权

评论回复
地板
相信哥咯|  楼主 | 2011-5-3 16:43 | 只看该作者
3# zhaoyu2005
谢谢啊,是初始化设置不好,一直打转

使用特权

评论回复
5
zhaoyu2005| | 2011-5-4 08:58 | 只看该作者
呵呵,不客气,我正好刚刚弄完ST7565驱动的12864屏。使用起来还是很方便的。我挂了uCGUI,对屏操作很方便

使用特权

评论回复
6
zjy.zz| | 2011-6-18 18:15 | 只看该作者
这个是有点难度,找个人博客有的人写的很好,很完善

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

927

帖子

1

粉丝