12864液晶屏串口驱动程序

12864液晶屏串口驱动程序
12864液晶屏串口驱动程序

12864液晶屏串口驱动程序代码

12864液晶屏驱动采用4_Wire-SPI串口驱动方式,可有效的减少IO口的占用,方便使用调试,本程序的代码驱动IC为ST7565R,是基于STC89C53RC的12864串行模式的程序,硬件电路连接只需要5根线:RS、 SDA、 SCLK、RES、CS 。

程序已经调试通过,很好用。代码如下:

//----------------------------------------------------------------------

/*hotdisplay CO,.LTD.*/

// Module : HTG12864

// Lanuage : C51 Code

// Create :

// Version : 1.0

// Date : OCT-21-2016

// LCM Drive IC : ST7565R

// INTERFACE : 4_Wire-SPI

// MCU : STC89C53RC

// VDD : 3.3V

//********************************************************* ******************

#include

#define uchar unsigned char

#define uint unsigned int

uchar bdata transdata;

sbit R_S= P3^5;

sbit RES= P3^4;

sbit SCK= P1^6;

sbit SDA= P1^7;

sbit CS1= P3^7;

sbit transbit = transdata^7 ;

#define Page 0xb0

//##########################################//

void Comwrite(unsigned char com); //D′??á?3ìDò//

void Datawrite(unsigned char dat);

void Delay(unsigned int time); //?óê±×ó3ìDò//

char code Hanzi[]={

0xFF,0x01,0x01,0x09,0xF9,0x09,0x01,0x01,0x09,0xF9,0x09,0xE1 ,0x11,0x09,0x09,0x09,

0x11,0xE1,0x01,0x19,0x09,0x09,0xF9,0x09,0x09,0x19,0x01,0x01 ,0x01,0x01,0x01,0x01,

0x01,0x01,0x01,0x09,0xF9,0x09,0x09,0x09,0x11,0xE1,0x01,0x01 ,0x09,0x09,0xF9,0x09,

0x09,0x01,0x01,0x01,0x71,0x89,0x09,0x09,0x09,0x39,0x01,0x09 ,0xF9,0x09,0x09,0x09,

0x09,0xF1,0x01,0x01,0x01,0xC1,0x39,0xE1,0x01,0x01,0x01,0x09 ,0xF9,0x09,0x01,0x01,

0x01,0x01,0x01,0x09,0x39,0xC9,0x01,0xC9,0x39,0x09,0x01,0x01 ,0x01,0x01,0x01,0x01,

0x01,0x01,0x01,0x09,0xF9,0x09,0x01,0x01,0x01,0x01,0x01,0xC1 ,0x31,0x09,0x09,0x09,

0x09,0x39,0x01,0x09,0xF9,0x09,0x09,0x09,0x11,0xE1,0x01,0x01 ,0x01,0x01,0x01,0xFF,

0xFF,0x00,0x00,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,0x0F ,0x10,0x20,0x20,0x20,

0x10,0x0F,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,0x00 ,0x20,0x20,0x3F,0x20,

0x20,0x00,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,0x20 ,0x3F,0x21,0x01,0x01,

0x01,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,0x20 ,0x3F,0x20,0x20,0x20,

0x20,0x30,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,0x07 ,0x18,0x20,0x20,0x20,

0x10,0x08,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,0x00 ,0x00,0x00,0x00,0xFF,

0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0x08,0x00 ,0x00,0x08,0xF8,0x08,

0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x08,0xF8,0xF8,0x00 ,0xF8,0xF8,0x08,0x00,

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x08 ,0x08,0x88,0x70,0x00,

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0xE0,0x10,0x88 ,0x88,0x18,0x00,0x00,

0x00,0x00,0xC0,0x20,0x10,0xF8,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,0x00,0x00,0xFF,

0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x21,0x01 ,0x01,0x21,0x3F,0x20,

0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,0x20,0x3F,0x00,0x3F ,0x00,0x3F,0x20,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x30,0x28,0x24 ,0x22,0x21,0x30,0x00,

0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x0F,0x11,0x20 ,0x20,0x11,0x0E,0x00,

0x00,0x07,0x04,0x24,0x24,0x3F,0x24,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,0x00,0xFF,

0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0xE0,0x10,0x08,0x08 ,0x08,0x10,0xE0,0x00,

0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x70,0x88,0x08 ,0x08,0x08,0x38,0x00,

0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x10,0x10,0xF8 ,0x00,0x00,0x00,0x00,

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x70,0x88,0x08 ,0x08,0x88,0x70,0x00,

0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0xE0,0x10,0x88 ,0x88,0x18,0x00,0x00,

0x00,0x00,0xC0,0x20,0x10,0xF8,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,0xFF,

0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,0x0F,0x10,0x20,0x20 ,0x20,0x10,0x0F,0x00,

0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,0x00,0x38,0x20,0x21 ,0x21,0x22,0x1C,0x00,

0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x20,0x20,0x3F ,0x20,0x20,0x00,0x00,

0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x1C,0x22,0x21 ,0x21,0x22,0x1C,0x00,

0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,0x00,0x0F,0x11,0x20 ,0x20,0x11,0x0E,0x00,

0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0xFF,

0xFF,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x10,0x10,0xF8 ,0x00,0x00,0x00,0x00,

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x08,0x88 ,0x88,0x48,0x30,0x00,

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0xF8,0x08,0x88 ,0x88,0x08,0x08,0x00,

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x38,0x08,0x08 ,0xC8,0x38,0x08,0x00,

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0xE0,0x10,0x08 ,0x08,0x10,0xE0,0x00,

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x10,0x10,0xF8 ,0x00,0x00,0x00,0x00,

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x08,0x88 ,0x88,0x48,0x30,0x00,

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0xF8,0x08,0x88 ,0x88,0x08,0x08,0xFF,

0xFF,0x8F,0x90,0xA0,0xA0,0x90,0x8F,0x80,0x80,0xA0,0xA0,0xBF ,0xA0,0xA0,0x80,0x80,

0x80,0xB0,0xA8,0xA4,0xA2,0xA1,0xB0,0x80,0x80,0x98,0xA0,0xA0 ,0xA0,0x91,0x8E,0x80,

0x80,0x87,0x84,0xA4,0xA4,0xBF,0xA4,0x80,0x80,0x99,0xA1,0xA0 ,0xA0,0x91,0x8E,0x80,

0x80,0x8F,0x91,0xA0,0xA0,0x91,0x8E,0x80,0x80,0x80,0x80,0xBF ,0x80,0x80,0x80,0x80,

0x80,0x9C,0xA2,0xA1,0xA1,0xA2,0x9C,0x80,0x80,0x80,0xB1,0xA2 ,0xA2,0x91,0x8F,0x80,

0x80,0x8F,0x90,0xA0,0xA0,0x90,0x8F,0x80,0x80,0xA0,0xA0,0xBF ,0xA0,0xA0,0x80,0x80,

0x80,0xB0,0xA8,0xA4,0xA2,0xA1,0xB0,0x80,0x80,0x98,0xA0,0xA0 ,0xA0,0x91,0x8E,0x80,

0x80,0x87,0x84,0xA4,0xA4,0xBF,0xA4,0x80,0x80,0x99,0xA1,0xA0 ,0xA0,0x91,0x8E,0xFF

};

//###############################################//

char code Hanzi1[]={

0x00,0x04,0xFC,0x84,0x84,0x84,0x84,0x78,0x00,0x00,0x00,0xA0 ,0xA0,0xA0,0xA0,0xC0,

0x00,0x00,0x00,0xC0,0x40,0x20,0x20,0x44,0xFC,0x00,0x00,0x00 ,0x00,0x20,0x20,0xE4,

0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x20,0x20,0x20,0x40,0xC0 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x84,0x84,0x84 ,0x44,0xF8,0x00,0x00,

0x00,0x08,0x04,0x04,0x84,0x44,0x38,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xF0,0x88,0x44,0x44,0x44,0x80,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x04,0xFC,0x30,0xC0,0x00,0xC0,0x30,0xFC,0x04 ,0x04,0xFC,0x44,0x40,

0x40,0x40,0x44,0xFC,0x04,0x00,0x60,0x20,0x20,0x20,0xA0,0x60 ,0x20,0x00,0x00,0x00,

0x40,0x48,0x4F,0x48,0x40,0x41,0x42,0x4C,0x48,0x40,0x47,0x48 ,0x48,0x48,0x48,0x47,

0x48,0x40,0x40,0x47,0x44,0x48,0x48,0x44,0x4F,0x48,0x40,0x40 ,0x40,0x48,0x48,0x4F,

0x48,0x48,0x40,0x40,0x40,0x47,0x44,0x48,0x48,0x48,0x44,0x47 ,0x40,0x40,0x40,0x40,

0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x48,0x48,0x48 ,0x44,0x43,0x40,0x40,

0x40,0x4C,0x4A,0x49,0x48,0x48,0x48,0x40,0x40,0x40,0x40,0x40 ,0x4C,0x4C,0x40,0x40,

0x40,0x40,0x40,0x47,0x48,0x48,0x48,0x48,0x47,0x40,0x40,0x40 ,0x40,0x40,0x40,0x40,

0x40,0x40,0x40,0x48,0x4F,0x48,0x40,0x43,0x40,0x48,0x4F,0x48 ,0x48,0x4F,0x48,0x40,

0x40,0x40,0x48,0x4F,0x48,0x40,0x48,0x4C,0x4A,0x49,0x48,0x48 ,0x4C,0x40,0x40,0x40,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0xE0,0xE0,

0xE0,0xFC,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C ,0x1C,0xFC,0xE0,0xE0,

0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xFC ,0x1C,0x1C,0x1C,0x1C,

0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xFC,0xE0,0xE0,0xE0,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xFC,0x1C,0x1C,0x1C,0x1C ,0x1C,0x1C,0x1C,0x1C,

0x1C,0x1C,0x1C,0xFC,0xE0,0xE0,0xE0,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,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0xFF,0xFF,

0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0xFF,0xFF,0xFF,

0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0xFF,0xFF,

0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0xFF,0xFF,0xFF,

0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00 ,0x00,0xF0,0x00,0x00,

0x00,0x00,0x80,0x40,0x20,0x10,0x00,0x00,0x80,0x00,0x80,0x80 ,0x80,0x00,0x00,0x80,

0x80,0x80,0x00,0x00,0x00,0x00,0xC0,0x30,0x00,0xF0,0x00,0x80 ,0x80,0x80,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x1F,0x1F,

0x1F,0xFF,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0 ,0xE0,0xFF,0x1F,0x1F,

0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0xFF ,0xE0,0xE0,0xE0,0xE0,

0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xFF,0x1F,0x1F,0x1F,0x00 ,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0xFF,0xE0,0xE0,0xE0,0xE0 ,0xE0,0xE0,0xE0,0xE0,

0xE0,0xE0,0xE0,0xFF,0x1F,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00 ,0x00,0xFF,0x08,0x04,

0x02,0x07,0x08,0x30,0x40,0x80,0x00,0x00,0xFF,0x01,0x00,0x00 ,0x00,0xFF,0x01,0x00,

0x00,0x00,0xFF,0x00,0xC0,0x3C,0x03,0x00,0x00,0xFF,0x01,0x00 ,0x00,0x00,0xFF,0x00,

0x04,0x04,0x84,0x44,0x44,0x44,0x84,0x04,0x04,0x04,0x84,0x44 ,0x44,0x44,0x84,0x04,

0x04,0x04,0x84,0x84,0xC4,0x04,0x04,0x04,0x04,0x04,0x84,0x44 ,0x44,0x44,0x84,0x04,

0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x84,0x84 ,0xC4,0x04,0x04,0x04,

0x04,0x04,0x84,0x44,0x44,0x44,0x84,0x04,0x04,0x04,0x04,0x04 ,0x04,0x04,0x04,0x04,

0x04,0x04,0x84,0x44,0x44,0x44,0x84,0x04,0x04,0x04,0x84,0x44 ,0x44,0x44,0x84,0x04,

0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x84,0x84 ,0xC4,0x04,0x04,0x04,

0x04,0x04,0xC4,0x44,0x44,0x44,0x44,0x04,0x04,0x04,0x04,0x04 ,0x04,0x04,0x04,0x04,

0x04,0x84,0x44,0x44,0x44,0x84,0x04,0x04,0x04,0xC4,0x44,0x44 ,0x44,0x44,0x04,0x04,

0x00,0x00,0x60,0x50,0x48,0x44,0x43,0x00,0x00,0x00,0x3F,0x40 ,0x40,0x40,0x3F,0x00,

0x00,0x00,0x40,0x40,0x7F,0x40,0x40,0x00,0x00,0x00,0x3F,0x40 ,0x40,0x40,0x3F,0x00,

0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x40,0x40 ,0x7F,0x40,0x40,0x00,

0x00,0x00,0x60,0x50,0x48,0x44,0x43,0x00,0x00,0x08,0x08,0x08 ,0x08,0x08,0x08,0x08,

0x00,0x00,0x20,0x40,0x44,0x44,0x3B,0x00,0x00,0x00,0x3F,0x40 ,0x40,0x40,0x3F,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40 ,0x7F,0x40,0x40,0x00,

0x00,0x00,0x27,0x44,0x44,0x44,0x38,0x00,0x00,0x00,0x00,0x00 ,0x21,0x00,0x00,0x00,

0x00,0x60,0x50,0x48,0x44,0x43,0x00,0x00,0x00,0x27,0x44,0x44 ,0x44,0x38,0x00,0x00,

};

void Delay(unsigned int time)

{

unsigned char j;

while(time--)

{

for(j=0;j<=50;j++)

{}

}

}

/******************************************************/ void Display(unsigned char sda,unsigned char sda1)

{

unsigned char i,j,k=0;

Comwrite(0x40);

for(i=0;i<8;i++)

{

Comwrite(Page+k);

Comwrite(0x10);

Comwrite(0x00);

for(j=0;j<66;j++)

{Datawrite(sda);

Datawrite(sda1);

}

k++;

}

}

/*****************************************************/

void Hanzi_Disp(void)

{

unsigned char i,j,k=0;

Comwrite(0x40);

for(i=0;i<8;i++)

{

Comwrite(Page+k);

Comwrite(0x10);

Comwrite(0x00);

for(j=0;j<128;j++)

{Datawrite(Hanzi[i*128+j]);}

k++;

}

Delay(5000);

}

void Hanzi_Disp1(void)

{

unsigned char i,j,k=0;

Comwrite(0x40);

for(i=0;i<8;i++)

{

Comwrite(Page+k);

Comwrite(0x10);

Comwrite(0x00);

for(j=0;j<128;j++)

{Datawrite(Hanzi1[i*128+j]);}

k++;

}

Delay(5000);

}

//######################################################### void Intial(void)

{

Delay(100);

Comwrite(0xe3);

Comwrite(0xA2);

Comwrite(0xA0); //A0为正显示,A1为镜像显示

Comwrite(0xc9);

Comwrite(0x2c);

Comwrite(0x2e);

Comwrite(0x2F);

Comwrite(0xf8);

Comwrite(0x00);

Comwrite(0x81);

Comwrite(0x10);

Comwrite(0x25);

Comwrite(0xAF);

Comwrite(0x40);

Delay(20);

}

/********************************************************** /

int main()

{

/*PINSEL0=0x00000000; IO0DIR=SPIIOCON;

RES=0;

Delay(20);

RES=1;

Delay(20);

while(1)

{

Intial();

Delay(20);

Display(0xFF,0xFF);

Delay(1000);

Display(0x00,0x00);

Delay(1000);

Display(0xFF,0x00);

Delay(1000);

Display(0x00,0xff);

Delay(1000);

Display(0x55,0xAA);

Delay(1000);

Display(0xAA,0x55);

Delay(1000);

Hanzi_Disp(); Delay(1000);

Hanzi_Disp1();

Delay(1000);

}

}

//###############################################// void Comwrite(char com)

{

unsigned char data i;

transdata=com;

CS1=0;

基于某STM32LCD12864驱动程序

STM32 LCD12864驱动程序(头文件)(2012-05-29 21:25:08)转载▼ 标签:杂谈 #ifndef LCD12864_H #define LCD12864_H #define LCD_CONTROL GPIOD //默认LCD12864的控制口在PD口 #define LCD_DATAPORT GPIOD //默认LCD12864的数据口在PD口 #define LCD_RESET_Pin GPIO_Pin_12 //默认LCD12864的复位引脚连接到PD.12 也可不用 #define LCD_RS_Pin GPIO_Pin_13 //默认LCD12864 RS -- PD.13 #define LCD_RW_Pin GPIO_Pin_14 //默认LCD12864 RW -- PD.14 #define LCD_EN_Pin GPIO_Pin_15 //默认LCD12864 E -- PD.15 #define LCD_CONTROL_CLOCK RCC_APB2Periph_GPIOD //默认LCD12864的控制口时钟 #define LCD_DATAPORT_CLOCK RCC_APB2Periph_GPIOD //默认LCD12864的数据口时钟 #define LCD_RS_1 LCD_CONTROL->BSRR &=~LCD_RS_Pin;LCD_CONTROL->BSRR |=LCD_RS_Pin //RS置高电平 #define LCD_RS_0 LCD_CONTROL->BRR &=~LCD_RS_Pin;LCD_CONTROL->BRR |=LCD_RS_Pin //RS置低电平 #define LCD_RW_1 LCD_CONTROL->BSRR &=~LCD_RW_Pin;LCD_CONTROL->BSRR |=LCD_RW_Pin //RW置高电平 #define LCD_RW_0 LCD_CONTROL->BRR &=~LCD_RW_Pin;LCD_CONTROL->BRR |=LCD_RW_Pin //RW置低电平 #define LCD_EN_1 LCD_CONTROL->BSRR &=~LCD_EN_Pin;LCD_CONTROL->BSRR |=LCD_EN_Pin //EN置高电平 #define LCD_EN_0 LCD_CONTROL->BRR &=~LCD_EN_Pin;LCD_CONTROL->BRR |=LCD_EN_Pin //EN置低电平 #define LCD_RESET_0 LCD_CONTROL->BRR = LCD_RESET_Pin // 复位 #define LCD_RESET_1 LCD_CONTROL->BSRR = LCD_RESET_Pin // 复位脚拉高 #define DATAOUT LCD_DATAPORT->ODR &=0xff00;LCD_DATAPORT->ODR // 数据输出寄存器 #define DATAIN LCD_DATAPORT->IDR // 数据输入寄存器 #define LCD_BF ((DATAIN)& 0x0080) // 忙状态 void LCD_delayus(unsigned long n); //延时n(us) void LCD_delayms(unsigned long n); //延时n(ms) void LCD_WriteInitcmd(uint8_t initcmd); //写初始化命令 void LCD_WaitLaisure(void); //一直等待到LCD内部操作完成,变为空闲状态 void LCD_Writecmd(uint8_t cmd); //写命令到LCD12864 void LCD_WriteByte(uint8_t byte); //写一字节数据到LCD12864 void LCD_pos(uint16_t pos); //LCD显示位置设置 void LCD_Setpos(uint16_t row,uint16_t col);//设定LCD12864的显示地址,根据习惯 void LCD_DispChar(char ch); //显示一个字符 void LCD_Setpos_DispChar(uint16_t row,uint16_t col,char ch);//在指定位置显示一个字符 void LCD_DispString(char str[]); //显示一个字符串,显示位置需提前设定

LCD12864显示程序

;实验目的:熟悉12864LCD的使用 ;12864LCD带中文字库 ;编程让12864LCD显示公司名称“深圳乾龙盛电子”,公司电话“0975”,公司传真“6”;硬件设置: ;关断所有拨码开关。 #include<> ;__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_H S_OSC ;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define RS PORTA,5 ;命令/数据选择 #DEFINE RW PORTA,4 ;读/写选择 #DEFINE E PORTA,3 ;使能信号 #DEFINE PSB PORTA,2 ;并口/串口选择(H/L) #DEFINE RST PORTA,0 ;复位信号 ;----------------------------------------------- LCD_X EQU 30H ;页地址 LCD_Y EQU 31H ;Y地址 COUNT EQU 32H ;循环计数用 COUNT1 EQU 33H ;循环计数用 COUNT2 EQU 34H ;循环计数用 POINT EQU 35H ;查表偏移地址 POINT1 EQU 36H ;查表偏移地址 POINT2 EQU 37H ;查表偏移地址 TEMP EQU 38H ;临时寄存器 TEMP1 EQU 39H ;临时寄存器 ;----------------------------------------------- ORG 0000H ;复位地址 NOP ;ICD需要的空指令 GOTO MAIN ;跳转到主程序 ;**********************主程序************************ MAIN BANKSEL TRISA CLRF TRISA ;A口输出 CLRF TRISD ;D口输出 BANKSEL ADCON1 MOVLW 06H MOVWF ADCON1 ;A口全为数字口 CLRF STATUS

LCD12864显示程序

本例程为通过用A T89C52芯片操作LCD12864显示的程序,使用的晶振为12M。 /********************************************************** 程序说明:LCD12864显示主程序 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ #include #include"12864.c" void main() { Ini_Lcd(); //液晶初始化子程序 Disp(1,0,6,"莫剑辉"); //显示数据到LCD12864子程序 while(1); } 这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。 /********************************************************** 程序说明:LCD12864显示头文件 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ //#include #define uchar unsigned char #define uint unsigned int #define DATA P2 //数据输出端0~7 sbit RS=P0^0; //LCD12864 RS端 sbit RW=P0^1; //LCD12864 RW端 sbit E =P0^2; //LCD12864 E 端 sbit PSB =P0^3; /********************************************* 延时子程序 *********************************************/ void Delay_1ms(uint x) { uint j,i; for(j=0;j

很好用的12864驱动程序

/////////////////////////////////////////////////////////// #include #include #define uchar unsigned char #define uint unsigned int //////////单片机与液晶显示的引脚连接///////// sbit P32=P3^2; //RST sbit P33=P3^3; //CS2 sbit P34=P3^4; //CS1 sbit P35=P3^5; //E sbit P36=P3^6; //rs&DI sbit P37=P3^7; // R/W ////////延时///////// void delay(uint v) { while(v!=0)v--; } ////////复位/////////// void reset() { P32=0; delay(10); P32=1; delay(10); } ////////write code写指令/////// void wcode(uchar c,uchar cs1,uchar cs2) { P34=cs1; P33=cs2; P37=0; P36=0; P1=c; P35=0; delay(10);

P35=1; delay(10); P35=0; } /////////write data写数据/////////////// void wdata(uchar c,uchar cs1,uchar cs2) { P34=cs1; P33=cs2; P37=1; P36=0; P1=c; P35=0; delay(10); P35=1; delay(10); P35=0; } ////////////set start设置起始行///////////// void set_startline(uchar i)//起始行。11A5A4A3A2A1A0 共有64行 // 液晶显示器的最底层为第一行 { i=0xc0+64-i;//此算法为把最顶层做为第一层 wcode(i,1,1); } ////////////set 页值设置,起始列值函数///////////// void set_adr(uchar x,uchar y) { x=x+0xb8;//页地址设置。10111A2A1A0 DDRAM的8行为一页,A0~A2为页码,LCD为64行8页 y=y+0x40;//列地址设置。01A5A4A3A2A1A0 两半屏分别有64列,A0~A5送入列地址计数器, //作为列(Y)地址指针。每读写一次其自动加一,指向下一列DDRAM单元wcode(x,1,1); wcode(y,1,1); } ///////////on/off开/关显示函数//////////////

51单片机 12864液晶显示并口和串口连接程序

#include #define uchar unsigned char #define uint unsigned int #define lcdbus P0 sbit rs=P2^0; sbit rw=P2^1; sbit en=P2^2; uchar code line[5]={0x00,0x80,0x90,0x88,0x98}; void delay(uchar i) { uchar j; while(i--) for(j=0;j<125;j++); } void writ_DATCOM(bit flagdc,uchar thing) { rs=flagdc; rw=0; delay(1); lcdbus=thing; en=1; //en为高数据写入,0为低停止写入delay(15); //数据写入的速度 en=0; } void AUTO_line(uchar *data_add) { uchar cnt; while(*(cnt+data_add)!='\0') { writ_DATCOM(1,*(cnt+data_add)); cnt++; } } void writline(uchar flagline,uchar *address) { writ_DATCOM(0,line[flagline]); AUTO_line(address); } void init() { writ_DATCOM(0,0x01); writ_DATCOM(0,0x02); writ_DATCOM(0,0x0c);

writ_DATCOM(0,0x30); writ_DATCOM(0,0x80); } void main() { init(); writline(1,"广西职业技术学院"); writline(2,"电气自动化——技术"); writline(3,"QQ:452658536"); writline(4,"学号: 09232017"); while(1); } ////////////////////////////////////////////////////// 以下是12864串口连接程序 /**** 12864串口*******/ // QQ:462658536 #include #define uchar unsigned char #define uint unsigned int sbit RW=P2^1; sbit SCK=P2^2; uchar code lineyou[5]={0x00,0x80,0x90,0x88,0x98} ; //code void delay(uchar i) { uchar j; while(i--) for(j=0;j<125;j++); } void sent(uchar DATA) //byte 1 { uchar i; for(i=0;i<8;i++) { SCK=0; if(DA TA&0x80) // 高位先出、1000 0000 RW=1; else RW=0; delay(10); SCK=1; DATA=DATA<<1; } } void writLCD(bit flag,uchar DA TA) //writ COM or data in address

12864串行显示中文讲解

12864串行显示中文,按键选择显示页面,并且可调数值。 单片机P1口接矩阵按键,其它接口按程序中定义去接 只需要接12864LCD上GND VCC RS RW E PSB RST A K 程序如下 /********************************12864.h头文件*******************************/ #ifndef _12864_h #define _12864_h /*****包含头文件**************/ #include /********定义I/0口**********/ #define GPIO_KEY P1 sbit LCD12864_SCLK = P2^7; //E sbit LCD12864_SID = P2^5; //RW sbit LCD12864_CS = P2^6; //RS sbit 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 #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

无字库12864液晶的驱动方法

无字库12864液晶的驱动方法 在制作单片机系统时,一般都需要用显示器件来显示单片机的工作状态并显示输出结果,如LED、数码管和液晶显示器等。LED最简单,但能给出的信息很少。数码管能清晰地显示数字和部分字母,但是耗电较大,不适合使用电池供电的装置。 常见的液晶显示器有段式液晶、字符液晶和图形液晶等。其中,段式液晶最省电,但对于通用显示使用起来不很方便,只能显示固定式数字或符号,而且需要专用驱动电路或特殊的单片机。 字符液晶(如1602)用得比较多,容易和单片机配合,但是一般都需要5V工作电压,虽然现在也有3V就可以工作的模块,但是体积还是较大,而且只能显示数字和西文字符,无法显示图形和汉字。 点阵液晶模块既可以显示ASCII字符,又可以显示汉字和图形,相对于前面几种,具有更大的灵活性,所以使用得越来越多。不过常用的图形液晶因为显示面积增加,体积比字符液晶(如1602)更大,价格也更贵。初学者要注意的是,12864图形点阵液晶随着厂家设计使用的驱动芯片不同,驱动程序有所区别,不像1602那样基本通用。 几种常见的12864图形点阵模块 12864点阵液晶模块分为带汉字库和不带汉字库两大类,目前带汉字库的通常是ST7920驱动,它可以工作在汉字字符方式和图形点阵方式,很多制作都用它,如果需要显示较多汉字,用它最为方便。 在显示汉字数量很少的场合,我们可以使用更加廉价的、不带字库的点阵液晶模块,这正是本文重点介绍的。它们的控制电路有KS0108和ST7565两种:KS0108很简单,一共只有7条指令,可是它没有串行接口;ST7565有20多条指令(最常用的也就几条),有串行接口,可选串行或并行工作。KS0108和ST7565的指令和上述带字库的ST7920区别较大,所以初学者买液晶时一定要搞清楚是哪种驱动电路。即使同样的驱动电路,不同厂家或者不同型号的产品,具体细节仍可能不同。例如有的片选信号是高电平有效,有的却是低电平有效,有的把显示区分为左右两半分别选取,有的却不加区分。所以使用前要仔细看厂家说明,如果没有,就要看液晶模块背面给出的具体型号,根据这个型号去查找使用手册。 笔者最近在淘宝网上搜寻到一款12864的图形点阵液晶,只有4cm宽、3.5cm高,显示面积为3.2cm宽、1.95cm高,非常小巧。更加难能可贵的是它可以在3V低电压工作,很适合我们制作小型便携装置。该液晶模块型号是SP12864FPD-12CSBE,由北京集粹电子设备公司出品,它的外形见图1。

最完整的12864测试程序

以下是RT12864引脚功能定义 引脚号 管脚 说明 1 Vss 电源地(0V)。 2 VDD 电源正(+5V)。 3 V0 LCD 驱动电压,应用时在VEE 与V0之间加一20K 可调电阻。 4 D/I 数据\指令选择: 高电平:数据D0-D7将送入显示RAM 低电平:数据D0-D7将送入指令寄存器执行。 5 R/W 读\写选择:高电平:读数据;低电平:写数据。 6 E 读写使能,高电平有效,下降沿锁定数据。 7 DB0 数据输入输出。 8 DB1 9 DB2 10 DB3 11 DB4 12 DB5 13 DB6 14 DB7 15 CS1 片选择信号,低电平时选择前64列。 16 CS2 片选择信号,低电平时选择后64列。 17 RET 复位信号,低电平有效。 18 VOUT LCD 驱动电源(-10V )。 19 LED+ 背光电源,LED+(+5V)。 20 LED- 背光电源,LED-(0V)。

以下是RT12864引脚功能定义 引脚号 管脚 说明 1 Vss 电源地(0V)。 2 VDD 电源正(+5V)。 3 V0 LCD驱动电压,应用时在VEE与V0之间加一20K可调电阻。4 D/I 数据\指令选择: 高电平:数据D0-D7将送入显示RAM 低电平:数据D0-D7将送入指令寄存器执行。 5 R/W

读\写选择:高电平:读数据;低电平:写数据。6 E 读写使能,高电平有效,下降沿锁定数据。7 DB0 数据输入输出。 8 DB1 9 DB2 10 DB3 11 DB4 12 DB5 13 DB6 14 DB7 15 CS1 片选择信号,低电平时选择前64列。 16 CS2 片选择信号,低电平时选择后64列。 17 RET 复位信号,低电平有效。 18 VOUT LCD驱动电源(-10V )。 19 LED+ 背光电源,LED+(+5V)。 20 LED- 背光电源,LED-(0V)。

常见液晶驱动芯片详解

本文主要是介绍一些常用的LCD驱动控制IC的型号,方便学习或正在使用的LCD的朋友能够更好地编写LCD的驱动程序。 因此各位朋友在选择LCD液晶模块的时候,在考虑到串行,还是并行的方式时,可根据其驱动控制IC的型号来判别,当然你还需要看你选择的LCD 模块引脚定义是固定支持并行,还是可选择并行或串行的方式。 一、字符型LCD驱动控制IC 市场上通用的8×1、8×2、16×1、16×2、16×4、20×2、20×4、40×4等字符型LCD,基本上都采用的KS0066作为LCD的驱动控制器 二、图形点阵型LCD驱动控制IC 1、点阵数122×32--SED1520 2、点阵数128×64 (1)ST7920/ST7921,支持串行或并行数据操作方式,内置中文汉字库(2)KS0108,只支持并行数据操作方式,这个也是最通用的12864点阵液晶的驱动控制IC (3)ST7565P,支持串行或并行数据操作方式 (4)S6B0724,支持串行或并行数据操作方式 (5)T6963C,只支持并行数据操作方式 3、其他点阵数如192×6 4、240×64、320×64、240×128的一般都是采用T6963c驱动控制芯片

4、点阵数320×240,通用的采用RA8835驱动控制IC 这里列举的只是一些常用的,当然还有其他LCD驱动控制IC,在写LCD驱动时要清楚是哪个型号的IC,再到网上去寻找对应的IC数据手册吧。后面我将慢慢补上其它一些常见的. 三 12864液晶的奥秘 CD1601/1602和LCD12864都是通常使用的液晶,有人以为12864是一个统一的编号,主要是12864的液晶驱动都是一样的,其实12864只是表示液晶的点阵是128*64点阵,而实际的12864有带字库的,也有不带字库的;有5V电压的,也有~5V(内置升压电路);归根到底的区别在于驱动控制芯片,常用的控制芯片有ST7920、KS0108、T6963C等等。 下面介绍比较常用的四种 (1)ST7920类这种控制器带中文字库,为用户免除了编制字库的麻烦,该控制器的液晶还支持画图方式。该类液晶支持68时序8位和4位并口以及串口。 (2)KS0108类这种控制器指令简单,不带字库。支持68时序8位并口。 (3)T6963C类这种控制器功能强大,带西文字库。有文本和图形两种显示方式。有文本和图形两个图层,并且支持两个图层的叠加显示。支持80时序8位并口。

12864液晶经典驱动程序,一看就懂,有详细的注释(C语言编写,不看后悔)

这个程序写得很好,自己也是看的别人写的很好的程序,但是它代码不够完整,注释不详细,经过自己的修改加以完善。另外我发现很多的测试代码都没有附上测试代码效果图,在本人的代码下面有自己拍的效果图,填补不足之处。 自己在找资料的过程中花掉很多的财富值,如果大家看得起该代码请评五分加以下载,在下感激不尽! /******************************************* 程序名称:12864液晶经典驱动程序(带中文字库) 功能:12864测试程序 修改作者:王程 修改时间:2014年2月5日23:22:32 ********************************************/ #include #define uchar unsigned char #define uint unsigned int // P0 为数据口 sbit LCD_RS=P2^0; //数据、命令选择端口 sbit LCD_RW=P2^1; //液晶读写控制 sbit LCD_EN=P2^2; //液晶使能控制 sbit PSB = P2^4; //模式选择1为并行0为串行 sbit RES = P2^5; //复位端口低电平复位,上电之前进行复位,为了稳定!unsigned char code DAT[] = "我爱我家"; //测试显示的汉字,下面的A为测试显示的英文 /******************************************* 函数名称:Delay_1ms (晶振为12M) 功能:延时约1ms的时间 参数:无 返回值:无 ********************************************/ void delay_1ms(uint x) { uinti,j; for(j = 0;j

串行LCM12864驱动程序收藏

串行LCM12864驱动程序收藏.txt为什么我们在讲故事的时候总要加上从前?开了一夏的花,终落得粉身碎骨,却还笑着说意义。串行LCM12864驱动程序收藏 //头文件 #include #include //引脚定义 sbit SID = P2^1; //数据 sbit SCLK = P2^2; //时钟 //函数声明 void lcm_w_word(unsigned char *str) ; //写字符例:lcm_w_word("您好!"); void lcm_w_test(bit start, unsigned char ddata); //(0,指令)(1,数据) void lcm_w_byte(unsigned char bbyte); //写一个字节给lcm void delaynms(unsigned int di); //延时 void lcm_init(void); //lcm初始化 void lcm_clr(void); //清屏 //初始化LCM void lcm_init(void) { delaynms(10); //启动等待,等LCM讲入工作状态 lcm_w_test(0,0x30); //8 位介面,基本指令集 lcm_w_test(0,0x0c); //显示打开,光标关,反白关 lcm_w_test(0,0x01); //清屏,将DDRAM的地址计数器归零 } //写指令或数据(0,指令)(1,数据) void lcm_w_test(bit start, unsigned char ddata) { unsigned char start_data,Hdata,Ldata; if(start==0) start_data=0xf8; //0:写指令 else start_data=0xfa; //1:写数据 Hdata=ddata&0xf0; //取高四位

12864显示程序,51单片机,C语言

12864显示程序,51单片机,C语言 可显示固定中文,字符,数字; 可实时动态刷新显示数字,字符; #include sbit rs=P1^2; sbit rw=P1^1; sbit cs=P1^0; sbit psb=P1^3; unsigned char code table[]={" X0: Y0: "}; unsigned char code table1[]={"现在X1: Y1: "}; unsigned char code table2[]={"划线模式:"}; unsigned char code table3[]={"开始暂停"}; void delay(unsigned char z) //延时 { unsigned i,j; for(i=0;i

cs=0; P2=com; delay(5); cs=1; delay(5); cs=0; } void write_date(unsigned char dat) //写数据 { rs=1; rw=0; cs=0; P2=dat; delay(5); cs=1; delay(5); cs=0; } void pos(unsigned char x,unsigned char y) //起点函数{ unsigned char pos;

if(x==0) x=0x80; else if(x==1) x=0x90; else if(x==2) x=0x88; else if(x==3) x=0x98; pos=x+y/2; write_com(pos); } void init() { unsigned char i; psb=1; //1并行,0串行 write_com(0x30); //基本指令操作 delay(5); write_com(0x0c); //显示开,关光标 delay(5); write_com(0x01); //清除led的显示内容delay(5); pos(0,0);

基于STM32--LCD12864驱动程序

基于STM32--LCD12864驱动程序

STM32 LCD12864驱动程序(头文件)(2012-05-29 21:25:08)转载▼ 标签:杂谈 #ifndef LCD12864_H #define LCD12864_H #define LCD_CONTROL GPIOD //默认LCD12864的控制口在PD口 #define LCD_DATAPORT GPIOD //默认LCD12864的数据口在PD口 #define LCD_RESET_Pin GPIO_Pin_12 //默认LCD12864的复位引脚连接到PD.12 也可不用 #define LCD_RS_Pin GPIO_Pin_13 //默认LCD12864 RS -- PD.13 #define LCD_RW_Pin GPIO_Pin_14 //默认LCD12864 RW -- PD.14 #define LCD_EN_Pin GPIO_Pin_15 //默认LCD12864 E -- PD.15 #define LCD_CONTROL_CLOCK RCC_APB2Periph_GPIOD //默认LCD12864的控制口时钟

#define LCD_DATAPORT_CLOCK RCC_APB2Periph_GPIOD //默认LCD12864的数据口时钟 #define LCD_RS_1 LCD_CONTROL->BSRR &=~LCD_RS_Pin;LCD_CONTROL->BSRR |=LCD_RS_Pin //RS置高电平 #define LCD_RS_0 LCD_CONTROL->BRR &=~LCD_RS_Pin;LCD_CONTROL->BRR |=LCD_RS_Pin //RS置低电平 #define LCD_RW_1 LCD_CONTROL->BSRR &=~LCD_RW_Pin;LCD_CONTROL->BSRR |=LCD_RW_Pin //RW置高电平 #define LCD_RW_0 LCD_CONTROL->BRR &=~LCD_RW_Pin;LCD_CONTROL->BRR |=LCD_RW_Pin //RW置低电平 #define LCD_EN_1 LCD_CONTROL->BSRR &=~LCD_EN_Pin;LCD_CONTROL->BSRR |=LCD_EN_Pin //EN置高电平 #define LCD_EN_0 LCD_CONTROL->BRR &=~LCD_EN_Pin;LCD_CONTROL->BRR |=LCD_EN_Pin //EN置低电平

12864液晶屏串口驱动程序

12864液晶屏串口驱动程序代码 12864液晶屏驱动采用4_Wire-SPI串口驱动方式,可有效的减少IO口的占用,方便使用调试,本程序的代码驱动IC为ST7565R,是基于STC89C53RC的12864串行模式的程序,硬件电路连接只需要5根线:RS、 SDA、 SCLK、RES、CS 。 程序已经调试通过,很好用。代码如下: //---------------------------------------------------------------------- /*hotdisplay CO,.LTD.*/ // Module : HTG12864 // Lanuage : C51 Code // Create : // Version : 1.0 // Date : OCT-21-2016 // LCM Drive IC : ST7565R // INTERFACE : 4_Wire-SPI // MCU : STC89C53RC // VDD : 3.3V //********************************************************* ****************** #include #define uchar unsigned char

#define uint unsigned int uchar bdata transdata; sbit R_S= P3^5; sbit RES= P3^4; sbit SCK= P1^6; sbit SDA= P1^7; sbit CS1= P3^7; sbit transbit = transdata^7 ; #define Page 0xb0 //##########################################// void Comwrite(unsigned char com); //D′??á?3ìDò// void Datawrite(unsigned char dat); void Delay(unsigned int time); //?óê±×ó3ìDò// char code Hanzi[]={ 0xFF,0x01,0x01,0x09,0xF9,0x09,0x01,0x01,0x09,0xF9,0x09,0xE1 ,0x11,0x09,0x09,0x09, 0x11,0xE1,0x01,0x19,0x09,0x09,0xF9,0x09,0x09,0x19,0x01,0x01 ,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x09,0xF9,0x09,0x09,0x09,0x11,0xE1,0x01,0x01 ,0x09,0x09,0xF9,0x09,

12864液晶显示程序(图案+文字)

#include sbit LCD12864_RS = P2^0; //RS控制引脚 sbit LCD12864_RW = P2^1; //RW控制引脚 sbit LCD12864_EN = P2^2; //EN控制引脚 sbit LCD12864_PSB = P2^3; //模式选择引脚,ST7920控制器,1为8位并行接口,0为串行接口 #define LCDPORT P0//数据引脚 void LCD12864_Init(void); //LCD12864初始化函数 void LCD12864_WriteInfomation(unsigned char ucData,bit bComOrData); //向LCD12864写入数据,bComOrData为1时写入的是数据,0时写入的是命令 void LCD12864_CheckBusy(void);//忙检测函数 void LCD12864_DisplayImage(unsigned char code *ucImage); void Delay(unsigned int uiCount); unsigned char code ucPic1[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x06,0x30,0x01,0xE0,0x00,0x00,0x2A,0x00,0x00,0xD8,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0x7B,0x63,0xE0,0x00,0x00,0x22,0x00,0x01,0x24,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0xFB,0x63,0x07,0x34,0x00,0x14,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00, 0x00,0x0D,0xDB,0x63,0x01,0xBC,0x00,0x08,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x1B,0x63,0x07,0xB0,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x1B,0x63,0xED,0xB0,0xDB,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x19,0xE1,0xE7,0xB0,0xDB,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x19,0xE1,0xE7,0xB0,0xDB,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0A,0x00,0x00,0xFF,0xF8,0xE0,0x05,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x06,0xC0,0x15,0x00,0x1F,0xFF,0xFF,0xC0,0x02,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x09,0x20,0x11,0x00,0xFB,0xFF,0xE1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x08,0x20,0x0A,0x03,0x9F,0x00,0x9E,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x40,0x04,0x0E,0x70,0x00,0x81,0xC7,0x80,0x01,0x40,0x00,0x00,0x00,0x00, 0x00,0x02,0x80,0x00,0x1D,0x80,0x00,0xE0,0x61,0xE0,0x02,0xA0,0x00,0x00,0x00,0x00, 0x00,0x01,0x00,0x00,0x77,0x9F,0xFC,0xF0,0x18,0xF8,0x02,0x20,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xDF,0x00,0x00,0xF3,0x0C,0x3C,0x01,0x40,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x03,0x9E,0x00,0x00,0xF8,0x06,0x1E,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x0E,0x30,0x01,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x0E,0x30,0x01,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xC0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x0F,0xFD,0xFF,0xFF,0xFF,0xFF,0xFC,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,

相关文档
最新文档