AMPIRE12864液晶屏显示汉字
- 格式:doc
- 大小:69.00 KB
- 文档页数:7
程序:#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。
摘要因为汉字本身的特点,显示汉字始终是计算机在我国应用普及的一个障碍。
随着单片机和显示技术的发展,加上人们不满足单片机系统采用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中文字库液晶模块使用说明书第 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并行口显示程序,矩阵键盘接的是P1口,P0口接LCD上DB0~ DB7。
/***************头文件******************************/#define _12864_h/*****包含头文件**************/#include<reg51.h>/********定义I/0口**********/#define LCD12864_DATA P0#define GPIO_KEY P1sbit LCD12864_E = P2^7;sbit LCD12864_RW = P2^5;sbit LCD12864_RS = P2^6;sbit LCD12864_RET= P2^0;sbit LCD12864_PSB =P2^2;/*声明全局变量*/extern unsigned char keyvalue;/******声明全局函数*********/void Delay1ms(unsigned int); //声明延时函数unsigned char KeyDown(void);void BusyChk_12864(void); //声明忙检测函数void WrCom(unsigned char); //声明写入命令函数//unsigned char ReDat(void); //声明读数据函数void WrDat(unsigned char); //声明写数据函数void LcdInit(void); //12864初始化函数void SetAddress(unsigned char ,unsigned char); //设置地址转换void DisplayString(unsigned char ,unsigned char,unsigned char *p);//行显示字符#endif//***************************12864.c文件*****************************//#include"12864.h"#include<reg51.h>#include"string.h"#define LCM_ST7920_FIRST_LINE_ADDRESS 0x80#define LCM_ST7920_SECOND_LINE_ADDRESS 0x90#define LCM_ST7920_THIRD_LINE_ADDRESS 0x88#define LCM_ST7920_FOURTH_LINE_ADDRESS 0x98/*定义全局变量*/unsigned char keyvalue=0;/****************************************************************************** ** 函数名: Delay1ms* 函数功能: 延时函数,延时1ms* 输入: c* 输出 e : 无* 说名: 该函数是在12MHZ晶振下,12分频单片机的延时。
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液晶原理分析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。
AMPIRE 128X64显示器1. LCD接口液晶显示器件【3】(LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。
本课设所选择的LCD是AMPIRE128×64的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口如图3-1所示。
图3-1 LCD电路图表 AMPIRE128×64接口说明表管脚管脚电平说明号1CS1H/L 片选择信号,低电平时选择前64列2CS2H/L片选择信号,低电平时选择后64列3GND0V 逻辑电源地4VCC 逻辑电源正5V0 LCD驱动电压,应用时在VEE与V0之间加一2K可调电阻6RS H/L 数据\指令选择:高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行7R/W H/L 读\写选择:高电平:读数据;低电平:写数据8 E H/L 读写使能,高电平有效,下降沿锁定数据9DB0H/L 数据输入输出引脚10DB1H/L 数据输入输出引脚11DB2H/L 数据输入输出引脚12DB3H/L 数据输入输出引脚13DB4 H/L数据输入输出引脚14DB5H/L数据输入输出引脚15DB6H/L数据输入输出引脚16DB7H/L数据输入输出引脚17RST L复位信号,低电平有效18VOUT-10V LCD驱动电源2. 指令描述(1)显示开/关设置CODE:ArrayR/WRS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0功能:设置屏幕显示开/关。
DB0=H,开显示;DB0=L,关显示。
不影响显示RAM(DD RAM)中的内容。
(2)设置显示起始行CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0功能:执行该命令后,所设置的行将显示在屏幕的第一行。
12864串行显示中文,按键选择显示页面,并且可调数值。
单片机P1口接矩阵按键,其它接口按程序中定义去接只需要接12864LCD上GND VCC RS RW E PSB RST A K程序如下/********************************12864.h头文件*******************************/ #ifndef _12864_h#define _12864_h/*****包含头文件**************/#include<reg51.h>/********定义I/0口**********/#define GPIO_KEY P1sbit LCD12864_SCLK = P2^7; //Esbit LCD12864_SID = P2^5; //RWsbit LCD12864_CS = P2^6; //RSsbit LCD12864_RET= P2^0;sbit LCD12864_PSB =P2^2;/*声明全局变量*/extern unsigned char keyvalue;/******声明全局函数*********/void Delay1ms(unsigned int); //声明延时函数unsigned char KeyDown(void);void LCD_sendbyte(unsigned char);void WrCom(unsigned char);void WrDat(unsigned char);void LcdInit(void);//void Print(unsigned char);void SetAddress( unsigned char,unsigned char );void DisplayString(unsigned char x ,unsigned char y,unsigned char *add);#endif/********************************12864.C*************************************/ #include"12864.h"#include<reg51.h>#include"string.h"//#define LCM_ST7920_FIRST_LINE_ADDRESS 0x80//#define LCM_ST7920_SECOND_LINE_ADDRESS 0x90//#define LCM_ST7920_THIRD_LINE_ADDRESS 0x88//#define LCM_ST7920_FOURTH_LINE_ADDRESS 0x98/*定义全局变量*/unsigned char keyvalue=0;/****************************************************************************** ** 函数名: Delay1ms* 函数功能: 延时函数,延时1ms* 输入: c* 输出 e : 无* 说名: 该函数是在12MHZ晶振下,12分频单片机的延时。