找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2966|回复: 1
打印 上一主题 下一主题
收起左侧

矩阵键盘1-16平方lcd1602显示

[复制链接]
跳转到指定楼层
楼主
ID:70929 发表于 2015-7-4 21:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
论坛新人,今天调试出矩阵键盘1-16平方,lcd1602显示,现拿出,请大家指教。以下是程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

uchar table[]="0123456789";
uchar num;

sbit lcd1602RS=P2^6;
sbit lcd1602RW=P2^5;
sbit lcd1602EN=P2^7;

void keyscan();
void delay(uint z)
{
   uint x,y;
   for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}
void delay1us()
{
   uchar x,y;
   for(x=10;x>0;x--)
     for(y=110;y>0;y--);
}
void lcd1602write(uchar com)  //lcd1602
{
         lcd1602RS=0;
         lcd1602RW=0;
         lcd1602EN=0;
         P0=com;
         delay(10);
         lcd1602EN=1;
         delay(10);
         lcd1602EN=0;
}
void lcd1602read(uchar date)
{
     lcd1602RS=1;
         lcd1602RW=0;
         lcd1602EN=0;
         P0=date;
         delay(10);
         lcd1602EN=1;
         delay(10);
         lcd1602EN=0;
}
void lcd1602init()
{
   lcd1602write(0x38);
   delay(15);
   lcd1602write(0x38);
   delay(5);
   lcd1602write(0x38);
   delay(5);
   lcd1602write(0x01);
   lcd1602write(0x08);
   lcd1602write(0x06);
   lcd1602write(0x0c);
}
void main()
{
        lcd1602init();
        while(1)
        {
            keyscan();           
            lcd1602write(0x80);      
               lcd1602read(table[(num*num)/100]);

                lcd1602write(0x81);      
               lcd1602read(table[(num*num)%100/10]);

                lcd1602write(0x82);      
               lcd1602read(table[(num*num)%10]);       
        }
}
void keyscan()  //矩阵键盘扫描
{
         if(P1!=0x7f)
           {
                     delay1us();
                  if(P1!=0x7f)
                  {
                            P1=0x7f;
                          switch(P1)
                          {
                                   case(0x77):num=1;break;
                                 case(0x7b):num=2;break;
                                 case(0x7d):num=3;break;
                                 case(0x7e):num=4;break;
                          }
                          while(P1!=0x7f);
                  }
        }
           if(P1!=0xbf)
           {
                     delay1us();
                  if(P1!=0xbf)
                  {
                            P1=0xbf;
                          switch(P1)
                          {
                                   case(0xb7):num=5;break;
                                 case(0xbb):num=6;break;
                                 case(0xbd):num=7;break;
                                 case(0xbe):num=8;break;
                          }
                          while(P1!=0xbf);
                  }
        }
      if(P1!=0xdf)
           {
                     delay1us();
                  if(P1!=0xdf)
                  {
                            P1=0xdf;
                          switch(P1)
                          {
                                   case(0xd7):num=9;break;
                                 case(0xdb):num=10;break;
                                 case(0xdd):num=11;break;
                                 case(0xde):num=12;break;
                          }
                          while(P1!=0xdf);
                  }
        }
           if(P1!=0xef)
           {
                     delay1us();
                  if(P1!=0xef)
                  {
                            P1=0xef;
                          switch(P1)
                          {
                                   case(0xe7):num=13;break;
                                 case(0xeb):num=14;break;
                                 case(0xed):num=15;break;
                                 case(0xee):num=16;break;
                          }
                          while(P1!=0xef);
                  }
                }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的积分奖励!有个电路图就完美了

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:985169 发表于 2021-12-5 20:21 | 只看该作者
看不懂,有大佬解释一下吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表