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

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

作者: nnk0‘’u;jhk    時間: 2022-11-13 10:13
標題: 單片機矩陣和獨立按鍵的結合但不知道哪里出錯還是實現不了退格清零,麻煩各位幫忙...
#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];
               
         
        }
}

作者: lkc8210    時間: 2022-11-13 17:34


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




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 人人玩人人添人人澡欧美 | 欧美日韩亚洲成人 | 亚洲国产精品福利 | 爱爱爱av | 视频一区二区三区中文字幕 | 中文字幕国| 欧美成人h版在线观看 | 97精品一区二区 | 久久草在线视频 | 成人精品一区 | 婷婷激情综合 | 欧美日韩成人在线 | 成人免费黄色片 | 国产日韩久久 | 91在线看视频| 中文字幕一区二区视频 | 中文精品视频 | 国产美女自拍视频 | 久久午夜精品 | 一级黄色片在线看 | 国产一区二区在线播放 | 国产一区久久久 | 国产精品一区二区三区99 | 精品一区二区视频 | 久久1区| 99久久精品免费看国产四区 | 久久精品亚洲 | 日韩中文视频 | 一区二区国产精品 | 色偷偷888欧美精品久久久 | 91一区二区三区在线观看 | 四虎永久在线精品免费一区二 | 色999日韩| 欧美啊v在线观看 | 麻豆一区二区三区 | 国产欧美一区二区三区久久手机版 | 欧美精品久久久久 | 亚洲综合视频 | 日韩精品一区二区三区中文在线 | 日韩av一区二区在线观看 | 国产一区二区欧美 |