您当前的位置:五五电子网电子知识单片机-工控设备综合-其它用单片机控制12864液晶 正文
用单片机控制12864液晶

用单片机控制12864液晶

点击数:7989 次   录入时间:03-04 11:54:41   整理:http://www.55dianzi.com   综合-其它

    {

    for(x=1;x<3;x++) //我们可以更改x的最小值和最大值来控制显示区域

    {

    write_cmd(0x36);//扩充指令,同时开通图形显示

    write_cmd(0x80+y);//垂直地址

    write_cmd(0x88+x); //显示下半屏,y的坐标不变,x的坐标加8(看datasheet上的图)

    write_cmd(0x30);//改为基本指令,进而进行基本输入

    write_dat(img[i++]); //数据写入

    write_dat(img[i++]);

    }

    }

    }

    这样,一个函数就编写好了,如果我们就可以在任意区域显示自己想要的图片了(当然写入的区域不要有汉字或字符内容,不然会重叠到一起的,关于这部分的解决方案,下面即将介绍)

    笔者在应用12864的时候,由基本模式切换到绘图模式时,会出现屏幕花屏的情况,始终无法解决,最后编写了一段清除图片内容的函数,其代码如下:

    void clear_img()

    {

    uchar p,q;

    write_cmd(0x34);

    write_cmd(0x36);

    for(p=0;p<32;p++)

    {

    write_cmd(0x80|p);

    write_cmd(0x80);

    for(q=0;q<32;q++)

    write_dat(0);

    }

    }

    仔细研究一下这段代码,其实大家可以发现没有什么特别的东西,主要是为了给图片区域的部分全部写入0,屏蔽其显示内容,由此便可以解决模式切换后的花屏现象。然后在主函数中,调用初始化函数后,执行上面的clear_img()函数即可避免模式切换后的花屏现象。效果还是不错的,只是占用的时间比较长。笔者最初用普通51单片机时候选用11.05926M晶振,经12分频后清屏速度还是很慢的(接近8秒钟时间),后换用24M不分频的51单片机,清屏速度加快了很多(大概在0.4秒左右),所以这种方法并不适用普通51,否则光清屏的时间就会让人抓狂的。只建议不分频的单片机使用这种方法。

    做比赛之前从来没有用过12864液晶,从头学起,最后在12864液晶上做出了一个简单的操作界面,花了整整两天时间。其中图像清屏的问题占用了很多时间,所以在此写下此文,为后来者提供问题的解决方案。最后欢迎大家多多交流~~



上一页  [1] [2] 


本文关键字:单片机  综合-其它单片机-工控设备 - 综合-其它