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

📄 key_lcd.c

📁 运用89C51或者89S51、52是初学者调试液晶好的学习资料
💻 C
字号:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int		 //宏定义
#define shuju P0
#define bus P1
//#define lcdbus P3
sbit rs=P2^7;
sbit rw=P2^6;
sbit e=P2^5;
sbit sda=P2^0;                          //IO口定义
sbit scl=P2^1;
uchar r;
void delayms(int i)					   //延时程序
	{
	int j;
	for(j=0;j<i;j++);
	}
void enable()
	{
	rs=0;
	rw=0;
	e=0;
	delayms(65000);
	e=1;
	}
void write()
	{
	rs=1;
	rw=0;
	e=0;
	delayms(65000);
	e=1;
	}
void chushi()
	{
	sda=0;
	scl=0;
	shuju=0x01;
	enable();
	shuju=0x38;
	enable();
	shuju=0x0f;
	enable();
	shuju=0x06;
	enable();
	shuju=0x80;
	enable();
	}
void display(uchar i)
	{
	shuju=i;
	write(); 
	}
void jianpan()
{  
   uchar a;
   uchar k;
   bus=0xff;
   bus=0xef;      //扫描第一行
   delayms(6000);
   a=bus;
   a=a&0x0f;
   if(a!=0x0f)
  {
   delayms(2000);
    if(a!=0x0f)
   {
     switch(a)
    {
     case 0x0e:
          k=0x41;

          break;
     case 0x0d:
          k=0x42;
   
          break;
     case 0x0b:
          k=0x43;
         
          break;
     case 0x07:
          k=0x44;
       
          break;
    }
      display(k);
	   r=r-1;
     while(a!=0x0f)
     {
	  bus=0x0f;
	  delayms(2000);
	  a=bus;	  
     }
   }
   }  
    bus=0xdf;        //扫描第二行
    delayms(6000);
    a=bus;
    a=a&0x0f;
    if(a!=0x0f)
    {
     delayms(2000);
     if(a!=0x0f)
     {
     switch(a)
     {
      case 0x0e:
           k=0x45;
           break; 
      case 0x0d:
           k=0x46;
           break;
      case 0x0b:
           k=0x47;
           shuju=0x07;
           break;
      case 0x07:
           k=0x48;
           break;
     }
     display(k);
 	 r=r-1;
     while(a!=0x0f)
      {
       bus=0x0f;
	   delayms(2000);
       a=bus;
	   
      }
     }  
    }     
    bus=0xbf;        //扫描第3行

	delayms(6000);
    a=bus;
    a=a&0x0f;
    if(a!=0x0f)
    {
     delayms(2000);
     if(a!=0x0f)
     {
     switch(a)
     {
      case 0x0e:
           k=0x49;
          
           break; 
      case 0x0d:
           k=0x4a;
           
           break;
      case 0x0b:
          k=0x4b;
           break;
      case 0x07:
           k=0x4c;
           break;
     }
     display(k);
	  r=r-1;
     while(a!=0x0f)
      {
      bus=0x0f;
	   delayms(2000);
       a=bus;
	 
      }
     }  
    }     
     bus=0x7f;        //扫描第4行
	 delayms(6000);
    a=bus;
    a=a&0x0f;
    if(a!=0x0f)
    {
     delayms(2000);
     if(a!=0x0f)
     {
     switch(a)
     {
      case 0x0e:
           k=0x4d;
           break; 
      case 0x0d:
           k=0x4e;
           break;
      case 0x0b:
           k=0x4f;
           break;
      case 0x07:
           k=0x50;
           break;
     }
     display(k);
	  r=r-1;
     while(a!=0x0f)
      {
       bus=0x0f;
	   delayms(2000);
       a=bus;	   
      }
     }  
    }     
 } 
void main()
	{
		while(1)
		{
			chushi();
			r=0x10;
			while(r>0)
				{
				jianpan();
				}
			shuju=0xc0;
			enable();
			r=0x10;
			while(r>0)
				{
				jianpan();
				}
		}
	}

⌨️ 快捷键说明

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