📄 tg126410.c
字号:
//-----------------------------------------------------------------
// 名称: TG126410LCD显示驱动程序(SEG1565) (不带字库)
//-----------------------------------------------------------------
#include <pic.h>
#include "TG12610.h"
//SEG1565显示地址控制命令
#define PAGE 0xB0 //页地址
#define COL_H4 0x10 //列地址高四位
#define COL_L4 0x00 //列地址低四位
#define LINE 0x40 //行地址
//大写字母R的8*8点阵(纵向取模,字节倒序)
const INT8U R[8] = { 0x00,0xFE,0x12,0x32,0x52,0x8C,0x00,0x00 };
//案例文件夹下的一幅图像点阵(存于程序Flash空间中)------------------------------
const INT8U ICONs_Picture[1024] = { //纵向取模,字节倒序
0xFF,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0xC5,0x45,0x85,
0x45,0xC5,0x05,0xC5,0x45,0x85,0x05,0xC5,0x05,0x05,0x05,0x85,0x45,0x85,0x05,0xC5,
0x45,0x85,0x05,0x05,0xC5,0x05,0xC5,0x45,0x85,0x05,0xC5,0x45,0x45,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x05,0x05,0xC5,0xC5,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0xC5,0xC5,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x01,
0x00,0x07,0x00,0x07,0x01,0x00,0x00,0x07,0x84,0x84,0x80,0x07,0x01,0x07,0x00,0x07,
0x85,0x82,0x00,0x00,0x07,0x00,0x07,0x04,0x03,0x00,0x07,0x05,0x05,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,0xFC,0xFC,0x00,0x00,0xF8,0xFC,0x8C,0x8C,0x8C,0x8C,
0x8C,0x0C,0x0C,0x0C,0xFC,0xF8,0x00,0x00,0xF8,0xFC,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,
0x8C,0x04,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,0xC0,0xC0,0xD0,0x40,0x46,0x5F,0x5F,0xDF,0xDE,0x18,0xF0,0xC0,0x8F,
0x3F,0x7F,0xFF,0xFC,0xF8,0xE0,0xC0,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,0xC0,0xDF,0xDF,0x50,0x50,0x50,0x51,0xD1,0xD1,0x11,0x31,
0x3F,0x1F,0x00,0x00,0x1F,0x3F,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
0x3F,0x1F,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,0x7F,0x7F,0x63,0x51,0x78,0x7C,0x78,0x7F,0x7F,0x00,0x0F,0x03,0x01,
0x00,0x00,0x01,0x03,0x0F,0x0F,0x07,0x01,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,0x7F,0x7F,0x63,0x51,0x78,0x7C,0x78,0x7F,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,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x40,0xC0,0x40,
0x40,0x80,0x00,0x40,0xC0,0x40,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x40,
0xC0,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0xC0,0x40,0x40,
0x00,0x40,0xC0,0x40,0x40,0x80,0x00,0x40,0xC0,0x40,0x40,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x40,0x40,0xC0,0x40,0x40,0x00,0x80,0x40,0x40,0x40,0xC0,0x00,0x40,0x40,
0xC0,0x40,0x40,0x00,0x80,0x40,0x40,0x40,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xC0,0x40,0x40,0xC0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x03,0x3C,0x03,0x3F,0x00,0x20,0x3F,0x22,
0x02,0x01,0x00,0x20,0x3F,0x20,0x20,0x20,0x30,0x20,0x3E,0x09,0x0F,0x38,0x20,0x20,
0x3F,0x22,0x22,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,
0x00,0x20,0x3F,0x20,0x20,0x1F,0x00,0x20,0x3F,0x22,0x27,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x31,0x22,0x22,0x24,0x18,0x00,0x20,0x20,
0x3F,0x20,0x20,0x00,0x31,0x22,0x22,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3E,0x01,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,0x40,0xC0,0x40,0x00,0xC0,0x40,0xB0,0x48,0x48,0x48,0xB0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x78,0x48,0x48,0x48,0x88,0x00,0x10,0x08,0x48,0x48,0xB0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0xFC,0x24,0x24,0x18,0x00,0x20,0xE0,0x40,0x20,0x20,0x00,0x00,
0xC0,0x20,0x20,0xC0,0x00,0x00,0x20,0xF8,0x24,0x24,0x04,0x00,0xC0,0xA0,0xA0,0xC0,
0x00,0x00,0x60,0xA0,0xA0,0x20,0x00,0x00,0x60,0xA0,0xA0,0x20,0x00,0x00,0x20,0xE4,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x81,0x86,0x83,0x80,0x80,0x83,0x84,0x84,0x84,0x83,0x80,0x80,0x84,
0x80,0x80,0x80,0x80,0x82,0x84,0x84,0x84,0x83,0x80,0x82,0x84,0x84,0x84,0x83,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x82,0x83,0x82,0x80,0x80,0x80,0x82,0x83,0x82,0x80,0x80,0x80,0x80,
0x81,0x82,0x82,0x81,0x80,0x80,0x82,0x83,0x82,0x82,0x80,0x80,0x81,0x82,0x82,0x82,
0x80,0x80,0x82,0x82,0x82,0x83,0x80,0x80,0x82,0x82,0x82,0x83,0x80,0x80,0x82,0x83,
0x82,0x80,0x80,0x80,0x82,0x80,0x80,0x82,0x80,0x80,0x82,0x80,0x80,0x80,0x80,0xFF
};
//-----------------------------------------------------------------
// 写指令
//-----------------------------------------------------------------
void Write_Command(INT8U cmd)
{
CS1 = 0; A0 = 0; __delay_us(4); //A0设为0,选择命令寄存器
CS1 = 1;
}
//-----------------------------------------------------------------
// 写数据
//-----------------------------------------------------------------
void Write_Data(INT8U dat)
{
CS1 = 0; A0 = 1; __delay_us(4); //A0设为1,选择数据寄存器
CS1 = 1;
}
//-----------------------------------------------------------------
// LCD初始化
//-----------------------------------------------------------------
void LCD_Initialize()
{
RES = 0; __delay_ms(10); RES = 1;
Write_Command(0xA2);__delay_ms(10); //设置偏压比为1/7
Write_Command(0xA1);__delay_ms(10); //设置段驱动方为逆向
Write_Command(0xC8);__delay_ms(10); //设置COM扫描方为逆向
Write_Command(0x27);__delay_ms(10); //设置电阻率
Write_Command(0x81);__delay_ms(10); //设置电量寄存器
Write_Command(0x1B);__delay_ms(10); //设置电量
Write_Command(0x2C);__delay_ms(10); //依次打开倍压电路
Write_Command(0x2E);__delay_ms(10); //内部电压调整
Write_Command(0x2F);__delay_ms(10); //开启偏置电路电路功能
Write_Command(0xA4);__delay_ms(10); //正常显示所有点
Write_Command(0xAF);__delay_ms(10); //开显示
}
//-----------------------------------------------------------------
// 全屏显示或全屏不显示(形成全黑色屏幕/或底色屏幕)
//-----------------------------------------------------------------
void Full_Disp_ON_OFF(INT8U k)
{
}
//-----------------------------------------------------------------
// 显示边框
//-----------------------------------------------------------------
void Disp_Frame()
{
INT8U i,j;
//第0页输出-----------------------------------------------------
Write_Command(LINE); //设置显示起始行
Write_Command(PAGE); //选择第0页
Write_Command(COL_H4); //设置起始列为第0列
Write_Command(COL_L4);
Write_Data(0xFF); //垂直输出1列,8个点
for(j = 0; j < 126; j++) //输出126列
{
}
Write_Data(0xFF); //该页第127列输出8个点
//第1~6页输出--------------------------------------------------
for(i = 1; i < 7; i++) //输出1~6页
{
}
//第7页输出-----------------------------------------------------
Write_Command(PAGE + 7); //输出第7页
Write_Command(COL_H4); //设置列地址高四位
Write_Command(COL_L4); //设置列地址低四位
Write_Data(0xFF); //第0列输出8个点
for(j = 0; j < 126; j++) //输出126列
{
}
Write_Data(0xFF); //最后一页最后一列输出8个点
}
//-----------------------------------------------------------------
// 正显与反显棋板
//-----------------------------------------------------------------
void Disp_Checker(INT8U k)
{
INT8U i,j;
Write_Command(LINE); //设置显示起始行
for(i = 0; i < 8; i++) //全屏共8页
{
}
}
//-----------------------------------------------------------------
// R字符平铺画面
//-----------------------------------------------------------------
void Disp_R()
{
INT8U i,j,k;
Write_Command(LINE); //设置显示起始行地址
for(i = 0; i < 8; i++) //全屏共输出8页
{
}
}
//-----------------------------------------------------------------
// 显示文件夹下的一幅图片(下面的代码与上一函数相同,仅使用了不同点阵数组)
//-----------------------------------------------------------------
void Disp_Picture()
{
INT8U i,j;
Write_Command(LINE); //设置显示起始行地址
for(i = 0; i < 8; i++) //全屏共输出8页
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -