久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1389|回復: 2
打印 上一主題 下一主題
收起左側

單片機矩陣和獨立按鍵的結合但不知道哪里出錯還是實現不了退格清零,麻煩各位幫忙...

[復制鏈接]
跳轉到指定樓層
樓主
#include <regx52.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
sbit DU = P2^6;
sbit WE = P2^7;
sbit key_s2 = P3^0;
uchar num;
uchar KeyValue = 20;
uchar temp;

uchar  code tabel[]= {
//0                1         2     3     4     5     6     7     8
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,
//9     A     B           C         D           E         F                H         L         
0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x76, 0x38,
//n           u          -          ??
0x37, 0x3E, 0x40, 0x00 };


void delay(uint z)
{
        uint x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);                 
}

void KeyScan()
{
        
        P3 = 0XF0;
        if(P3 != 0XF0)
        {
                delay(10);
                if(P3 != 0XF0)
                {
                        switch(P3)
                        {
                                case 0xe0:        KeyValue = 0;        break;
                                case 0xd0:        KeyValue = 1;        break;
                                case 0xb0:        KeyValue = 2;        break;
                                case 0x70:        KeyValue = 3;        break;
                        }
                        P3 = 0X0F;
                        switch(P3)
                        {
                                case 0x0e:        KeyValue = KeyValue;        break;
                                case 0x0d:        KeyValue = KeyValue + 4;        break;
                                case 0x0b:        KeyValue = KeyValue + 8;        break;
                                case 0x07:        KeyValue = KeyValue + 12;        break;
                        }
                        while(P3 != 0X0F);        
                }
        }
        P3 = 0XFF;
        if(P3 != 0XFF)
        {
                delay(10);
                if(P3 != 0XFF)
                {
                        switch(P3)
                        {
                                case 0xfe:        KeyValue = 16;        break;
                                case 0xfd:        KeyValue = 17;        break;
                                case 0xfb:        KeyValue = 18;        break;
                                case 0xf7:        KeyValue = 19;        break;
                        }
                        while(P3 != 0XFF);               
                }        
        }

}


void Template()
{
        
        
        if(KeyValue==0)
        {
               
                num=0;
               
        }
        else if(KeyValue==1)
        {
               
                num=1;

        }
        else if(KeyValue==2)
        {
               
                num=2;
        }
        else if(KeyValue==3)
        {
               
                num=3;
        }
        else if(KeyValue==4)
        {
               
                num=4;
        }
        else if(KeyValue==5)
        {
               
                num=5;
        }
        else if(KeyValue==6)
        {
               
                num=6;
        }
        else if(KeyValue==7)
        {
               
                num=7;
        }
        else if(KeyValue==8)
        {
               
                num=8;
        }
        else if(KeyValue==9)
        {
               
                num=9;
        }
        
        else if(KeyValue==10)
        {
               
                num=10;
        }
        else if(KeyValue==11)
        {
                num=11;
        }
        else if(KeyValue==12)
        {
                num=12;
        }
        else if(KeyValue==13)
        {
                num=13;
        }
        else if(KeyValue==14)
        {
                num=14;
        }
        
        else if(KeyValue==15)
        {
                num=15;
        }
        
        
        if(KeyValue==16)
        {
               
                if(num!=9)  num++;
                if(4<KeyValue&&KeyValue<9)
                {
                        temp=_crol_(temp,1);
                        P1=temp;
                        
                        beep=~beep;
                        delay(500);
                }
        }
        else if(KeyValue=17)
        {
               
                num=num-1;  
                if(num==0);num=0;
        }
        else if(KeyValue=18)
        {
               
                num=num+1;  
                if(num>9)num=9;
        }
        else if(KeyValue=19)
        {
               
                num=0;   
        }

  KeyValue=49;
}


void main()
{
        temp=0xf0;
        P1=temp;
        
        WE = 1;
        P0 = 0XFE;
        WE = 0;

        DU = 1;
        while(1)
        {
                KeyScan();
                Template();
                P0 = tabel[num];
               
         
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:161164 發表于 2022-11-13 17:34 | 只看該作者

回復

使用道具 舉報

板凳
ID:123289 發表于 2022-11-14 15:25 | 只看該作者
矩陣的各個鍵都是等價的,關鍵是按下后你程序如何執行!
退格:清除上次鍵操作的結果,將光標(指針)停留在上次的鍵位上。
這就要求你記住每次操作的鍵位置。
清零:將當前位置上的東東清0 。
也要求你對每次操作的鍵位置有記錄,還要求你對清0有定義。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品区| 一区二区三区影院 | 国产在线网站 | 国产精品一区二区三区在线播放 | 国产资源视频 | 国产精品成人一区 | 国产免费av在线 | 日日操视频 | 国产成人jvid在线播放 | 久久精品无码一区二区三区 | 91中文字幕在线观看 | 91精品国产综合久久久久久 | 午夜久草| 亚洲欧美日韩中文在线 | 亚洲欧美一区二区三区在线 | 99re在线视频观看 | 久久91精品国产一区二区三区 | 一区二区三区av夏目彩春 | 欧美精品一二三 | 久久精品这里精品 | 伊人久久综合 | 日本成人毛片 | 亚洲欧美日韩激情 | 天天看天天干 | 97色在线观看免费视频 | 久久综合狠狠综合久久综合88 | 91久久网站| 91视频在线看 | 91福利在线导航 | 色综合99 | 亚洲另类春色偷拍在线观看 | 日日操夜夜操视频 | 国产一区二区三区视频 | 国产精品亚洲一区二区三区在线 | 国内精品久久久久久影视8 最新黄色在线观看 | 欧美成人一区二免费视频软件 | 国产1区2区3区 | 91动漫在线观看 | 亚洲一区二区三区免费在线观看 | 精品免费视频 | 国产你懂的在线观看 |