12864液晶显示汉字

合集下载

12864液晶汉字显示

12864液晶汉字显示

程序:#include<A T89X52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define LCD_databus P0sbit RS=P2^2; /*复位信号*/sbit RW=P2^1; /*读/写选择*/sbit EN=P2^0; /*读/写使能*/sbit CS1=P2^4; /*片选1*/sbit CS2=P2^3; /*片选2*/void delay(int x) /*延时程序*/{while(x--);}void Read_busy() /*状态检查,LCD是否忙*/{P0=0X00;RS=0;RW=1;EN=1;while(P0&0x80);EN=0;}void write_LCD_command(uchar value) /*写命令*/ {Read_busy();RS=0;RW=0;LCD_databus=value;EN=1;_nop_();_nop_();EN=0;}void write_LCD_data(uchar value) /* 根据时序图写程序*/ {Read_busy();RS=1;RW=0;LCD_databus=value;EN=1;_nop_();_nop_();EN=0;}void Set_page(uchar page) /* 选择页,页地址起始0xb8*/ {page=0xb8|page;write_LCD_command(page);}void Set_line(uchar startline) /* 选择行,页地址起始0xc0*/ {startline=0xc0|startline;write_LCD_command(startline);}void Set_column(uchar column) /* 选择列,页地址起始0x3f*/ {column=column&0x3f;column=0x40|column;write_LCD_command(column);}void Setonoff(uchar onoff){onoff=0x3e|onoff;write_LCD_command(onoff);}void SelectScreen(uchar screen) /* 选择屏*/{switch(screen){case 0:CS1=0;CS2=0;break; /* 选择左右屏*/case 1:CS1=0;CS2=1;break; /* 选择左屏*/case 2:CS1=1;CS2=0;break; /* 选择右屏*/default:break;}}void ClearScreen(uchar screen) /* 清屏*/{uchar i,j;SelectScreen(screen);for(i=0;i<8;i++){Set_page(i);Set_column(0);for(j=0;j<64;j++){write_LCD_data(0x00);}}}void initLCD() /* 液晶初始化*/{Read_busy();SelectScreen(0);Setonoff(0);SelectScreen(0);Setonoff(1);SelectScreen(0);ClearScreen(0);Set_line(0);}void Display(uchar ss,uchar page,uchar column,uchar *p) /* 显示*/{uchar i;SelectScreen(ss);Set_page(page);Set_column(column);for(i=0;i<16;i++){write_LCD_data(p[i]);}Set_page(page+1);Set_column(column);for(i=0;i<16;i++){write_LCD_data(p[i+16]);}}unsigned char code chong[]={/*-- 文字: 重--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x08,0x0A,0xEA,0xAA,0xAA,0xAA,0xFE,0xAA,0xAA,0xA9,0xF9,0x29,0x0C,0x08,0x00, 0x40,0x40,0x48,0x4B,0x4A,0x4A,0x4A,0x7F,0x4A,0x4A,0x4A,0x4B,0x48,0x60,0x40,0x00};unsigned char code qing[]={/*-- 文字: 庆--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0x45,0xFE,0x44,0x44,0x44,0x66,0x44,0x00,0x00,0x40,0x20,0x9F,0x80,0x40,0x20,0x18,0x06,0x01,0x06,0x18,0x20,0x40,0xC0,0x40,0x00};unsigned char code wen[]={/*-- 文字: 文--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x08,0x08,0x18,0x68,0x88,0x09,0x0E,0x08,0x08,0xC8,0x38,0x08,0x0C,0x08,0x00,0x80,0x80,0x40,0x40,0x20,0x11,0x0A,0x04,0x0A,0x11,0x10,0x20,0x40,0xC0,0x40,0x00};unsigned char code li[]={/*-- 文字:理--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x44,0x44,0xFC,0x46,0x44,0x00,0xFE,0x92,0x92,0xFE,0x92,0x92,0xFF,0x02,0x00,0x00,0x10,0 x30,0x1F,0x08,0x48,0x48,0x44,0x44,0x44,0x7F,0x44,0x46,0x44,0x60,0x40,0x00};unsigned char code xue[]={/*-- 文字: 学--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,0x04,0x 04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00};unsigned char code yuan[]={/*-- 文字: 院--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xFE,0x22,0x5A,0x96,0x0C,0x24,0x24,0x25,0x26,0x24,0x34,0xA4,0x14,0x0C,0x00,0x00, 0xFF,0x04,0x08,0x87,0x81,0x41,0x31,0x0F,0x01,0x3F,0x41,0x41,0x41,0x70,0x00};unsigned char code dian[]={/*-- 文字: 电--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00};unsigned char code zi[]={/*-- 文字: 子--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,0x00,0 x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};unsigned char code qi[]={/*-- 文字: 气--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x20,0x58,0x47,0x54,0x54,0x54,0x54,0x54,0x54,0xD4,0x14,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x80,0x70,0x00};unsigned char code gong[]={/*-- 文字: 工--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x20,0x 20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00};unsigned char code cheng[]={/*-- 文字: 程--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0x7E,0x42,0x42,0x42,0x42,0x42,0x7F,0x02,0x00,0x08,0 x06,0x01,0xFF,0x00,0x43,0x41,0x49,0x49,0x49,0x7F,0x49,0x4D,0x69,0x41,0x00};unsigned char code yu[]={/*-- 文字: 与--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xCC,0x88,0x00,0x00,0x08,0 x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x4C,0x88,0x40,0x3F,0x00,0x00,0x00};unsigned char code zhi[]={/*-- 文字: 自--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x10,0x08,0xFC,0x8A,0x89,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x88,0x88,0x88,0x88,0x88,0x88,0xFF,0x00,0x00,0x00,0x 00};unsigned char code dong[]={/*-- 文字: 动--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x24,0x24,0xE4,0x26,0x34,0x20,0x10,0x10,0xFF,0x10,0x10,0x10,0xF8,0x10,0x00,0x08,0x1C,0x0B,0x08,0x08,0x8A,0x4C,0x30,0x0C,0x03,0x40,0x80,0x40,0x3F,0x00, 0x00};unsigned char code hua[]={/*-- 文字: 化--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0x20,0xF8,0x07,0x00,0x00,0x00,0xFF,0x40,0x20,0x10,0x18,0x00,0x00,0x00,0x00,0x 00,0x00,0xFF,0x00,0x04,0x02,0x01,0x3F,0x40,0x40,0x40,0x40,0x40,0x70,0x00};unsigned char code hu[]={/*-- 文字: 胡--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x10,0x10,0x10,0xFF,0x10,0x90,0x18,0x10,0xFE,0x22,0x22,0x22,0xFF,0x02,0x00,0x00,0x 00,0x7F,0x21,0x21,0x21,0x7F,0x81,0x40,0x3F,0x02,0x42,0x82,0x7F,0x00,0x00};unsigned char code jie[]={/*-- 文字: 杰--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x08,0x08,0x88,0x48,0x28,0x18,0xFF,0x18,0x28,0x48,0x88,0x08,0x0C,0x08,0x00,0x02,0x 82,0x71,0x00,0x00,0x10,0x60,0x07,0x10,0x60,0x00,0x10,0x21,0xC3,0x01,0x00};unsigned char code ling[]={/*-- 文字: 0 --*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0xE0,0xF0,0x18,0x0C,0x04,0x04,0x04,0x0C,0x18,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x18,0x30,0x20,0x20,0x20,0x30,0x18,0x0F,0x07,0x00,0x00};unsigned char code jiu[]={/*-- 文字: 9 --*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x04,0x0D,0x19,0x12,0x19,0x0F,0x07,0x00,0x00,0x00,0x00};unsigned char code yi[]={/*-- 文字: 1 --*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00};unsigned char code ban[]={/*-- 文字: 班--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x84,0x84,0xFC,0x84,0x06,0xF4,0x00,0xFF,0x00,0x84,0x84,0xFC,0x84,0x86,0x84,0x00,0x20,0 x60,0x3F,0x10,0x92,0x41,0x38,0x07,0x40,0x40,0x40,0x7F,0x40,0x60,0x40,0x00};unsigned char code dan[]={/*-- 文字: 单--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xFC,0x08,0x00,0x00,0x10, 0x10,0x17,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x18,0x10,0x00};unsigned char code pian[]={/*-- 文字: 片--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x80,0x 40,0x3F,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x00,0x00,0x00,0x00,0x00,0x00};unsigned char code ji[]={/*-- 文字: 机--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,0x00,0x00,0x04,0x03,0x00,0xFF,0x80,0x41,0x20,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x70,0x00};unsigned char code zuo[]={/*-- 文字: 作--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0x20,0xF8,0x87,0x40,0x30,0x0F,0xF8,0x88,0x88,0xC8,0x88,0x0C,0x08,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x0C,0x08,0x00,0x00};unsigned char code ye[]={/*-- 文字: 业--*//*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x10,0x60,0x80,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xC0,0x30,0x00,0x00,0x40, 0x40,0x40,0x47,0x40,0x7F,0x40,0x40,0x40,0x7F,0x44,0x43,0x40,0x60,0x40,0x00};void main(){initLCD();ClearScreen(0);Set_line(0);Display(1,0,1*16,chong);Display(1,0,2*16,qing);Display(1,0,3*16,wen);Display(2,0,0*16,li);Display(2,0,1*16,xue); Display(2,0,2*16,yuan); Display(1,2,0*16,dian); Display(1,2,1*16,zi); Display(1,2,2*16,dian); Display(1,2,3*16,qi); Display(2,2,0*16,gong); Display(2,2,1*16,cheng); Display(2,2,2*16,xue); Display(2,2,3*16,yuan); Display(1,4,0*16,dian); Display(1,4,1*16,qi); Display(1,4,2*16,gong); Display(1,4,3*16,cheng); Display(2,4,0*16,yu); Display(2,4,1*16,zhi); Display(2,4,2*16,dong); Display(2,4,3*16,hua); Display(1,6,3*16,hu); Display(2,6,0*16,jie); delay(50000);initLCD();ClearScreen(0);Set_line(0);Display(1,2,1*16,dan); Display(1,2,2*16,pian); Display(1,2,3*16,ji); Display(2,2,0*16,zuo); Display(2,2,1*16,ye); Display(1,4,1*16,ling); Display(1,4,2*16,jiu); Display(1,4,3*16,dian); Display(2,4,0*16,qi); Display(2,4,1*16,yi); Display(2,4,2*16,ban); delay(50000);}取字软件:PCTOLCD2002。

12864液晶显示汉字 (1)

12864液晶显示汉字 (1)

摘要因为汉字本身的特点,显示汉字始终是计算机在我国应用普及的一个障碍。

随着单片机和显示技术的发展,加上人们不满足单片机系统采用LED 数码管的简单显示,利用单片机控制液晶显示成为当前显示系统的主流。

本文主要介绍了89S52 单片机为控制设备,液晶显示器为显示设备。

实现的一个可以显示汉字、字符和动态显示汉字的液晶显示器设备。

通过汉字显示程序的地址,接着运行相应的程序取汉字机内码和西文字符的ASCII 码,并在存储器中进行寻址找出相对应的显示代码或汉字字模,提取后作为阵显示信息送液晶显示器显示。

再者通过按键控制可以实现显示的汉字左右移动。

利用液晶显示器显示汉字操作灵活,汉字显示果可以大大提高。

关键词液晶显示点阵显示单片机Because of the characteristics of Chinese characters, displaying Chinese characters itself isalways computer is applied in our country popularity of an obstacle. With single-chip microcomputerand display technology development, and people don't satisfy SCM system using LED digital display,use simple tube of single-chip microcomputer control LCD display currently become the mainstreamof the display system. This article mainly introduced the 89S52 of control equipment, LCD monitorsfor display device. Implements a can display Chinese characters, characters and dynamic display ofChinese LCD equipment. Through Chinese displaying a program's address, and then run thecorresponding program take Chinese characters Machine code and cataloguing of ASCII characters,and in storage addressing find corresponding display code or Chinese character, after extractionword-model as Array display information sent LCD display. Moreover through button control can berealized display characters move around. Using LCD display characters operation is flexible andChinese displaying fruit can improve greatly.Keywords LCD dot matrix display button control目录第一章绪论1.1 液晶显示的发展趋势和介绍第二章系统总体设计2.1 简介2.2 电路硬件原理图2.3 软件设计方案2.4 仿真结果第三章ATMEL 89S52系列单片机3.1 A T89S52单片机内部的组成结果图3.2 单片机CPU结构3.3 AT89S52用户系统3.4 引脚介绍第四章液晶12864LCD (8)4.1 12864 液晶显示模块概述 (8)4.2 模块引脚说明 (9)4.3 资料传输与接口时序 (9)4.4 12864LCD模块指令 (11)4.5 显示步骤 (14)3.4 汉字显示设计 (15)3.4.1 开发板的介绍 (15)3.4.2 汉字液晶显示介绍 (15)3.4.3 汉字液晶显示设计分析 (16)3.4.4 程序分析及显示成果 (18)3.4.5 程序及调试 (20)4结论 (21)参考文献 (22)附录一程序 (23)附录二、字符表与地址坐标 (28)附录三、显示结果 (29)3.1 单片机51 单片机:单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

12864中文字库液晶模块使用说明书

12864中文字库液晶模块使用说明书

12864中文字库液晶模块使用说明书第 1 页共16 页一、12864液晶显示模块概述1. 12864液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312码简体中文字库(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

可与CPU 直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。

具有多种功能:光标显示、画面移位、睡眠模式等。

2. 外观尺寸:93×70mm(4X8C), 84×44mm(2X8C),110×65mm(2x8 C _2), 116×39mm(2X10),180×65mm(4X16A)3. 视域尺寸:73×39mm(4X8C), 78×25mm(2x8 C _2), 70×20mm(2X8C),85×20mm(2X10), 132×39mm(4X16A),补充说明:外观尺寸可根据用户的要求进行适度调整。

二、模块引脚说明1)表—1:(128X32)、(160X32)模块引脚说明引脚名称 方向 说明 引脚名称方向 说明1 VSS - GND(0V) 11 DB4 I/O 数据42 VDD - Supply Voltage For Logic (+5v) 12 DB5 I/O 数据53 VO - Supply Voltage For LCD (悬空)13 DB6 I/O 数据64 RS(CS) H/L H: Data L: Instruction Code 14 DB7 I/O 数据75 R/W(STD) H/L H: Read L: Write15 PSB H/L 16032此脚为:RESET脚 6 E(SCLK) H,H/L Enable Signal7 DB0 I/O 数据0 16 /RST H/L 16032此脚为空8 DB1 I/O 数据1 17 LEDK - 16032此脚为A9 DB2 I/O 数据2 18 LEDA - 16032此脚为K10 DB3 I/O 数据3 注:以上K为负,A为正4)表—4:(256X64)引脚说明引脚名称 方向 说明引脚名称 方向 说明 1 FG - FRAME GROUND 11 DB0 I/O 数据0 2 VSS - GND(0V)12 DB1 I/O 数据1 3 VDD - Supply Voltage For Logic (+5v) 13 DB2 I/O 数据2 4 NC - 空脚14 DB3 I/O 数据3 5 R/W H/L H: Read L: Write 15 DB4 I/O 数据4 6 E1 H,H/L Enable Signal1 16 DB5 I/O 数据5 7 E2 H,H/L Enable Signal217 DB6 I/O 数据6 8 RS H/L H: Data L: Instruction Code 18 DB7 I/O 数据7 9 NC - 空脚19 NC - 空脚 10 /RST H/L Reset Signal 低电平有效 20 NC - 空脚注 K背光源负极(LED-OV)A背光源正极(LED+5V)三、12864液晶硬件接口1、逻辑工作电压(VDD):4.5~5.5V2、电源地(GND):0V3、LCD 驱动电压(V0):0~-10V4、工作温度(Ta):0~55℃(常温) / -20~70℃(宽温) 保存温度(Tstg):-10~65℃(常温)5、电气特性见附图1 外部连接图(参考附图2)模块有并行和串行两种连接方法(时序如下): 1、8位并行连接时序图MPU 写资料到模块RSR/WEMPU从模块读出资料RSR/WE2、串行连接时序图CS C LS T3、AC电气特性(TA=25℃ VCC=5V)condition Min. Typ. Max. UnitSYMBOL Characteristics Testfrequency Rf=39KΩ480 540 600 KHz Fosc OSCTIME UNIT PARAMETER SYMBOL MESUREFOR WRITE MODE(WRITING DATA FROM MPU TO ST7920)System cycle time TC 13,000 nsAddress setup time TAS 1,500 nsAddress hold time TAH 1,500 nsData setup time TDSW 1,000 nsData hold time TH 20 nsEnable pulsewidth TPW 1,500 nsEnable rise/fall time TR,TF 25 nsFOR READ MODE(READING DATA FROM ST7920 TO MPU)System cycle time TC 13,000 nsAddress setup time TAS 1,500 nsAddress hold time TAH 1,500 nsData setup time TDDR 1,000 nsData hold time TH 20 ns Enable pulsewidth TPW 1,500 ns Enable rise/fall time TR,TF 25 ns四、用户指令集指令表—2:(RE=1:扩充指令集)指令码指令RS RW DB7 DB6 DB5DB4 DB3 DB2DB1DB0说明执行时间(540KHZ )待命模式 0 0 0 0 0 0 0 0 0 1将DDRAM 填满“20H ”,并且设定DDRAM 的地址计数器(AC )到“00H ” 72us卷动地址或IRAM 地址选择 0 0 0 0 0 0 0 0 1 SR SR=1:允许输入垂直卷动地址 SR=0:允许输入IRAM 地址72us反白选择 0 0 0 0 0 0 0 1 R1 R0选择4行中的任一行作反白显示,并可决定反白与否 72us 睡眠模式0 0 0 0 0 0 1 SL X XSL=1:脱离睡眠模式 SL=0:进入睡眠模式72us扩充功能设定0 0 0 0 1 1 X1REG 0RE=1:扩充指令集动作RE=0:基本指令集动作G=1 :绘图显示ONG=0 :绘图显示OFF72us设定IRAM地址或卷动地址0 0 0 1 AC5AC4 AC3 AC2AC1AC0SR=1:AC5—AC0为垂直卷动地址SR=0:AC3—AC0为ICON IRAM地址72us设定绘图RAM地址0 0 1 AC6 AC5AC4 AC3 AC2AC1AC0设定CGRAM地址到地址计数器(AC)72us备注:1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。

12864LCD液晶显示屏中文资料

12864LCD液晶显示屏中文资料

12864LCD液晶显示屏中文资料一、概述二、带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

三、基本特性:(1)、低电源电压(VDD:+3.0--+5.5V)(2)、显示分辨率:128×64点(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) (4)、内置 128个16×8点阵字符(5)、2MHZ时钟频率(6)、显示方式:STN、半透、正显(7)、驱动方式:1/32DUTY,1/5BIAS (8)、视角方向:6点(9)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 (10)、通讯方式:串行、并口可选(11)、内置DC-DC转换电路,无需外加负压(12)、无需片选信号,简化软件设计(13)、工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃模块接口说明:*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。

*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。

2.2并行接口的J8和“VCC”用焊锡短接。

*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

12864中文图形点阵液晶显示模块使用说明书

12864中文图形点阵液晶显示模块使用说明书

72us
读出 RAM
的值
1 1 D7
D6
D5
D4
D3
D2
D1
D0
从 内 部 RAM 读 取 数 据 (DDRAM/CGRAM/GDRAM)
72us
指令表 2:(RE=1:扩充指令集)
指令
指令码
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
说明
执行 时间 (540K HZ)
功能:设定 CGRAM 地址到地址计数器(AC),需确定扩充指令中 SR=0(卷动地址或 RAM 地址选择)
地址
设定 CGRAM 地址到地址计数器(AC)
1 AC5 AC4 AC3 AC2 AC1 AC0 需确定扩充指令中 SR=0(卷动地址或 72us RAM 地址选择)
设定 DDRAM 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 设定 DDRAM 地址到地址计数器(AC) 72us
I/O
DB5
I/O
DB6
I/O
DB7
I/O
PSB
I
NC
-
/RST
I
VEE
-
LED+
-
LED-
-
说明
电源地
逻辑电源正(+5V)
LCD 对比度调节电压
并行模式时选择数据或指令
H: 数据 L: 指令
串行模式时选择模块与否
H: 选择 L: 不选择
并行模式时控制读写
H: 读
L: 写
串行模式时输入数据
并行模式时使能端
L
L
L
H
DL
X
RE
X

12864显示文字+图像

12864显示文字+图像

引用12864液晶原理分析3他山之石2010-07-21 20:52:05 阅读7 评论0 字号:大中小小峰的12864液晶原理分析3一、ST7920控制IC的LCD12864实现反白显示从使用手册上可知,扩展指令里的0x03+行号即可实现反白对应行。

但是ST7920 控制器的128×64 点阵液晶其实原理上等同256×32 点阵,第三行对应的DDRAM 地址紧接第一行;第四行对应的DDRAM 地址紧接第二行。

所以128×64 点阵的液晶执行反白功能时实用意义不大,因为用户对第一行执行反白显示操作时,第三行必然也反白显示;第二行反白,第四行也必然反白。

其实还是有办法做到单行反白的,解决方法就是混用图形显示和字符显示。

其理论支持在于:在ST7920中,字符显示的DDRAM和图形的GDRAM是相互独立的,而最后显示到液晶上的结果,是两个RAM中数据的异或。

具体来说:假如某个点上,绘图RAM的没有绘图(数据为0),而字符RAM上有点阵(数据为1),那么异或的结果就是1,也就是说正常显示字符;当字符上RAM没有点阵的时候,异或的结果是0,自然也就不显示了。

假如该点上绘图RAM绘图了(数据为1),当字符RAM上有点阵(数据为1时),异或的结果为0,效果就是反白显示;如果字符RAM没有点阵(数据为0时),异或结果为1,效果就是显示绘图的背景。

所以,如果要在某个地方反白显示,那么就在该点绘图并且写字,如果要取消反白,就重新用全0擦掉那个地方的绘图!这样一来可以实现任何地方、任意大小的反白显示,反而比原指令中的单行反白的功能更好更强大。

二、对于整屏既有图象又有文本,则可以用两种方式实现:1、首先文本DDRAM写入要写的字符,其余全部空格(即0X00),然后再在没有字符的地方(即非点亮的晶格中,0X00)绘入图象。

DDRAM与GDRAM异或后就可以整屏实现图象与文本。

参见程序实例1。

12864中文液晶显示模块技术手册

12864中文液晶显示模块技术手册
4
DM12864M
四、用户指令集
1、指令表 1:(RE=0:基本指令集)
指令码
执行时
指令
R R DB DB DB DB DB DB DB DB 说明 S W7 6 5 4 3 2 1 0
间 ( 540 KHZ)
清除显
将 DDRAM 填满“20H”,并且

0 0 0 0 0 0 0 0 0 1 设定 DDRAM 的地址计数器 4.6ms
L
L
L
L
L
H
S/C R/L X
X
功能:设定游标的移动与显示的移位控制位:这个指令并不改变 DDRAM 的内容
6、功能设定 CODE: RW RS
L
L
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L
L
H
DL X
0 RE X
X
功能:DL=1(必须设为 1) RE=1;扩充指令集动作 RE=0:基本指令集动作
MPU 从模块读出资料
3
DM12864M
2








串行数据传送共分三个字节完成: 第一字节:串口控制—格式 11111ABC
A 为数据传送方向控制:H 表示数据从 LCD 到 MCU,L 表示数据从 MCU 到 LCD B 为数据类型选择:H 表示数据是显示数据,L 表示数据是控制指令 C 固定为 0 第二字节:(并行)8 位数据的高 4 位—格式 DDDD0000 第三字节:(并行)8 位数据的低 4 位—格式 0000DDDD 串行接口时序参数:(测试条件:T=25℃ VDD=4.5V)
10 DB3
H/L

SG12864-12带汉字库LCD显示器

SG12864-12带汉字库LCD显示器

72us
DDRAM 的地址计数器(AC)到“00H”
卷动地址或
00 0
0
0
0
0
0
1 SR SR=1:允许输入垂直卷动地址
72us
IRAM 地址
选择
反白选择 0 0
睡眠模式 0 0
扩充功能设
00

设定 IRAM 地址或卷动 0 0
地址 设定绘图
00
RAM 地址
深圳市显能实业有限公司 SHENZHNE SHINE INDUSTRY CO;LTD SG12864 中文字库
7、设定 CGRAM 位址
CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L
L
L
H AC5 AC4 AC3 AC2 AC1 AC0
功能:设定 CGRAM 位址到位址计数器(AC)
8、设定 DDRAM 位址
CODE: RW RS
L
L
深圳市显能实业有限公司 SHENZHNE SHINE INDUSTRY CO;LTD SG12864 中文字库
X
深圳市显能实业有限公司 SHENZHNE SHINE INDUSTRY CO;LTD SG12864 中文字库
0
0
0
1
D
C
B C=1:游标 ON
开/关
B=1:游标位置 ON
游标或显示移
位控制
00 0
0
功能设定 0 0 0 0
0
1 S/C R/L X
0
1 DL X
X
RE
设定游标的移动与显示的移位控制位
X
元;这个指令并不改变 DDRAM 的内容

12864LCD显示图形文字程序代码--STC89C52

12864LCD显示图形文字程序代码--STC89C52

/********函数声明*************************************************************/ void WriteDataLCD(unsigned char WDLCD); void WriteCommandLCD(unsigned char WCLCD,BuysC); unsigned char ReadDataLCD(void); unsigned char ReadStatusLCD(void); void LCDInit(void); void LCDClear(void); void LCDFlash(void); void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); void DisplayImage (unsigned char code *DData); void Delay5Ms(void); void Delay400Ms(void);
sbit LCD_RS=P1^0;
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2; sbit PSB =P1^6;
//PSB 脚为 12864-12 系列的串、并通讯功能切换,我们使用 8 位义***********************************************************/ #define LCD_Data P0 #define Busy 0x80 //用于检测 LCD 状态字中的 Busy 标识

LCD12864液晶显示器中文说明(DOC)

LCD12864液晶显示器中文说明(DOC)

一、液晶显示模块概述12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

主要技术参数和显示特性:电源:VDD 3.3V~+5V(内置升压电路,无需负压);显示内容:128列× 64行显示颜色:黄绿显示角度:6:00钟直视LCD类型:STN与MCU接口:8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等二、外形尺寸1.外形尺寸图2.二、模块引脚说明电源地(GND):0V工作温度(Ta):0~60℃(常温) / -20~75℃(宽温)三、接口时序模块有并行和串行两种连接方法(时序如下):8位并行连接时序图MPU写资料到模块MPU从模块读出资料、串行连接时序图2串行数据传送共分三个字节完成:第一字节:串口控制—格式11111ABCA为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCDB为数据类型选择:H表示数据是显示数据,L表示数据是控制指令C固定为0第二字节:(并行)8位数据的高4位—格式DDDD0000第三字节:(并行)8位数据的低4位—格式0000DDDD串行接口时序参数:(测试条件:T=25℃VDD=4.5V)四、用户指令集1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF 标志时BF 需为0,方可接受新的指令;如果在送出一个指令前并不检查BF 标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。

2、“RE ”为基本指令集与扩充指令集的选择控制位元,当变更“RE ”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE ”位元,否则使用相同指令集时,不需每次重设“RE ”位元。

具体指令介绍:1、清除显示 CODE :功能:清除显示屏幕,把DDRAM 位址计数器调整为“00H ” 2、位址归位 CODE :功能:把DDRAM 位址计数器调整为“00H ”,游标回原点,该功能不影响显示DDRAM 3、位址归位 CODE : 功能:把DDRAM 位址计数器调整为“00H ”,游标回原点,该功能不影响显示DDRAM 功能:执行该命令后,所设置的行将显示在屏幕的第一行。

LCD 12864液晶显示汉字程序

LCD 12864液晶显示汉字程序
0x02,0x01,0x00,0xFF,0x00,0x82,0x41,0x22,0x14,0x09,0x14,0x23,0x40,0xC0,0x40,0x00,
/*--文字: --*/
/*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*--文字: --*/
/*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
/*--文字: --*/
/*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x40,0x20,0x10,0x0E,0x10,0x20,0x3F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,
/*--文字:地--*/
/*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/

J12864中文液晶使用说明

J12864中文液晶使用说明

J12864中文液晶使用说明
一、硬件连接
二、软件设置
1.安装液晶库文件
将液晶库文件拷贝到单片机的编程环境中,以便在程序中调用相关函数。

2.初始化液晶
在程序的初始化函数中,调用液晶库提供的初始化函数,以初始化液晶参数和相关引脚。

三、显示中文字符
然后,在程序中调用液晶库中的函数,以显示中文字符。

通常的调用方式为:
lcd_draw_chinese(x, y, "你好");
函数参数说明:
-x:起始横坐标
-y:起始纵坐标
-"你好":待显示的中文字符
四、显示英文字符和数字
显示英文字符和数字与显示中文字符类似,只是液晶库提供了额外的函数用于显示英文字符和数字。

调用方式如下:
显示英文字符:
lcd_draw_english(x, y, "Hello");
函数参数说明:
-x:起始横坐标
-y:起始纵坐标
- "Hello":待显示的英文字符
显示数字:
lcd_draw_number(x, y, number);
函数参数说明:
-x:起始横坐标
-y:起始纵坐标
- number:待显示的数字
五、显示图形
六、注意事项
2.操纵液晶模块时应轻拿轻放,避免撞击或扭曲。

3.在使用中文液晶时,应注意控制芯片ST7920的工作电压和时序要求。

4.如果需要显示中文字符,首先要将中文字库文件转换成液晶可识别的格式。

5.当在程序中使用液晶库进行液晶控制时,需注意调用顺序和参数的正确性。

总结:。

LCD12864编码显示汉字

LCD12864编码显示汉字

#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define DATA P0 //LCD12864数据线sbit RS=P2^2; // 数据\指令选择sbit RW=P2^1; // 读\写选择sbit EN=P2^0; // 读\写使能sbit CS1=P2^3; // 片选1sbit CS2=P2^4; // 片选2/********************************//* 定义中文字库*//********************************/uchar code Hzk[]={/*-- 文字: 各 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x20,0x10,0x08,0x8F,0xB4,0x44,0x44,0xA4,0x9C,0x04,0x00,0x00,0x00, 0x00,0x02,0x02,0x02,0x01,0x7F,0x42,0x42,0x42,0x42,0x42,0x42,0x7F,0x01,0x03,0x01, 0x00,/*-- 文字: 位 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xC0,0x30,0xEC,0x03,0x2A,0xC8,0x09,0x0A,0x0E,0x08,0xE8,0x48,0x08,0x00, 0x00,0x01,0x00,0x00,0x7F,0x20,0x20,0x20,0x27,0x20,0x30,0x2E,0x21,0x20,0x20,0x20, 0x00,/*-- 文字: 单 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00, 0x00,0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x0B,0x08,0x08, 0x00,/*-- 文字: 机 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00, 0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78, 0x00,/*-- 文字: 爱 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30, 0x00,0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40, 0x00,/*-- 文字: 好 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,0x82,0x82,0xF2,0x8A,0x86,0x82,0x80, 0x00,0x80,0x43,0x22,0x14,0x0C,0x73,0x20,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: 者 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x24,0x24,0x24,0x24,0xA4,0xBF,0x64,0x24,0x34,0x28,0x26,0x24,0x20, 0x00,0x04,0x04,0x04,0x02,0x02,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00, 0x00,/*-- 文字: 你 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08, 0x00,0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08, 0x00,/*-- 文字: 们 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0xF0,0x1C,0x03,0xF0,0x01,0x0E,0x04,0x00,0x04,0x04,0x04,0xFC,0x00, 0x00,0x00,0x00,0x7F,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x3F,0x00, 0x00,/*-- 文字: 辛 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x84,0x84,0x94,0xA4,0xC4,0x85,0x86,0x84,0xC4,0xA4,0x94,0x84,0x84,0x80, 0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x00,0x00, 0x00,/*-- 文字: 苦 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x44,0x44,0x44,0x44,0x5F,0x44,0xF4,0x44,0x44,0x5F,0x44,0x44,0x44,0x44, 0x00,0x00,0x00,0x00,0x7E,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x7E,0x00,0x00,0x00, 0x00,/*-- 文字: 了 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xF2,0x12,0x0A,0x0A,0x06,0x06,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: 希 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x20,0x30,0x30,0xA9,0x6A,0x3A,0x24,0xE4,0x2A,0x29,0x30,0x20,0x20,0x20, 0x00,0x08,0x04,0x02,0x01,0x3F,0x01,0x01,0x01,0xFF,0x01,0x21,0x61,0x3F,0x00,0x00, 0x00,/*-- 文字: 望 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x04,0x04,0xFC,0x85,0x46,0x24,0x04,0x80,0x7E,0x2A,0x2A,0xAA,0xAA,0xFE,0x00, 0x00,0x00,0x40,0x42,0x4A,0x4A,0x4A,0x4A,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x42,0x40, 0x00,/*-- 文字: 大 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20, 0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40, 0x00,/*-- 文字: 家 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x18,0x04,0x14,0x94,0x94,0xD5,0xB6,0x14,0x14,0x94,0x04,0x14,0x0C,0x04, 0x00,0x00,0x29,0x29,0x15,0x14,0x4A,0x89,0x44,0x3F,0x06,0x09,0x09,0x10,0x30,0x10, 0x00,/*-- 文字: 能 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0xB8,0x97,0x92,0x90,0x94,0xB8,0x10,0x00,0x7F,0x48,0x48,0x44,0x74,0x20, 0x00,0x00,0xFF,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x3F,0x44,0x44,0x42,0x72,0x20, 0x00,/*-- 文字: 多 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x20,0x90,0x88,0x54,0x53,0xA2,0x22,0x12,0x0A,0x06,0x00,0x00, 0x00,0x00,0x81,0x89,0x89,0x44,0x44,0x42,0x25,0x29,0x11,0x11,0x09,0x05,0x03,0x01, 0x00,/*-- 文字: 多 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x20,0x90,0x88,0x54,0x53,0xA2,0x22,0x12,0x0A,0x06,0x00,0x00, 0x00,0x00,0x81,0x89,0x89,0x44,0x44,0x42,0x25,0x29,0x11,0x11,0x09,0x05,0x03,0x01, 0x00,/*-- 文字: 交 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x08,0x88,0x48,0x38,0x28,0x09,0x0E,0x0C,0x08,0x98,0x28,0x68,0x48,0x08, 0x00,0x00,0x80,0x80,0x40,0x41,0x22,0x14,0x18,0x0C,0x16,0x23,0x61,0xC0,0x40,0x00, 0x00,/*-- 文字: 流 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04, 0x00,0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40,0x40,0x70, 0x00,/*-- 文字: 学 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10, 0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02, 0x00,/*-- 文字: 习 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x02,0x02,0x0A,0x12,0x22,0x62,0x02,0x82,0x82,0x42,0x02,0xFE,0x00,0x00,0x00,0x00,0x04,0x0C,0x04,0x02,0x02,0x01,0x01,0x00,0x20,0x40,0x80,0x7F,0x00, 0x00,/*-- 文字: 24 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,};/****************************************//* 定义ASCII字库8列*16行*//****************************************/uchar code Ezk[]={/*-- 文字: Q --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F, 0x00,/*-- 文字: Q --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F, 0x00,/*-- 文字: 3 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E, 0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00,/*-- 文字: 5 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E, 0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00,/*-- 文字: 1 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00, 0x00,/*-- 文字: 5 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E, 0x00,/*-- 文字: 2 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30, 0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,/*-- 文字: --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,};/*状态检查,LCD是否忙*/void CheckState(){uchar dat;//状态信息(判断是否忙)RS=0; // 数据\指令选择,D/I(RS)=“L”,表示 DB7∽DB0 为显示指令数据 RW=1; //R/W=“H”,E=“H”数据被读到DB7∽DB0do{DATA=0x00;EN=1; //EN下降源_nop_(); //一个时钟延时dat=DATA;EN=0;dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号)}while(!(dat==0x00));}/*写命令到LCD中*/SendCommandToLCD(uchar com){CheckState();//状态检查,LCD是否忙RS=0; //向LCD发送命令。

AMPIRE12864液晶屏显示汉字

AMPIRE12864液晶屏显示汉字

#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LCD_RS=P3^5;//数据和命令端sbit LCD_EN=P3^4;//使能端sbit LCD_RW=P3^3;sbit CS1=P2^1;sbit CS2=P2^2;uchar code a[]={/*-- 文字: 中--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,/*-- 文字: 国--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,0xFE,0x00,0x00, 0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,0x00,/*-- 文字: 湖--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x21,0x86,0x60,0x90,0x90,0xFF,0x90,0x90,0x00,0xFE,0x92,0x92,0xFE,0x00,0x00,0x04,0xFC,0x03,0x00,0x1F,0x10,0x10,0x90,0x5F,0x30,0x0F,0x40,0x80,0x7F,0x00,0x00,/*-- 文字: 北--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x20,0x20,0x20,0xFF,0x00,0x00,0x00,0xFF,0x40,0x20,0x30,0x18,0x10,0x00,0x10,0x30,0x18,0x08,0x04,0x7F,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00,/*-- 文字: 省--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x10,0x90,0x88,0x86,0xC0,0xC0,0xBF,0xA0,0x90,0x90,0x8A,0x84,0x18,0x00,0x00,0x01,0x01,0x00,0x00,0xFF,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0xFF,0x00,0x00,0x00,/*-- 文字: 襄--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x02,0xA2,0xAE,0xAA,0xFA,0xAE,0xA3,0xA2,0xFE,0xAA,0xAA,0xAE,0x22,0x02,0x00, 0x22,0x22,0x12,0x12,0x0A,0xFF,0x42,0x22,0x06,0x0B,0x12,0x2A,0x66,0xC2,0x42,0x00,/*-- 文字: 阳--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xFE,0x02,0x22,0x5A,0x86,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0xFF,0x04,0x08,0x04,0x03,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,/*-- 文字: 市--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x04,0x04,0x04,0xE4,0x24,0x24,0x25,0xFE,0x24,0x24,0x24,0x24,0xE4,0x04,0x04,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0xFF,0x00,0x00,0x10,0x20,0x1F,0x00,0x00,0x00,/*-- 文字: 襄--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x02,0xA2,0xAE,0xAA,0xFA,0xAE,0xA3,0xA2,0xFE,0xAA,0xAA,0xAE,0x22,0x02,0x00, 0x22,0x22,0x12,0x12,0x0A,0xFF,0x42,0x22,0x06,0x0B,0x12,0x2A,0x66,0xC2,0x42,0x00,/*-- 文字: 樊--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x48,0x28,0xFF,0x28,0x02,0xAC,0x44,0xAA,0x00,0x48,0x28,0xFF,0x28,0x48,0x00,0x02,0x42,0x42,0x23,0x22,0x12,0x0A,0x07,0x0A,0x12,0x22,0x62,0xC3,0x42,0x02,0x00,/*-- 文字: 学--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,/*-- 文字: 院--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,};void xunhuan (uint x){int y,z;for(y=x;y>0;y--)for (z=120;z>0;z--);}void write_c(uchar c) //写指令端{LCD_RW=0;LCD_RS=0;LCD_EN=1;P1=c;LCD_EN=0;xunhuan(1);LCD_EN=1;//xunhuan(5);}void write_d(uchar d)//写数据{LCD_RW=0;LCD_RS=1;LCD_EN=1;P1=d;LCD_EN=0;xunhuan(1);LCD_EN=1;//xunhuan(5);}void pianxuan(screen) //片选{switch(screen){case 0:CS1=0;CS2=0;break;case 1:CS1=1;CS2=0;break;case 2:CS1=0;CS2=1;break;case 3:CS1=1;CS2=1;break;}}void qinping(screen)//清屏,从第一行第一列开始{uint x,y; //页的设置位pianxuan(screen);//选择哪个清屏for(x=0xb8;x<0xc0;x++){write_c(x);//页初始值为0XB8到0xc0共八页write_c(0x40);//列的初始地址为0x40,共64列for(y=0;y<64;y++){write_d(0x00);//选择全部清屏}}}/*LCD显示汉字字库函数*/void lcd_display_hanzi(uchar screen,uchar page,uchar lie,uint mun){ //screen:选择屏幕参数,page:选择页参数0-3,lie列参数0-3,mun:显示第几个汉字的参数int i; //page页其实就是行,是行计数器页指针共九位计数器,高三位为X,低六位为Ymun=mun*32;pianxuan(screen) ; //片选看哪个段write_c(0x40+(lie*16)); //一个汉字占用两个字节write_c(0xb8+(page*2)); //一个字节显示for ( i=0;i<16;i++){write_d(a[mun++]);}write_c(0x40+(lie*16));write_c(0xb8+(page*2)+1);for (i=0;i<16;i++){write_d(a[mun++]);}}void LCD_init(){write_c(0x3f);// 显示开启write_c(0xc0); //显示起始行,从第一位开始,从0到63 write_c(0xb8);// 设置页得地址从0到7write_c(0x40); //设置列的地址,从第一位开始,从0到63 }void main(){LCD_init();qinping(0);lcd_display_hanzi(0,0,0,0); //LCD显示汉字lcd_display_hanzi(0,0,1,1); //LCD显示汉字lcd_display_hanzi(0,0,2,2); //LCD显示汉字lcd_display_hanzi(0,0,3,3); //LCD显示汉字lcd_display_hanzi(1,0,0,4); //LCD显示汉字lcd_display_hanzi(1,0,1,5); //LCD显示汉字lcd_display_hanzi(1,0,2,6); //LCD显示汉字lcd_display_hanzi(1,0,3,7); //LCD显示汉字lcd_display_hanzi(2,1,0,8); //LCD显示汉字lcd_display_hanzi(2,1,1,9); //LCD显示汉字lcd_display_hanzi(2,1,2,10); //LCD显示汉字lcd_display_hanzi(2,1,3,11); //LCD显示汉字while(1);}在protues中的仿真原理图,真实情况下的仿真效果。

12864液晶显示汉字程序

12864液晶显示汉字程序

/*=============================程序说明=============================== 项目名称: 显示汉字作者:创建日期:修改说明:程序说明:(1)CPU 型号:(2)时钟频率:(3)实现功能:(4)程序概述:===================================================================*/ //==========================头文件加载=============================== #include <mega16.h>#include <delay.h>#include "music.h"//===========================端口声明================================ #define LcdRS PORTB.0 //#define LcdRSDDR DDRB.0 //#define LcdRW PORTB.1 //#define LcdRWDDR DDRB.1 //#define LcdEN PORTB.4 //#define LcdENDDR DDRB.4 //#define LcdRST PORTB.6 //#define LcdRSTDDR DDRB.6 //#define LcdIoIn PORTA //#define LcdIoOut PINA //#define LcdIoDDR DDRA //#define LcdIn() LcdIoDDR = 0xff //调整输入输出#define LcdOut() LcdIoDDR = 0x00//=========================全局常量声明============================== //=========================全局变量声明==============================//===========================函数声明================================ void Lcd_init(void);void Lcd_CheckBusy(void);void Lcd_WriteCommand(uint8 com);void Lcd_WriteDat(uint8 Dat);void Lcd_writeStringRom(uint8 Add, uint8 flash String[]);//============================主函数================================= void main()//主函数{//---------------------------系统初始化--------------------------Lcd_init();music_init();Lcd_writeStringRom(0x80, "梁成颂");while(1){}}//===========================功能子函数================================ void Lcd_init(void){LcdRS = 1;LcdRSDDR = 1;LcdRW = 1;LcdRWDDR = 1;LcdEN = 1;LcdENDDR = 1;LcdRST = 1; //LcdRSTDDR = 1;LcdIoIn = 1; //LcdIoDDR = 1;LcdIoIn = 0xff; //LcdIn(); //LcdRST = 0;delay_ms(20);LcdRST = 1;delay_ms(50);Lcd_WriteCommand(0x38); //系统设置delay_ms(1);Lcd_WriteCommand(0x38); //系统设置Lcd_WriteCommand(0x08); //开显示Lcd_WriteCommand(0x01); //清屏Lcd_WriteCommand(0x06); //光标设置Lcd_WriteCommand(0x0c); //开显示Lcd_WriteCommand(0x01); //清屏}void Lcd_CheckBusy(void) //怕忙检测{LcdOut();LcdRS = 0;LcdRW = 1;LcdEN = 1;while((LcdIoOut & 0x80) == 0x80);LcdEN = 0;}void Lcd_WriteCommand(uint8 com) //写指令{Lcd_CheckBusy();LcdIn();LcdRS = 0;LcdRW = 0;LcdEN = 1;LcdIoIn = com;LcdEN = 0;}void Lcd_WriteDat(uint8 Dat) //写指令{Lcd_CheckBusy();LcdIn();LcdRS = 1;LcdRW = 0;LcdEN = 1;LcdIoIn = Dat;LcdEN = 0;}void Lcd_writeStringRom(uint8 Add, uint8 flash String[]) {uint16 i = 0;Lcd_WriteCommand(Add);while(String[i] != '\0'){Lcd_WriteDat(String[i]);i++;}}。

12864液晶模块怎样显示中文

12864液晶模块怎样显示中文
while(usn!=0)
{
us=0xf5;
while (us!=0){us--;};
usn--;
}
MS--;
}
}
void LcmInit( void )
{
WriteCommand(0x30);
WriteCommand(0x03);
WriteCommand(0x0C);
WriteCommand(0x01);
0x80,0x07,0x7F,0x98,0x00,0xFE,0x83,0x81,0xFC,0x1E,0xC0,0x00,0x83,0x00,0x00,0x01,
0x80,0x00,0x0F,0xE0,0x63,0xE1,0xE0,0xE0,0x00,0x07,0x00,0x03,0xC0,0x00,0x00,0x01,
驰宇微12864液晶模块如何显示中文?
经常碰到第一次使用12864液晶模块,问是不是只有带中文字库的才能显示中文?图形点阵12864液晶模块能显示中文吗?怎么显示呢?
首先来说下图形点阵12864液晶模块如何显示中文的问题。在使用中,首先要通过专用的取模软件将文字转换成图片格式,再以图片的形式将取模所获得的文字代码编写在显示程序里面就可以了。
WriteData(*puts);
puts++;
WriteData(*puts);
puts++;
col++;
}
}
void PutBMP(unsigned char *puts)
{
unsigned int x=0;
unsigned char i,j;
WriteCommand(0x34);
WriteCommand(0x36);

12864点阵LCD液晶屏带中文字库详细介绍

12864点阵LCD液晶屏带中文字库详细介绍

12864点阵LCD液晶屏带中文字库详细介绍一、概述二、带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和1 28个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

三、基本特性:(1)、低电源电压(VDD:+3.0--+5.5V)(2)、显示分辨率:128×64点(3)、内置汉字字库,提供8 192个16×16点阵汉字(简繁体可选) (4)、内置 128个16×8点阵字符(5)、2MHZ时钟频率(6)、显示方式:STN、半透、正显(7)、驱动方式:1/32DUTY,1/5BIAS (8)、视角方向:6点(9)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 (10)、通讯方式:串行、并口可选(1 1)、内置DC-DC转换电路,无需外加负压(12)、无需片选信号,简化软件设计(13)、工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃模块接口说明:*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。

*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。

2.2并行接口管脚号管脚名称电平管脚功能描述1 VSS 0V 电源地2 VCC 3.0+5V 电源正3 V0 - 对比度(亮度)调整RS=“H”,表示DB7——DB0为显示数据4RS(CS)H/LRS=“L”,表示DB7——DB0为显示指令数据R/W=“H”,E=“H”,数据被读到DB7——DB05R/W(SID) H/LR/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR6 E(SCLK) H/L 使能信号7 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 PSB H/L H:8位或4位并口方式,L:串口方式(见注释1)16 NC - 空脚17 /RESET H/L 复位端,低电平有效(见注释2)18 VOUT - LCD驱动电压输出端19 A VDD 背光源正端(+5V)(见注释3)20 K VSS 背光源负端(见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机综合实训题目:12864液晶显示专业:电气工程与自动化班级:自动化12-13班*名:***学号:********1.1 基于单片机控制液晶显示系统的设计任务设计一款基于单片机AT89S51液晶滚动显示系统。

1.2 系统设计要求(1)通过单片机的控制使液晶进行滚动显示学校。

(2)通过单片机的控制使液晶进行滚动显示专业。

(3)通过单片机的控制使液晶进行滚动显示姓名。

(4)通过单片机的控制使液晶进行滚动显示学号。

1.3 系统设计思路根据系统设计要求,初步思路如下:(1)通过单片机最小系统的控制使液晶进行滚动显示。

(2)液晶模块采用LCD12864。

(3)系统采用并口连接方式。

(4)通过驱动ST7920控制器使用其自带字库来提取所需文字。

二、液晶显示控制电路与程序方案设计2.1系统设计思路与框图液晶显示器YM12864R 的控制器ST7920 可以显示字母、数字符号、中文字型及自定图形显示,只要一个最小的微处理系统,将液晶显示模块的接口作为I/O 设备直接与之连接,就可以进行控制液晶显示器和数据传输,从而达到理想的显示效果。

使用P3 口给液晶显示器提供控制信号,P0 口给液晶显示器传送数据。

YM12864R 液晶显示器的控制信号有PSB、RS、R/W、E,其中RS、R/W、E分别对应接在AT89C51 的P3.0、P3.1、P3.2、P2.3 上,在本次设计中采用并行接口,故PSB接高电平,而8位数据口DB0~ DB7对应接在P0 口上。

背光灯的电源正极、液晶显示器模块的电源正极以及LCD 驱动电压输入端都接在+5V 的稳压电源上。

背光灯负极和模块的电源负极统一接地。

液晶显示器模块的复位脚连接开关按纽与地相连。

选择按键接高电平,即可实现单片机对液晶显示汉字的控制。

系统设计图框如下图2.1所示,主要由单片机的最小系统AT89C51、YM12864R 液晶显示电路及外围电路构成。

图2.1 系统设计框图2.2框图模块功能描述及技术指标分析时钟振荡器模块:利用晶体本身的特性,可以利用晶振与电容搭建振荡电路与AT89C51引脚XTAL1及XTAL2相连,向单片机提供一个频率定度较高的时钟脉冲,具体连接见原理图。

开关复位电路模块:AT89C51 的复位引脚RST 外接开关复位电路,当电路工作后,闭合开关,只要在RST 引脚上出现2 个机器周期以上的高电平,单片机即可复位。

若RST始终保持高电平,则可对AT89C51 循环复位。

开关复位电路的组成如原理图——电阻R2和开关S1串联后与电容C3并联,然后与R1串联对+5V电压进行分压,R1一端接地另一端接复位信号引脚RST。

AT89C51模块:作为核心组成部件之一,AT89C51单片机给YM12864R液晶显示提供控制信号和进行数据传输,从整体上实现液晶显示控制。

AT89C51片内ROM全都采用Flash ROM,具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

AT89C51片内具有计算机正常运行所必需的部件,片外有很多供扩展用的(总线,并行和串行的输入/输出)管脚,便于扩展,很容易组成一定规模的计算机应用系统。

具有丰富的控制指令,控制功能强。

此外其体积小,功耗低,价格便宜。

YM12864R液晶显示模块:YM12864R液晶显示模块,在其控制芯片ST7920调控下用来显示最终结果。

除显示液晶块外,还包含两个重要外围电路——开关复位电路及电源控制电路,具体如原理图所示。

YM12684的复位引脚RET 外接开关复位电路,当开关闭合时,RET引脚接地,模块复位;当开关断开时,复位信号无效。

此外,外接电源电路利用滑动变阻器分压分别给YM12864R的电源地引脚VSS和LCD驱动电压输入端引脚V0供电。

2.3 电路原理图电路原理图如图2.2所示,其中单片机AT89C51引脚P3.0-P3.2与YM12864R中RS、R/W、E的连接在图中以网络标签的形式给出。

此外,相较于系统设计框图在液晶显示模块控制芯片的调控上,对复位引脚处以简单开关复位电路控制,而电压地VSS及LCD的操作电压以变阻器控制。

图2.2电路原理图2.4 相关芯片介绍AT89C51:AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51引脚图如图2.3,其内部I/O部件包括:1、四个8位通用I/O端口,对应引脚P0、P1、P2和P3;2、两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、一个串行通信接口;(SCON,SBUF)4、一个中断控制器;(IE,IP)图2.3 AT89C51引脚图128X64HZ 引脚说明:引脚号引脚名称方向功能说明1 VSS - 模块的电源地2 VDD - 模块的电源正端3 V0 - LCD 驱动电压输入端4 RS(CS) H/L 并行的指令/数据选择信号;串行的片选信号5 R/W(SID) H/L 并行的读写选择信号;串行的数据口6 E(CLK) H/L 并行的使能信号;串行的同步时钟7 DB0 H/L 数据08 DB1 H/L 数据19 DB2 H/L 数据210 DB3 H/L 数据311 DB4 H/L 数据412 DB5 H/L 数据 513 DB6 H/L 数据614 DB7 H/L 数据715 PSB H/L 并/串行接口选择:H-并行;L-串行16 NC 空脚17 /RET H/L 复位低电平有效18 NC 空脚19 LED_A - 背光源正极(LED+5V)20 LED_K - 背光源负极(LED-OV)逻辑工作电压(VDD):4.5~5.5V电源地(GND):0V128X64引脚图ST7920:ST7920是台湾矽创电子公司生产的中文图形控制芯片,它是一种内置128*64-12汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。

该芯片共内置8192个中文汉字(16*16点阵)、128个字符的ASCII字符库(8*16点阵)及64*256点阵显示RAM(GDRAM)。

为了能够简单、有效地显示汉字和图形,该模块内部设计有2MB的中文字型CGROM和64*256点阵的GDRAM绘图区域;同时,该模块还提供有4组可编程控制的16*16点阵造字空间;除此之外,为了适应多种微处理器和单片机接口的需要,该模块还提供了4位并行、8位并行、2线串行以及3线串行等多种接口方式。

利用上述功能可方便地实现汉字、ASCII码、点阵图形、自造字体的同屏显示,所有这些功能(包括显示RAM、字符产生器以及液晶驱动电路和控制器)都包含在集成电路芯片里,因此,只要一个最基本的微处理系统就可以通过ST7920芯片来控制其它的芯片。

ST7920的主要技术参数和显示特性如下:电源:VDD (-2.7~+5.5V)+5V(内置升压电路,一般无需负压);功耗:正常模式:450μA,睡眠模式:3μA,低功耗模式:30μA;显示内容:128列*64行;显示颜色:黄绿;显示角度:6:00钟直视;LCD类型:STN;与MCU接口:8位并行/3位串行;配置有LED背光显示功能;带有自动启动复位按钮(RESET);在对ST7920读或写时,会用到两个8位的寄存器,一个是数据寄存器DR,另一个是指令寄存器IR。

通过数据寄存器DR可以存取DDRAM、CGRAM、CGROM及IRAM的值。

待存取的目标RAM的地址可通过命令来选择,每次数据寄存器DR的操作应以上次选择的目标RAM为主体来进行读出或写入。

通过RS 和RW的状态可以选择不同的读写模式,具体配置方法如表1所列。

2.5程序主流程图以及子流程图整个程序除主函数外包含以下几个子函数: ST7920初始化、写指令、写数据、汉字显示、延时、按键控制子程序。

ST7920初始化子函数用来完成液晶显示模块的初始化操作并设置显示的方式及必要的参数,为显示操作做好必要的准备;写指令函数向指令寄存器写入不同的命令从而控制液晶显示芯片的显示。

写数据函数向数据寄存器写入数据从而在液晶显示屏上显示相应的或字符字符或此外写指令操作与写数据操作的过程基本一致,区别在于写状态对RS及RW的状态选择不同;汉字显示函数包含设置所要显示的汉字或字符的显示的地址,向显示RAM(DDRAM)写入所要显示汉字区码的高八位及低八位三个操作,从而实现在液晶屏上显示字符的功能;延时函数进行一定时间的等待,代替判断忙标志函数,使得上一个指令可以执行完毕,液晶屏处于空闲状态,以便于执行下一条指令;按键控制子程序是用按键控制单片机从而实现汉字的左右移动;汉字显示主程序包含初始化和调用汉字显示函数显示汉字,判断是或有按键安下而让汉字移动,三个操作,其完成整个汉字送液晶显示的调度。

汉字显示子函数流程、ST7920初始化、写指令、写数据子函数流程、按键子程序流程图分别如图2.4、图2.5、图2.6、图2.7及图2.8所示。

其中,图2.6流程向ST7920写各种操作指令,图2.6流程向ST7920写各种操作数据,区别在于写状态对RS及RW的状态选择不同。

图2.9为汉字显示主流程,其完成整个汉字送液晶显示的调度。

图2.4 汉字显示子函数图2.5 ST7920初始化图2.6 写指令子函数图2.7 写数据子函数按键子程序2.9 汉字显示主流程三、ST7920指令说明ST7920的指令集包括基本指令和扩充指令,其中基本指令有11条,扩充指令有7条。

每一个指令的长度都为8位。

16×8点阵的ASCII字符代码也是8位。

但是16×16点阵中文字符的代码为16位,必须分为两次传送,先传送高8位,再传送低8位。

具体指令如下:1、清除显示清除显示(指令代码为01H)CODE:功能:清除显示屏幕,把DDRAM 位址计数器调整为“00H”位址归位(02H)CODE:功能:把DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM点设定(07H/04H/05H/06H)CODE:功能:设定光标移动方向并指定整体显示是否移动。

I/D=1 光标右移,I/D=0 光标左移。

SH=1 且DDRAM 为写状态:整体显示移动,方向由I/D 决定(I/D=1 左移,I/D=0 右移)SH=0 或DDRAM 为读状态:整体显示不移动显示状态开/关(08H/0CH/0EH/0FH)CODE:功能: D=1;整体显示ON C=1;游标ON B=1;游标位置ON游标或显示移位控制(10H/14H/18H/1CH)CODE:功能:10H/14H:光标左/右移动;18H/1CH:整体显示左右移动,光标跟随移动,AC 值不变功能设定(36H/30H/34H)CODE:功能:DL=1(必须设为1) RE=1;扩充指令集动作 RE=0:基本指令集动作设定CGRAM 位址(40H-7FH)CODE:功能:设定CGRAM 位址到位址计数器(AC)设定DDRAM 位址(80H-9FH)CODE:功能:设定 DDRAM 位址到位址计数器(AC)读取忙碌状态(BF)和位址(BF=1, 状态忙)CODE:功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值写资料到RAMCODE:功能:写入资料到内部的 RAM(DDRAM/CGRAM/TRAM/GDRAM)读出RAM 的值CODE:功能:从内部 RAM 读取资料(DDRAM/CGRAM/TRAM/GDRAM)待命模式(01H)CODE:功能:进入待命模式,执行其他命令都可终止待命模式卷动位址或IRAM 位址选择(02H/03H)CODE:功能:SR=1;允许输入卷动位址 SR=0;允许输入IRAM 位址反白选择(04H\05H)CODE:功能:选择一、三行同时作反白显示,或者二、四行同时作反白显示睡眠模式(08H/0CH)CODE:功能:SL=1;脱离睡眠模式 SL=0;进入睡眠模式扩充功能设定(36H/30H/34H)CODE:功能:RE=1;扩充指令集动作 RE=0;基本指令集动作 G=1;绘图显示ON G=0;绘图显示OFF设定IRAM 位址或卷动位址(40H-7FH)CODE:功能:SR=1;AC5~AC0 为垂直卷动位址 SR=0;AC3~AC0 写ICONRAM 位址设定绘图RAM 位址(80H-FFH)CODE:功能:设定 GDRAM 位址到位址计数器(AC)当ST7920在接收指令前,MCU必须先确认ST7920处于空闲状态。

相关文档
最新文档