danielmi 发表于 2012-1-9 19:31:36

【已解决】大家过来看下这个12232液晶是什么控制的,是否带字库???用stm32搞了两天都没有

先上实物图:
http://cache.amobbs.com/bbs_upload782111/files_50/ourdev_711626DJSXSO.jpg
(原文件名:1.jpg)

http://cache.amobbs.com/bbs_upload782111/files_50/ourdev_711627K8NZLN.jpg
(原文件名:2.jpg)

http://cache.amobbs.com/bbs_upload782111/files_50/ourdev_711628JB369E.jpg
(原文件名:3.jpg)

我不知道这个屏是什么控制芯片的,也不知道它是否带字库。所以到网上面一搜,资料是不少,有带字库的程序,有不带的,就是不知道那个才合适。然后再搜了一个PDF,有时序图,发现它是ns级的,是相当快的,而且时序都不复杂。于是用RBT6来点亮,谁知道搞了两天也没搞出来,觉得大半是时需问题,所以发上来,希望大家帮帮忙谢谢!!
PDF:
点击此处下载 ourdev_711632OCKNDR.pdf(文件大小:776K) (原文件名:LCD12232(1).pdf)
注:我也不知道这个文档是否对得上这个屏。

danielmi 发表于 2012-1-9 19:33:45

读写程序:

/**********************************************************
* choe1、choe2选择E1还是E2
* data_comm 选择命令还是数据
* content写入的内容       
*/
void wr_lcd (u8 choe1,u8 choe2,u8 data_comm,u8 )
{
        u16 temp = 0;
//        chk_busy (choe1,choe2);
        if(data_comm)
        {
//                delay_us(10);
                GPIO_SetBits(GPIOB,a0);        //a0至位,写数据
//                delay_us(10);
                GPIO_ResetBits(GPIOB,rw);//rw清零,写模式
        }
        else
        {
//                delay_us(10);
                GPIO_ResetBits(GPIOB,a0);//a0清零,写指令
//                delay_us(10);
                GPIO_ResetBits(GPIOB,rw);//rw清零,写模式
        }
        if(choe1==1)
        {
//                delay_us(10);        
                GPIO_SetBits(GPIOB,e1);                        __nop();__nop();        //e1置位,左半屏使能
//                delay_us(10);
                temp = GPIOB->ODR;                                //读取端口状态,读——修改——写的方式,这里不用库
                temp &= 0xff00;
                temp |= content;                
                GPIOB->ODR = temp;                        __nop();__nop();
                delay_us(1);                                           
                GPIO_ResetBits(GPIOB,e1);                __nop();__nop();
        }
        if(choe2==1)
        {
//                delay_us(10);
                GPIO_SetBits(GPIOB,e2);                        __nop();__nop();
//                delay_us(10);
                temp = GPIOB->ODR;
                temp &= 0xff00;
                temp |= content;               
                GPIOB->ODR = temp;                        __nop();__nop();
                delay_us(1);                
                GPIO_ResetBits(GPIOB,e2);                __nop();__nop();
        }
}

void init_lcd (void)
{       
        delay_ms(100);
        GPIO_SetBits(GPIOB,rst);
        delay_ms(10);
        wr_lcd (1,1,comm,0xe2);        //软件复位
        wr_lcd (1,1,comm,0xa4);        //动态驱动
        wr_lcd (1,1,comm,0xa9);        //刷新时钟设置1/32           
        wr_lcd (1,1,comm,0xa0);        //clockwise
        wr_lcd (1,1,comm,0xee);        //写模式
        wr_lcd (1,1,comm,0x00);
        wr_lcd (1,1,comm,0xc0);       
        wr_lcd (1,1,comm,0xaf); //显示打开
}

请大家看下哪里有问题,或者大家有没有更好的,给小弟我参考下,谢谢!!

xiaodao35 发表于 2012-1-9 20:52:06

片选0->读或写0->数据->读或写1->片选1

danielmi 发表于 2012-1-10 13:29:16

回复【2楼】xiaodao35
-----------------------------------------------------------------------

谢谢,我的是按照手册上得时序来写的了,请大侠指出错误行吗??

http://cache.amobbs.com/bbs_upload782111/files_50/ourdev_711877H1T6AR.jpg
(原文件名:dfgha.jpg)

danielmi 发表于 2012-1-10 18:47:21

问题算是解决了,不是代码问题,液晶用5V供电就可以显示了。

不过也很不明白,这两个液晶是从人家的手持设备上拆出来的,人家用两节干电池供电都行,也就是3V嘛,为什么我用3.3V供电都不行呢。

而且,两块液晶,其中一块可以正常的显示,但是另一块竟然上下半屏颠倒了,我晕,代码一样,虽然两块液晶不一样,但不至于这么不兼容法吧???再看看吧!!

danielmi 发表于 2012-1-10 18:48:26

上传个程序吧,是网上的来修改的,芯片是RBT6,3.12的库,MDK3.8a:

点击此处下载 ourdev_711996NZMV69.zip(文件大小:1.77M) (原文件名:12232.zip)

danielmi 发表于 2012-1-10 18:49:27

接线程序里面有定义!!

dianzichina 发表于 2012-3-7 07:39:08

不兼容的事情很多,我手上光一个12232C的屏,查DATASHEET就有2个以上的不同版本。搞得我现在还没点亮。

jackem 发表于 2013-7-9 09:19:29

楼主解决了是啥意思 ? 没问题了?

htf9833223 发表于 2013-11-12 17:37:53

非常感谢!

SCS_Super 发表于 2023-9-25 21:49:48

字库用什么生成?
页: [1]
查看完整版本: 【已解决】大家过来看下这个12232液晶是什么控制的,是否带字库???用stm32搞了两天都没有