📄 tcb8000.c
字号:
#include "TCB8000.h"
uint8 PkgFgColor[]={3,0x20,0xe0,0x07}; // 前景颜色
uint8 PkgBgColor[]={3,0x15,0xe0,0x07}; // 背景颜色
uint8 CharCoord[]={5,0x12,0x00,0x00,0x00,0x00}; // 字符写入位置
//-----------------------------------
// 延时子程序
//-----------------------------------
void crt_delay(uint16 m) // 12MHz Xtal, close to ms value
{
uint16 j;
uint16 i;
for(i=0; i<m; i++)
for(j=0; j<500; j++)
;// NOP ();
}
//-----------------------------------
// 写命令
//-----------------------------------
#define SdCmd(dat) LCD_DAT_ADDR = dat
//-----------------------------------
//结束命令
//-----------------------------------
#define CmdEnd() LCD_COM_ADDR = 0x01
//复位LCD
void LcdReset()
{
IO2DIR |= (1 << 24);
IO2CLR |= (1 << 24);
crt_delay(2);
IO2SET |= (1 << 24);
OSTimeDly(OS_TICKS_PER_SEC / 10);
}
//-----------------------------------
//写入一个命令包
//-----------------------------------
void WritePKG(const uint8 *pkg)
{
uint8 i;
crt_delay(20);
//OSTimeDly(OS_TICKS_PER_SEC/200);
for(i=*pkg;i;i--)
SdCmd(*(++pkg));
CmdEnd();
}
//-----------------------------------
//设置前景颜色
//-----------------------------------
void SetFgColor(uint8 par,uint16 color)
{
PkgFgColor[1]=par;
PkgFgColor[2]=color;
PkgFgColor[3]=color>>8;
WritePKG(PkgFgColor);
}
//-----------------------------------
//设置背景颜色
//-----------------------------------
void SetBgColor(uint16 color)
{
PkgBgColor[2]=color;
PkgBgColor[3]=color>>8;
WritePKG(PkgBgColor);
}
//-----------------------------------
//由填充颜色清屏
//-----------------------------------
const uint8 PkgCLS[]={9,0x27,0x00,0x00,0x00,0x00,0x3f,0x01,0xef,0x00};
void ClearScreen(uint16 color)
{
uint8 buf[5];
SetFgColor(0x20,color);
WritePKG(PkgCLS);
crt_delay(5);
buf[0]=4;
buf[1]=0x83;
buf[2]=0x00;
buf[3]=0xf1;
buf[4]=0x00; //清楚游标寄存器 D[1:0]=01 2bpp
WritePKG(buf);
crt_delay(5);
}
//-----------------------------------
//画点
//-----------------------------------
uint8 dot[]={5,0x23,0x00,0x00,0x00,0x00};
void Draw_Dot(uint16 X,uint16 Y)
{
dot[2]=X;
dot[3]=X>>8;
dot[4]=Y;
dot[5]=Y>>8;
WritePKG(dot);
crt_delay(10);
}
//-----------------------------------
//画线段或矩形
//-----------------------------------
uint8 rect[]={9,0x27,0x00,0x00,0x00,0x00,0x3f,0x01,0xef,0x00};
void Draw_Rect(uint8 para,uint16 x0,uint16 y0,uint16 x1,uint16 y1)
{
rect[1]=para;
rect[2]=x0;
rect[3]=x0>>8;
rect[4]=y0;
rect[5]=y0>>8;
rect[6]=x1;
rect[7]=x1>>8;
rect[8]=y1;
rect[9]=y1>>8;
WritePKG(rect);
crt_delay(10);
}
//-----------------------------------
//设置字符坐标
//-----------------------------------
void SetCharCoord(uint16 coordX,uint16 coordY)
{
CharCoord[2]=coordX;
CharCoord[3]=coordX>>8;
CharCoord[4]=coordY;
CharCoord[5]=coordY>>8;
WritePKG(CharCoord);
}
//-----------------------------------
//写入 16*16的字符串
//-----------------------------------
void Printstr(const uint8 *pstr)
{
while(*pstr>0)
{
SdCmd(0x16);
SdCmd(*pstr++);
SdCmd(*pstr++);
CmdEnd();
crt_delay(5);
}
}
//-----------------------------------
//写入 8*8或 8*16的字符串
//-----------------------------------
void Print(const uint8 *pstr)
{
while(*pstr>0)
{
SdCmd(0x16);
SdCmd(*pstr++);
CmdEnd();
crt_delay(5);
}
}
//游标建立子程序
void SET_SPRITE()
{
uint8 j,k;
uint8 Buffer[5];
//下面是一个箭头(16*16 点阵)的游标图案数据,仅作为示例
const unsigned char gImage_1[64] = { /* 0X00,0X02,0X10,0X00,0X10,0X00, */
0X04,0X00,0X00,0X00,0X2A,0X00,0X00,0X00,0X2A,0XA0,0X00,0X00,0X28,0XAA,0X00,0X00,
0X28,0X0A,0X90,0X00,0X28,0X00,0XA8,0X00,0X28,0X00,0X1A,0X80,0X28,0X00,0X02,0XA8,
0X28,0X00,0X00,0XA8,0X28,0X00,0X0A,0X90,0X28,0X00,0XAA,0X00,0X28,0X0A,0XA0,0X00,
0X28,0X6A,0X00,0X00,0X2A,0XA0,0X00,0X00,0X2A,0X40,0X00,0X00,0X04,0X00,0X00,0X00,
};
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x00;
Buffer[3]=0xf1;
Buffer[4]=0x01; //激活游标寄存器 D[1:0]=01 2bpp
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x02;
Buffer[3]=0xf1;
Buffer[4]=BLUE; //设置游标数据00 的显示色彩(低8 位)
WritePKG(Buffer);
Buffer[0]=4; //LUT 00 high
Buffer[1]=0x83;
Buffer[2]=0x03;
Buffer[3]=0xf1;
Buffer[4]=BLUE>>8; //设置游标数据00 的显示色彩(高8 位)
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x04;
Buffer[3]=0xf1;
Buffer[4]=(uint8)GREEN; //设置游标数据01 的显示色彩(低8 位)
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x05;
Buffer[3]=0xf1;
Buffer[4]=GREEN>>8; //设置游标数据01 的显示色彩(高8 位)
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x06;
Buffer[3]=0xf1;
Buffer[4]=(uint8)WHITE; //设置游标数据10 的显示色彩(低8 位)
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x07;
Buffer[3]=0xf1;
Buffer[4]=WHITE>>8; //设置游标数据10 的显示色彩(高8 位)
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x08;
Buffer[3]=0xf1;
Buffer[4]=BLACK; //设置游标数据11 的显示色彩(低8 位)
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x09;
Buffer[3]=0xf1;
Buffer[4]=BLACK>>8; //设置游标数据11 的显示色彩(高8 位)
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x0a;
Buffer[3]=0xf1;
Buffer[4]=0x0f; // 设置游标图案水平像素点数,示例为16*16 点阵
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x0b;
Buffer[3]=0xf1;
Buffer[4]=0x0f; // 设置游标图案水蛭像素点数,示例为16*16 点阵
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x42;
Buffer[3]=0xf1;
Buffer[4]=0x00; //设置游标图案存储单元起始地址(低8 位) 示例为2b000H
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x43;
Buffer[3]=0xf1;
Buffer[4]=0xb0; //设置游标图案存储单元起始地址(中8 位) 示例为2b000H
WritePKG(Buffer);
Buffer[0]=4;
Buffer[1]=0x83;
Buffer[2]=0x44;
Buffer[3]=0xf1;
Buffer[4]=0x02; //设置游标图案存储单元起始地址(高2 位) 示例为2b000H
WritePKG(Buffer);
Buffer[0]=4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -