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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

實驗例程--獨立按鍵如何增加更多的控制IO口

[復制鏈接]
跳轉到指定樓層
樓主
ID:353 發表于 2017-8-13 15:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
20黑幣
本帖最后由 yaofang1010 于 2017-8-14 10:39 編輯

想在實驗程序--獨立按鍵4路的基礎上增加至14路控制,修改后還是達不要求,求解應當如何修改?謝謝!

原程序如下:
#include<reg51.h>
#include<intrins.h>        

#define GPIO_LED P2                  //宏定義P2口
sbit K1=P1^4;                          //位操作
sbit K2=P1^5;
sbit K3=P1^6;
sbit K4=P1^7;
sbit K5=P3^5;
void Delay10ms( );   //延時10ms

/*******************************************************************************
* 函 數 名         : main
* 函數功能                   : 主函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void main(void)
{

        
        while(1)
        {                 
                if(K1==0)                //檢測按鍵K1是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K1==0)
                        {
                                GPIO_LED = 0xfe;        //1111 1110 第一個燈亮
                        }
                }
               
                if(K2==0)                //檢測按鍵K1是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K2==0)
                        {
                                GPIO_LED = 0xfd;        //1111 1101 第二個燈亮
                        }
                }
               
                if(K3==0)                //檢測按鍵K1是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K3==0)
                        {
                                GPIO_LED = 0xfb;        
                        }
                }
               
                if(K4==0)                //檢測按鍵K1是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K4==0)
                        {
                                GPIO_LED = 0xf7;        
                        }
                }
               
                if(K5==0)                //檢測按鍵K1是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K5==0)
                        {
                                GPIO_LED = 0xef;        
                        }
                }               

        }                                
}
/*******************************************************************************
* 函 數 名         : Delay10ms
* 函數功能                   : 延時函數,延時10ms
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void Delay10ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}


修改后的:
#include<reg51.h>
#include<intrins.h>        

#define GPIO_LED P0                  //宏定義P2口
#define GPIO_LED P2                  //定義P0口
sbit K1=P1^0;                          //位操作
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit K7=P1^6;
sbit K8=P1^7;
sbit K9=P3^2;
sbit K10=P3^3;
sbit K11=P3^4;
sbit K12=P3^5;
sbit K13=P3^6;
sbit K14=P3^7;
void Delay10ms( );   //延時10ms

/*******************************************************************************
* 函 數 名         : main
* 函數功能                   : 主函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void main(void)
{

        
        while(1)
        {                 
                if(K1==0)                //檢測按鍵K1是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K1==0)
                        {
                                GPIO_LED = 0x3ffe;        // 11111111111110第一個燈亮
                        }
                }
               
                if(K2==0)                //檢測按鍵K2是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K2==0)
                        {
                                GPIO_LED = 0x3ffd;        //11111111111101 第二個燈亮
                        }
                }
               
                if(K3==0)                //檢測按鍵K3是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K3==0)
                        {
                                GPIO_LED = 0x3ffb;        //11111111111011 第三個燈亮
                        }
                }
               
                if(K4==0)                //檢測按鍵K4是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K4==0)
                        {
                                GPIO_LED = 0x3ff7;        //11111111110111 第四個燈亮
                        }
                }

                if(K5==0)                //檢測按鍵K5是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K5==0)
                        {
                                GPIO_LED = 0x3fef;        //11111111101111 第5個燈亮
                        }
                }

                if(K6==0)                //檢測按鍵K6是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K6==0)
                        {
                                GPIO_LED = 0x3fdf;        //11111111011111 第6個燈亮
                        }
                }

                if(K7==0)                //檢測按鍵K7是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K7==0)
                        {
                                GPIO_LED = 0x3fbf;        //11111110111111第7個燈亮
                        }
                }

                   if(K8==0)                //檢測按鍵K8是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K8==0)
                        {
                                GPIO_LED = 0x3f7f;        //11111101111111第8個燈亮
                        }
                }

                   if(K9==0)                //檢測按鍵K9是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K9==0)
                        {
                                GPIO_LED = 0x3eff;        //11111011111111第9個燈亮
                        }
                }

                        if(K10==0)                //檢測按鍵10是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K10==0)
                        {
                                GPIO_LED = 0x3dff;        //11110111111111第10個燈亮
                        }
                }

                         if(K11==0)                //檢測按鍵K11是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K11==0)
                        {
                                GPIO_LED = 0x3bff;        //11101111111111第11個燈亮
                        }
                }

                        if(K12==0)                //檢測按鍵K12是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K12==0)
                        {
                                GPIO_LED = 0x37ff;        //11011111111111第12個燈亮
                        }
                }
                          
                           if(K13==0)                //檢測按鍵K13是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K13==0)
                        {
                                GPIO_LED = 0x2fff;        //10111111111111第13個燈亮
                        }
                }
                        
                if(K14==0)                //檢測按鍵K14是否按下
                {
                        Delay10ms();        //消除抖動
                        if(K14==0)
                        {
                                GPIO_LED = 0x1fff;                //10111111111111第14個燈亮
                        }
                }               

        }                                
}
/*******************************************************************************
* 函 數 名         : Delay10ms
* 函數功能                   : 延時函數,延時10ms
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void Delay10ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}



使用距陣鍵盤后如下,已達到要求。如何在程序增加一路LED閃爍程序在里面呢?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[4]={0xFE,0xFD,0xFB,0xF7};
uchar scan()
{
uchar Temp=0;
uchar num=0,i=0;
for(i=0;i<4;i++)
{
P1=table;
Temp=P1& 0xF0;
if(Temp!=0xF0)
{
switch(Temp)
{Temp=P1;
case 0xE0: num=0;break;
case 0xD0: num=1;break;
case 0xB0: num=2;break;
case 0x70: num=3;break;
default: num=50;break;
}
break;
}
}
return num+4*i+1;
}
void display(uchar num1)
{switch(num1)
{
case 1:P2=0xfe;P3=0xff;break;   //1
case 2:P2=0xfd;P3=0xff;break;   //2
case 3:P2=0xfb;P3=0xff;break;  // 3
case 4:P2=0xf7;P3=0xff;break;  // 4
case 5:P2=0xef;P3=0xff;break;  // 5
case 6:P2=0xdf;P3=0xff;break;  // 6
case 7:P2=0xbf;P3=0xff;break;  // 7
case 8:P2=0x7f;P3=0xff;break;  // 8  
case 9:P2=0xff;P3=0xfe;break;  // 9
case 10:P2=0xff;P3=0xfd;break;  // 10
case 11:P2=0xff;P3=0xfb;break;  // 11
case 12:P2=0xff;P3=0xf7;break;  // 12
case 13:P2=0xff;P3=0xef;break;  // 13
case 14:P2=0xff;P3=0xdf;break;  // 14
case 15:P2=0xff;P3=0xbf;break;  // 15
case 16:P2=0xff,P3=0x7f;break;  // 16
default:break;  
};   
}
void main()
{char num1;  
while(1)   
{  
num1=scan();
display(num1);  
  }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:218476 發表于 2017-8-13 23:40 | 只看該作者
矩陣鍵盤不好嗎?
回復

使用道具 舉報

板凳
ID:227474 發表于 2017-8-14 00:28 來自手機 | 只看該作者
用74hc138
回復

使用道具 舉報

地板
ID:353 發表于 2017-8-14 10:35 | 只看該作者

已使用距陣鍵盤解決問題,謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美激情网 | 99热最新网址 | 日韩一区二区成人 | 粉嫩国产精品一区二区在线观看 | 久热精品视频 | 国产精品成av人在线视午夜片 | 国产精品特级片 | 成人精品一区 | 操操操操操 | 日韩av在线一区二区 | 成人免费视频网站在线看 | 久草.com | 国产一区二区视频免费在线观看 | 成人在线视频免费播放 | 男女污污网站 | 日韩1区2区| 丝袜一区二区三区 | 国产亚洲一区二区在线观看 | 在线观看av免费 | 日韩精品一区二区三区在线 | 国产精品一区二区视频 | 精品久久久久久国产 | 日韩中字幕| 国产激情一区二区三区 | 91就要激情 | 亚洲国产一区二区三区 | 野狼在线社区2017入口 | 欧美一区二区三区在线观看 | 久久新| 久草热视频 | 日韩精品久久 | 操操日 | h视频亚洲 | 成人免费在线视频 | 欧美日韩国产高清 | 精品国产第一区二区三区 | 国产亚洲精品久久19p | 欧美激情久久久久久 | 日韩精品一区二区三区免费视频 | 精品乱码一区二区三四区 | 欧美日韩1区2区3区 欧美久久一区 |