12864的液晶显示程序(无字库)

合集下载

菜鸟学习51单片机之12864液晶(无字库)

菜鸟学习51单片机之12864液晶(无字库)
现在将如何在液晶上面显示字。 一.清屏
/* 选择屏幕来清屏 */
菜鸟学习 51 单片机
while(1)世界
void Lcd12864Clear(uint8 selet)
{
uint8 i,j;
Lcd12864SeletScreen(selet); //选择屏,分左屏和又屏,这个函数在程序中有
for(i = 0;i < 8 ;i++)
二.写入地址
void Lcd12864Point(uint8 page,uint8 x,uint8 y)
{
Lcd12864Write(CMD,0xb8 + page);
//确定页
Lcd12864Write(CMD,0xC0 + x);
//设定起始行
Lcd12864Write(CMD,0x40 + y);
菜鸟学习 51 单片机
while(1)世界
现在开始讲解如何使用,看这篇讲解前,请先到网盘去下载本教 程的仿真图和程序,结合起来更容易明白。
上图是仿真的结果。 在仿真软件中找出的 12864 液晶是没有字库的,对于仿真软件中 液晶的控制和平常的有点不同。一块液晶是由两块 64×64 的液晶显 示模块组合而成。下面是各管脚的介绍。
//有 8 页,循环 8 次
{
Lcd12864Point(i,0,0); //这个就是上面讲到的函数,确定位置
for(j = 0 ;j < 64;j++) //每一块液晶显示模块有 64 列
{
Lcd12864Write(DAT,0x00); //写入 0x00 来清屏
}
}
}
具体的使用如下:初始化函数中调用了清全屏 Lcd12864Clear(3); //清全屏

FYD12864无字库3A中文使用手册

FYD12864无字库3A中文使用手册

FYD12864-0403A 液晶显示模块服务文件实物图片一.基本特性* 电源电压5V* 显示分辨率:128×64点* 显示方式:STN、半透、正显* 驱动方式:1/64DUTY,1/9BIAS* 视角方向:6点* 背光方式:底部黄绿LED背光* 通讯方式:8线并口* 内置DC-DC转换电路,无需外加负压* 工作温度:-10℃ - +60℃ ,存储温度: -20℃ - 70℃二.外形尺寸1.外形尺寸图2.主要外形尺寸项 目 标 准 尺 寸 单 位模 块 体 积 93.0×70.0×12.8 mm定 位 尺 寸 88.0×65.0 mm视 域 71.7×39 mm点 阵 数 128×64 像素点 距 离 0.52×0.52 mm点 大 小 0.48×0.48 mm三.硬件说明1.引脚特性引脚号 引脚名称 电 平 引 脚 功 能 描 述1 VSS 0V 电源地2 VDD +5V 电源电压3 V0 0~-10V LCD驱动负电压,调节LCD对比度4 D/I H/L H:DB0-DB7为显示数据L:DB0-DB7为显示指令数据5 R/W H/L R/W=H,E=H数据被读到DB0-DB7R/W=L,E=H—L,DB0-DB7数据写到IR或DR6 E H/L 使能信号:R/W=L.E信号下降沿锁存DB0-DB7;R/W=H,E=H,DDRAM数据读到DB0-DB77 DB08 DB19 DB210 DB3H/L 8位三态并行数据总线11 DB412 DB513 DB614 DB715 CS1 H/L 片选信号,当CS1=H时,液晶右半屏显示16 CS2 H/L 片选信号,当CS2=H时,液晶左半屏显示17 /RET H/L 复位信号,RET=0有效18 VEE -10V 输出-10V的负电压(单电源供电)19 A +5V背光电源,背光功耗≤300mA20 K 0V2.原理简图背光接线图 3.硬件功能描述1)显示数据RAM(DDRAM)DDRAM(64×8×8 bits)是存储图形显示数据的。

protues中无字库12864汉字显示程序

protues中无字库12864汉字显示程序
if(lie1>63)
lie1=0;
}
page=5;
lie1=0;
for(i=0;i<8;i++)
{
if(i<4)
screen(0);
else
screen(1);
show1616(page,lie1,address);
lie1+=16;
if(lie1>63)
lie1=0;
address+=32;
}
screen(2);
{
uchar i;
page(pa);
lie(li);
for(i=0;i<16;i++)
dat(*(add++));
page(pa+1);
lie(li);
for(i=0;i<16;i++)
dat(*(add++));
}
void main()
{
uchar i,page,lie1;
uchar *address;
}
void line(uchar line)
{
line=line&0x3f;
line=line|0xc0;
com(line);
}
void onoff(uchar onoff)
{
if(onoff==1)
com(0x3f);
else
com(0x3e);
}
void reset()
{
reset1=0;
delay(2);
0x80,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00,

不带字库12864程序实例

不带字库12864程序实例

/******************************************************************** *************************///程序部分开始///******************************************************************** *************************//头文件定义///******************************************************************** *************************/#include <reg52.h> // 包含头文件#include <string.h> //用于指针/******************************************************************** *************************//接口定义///******************************************************************** *************************/#define LCM12864_DB7_DB0 P0 // 定义LCM12864的数据总线sbit LCM12864_RS = P2 ^ 3; // 定义LCM12864的RS控制线sbit LCM12864_RW = P2 ^ 4; // 定义LCM12864的RW控制线sbit LCM12864_E = P2 ^ 2; // 定义LCM12864的E控制线sbit LCM12864_CS1 = P2 ^ 7; // 定义LCM12864的CS1控制线sbit LCM12864_CS2 = P2 ^ 6; // 定义LCM12864的CS2控制线sbit LCM12864_RESET = P2 ^ 5; // 定义LCM12864的RESET控制线sbit LCM12864_LEDK = P2 ^ 0; // 定义LCM12864的LEDK(BLK)控制线/******************************************************************** *************************//数据定义//定义LCM12864的命令字/******************************************************************** *************************/#define LCM12864_DISP_ON 0x3f // 打开LCM12864显示#define LCM12864_DISP_OFF 0x3e // 关闭LCM12864显示#define LCM12864_START_ROW 0xc0 // 显示起始行0,可以用LCM12864_START_ROW+x设置起始行。

12864液晶显示源程序(方法2)

12864液晶显示源程序(方法2)

main函数:*****12864显示********//***作者:曹江*****//*****时间:2008 8 25 ********/#include<Lcd.h>#include<absacc.h>#include "AT89X51.h"//函数名:main() 主函数//函数参数:无//返回值:无void main(){reset(); //调用复位函数dison_off(1); //开lcd显示set_startline(0); // 从第0行开始从上至下滑动显示clear(); //清屏while(1){display();}}lcd.c子函数:#include "AT89X51.h"#include "Lcd.h"#include "data.h"#define uint unsigned int//函数名:delay() 延时函数//函数参数:uint v//返回值:无void delay(uint v){ uint i;while(v!=0){v--;for(i=125;i>0;i--);}}//函数名:busy_check() 检测忙状态左//函数参数:无//返回值:无void busy_check(void){unsigned char busy;while(busy&0x80){busy=0xff;}}//函数名:reset()复位函数//函数参数:无//返回值:无void reset(){P3_2=0; //接lcd复位端口RSTdelay(1);P3_2=1;delay(1);}//函数名:wcode(c,cs1,cs2)写指令函数//函数参数:uchar c, uchar cs1,uchar cs2//返回值:无void wcode(ucharc,uchar cs1,uchar cs2){busy_check();P3_4=cs1;P3_3=cs2;P3_7=0; //接lcd的rs端P3_6=0; //接lcd的rw端P1=c; //lcd数据端d0-d7P3_5=0; //接lcd的e端delay(5);P3_5=1;delay(5);P3_5=0;}//函数名:wdata(c,cs1,cs2)写数据函数//函数参数:uchar c, uchar cs1,uchar cs2//返回值:无void wdata(ucharc,uchar cs1,uchar cs2){busy_check();P3_4=cs1;P3_3=cs2;P3_7=1;P3_6=0;P1=c;P3_5=0;delay(1);P3_5=1;delay(1);P3_5=0;}//函数名:set_startline(i)设置起始行函数//函数参数:uchar i//返回值:无void set_startline(uchar i)//每次加一使其从第0行开始从上至下滑动显示{i=0xc0+i;wcode(i,0,0); //调用写指令函数}//函数名:set_adr(x,y)设置页值,起始列值函数//函数参数:uchar x,uchar y//返回值:无void set_adr(uchar x ,uchar y){x=x+0xb8; //X位址即页page起始0xb8y=y+0x40; //Y位址即列起始0x40wcode(x,0,0);//调用写函数wcode(y,0,0);}//函数名:dison_off(uint o)开关显示函数//函数参数:uint o//返回值:无void dison_off(uchar o){o=o+0x3e;wcode(o,0,0);}//函数名:clear() 清屏函数//函数参数:无//返回值:无void clear(){uchari,loop;for(i=0;i<8;i++){set_adr(i,0);for(loop=0;loop<64;loop++)wdata(0x00,0,0); //左右半屏同时写0}}//函数名:chinese(x,y,n,cs1,cs2) 汉字函数//函数参数:x,y,n,cs1,cs2 注:x,y为页和列号;n为字号;cs1,cs2为左右屏显示//返回值:无void chinese(ucharx,uchary,ucharn,uchar cs1,uchar cs2){ uchari,loop;for(i=0;i<2;i++){set_adr(x+i,y);//一字分上下两页写for(loop=0;loop<16;loop++){wdata(Chinese_Charcter[n][16*i+loop],cs1,cs2);}}}//函数名:display() 显示函数//函数参数:无//返回值:无void display(){uchar i;for(i=0;i<0xff;i++) //汉字上下滚屏显示{set_startline(i);chinese(0,32,0,1,0); //第0行第1个字“长”,屏左边显示chinese(0,48,1,1,0); //第0行第2个字“江”,屏左边显示chinese(0,0,2,0,1); //第0行第3个字“大”,屏右边显示chinese(0,16,3,0,1); //第0行第4个字“学”,屏右边显示chinese(2,16,4,1,0); //第1行第5个字“电”,屏左边显示chinese(2,32,5,1,0); //第1行第5个字“子”,屏左边显示chinese(2,48,6,1,0); //第1行第6个字“信”,屏左边显示chinese(2,0,7,0,1); //第1行第5个字“息”,屏右边显示chinese(2,16,8,0,1); //第1行第7个字“学”,屏右边显示chinese(2,32,9,0,1); //第1行第8个字“院”,屏右边显示chinese(4,32,10,1,0); //第2行第9个字“电”,屏左边显示chinese(4,48,11,1,0); //第2行第10个字“气”,屏左边显示chinese(4,0,12,0,1); //第2行第11个字“工”,屏右边显示chinese(4,16,13,0,1); //第2行第12个字“程”,屏右边显示chinese(4,32,14,0,1); //第2行第13个字“系”,屏右边显示chinese(6,48,15,1,0); //第6行第21个字“曹”,屏左边显示chinese(6,0,16,0,1); //第6行第22个字“江”,屏右边显示delay(10);i+=5;}}data.h:#ifndef _DATA_H_#define _DATA_H_//**********显示文字部分*********////左右分屏写,同页同行内按左到右顺序写extern uchar code Chinese_Charcter[25][32]={{/*-- 文字: 长--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x80,0x80,0x80,0xFF,0xA0,0xA0,0x90,0x90,0x88,0x84,0x82,0x80,0x80,0x80,0x00, 0x00,0x00,0x00,0x00,0xFF,0x40,0x21,0x12,0x04,0x08,0x10,0x30,0x60,0x20,0x00,0x00, },{/*-- 文字: 江--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x60,0x01,0xC6,0x30,0x00,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x00,0x00, 0x04,0x04,0x7E,0x01,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,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 --*/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,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, },{/*-- 文字: 子--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00, 0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, },{/*-- 文字: 信--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0x30,0xFC,0x07,0x0A,0xA8,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00, 0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00, },{/*-- 文字: 息--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0xFC,0x54,0x54,0x56,0x55,0x54,0x54,0x54,0xFC,0x00,0x00,0x00,0x00, 0x00,0x20,0x38,0x01,0x3D,0x41,0x41,0x45,0x59,0x41,0x41,0x71,0x00,0x08,0x30,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, },{/*-- 文字: 电--*//*-- 宋体12; 此字体下对应的点阵为:宽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, },{/*-- 文字: 气--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x10,0x8C,0xA7,0xA4,0xA4,0xA4,0xA4,0xA4,0xA4,0xA4,0x24,0x04,0x04,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x40,0xF0,0x00, },{/*-- 文字: 工--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00, },{/*-- 文字: 程--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00, 0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00, },{/*-- 文字: 系--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00, 0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00, },{/*-- 文字: 曹--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x02,0x02,0xFA,0xAA,0xAA,0xAA,0xFF,0xAA,0xAA,0xFF,0xAA,0xAA,0xAA,0xFA,0x02,0x00, 0x00,0x00,0x00,0x7E,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x7E,0x00,0x00,0x00, },{/*-- 文字: 江--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x60,0x01,0xC6,0x30,0x00,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x00,0x00, 0x04,0x04,0x7E,0x01,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x00, },};#endif仿真效果图:。

无字库12864液晶屏滚动显示程序共17页文档

无字库12864液晶屏滚动显示程序共17页文档

无字库12864液晶屏滚动显示程序[转] #include<reg52.h>#include<intrins.h>#include<absacc.h>#define Lcd_Bus P0 //MCU P0<------> LCM#define Disp_On 0x3f//开显示#define Disp_Off 0x3e//关显示#define Col_Add 0x40//列地址#define Page_Add 0xb8//页地址#define Start_Line 0xc0//起始页sbit cs1=P2^3; //Master chip enablesbit cs2=P2^4; //Slave chip enablesbit Enable=P2^2; // mode Enable singlesbit Di=P2^0; //Data or Instrument Selectsbit RW=P2^1; //Write or Readsbit Lcd_Rst=P2^5; //Lcm reset/*****************************字模,此字体下对应的点阵为:宽x高=16x16*****************************/unsigned char code Chinese_character[][32]={{0x02,0xF2,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xFE,0x12,0x12,0x 12,0xF2,0x02,0x00 ,0x00,0x7F,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x21,0x22 ,0x22,0x22,0x7F,0x00,0x00},/*"西",0*/{0x80,0x90,0x8C,0x84,0x84,0xF4,0xA5,0x86,0x84,0x84,0x84,0x84,0x 94,0x8C,0x84,0x00,0x80,0x80,0x80,0x40,0x47,0x28,0x28,0x10,0x28,0x24,0x43 ,0xC0,0x40,0x00,0x00,0x00},/*"安",1*/{0x00,0x42,0x62,0x5A,0xC6,0x10,0x54,0x54,0x54,0xFF,0x54,0x54,0x 7C,0x10,0x10,0x00,0x40,0x23,0x14,0x08,0x17,0x28,0x29,0x49,0x49,0x7F,0x49 ,0x49,0x49,0x49,0x40,0x00},/*"建",2*/{0x10,0x48,0x47,0xCC,0x54,0x44,0x14,0xE8,0x27,0x24,0x2C,0xF4,0x 04,0x04,0x04,0x00,0x10,0x30,0x10,0x0F,0x88,0x48,0x30,0x0F,0x01,0x06,0x00 ,0x3F,0x40,0x40,0x70,0x00},/*"筑",3*/{0x10,0x12,0x92,0x72,0xFE,0x51,0x91,0x00,0x22,0xCC,0x00,0x00,0x FF,0x00,0x00,0x00,0x04,0x02,0x01,0x00,0xFF,0x00,0x04,0x04,0x04,0x02,0x02 ,0x02,0xFF,0x01,0x01,0x00},/*"科",4*/{0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xC8,0x48,0x48,0x7F,0x48,0x C8,0x48,0x08,0x00,0x01,0x41,0x80,0x7F,0x00,0x40,0x40,0x20,0x13,0x0C,0x0C ,0x12,0x21,0x60,0x20,0x00},/*"技",5*/{0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x 20,0x20,0x20,0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08 ,0x30,0x60,0xC0,0x40,0x00},/*"大",6*/{0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x 57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02 ,0x02,0x02,0x02,0x02,0x00},/*"学",4*/{0x00,0x02,0x1C,0xE8,0x00,0x40,0x60,0x58,0x47,0x22,0x20,0x28,0x 30,0xE0,0x40,0x00,0x02,0x02,0x7F,0x00,0x00,0x00,0x7F,0x21,0x21,0x21,0x21 ,0x21,0x7F,0x00,0x00,0x00},/*"冶",0*/{0x40,0x40,0x20,0x20,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x50,0x 20,0x60,0x20,0x00,0x40,0x40,0x42,0x42,0x4A,0x72,0x42,0x7F,0x42,0x62,0x5A ,0x42,0x42,0x40,0x40,0x00},/*"金",1*/{0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x 02,0x02,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20 ,0x20,0x20,0x20,0x20,0x00},/*"工",2*/{0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0x BF,0x80,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44 ,0x44,0x44,0x44,0x40,0x00},/*"程",3*/{0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x 57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02 ,0x02,0x02,0x02,0x02,0x00},/*"学",4*/{0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x 24,0x0C,0x04,0x00,0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F ,0x81,0x81,0x81,0xF1,0x00},/*"院",5*/{0x10,0x10,0xD0,0xFE,0x50,0x90,0x00,0x10,0x10,0x10,0xD0,0xFE,0x 10,0x10,0x10,0x00,0x08,0x06,0x01,0xFF,0x00,0x01,0x10,0x08,0x04,0x43,0x80 ,0x7F,0x00,0x00,0x00,0x00},/*"材",0*/{0x20,0x24,0xA8,0x70,0xFF,0x68,0xA4,0x20,0x42,0x8C,0x00,0x00,0x FF,0x00,0x00,0x00,0x08,0x06,0x01,0x00,0xFF,0x00,0x01,0x02,0x02,0x03,0x02 ,0x02,0xFF,0x01,0x01,0x00},/*"料",1*/{0x00,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0xF8,0x08,0x 08,0x08,0xF8,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x20,0x40,0x3F,0x00,0x7F,0x10 ,0x10,0x10,0x3F,0x00,0x00},/*"加",2*/{0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x 02,0x02,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20 ,0x20,0x20,0x20,0x20,0x00},/*"工",4*/{0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x 02,0x02,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20 ,0x20,0x20,0x20,0x20,0x00},/*"工",4*/{0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0x BF,0x80,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44 ,0x44,0x44,0x44,0x40,0x00},/*"程",5*/};unsigned char code E[][16]={{0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00},/*"C",0*/{0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x 20,0x00,0x01,0x00},/*"r",1*/{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x 22,0x22,0x3F,0x20},/*"a",2*/{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x 24,0x24,0x19,0x00},/*"s",3*/{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x 18,0x06,0x01,0x00},/*"y",4*/{0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x 20,0x11,0x0E,0x00},/*"b",5*/{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x 20,0x20,0x1F,0x00},/*"o",6*/{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x 18,0x06,0x01,0x00},/*"y",7*/{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x 22,0x22,0x13,0x00},/*"e",8*/};/***********************延时子程序***********************/ void delay(unsigned int k){unsigned int i;unsigned int j;for(i=0;i<k;i++)for(j=0;j<20;j++);}/***********************写命令左***********************/ void write_cmd_1(unsigned char command){cs1=1;cs2=0;Di=0;RW=0;Lcd_Bus=command; //P0口delay(0);Enable=1;delay(0);Enable=0;}/***********************写命令右***********************/ void write_cmd_2(unsigned char command){cs1=0;cs2=1;Di=0;RW=0;Lcd_Bus=command;delay(0);Enable=1;delay(0);Enable=0;}/***********************写数据左***********************/ void write_data_1(unsigned char dis_data){cs1=1;cs2=0;Di=1;RW=0;Lcd_Bus=dis_data;delay(0);Enable=1;delay(0);Enable=0;}/***********************写数据右***********************/ void write_data_2(unsigned char dis_data){cs1=0;cs2=1;Di=1;RW=0;Lcd_Bus=dis_data;delay(0);Enable=1;delay(0);Enable=0;}/***********************清内存左***********************/ void clear_1(void){unsigned char j,k;cs1=1;cs2=0;write_cmd_1(Page_Add+0);write_cmd_1(Col_Add+0);for(k=0;k<8;k++){write_cmd_1(Page_Add+k);for(j=0;j<64;j++)write_data_1(0x00);}}/***********************清内存右***********************/ void clear_2(void){unsigned char j,k;cs1=0;cs2=1;write_cmd_2(Page_Add+0);write_cmd_2(Col_Add+0);for(k=0;k<8;k++){write_cmd_2(Page_Add+k);for(j=0;j<64;j++)write_data_2(0x00);}}/***********************显示汉字16*16左************************/void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n){unsigned char i=0;unsigned char j=0;cs1=1;cs2=0;for(i=0;i<2;i++){write_cmd_1(Page_Add+pag+i);write_cmd_1(Col_Add+col);for(j=0;j<16;j++)write_data_1(Chinese_character[n][16*i+j]);}}/***********************显示汉字16*16右***********************/ void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n){unsigned char i=0;unsigned char j=0;cs1=0;cs2=1;for(i=0;i<2;i++){write_cmd_2(Page_Add+pag+i);write_cmd_2(Col_Add+col);for(j=0;j<16;j++)write_data_2(Chinese_character[n][16*i+j]);}}/***********************显示英文16*8左************************/ void E_disp_1(unsigned char pag,unsigned char col,unsigned char n) {unsigned char i=0;unsigned char j=0;cs1=1;cs2=0;for(i=0;i<2;i++){write_cmd_1(Page_Add+pag+i);write_cmd_1(Col_Add+col);for(j=0;j<8;j++)write_data_1(E[n][8*i+j]);}}/***********************显示英文16*8右***********************/ void E_disp_2(unsigned char pag,unsigned char col,unsigned char n) {unsigned char i=0;unsigned char j=0;cs1=0;cs2=1;for(i=0;i<2;i++){write_cmd_2(Page_Add+pag+i);write_cmd_2(Col_Add+col);for(j=0;j<8;j++)write_data_2(E[n][8*i+j]);}}/***********************液晶屏初始化***********************/ void init_lcd(){Lcd_Rst=0;delay(100);Lcd_Rst=1;delay(100);write_cmd_1(Disp_Off); write_cmd_2(Disp_Off);write_cmd_1(Page_Add+0); write_cmd_2(Page_Add+0);write_cmd_1(Start_Line+0); write_cmd_2(Start_Line+0);write_cmd_1(Col_Add+0); write_cmd_2(Col_Add+0);write_cmd_1(Disp_On); write_cmd_2(Disp_On);}/***********************LCD显示子程序***********************/ void display(void){unsigned char i;for(i=Start_Line;i<0xff;i++){Chinese_disp_1(0,0, 0);Chinese_disp_1(0,16,1);Chinese_disp_1(0,32,2);Chinese_disp_1(0,48,3);Chinese_disp_2(0,0, 4);Chinese_disp_2(0,16,5);Chinese_disp_2(0,32,6);Chinese_disp_2(0,48,7);//西安建筑科技大学Chinese_disp_1(2,16,8);Chinese_disp_1(2,32,9);Chinese_disp_1(2,48,10);Chinese_disp_2(2,0,11);Chinese_disp_2(2,16,12);Chinese_disp_2(2,32,13);//冶金工程学院Chinese_disp_1(4,16,14);Chinese_disp_1(4,32,15);Chinese_disp_1(4,48,16);Chinese_disp_2(4,0,17);Chinese_disp_2(4,16,18);Chinese_disp_2(4,32,19);//材料加工工程E_disp_1(6,24,0);E_disp_1(6,32,1);E_disp_1(6,40,2);E_disp_1(6,48,3);E_disp_1(6,56,4);E_disp_2(6,0,5);E_disp_2(6,8,6);E_disp_2(6,16,7);E_disp_2(6,24,8);//Crasyboyewrite_cmd_1(i);write_cmd_2(i);delay(3000);//调整滚动速度}//delay(60000);}/***********主程序************/ void main(void){ init_lcd();clear_1();clear_2();while(1){display();}}希望以上资料对你有所帮助,附励志名言3条:1、宁可辛苦一阵子,不要苦一辈子。

LCD12864(不带字库)

LCD12864(不带字库)

LCD12864(不带字库)LCD12864(不带字库)其实看了本版的1602教程以后很容易就可以掌握12864了。

刚才看到有网友要12864教程,俺就把博客里以前练习的一个程序弄过来,算作参考吧。

不足之处请见谅。

这个程序浪费了我很多时间,因为我一直没有找到datasheet,12864的型号实在太多了。

为了这个程序,我在网上找了很多相关的例程,但大多都是C语言写的,可惜俺没学过C,用起来不顺手,遂将其转成汇编,但是转后,程序运行不正常,郁闷啊。

好不容易找个汇编的吧,又写得很乱,没有头绪,没有datasheet,看起来很费劲,最后终于找到一个相关的datasheet,这才完成这个程序。

总结一下:与其费力分析别人的程序,不如看datasheet自己写。

下面总结一下datasheet。

→↑←ONE→且看datasheet:12864点阵型LCD简介12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。

可完成图形显示,也可以显示8×4个(16×16点阵)汉字。

在使用12864LCD前先必须了解以下功能器件才能进行编程。

12864内部功能器件及相关功能如下:1. 指令寄存器(IR)IR是用于寄存指令码,与数据寄存器数据相对应。

当D/I=0时,在E信号下降沿的作用下,指令码写入IR。

2.数据寄存器(DR)DR是用于寄存数据的,与指令寄存器寄存指令相对应。

当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。

DR和DDRAM之间的数据传输是模块内部自动执行的。

3.忙标志:BFBF标志提供内部工作情况。

BF=1表示模块在内部操作,此时模块不接受外部指令和数据。

BF=0时,模块为准备状态,随时可接受外部指令和数据。

利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态。

12864无字库液晶显示程序

12864无字库液晶显示程序

{'l',0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},*/
{'m',0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F}, /*
{'b',0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00},
{'c',0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00},
2012 年 07 月 04 日(改)*//
//*****************************************************************************
**********//
#include<reg51.h> #include<intrins.h> #define NOP _nop_() #define DAT P0 #define uint unsigned int #define uchar unsigned char
{'h',0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20},
{'i',0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<math.h>
/***********************************************************
功能:从LCD读取状态位
变量:select用于选择LCD屏的左右,1选择左屏,2选择右屏
***********************************************************/
void ReadStatusLCD(unsigned char select)
{
switch(select)
{
case 1:{LCD_CSA=1;LCD_CSB=0;break;}//左
case 2:{LCD_CSA=0;LCD_CSB=1;break;}//右
default: break;
}
LCD_Data = 0xff;//置位输入口,已实现输入
****************************************/
sbit LCD_RS = P2^5;//控制端口定义
sbit LCD_RW = P2^6;
sbit LCD_E = P2^7;
sbit LCD_CSA = P2^4;//H选通,即高电平有效
sbit LCD_CSB = P2^3;
WriteCommandLCD( 0x3f,1 ,L);
clear_LCD(R);//清左屏
clear_LCD(L);//清右屏
}
/******************************************************************************
功能:设置数据写入或读出的地址,通过页号和列数可以唯一确定一个地址
LCD_RS=0;LCD_RW=1;LCD_E=1;//高电平读取数据
//_nop_(); //若晶振速度高,可在此作延时处理
while(LCD_Data&0x80);//最高位为忙标志,检测忙信号状态
LCD_E=0;
//_nop_(); //若晶振速度高,可在此作延时处理
}
/***********************************************************
功能:清显示RAM区(清屏)
参数:select为驱动控制器选择1为左2为右
********************************************************************************/
void clear_LCD(unsigned char select)
功能:向LCD写入数据
参数:WDLCD待写入的字符数据
select用于选择LCD屏的左右,1选择左屏,2选择右屏
***********************************************************/
void WriteDataLCD(unsigned char WDLCD,unsigned char select)
{
switch(select)
{
case 1:{LCD_CSA=1;LCD_CSB=0;break;}//左
case 2:{LCD_CSA=0;LCD_CSB=1;break;}//右
default: break;
}
ReadStatusLCD(select);//检测忙标志
LCD_RS = 1;LCD_RW = 0;
参数:Column表示列号,Page表示页号
********************************************************************************/
#define LCD_Data P0//LCD数据端口8位
#define R 1
#define L 2
/*****************************************
函数声明
*****************************************/
void ReadStatusLCD(unsigned char select);//从LCD读出忙标志位
{
if(BusyC)ReadStatusLCD(select);//根据需要检测忙
switch(select)
{
case 1:{LCD_CSA=1;LCD_CSB=0;Fra bibliotekreak;}//左
case 2:{LCD_CSA=0;LCD_CSB=1;break;}//右
default: break;
}
LCD_Data = WCLCD;
/****************************************************
LCD12864点阵液晶屏,
通过I/O口直接控制,采用模拟时序控制
****************************************************/
#include"12864.h"
12864.h
#ifndef __12864_H__
#define __12864_H__
#include<reg52.h>
#include <intrins.h>
/***************************************
利用I/O口模拟点阵液晶所需时序
点阵液晶控制端口定义,需根据硬件适当改变
void whiteword(unsigned char Column,unsigned char Page, const unsigned char puts[][16] );//显示16×16点阵的编码
void WhiteWord_Com(unsigned char Column,unsigned char Page,unsigned char C_num,
功能:从LCD读取数据
变量:select用于选择LCD屏的左右,1选择左屏,2选择右屏
***********************************************************/
unsigned char ReadDataLCD(unsigned char select)
void LcdReset(void) ;//初始化函数,完成液晶模块的初始设置
void clear_LCD(unsigned char select);//清屏函数
void Clr_All_Lcd(void);//全清屏函数
void set_XY(unsigned char Column,unsigned char Page);//设置数据写入或读出的地址,通过页号和列数可以唯一确定一个地址
LCD_Data = WDLCD;
LCD_E = 1;
//_nop_(); //若晶振速度高,可在此作延时处理
LCD_E = 0; //下降沿写入数据
//_nop_(); //若晶振速度高,可在此作延时处理
}
/***********************************************************
}
LCD_RW=1;LCD_RS=1;LCD_E = 1;//操作允许脉冲信号,高电平读出
//_nop_(); //若晶振速度高,可在此作延时处理
dataR = LCD_Data;
LCD_E= 0;
return dataR;
}
/***********************************************************
unsigned char ReadDataLCD(unsigned char select);//从LCD读出数据
void WriteDataLCD(unsigned char WDLCD,unsigned char select);//向LED写入数据
void WriteCommandLCD(unsigned char WCLCD , unsigned char BusyC,unsigned char select);//向LCD写入命令
void xy_Write(unsigned char Column,unsigned char Page,unsigned char dataW);//向指定行列写数据
void LcmPutDots(unsigned char Column,unsigned char Page, unsigned char DotByte );//显示点
{
unsigned char dataR;
LCD_Data = 0xff;//置位输入口,已实现输入
switch(select)
{
case 1:{LCD_CSA=1;LCD_CSB=0;break;}//左
case 2:{LCD_CSA=0;LCD_CSB=1;break;}//右
default: break;
WriteCommandLCD( 0xc0,0 ,L);
//_nop_(); //若晶振速度高,可在此作延时处理
}
WriteCommandLCD( 0xc0,1 ,R);//设置显示起始行为第一行,并分别写入左右模块中,检测忙标志
WriteCommandLCD( 0xc0,1 ,L);
WriteCommandLCD( 0x3f,1 ,R);//开显示设置,并分别写入左右模块中
void Clr_All_Lcd(void)
{
clear_LCD(1);
clear_LCD(2);
}
相关文档
最新文档