搜索
bottom↓
回复: 17

本人在调LCM19264A遇到问题请求高手帮助!!!谢谢·!

[复制链接]

出0入0汤圆

发表于 2010-1-24 15:40:40 | 显示全部楼层 |阅读模式
本人是用GCC写的,可能有很多漏洞请求指出,谢谢!
源程序奉上:
#include<avr/io.h>
#include<avr/delay.h>

#define uchar unsigned char
#define uint unsigned int

#define lcm_bus_ddr    DDRB
#define lcm_bus_out    PORTB
#define lcm_bus_in     PINB

uchar col,row;

#define lcm_rs         PA7
#define lcm_rw         PD1
#define lcm_e          PD2
#define lcm_rest       PA1
#define lcm_cs1        PA0
#define lcm_cs2        PA2
#define lcm_cs3        PA3

#define lcm_rest_h     PORTA|=_BV(PA1)
#define lcm_rest_l     PORTA&=~_BV(PA1)
#define lcm_rs_h       PORTA|=_BV(PA7)
#define lcm_rs_l       PORTA&=~_BV(PA7)
#define lcm_rw_h       PORTD|=_BV(PD1)
#define lcm_rw_l       PORTD&=~_BV(PD1)
#define lcm_e_h        PORTD|=_BV(PD2)
#define lcm_e_l        PORTD&=~_BV(PD2)
#define lcm_cs1_h      PORTA|=_BV(PA0)
#define lcm_cs1_l      PORTA&=~_BV(PA0)
#define lcm_cs2_h      PORTA|=_BV(PA2)
#define lcm_cs2_l      PORTA&=~_BV(PA2)
#define lcm_cs3_h      PORTA|=_BV(PA3)
#define lcm_cs3_l      PORTA&=~_BV(PA3)

#define        lcm_read_status() (lcm_bus_in&0x80)

/*****************************************

        延时函数

*****************************************/

void delay(uchar ms)
{
    uchar i;
        for(i=0;i<ms;i++)
        _delay_loop_2(8*250);
}

/*****************************************
分区操作允许等待,返回时保留分区选择状态
函数功能:选择LCM的分区
*****************************************/
void lcm_busy(uchar back)
{
    if(back==1)
        {
            lcm_cs1_l;
                lcm_cs2_h;
                lcm_cs3_h;
                wtcom();
        }
        else if(back==2)
        {
            lcm_cs1_h;
                lcm_cs2_l;
        lcm_cs3_h;
                wtcom();
        }
        else if(back==3)
        {
            lcm_cs1_h;
                lcm_cs2_h;
                lcm_cs3_l;
                wtcom();
        }
}

/**************************************

         函数功能:等待LCM使能

**************************************/
void wtcom(void)
{
    lcm_bus_ddr=0x00;
        lcm_rs_l;
        lcm_rw_h;
        lcm_e_h;
        asm("nop");
        while(lcm_read_status()==0x80)
        {
            lcm_rest_l;
        }
        lcm_e_l;
        lcm_bus_ddr=0xff;
}

/*************************************

          命令输出到控制口

*************************************/

void wrcmd(int x)
{
    uchar i;
        for(i=1;i<4;i++)
        {
            lcm_busy(i);//选择分区
                lcm_rs_l;
                lcm_rw_l;
                asm("nop");
                lcm_bus_ddr=0xff;//定义输出
                lcm_bus_out=x;//数据输出
                lcm_e_h;
                asm("nop");
                asm("nop");
                asm("nop");
                asm("nop");
                asm("nop");
                lcm_e_l;
        }
}

/***********************************

         将坐标(col,row)转为x命令,
         y命令,选中DDRAM中的行列地址

***********************************/

void locatexy(void)
{
    int x,y;
        switch(col&0xc0)
        {
        case 0:{lcm_busy(1);break;}//左区显示
                case 0x40:{lcm_busy(2);break;}//中区显示
                case 0x80:{lcm_busy(3);break;}//右区显示
        }
        x=(col&0x3f)|0x40;
        y=(row&0x07)|0xb8;
        wtcom();
        asm("nop");
        lcm_rs_l;
        lcm_rw_l;
        asm("nop");
        lcm_bus_ddr=0xff;
        lcm_bus_out=y;
        lcm_e_h;
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        lcm_e_l;
        wtcom();
        lcm_rs_l;
        lcm_rw_l;
        asm("nop");
        lcm_bus_ddr=0xff;
        lcm_bus_out=x;
        lcm_e_h;
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        lcm_e_l;
}

/************************************

         将数据x的值,写入坐标(col,row)

************************************/

void wrdata(int x)
{
    locatexy();
        wtcom();
        lcm_rs_h;
    lcm_rw_l;
        asm("nop");
        lcm_bus_ddr=0xff;
        lcm_bus_out=x;
        lcm_e_h;
        asm("nop");
    lcm_e_l;
}

/*****************************************

           液晶初始化

*****************************************/

void lcm_init(void)
{
    wrcmd(0x3e);//关显示
        asm("nop");
        wrcmd(0x3f);//开显示
        asm("nop");
        wrcmd(0xc0);//显示第一行
    lcm_clear(0,0,192,8);//清屏,全屏清零
}

/*****************************************

      清屏函数:坐标方式清除子程序

*****************************************/

void lcm_clear(uchar x1,uchar y1,uchar x2,uchar y2)
{
    for(row=y1;row<y2;row++)
        {
            for(col=x1;col<x2;col++)
                wrdata(0x00);
        }
}

/***************************************

       端口初始化

***************************************/

void PORT_init(void)
{
    DDRA=0X0F;
        DDRB=0XFF;
        DDRD=0X0F;
       
        PORTA=0X8F;
        PORTB=0X00;
        PORTD=0X06;
}

/****************************************

    主函数:1、初始化端口
                2、复位关闭
                        3、初始化液晶
                        4、开左显示区域
                        5、写数据0xf0
                        6、点亮(5,5)坐标的点

****************************************/

int main(void)
{
    PORT_init();
        delay(100);
        while(1)
        {
                lcm_rest_h;
                lcm_init();
                col=0xb8;
                row=0x40;
                locatexy();
            wrdata(0xf0);
                delay(5);
        }
}


关键是无显示内容,什么都没有,很头痛

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-1-24 17:31:36 | 显示全部楼层
没人理我。。。

出0入0汤圆

发表于 2010-1-24 17:43:29 | 显示全部楼层
1、请调节对比度
2、请将主函数大循环中的第一条语句复制一份到主函数开始处
3、根据液晶的手册,仔细核对几个底层函数(lcm_busy、wtcom、wrcmd、locatexy、wrdata)的时序以及信号的正确性。

出0入0汤圆

发表于 2010-1-24 18:06:15 | 显示全部楼层
以前我点液晶时,丢了一个OxAF命令,什么都没有,再查查初始化

出0入0汤圆

 楼主| 发表于 2010-1-24 21:17:33 | 显示全部楼层
谢谢 2楼:eduhf_123 经历
我回去研究研究,

出0入0汤圆

 楼主| 发表于 2010-1-24 21:18:20 | 显示全部楼层
同样也感谢【3楼】 longquan;谢谢你们

出0入0汤圆

 楼主| 发表于 2010-1-25 14:37:22 | 显示全部楼层
我今天测了时序,跟手册没什么出错的地方。可是怎么就不好使呢?头疼呀

出0入0汤圆

 楼主| 发表于 2010-1-28 17:50:44 | 显示全部楼层
今天终于搞定了。。我晕。。请大家以后调19264的时候一定要要注意读繁忙的时间。调了一周就败在这块了。惭愧呀!

出0入0汤圆

发表于 2010-1-28 18:16:56 | 显示全部楼层
我的更惨,能写命令,能写数--(读数回来验证和写的一样)但屏就是没反应。写命令我也验证过的,(读回状态)郁闷。
反正上电就是点全显。(有点奇怪的是上电第一页,第一列到第四列的第一行是缺的,即那里的“点”没显示)。然后不论你写什么都没变化。
不知是不是屏坏了。有人遇到过我这种情况不?还是程序有问题呢?

出0入0汤圆

 楼主| 发表于 2010-2-2 10:02:32 | 显示全部楼层
回复【8楼】gdourf
-----------------------------------------------------------------------

我建议你先去找买液晶的试一试是不是液晶屏出现问题了,如果好使的话。那肯定是你程序上还有问题。我这里有个好使的程序给你看一下。写的不好,你就当个参考吧。19264液晶程序ourdev_531675.rar(文件大小:15K) (原文件名:display_lmr.rar)

出0入0汤圆

发表于 2010-3-22 20:16:08 | 显示全部楼层
楼主 我最近做mega16控制TS19264,可是就是只有背光亮其余不亮  很郁闷 楼主能留个邮箱或qq我想请教下
我的邮箱575612058@qq.com  十分感谢

出0入0汤圆

 楼主| 发表于 2010-3-23 13:19:55 | 显示全部楼层
回复【10楼】kuku
-----------------------------------------------------------------------

我刚开始也是那个状况,你在好好检查一下程序,肯定是又哪里弄得不对的地方。
注意读繁忙时候的数据输出口的控制。

出0入0汤圆

发表于 2010-3-23 19:51:43 | 显示全部楼层
谢谢楼主 问个问题 清屏函数一定要写吗?我那个程序没有清屏函数的

出0入0汤圆

发表于 2010-6-13 21:51:09 | 显示全部楼层
回复【楼主位】zhangaiminab
-----------------------------------------------------------------------
LZ,
能把我看看19264的程序吗
屏只有背光亮
QQ:530716460

出0入0汤圆

发表于 2015-3-21 15:56:06 | 显示全部楼层
longquan 发表于 2010-1-24 18:06
以前我点液晶时,丢了一个OxAF命令,什么都没有,再查查初始化

用的19264a,参考例子初始化只有
wr_lcd_1(0,0xc0);  //显示起始行设置(Display start line)
wr_lcd_1(0,0x3f);   //开显示
这两个命令呢?

出0入0汤圆

发表于 2015-3-21 15:56:36 | 显示全部楼层
daijianfeng 发表于 2010-6-13 21:51
回复【楼主位】zhangaiminab
-----------------------------------------------------------------------
...

这位老兄分享下经验,我也只有背光亮

出0入0汤圆

发表于 2015-3-21 15:57:52 | 显示全部楼层
zhangaiminab 发表于 2010-3-23 13:19
回复【10楼】kuku
-----------------------------------------------------------------------

忙检测加了个延时也是只有背光亮,,
”注意读繁忙时候的数据输出口的控制。“这个是数据输出口的控制啥意思呢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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