📄 12864c.c
字号:
小弟我用一个较便宜的仿真器仿12864的LCD模块,接线是最简单的那种:
P0口带上拉接数据线
W/R接地
REST接VCC
DI=P1^0; 写数据或写指令
EN=P1^1; //使能
CS1=P1^2; //左64列片选
CS2=P1^3; //右64列片选
Back_light=P1^4;//背光控制
现在连最简单的写全0,写全1,也不能按照我的意图显示,很受打击,请各位DX指点迷津呀
我的程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit DI=P1^0; //写数据或写指令
sbit EN=P1^1; //使能
sbit CS1=P1^2; //左64列片选
sbit CS2=P1^3; //右64列片选
sbit Back_light=P1^4; //背光开关
bit bf;
Lcd_WD(uchar ddata); //写数据
Lcd_dis(uchar inst); //开显示
Lcd_set_x(uchar x); //设置页地址
Lcd_set_y(uchar i); //设Y地址
Lcd_clr(); //清屏
dis_welcom();//显示welcom!
//**welcom!128x64
unsigned char code welcom[]=
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFC,0xFF,0x8F,0xFF,0xFF,
0xBF,0xFF,0xFC,0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x80,0x80,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x7F,0x7F,0xD3,0x91,0x90,
0xD1,0xF3,0x73,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,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,0x08,0x08,0x08,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,};
//****************************
delay() //4us延时
{
unsigned char i=2;
while(--i);
}
//********************************
Lcd_WD(uchar ddata) //写数据
{
DI=1;
Back_light=1;
delay();
EN=1;
delay();
P0=ddata;
delay();
EN=0;
delay();
EN=1;
}
//******************************
Lcd_set_x(uchar x)//设置X页地址
{
DI=0;
delay();
EN=1;
delay();
P0=0xB4+x;
delay();
EN=0;
delay();
}
//********************************
Lcd_set_y(uchar i)//设置Y地址
{
DI=0;
delay();
EN=1;
delay();
P0=0x40+i;
delay();
EN=0;
delay();
}
//********************************
Lcd_clr() //清屏
{
uchar i,j;
CS1=1;CS2=1;
for(i=0;i<8;i++)//页地址设置
{ Lcd_set_x(0);
Lcd_set_y(0);
for(j=0;j<64;j++)
Lcd_WD(0x00);
}
CS1=CS2=0;
}
//***********显示welcom!
dis_welcom()
{uchar i;
uchar code *d;
d=welcom;
for(i=0;i<8;i++)
{ Lcd_set_x(i);
Lcd_set_y(0);
for(i=0;i<64;i++)
{
CS1=1;CS2=0;
Lcd_WD(*d);
d++;
}
for(i=0;i<64;i++)
{
CS1=0;CS2=1;
Lcd_WD(*d);
d++;
}
}
CS1=0;CS2=0;
}
//*********************主程序
main()
{
Back_light=1;//****开背光
Lcd_clr();//**清屏
dis_welcom();//**显示WELCOM!
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -