带字库型12864液晶的简单使用

发布者:泥匠手最新更新时间:2015-07-22 来源: 51hei关键字:带字库型  12864液晶 手机看文章 扫描二维码
随时随地手机看文章
         昨天下午终于拿到了期盼已久的12864液晶,经过一天的研究,终于将它显示出字了,现在就在这里写一下,简单的使用方法,可以方便初学者学习,也方便自己以后查阅。

         12864液晶,有名字便可以知道它有128*64个像素点,可以显示汉字和简单的图形。在这里先介绍显示字库汉字和自定义汉字的方法,图形的显示以后我也会在空间中更新。

        12864显示数据传输也有两种方法,一种是串行方式,一种是并行方式,并行方式传输速度快,我也只介绍串行方式。

        12864的读写命令和1602的时序完全一样,这里就不做详细说明,不清楚的可以看我的1602显示,时序图如下:

         这个是读时序(包括读数据和读命令)
  这个是写时序(包括写数据和写命令)

  这个是写时序(包括写数据和写命令)


  要注意的是12864液晶的初始化和1602液晶的初始化过程是不相同的,初始化流程图如下:

 

              12864的指令表也有两张一张基本指令表一张扩展指令表,表格如下:




续基本指令表


续基本指令表


 


    扩展指令表:
 
 

续扩展指令表:



12864的指令表就这么多,看起来比较多,但不要求每一条都记住,只要知道每一条指令的作用,能够查表使用就够了。具体每一条指令的意思表上已经比较清楚了,我就不再啰嗦了。我下面将要给出的程序中也做了比较详细的注释,大家可以对照程序再看这些指令表;。[page]

          这是演示效果,第一行“请您欣赏”上自定义的仿宋字体,下面三行是字库中自带的汉字(手机拍摄的效果不太好)。

 

下面是我写的源程序,(由于水平有限,程序写法可能不是最优的方式,希望高手批评指正):

/*********************************************************
程序:LCD12864自定义显示字符(最多显示4个)
内容:ASCII码显示、自带字库显示(8192个)、自定义显示字符(4个请您欣赏)。
软件:keil uVision4
液晶:QYLCD12864HZ1(带字库) 
学习板:HOT-51学习板 
作者:张家越 
整理日期:2011-04-09  17:00
 
*************************************************************/
#include
#define uchar unsigned char
#define uint  unsigned int  //定义一下,方便使用 
#include"word1.h"

sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7; //液晶的三个控制端

//sbit PSB=P2^4;//1---8位或4位并口方式;0---串口方式。单片机上电高电平,选择的是并口方式

uchar code tab1[]="    LCD12864    ";
uchar code tab2[]="湖北第二师范学院";
uchar code tab3[]="电子爱好者张家越";
unsigned char code table1[][32] =       
{
/*--  文字:  请  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
 {
  0x00,0x40,0x20,0x70,0x13,0xC0,0x10,0x70,0x01,0xC0,0x00,0x7C,0x77,0x80,0x10,0x70,
  0x13,0x90,0x12,0x70,0x13,0x90,0x1A,0x70,0x13,0x90,0x02,0x30,0x02,0x10,0x00,0x00,
  },
/*--  文字:  您  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
 { 
  0x01,0x00,0x09,0x00,0x09,0x38,0x13,0xC8,0x34,0x50,0x51,0x40,0x12,0x50,0x14,0xC8,
  0x10,0x40,0x02,0x00,0x21,0x10,0x29,0x08,0x24,0x08,0x42,0x20,0x01,0xE0,0x00,0x00,
  },
/*--  文字:  欣  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
 { 
  0x00,0x40,0x06,0x40,0x38,0x40,0x20,0x40,0x20,0x7C,0x26,0x88,0x3C,0x80,0x25,0x40,
  0x24,0x40,0x24,0x40,0x24,0x40,0x24,0xA0,0x44,0xA0,0x45,0x10,0x82,0x1C,0x00,0x00,
  },
/*--  文字:  赏  --*/
/*--  仿宋_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
  {
  0x01,0x10,0x09,0x20,0x05,0xFC,0x3E,0x08,0x21,0xC0,0x0E,0x40,0x09,0xC0,0x0E,0x00,
  0x00,0xE0,0x0F,0x20,0x09,0x20,0x09,0x20,0x0A,0x20,0x04,0xC0,0x18,0x30,0x00,0x00,
   },


}  ;

// 汉字表:
// 天道酬勤
 

 

void delay(uint i) //延时函数 
{
 while(--i);
}

void read_busy() //读忙标志 最高位为1则busy,不能进行读写操作 
{
 RS=0;
 RW=1;
 EN=1; //看时序 
 while(P0 & 0x80); 
 EN=0;
}

void write_LCD_command(uchar value) //写命令函数 
{
 read_busy(); //每次读写都要进行读忙标志 
 RS=0;
 RW=0;
 delay(200);
 EN=1;  //EN从1--0锁存数据 
 P0=value;
 delay(200);
 EN=0;
}

void write_LCD_data(uchar value) //写数据函数 
{
 read_busy();
 RS=1;
 RW=0;
 delay(200);
 EN=1;  //EN从1--0锁存数据 
 P0=value;
 delay(200);
 EN=0;
}

void init_LCD()    //8位并口方式LCD1864初始化函数 
{
 delay(4000);   //等待时间>40ms 
 write_LCD_command(0x30);//功能设定:8位数据、基本指令操作 
 delay(100);    //等待时间>100us 
 write_LCD_command(0x30);//功能设定:8位数据、基本指令操作 
 delay(37);    //等待时间>37us 
 write_LCD_command(0x0C);//显示设定:整体显示、游标关、不反白 
 delay(100);    // 等待时间>100us 
 write_LCD_command(0x01);//清屏指令 
 delay(10000);   //等待时间>10ms 
 write_LCD_command(0x06);//进入点设定:地址指针加1 
}

/*=============================================
自定义汉字函数:CGRAM自定义显示字符
地址  显示编码
0x40  0x0000
0x50  0x0002
0x60  0x0004
0x70  0x0006
共可显示四个自定义字符! 
显示自定义字符前,先要设定显示的位置,否则会乱码 
==============================================*/
void CGRAM()
{
 uchar i;
 write_LCD_command(0x30);//基本指令操作 
 write_LCD_command(0x40);//设定CGRAM字符的位置 
 for(i=0;i<16;i++)
 {
  write_LCD_data(table1[0][i*2]);
  write_LCD_data(table1[0][i*2+1]);//送显示数据到CGRAM区中 
 }
 write_LCD_command(0x50);
 for(i=0;i<16;i++)
 {
  write_LCD_data(table1[1][i*2]);
  write_LCD_data(table1[1][i*2+1]);
 }
 write_LCD_command(0x60);
 for(i=0;i<16;i++)
 {
  write_LCD_data(table1[2][i*2]);
  write_LCD_data(table1[2][i*2+1]);
 }

 write_LCD_command(0x70);
 for(i=0;i<16;i++)
 {
  write_LCD_data(table1[3][i*2]);
  write_LCD_data(table1[3][i*2+1]);
 }
 
 
}

void main()
{
// uchar num;
 uchar i;
 init_LCD();
 write_LCD_command(0x01);

  CGRAM();
  write_LCD_command(0x82);            
  write_LCD_data(0x00);
  write_LCD_data(0x00);//第一个自定义显示字符编码为:0x0000 
  
  write_LCD_command(0x83);
  write_LCD_data(0x00);
  write_LCD_data(0x02);//第一个自定义显示字符编码为:0x0002

  write_LCD_command(0x84);
  write_LCD_data(0x00);
  write_LCD_data(0x04);//第一个自定义显示字符编码为:0x0004

  write_LCD_command(0x85);
  write_LCD_data(0x00);
  write_LCD_data(0x06);//第一个自定义显示字符编码为:0x0006
  delay(5000);       

  write_LCD_command(0x90);

//  write_LCD_command(0x00);
  for(i=0;i<16;i++)
  {
   write_LCD_data(tab1[i]);
   delay(5000);
  }
  write_LCD_command(0x88);
//  write_LCD_command(0x00);
  for(i=0;i<16;i++)
  {
   write_LCD_data(tab2[i]);
   delay(5000);
  }
  write_LCD_command(0x98);
//  write_LCD_command(0x00);
  for(i=0;i<16;i++)
  {
   write_LCD_data(tab3[i]);
   delay(5000);
  }
  while(1);

}

如果觉得我空间里面不够详细可以参看大海橡树的空间:http://hi.baidu.com/echoas(里面写的比较好)
 

12864图片显示我将在“12864使用方法(二)”中给出.。

关键字:带字库型  12864液晶 引用地址:带字库型12864液晶的简单使用

上一篇:基于stc12c56的心电信号模拟程序
下一篇:DAC7611驱动程序

推荐阅读最新更新时间:2024-03-16 14:25

STM32 驱动液晶LCD12864
#include led.h #undef APP_DE #include hawk.h 液晶采用晶联讯电子的JLX19264G-260 #define FEEDDOG() GPIOC- ODR^= GPIO_Pin_0 //LCD IO初始化 void LCD_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA,ENABLE);//使能PB,端口时钟 GPIO_InitStructure.GPIO_P
[单片机]
LCD12864液晶使用-ST7920
LCD12864液晶型号为ST7920,位带字库液晶,同时也有图形县显示区,具体操作请看手册,这里只是简单说下使用,本教程是串行使用方式,本教程实现了液晶的画图,显示字和自定义字功能。 第一幅图为画图效果,画了一幅图; 第二幅图为用自身字符库,写了一首诗; 第三幅图为用CGRAM,4个16*16用户自定义字拼出一个32*32的字; 一、DDRAM 使用内部字库,写入DDRAM,字体大小只能为16*16,对应整个屏幕 地址: X ----------------------------------- | | 80H,81H,82H,83H,84H,85H,86H,87H, |
[单片机]
LCD<font color='red'>12864</font><font color='red'>液晶</font>使用-ST7920
跟我学51单片机(八)——图字库液晶128×64
  上期我向大家介绍了字符型液晶1602的基本功能,并用51单片机的驱动显示,你可以用它表达你的幸运日期或者你喜欢的数字。虽然说1602液晶使用方便,但如果你想用它表达更多的语言,就难以满足要求了,因此,我向大家介绍一款128×64的带字库液晶。   一、原理简介   我手里的这款128×64液晶内部是以ST7920芯片作为控制器,是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16×16点汉字,和128个16×8点ASCII字符集。可以显示8×4行16×16点阵的汉字。因此利用该液晶模块可以灵活的构成全中文人机交互图形界
[单片机]
跟我学51单片机(八)——图<font color='red'>型</font><font color='red'>带</font><font color='red'>字库</font><font color='red'>液晶</font>128×64
MSP430单片机对12864液晶模块显示的测试设计
//DM430开发板控制带字库型12864液晶模块显示测试程序 //显示模式为汉字模式,直接将12864插入12864接口即可 //注意选择液晶的电源,位于电位器附近,可选5V或3.3V,根据液晶电压进行选择 //调试环境:EW430 V5.30 MSP430单片机对12864液晶模块显示的测试设计 // ********************************************************************/ #include #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles(
[单片机]
51单片机驱动ds1302程序(12864液晶显示)
这个是主界面 这个是主菜单界面 这个是设置时间的子界面 这个是设置日期 设置背景光 这是设置了按键音和闹铃以后,主界面出现状态 标志 闹铃的界面,喇叭出现铃声。 生日倒计时提醒功能。 全部完整的源代码下载: http://www.51hei.com/bbs/dpj-20391-1.html 下面是ds1602部分的驱动程序: /*------------------------------------ 名称:DS1302Driver 编写:YuMin_Dong 时间:2013.01.20 --------
[单片机]
51单片机驱动ds1302程序(<font color='red'>12864</font><font color='red'>液晶</font>显示)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved