📄 md130驱动程序.c
字号:
------
VCC 22 --| |--1 GND
VCC 21 --| |--2 GND
VCC 20 --| |--3 GND
VCCIO 19 --| |--4 #RST
VCCIO 18 --| |--5 NC
D0 17 --| |--6 #RD
D1 16 --| |--7 #WR
D2 15 --| |--8 #CS
D3 14 --| |--9 RS
D4 13 --| |--10 D7
D5 12 --| |--11 D6
------
VCC :2.6~3.3V
VCCIO :1.6~3.3V
#define uchar unsigned char
#define uint unsigned int
/*
sbit LCD_RS = P3^4;
sbit LCD_CS = P3^3;
sbit LCD_WR = P3^2;
sbit LCD_RD = P3^1;
sbit LCD_RST = P3^0;
sbit LCD_CS = P3^3;//P3^3;
sbit LCD_WR = P3^7;//P3^7;
sbit LCD_RS = P3^4;
sbit LCD_RD = P3^5;
sbit LCD_RST = P2^7;
*/
sbit LCD_CS = P2^4;
sbit LCD_WR = P3^5;
sbit LCD_RS = P2^5;
sbit LCD_RD = P3^4;
sbit LCD_RST = P0^1;
#define DATA P1
void MUC_Init();
void LCD_Init();
void LCD_WR_REG(uchar index);
void LCD_WR_CMD(uchar dbw,uchar index,uint val);
void LCD_WR_Data(uint val);
void LCD_test();
void LCD_clear(uint p);
uint color[]={0xf800,0x07e0,0x001f,0xffe0,0x0000,0xffff,0x07ff,0xf81f};
extern unsigned char code gImage_qqp[];
void delay_us(uint t)
{
t+=170;
while(--t);
}
void delay_ms(uint t)
{
uchar i,j;
while(--t)
{
j=8;
while(--j)
while(--i);
}
}
void MUC_Init()
{
// P1M0 = 0x00;
// P1M1 = 0xFF;
// P2M0 = 0x00;
// P2M1 = 0xFF;
// P3M0 = 0x00;
// P3M1 = 0xFF;
P1=0xff;
P2=0xff;
P3=0xff;
}
//写寄存器地址函数
void LCD_WR_REG(uchar index)
{
// delay_us(10);
LCD_RS = 0;
_nop_();
_nop_();
LCD_CS = 0;
_nop_();
_nop_();
DATA = index;
_nop_();
_nop_();
LCD_WR = 0;
_nop_();
_nop_();
LCD_WR = 1;
_nop_();
_nop_();
LCD_CS = 1;
_nop_();
_nop_();
LCD_RS = 0;
}
//写8位数据函数
void LCD_WR_DATA8(uchar pd)
{
// delay_us(10);
LCD_RS = 1;
_nop_();
_nop_();
LCD_CS = 0;
_nop_();
_nop_();
DATA = pd;
_nop_();
_nop_();
LCD_WR = 0;
_nop_();
_nop_();
LCD_WR = 1;
_nop_();
_nop_();
LCD_CS = 1;
_nop_();
_nop_();
LCD_RS = 0;
}
//写寄存器数据函数
//输入:dbw 数据位数,1为16位,0为8位。
void LCD_WR_CMD(uchar dbw,uchar index,uint val)
{
LCD_RS = 0;
_nop_();
_nop_();
LCD_CS = 0;
_nop_();
_nop_();
DATA = index;
_nop_();
_nop_();
LCD_WR = 0;
_nop_();
_nop_();
LCD_WR = 1;
_nop_();
_nop_();
LCD_CS = 1;
_nop_();
_nop_();
LCD_RS = 0;
delay_us(1);
if(dbw)
{
LCD_RS = 1;
_nop_();
_nop_();
LCD_CS = 0;
_nop_();
_nop_();
DATA = (uchar)(val>>8);
_nop_();
_nop_();
_nop_();
_nop_();
LCD_WR = 0;
_nop_();
_nop_();
LCD_WR = 1;
_nop_();
_nop_();
LCD_CS = 1;
_nop_();
_nop_();
LCD_RS = 0;
}
delay_us(1);
LCD_RS = 1;
_nop_();
_nop_();
LCD_CS = 0;
_nop_();
_nop_();
DATA = (uchar)val;
_nop_();
_nop_();
LCD_WR = 0;
_nop_();
_nop_();
LCD_WR = 1;
_nop_();
_nop_();
LCD_CS = 1;
_nop_();
_nop_();
LCD_RS = 0;
}
//读16位寄存器数据函数
//输入:index 寄存器地址
//输出:
unsigned int LCD_RD_REG16(uchar index)
{
unsigned int pd;
LCD_RS = 0;
_nop_();
_nop_();
LCD_CS = 0;
_nop_();
_nop_();
DATA = index;
_nop_();
_nop_();
LCD_WR = 0;
_nop_();
_nop_();
LCD_WR = 1;
_nop_();
_nop_();
LCD_CS = 1;
_nop_();
_nop_();
LCD_RS = 0;
_nop_();
_nop_();
LCD_RS = 1;
_nop_();
_nop_();
LCD_CS = 0;
OEB = 0x00;
DATA = 0xFF;
LCD_RD = 0;
_nop_();
_nop_();
LCD_RD = 1;
pd = DATA;
LCD_CS = 1;
LCD_RS = 0;
pd = pd<<8;
LCD_RS = 1;
_nop_();
_nop_();
LCD_CS = 0;
_nop_();
_nop_();
LCD_RD = 0;
_nop_();
_nop_();
LCD_RD = 1;
pd = pd + DATA;
LCD_CS = 1;
LCD_RS = 0;
return pd;
}
//写16位数据函数
void LCD_WR_Data(uint val)
{
_nop_();
_nop_();
LCD_RS = 1;
_nop_();
_nop_();
LCD_CS = 0;
DATA = (uchar)(val>>8);
_nop_();
_nop_();
LCD_WR = 0;
_nop_();
_nop_();
LCD_WR = 1;
LCD_CS = 1;
LCD_RS = 0;
LCD_RS = 1;
LCD_CS = 0;
_nop_();
_nop_();
DATA = (uchar)val;
_nop_();
_nop_();
LCD_WR = 0;
_nop_();
_nop_();
LCD_WR = 1;
_nop_();
_nop_();
LCD_CS = 1;
_nop_();
_nop_();
LCD_RS = 0;
_nop_();
//delay_us(10);
}
//初始化函数
void LCD_Init()
{
LCD_RST = 0;
delay_ms(200);
LCD_RST = 1;
delay_ms(200);
//initializing funciton 1
delay_us(10);
LCD_WR_REG(0xA1);
delay_us(16);
LCD_WR_DATA8(0x00);
delay_us(90);
LCD_WR_REG(0xA0);
delay_us(10);
LCD_WR_DATA8(0x00);
delay_us(10);
LCD_WR_CMD(0,0x70,0xC8);
delay_ms(20);
LCD_WR_CMD(0,0x72,0xA3);
delay_us(10);
LCD_WR_CMD(0,0x73,0x04);
delay_us(10);
LCD_WR_CMD(0,0x75,0x45);
delay_us(10);
LCD_WR_CMD(0,0x76,0x23);
delay_us(10);
LCD_WR_CMD(0,0x77,0x08);
delay_us(10);
LCD_WR_CMD(0,0x78,0x08);
delay_us(10);
LCD_WR_CMD(0,0x79,0x00);
delay_us(10);
LCD_WR_CMD(0,0x7F,0xF0);
delay_us(10);
LCD_WR_CMD(0,0x71,0x81); //
delay_ms(2);
LCD_WR_CMD(0,0x0D,0x23);
delay_us(10);
LCD_WR_CMD(0,0x11,0x00);
delay_us(10);
LCD_WR_CMD(0,0x12,0x00);
delay_us(10);
LCD_WR_CMD(0,0x21,0x37);
delay_us(10);
LCD_WR_CMD(0,0x22,0x02);
delay_us(10);
LCD_WR_CMD(0,0x23,0x24);
delay_us(10);
delay_us(10);
LCD_WR_CMD(0,0x24,0x13);
delay_us(10);
LCD_WR_CMD(0,0x25,0x0A);
delay_us(10);
LCD_WR_CMD(0,0x26,0x82);
delay_us(10);
LCD_WR_CMD(0,0x27,0x01);
delay_us(10);
LCD_WR_CMD(0,0x1E,0x25);
delay_us(10);
LCD_WR_CMD(0,0x1F,0x59);
delay_us(10);
//GAMMA设置
LCD_WR_CMD(1,0x30,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x31,0x0444);
delay_us(10);
LCD_WR_CMD(1,0x32,0x0555);
delay_us(10);
LCD_WR_CMD(1,0x33,0x0444);
delay_us(10);
LCD_WR_CMD(1,0x34,0x0333);
delay_us(10);
LCD_WR_CMD(1,0x35,0x0333);
delay_us(10);
LCD_WR_CMD(1,0x36,0x0333);
delay_us(10);
LCD_WR_CMD(1,0x37,0x0333);
delay_us(10);
LCD_WR_CMD(1,0x38,0x0444);
delay_us(10);
LCD_WR_CMD(1,0x39,0x0555);
delay_us(10);
LCD_WR_CMD(1,0x3A,0x0666);
delay_us(10);
LCD_WR_CMD(1,0x3B,0x0666);
delay_us(10);
LCD_WR_CMD(1,0x3C,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x3D,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x3E,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x3F,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x40,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x41,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x42,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x43,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x44,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x45,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x46,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x47,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x48,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x49,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x4A,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x4B,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x4C,0x0777);
delay_us(10);
LCD_WR_CMD(1,0x4D,0x0666);
delay_us(10);
LCD_WR_CMD(1,0x4E,0x0666);
delay_us(10);
LCD_WR_CMD(1,0x4F,0x0666);
delay_us(400);
LCD_WR_CMD(0,0x00,0x04); //扫描方向控制
delay_us(10);
LCD_WR_CMD(0,0x01,0x07); //扫描方向控制
delay_us(10);
LCD_WR_CMD(0,0x02,0x00); //X
LCD_WR_CMD(1,0x03,0x0000); //Y
//面板大小设置
LCD_WR_CMD(0,0x04,0xEF); //结束列数(0~239)
LCD_WR_CMD(1,0x05,0x013F); //结束行数(0~319)
//窗口设置
LCD_WR_CMD(0,0x06,0x00); //水平起始位置
LCD_WR_CMD(1,0x07,0x0000); //垂直起始位置
LCD_WR_CMD(0,0x08,0xEF); //水平结束位置
LCD_WR_CMD(1,0x09,0x013F); //垂直结束位置
delay_us(10);
LCD_WR_CMD(0,0x0A,0x00);
delay_us(10);
LCD_WR_CMD(0,0x0B,0x00);
delay_us(10);
LCD_WR_CMD(0,0x0C,0x00);
delay_us(10);
LCD_WR_CMD(0,0x14,0x00);
delay_us(10);
LCD_WR_CMD(0,0x15,0x00);
delay_us(10);
LCD_WR_CMD(0,0x16,0x00);
delay_us(10);
LCD_WR_CMD(1,0x17,0x01FF);
delay_us(10);
LCD_WR_CMD(1,0x18,0x01FF);
delay_us(10);
LCD_WR_CMD(0,0x13,0x00);
delay_us(10);
LCD_WR_CMD(1,0x19,0x01FF);
delay_us(10);
LCD_WR_CMD(1,0x1B,0x01FF);
delay_us(10);
LCD_WR_CMD(1,0x1C,0x01FF);
delay_us(10);
LCD_WR_CMD(1,0x1A,0x01FF);
delay_us(10);
LCD_WR_CMD(0,0x1D,0x0E);
delay_us(10);
LCD_WR_CMD(0,0x10,0x06); //开显示
LCD_WR_REG(0x0E);
delay_us(100);
}
//演示程序
void LCD_test()
{
uint temp,num;
unsigned int *p;
uchar n,c,g;
LCD_WR_CMD(0,0x00,0x04);
LCD_WR_CMD(0,0x01,0x07);
LCD_WR_CMD(0,0x02,0x00);
LCD_WR_CMD(1,0x03,0x0000);
LCD_WR_CMD(0,0x04,0xEF);
LCD_WR_CMD(1,0x05,0x013F);
LCD_WR_CMD(0,0x06,0x00);
LCD_WR_CMD(1,0x07,0x0000);
LCD_WR_CMD(0,0x08,0xEF);
LCD_WR_CMD(1,0x09,0x013F);
LCD_WR_CMD(0,0x2,0); //0-239
LCD_WR_CMD(1,0x3,0); //0-319
//显示彩条
LCD_WR_REG(0x0E);
for(n=0;n<8;n++)
{
temp=color[n];
for(num=40*240;num>0;num--)
LCD_WR_Data(temp);
}
delay_ms(1000);
//显示单色彩色
for(c=0;c<8;c++)
{
temp = color[c];
LCD_WR_CMD(0,0x2,0); //0-239
LCD_WR_CMD(1,0x3,0); //0-319
LCD_WR_REG(0x0E);
for(n=0;n<240;n++)
{
for(num=0;num<320;num++)
LCD_WR_Data(temp);
}
delay_ms(1000);
}
//显示小QQ图标
for(g=0;g<8;g++)
{
for(c=0;c<6;c++)
{
LCD_WR_CMD(0,0x02,c*40);
LCD_WR_CMD(1,0x03,g*40);
LCD_WR_CMD(0,0x04,c*40+39);
LCD_WR_CMD(1,0x05,g*40+39);
LCD_WR_CMD(0,0x06,c*40);
LCD_WR_CMD(1,0x07,g*40);
LCD_WR_CMD(0,0x08,c*40+0x39);
LCD_WR_CMD(1,0x09,g*40+0x39);
LCD_WR_CMD(0,0x2,c*40); //0-239
LCD_WR_CMD(1,0x3,g*40); //0-319
LCD_WR_REG(0x0E);
p = gImage_qqp;
for(num=0;num<1600;num++) //
{
LCD_WR_Data(*p++);
delay_us(40);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -