7225|11

164

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

STM32f103驱动12864花屏问题 [复制链接]

    我最近用STM32f103VCT6驱动12864,然后现在基本的显示汉字,字符可以实现

    但是当调用打点函数的时候确出现了花屏现象,如下图所示:
     

       还有一点比较奇怪的是,我打点函数写的是在0,0出打点,上图中左上角出现的却是一条短线,不知道是为什么

       贴上我的打点函数:

      void Set_12864_point(u8 x,u8 y)
{
       
       
        u8 x_byte,x_bit,y_byte,y_bit;
        u8 data1,data2;//???????
        x&=0x7F;//???????????
        y&=0x3F;

        x_byte=x/16;//???????
        x_bit=x&0x0f;        //??????

        y_byte=y/32;
        y_bit=y&0x3f;

       
        Write_12864_Com(0x34);
        Write_12864_Com(0x80+y_bit);
        Write_12864_Com(0x80+x_byte+8*y_byte);

               
        Read_12864_Data();//????????????
        data1=Read_12864_Data();
        data2=Read_12864_Data();

        Write_12864_Com(0x34);
        Write_12864_Com(0x80+y_bit);
        Write_12864_Com(0x80+x_byte+8*y_byte);
        if(x_bit<8)
        {
                Write_12864_Data(data1|(0x01<<(7-x_bit)));
                Write_12864_Data(data2);
        }
        else
        {
                Write_12864_Data(data1);       
                Write_12864_Data(data2|(0x01<<(15-x_bit)));
        }
        Write_12864_Com(0x36);
        Write_12864_Com(0x30);       
}

此帖出自stm32/stm8论坛

最新回复

读得不对  详情 回复 发表于 2015-9-21 03:47
点赞 关注
 

回复
举报

503

帖子

1

TA的资源

一粒金砂(高级)

沙发
 
12864一个字节对应8个点
开机初始化没清除图形区的数据
此帖出自stm32/stm8论坛

点评

花屏的问题解决了,可是在液晶上打一个点我还是没搞懂。 比如 Set_12864_point(0,0); 依然是左上角16个点,我单步执行了打点函数,发现一个问题,如下图 [attachimg]214940[/attachimg]  详情 回复 发表于 2015-9-20 21:49
厉害!!!  详情 回复 发表于 2015-9-20 20:48
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
看看你的LCD接口电平吧,3.3V的电平驱动5V的接口就会这样
此帖出自stm32/stm8论坛
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

4
 
还有一点忘了说了,你可以试着把延时加大,给足够的建立时间,
如果用低速可以正常显示,高速不行,那就是接口电平的问题了
此帖出自stm32/stm8论坛
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

5
 
也可能是其它函数操作了LCD相关的端口或寄存器。
此帖出自stm32/stm8论坛
 
 
 

回复

415

帖子

2

TA的资源

一粒金砂(高级)

6
 
关于12864读取点阵函数这里很重要。需要一次空读,第一次读取为空读,第二次读取值为高字节,第三次读取值为低字节,看了你的程序,感觉疑问会出现在这里:
       Read_12864_Data();//????????????
        data1=Read_12864_Data();
        data2=Read_12864_Data();
你试试随便定义一个不需要的变量,然后将第一个读取函数的值赋予到该变量。
另外使用画图函数之前最好将界面全部清除初始化一下,还要确保是在画图模式下。
此帖出自stm32/stm8论坛

点评

感觉不是那个问题,现在花屏的问题解决了,可是打点依然不对。。。。。  详情 回复 发表于 2015-9-20 21:50
 
个人签名只要你心中有梦想,你人在哪里,梦想就在哪里!
 
 

回复

300

帖子

0

TA的资源

一粒金砂(高级)

7
 
2楼+4楼试试看
此帖出自stm32/stm8论坛
 
个人签名世间万物皆系于一键之上~
 
 

回复

164

帖子

1

TA的资源

一粒金砂(高级)

8
 
曾经in 发表于 2015-9-19 13:02
12864一个字节对应8个点
开机初始化没清除图形区的数据



     厉害!!!
此帖出自stm32/stm8论坛
 
 
 

回复

164

帖子

1

TA的资源

一粒金砂(高级)

9
 
曾经in 发表于 2015-9-19 13:02
12864一个字节对应8个点
开机初始化没清除图形区的数据


     花屏的问题解决了,可是在液晶上打一个点我还是没搞懂。

    比如        Set_12864_point(0,0);  依然是左上角16个点,我单步执行了打点函数,发现一个问题,如下图

   

    在液晶初始化后所有的点应该是0才对,可是data1和data2读出来全部是0xff,不应该是0x00么。。。。

    附上我的程序

2015-09-18.zip

1.97 MB, 下载次数: 46

此帖出自stm32/stm8论坛
 
 
 

回复

164

帖子

1

TA的资源

一粒金砂(高级)

10
 
我不懂 发表于 2015-9-19 16:24
关于12864读取点阵函数这里很重要。需要一次空读,第一次读取为空读,第二次读取值为高字节,第三次读取值 ...

感觉不是那个问题,现在花屏的问题解决了,可是打点依然不对。。。。。
此帖出自stm32/stm8论坛
 
 
 

回复

503

帖子

1

TA的资源

一粒金砂(高级)

11
 
读数据函数问题吧,可能延时不对
12864神慢,开个数组缓存比读回来快
安利俩屏,2块的5110或者5块的小12864
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

12
 
读得不对
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表