单片机外围存储及LCD12864
- 格式:doc
- 大小:651.00 KB
- 文档页数:40
LCD12864引脚图及功能在我们常用的人机交互显示界面中,除了数码管、LED,有一种12864液晶屏用的比较多。
顾名思义,12864表示其横向可以显示128个点,纵向可以显示64个点。
我们常用的12864液晶模块中有带字库的,也有不带字库的,其控制芯片也有很多种,如KS0108、T6963C,ST7920等等。
本产品是以ST7920为主控芯片的12864液晶屏的一种。
1.lcd12864基本资料常见的12864LCD使用的控制芯片是ST7920。
ST7920一般和ST7921(列驱动芯片)配合使用,做成显示2行每行16个汉字的显示屏25632LCD,或者是做成4行每行8个汉字的显示屏12864LCD 。
12864液晶模块中有带字库可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。
提供三种控制接口,分别是8 位微处理器接口,4 位微处理器接口及串行接口。
所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。
内置2M-位中文字型ROM (CGROM)总共提供8192 个中文字型(16x16 点阵),16K-位半宽字型ROM (HCGROM)总共提供126 个符号字型(16x8 点阵),64 x 16-位字型产生RAM (CGRAM),另外绘图显示画面提供一个64x256 点的绘图区域(GDRAM),可以和文字画面混和显示。
提供多功能指令:画面清除(Display clear)、光标归位(Return home)、显示打开/关闭(Display on/off)、光标显示/隐藏(Cursor on/off)、显示字符闪烁(Display character blink)、光标移位(Cursor shift)显示移位(Display shift)、垂直画面旋转(Vertical line scroll)、反白显示(By_line reverse display)、待命模式(Standby mode)。
#include <reg52.h>#ifndef __LCD12864_H__#define __LCD12864_H__#include <intrins.h>#define uchar unsigned char#define uint unsigned int/*端口定义*/#define LCD_data P0 //数据口sbit LCD_RS = P2^7; //寄存器选择输入sbit LCD_RW = P2^6; //液晶读/写控制sbit LCD_EN = P2^5; //液晶使能控制sbit LCD_PSB = P1^4; //串/并方式控制#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};/* 延时函数*/void delay1(int ms){while(ms--){uchar i;for(i=0;i<250;i++){_nop_();_nop_();_nop_();_nop_();}}}/*检查LCD忙状态*/ /*lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据。
*/ bit lcd_busy(){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOP();result = (bit)(P0&0x80);LCD_EN = 0;return(result);/*写指令到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。
*/ void lcd_wcmd(uchar cmd){//while(lcd_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;}/*写数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。
LCD12864原理与应用1、LCD12864简介:LCD12864分为两种,带字库的和不带字库的,不带字库的液晶显示汉字的时候可以选择自己喜欢的字体。
而带字库的液晶,只能显示GB2312字体,当然也可以显示其他的字体,不过是用图片的形式显示。
下面介绍不带字库的LCD12864,以Proteus中的AMPIRE128×64为例,如下图所示,它的液晶驱动器为KS0108。
引脚功能:引脚符号状态引脚名称功能,输入芯片片选端,都是低电平有效CS1=0开左屏幕,CS1=1关左屏幕CS2=0开右屏幕,CS2=1关右屏幕RS输入数据/命令选择信号RS=1为数据操作,RS=0为写指令或读状态RW输入读写选择信号R/W=1为读选通,R/W=0为写选通E输入读写使能信号在E下降沿,数据被锁存(写)入液晶,在E高电平期间,数据被读出DB0—DB7三态数据总线数据或指令的传送通道输入复位信号,低电平时复位复位时,关闭液晶显示,使显示起始行为0,可以跟单片机的复位引脚RST相连,也可以直接接VCC,使之不起作用V0液晶显示器驱动电压-Vout-10V LCD驱动负电压与带字库的液晶不同,此块液晶含有两个液晶驱动器,每块驱动器都控制64*64个点,分为左右两个屏幕显示,总共为128*64个点(即有128×64个点)。
这就是为什么AMPIRE128*64有CS1和CS2两个片选端的原因。
此液晶有8页,一页有8行点阵点,左右各64列,共128列。
如下图所示:2、LCD12864中的几条重要指令(一)行(line)设置命令:由此可见显示的起始行地址为0XC0,共64行,有规律地改变起始行号,可以实现滚屏效果。
(二)页(page)设置指令:起始页地址为0XB8,因为液晶有64行点,分为8页,每页就有8行点。
(三)列(column)地址设置指令每块驱动器的列地址都是从0X40到0X7F,共64列,所以此液晶共有128列点。
51单片机综合学习系统之 12864点阵型液晶显示篇大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了1602字符型液晶显示的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习12864点阵型液晶显示屏的基本原理与使用方法。
点阵LCD的显示原理在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。
对于显示英文操作,因为英文字母种类很少,只需要8位<一字节)即可。
而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:图1 “A”字模图而中文的“你”在字模中的记载却如图2所示:图2 “你”字模图12864点阵型LCD简介12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。
可完成图形显示,也可以显示8×4个(16×16点阵>汉字。
管脚号管脚名称LEVER 管脚功能描述1 VSS 0 电源地2 VDD +5.0V 电源电压3 V0 - 液晶显示器驱动电压4 D/I(RS> H/L D/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令数据5 R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DR6 E H/L R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM数据读到DB7∽DB07 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线10 DB3 H/L 数据线11 DB4 H/L 数据线12 DB5 H/L 数据线13 DB6 H/L 数据线14 DB7 H/L 数据线15 CS1 H/L H:选择芯片(右半屏>信号16 CS2 H/L H:选择芯片(左半屏>信号17 RET H/L 复位信号,低电平复位18 VOUT -10V LCD驱动负电压19 LED+ - LED背光板电源20 LED- - LED背光板电源表1:12864LCD的引脚说明在使用12864LCD前先必须了解以下功能器件才能进行编程。
AVR单片机驱动LCD12864显示中文字符实例JCS居士,2019年09月21日一、说明:总的来说,Proteus软件中能够仿真的图形LCD驱动器分成三类。
1.Toshiba T6963C Controller,主要有以下型号: LM3228、LM3229、LM3267、LM3283、LM3287、LM4228、LM4265、LM4267、LM4283、LM4287、PG12864F、PG24064F、PG128128A、PG160128A。
2.Sharp SED1520 Controller,主要有以下型号:AGM1232G、EW12A03GLY、HDM32GS12-B、HDM32GS12Y-B。
3.Sharp SED1565Controller,主要有以下型号:HDG12864F-1、HDS12864F-3、HDG12864L-4、HDG12864L-6、NOKIA7110、TG126410GFSB、TG13650FEY4.Samsung KS0108Controller,主要有以下型号:AMPIRE128x64、LGM12641BS1R。
注意:大家比较关心的ST7920驱动器Proteus里面是没有的,不要再费尽心思下载什么带中文字库的LCD模型,导入Proteus,费时费力不讨好!采用LM3328是一款内置T6963C驱动器的图形液晶显示器,显示范围为128*64,单色。
采用Atmega16单片机,用C语言实现中文显示,是一件特别简单的事情,全部C语言代码仅30余行。
接线及Proteus仿真图、程序均在下文中给出。
二、Proteu软件仿真截图:三、C语言程序代码:/*Chip type : ATmega16Program type : ApplicationAVR Core Clock frequency: 8.000000 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 256*/#include <mega16.h>// Graphic Display functions#include <glcd.h>extern flash unsigned char HZ16X16[]; extern flash unsigned char EN8X16[];// Font used for displaying text// on the graphic display#include <font5x7.h>unsigned char i=0;void main(void){// Variable used to store graphic display// controller initialization dataGLCDINIT_t glcd_init_data;// Graphic Display Controller initialization // The T6963 connections are specified in the// Project|Configure|C Compiler|Libraries|Graphic Display menu: // DB0 - PORTA Bit 0// DB1 - PORTA Bit 1// DB2 - PORTA Bit 2// DB3 - PORTA Bit 3// DB4 - PORTA Bit 4// DB5 - PORTA Bit 5// DB6 - PORTA Bit 6// DB7 - PORTA Bit 7// C /D - PORTB Bit 0// /CE - PORTB Bit 1// /RD - PORTB Bit 2// /WR - PORTB Bit 3// /RESET - PORTB Bit 4// Specify the current font for displaying textglcd_init_data.font=font5x7;// No function is used for reading// image data from external memoryglcd_init_data.readxmem=NULL;// No function is used for writing// image data to external memoryglcd_init_data.writexmem=NULL;glcd_init(&glcd_init_data);glcd_settextjustify(0,0);while(1){glcd_setfont(HZ16X16);glcd_moveto(8,0);for(i=128;i<128+7;i++)glcd_putchar(i);glcd_moveto(8,16);for(i=128+7;i<128+14;i++) glcd_putchar(i);glcd_moveto(8,32);for(i=128+14;i<128+21;i++) glcd_putchar(i);glcd_moveto(8,48);for(i=128+21;i<128+28;i++) glcd_putchar(i);glcd_setfont(EN8X16);glcd_putcharxy(0, 0,'A');glcd_putcharxy(0,16,'b'); glcd_putcharxy(0,32,'C'); glcd_putcharxy(0,48,'d'); glcd_putcharxy(120, 0,'1'); glcd_putcharxy(120,16,'2'); glcd_putcharxy(120,32,'3'); glcd_putcharxy(120,48,'4'); }}。
#include <reg52.h>#ifndef __LCD12864_H__#define __LCD12864_H__#include <intrins.h>#define uchar unsigned char#define uint unsigned int/*端口定义*/#define LCD_data P0 //数据口sbit LCD_RS = P2^7; //寄存器选择输入sbit LCD_RW = P2^6; //液晶读/写控制sbit LCD_EN = P2^5; //液晶使能控制sbit LCD_PSB = P1^4; //串/并方式控制#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};/* 延时函数*/void delay1(int ms){while(ms--){uchar i;for(i=0;i<250;i++){_nop_();_nop_();_nop_();_nop_();}}}/*检查LCD忙状态*/ /*lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据。
*/ bit lcd_busy(){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOP();result = (bit)(P0&0x80);LCD_EN = 0;return(result);/*写指令到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。
*/ void lcd_wcmd(uchar cmd){//while(lcd_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;}/*写数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。
LCD12864(控制芯片ST7920)128×64点阵液晶显示屏有三种控制器,分别是KS0107(KS0108)、T6963C和ST7920,三种控制器主要区别是:KS0107(KS0108)不带任何字库、T6963C带ASCII码,ST7920带国标二级字库(8千多个汉字)。
如果控制芯片为st7920。
带字库。
通讯方式:串行、并口可选;无需片选信号。
以下是需要了解的LCD12864液晶的概念:做液晶显示时DDRAM,CGROM,CGRAM,GDRAM的概念。
1、DDRAM是与显示屏对应的,DDRAM的容量比显示屏大很多,在做滚动屏或者翻页,页面切换时是有用的!!可以先把数据写到RAM里,一个命令切换就OK了。
2、CGROM是内部字符发生器。
存了一些预先设好的点阵。
当我们再DDRAM中输入某字符的代码时,它会自动显示其中的字符信息。
3、CGRAM用来给用户可以自定义所需的文字或符号,应该是写到RAM里就跟CGROM 一样用了。
CGRAM是用户自建字模区,有时ascii码表不能满足个人对字符的要求,则需要在这里写入字模。
字模的方式和CGRAM中的一样。
4、绘图RAM(GDRAM)绘图显示RAM 提供64×32 个位元组的记忆空间,最多可以控制256×64 点的二维绘图缓冲空间,在更改绘图RAM 时,先连续写入水平(0x80~0x87)与垂直(0x80~0x9f)的坐标值,再写入两个8 位元的资料到绘图RAM,而地址计数器(AC)会自动加一;在写入绘图RAM 的期间,绘图显示必须关闭,整个写入绘图RAM 的步骤如下:1、关闭绘图显示功能。
2、先将垂直的坐标(Y)写入绘图RAM 地址;3、再将水平的位元组坐标(X)写入绘图RAM 地址;4、将D15——D8 写入到RAM 中;5、将D7——D0 写入到RAM 中;6、打开绘图显示功能。
题目院系名称:专业班级:学生姓名:学号:指导教师:年月日摘要单片机扩展外围存储器,先在存储器里存储一幅图片,然后通过单片机读出数据在lcd12864上显示出来。
关键词AMPIRE128X64;2764;外部存储器读写;扩展外部存储器ABSTRACTMicrocontroller peripheral expansion of memory, first in memory to store a picture, and then read data through the microcontroller in the lcd12864 on display.Key words LCD12864;External memory read and write;External memory expansion目录1 引言............................................................................................................ - 1 -1.1 研究的目的..................................................................................... - 1 -1.2 相关领域成果................................................................................. - 1 -1.3 研究的意义..................................................................................... - 1 -2 芯片资料.................................................................................................... - 2 -2.1 AT89C51芯片介绍 ........................................................................ - 2 -2.1.1 概述...................................................................................... - 2 -2.1.2 特性...................................................................................... - 2 -2.1.3 编号含义.............................................................................. - 3 -2.1.4 框图(CPU) ........................................................................... - 4 -2.1.5 逻辑符号.............................................................................. - 5 -2.1.6 管脚描述.............................................................................. - 6 -2.2 LCD12864(ks0108 controllers)芯片介绍..................................... - 12 -2.2.1 KS0108控制器主要特性............................................... - 12 -2.2.2 接口说明.......................................................................... - 13 -2.2.3 引脚功能.......................................................................... - 13 -2.2.4 指令列表.......................................................................... - 14 -2.2.5 工作时序图........................................................................ - 14 -2.2.6 KS0108控制器指令说明............................................... - 14 -2.3 27C64芯片介绍 ........................................................................... - 17 -2.3.1 概述.................................................................................... - 17 -2.3.2 2764各引脚的含义........................................................... - 17 -2.3.3 读时序图:........................................................................ - 18 -2.4 74LS373芯片介绍 ....................................................................... - 19 -2.4.1 概述.................................................................................... - 19 -2.4.2 74ls373功能简介 .............................................................. - 20 -2.4.3 74ls373内部逻辑结构图 .................................................. - 20 -3 系统分析.................................................................................................. - 21 -3.1 题目要求....................................................................................... - 21 -3.2 元件选择....................................................................................... - 21 -3.3 硬件总体结构设计....................................................................... - 21 -3.4 软件概要设计............................................................................... - 22 -4 硬件设计.................................................................................................. - 23 -4.1 元件资料....................................................................................... - 23 -5 软件设计.................................................................................................. - 24 -6 软件仿真.................................................................................................. - 26 -6.1 Proteus简介.................................................................................. - 26 - 总结................................................................................................................ - 27 - 致谢................................................................................................................ - 28 - 参考文献........................................................................................................ - 29 - 附录源代码................................................................................................ - 30 -1 引言1.1 研究的目的扩展外部存储器主要用于增大存储容量,提供更多的功能,扩大应用领域。