[求助] 请问有用过STM32写LCD12864屏幕的吗?很简单的程序,我死活找不到问题,求助啊!!...

zcy12321   2016-7-1 18:50 楼主
我手里有一块STM32F103C8T6的板子,然后还有一块LCD12864(16脚)的屏幕,我想用单片机控制显示屏幕。我是拿51的例程来改了一些函数,硬件连接:RS RD RW RST CS 分别为A8 A9 A10 A11 A12。D0~D7分别连的A0~A7。我对比了51的程序和我自己改的STM32里的程序,对了几十遍,发现没有什么错误啊。为什么显示不 了,求助啊!!!附上我的程序,求大神帮忙看看,谢谢
  • miniLCD12864引脚图

回复评论 (19)

2推荐 zcy12321 

上面的图只看引脚i就好,白色方框不用在意,是51里的连法
点赞  2016-7-1 18:52
没弄过这种,你把频率调低先试试
点赞  2016-7-1 19:12
我的屏是常见的st7920控制器的12864,103r系列驱动的
作为一个菜逼,干货并没有多少。唯一会的就是水,所以回帖水分大。望见谅!
点赞  2016-7-1 19:13

5楼 sgp 

再看看引脚有没有被复用

可以把写数据、写指令、初始化函数里的延时改长点试试 本帖最后由 sgp 于 2016-7-1 19:51 编辑
点赞  2016-7-1 19:49
stm32跑太快,在与屏通信的时候要进行适当的延时
点赞  2016-7-1 21:11
保证,输入输出,读写等逻辑正确。最好用示波器,逻辑分析仪之类的看看时序。以及电平是否兼容。
点赞  2016-7-1 21:26
注意延时长度的问题,一般都是延时导致时序不对,无法显示
点赞  2016-7-1 21:35
首先楼主需要确定下,您gpio初始化做了吗?大致看了下你32的程序,写的好乱。。。lcd接口的相关gpio貌似没有初始化,另外,这个写命令,写数据啥的要按照时序图走的。
点赞  2016-7-1 23:17
延时函数要跟着改,51比32慢得多,最好看看12864的手册 看看需要延时多久
点赞  2016-7-2 00:50
基本上是延时不够,如果是用while延时的话
点赞  2016-7-2 08:58
应该是时序上的问题吧,换了单片机程序也要调整下时序才行
疏雨客晚归,荒烟乱,几许江南无晴!又落花,残香织梦,莫  莫  莫,白首衷肠……
点赞  2016-7-2 09:55
引用: huaiqiao 发表于 2016-7-1 23:17
首先楼主需要确定下,您gpio初始化做了吗?大致看了下你32的程序,写的好乱。。。lcd接口的相关gpio貌似没 ...

是做了初始化的,我的屏幕都接的单片机的PA口,所以我把PA全部初始化了的
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
点赞  2016-7-2 20:48
引用: wajuka 发表于 2016-7-2 09:55
应该是时序上的问题吧,换了单片机程序也要调整下时序才行

应该是延时的问题,但是我不知道要延时多久?
点赞  2016-7-2 20:49
用的是ST7565的驱动芯片,附上12864的数据手册,和ST7565的手册,我看了。。。没有找到要延时多久。。
点赞 (1) 2016-7-2 20:50
看了它51的写指令和读指令的程序,也在网上查了12864的 时序图。。但是始终没有理解到它这个程序的时序意图
void LcdSt7565_WriteCmd(cmd)
{
        LCD12864_CS = 0;           //chip select,打开片选
        LCD12864_RD = 1;           //disable read,读失能       
        LCD12864_RS = 0;       //select command,选择命令
        LCD12864_RW = 0;       //select write,选择写模式
        _nop_();
        _nop_();

        DATA_PORT = cmd; //put command,放置命令
        _nop_();
        _nop_();

        LCD12864_RW = 1;           //command writing ,写入命令
}

/*******************************************************************************
* 函 数 名         : LcdSt7565_WriteData
* 函数功能                   : 写入一个数据到12864
* 输    入         : dat
* 输    出         : 无
*******************************************************************************/

void LcdSt7565_WriteData(dat)
{       
        LCD12864_CS = 0;           //chip select,打开片选
        LCD12864_RD = 1;           //disable read,读失能       
        LCD12864_RS = 1;       //select data,选择数据
        LCD12864_RW = 0;       //select write,选择写模式
        _nop_();
        _nop_();

        DATA_PORT = dat;       //put data,放置数据
        _nop_();
        _nop_();

        LCD12864_RW = 1;           //data writing,写数据
}
点赞  2016-7-2 20:53
引用: huaiqiao 发表于 2016-7-1 23:17
首先楼主需要确定下,您gpio初始化做了吗?大致看了下你32的程序,写的好乱。。。lcd接口的相关gpio貌似没 ...

4楼不是有个例程么?参考下例程吧。还有你写程序的时候一定要看时序图哦。
点赞  2016-7-2 21:18
12864无感,不同产的芯片延时不太一样,有的要几个毫秒的延时,大多是并口。看一下模块上有没驱动芯片型号或者问卖家,尽量找原厂的,或者延时调到临界值再加上百分之三四十保证稳定(不要太临界,环境、温度什么的变化可能影响延时),多看参考别人的程序做比较 现在用5110或者这个 QQ截图20160702231456.png 本帖最后由 曾经in 于 2016-7-2 23:18 编辑
点赞  2016-7-2 23:15
楼主问题解决了吗
点赞  2017-3-31 17:00
楼主  问题解决了吗
点赞  2018-8-26 20:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复