求决战平安京首测激活码激活码

上一篇:下一篇:
联 系 人:许新徕 联系电话:9
传真电话:3
深圳市新诺亚显示技术有限公司
联 系 人:许新徕 联系电话:9-609
传真电话:3
移动电话:
Copyright@ &
深圳新诺亚显示技术有限公司版权所有&&&&&捷配欢迎您!
微信扫一扫关注我们
当前位置:&>>&&>>&&>>&LCD12864液晶的使用之字库型液晶(一)
  下面介绍下带字库的液晶,由于Proteus中没有,就以实物为准吧!我手头上这块液晶是QY128*64HZ1,它的是,想必大家很熟悉了,百度、谷歌一下它的芯片手册很多!在学习此块液晶之前,建议大家好好看看它的的手册!它的驱动和1602很像,甚至,读忙、写指令和写数据函数都是一样的,就初始化不一样,因为指令系统不同嘛!下面是我手头字库液晶的实物图。
  字库型液晶显示可以分为串行方式和并行方式两种,通过引脚PSB进行选择,它只有一个驱动芯片, 不像Proteus中无字库液晶有两个驱动芯片。显示是整体显示,而不是左右屏的显示!大家一定要注意!
  1、控制口信号说明:
  注:①忙标志Bust_flag=1说明LCD内部正忙,此时不能对LCD进行操作,忙标志的判断由DB7也就是数据口的最高位所决定!这和一样!
写指令到指令暂存器(IR)
读出忙标志(BF)及地址(AC)的状态
单片机写数据到数据暂存器(DR)
单片机从数据暂存器中读出数据
  ②上面对RS和RW的操作需配合使能信号EN来操作!否则无效!
技术资料出处:郭 靖
该文章仅供学习参考使用,版权归作者所有。
因本网站内容较多,未能及时联系上的作者,请按本网站显示的方式与我们联系。
【】【】【】【】
上一篇:下一篇:
本文已有(0)篇评论
发表技术资料评论,请使用文明用语
字符数不能超过255
暂且没有评论!
12345678910
12345678910
12345678910
就像很遥远年代的人们思想还很保守,固守着自己一方净土独享着一份安逸。总认为天圆地方一直在平淡而充实的生活,又好似红楼梦中的刘姥姥走进大观园看得眼花缭乱。对于75年以前人传统观念还比较浓重,对于那个年代的人来讲所受到教育和现在应该说是不一样的。对于那个时代物资相对比较匮乏,科技...[][][][][][][][][][]
IC热门型号
IC现货型号
推荐电子百科查看: 1872|回复: 2
我的单片机学习笔记:浅谈LCD12864液晶使用
先引出一段背景话:前段时间做电子大赛,题目是《无线遥控绘图小车》,意思即为制作一个A端,作为远程遥控部分;制作一个B端,作为绘图主体部分。每个部分均由主控IC来控制,我们采用的是增强型51单片机STC12C5A32S2,选择它的原因无非有两个:一是普通51单片机无论从主频、RAM上来讲均不能满足要求;二是在大赛前突然得知AVR系列的128停产了,市面上仅剩的128于是身价倍增,已经达到45~55元/片,成本过高。于是惊呼:AVR的时代已经马上就要过去了。最后我们选用了STC12C5A32S2单片机,主频选用24M,不分频,相当于传统51单片机的288M频率,速度够用;32K+28K的存储器,相比51的4K、8K存储空间够用了;而它的价格仅仅为7元/片(从芯片商直接购进)。这样无论从性能和价格上均满足要求,可谓性价比相当高的一款单片机了。好了,主控介绍完毕。因为本次主要想说说12864液晶,所以主要介绍A端及其控制。
A端主要有五部分组成:电源模块、主控芯片及其工作电路、欧姆龙非编码4*4矩阵键盘、nrf24L01无线传输模块、12864液晶显示模块。下面主要介绍在使用12864液晶中遇到的一些问题及其解决方案:(抛砖引玉,欢迎高手指点)
12864液晶,从字面意思上来理解,就是一块分辨率为128*64的液晶屏幕,和电脑中提到的显示器分辨率是一样的。只不过12864是一块单色的液晶屏,市面上最常见的为蓝绿色和蓝色。我们采用的是蓝色液晶屏,内有中文字库,使用起来方便很多。关于汉字和ASCII码:汉字在12864中占用16*16的屏幕空间,ASCII码字符占用16*8的屏幕空间。于是我们可以知道:一块12864使用内部字库,最多可以显示32个汉字或者64个ASCII码字符。如果我们感觉这样屏幕显示的东西太少,可以舍弃液晶内部字库,自己制作一个字库,其中汉字和ASCII码均可以占用8*8的屏幕空间,这样我们的12864最多可以显示128个汉字或ASCII码字符。所以在显示内容较多时可以采用这种方法。
作为背景,下面说一下12864的驱动。关于液晶的驱动电路是相当复杂的,一个有几年工作经验的工程师也不一定能自己独立设计出一个12864驱动,但是比较好的是,我们一般在买12864的时候,制造商都已经将驱动做好了,我们要做的就是通过制造商留给我们的20P接口去使用它(这也就是术业有专攻吧,我们不必关心它的内部驱动,只要会用就行了),关于制造商留给我们的这20P引脚的具体名称和功能 我就不赘述了,网上一把一把的。将单片机的I/O、电源线与液晶焊接完毕后,硬件也就搭建好了。下面开始软件编程来控制12864液晶让它显示。
说到软件编程,首先我们需要准备一下平台:第一:给单片机焊接一个下载电路,51单片机最常用的就是串口下载,需要串口头一个、104电容5个、max232芯片一个、串口线/USB转串口连接线(后者主要为笔记本等没有串口的电脑设计)一条、导线若干。这个下载电路在网上也是一把一把的,我也不赘述了。第二:需要一台电脑(编程用)。第三:需要相应的开发平台,51单片机最常用的是keil,现在比较流行的是keil2和keil3,各有特点,可以根据自己的习惯选择,我个人选用的是keil3平台。有了以上3点,软硬件开发平台就已经搭建好了,下面介绍一下程序编写。
首先,打开keil软件,建立一个工程,并添加一个文件到工程里面,然后就可以写程序了。首先把基本程序架构写好:头文件、主函数、while循环。为了让程序比较好理解,采用编写函数在主函数中调用的形式。下面介绍一下各种功能函数的编写。
首先是最基本的初始化操作,需要参考制造商给出的操作时序图(这里不赘述,只列出代码)
    void init_12864()
&&    lcd12864_psb=1;//选择并行模式
    write_cmd(0x30);//选择基本指令
    write_cmd(0x0C);//把显示打开,关闭游标
    write_cmd(0x01);//清屏,地址归零
接下来是基本的读写操作:参考制造商给出的操作时序图(这里不赘述,只列出代码)
    //往12864内部写入一个命令字节
    void write_cmd(uchar cmd)
    lcd12864_rs=0;//把rs引脚拉低,表示命令
    lcd12864_rw=0;//表示写,而非读
    P0=//把命令字节送到数据线上
    lcd12864_en=0; //给en引脚一个高脉冲
    delay_ms(5);
    lcd12864_en=1;
    delay_ms(5);
     lcd12864_en=0;
    //往12864内部写入一个字节的数据
    void write_dat(uchar dat)
     lcd12864_rs=1;//表示写数据
    lcd12864_rw=0;//表示写
    P0=//把数据送到数据线上
    lcd12864_en=0; //给en引脚一个高脉冲
     delay_ms(5);
    lcd12864_en=1;
     delay_ms(5);
    lcd12864_en=0;
    } 
这样基本的函数便写好了,关于12864的操作是这样的:首先需要对其进行配置,即执行初始化函数,然后就可以进行进行显示字符了。如果我们要在屏幕上显示汉字“好”,需要这样操作:首先写入命令,内容为显示地址(第一行首空间为0x80),然后写入数据,内容为我们要显示的字符(内容为“好”),于是我们的代码这样写:
    init_12864();
    write_cmd(0x80);
    write_dat(“好”);
这样我们进行代码编译,将文件下载到单片机就可以在12864上看见在屏幕最左上角的“好”字了。下面进行一些更加复杂一点的操作。即在屏幕任意的地方显示任意的字符串(当然需要的显示空间要够,不然会没有地方显示的),代码如下:
    void set_xy(uchar row,uchar line) //设置显示地址为第x行y列
        switch(row) //对行进行判断
        {
             case 1: {write_cmd(0x80|line);} //第一行,则设定列位置
&&            case 2: {write_cmd(0x90|line);} //第二行,则设定列位置
&&            case 3: {write_cmd(0x88|line);} //第三行,则设定列位置
&&            case 4: {write_cmd(0x98|line);} //第四行,则设定列位置
        }
    }    
    void write_xy(uchar row,uchar line,uchar *string) //在坐标为x行y列的地方显示出字符串string
        uchar lcd_&&//定义显示数据暂存变量
        set_xy(row,line);&&//设定显示地址为第x行y列    
        lcd_temp=* //将string的内容赋给lcd_temp    
         while(lcd_temp!=0x00) //判断字符串截止标志
        {
             write_dat(lcd_temp); //写入字符串的相应内容
&&            lcd_temp=*(++string); //读取字符串下一位字符
        }
这样,一个函数就编写好了,如果我们想在第三行第二列的位置显示“我爱电子”,则这样进行操作:行x=3,列y=2,字符串为“我爱电子”,于是我们在主函数里面写这样的代码:
    unsigned char string=“我爱电子”;
    write_xy(3,2,uchar *string);   
这样我们进行代码编译,将文件下载到单片机就可以在12864上看见在屏幕第三行第二列的位置显示“我爱电子”。下面介绍一下在12864上进行局部显示图片,在显示图片之前我们需要获得所显示图片的二进制编码。这个可以借助&字模提取软件&来进行,然后在函数中定义一下(我定义为logo[ ]={ }),下面是局部显示图片的函数
    void lcd12864_display(uchar code *img)/*显示函数*/
     uchar x,y;
    uint i=0;//不可定义为uchar,数量不够用
     for(y=24;y&=31;y++) //我们可以更改y的最小值和最大值来控制显示区域
         for(x=1;x&3;x++)//每个x对应于2个字节,我们可以更改x的最小值和最大值来控制显示区域
&&        {
&&             write_cmd(0x36); //扩充指令,同时开通图形显示
& &            write_cmd(0x80+y);//垂直地址
&&             write_cmd(0x80+x);//水平地址
& &            write_cmd(0x30);//改为基本指令,进而进行基本输入
&&             write_dat(img[i++]); //数据写入
& &            write_dat(img[i++]);
&&        }
    for(y=0;y&=23;y++) //我们可以更改y的最小值和最大值来控制显示区域
         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液晶上做出了一个简单的操作界面,花了整整两天时间。其中图像清屏的问题占用了很多时间,所以在此写下此文,为后来者提供问题的解决方案。最后欢迎大家多多交流~~
 讲得很详细 透彻
 谢谢楼主分享
Powered by深圳LCM,液晶LCD,12864LCM,液晶模块,12864点阵模块,液晶显示模块,12864液晶屏,液晶显示屏,液晶模组,12864液晶显示模块,LCD生产厂家 - 深圳市晶联讯电子有限公司
全部产品分类
TFT彩屏├---1.44寸TFT彩屏├---2.8寸TFT彩屏├---1.8寸TFT彩屏├---2.4寸TFT彩屏├---3.2寸TFT彩屏├---3.5寸TFT彩屏├---4.3寸TFT彩屏├---5.0寸TFT彩屏128*64点阵液晶模块-COG128*64点阵液晶模块-COG(带板)128*64点阵液晶模块-COB1602字符型液晶模块-COB128*32点阵液晶模块240*160点阵液晶模块128*128点阵液晶模块-COG256*64点阵液晶模块256*128点阵液晶模块256*160点阵液晶模块160*160点阵液晶模块-COG160*80点阵液晶模块-COG192*64点阵液晶模块├---192*64点阵液晶模块-COG├---192*64点阵液晶模块-COB192*96点阵液晶模块-COG160*32点阵液晶模块-COB122*32点阵液晶模块-COB240*128点阵液晶模块OLED液晶模块段码屏液晶模块命名规则
您的当前位置:首页&&新闻中心
深圳晶联讯12864COG液晶模块使用方法视频教材第一讲
晶联讯12864COG液晶模块使用方法视频教材第一讲让液晶模块亮起来,详情请点击进入:

我要回帖

更多关于 决战平安京激活码九游 的文章

 

随机推荐