m0_58061620 2022-05-21 17:15 采纳率: 50%
浏览 38
已结题

按下按键,LCD为什么没有显示


#include<reg51.h>
unsigned char num='0';
void initlcd()
{
   writecmd(0x38);
   writecmd(0x0c);
   writecmd(0x06);
   writecmd(0x01);
}

void key_scan()
{
    unsigned char temp0,temp1,temp;
    P1=0xf0;
    if(P1!=0xf0)//有键按下
    {
        delay(20);
        temp0=P1;
        P1=0x0f;
        if(P1!=0x0f)
        {
            temp1=P1;
        }
    
    }
    temp=temp0+temp1;
    switch(temp)
    {
    case 0xee:num='A';break;
    case 0xed:num='B';break;
    case 0xeb:num='C';break;
    case 0xe7:num='D';break;
    case 0xde:num='E';break;
    case 0xdd:num='F';break;
    case 0xdb:num='G';break;
    case 0xd7:num='H';break;
    case 0xbe:num='I';break;
    case 0xbd:num='J';break;
    case 0xbb:num='K';break;
    case 0xb7:num='L';break;
    case 0x7e:num='M';break;
    case 0x7d:num='N';break;
    case 0x7b:num='O';break;
    case 0x77:num='P';break;
    
    }

}

void  LCD()
{
    initlcd();
    writecmd(0x82);
    writedat(num);
}
void main ()
{
while(1)
{
    void key_scan();
    void  LCD();
}
}


  • 写回答

1条回答 默认 最新

  • qllaoda 2022-05-21 23:06
    关注

    没仔细看函数实现,主程序的函数调用就有问题
    while(1)
    {
    void key_scan();
    void LCD();
    }
    调用函数要把那个void去掉,你加上void的话,这里只是个函数的声明而已,没有任何函数的调用,当然就没效果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 创建了问题 5月21日