51单片机密码锁报错1.c(168): error C214: illegal pointer conversion怎么改啊

大佬们51单片机密码锁报错1.c(168): error C214: illegal pointer conversion怎么改啊,代码如下

#include<reg51.h>                //请添加程序首部
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int


sbit RS=P2^6;               //定义引脚
sbit WR1=P2^5; 
sbit LCDEN=P2^7;     


unsigned char L1[]="PASS WORD:";  //字符串
unsigned char code L2[]="Old:";
unsigned char code L3[]="1234567890*#-+=";


uchar ptr;
uchar n;

delay(unsigned int ms)        //延时子程序    
{ int i,j;
  for(i=0;i<ms;i++)
     for(j=0;j<120;j++);
}



void busy()         //判断LCD是否忙
{   
   unsigned char i;
   P0=0xff;
   RS=0;
   WR1=1;
   LCDEN=1;
   for(i=0;i<20;i++)
      if((P0&0x80)==0)break;      //D7=0,表示LCD空闲,推出监测
   LCDEN=0; 

} 




void cmd_wr(uchar  com )      //写控制字  设置形参
{
   busy();           //LCD显示控制器忙检测
   RS= 0 ;         //设置写命令状态
   WR1=0;
   P0= com ;       
   delay(5);       //设置下降沿
   LCDEN= 1  ;      
   delay(5);
   LCDEN= 0 ;
}

/**************************************************************
函数名称:inti_lcd()
函数功能:LCD1602显示初始化
****************************************************************/
void inti_lcd()  //设置LCD方式,查指令表
{
  
   LCDEN=0;         
   cmd_wr(0x38);    //功能设定指令,显示设置 8位,2行,5*7点矩阵
    
   cmd_wr(0X01);    //清屏
  
   cmd_wr(0x0f);    //开显示指令,显示屏ON,光标ON,闪烁ON

   cmd_wr(0x06);    //设置字符光标移动模式,光标右移,整屏显示不移动
 
   cmd_wr(0x0c);   //显示器打开,在显示屏上不显示光标
  
}

/**************************************************************
函数名称:write_dr1(unsigned char x)
函数功能:将单个数据x写到LCD数据存储器
****************************************************************/

void write_dr1(unsigned char x)
{
    RS=1 ;          //向控制器写数据
    WR1=0 ;
    P0=x;         
    delay(5);
    LCDEN=1 ;       //下降沿
      delay(5);
    LCDEN=0 ;
}


/**************************************************************
函数名称:show_lcd(unsigned char *ch,unsigned char n)
函数功能:LCD显示子程序字符串
****************************************************************/
void show_lcd(unsigned char *ch,unsigned char n )   
{  
   unsigned char i;
   for(i=0;i<n;i++)
   {
     RS=1;
     WR1=0;
     P0=*(ch+i);
       delay(5);
     LCDEN=1;
     delay(5);
     LCDEN=0;
   }  
}
/**************************************************************
函数名称:uchar anjian44(void)
函数功能:44矩阵按键扫描程序
****************************************************************/
uchar anjian44(void)
{            
    uchar key_value=0;
    P1=0x0f;//给所有行赋值0,列全为1
    if(P1!=0x0f)//判断按键是否按下
    {
        delay(10);//消抖
        if(P1!=0x0f)
        {
            //测试列
            P1=0x0f;
            switch(P1)//保存行为0,按键按下后的列值    
            {
                case 0x07: key_value=1;break;
                case 0x0b: key_value=2;break;
                case 0x0d: key_value=3;break;
                case 0x0e: key_value=4;break;
            }
            //测试行
            P1=0xf0;
            switch(P1)//保存列为0,按键按下后的键值    
            {
                case 0x70: key_value=key_value;break;
                case 0xb0: key_value=key_value+4;break;
                case 0xd0: key_value=key_value+8;break;
                case 0xe0: key_value=key_value+12;break;
            }
            while(P1!=0xf0);//等待按键松开    
        }
    }
    else
        key_value=0;        
    
    return key_value;        
}





/**************************************************************
函数功能:第一行显示“PASS WORD:" 
         第二行显示” 1“ 
****************************************************************/  
void    main()
{  
       uchar t,key,mm;
    uchar mima1[8];
    uchar mima2[8];
    inti_lcd();         //初始化
    cmd_wr(0x00|0x80);       //设置显示位置,调用写指令
    ptr=&L1;
    n=10;    
    show_lcd( ptr,n);
    cmd_wr(0x40|0X80);
    ptr=&L2;
    n=4;    
    show_lcd( ptr,n);                                                  ////这里报错:1.c(168): error C214: illegal pointer conversion
    cmd_wr(0x0f);
       cmd_wr(0x44|0x80);

    for(mm=0;mm<8;mm++)
    {
       key=anjian44();       //调用按键
       while(!key)
       {
         key=anjian44();    //调用按键
       }
      cmd_wr(0xC4+mm);
      t=L3[key-1];
      write_dr1(t);
      mima1[mm]=key;
      key=0xff;       //键值取空
    }
      key=anjian44(); 
      while(key==12);
 


                       
}


17行, uchar ptr; 改为 unsigned char *ptr;
166行 ptr=&L1; 改为 ptr = L1