📄 t.c
字号:
#include <reg51.h>
#define cd P3_0
#define rd P3_1
#define wr P3_2
void delay(int c)
{
int i,j;
for(i=0;i<c;i++)
for(j=0;j<1000;j++)
;
}
char rd_state() //读状态
{
char temp;
P2=0xff;
cd=1;
rd=0;
temp=P2;
rd=1;
return(temp);
}
void rd_enable() //等待可读写
{
char temp;
temp=rd_state();
while((temp&0x03)!=0x03)
temp=rd_state();
}
void rd_auto() //等待自动读写
{
char temp;
temp=rd_state();
while((temp&0x04)!=0x04)
temp=rd_state();
}
void wr_auto() //等待自动写
{
char temp;
temp=rd_state();
while((temp&0x08)!=0x08)
temp=rd_state();
}
/*写命令、写数据命令*********************
数据1、数据2、命令、参数个数*************
*****************************************/
void wr_data(char data1,char data2,char cmd,char num)
{
char temp;
temp=num;
if(temp==2)
{
rd_enable();
cd=0;
P2=data1;
wr=0;
wr=1;
}
if(temp==2||temp==1)
{
rd_enable();
cd=0;
P2=data2;
wr=0;
wr=1;
}
rd_enable();
cd=1;
P2=cmd;
wr=0;
wr=1;
}
char rd_data() //读数据
{
char temp;
rd_enable();
cd=0;
P2=0xff;
rd=0;
temp=P2;
rd=1;
return(temp);
}
void lcd_init()
{
wr_data(0x00,0x00,0x40,0x02); //设置文本显示首地址
wr_data(0x14,0x00,0x41,0x02); //设置文本显示宽度
wr_data(0x40,0x01,0x42,0x02); //设置图形显示首地址
wr_data(0x20,0x00,0x43,0x02); //设置图形显示宽度
wr_data(0x00,0x00,0xa7,0x00); //光标形状设置
wr_data(0x00,0x00,0x80,0x00); //显示方式设置,“或”
wr_data(0x00,0x00,0x9c,0x00); //显示开关设置
}
void main()
{
char i,temp=0,row=0;
delay(50);
P3|=0x07;
lcd_init();
wr_data(0x00,0x00,0x24,0x02); //设置写地址
wr_data(0x00,0x00,0xb0,0x00); //设置自动写方式
for(i=0;i<127;i++)
{
wr_auto();
cd=0;
P2=temp;
wr=0;
wr=1;
temp++;
P1=temp;
}
wr_data(0x00,0x00,0xb2,0x00); //自动写结束
wr_data(0x40,0x01,0x24,0x02); //设置写地址
wr_data(0x00,0xaa,0xc4,0x01); //写图像区
while(1)
{
wr_data(row,0x00,0x40,0x02); //设置文本显示首地址
delay(40);
row++;
if(row>126)
row=100;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -