⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.h

📁 128*64串行输入数据
💻 H
字号:
#define _lcd_h
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^5;
sbit RW_SID=P2^6;
sbit E_CLK=P2^7;

void sendbyte(uchar dat);
void gotoxy(uchar x,uchar y);
void WRcom(uchar dat);
void WRdata(uchar dat);
void initlcd(void);
void clear(void);
void display_draw(uchar code *buff);
void clear_draw(void);

//延时子程序
void delay_ms(uint k)
{ uint t;
  while(k--)
    { t=120;
	  while(t--);
	}
}

void gotoxy(uchar x,uchar y)//x行y列
{
 if(x==1)y=y+0x80;// 第1行//第y列
 if(x==2)y=y+0x90;
 if(x==3)y=y+0x88;
 if(x==4)y=y+0x98;
 WRcom(y);
 }

void sendbyte(uchar dat) //串行发送数据
{
 uchar i;
 for(i=0;i<8;i++)
 {
  E_CLK=0;
  if(dat&0x80) RW_SID=1;else RW_SID=0;
  E_CLK=1;
 dat<<=1;
 }
}

void WRcom(uchar dat)  //写命令
{
 RS=1;
 sendbyte(0xf8);   //同RW=0;RS=0
 sendbyte(dat&0xf0);  //高                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
 sendbyte((dat&0x0f)<<4);  //低
 RS=0;
 }

void WRdata(uchar dat)  //写数据
{
 RS=1;
 sendbyte(0xfa);  //RW=0,RS=1
 sendbyte(dat&0xf0); 
 sendbyte((dat&0x0f)<<4);
 RS=0;
 }

void initlcd(void)
{
 WRcom(0x30);//8位传输//基本指令
 WRcom(0x0c);//显示屏开//光标关 DB2 显示屏开关 DB1 光标开关 DB0 反白光   1为开,0为关
 WRcom(0x01);//清屏
 WRcom(0x02);//地址归位
 WRcom(0x80);//显示第一行
 WRcom(0x06);//自动右移
}
////////////////////////////////
void clear(void)
{
 WRcom(0x01);//清屏
 WRcom(0x02);//地址归位
 delay_ms(10);  //清屏要延时
}


void display_draw(uchar code *buff) //图象显示
{ 
 uint j=0;
 uchar x,y;
 WRcom(0x36);      //功能设置---8BIT控制界面,扩充指令集  图象显示
 for(y=0;y<32;y++)  //上半屏幕 //32行,1行有八列,即2个字节为1列
  for(x=0;x<8;x++)
 {   
  WRcom(0x80+y);   //纵坐标
  WRcom(0x80+x);   //横坐标
  WRdata(buff[j++]);  //2个字节则发送两次
  WRdata(buff[j++]);
 }
 for(y=0;y<32;y++)  //下半屏幕 //32行,1行有八列,即2个字节 
 for(x=0;x<8;x++)
{  
  WRcom(0x80+y);   //纵坐标
  WRcom(0x88+x);   //横坐标
  WRdata(buff[j++]);  //2个字节则发送两次
  WRdata(buff[j++]);
 }
}

void clear_draw(void)//请整CGRAM(字符生成RAM) DDRAM(数据显示)
{ unsigned char x,y;
        WRcom(0x34); //功能设置---8BIT控制界面,扩充指令集,关显示
         //上半屏显示/////////////
         for(y=0;y<32;y++)//整个屏有64行,上半屏有32行
         for(x=0;x<8;x++)//一行有8列
         { 
            WRcom(0x80+y);        //纵座标
            WRcom(0x80+x);        //横座标
            WRdata(0x00);
            WRdata(0x00);
		 }
         //下半屏显示/////////////
   	     for(y=0;y<32;y++)//整个屏有64行,下半屏有32行
         for(x=0;x<8;x++)//一行有8列
         { 
            WRcom(0x80+y);     //纵座标
            WRcom(0x88+x);     //横座标
            WRdata(0x00);
            WRdata(0x00);
		 }   
}

/*void clear_draw(void) //请整CGRAM(字符生成RAM) DDRAM(数据显示) //只清了上半屏
{
 uchar x,y;
 WRcom(0x34);//功能设置---8BIT控制界面,扩充指令集,关显示
 for(y=0;y<64;y++)  //整个屏幕 //32行,1行有八列,即2个字节 
 for(x=0;x<8;x++)
{ 
 WRcom(0x80+y);
 WRcom(0x80+x);
 WRdata(0x00);  //2个字节则发送两次
 WRdata(0x00);
}
}*/



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -