LCD_ST7565头文件部分

合集下载

ST7565R规格书

ST7565R规格书

81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
SEL1 SEL2 SEL3 VSS COM[31] COM[30] COM[29] COM[28] COM[27] COM[26] COM[25] COM[24] COM[23] COM[22] COM[21] COM[20] COM[19] COM[18] COM[17] COM[16] COM[15] COM[14] COM[13] COM[12] COM[11] COM[10] COM[9] COM[8] COM[7] COM[6] COM[5] COM[4] COM[3] COM[2] COM[1] COM[0] COMS2 SEG[0] SEG[1] SEG[2]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
TEST[6] FR CL DOFB VSS CS1B CS2 VDD RST A0 VSS /WR(R/W) /RD(E) VDD D0 D1 D2 D3 D4 D5 D6 D7 VDD VDD2 VDD2 VSS VSS VSS VSS VOUT VOUT CAP5P CAP5P CAP1N CAP1N CAP3P CAP3P CAP1N CAP1N CAP1P
392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392 392

12864(ST7565P)液晶驱动

12864(ST7565P)液晶驱动

12864(ST7565P)液晶驱动显示概念含有ST7565P 芯片的液晶,是没有文库支持的功能,但是没有就没有啦!液晶可以给我画画,那么它就是好东西了。

液晶的“显示”,液晶的“扫描次序”全部都与CGRAM分配有很大的关系。

我们先了解“扫描次序”吧。

宏观上一副液晶是“64高x 128宽”。

微观上由芯片ST7565P驱动的一副12864 液晶是由“8个8 高x 128宽的页”组成。

至于液晶的“扫描次序”就与4个命令有关系。

上图表示了,当命令为0xA0列扫描是“自左向右”,如果命令式0xA1列扫描是“自右向左”。

总归,这两个命令控制了“列扫描次序”除了控制列扫描的命令以外,当然还有控制“页扫描次序”的命令。

如上图,命令0xC0 控制页扫描是“从下至上”,然而命令0xc8 控制页扫描“又上至下”。

无论页扫描的次序是“从上至下”还是“从下至上”,然而每一页的列填充,都是“低位开始高位结束”关于列扫描就有列填充的问题。

我们知道每“一页”都是由“8 高x 128宽”组成。

换句话说,这里没有“行扫描”的概念,因为“一页”都是由“一个字节数据,列填充128次”成为一页。

如上图中所示。

假设“页扫描次序”是由上至下,填充的值是0x0f,那么经过128次的“列扫描”以后,一页的扫描结果会是如上图所示。

关于ST7565P 芯片,命令,和液晶扫描它们之间的关系而已,我们简单来总结一下:(一)CGRAM分布是由8页组成。

(二)每一页是由一个字节填充和128次列扫描组成。

(三)列扫描次序与命令0xA0 与0xA1有关。

(四)页扫描次序与命令0xC0 与0xC8 有关。

(五)列填充字节的高位低位关系与页扫描命令有关。

(六)不存在行扫描概念。

上图所示是“页扫描”由上至下,“列扫描”由左至右,列填充值是0x0f。

在CGRAM分布方面。

CGRAM 可以说是由8 bits x 1024 words,如果以“页”去分配,也就是说8 page x 8 bits x 128 words ,那么“页”的偏移量就是128。

LCD控制芯片ST7565介绍

LCD控制芯片ST7565介绍

LCD控制芯片ST7565介绍管脚:CS 片选信号线RES 复位信号线默认高电平,低脉冲复位。

A0 数据与命令选择信号线D0~D8 8数据线命令解析:Internal Reset: (0xE2)所有的命令都复位到默认值。

LCD bias set: (0xa2=1/9bias) (0xa3=1/7bias)LCD驱动电压偏置比,1/9bias效果好些。

Display all points ON/OFF: (0xa4=normal)(0xa5=all points on)默认是0xa4,0xa5全屏都是黑。

Display normal/reverse: (0xa6=normal 0xa7=reverse)颜色反转ADC select: (0xa0=normal 0xa1=reverse)屏幕左右反转Common outpur mode select:(0xc0=normal 0xc8=reverse)屏幕上下反正(0xa0和0xc0一个组合)(0xa1和0xc8一个组合)Column address :列地址的设置采用两个命令设置一个起始地址,高四位分别是0和1,低四位分别是地址的高四位和低四位。

如WRITE_LCD(cmd_addr, 0x10); WRITE_LCD(cmd_addr, 0x00);Page address set页地址,也可以叫行地址,设置的命令高4位为B,低四位为地址数据如:WRITE_LCD( cmd_addr,0xB0+Padr);Power control set:这块好像一定要设成0x2F,其他的好像不行,没搞懂,这部分与外部电路连接有关。

Voltage booster,Voltage regulator,Voltage follower ,内外部升压,稳压发生器。

V5 voltage regulator internal resistor ratio set :亮度调节,设置成(0x25)最好Electronic volume register set不知道。

液晶屏ST7565R IC驱动程序演示代码

液晶屏ST7565R IC驱动程序演示代码

液晶屏ST7565 IC驱动程序演示代码/***************一般连接方法:******************/ // C86->H:6800; C86->L:8080;// P/S->H:Parallel; P/S->L:Serial(串口)//连接电容值都为无极性1uF/25V// V0--||--VSS (V0和地之间接一电容)// V1--||--VSS (V1和地之间接一电容)// V2--||--VSS (V2和地之间接一电容)// V3--||--VSS (V3和地之间接一电容)// V4--||--VSS (V4和地之间接一电容)// C2N--||--C2P (C2负和C2正之间接一电容)// C1P--||--C1N (C1正和C1负之间接一电容)// C1N--||--C3P (C1负和C3正之间接一电容)// Vout--||--VSS (Vout和地之间接一电容)//正常工作时,Vout电压约9.0V--11.0V左右/***************电器性能参数描述****************/ //标准工作电压:3.3V//内部频率:20-24KHz,//输入高电平电压: 0.8 x VDD — VDD V//输入低电平电压: VSS — 0.2 x VDD V//Power Supply OFF//显示模式关时标称电流:16 uA//显示模式开时标称电流:19 uA//Power Supply ON//显示模式关时标称电流:90 uA//显示模式开时标称电流:100 uA//睡眠模式电流 0.1 uA//Standby Current 5 uA/************************************************///测试条件为:CPU--A89C51 or A89C2051工作在12MHz条件下//每条指令执行时间均不小于1微妙//请保证您的CPU发送数据时钟频率不能高于驱动IC工作频率!//IC工作频率请看相关IC资料电器特性说明!/************************************************/#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define MAX_X 128 //定义LCD最大宽点阵数#define MAX_Y 64 //定义LCD最大高点阵数#define Startcol 0 //定义LCD首列偏移列数sbit R_S= P3^5;//指令/数据选择信号sbit RES= P3^4;//复位信号sbit W_R= P3^1;//写信号sbit R_D= P3^0;//读信号sbit C_S= P3^7;//片选/****************Serial*************************///串口定义及连接方法://R_D,W_R 接 VDD(3.3V)//D0-D5接地(如果悬空也可以)/*sbit R_S= P3^5;//指令/数据选择信号。

CM12232-27资料 ST7565R规格书

CM12232-27资料 ST7565R规格书

CM12232-27使用手册12232说明书LCD12232点阵屏图形点阵ST7565R控制器CM12232-27 BL W AA-3V (蓝底白字) 一.基本特征:(1)电压:3.0-3.3V(2)STN正视透射模式(3)显式模式:蓝底白字(4)显式角度:6点钟直视(5)驱动方式:1/32Dvty;1/6Bias(6)工作温度(Ta):-10℃~+55℃,存储温度:-20℃~+70℃(7)背光特征:LED背光(白色)(8)模块封装方式:COG(9)接口:并口/串口二.产品参数:三.限定参数:四.平面尺寸图:五.接脚定义:六.原理图七.引脚描述:八.应用举例:九.实物图片:十.程序参考:(6800接口)/********************************************************;;* CM12232-27 : st7565R *;;* MCU type : AT89C52(8K ROM) *;;* *;;* 68 mode *;;********************************************************/#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit CS=P2^1;sbit RES=P2^0;sbit A0=P2^2;sbit RW=P2^3;sbit E=P2^4;void delay(uint t);void busy();void init();void clrram();void font();void displayoff();void frame();void dots_1();void dots_2();void alldisplayon();void write_com(uint para);void write_data(uint para);code col_add[2]={0x10,0x00};code init_com[5]={0xa2,0xa1,0xc8,0x2f,0xaf};/* v0=8.3v 1/6bias reverse com seg */code page_add[4]={0xb0,0xb1,0xb2,0xb3};code da_font1[122]={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,/* */0x42,0x61,0x51,0x49,0x46,0x00,/*2*/0x3E,0x51,0x49,0x45,0x3E,0x00,/*0*/0x00,0x42,0x7F,0x40,0x00,0x00,/*1*/0x42,0x61,0x51,0x49,0x46,0x00,/*2*/0x24,0x3B,0x2A,0x7E,0x2A,0x00,/*年*/0x18,0x14,0x12,0x7F,0x10,0x00,/*4*/0x7F,0x15,0x15,0x15,0x7F,0x00,/*月*/0x42,0x61,0x51,0x49,0x46,0x00,/*2*/0x18,0x14,0x12,0x7F,0x10,0x00,/*4*/0x7F,0x49,0x49,0x49,0x7F,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,0x00,/*0x00,0x00,0x00,0x00, 0x00,0x00 */};code da_font2[122]={0x00,0x00,0x00,0x00,0x00,0x00,/* */0x00,0x00,0x00,0x00,0x00,0x00,/* */0x00,0x00,0x00,0x00,0x00,0x00,/* */0x00,0x00,0x00,0x00,0x00,0x00,/* */0x3F,0x40,0x7F,0x40,0x3F,0x00,/*W*/0x3F,0x40,0x7F,0x40,0x3F,0x00,/*W*/0x3F,0x40,0x7F,0x40,0x3F,0x00,/*W*/0x00,0x00,0x60,0x60,0x00,0x00,/*.*/0x3E,0x41,0x41,0x41,0x22,0x00,/*C*/0x20,0x41,0x41,0x3F,0x01,0x00,/*J*/0x36,0x49,0x49,0x49,0x36,0x00,/*8*/0x3E,0x49,0x49,0x4B,0x30,0x00,/*6*/0x00,0x00,0x60,0x60,0x00,0x00,/*.*/0x3E,0x41,0x41,0x41,0x22,0x00,/*C*/0x3E,0x41,0x41,0x41,0x3E,0x00,/*O*/0x7E,0x01,0x7E,0x01,0x7E,0x00,/*M*/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/* */};code picdata[488]={ /*纵向取模字节倒序*//*-- 宽度x高度=122x32 --*/0xFF,0x01,0x41,0x89,0xD1,0x01,0xB1,0x51,0x31,0x91,0x31,0x51,0xB1,0x01,0x41,0x41,0xF9,0x41,0x41,0xF9,0x01,0xF1,0x01,0x01,0xF9,0x01,0x11,0x31,0x51,0xB1,0x49,0x39,0x49,0x41,0x21,0x11,0x89,0x01,0x01,0x01,0x01,0xF9,0xA9,0xA9,0xA9,0xA9,0xF9,0x01,0x01,0x01,0x51,0x51,0xF1,0x49,0x49,0x01,0x91,0x21,0x01,0xF9,0x01,0x01,0x21,0x21,0xF9,0x21,0x01,0x21,0x21,0xF9,0x21,0x21,0x21,0x01,0x11,0x11,0x91,0xD1,0x71,0x59,0x51,0x51,0xD1,0x11,0x11,0x01,0xF9,0x09,0xC9,0x39,0x01,0xF9,0x29,0x29,0x29,0xF9,0x01,0x01,0x01,0x81,0x41,0x39,0x01,0x81,0x19,0x61,0x81,0x01,0x01,0x01,0x41,0x49,0x49,0x49,0x49,0x49,0x69,0x49,0x09,0xF9,0x01,0xFF,0xFF,0x00,0x08,0x3F,0x00,0x12,0x0A,0x06,0x02,0x3F,0x06,0x0A,0x12,0x00,0x08,0x08,0x27,0x24,0x10,0x0F,0x00,0x1F,0x00,0x00,0x3F,0x00,0x11,0x09,0x05,0x3F,0x05,0x29,0x21,0x12,0x12,0x09,0x04,0x00,0x00,0x3E,0x2A,0x2A,0x3E,0x00,0x3E,0x2A,0x2A,0x2A,0x3E,0x00,0x0C,0x03,0x3F,0x01,0x02,0x04,0x04,0x05,0x04,0x3F,0x02,0x00,0x22,0x22,0x3F,0x01,0x20,0x23,0x15,0x09,0x15,0x23,0x20,0x00,0x02,0x01,0x00,0x3F,0x0A,0x0A,0x0A,0x2A,0x3F,0x00,0x00,0x00,0x3F,0x04,0x04,0x07,0x00,0x3F,0x21,0x17,0x09,0x15,0x22,0x00,0x01,0x20,0x30,0x28,0x26,0x21,0x14,0x18,0x30,0x01,0x01,0x00,0x00,0x00,0x0F,0x09,0x09,0x09,0x0F,0x20,0x20,0x3F,0x00,0xFF,0xFF,0x00,0x10,0xE2,0x34,0x80,0xAC,0x94,0x8C,0xE4,0x8C,0x94,0xAC,0x00,0x10,0x10,0xFE,0x10,0x10,0xFE,0x00,0xFC,0x00,0x00,0xFE,0x00,0x44,0x4C,0x54,0xEC,0x52,0x4E,0x52,0x90,0x88,0x44,0x22,0x00,0x00,0x80,0x80,0xBE,0xAA,0x2A,0xAA,0xAA,0xBE,0x80,0x80,0x00,0x14,0xD4,0xFC,0x52,0x92,0x00,0x24,0x48,0x00,0xFE,0x80,0x00,0x88,0x88,0xFE,0x48,0x00,0xC8,0x48,0x7E,0x48,0xC8,0x08,0x00,0x84,0x44,0x24,0xF4,0x9C,0x96,0x94,0x94,0xF4,0x04,0x04,0x00,0xFE,0x02,0x32,0xCE,0x00,0xFE, 0x4A,0xCA,0x4A,0x7E,0x80,0x00,0x40,0x20,0x10,0x0E,0x80,0x60,0x06,0x18,0x20,0x40, 0x40,0x00,0x10,0x12,0xD2,0x52,0x52,0x52,0xDA,0x12,0x02,0xFE,0x00,0xFF,0xFF,0x80, 0x82,0x8F,0x80,0x84,0x82,0x81,0x80,0x8F,0x81,0x82,0x84,0x80,0x82,0x82,0x89,0x89,0x84,0x83,0x80,0x87,0x80,0x80,0x8F,0x80,0x84,0x82,0x81,0x8F,0x81,0x8A,0x88,0x84, 0x84,0x82,0x81,0x80,0x80,0x8F,0x8A,0x8A,0x8F,0x80,0x8F,0x8A,0x8A,0x8A,0x8F,0x80, 0x83,0x80,0x8F,0x80,0x80,0x81,0x81,0x81,0x81,0x8F,0x80,0x80,0x88,0x88,0x8F,0x80,0x88,0x88,0x85,0x82,0x85,0x88,0x88,0x80,0x80,0x80,0x80,0x8F,0x82,0x82,0x82,0x8A, 0x8F,0x80,0x80,0x80,0x8F,0x81,0x81,0x81,0x80,0x8F,0x88,0x85,0x82,0x85,0x88,0x80,0x80,0x88,0x8C,0x8A,0x89,0x88,0x85,0x86,0x8C,0x80,0x80,0x80,0x80,0x80,0x83,0x82, 0x82,0x82,0x83,0x88,0x88,0x8F,0x80,0xFF,};void init(){uint i;CS=0;RES=0;delay(5);RES=1;delay(5);for(i=0;i<5;i++){write_com(init_com[i]);}}void clrram(){uint i,j;for(i=0;i<4;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);for(j=0;j<122;j++){}}}void p(){uint i,k=0,j;clrram();for(j=0;j<4;j++){write_com(page_add[j]);write_com(col_add[0]);write_com(col_add[1]);for(i=0;i<122;i++){write_data(picdata[k]);k++;}}}void font(){uint i;clrram();write_com(0xb1);write_com(col_add[0]);write_com(col_add[1]);for(i=0;i<122;i++){write_data(da_font1[i]);}write_com(0xb2);write_com(col_add[0]);write_com(col_add[1]);for(i=0;i<122;i++){}}void alldisplayon(){uint i,j;clrram();for(i=0;i<4;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);for(j=0;j<122;j++){write_data(0xff);}}}void displayoff(){write_com(0xac);write_com(0xae);write_com(0xa5);}void frame(){uint i,j;write_com(0xa4);write_com(0xad);write_com(0x00);write_com(0xaf);clrram();write_com(page_add[0]);write_com(col_add[0]);write_com(col_add[1]);write_data(0xff);for(i=0;i<120;i++){write_data(0x01);}write_data(0xff);for(i=1;i<3;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);write_data(0xff);for(j=0;j<120;j++){write_data(0x00);}write_data(0xff);}write_com(page_add[3]);write_com(col_add[0]);write_com(col_add[1]);write_data(0xff);for(i=0;i<120;i++){write_data(0x80);}write_data(0xff);}void dots_1(){uint i,j;clrram();for(i=0;i<4;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);for(j=0;j<61;j++){write_data(0x55);write_data(0xaa);}}}void dots_2(){uint i,j;clrram();for(i=0;i<4;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);for(j=0;j<61;j++){write_data(0xaa);write_data(0x55);}}}void h1(){uint i,j;clrram();for(i=0;i<4;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);for(j=0;j<122;j++){write_data(0x55);}}}void h2(){uint i,j;clrram();for(i=0;i<4;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);for(j=0;j<122;j++){write_data(0xaa);}}}void c1(){uint i,j;clrram();for(i=0;i<4;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);for(j=0;j<61;j++){write_data(0xff);write_data(0x00);}}}void c2(){uint i,j;clrram();for(i=0;i<4;i++){write_com(page_add[i]);write_com(col_add[0]);write_com(col_add[1]);for(j=0;j<61;j++){write_data(0x00);write_data(0xff);}}}void write_com(uint para){busy();A0=0;RW=0;P0=para;E=1;E=0;}void write_data(uint para) {busy();A0=1;RW=0;P0=para;E=1;E=0;}void busy(){uint temp;A0=0;RW=1;do{P0=0xff;E=0;delay(0);E=1;temp=P0;}while((temp&0x80)==1); }void delay(uint t){register int i,j;for(i=0;i<t;i++)for(j=0;j<125;j++);}main(){init();IE=0x81;while(1){p();delay(800);font();delay(500);alldisplayon();delay(500);displayoff();delay(500);frame();delay(500);dots_1();delay(500);dots_2();delay(500);h1();delay(500);h2();delay(500);c1();delay(500);c2();delay(500);}}void innt0() interrupt 0{do{}while(1);}。

DST7565驱动程序(HTG12864液晶,基于STM32F103RBT6)oc1

DST7565驱动程序(HTG12864液晶,基于STM32F103RBT6)oc1

前些天拿到客户的HTG12864,用的是ST7565驱动的,昨天闲来没事,把驱动给弄出来了,效果还不错,和我之前用的13164差不多,不过HTG12864最大的特点就是小,只有1寸左右。

废话不说了,传上驱动头文件代码:#ifndef __ST7565_H__#define __ST7565_H__#include "font.h"//-----------------LCD端口定义----------------#define LCD_CS (1<<0)//片选#define LCD_RST (1<<1)//复位#define LCD_A0 (1<<2)//数据/命令选择#define LCD_CLK (1<<3)//时钟#define LCD_SDA (1<<4)//数据#define LCD_SDA_SET(x) GPIOC->ODR=(GPIOC->ODR&~LCD_SDA)|(x ? LCD_SDA:0)#define LCD_CLK_SET(x) GPIOC->ODR=(GPIOC->ODR&~LCD_CLK)|(x ? LCD_CLK:0)#define LCD_A0_SET(x)GPIOC->ODR=(GPIOC->ODR&~LCD_A0) |(x ? LCD_A0:0)#define LCD_RST_SET(x) GPIOC->ODR=(GPIOC->ODR&~LCD_RST)|(x ?LCD_RST:0)#define LCD_CS_SET(x)GPIOC->ODR=(GPIOC->ODR&~LCD_CS) |(x ? LCD_CS:0)//LCD写入数据/命令//data:要写入的数据//cmd :1,写入数据;0,写入命令void LCD_Write_Byte(unsigned char data,unsigned char cmd) {unsigned char i;LCD_CS_SET(0);//CS=0LCD_A0_SET(cmd);//cmd=1,数据;cmd=0,命令for(i=0;i<8;i++){LCD_CLK_SET(0); //SCL=0if(data&0x80)LCD_SDA_SET(1);//SI=1else LCD_SDA_SET(0);//SI=0LCD_CLK_SET(1); //SCL=1data<<=1;}LCD_CS_SET(1);//CS=1;}/***************************------液晶显示格式--------(0,0)********************************************************************************************************************************(7,127)****************************///LCD设置地址//pos_x:x坐标:0~127//pos_y:y坐标(页坐标) :0~7 (每页8行)void LCD_Set_XY(unsigned char pos_x,unsigned char pos_y){LCD_Write_Byte(0xB0|(7-pos_y),0);//Y坐标写入,页地址写入(Row)LCD_Write_Byte(0x10|(pos_x>>4),0);// X坐标写入(高四位) LCD_Write_Byte(0x00|(pos_x&0x0f),0);// 低四位}//清屏函数void LCD_Clr(void){unsigned char i,n;for(i=0;i<8;i++){LCD_Set_XY(0,i);for(n=0;n<128;n++)LCD_Write_Byte(0,1);}}//在指定位置显示一个字符//x:0~127//y:0~3//chr :要显示的字符//size:大小,12*12/16*16void Show_char(unsigned char x,unsigned char y,unsigned char chr,unsigned char size){unsigned char t;LCD_Set_XY(x,2*y);//坐标写入for(t=0;t<size;t++){if(t==size/2) //显示下一半{LCD_Set_XY(x,2*y+1);//坐标写入}if(size==16)LCD_Write_Byte(asc2[chr-32][t],1);//16*16大小else LCD_Write_Byte(asc2_1206[chr-32][t],1);//12*12大小 }}//在指定位置显示一个字符//x:0~127//y:0~3//chr :要显示的字符串,支持自动换行//size:大小,12*12/16*16void Show_str(unsigned char x,unsigned char y,unsigned char size,const unsigned char * str){while(*str!='\0'){Show_char(x,y,*str,size);//写一个字符str++;x+=size/2;if(x>128-size/2){x=0;y++;} //自动换行if(y>3){LCD_Clr();y=0;} //整行}}//显示汉字void Chi_Show(unsigned char x,unsigned char y){unsigned char t,i;for(t=0;t<7;t++){if(x>112)//越界了{y++;x=0;if(y>3){LCD_Clr();y=0;}//刷屏LCD_Set_XY(x,2*y);//坐标写入}LCD_Set_XY(x,2*y);//坐标写入for(i=0;i<16;i++)LCD_Write_Byte(chinese_font[2*t][i],1); LCD_Set_XY(x,2*y+1);//坐标写入for(i=0;i<16;i++)LCD_Write_Byte(chinese_font[2*t+1][i],1);x+=16;}}//初始化液晶void LCDInit(void){RCC->APB2ENR|=1<<4;//先使能外设IO PORTC时钟GPIOC->CRL&=0XFFF00000; //PC0-4GPIOC->CRL|=0X00033333; //PC0-4 推挽输出GPIOC->ODR|=0X001F;//全部输出高LCD_RST_SET(0);delay_ms(100);LCD_RST_SET(1);delay_ms(100);LCD_Write_Byte(0xe2,1);delay_ms(100);LCD_Write_Byte(0x84,0);LCD_Write_Byte(0x07,0);LCD_Write_Byte(0x82,0);LCD_Write_Byte(0x03,0);LCD_Write_Byte(0x85,0);LCD_Write_Byte(0x0a,0); LCD_Write_Byte(0xa0,0); LCD_Write_Byte(0xc0,0); LCD_Write_Byte(0xa6,0); LCD_Write_Byte(0x26,0); LCD_Write_Byte(0x81,0); LCD_Write_Byte(0x0f,0); LCD_Write_Byte(0x2f,0); LCD_Write_Byte(0xa4,0); LCD_Write_Byte(0xaf,0); LCD_Clr();//清屏}#endif。

驱动ST7565显示汉字以及画点

驱动ST7565显示汉字以及画点

驱动ST7565显示汉字以及画点ST7565是比较常见的128*64的LCD,我这里使用模拟SPI来写ST7565,ST7565是“纵向8点下高位”类型的LCD,难点在于页(Y轴)。

如下图,这里Y=6一个8位数据对应LCD纵向的8个格子,例如:要在Y=6地方亮一个点,把二进制0100 0000写到ST7565里,实际在纵向倒数第二个点显示一个点。

理论解释完了,接下来看看本例中实现的结果,看下图:接下来贴上代码,由于每个厂家的ST7565的屏的接线都会有区别,所以这里就不给出写ST7565的实现,SPI_Write()就是写ST7565函数,通过LCD_CMD/LCD_CANVAS来区分是写控制命令还是图像数据。

这里的字模来自Lcmzimo字模工具。

view plaincopy to clipboardprint?1//汉字 16*16 的定义2unsigned int CHINESE_16_16[] = {32/*数据总数*/,16/*宽*/,16/*高*/};3//汉字 24*24 的定义4unsigned int CHINESE_24_24[] = {72/*数据总数*/,24/*宽*/,24/*高*/};5//ASCII 16*8 的定义6unsigned int ASCII_W8_H16[] = {16/*数据总数*/,8/*宽*/,16/*高*/};7//ASCII 24*12 的定义8unsigned int ASCII_W12_H24[] = {36/*数据总数*/,12/*宽*/,24/*高*/};9// *****************************************************10//画字函数11//参数x:X轴坐标,0~12712//参数y_pag:纵向页数,0~7,每一页等于8个纵向像素13//参数font:font的样式:{数据总数,高,宽}14//参数p:字模数组,当p=LCD_CLEAR,则是清除指定区域15// *****************************************************16void LCD_PutChar(unsigned char x,unsigned char y_pag,unsigned int*font,unsigned char *p)17{18 unsigned int size=font[0];//整个数组的大小19 unsigned int width=font[1];//字符的宽度20 //unsigned int height=font[2]; 留着以后有用21 unsigned int pagindex=1;//记录LCD页指针去到的页数22 unsigned int nextpage = width;2324 unsigned char i,pag,colh,coll;25 pag = y_pag+0xb0;26 colh = x>>4; /*取y_pag的高4位*/27 colh = colh | 0xf0;28 colh = colh & 0x1f;29 coll = x & 0x0f; /*取y_pag的低4位*/30 SPI_Write(colh,LCD_CMD);31 SPI_Write(coll,LCD_CMD);32 SPI_Write(pag,LCD_CMD);3334for (i=0;i<size;i++)35 {36if (i == nextpage)//当前页画完,则跳转到下一页继续画。

st7565驱动

st7565驱动

#define Display_Sta_line 0x40 //显示RAM的行地址 0x40为第0行
#define Page0 0xb0 //第0页地址
#define Page_max 0xb8 //最大页地址,第8页
#define Column_h 0x10 //列地址(高位)
#define Display_all_OFF 0xa4 //不全屏显示
#define Display_all_ON 0xa5 //全屏显示
#define LCD_RESET 0xe2 //LCD软件复位
#define Com_sel_nor 0xc0 //第0行在屏幕下方
col_l=col&0x0f;
LCD_WRITE_COM(col_h);
LCD_WRITE_COM(col_l);
LCD_WRITE_COM(page);
for(i=0;i<6;i++)
{
LCD_WRITE_DATA(p[i]);
}
}
//============写一字符串(字符大小8*6)================
for(i=0;i<PAGE_NUM;i++)
{
LCD_CLR_PAGE(i,pad);
}
}
//============写一个字符8*6================
//入口:页地址,字符列号,字符数组指针
//返回:无
//编写日期:2009-5-19
//最后修改:2009-5-19
#define WR1 P5OUT |= WR
#define Ao0 P5OUT &= ~Ao

ST7565中文指令

ST7565中文指令

ST7565使用笔记芯片简介ST7565是一款点阵液晶驱动芯片,它具有并行与串行(SPI )两种接口,通过P/S 引脚选取:P/S=1为并行,P/S=0为串行。

这两种接口的控制信号如下:同时它具有两种接线方式:6800和8080。

通过C86引脚选取:C86=1为6800,C86=0为8080。

这两种方式的控制时序有所不同:其时序如下:复位初始化参数:P DFC r e a te !3T lwww.sc a n so f t .c om控制命令需要重点说明的是计算V0的这个命令。

该命令具体细节见下:P DFC r e a te !www.sc a n so f t .c o该命令的主要作用是计算LCD 的V0,以调节显示亮度;当增加V0以增加用户程序需要点亮点阵得亮度时,程序未要求点亮部分得亮度也相应增加。

当设置V0过大时,则显示屏显示颜色将会很深,包括程序未让其显示部分,效果就像全屏点亮一样,显示对比度很低。

当设置V0过小时,显示又会很暗,以至于显示效果不好。

所以一定要通过试验以调节V0以适合当前得LCD 。

注意:同一款LCD 驱动芯片,当玻璃片、显示区域大小等不一样时,V0设置的最佳值也将不一样,因此只有通过不断的试验以得到最佳值。

在使用ST7565时的处理流程:根据其初始化流程可知,只要对其中几项进行设置,其它保持默认值就可以了,需要设置的是:①默认的是关闭,当初始化的时候应设置成开启。

②这与外部电路连接有关。

③这与硬件连接有关。

④P DFC r e a te !3T r i a lwww.sc a n so f t .c om在使用过程中,如果向ST7565写数据,其列地址会自动增加。

当一页的数据写完后,需要设置下一页的地址,在新的一页中要重新设定列地址,即改变页地址后列地址保持不变,并不自动设置为起始列,比如,如果换页前(假设是第一页)显示列地址为10,此时发送页地址设置命令(假设设置为第二页),则此时发送的数据将从第二页第十列开始显示。

LCD_ST7565函数部分

LCD_ST7565函数部分
{
w_cmd( page ); //设置页地址
w_cmd( 0x10 ); //设置段地址高位 。其实在没写入一个数据后列值都会自动加1,但换页时页值还是会以这种方式运行。所以换页时要初始化列值。
w_cmd( 0x00 ); //设置段地址低位
delay_ms(5);
}
/************** 写数据 函数 ***************/
void w_dat(uchar dat)
{
data = dat;
NOP; //空函数延时。由于延时时间比较短,所以用空函数延时。
{
LCD_Reset(); //LCD复位。
w_cmd(0xA1); //LCD偏执设置
w_cmd(0xA0); //ADC 选择。正常模式。
w_cmd(0xC0); //输出模式选择。正常模式。
A0 = 1; //存储器选择。1 表示数据RAM,0 表示控制ROM
RW = 0; //读写选择。0 表示写,1 表示读。
NOP;
E = 1; //读写使能。数据会在读写使能的电平下跳沿写入ST7565中。
_nop_();
w_cmd( page );
w_cmd( 0x10 + ( byte3 >> 4 ) );
w_cmd( 0x00 + ( byte3 &0x0f ) );
for ( i = 0; i < 16; i++ )
/*************** 显示测试 函数 ***************/
void Test( uchar DT) //功能:在全屏中的每一列都写入同一个数据,DT为待写入的数据

St7565P使用说明书

St7565P使用说明书

STSitronixST7565P65 x 132 Dot Matrix LCD Controller/DriverVer 1.3 1/71 2004/4/7F E A T U R E Sz Direct display of RAM data through the display data RAM.z RAM capacity : 65 x 132 = 8580 bits zDisplay duty selectable by select pin 1/65 duty : 65 common x 132 segment 1/49 duty : 49 common x 132 segment 1/33 duty : 33 common x 132 segment 1/55 duty : 55 common x 132 segment 1/53 duty : 53 common x 132 segmentzHigh-speed 8-bit MPU interface (The chip can be connected directly to the both the 80x86 series MPUs and the 68000 series MPUs) /Serial interfaces are supported. z Abundant command functionsDisplay data Read/Write, display ON/OFF, Normal/ Reverse display mode, page address set, display start line set, column address set, status read, display all points ON/OFF, LCD bias set, electronic volume, read/modify/write, segment driver direction selects, power saver, static indicator, common output status select, Vo voltage regulation internal resistor ratio set. z Static drive circuit equipped internally for indicators. (1 system, with variable flashing speed.)zLow-power liquid crystal display power supply circuit equipped internally.Booster circuit (with Boost ratios of 2X/3X/4X/5X/6X , where the step-up voltage reference power supply can be input externally).High-accuracy voltage adjustment circuit (Thermal gradient –0.01%/°C ) V 0voltage regulator resistors equipped internally, V 1to V SS voltage divider resistors equipped internally, electronic volume function equipped internally, voltage follower.z CR oscillator circuit equipped internally (external clock can also be input)zExtremely low power consumption Operating power when the built-in power supply is used (an example) 60uA (V DD – V SS = V DD2 – V SS =3.0 V, Quad voltage, V 0– V SS = 11.0 V).Conditions: When displays pattern OFF and the normal mode is selected.zPower supply operate on the low 1.8 voltage Logic power supplyV DD – V SS = 1.8V to 3.3 V (+10% Range)Boost reference voltage: V DD2 – V SS = 2.4V to 3.3V Booster maximum voltage limited V OUT = 16.0V (+10% Range)Liquid crystal drive power supply: V 0– V SS = 4.0V to 13.0 Vz Wide range of operating temperatures: –40 to 85°C z CMOS processz Shipping forms include bare chip and TCP.zThese chips not designed for resistance to light or resistance to radiation.G E N E R A L D E S C R I P T I O NThe ST7565P is a single-chip dot matrix LCD driver that can be connected directly to a microprocessor bus. 8-bit parallel or serial display data sent from the microprocessor is stored in the internal display data RAM and the chip generates a LCD drive signal independent of the microprocessor. Because the chips in the ST7565P contain 65x132 bits of display data RAM and there is a 1-to-1 correspondence between the LCD panel pixels and the internal RAM bits, these chips enable displays with a high degree of freedom. The ST7565P chips contain 65 common output circuits and 132 segment output circuits, so that a single chip can drive a 65x132 dot display (capable of displaying 8 columnsx4 rowsof a 16x16 dot kanji font).Moreover, the capacity of the display can be extended through the use of master/slave structures between chips. The chips are able to minimize power consumption because no external operating clock is necessary for the display data RAM read/write operation. Furthermore, because each chip is equipped internally with a low-power LCD driver power supply, resistors for LCD driver power voltage adjustment and a display clock CR oscillator circuit, the ST7565P can be used to create the lowest power display system with the fewest components for high-performance portable devices.PART NO. V RS temperature gradientV RS range ST7565P-0.01%/°C2.1V ̈́0.03V0 7Ra’ and Rb’ is set to 5 uA,The Reset CircuitWhen the /RES input comes to the “L” level, these LSIs return to the default state. Their default states are as follows:1. Display OFF2. Normal display3. ADC select: Normal (ADC command D0 = “L”)4. Power control register: (D2, D1, D0) = (0, 0, 0)5. Serial interface internal register data clear6. LCD power supply bias rate:1/65 DUTY = 1/9 bias1/49,1/55,1/53 DUTY = 1/8 bias1/33 DUTY = 1/6 bias7. All-indicator lamps-on OFF (All-indicator lamps ON/OFF command D0 = “L”)8. Power saving clear9. V0voltage regulator internal resistors Ra and Rbseparation10. Output conditions of SEG and COM terminalsSEG=VSS , COM=VSS11. Read modify write OFF12. Static indicator OFF Static indicator register : (D1, D2) =(0, 0)13. Display start line set to first line14. Column address set to Address 015. Page address set to Page 016. Common output status normal17. V0 voltage regulator internal resistor ratio set mode clear18. Electronic volume register set mode clear Electronicvolume register :(D5,D4,D3,D2,D1,D0)=(1,0.0,0,0,0) 19. Test mode clear On the other hand, when the reset command is used, the above default settings from 11 to 19 are only executed. When the power is turned on, the IC internal state becomes unstable, and it is necessary to initialize it using the /RES terminal. After the initialization, each input terminal should be controlled normally.Moreover, when the control signal from the MPU is in the high impedance, an over current may flow to the IC. After applying a current, it is necessary to take proper measures to prevent the input terminal from getting into the high impedance state.If the internal liquid crystal power supply circuit is not used on ST7565P,it is necessary that /RES is “H” when the external liquid crystal power supply is turned on. This IC has the function to discharge V0when /RES is “L,” and the external power supply short-circuits to V ss when /RES is “L.” While /RES is “L,” the oscillator and the display timing generator stop, and the CL, FR, FRS and /DOF terminals are fixed to “H.” The terminals D0 to D7 are not affected. The V SS level is output from the SEG and COM output terminals. This means that an internal resistor is connected between V SS and V0.When the internal liquid crystal power supply circuit is not used on other models of ST7565P series, it is necessary that /RES is “L” when the external liquid crystal power supply is turned on.While /RES is “L,” the oscillator works but the display timing generator stops, and the CL, FR, FRS and /DOF terminals are fixed to “H.” The terminals D0 to D7 are not affected.Ver 1.3 41/71 2004/4/7。

TOPWAY-ST7565(67)-AppNote-v0.2

TOPWAY-ST7565(67)-AppNote-v0.2

I/O 寻址方式 MC6800 时序下的驱动函数:
#define LCDBUS P1
sbit A0
= P3^6;
sbit _CS = P3^4;
sbit _RES = P3^5;
sbit RW
= P3^7;
sbit E
= P3^3;
1、指令代码写入函数
void SdCmd(uchar Command)
二、 I/O 寻址方式接口电路及驱动程序
图五 I/O 寻址方式电路示意图 I/O 寻址方式是 MPU 通过 I/O 并行接口连接模块,模块接口采用了 MC6800 时序,通过软件编程模拟 信号之间的时序关系,间接实现对模块进行控制。该方式能够很好的回避 MPU 和模块接口之间的时序差 异。根据模块的接口信号要求,需要占用 MPU 的 2 个并行接口,在图五给出的示例中,我们将 AT89S52 的 P1 口作为数据总线。P3 口中 4 位端口为控制信号,它们是:P3.3 为/RD 信号或者 E 信号,P3.7 为/WR 或者 R/W 信号,P3.6 为 A0 信号,P3.4 为/CS 信号,以及 P3.5 为/RES。
{
A0 = 0;
// 设置指令通道
_RD = 1;
// 控制读操作无效
_CS = 0;
// 选通模块

深圳市拓普微科技开发有限公司
page 6/21
液晶显示控制器 ST7565/67 应用指南
LCDBUS = Command; _WR = 0; _WR = 1; _CS = 1; } 2、显示数据写入函数 void SdData(uchar DData) {
总线寻址方式驱动函数如下:(地址定义,根据用户平台接口修改)

LCD控制芯片ST7565介绍

LCD控制芯片ST7565介绍

LCD控制芯片ST7565介绍LCD控制芯片ST7565介绍管脚:CS 片选信号线RES 复位信号线默认高电平,低脉冲复位。

A0 数据与命令选择信号线D0~D8 8数据线命令解析:Internal Reset: (0xE2)所有的命令都复位到默认值。

LCD bias set: (0xa2=1/9bias) (0xa3=1/7bias)LCD驱动电压偏置比,1/9bias效果好些。

Display all points ON/OFF: (0xa4=normal)(0xa5=all points on) 默认是0xa4,0xa5全屏都是黑。

Display normal/reverse: (0xa6=normal 0xa7=reverse)颜色反转ADC select: (0xa0=normal 0xa1=reverse)屏幕左右反转Common outpur mode select:(0xc0=normal 0xc8=reverse) 屏幕上下反正(0xa0和0xc0一个组合)(0xa1和0xc8一个组合)Column address :列地址的设置采用两个命令设置一个起始地址,高四位分别是0和1,低四位分别是地址的高四位和低四位。

如WRITE_LCD(cmd_addr, 0x10); WRITE_LCD(cmd_addr, 0x00);Page address set页地址,也可以叫行地址,设置的命令高4位为B,低四位为地址数据如:WRITE_LCD( cmd_addr,0xB0+Padr);Power control set:这块好像一定要设成0x2F,其他的好像不行,没搞懂,这部分与外部电路连接有关。

Voltage booster,Voltage regulator,Voltage follower ,内外部升压,稳压发生器。

V5 voltage regulator internal resistor ratio set :亮度调节,设置成(0x25)最好Electronic volume register set不知道。

ST7565R显示乱码问题

ST7565R显示乱码问题

ST7565R显示乱码问题
機密速普存檔:
主旨(SUBJECT) ST7565R 顯示亂碼問題解釋
問題現象
按按鍵切換畫面時,會出現亂碼現象
模組參數
1/65DUTY、1/7BIAS、VOP=8.5V
問題解釋
當模組在切換畫面時,IC 的COM、SEG 波形在不停翻轉,分壓PIN 上(V0~V4)的電容會不斷充放電,以至瞬間對VSS 釋放的電荷會增加(電流相對變大),如果VDD、VSS 的ITO 阻值較大(VDD 的ITO 阻值有偏大),會使VDD、VSS 上產生較大凸波 (實測到VSS 上的凸波約
1.1V,如下圖1所示),這樣會影響到訊號、資料PIN 的邏輯判斷(VIH、VIL),以使IC 會收到異常的指令,最後使模組發生顯示不良。

凸波約1.1V,約持續200nS 以上
致(TO) JIC 相關人員日期(DATE) 2008 / 07 / 18 副本(C.C)Penny 文號(REF.No)ENG20080718 自(FROM)SITORNIX 技術服務處-SZ 傳真(FAX.No)0755 - 83439077 83439277 當將V0、V1(驅動波形上的高壓准位)上的電容去掉,相對模組瞬間的耗電流就會減小,也就是減輕了模組的負載,也是可以改善顯示亂碼問題。

後續建議通過修改玻璃ITO LAYOUT的方式來解決此種不良,且務必發過來讓我們確認,以祈貴司能順利生產!。

关于调试使用ST7565芯片的12864图形点阵液晶模块

关于调试使用ST7565芯片的12864图形点阵液晶模块

关于调试使用ST7565芯片的12864图形点阵液晶模块Skype-usb电话一般使用小黑白lcd,我选了一些lcd,最终确定使用了一款ST7565核心的点阵lcd,屏幕大小是128x64.本来想选oled 的,可是成本比较高,我06年问的一个双色128x64大小的oled一般卖到19块左右,用不起啊.而同样大小的lcd一般只有10块左右.这里首先说一下我选lcd调试时遇到的一些问题,帮助大家少走一些弯路.因为单片机的io往往比较有限,所以我们在选这种小lcd的时候往往使用串行控制的lcd,一般都是标准的spi接口的.而一些初次尝试驱动小lcd的朋友通常回想到,在没有spi的单片机用io模拟时序略显复杂,所以想直接选用并行数据控制的lcd,这种小黑白lcd往往使用一组8位的数据总线D0--D7来交互显示数据,看起来io写时序控制比较容易.我起初也是用了一款并行数据控制的lcd,然而却没调试成功.问题出在时序的匹配上.我们必须考虑lcd所能接受的最慢时序单片机性能是否能满足.如果单片机不仅仅用来显示,而还要同时完成一些其他的必须及时进行的操作,这个问题尤其突出.所以,最终我的感觉是,能用spi则用spi,否则也还是用io模拟串行时序做起来简单一些,否则一但遇到性能问题,将十分棘手.一般来说,如果你纯粹使用io做时序,连接一个使用ST7565核心的lcd需要使用至少5个io管脚,分别接lcd的信号SI(串行数据),SCL(串行时钟),A0(数据指令选择),\RES(复位),CS(片选).下面说一下ST7565的使用中遇到的一些问题.首先,lcd要使用一般必须外部接电容构成正倍压电路,有了pump才能显示.我在开发usb 电话时使用了一组datasheet上说明的4倍压电路.在用电容时遇到了问题,一般我们调试的时候喜欢焊接直插件,而电容一般有极性.很多ST7565P核心的lcd在管脚标识的时候,正负号与电容的正负正好相反,所以出现调试的时候倍压不能的情况,一般显示器的厂商会提醒全部使用无极性电容,一般直接用产品化后设定的贴片电容来焊接即可,不需要刻意买一些直插的.我使用的holtek hr82a832r单片机来做的usb电话,这个片子有现成的spi接口,所以使用lcd不需要使用io模拟,比较容易.用io模拟时序的方式我也试了,完全可行.用单片机的spi记得调整SCL上升沿还是下降沿锁定数据,否则这样的低级错误被遗忘会浪费不少时间迷茫~ 其他时序完全参照mcu和lcd核心ic的datasheet搞定即可.一般屏幕的初始化和显示测试程序可以向lcd提供商索要,他们一般有pic或是普通51的测试程序.有了初始化的demo做起来省很多时间.这里还要补充一点,如果屏幕初始化了不显示,各种电气信号又都测量出正常,不要着急,调整一下lcd的显示亮度.我一开始就是因为lcd的显示对比度设置不妥当,导致全是黑屏.对于ST7565,微调指令是0x81 0xmm (mm=00--3f) 粗调指令是0x2n (n=0--7),我使用不同厂家的屏幕,发现显示对比度设置后,效果差距较大,一个设置0x0d 0x26正好,一个需要设置0x0a 0x27才可以,第一个屏幕使用第二条设置会几乎黑屏.点图进入相册。

ST7565 使用笔记

ST7565 使用笔记

芯片简介ST7565 使用笔记ST7565 是一款点阵液晶驱动芯片,它具有并行与串行(SPI )两种接口,通过 P/S 引脚选取: P/S=1 为并行,P/S=0 为串行。

这两种接口的控制信号如下:同时它具有两种接线方式:6800 和 8080。

通过 C86 引脚选取:C86=1 为 6800,C86=0 为 8080。

这两种方式的控制时序有所不同:复位初始化参数:其时序如下:控制命令设置行显示方向需要重点说明的是计算V0 的这个命令。

该命令具体细节见下:该命令的主要作用是计算LCD 的V0,以调节显示亮度;当增加V0 以增加用户程序需要点亮点阵得亮度时,程序未要求点亮部分得亮度也相应增加。

当设置V0 过大时,则显示屏显示颜色将会很深,包括程序未让其显示部分,效果就像全屏点亮一样,显示对比度很低。

当设置V0 过小时,显示又会很暗,以至于显示效果不好。

所以一定要通过试验以调节V0 以适合当前得LCD。

注意:同一款LCD 驱动芯片,当玻璃片、显示区域大小等不一样时,V0 设置的最佳值也将不一样,因此只有通过不断的试验以得到最佳值。

在使用ST7565 时的处理流程:根据其初始化流程可知,只要对其中几项进行设置,其它保持默认值就可以了,需要设置的是:①默认的是关闭,当初始化的时候应设置成开启。

这与外部电路连接有关。

这与硬件连接有关。

④③②在使用过程中,如果向ST7565 写数据,其列地址会自动增加。

当一页的数据写完后,需要设置下一页的地址,在新的一页中要重新设定列地址,即改变页地址后列地址保持不变,并不自动设置为起始列,比如,如果换页前(假设是第一页)显示列地址为10,此时发送页地址设置命令(假设设置为第二页),则此时发送的数据将从第二页第十列开始显示。

如果前一页写满,此时不设定新页的列数,超过一页最大列地址的数据将不会显示。

每页有8*132 个点,即每页可以显示一行字母(5×7 或 6×8 字库)。

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

LCD_ST7565头文件部分.txt喜欢我这是革命需要,知道不?!你不会叠衣服一边呆着去!以后我来叠!我一定要给你幸福,谁也别想拦着。

/*******************************************************
*
*
*此头文件中放一些引脚的定义和显示要用到的字符数组。

*
*
*
********************************************************/
#ifndef __header_h__
#define __header_h__
#ifdef __LCD_ST7565_C__
#define LCDExtern
#else
#define LCDExtern extern
#endif
#include"STC12C5A.h" //宏晶STC12C5A系列单片机的头文件。

可在宏晶官网上下。

#include<intrins.h> //空函数需要用到的系统头文件
#define uchar unsigned char
/////////////////////////////////////////// 端口定义////////////////////////////////////////
#define NOP _nop_();_nop_();_nop_();_nop_() //空函数
#define VC_ON 0x2C //升压电路启动命令
#define VR_ON 0x2A //稳压电路启动命令
#define VF_ON 0x29 //电压跟随器电路启动命令
#define data P0 //数据发送端口
sbit A0 = P4^1; //寄存器选择端
sbit RW = P4^2; //读写端
sbit E = P4^3; //使能端
sbit PSD = P4^4; //发送模式串并选择端:1为并行,0为I2C串行
sbit RES = P4^5; //LCD复位端
///////////////////////////////////////////// 字符库//////////////////////////////////////
/**********************************************
字符码的提取是通过该字符第一个字节信息在数组中的位置来提取的,
然后再在显示函数的数组中设置循环次数(i)来控制整个字符所含数据的读取终点。

道理很简单,就是提取数组中某些连续的数据,通过“初始值的数组下标”值确定起点,通过循环次数(i)控制终点。

**********************************************/
/********************* 8×8字符 *********************/
uchar xdata num88[]={
0xff,0xff,0xff,0xde,0x80,0xfe,0xff,0xff, //1 初始值的数组下标 0
0xff,0xff,0xdc,0xba,0xba,0xb6,0xce,0xff, //2 初始值的数组下标 8
0xff,0xff,0xdd,0xb6,0xb6,0xb6,0xc9,0xff, //3 初始值的数组下标 16
0xff,0xff,0xf1,0xed,0xdd,0x80,0xfd,0xff, //4 初始值的数组下标 24
0xff,0xff,0x8d,0xae,0xae,0xae,0xb1,0xff, //4 初始值的数组下标 32
0xff,0xcc,0xb6,0xb6,0xb6,0xb6,0x99,0xff, //s 初始值的数组下标 40
0xff,0xff,0xff,0xe7,0xdb,0xdb,0xe7,0xff, //o 初始值的数组下标 48
0xff,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0xff, //- 初始值的数组下标 56
};
/******************* 8×16字符 *********************/
uchar xdata num816[]={
0xff,0x1f,0xe7,0xfb,0xfb,0xe7,0x1f,0xff, //0 初始值
0xff,0xfc,0xf3,0xef,0xef,0xf3,0xfc,0xff,
0xff,0xfb,0xfb,0x03,0x03,0xfb,0xfb,0xff, //1 初始值的数组下标 16
0xff,0xf7,0xf7,0xe0,0xe0,0xff,0xff,0xff,
0xff,0xf3,0xeb,0xdb,0xbb,0x7b,0xe3,0xff, //2 初始值的数组下标 32
0xff,0xf3,0xef,0xef,0xef,0xee,0xf1,0xff,
0xff,0xe7,0xfb,0xfb,0xfb,0x77,0x8f,0xff, //3 初始值的数组下标 48
0xff,0xf3,0xef,0xee,0xee,0xed,0xf3,0xff,
0xff,0x1f,0xdf,0xdf,0xdb,0x03,0xdb,0xff, //4 初始值的数组下标 64
0xff,0xff,0xfc,0xfb,0xf7,0xe0,0xff,0xff,
0xff,0xe7,0xfb,0xfb,0xfb,0xf7,0x0f,0xff, //5 初始值的数组下标 80
0xff,0xe0,0xee,0xed,0xed,0xee,0xef,0xff,
0xff,0x0f,0x77,0xfb,0xfb,0x77,0x8f,0xff, //6 初始值的数组下标 96
0xff,0xf8,0xf7,0xee,0xee,0xef,0xff,0xff,
0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff, //7 初始值的数组下标 112
0xff,0xe3,0xef,0xef,0xec,0xe3,0xef,0xff,
0xff,0xc7,0xbb,0x7b,0x7b,0xbb,0xc7,0xff, //8 初始值的数组下标 128
0xff,0xf1,0xee,0xef,0xef,0xee,0xf1,0xff,
0xff,0xff,0x7b,0xbb,0xbb,0x77,0x0f,0xff, //9 初始值的数组下标 144
0xff,0xf8,0xf7,0xef,0xef,0xf7,0xf8,0xff,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, //■初始值的数组下标 160
0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
0x03,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0x03, //□初始值的
0xc0,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xc0,
0x0f,0xf3,0xfd,0xfd,0xfd,0xfd,0xf3,0xff, //C 初始值的数组下标 192
0xfe,0xf9,0xf7,0xf7,0xf7,0xf7,0xfb,0xff,
0xff,0xff,0xff,0x73,0x73,0xff,0xff,0xff, // : 初始值的数组下标 208
0xff,0xff,0xff,0xfe,0xfe,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, // o 初始值的数组下标 224
0xff,0xff,0xff,0xe7,0xdb,0xdb,0xe7,0xff, };
/******************* 16×16字符 ********************/
uchar xdata num1616[]={
0xcf,0x3f,0xff,0x00,0xfd,0x7b,0xe7,0x1d, //板初始值的数组下标 0
0xfb,0x37,0xcf,0x97,0x7b,0xf9,0xfb,0xff,
0xf7,0xf7,0xf4,0x00,0xf6,0xf7,0xff,0xc0,
0xdb,0xda,0xdb,0xbb,0x3a,0xb9,0xff,0xff,
0xdf,0xdf,0x80,0x7f,0xfd,0x81,0xbd,0xbd, //温初始值的数组下标 32
0x81,0xbd,0x81,0xbd,0xbd,0x81,0xfd,0xff,
0xf7,0xbb,0xd9,0xcf,0xfe,0xff,0x80,0xb6,
0xb6,0xb6,0xb6,0xb6,0x80,0xff,0xff,0xff,
0xfd,0xfb,0x06,0xfe,0xbd,0xbd,0x9b,0xab, //度初始值的数组下标 64
0xb7,0xab,0x9b,0xbd,0xfd,0xfc,0xfd,0xff,
0xff,0xff,0xc0,0xdb,0xdb,0xdb,0xc0,0x5a,
0x9a,0xda,0xc0,0xdb,0xd3,0x9b,0xdf,0xff };
#endif。

相关文档
最新文档