打印

没法点亮!我把程序发上来,跪求大侠帮忙!

[复制链接]
2497|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
blackxl|  楼主 | 2007-8-24 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的青云LCM128645ZK,扩展8155,然后用并口驱动LCM 。
是不是我的程序有问题。用keil 调试的时候不能在C源程序设置断点,直接跳到反汇编窗口。不知道怎么搞的!
请高人指点迷津。
blackxl119@tom.com
QQ:5823469
留下QQ,EMAIL,希望和大家多多交流
相关链接:https://bbs.21ic.com/upfiles/img/20078/2007824172635219.rar

相关帖子

沙发
cheamei| | 2007-8-27 11:23 | 只看该作者

用的什么芯片

使用特权

评论回复
板凳
wei0516| | 2007-8-28 21:42 | 只看该作者

lcm驱动电路

请大家帮忙,我买的LCM是MOBI2006的液晶屏,花了80元,我不知道带不带驱动电路,我问过经销商,说带的,但我只看到液晶屏和引出的21只引脚,而没有硬件电路在后面,我查过驱动应该是uPD16682A,加上电源后不亮,很郁闷!不知道带不带背光,能不能买到专门的驱动电路uPD16682A?

使用特权

评论回复
地板
shiqianwei| | 2007-8-31 18:07 | 只看该作者

你要自己焊驱动电路阿?!

那老麻烦了 ... 你的屏难道除了玻璃就没有其他东西了?...那样是你被骗咯

使用特权

评论回复
5
stycx| | 2007-8-31 18:40 | 只看该作者

肯定是已经带有驱动的 不然不止21个脚

例子有 
http://blog.21ic.com/user1/1347/archives/2006/13422.html
使用北京青云的LCM128645ZK液晶模块的总结 
sillboy 发表于 2006-4-11 17:26:00 

 lanfeng008 发表于 2006-4-7 10:03 技术交流 ←返回版面    

使用北京青云的LCM128645ZK液晶模块的总结 

本人因作毕业设计,其中使用了北京青云的LCM128645ZK液晶模块,网上查找资料较少所以就算给大家提个醒。
最重要的一点是,如果你使用串行方式进行控制则一定要注意串/并方式选择。资料中说在模块背面有个跳线进行选择,但是其制作时并非标准的有跳线针而是简单的三个焊盘之间使用个“0”欧的贴片电阻进行了短接。这一点一定要注意你的模块是跳在哪一边的,一般出厂是在S/P的P端。有的可能线路板上标记不清如我的就只写了“S1”,害得我好找。如果不能确定是打在哪边的则可以给模块上电的情况下用表量下PSB(15脚)的电压为“1”时为并行模式,否则为串行,则可以将跳线改接到合适位置。但是贴片不容易焊接,完全可以用细的金属如电阻的边角直接进行短接。
以下是我的调试程序:
#i nclude<reg51.h>
#i nclude<absacc.h>
#i nclude<INTRINS.H>
#define uchar unsigned char

sbit SID=P1^1;
sbit SCLK=P1^0;
sbit RST=P1^2;
void delay_1ms()
{
    uchar j;
    for(j=0;j<50;j++){}
}
//串行数据输入一字节
void s_SendByte(uchar s_data)
{
    uchar i;
        SID=0;
        SCLK=0;
      for(i=0;i<8;i++)
        {
            SID=(bit)(s_data & 0x80);
             _nop_();        //必须添加,否则会影响传输数据的准确性。
             SCLK=1;
             _nop_();        //必须添加,否则会影响传输数据的准确性。
               s_data<<=1;
               _nop_();        //必须添加,否则会影响传输数据的准确性。
             SCLK=0;
             _nop_();
        }
}
//命令输入
void send_comm(uchar comm_data)
{
    uchar i;
    _nop_();
    s_SendByte(0xF8 & 0xFF);                //send 1 1 1 1 1 RW=0 RS=0 0
    _nop_();
    s_SendByte(comm_data & 0xF0);            //send D7 D6 D5 D4 0 0 0 0
    _nop_();
    s_SendByte((comm_data & 0x0F)<<4);      //send D3 D2 D1 D0 0 0 0 0
    for(i=0;i<3;i++)
    delay_1ms();
}
//数据输入
void send_data(uchar send_data)
{
    uchar i;
    s_SendByte(0xFA & 0xFF);          // 1 1 1 1 1 RW=0 RS=1 0
    _nop_();                       
      s_SendByte(send_data & 0xF0);             //send D7 D6 D5 D4 0 0 0 0
      _nop_();
      s_SendByte((send_data & 0x0F)<<4);        //send D3 D2 D1 D0 0 0 0 0
    for(i=0;i<100;i++);              //delay 100us
}
//初始化
void LCD_init(void)
{
    uchar i;
    RST=0;
    for(i=0;i<20;i++)
    delay_1ms();
    RST=1;
    RST=1;
    SCLK=0;
    for(i=0;i<40;i++)            //延时40ms
    delay_1ms();
    send_comm(0x30);            //功能设置,一次送8位数据,基本指令集
    for(i=0;i<100;i++);
    send_comm(0x30);            //功能设置,一次送8位数据,基本指令集
    for(i=0;i<100;i++);
    send_comm(0x0c);            //0000,1100  整体显示,游标off,游标位置off
    for(i=0;i<100;i++);
    send_comm(0x01);            //0000,0001 清DDRAM
    for(i=0;i<10;i++);
    delay_1ms();
    send_comm(0x06);            //0000,0010 DDRAM地址归位
    delay_1ms();
    send_comm(0x80);            //1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC
    delay_1ms();
    send_comm(0x04);            //点设定,显示字符/光标从左到右移位,DDRAM地址加 一
    delay_1ms();
    //send_comm(0x0F);            //显示设定,开显示,显示光标,当前显示位反白闪动
    //delay_1ms();
    //send_comm(0x06);
    for(i=0;i<5;i++);
    delay_1ms();
}

void display(uchar x_add,uchar dat1,uchar dat2)
{
    send_comm(x_add);
    delay_1ms();
    send_data(dat1);
    _nop_();
    send_data(dat2);
    _nop_();
}
//构建显示介面
void disp_form(void)
{
    uchar i,place,chann;
    for(i=0;i<8;i++)
    {
        place=0x80+4*i;
        chann=i+0x31;
        display(place,0x43,0x48);
        display(place+1,chann,0x3A);
        display(place+3,0x25,0x20);
    }
}

main()
{
    uchar i,j,p,m,n,num1,num2;
    LCD_init();
    send_comm(0x81);
    send_comm(0x30);
    send_comm(0x01);
    send_comm(0x36);
    send_comm(0x30);
    disp_form();
    while(1)
    {
        delay_1ms();
            if(p>99)p=0;
            m=p/10;n=(p-10*m);
            display(0x82,(0x30+m),(0x30+n));    //显示数据
            for(j=0;j<100;j++)
            for(i=0;i<100;i++)
            delay_1ms();
            //send_comm(0x01);
            delay_1ms();
            p++;     
    }
    
}

本程序主要是实现在液晶屏上显示八个数据采集通道“CH1-CH8”,和一个改变的通道1CH1的数据。本程序仅用于调试显示数据等没有什么特殊意义。
这是本人在贵论坛的第一次举手发言请大家指教。
 
 
 

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝