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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2630|回復: 8
收起左側

怎么通過編程實現單片機按鍵掃描顯示0到15,急需大神求解

[復制鏈接]
ID:479319 發表于 2019-2-22 14:59 | 顯示全部樓層 |閱讀模式
怎么通過編程實現單片機按鍵掃描顯示0到15,比如按下按鍵1顯示1,按下按鍵2顯示2.....按下按鍵11顯示11
這是我的原程序,只能實現單數,不知道怎么實現雙數,求大家幫幫忙
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wr=P2^5;
sbit cs1=P2^6;
sbit cs2=P2^7;
uchar code table[]={0xc0,
0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88};
void dms(uint);
uchar num;
void display(num)
{          
  cs1=1;
  P0=0xfe;
        wr=0;
        wr=1;
  cs1=0;

  cs2=1;
  P0=table[num];
        wr=0;
        wr=1;
  cs2=0;
}

void m()
{
uchar tp,k;
P3=0xfe;
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
dms(10);
        tp=P3;
        tp=tp&0xf0;
        if(tp!=0xf0)
        {
         tp=P3;
         switch(tp)
         {
                 case 0xee:
                      k=0;
                                        break;  
                case 0xde:
                     k=1;
                                 break;
                case 0xbe:
                     k=2;
                                 break;
    case 0x7e:
                     k=3;
                                 break;
         }
         while(tp!=0xf0)
         {
                 tp=P3;
                tp=tp&0xf0;
         }
         display(k);
         }
        }

P3=0xfd;
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
dms(10);
        tp=P3;
        tp=tp&0xf0;
        if(tp!=0xf0)
        {
         tp=P3;
         switch(tp)
         {
                 case 0xed:
                      k=4;
                                        break;  
                case 0xdd:
                     k=5;
                                 break;
                case 0xbd:
                     k=6;
                                 break;
    case 0x7d:
                     k=7;
                                 break;
         }
         while(tp!=0xf0)
         {
                 tp=P3;
                tp=tp&0xf0;
         }
         display(k);
         }
        }


   P3=0xfb;
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
dms(10);
        tp=P3;
        tp=tp&0xf0;
        if(tp!=0xf0)
        {
         tp=P3;
         switch(tp)
         {
                 case 0xeb:  
                      k=8;
                                        break;  
                case 0xdb:
                     k=9;
                                 break;
                case 0xbb:
                     k=10;
                                 break;
    case 0x7b:
                     k=11;
                                 break;
         }
         while(tp!=0xf0)
         {
                 tp=P3;
                tp=tp&0xf0;
         }
         display(k);
         }
        }
}

void dms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
   for(j=110;j>0;j--);
}
void main()
{

while(1)
{
  m();
}
}       


回復

使用道具 舉報

ID:213173 發表于 2019-2-22 20:50 | 顯示全部樓層
你的程序只寫了一位數碼管顯示,怎能顯示兩位數?程序沒有任何注釋,別人怎么準確知道你的硬件電路連接?
回復

使用道具 舉報

ID:477932 發表于 2019-2-22 23:43 | 顯示全部樓層
上電路圖,不方便的話上壇子看視頻
回復

使用道具 舉報

ID:318927 發表于 2019-2-23 15:07 | 顯示全部樓層
你忘了,顯示都是按16進制來顯示的,而且你一次只掃描一次
回復

使用道具 舉報

ID:476853 發表于 2019-2-24 20:45 來自觸屏版 | 顯示全部樓層
先檢測按下第幾行在檢測按的是哪個,沒思路的話可以參考一下網上的
回復

使用道具 舉報

ID:480108 發表于 2019-2-24 22:01 | 顯示全部樓層
程序要有詳細的注釋和關于數碼管接線的說明,還有變量名函數名的命名要規范和見名知義,這樣別人也容易看得懂為你解答。
回復

使用道具 舉報

ID:478236 發表于 2019-3-4 10:43 | 顯示全部樓層
如果是數碼管的話可以先取整顯示,在取余顯示,
回復

使用道具 舉報

ID:478236 發表于 2019-3-4 10:45 | 顯示全部樓層
如果不想顯示一位數時帶個0在前面(如09,08,11)再加一個判斷條件
回復

使用道具 舉報

ID:484236 發表于 2019-3-4 15:04 | 顯示全部樓層
在編制鍵盤輸入程序時常常要用到一個鍵的掃描碼或ASC碼,如用到 Foxpro 的 inkey() 函數,以及用到 BIOS 的 INT 16H時,但找一個編碼表不太容易,有時候找到的編碼表又不全,無法查到組合鍵的編碼,本程序就是一個隨時用來顯示按鍵的ASC碼及掃描碼的程序,可以用 16 進制和 10 進制同時顯示一個鍵按下和放開的掃描碼,以及ASC碼,同樣也支持組合鍵。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人导航| 亚洲成人一区 | 国产在线精品一区 | 福利网站在线观看 | 亚州综合一区 | 中文成人无字幕乱码精品 | 午夜在线视频 | 亚洲九九 | 精品久久久久一区二区国产 | 久久久国产视频 | 欧美日本免费 | 欧美阿v| 玖玖视频 | 一区二区三区日韩 | 日韩综合在线 | 香蕉视频黄色 | 成人黄色在线观看 | 男女羞羞视频在线免费观看 | 欧美精品一区二区三区在线播放 | 久久久久亚洲精品国产 | 欧美成人一级 | 欧洲精品码一区二区三区免费看 | 91社区在线观看 | 国产精品精品久久久 | 成人免费大片黄在线播放 | 亚洲精品一区二三区不卡 | 亚洲一区 中文字幕 | av一区在线观看 | 国产视频黄色 | 精品国产一区二区国模嫣然 | 五月婷亚洲| 在线视频91| 久久综合狠狠综合久久综合88 | 99精品电影 | 国产精品明星裸体写真集 | 蜜桃官网| 国产区精品 | 91在线 | 97精品国产97久久久久久免费 | 91精品久久久久久久久中文字幕 | 亚洲综合在线网 |