液晶12864COG 液晶模块串口/并口ST7565R带背3.3v 12864-14显示屏
➤ 液晶模块
在淘宝购买到 液晶12864COG 液晶模块串口/并口ST7565R带背3.3v 12864-14显示屏 用于之后人工神经网络模式识别图片采集使用。
▲ 液晶外形
1.接口定义
▲ 外部引脚定义
▲ 不同命令模式对应的引线
▲ 模块后面设置接口串并对应的电阻
▲ ST7565R串口与并口对应情况
▲ 在RESET管脚增加一个10kΩ的上拉电阻
2.驱动器ST7565R
可以参照网络上对应的 ST7565R开发程序 。
➤ 02实验电路板1
1.电路板设计制作
使用ADuC845-3作为实验控制器。基于ADuC845来测试ST7565R液晶显示器的功能。
▲ 实验电路SCH
※ 错误: 在开始的时候将CS,ID设置错误了。将其颠倒过来即可。
▲ 实验电路板PCB
2.初步测试2
根据 创界uVision下的ADuC845的工程文件 中描述的方式对于开发板建立测试工程文件并进行程序下载。
C51\ADuC845\Test\2020\TestLCD\TestLCD.uvproj
3.制作LCD外部接口
使用串口对外接口的定义:
PIN14 | PIN12 | PIN11 | PIN10 | PIN9 | PIN8 | PIN7 |
---|---|---|---|---|---|---|
DI | CS | LEDA | VSS | VDD | SI | SCK |
▲ LCD对外引脚
▲ 连线的关系
▲ LCD外部引脚的设计
★ 注意:
使用电阻将LCD的reset管脚连接到VCC.这个电阻可以使用R14处焊接10kΩ电阻。
▲ 使用10k欧姆将RESET连接到VCC
➤ 03液晶底层程序
1.底层协议
根据 ST7565R数据手册 描述,ST7565R的SPI接口协议协议为:
▲ ST7565 SPI接口协议
▲ ST7565所有命令
2.主要子程序
(1) 延迟子程序
- ST7565Nop(unsigned int nCommand);
nCount = 446;
while(1) {ST7565Nop(nCount);ST7565_SCK = 1;ST7565Nop(nCount);ST7565_SCK = 0;}
Command | 25 | 50 | 100 | 250 | 500 | 1000 | 2000 |
---|---|---|---|---|---|---|---|
Frequency | 8642.6 | 4390.9 | 2213.2 | 889.7 | 445.5 | 222.9 | 111.5 |
▲ 设置Count与延迟之间的关系
使用最后一个数值求得Count与延迟之间的关系:
Rc/t=DelayCount=2.2422us/countR_{c/t} = {{Delay} \over {Count}} = 2.2422\,\,us/countRc/t=CountDelay=2.2422us/count
所以,延迟1ms(1000us)需要设置Count为:
Count=1000Rc/d=10002.2422=445.99Count = {{1000} \over {R_{c/d} }} = {{1000} \over {2.2422}} = 445.99Count=Rc/d1000=2.24221000=445.99
实际测量得到的延迟为:1001.34us。
(2) 其它子程序
/*
**==============================================================================
** ST7565.H: -- by Dr. ZhuoQing, 2020-10-31
**
** Description:
**
**==============================================================================
*/
#ifndef __ST7565__
#define __ST7565__
//------------------------------------------------------------------------------
#ifdef ST7565_GLOBALS#define ST7565_EXT
#else#define ST7565_EXT extern
#endif // ST7565_GLOBALS
//------------------------------------------------------------------------------
//==============================================================================
sbit ST7565_SCK = P3^4;
sbit ST7565_SI = P3^5;
sbit ST7565_CS = P3^6;
sbit ST7565_DI = P3^7;//------------------------------------------------------------------------------
void ST7565Init(void);
void ST7565Nop(unsigned int nTime); // nTime:-->Delay(us) = 2.2422 us/counc// For 1000us: nTIme = 446
#define ST7565_DELAY_MS ST7565Nop(446)
void ST7565DelayMS(unsigned int nms);void ST7565OutByte(unsigned char ucByte);void ST7565Command(unsigned char ucByte);
void ST7565Data(unsigned char ucByte);//------------------------------------------------------------------------------
#define ST7565_CMD_DISPLAY_ON 0xaf
#define ST7565_CMD_DISPLAY_OFF 0xae
#define ST7565_DISPLAY_ON ST7565Command(ST7565_CMD_DISPLAY_ON)
#define ST7565_DISPLAY_OFF ST7565Command(ST7565_CMD_DISPLAY_OFF)void ST7565StartLine(unsigned char ucLines);
void ST7565SetPage(unsigned char ucPages);
void ST7565SetColumn(unsigned char ucCols);
void ST7565WriteDataDim(unsigned char *pucByte, int nNumber);#define ST7565_SDD_NORMAL ST7565Command(0xa0)
#define ST7565_SDD_REVERSE ST7565Command(0xa1)
#define ST7565_DISPLAY_NORMAL ST7565Command(0xa6)
#define ST7565_DISPLAY_REVERSE ST7565Command(0xa7)
#define ST7565_DISPLAY_ALL_OFF ST7565Command(0xa4)
#define ST7565_DISPLAY_ALL_ON ST7565Command(0xa5)
#define ST7565_BIAS_1 ST7565Command(0xa2)
#define ST7565_BIAS_2 ST7565Command(0xa3)
#define ST7565_READWRITE_MODE ST7565Command(0xe0)
#define ST7565_END ST7565Command(0xee)
#define ST7565_RESET ST7565Command(0xe2)
#define ST7565_NOP ST7565Command(0xe3)void ST7565Clear(unsigned char ucData1);//------------------------------------------------------------------------------
void ST7565GotoXY(unsigned char ucX, unsigned char ucY);
void ST7565SetPoint(unsigned char ucX, unsigned ucY);//------------------------------------------------------------------------------
extern const unsigned char code F6x8[][6];
extern const unsigned char code F8X16[];void ST7565OutChar8X16(unsigned char ucX, unsigned char ucY, unsigned char ucChar);
void ST7565OutChar6X8(unsigned char ucX, unsigned char ucY, unsigned char ucChar);void ST7565OutString8X16(unsigned char ucX, unsigned char ucY, char * p);
//void ST7565OutString8X16C(unsigned char ucX, unsigned char ucY, const char * p);
void ST7565OutString6X8(unsigned char ucX, unsigned char ucY, char * p);
//void ST7565OutString6X8C(unsigned char ucX, unsigned char ucY, const char * p);#define ST7565_Print(x, y, p) ST7565OutString8X16(x, y, p)
#define ST7565_print(x, y, p) ST7565OutString6X8(x, y, p)//==============================================================================
// END OF THE FILE : ST7565.H
//------------------------------------------------------------------------------
#endif // __ST7565__
/*
**==============================================================================
** ST7565.C: -- by Dr. ZhuoQing, 2020-10-31
**
**==============================================================================
*/
#include <ADUC845.h>
#include <stdio.h>
#include <intrins.h>
#include "uc845.h"//------------------------------------------------------------------------------
#define ST7565_GLOBALS 1 // Define the global variables
#include "ST7565.H"//------------------------------------------------------------------------------
void ST7565Init(void) {ST7565_SCK = 1;ST7565_SI = 1;ST7565_DI = 1;ST7565_CS = 1; //--------------------------------------------------------------------------ST7565DelayMS(10);ST7565Command(0xa2); // Set Bias:0xa2 ST7565Command(0xc8); // Command Direction Select:// bit3=1:Reverse; bit3=0:normal ST7565Command(0x2f); // Power control setST7565Command(0x24); // Set ra/rb 0x25ST7565Command(0x81); // Set ContrastST7565Command(0x27); // Set ra/rb ST7565Command(0xaf); // Display ONST7565Clear(0);
}//------------------------------------------------------------------------------
void ST7565Nop(unsigned int nTime) {while(nTime --) {_nop_();}}void ST7565DelayMS(unsigned int nms) {unsigned int i;for(i = 0; i < nms; i ++)ST7565_DELAY_MS;
}//------------------------------------------------------------------------------
#define ST7565_CLK_NOP 0
//------------------------------------------------------------------------------
void ST7565OutByte(unsigned char ucByte) {unsigned char ucMask, i;ucMask = 0x80;ST7565_SCK = 1;for(i = 0; i < 8; i ++) {ST7565_SCK = 0;if(ucByte & ucMask) ST7565_SI = 1;else ST7565_SI = 0;ST7565Nop(ST7565_CLK_NOP);ST7565_SCK = 1;ST7565Nop(ST7565_CLK_NOP);ucMask >>= 1; }
}//------------------------------------------------------------------------------
void ST7565Command(unsigned char ucByte) {ST7565_CS = 0;ST7565_DI = 0; ST7565OutByte(ucByte);ST7565_CS = 1;
}//------------------------------------------------------------------------------
void ST7565Data(unsigned char ucByte) {ST7565_CS = 0;ST7565_DI = 1; ST7565OutByte(ucByte);ST7565_CS = 1;
}void ST7565StartLine(unsigned char ucLines) {unsigned char ucCommand;ucCommand = ucLines & 0x3f;ucCommand |= 0x40;ST7565Command(ucCommand);
}void ST7565SetPage(unsigned char ucPages) {unsigned char ucCommand;ucCommand = ucPages & 0xf;ucCommand |= 0xb0;ST7565Command(ucCommand);}void ST7565SetColumn(unsigned char ucCols) {unsigned char ucCommand;ucCommand = ucCols >> 4;ucCommand |= 0x10;ST7565Command(ucCommand);ucCommand = ucCols & 0xf;ST7565Command(ucCommand);}//------------------------------------------------------------------------------
void ST7565WriteDataDim(unsigned char *pucByte, int nNumber) {unsigned int i;ST7565_DI = 1;ST7565_CS = 0;for(i = 0; i < nNumber; i ++)ST7565OutByte(*(pucByte ++));ST7565_CS = 1;
}//------------------------------------------------------------------------------
void ST7565Clear(unsigned char ucData1) {unsigned char i, j, m;m = 0xb0; // Page Address Setfor(i = 0; i < 8; i ++) {ST7565Command(m);ST7565Command(0x10); // Set Column addressST7565Command(0x00);for(j = 0; j < 192; j ++) {ST7565Data(ucData1);}m ++;}
}//------------------------------------------------------------------------------
void ST7565GotoXY(unsigned char ucX, unsigned char ucY) {ST7565SetPage(ucY);ST7565SetColumn(ucX);
}void ST7565SetPoint(unsigned char ucX, unsigned ucY) {unsigned char ucY8;unsigned char ucByte;ucY8 = ucY >> 3;ucY = ucY & 0x7;ucByte = 1 << ucY;ST7565SetPage(ucY8);ST7565SetColumn(ucX);ST7565Data(ucByte);}//------------------------------------------------------------------------------
const unsigned char code F6x8[][6] =
{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // ${ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ({ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ){ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // -{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // .{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // /{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // :{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // <{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // ={ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // >{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L{ 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M{ 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q{ 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R{ 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V{ 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [{ 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // '{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } // horiz lines
};//======================================================
// 128X64I
// !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
//======================================================
const unsigned char code F8X16[]=
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 00x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//!10x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"20x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//#30x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$40xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//%50x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//&60x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//'70x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//(80x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//)90x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//*100x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+110x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//,120x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//-130x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//.140x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,///150x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0160x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1170x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2180x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3190x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4200x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5210x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6220x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7230x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8240x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9250x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//:260x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//;270x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//<280x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//=290x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//>300x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//?310xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@320x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A330x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B340xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C350x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D360x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E370x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F380xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G390x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H400x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I410x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J420x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K430x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L440x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M450x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N460xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O470x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P480xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q490x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R500x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S510x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T520x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U530x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V540xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W550x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X560x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y570x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z580x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[590x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\600x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//]610x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^620x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_630x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//`640x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a650x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b660x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c670x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d680x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e690x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f700x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g710x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h720x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i730x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j740x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k750x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l760x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m770x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n780x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o790x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p800x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q810x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r820x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s830x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t840x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u850x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v860x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w870x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x880x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y890x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z900x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{910x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//|920x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//}930x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~94};//------------------------------------------------------------------------------
void ST7565OutChar8X16(unsigned char ucX, unsigned char ucY, unsigned char ucChar) {unsigned char i;int nBiase;if(ucChar > ' ') ucChar -= ' '; nBiase = ucChar;nBiase *= 16;ST7565GotoXY(ucX, ucY);for(i = 0; i < 8; i++) ST7565Data(F8X16[nBiase ++]);ST7565GotoXY(ucX, ucY + 1);for(i = 0; i < 8; i++) ST7565Data(F8X16[nBiase ++]);
}void ST7565OutChar6X8(unsigned char ucX, unsigned char ucY, unsigned char ucChar) {unsigned char i;int nBiase;if(ucChar > ' ') ucChar -= ' '; nBiase = ucChar;ST7565GotoXY(ucX, ucY);for(i = 0; i < 6; i++) ST7565Data(F6x8[nBiase][i]);
}//------------------------------------------------------------------------------
void ST7565OutString8X16(unsigned char ucX, unsigned char ucY, char * p) {unsigned char c;while(*(p)) {c = *(p ++);ST7565OutChar8X16(ucX, ucY, c);ucX += 8;}}void ST7565OutString6X8(unsigned char ucX, unsigned char ucY, char * p) {unsigned char c;while(*(p)) {c = *(p ++);ST7565OutChar6X8(ucX, ucY, c);ucX += 6;}
}/*
void ST7565OutString8X16C(unsigned char ucX, unsigned char ucY, const char * p) {unsigned char c;while(*(p)) {c = *(p ++);ST7565OutChar8X16(ucX, ucY, c);ucX += 8;}}
void ST7565OutString6X8C(unsigned char ucX, unsigned char ucY, const char * p) {unsigned char c;while(*(p)) {c = *(p ++);ST7565OutChar6X8(ucX, ucY, c);ucX += 6;}}
*///==============================================================================
// END OF THE FILE : ST7565.C
//------------------------------------------------------------------------------
➤ 03测试
下面是测试串口命令的相关命令:
else IFARG0("set") {sscanf(SDA(1), "%x", &nX);sscanf(SDA(2), "%x", &nY);sscanf(SDA(3), "%x", &nData);ST7565GotoXY(nX, nY); ST7565Data((unsigned char)nData);
// printf("%x %x %x", nX, nY, nData);} else IFARG0("clear") {sscanf(SDA(1), "%x", &nX);ST7565Clear((unsigned char)nX);} else IFARG0("line") {for(nX = 0; nX < 64; nX ++) {ST7565SetPoint(nX, nX);}} else IFARG0("c16") {sscanf(SDA(1), "%x", &nX);sscanf(SDA(2), "%x", &nY);sscanf(SDA(3), "%c", &c);ST7565OutChar8X16(nX, nY, c);} else IFARG0("c8") {sscanf(SDA(1), "%x", &nX);sscanf(SDA(2), "%x", &nY);sscanf(SDA(3), "%c", &c);ST7565OutChar6X8(nX, nY, c);} else IFARG0("s16") {sscanf(SDA(1), "%x", &nX);sscanf(SDA(2), "%x", &nY);ST7565OutString8X16(nX, nY, SDA(3));} else IFARG0("s8") {sscanf(SDA(1), "%x", &nX);sscanf(SDA(2), "%x", &nY);ST7565OutString6X8(nX, nY, SDA(3));}
▲ 输出字符
➤ 04:结论
- 给出了对于购买液晶12864COG 液晶模块串口/并口ST7565R带背3.3v 12864-14显示屏制作统一接口的方案:形成统一的PIN6的接口;
- 编写了ST7565R的驱动程序。可以输出字符串。
1.LQ-COG12864
改变接口对应的顺序:
特别注意:需要外部将RST上拉到VCC;
▲ LQ-COG1284
2.TOPWAY LM6063A
- LM6063A的数据手册
使用和上面定义相同的交叉引线; 同样需要将RST上拉10k至VCC。
▲ ###gs 2.TOPWAY LM6063
▲ 外部管脚定义
通过上面的测试,可以看到基于ST7565R控制器外部接口具有通用方式。
对于不同的LCD,需要调整相应的初始化的参数:对比度,以及对应的坐标进行调整。
■ 相关文献链接:
- 液晶12864COG 液晶模块串口/并口ST7565R带背3.3v 12864-14显示屏
- ST7565R开发程序
- 创界uVision下的ADuC845的工程文件
- ST7565R数据手册
实验板的工程文件,基于ADC815:AD\ADuC845\2020\TestLCD7565R.PcbDoc * ↩︎
TestLCD工程文件:C51\ADuC845\Test\2020\TestLCD\TestLCD.uvproj ↩︎
液晶12864COG 液晶模块串口/并口ST7565R带背3.3v 12864-14显示屏相关推荐
- Java串口并口程序编写
Java在传统上感觉和硬件打交道的比较少,这部分工作用C语言的比较多. 但并不是说Java不具备这样的能力. Sun就发布了Java和串口以及并口的开发包.但是在正常的搜索中只能找到Linux和Sol ...
- linux自带终端访问com口,配置实现通过串口(com 口、RS232 接口)终端控制 Linux 系统...
开始之前,请确认机器有串口(com口, RS232接口),如果没有,那就没有办法达到通过串口控制机器的目的了.当然,也可以额外给机器安装一个带串口的 PCI 模块,然后想办法将模块驱动起来(内核默认能 ...
- 串口/COM口、USB、RS232、RS422、RS485的区别
这些名字初了解总是容易弄混,网上总是没有将这些东西做一个明确的分类.我尝试通过资料进行分类 串口/COM口.USB是物理接口形式,属于硬件物理层面. RS232.RS422.RS485,他们都是由美国 ...
- 非常好用的com串口调试助手,带源码和注释
非常好用的com串口调试助手,带源码和注释.适合调试上位机数据采集和学习使用编号:179650103450098XiaoxiaoQAQ
- 串口 COM口 USB-TTL RS-232 RS-485 不同标准 区别 释疑
转载地址:http://blog.sina.com.cn/s/blog_6566538d0100r7p8.html 有几个概念玩嵌入式的同志经常搞混.也不怨谁,现在的卖家为了一点可怜的销量都在故意混淆 ...
- 测试软件为什么不能识别串口,COM口识别,状态正常,设备无法通讯的解决方法...
COM口识别,状态正常,设备无法通讯的解决方法 打开注册表HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//COM Name Arbite ...
- Java串口并口程序编写(转)
2012-09-13 19:54 分享到: Java在传统上感觉和硬件打交 ...
- 串口 COM口 TTL RS-232 RS-485 区别(转载)
Point: 1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电平协议:TTL+5V逻辑1,0V逻辑0).USB就不一样了,USB 是一种集各种软硬件 ...
- C# 串口 并口 打印代码
一.调用CodeSoft打印: 利用第三方软件codesofe进行label设计,然后在程序中调用打印.这种方式维护起来比较方便,手动调整label各参数指标即可. 准备工作:1.安装打印机驱动 2 ...
最新文章
- 《LeetCode力扣练习》第55题 跳跃游戏 Java
- The copy of Windows is not genuine-微软自己用盗版
- VS2008常见编译错误(总结篇)
- java传值和通过引用传递
- Testing BlogJet
- mmap函数_Linux内存映射mmap原理分析
- 数值的加减会改变python中id_在Python中将一个变量的值赋给另一个变量时会发生什么?...
- android rom 刷机包下载地址,谷歌Android5.0 Nexus系列安卓ROM刷机包镜像/驱动下载地址发布...
- c语言char怎么用?
- 世界上最权威的68句创业名言
- PokemonGo完美度算法!是风姐还是松岛枫?--工地斗天地斗天马座
- 服务器被劫持怎么修复不了,电脑DNS被劫持怎么修复?电脑dns被劫持的完美解决方法...
- java权限控制是什么_论Java访问权限控制的重要性
- (新)B站视频播放源地址获取及B站视频下载
- 汽车行业,怎么样通过论坛快速引流?
- 微软翻译离线简体中文服务器,第一次使用微软翻译应用只有英语离线语言包
- 机器视觉之工业摄像机知识点(二)
- java,jsp页面添加提示图以及提示音乐
- 谷歌公布13GB 3D扫描数据集:17大类、1030个家用物品
- 直线相交的交点(Line-Line Intersection)
热门文章
- 使用@Controller注解为什么要配置mvc:annotation-driven /
- SQL Server 2012--Reporting Service报表阅览工具 - Power View【转载】
- jQuery实现自动左右滚动效果的代码实例
- 《精通Python设计模式》学习结构型之MVC模式
- ECS控制台支持创建资源时绑定标签
- vs2010,vs2012注释快捷键
- [Java]读取文件方法大全
- Exchange2003-2010迁移系列之七
- php5.5 php5.6,php 5.5 5.6的区别有哪些
- python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...