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

📄 液晶.c

📁 1602 液晶显示子程序 可直接套用 代替数码管显示必备
💻 C
字号:
#include<reg51.h>
#include<intrins.h>
#define nop _nop_()		//空操作宏定义//
#define DB0_DB7 P2
sbit RS=P3^5;
sbit RW=P3^6;
sbit E =P3^7;
unsigned char code shuzi[11]={'0','1','2','3','4','5','6','7','8','9'};


void delay(unsigned int count)	 //延时count MS子程序//
{
 unsigned char i,j;
 for(i=0;i<count;i++)
 for(j=0;j<125;j++);
}



unsigned char KEYZHI()	  //按键扫描程序//
 {
  unsigned k,j,i;
  k=0;
  while(k==0)								//扫描//
   {
    do
     {
      P1=0xf0;

     }
    while ((0xf0&P1)==0xf0) ;			  //有按下?有则跳出do……while循环//

    delay(5);							  //延时,防干扰//



    if((0xf0&P1)==0xf0) k=0;			  //真的按下去了吗?延时后再作判断//
    else  k=1;
   }

   P1=0x0f;
									   //扫描行,得出行号j//
    switch(P1)
	{
	  case 0x0e: j=0;break;
	  case 0x0d: j=1;break;
	  case 0x0b: j=2;break;
	  case 0x07: j=3;break;
	  default:  break;
	}

	P1=0xf0;								//扫描列,得出列号i//
    switch(P1)
	{
	  case 0xe0: i=0;break;
	  case 0xd0: i=1;break;
	  case 0xb0: i=2;break;
	  case 0x70: i=3;break;
	  default:   break;
	}


     return(i+4*j);						//返回键值,供下面作数据处理//

}



void DF()	//等待按键释放程序//
{
  unsigned n;
 n=0;
 while(n==0)
  {
    do
    {
      P1=0x0f;
    }
    while((0x0f&P1)!=0x0f);	  //等待按键释放,即若没有放开则一直循环//

    delay(5);		//放开键后消抖//

    P1=0x0f;

    if((0x0f&P1)!=0x0f)		  //真的放开了吗?延时后再次判断//
	  n=0;
    else
	  n=1;
  }
}


void write_cmd (unsigned int tempdata)	   //液晶写命令子程序//
{
 DB0_DB7=tempdata;
 RS=0;
 RW=0;
 E=1;
 nop;
 E=0;
 nop;
 delay(10);
}


void write_ddr (unsigned int tempdata)	   //液晶写数据子程序//
{
 DB0_DB7=tempdata;
 RS=1;
 RW=0;
 E=1;
 nop;
 E=0;
 nop;
 delay(10);
}


void init()  //液晶初始化子程序//
{
 write_cmd(0x30);
 delay(10);
 write_cmd(0x01);
 delay(10);
 write_cmd(0x38);
 write_cmd(0x0c);
}


void main()
{
  unsigned char key,m=0,n=0;
  init();
  write_cmd(0x80);
  while(1)
   {
     key=KEYZHI();
     DF();
     switch(key)
     {
      case 10 : break;
      case 11 : break;
      case 12 : break;
      case 13 : break;
      case 14 : break;
      case 15 : break;
      default : write_ddr(shuzi[key]);break;
     }
  }
}

⌨️ 快捷键说明

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