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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機開發板如何在數碼管上顯示矩陣鍵盤值(138譯碼器)

[復制鏈接]
跳轉到指定樓層
樓主
ID:964313 發表于 2022-2-12 22:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大神們幫我看一下這個代碼,普中的A2板子,數碼管不能顯示鍵碼值,只能一閃而過,有什么辦法可以穩定清晰的顯示鍵碼值呢?

單片機源程序如下:
#include <REGX52.H>
#include "LCD1602.h"
#include "MatrixKey.h"
#include "NixieTube.h"

unsigned char KeyNum;

void main()
{
    LCD_Init();
    LCD_ShowString(1,1,"MatrixKey:");


        while(1)
        {   
            KeyNum=MatrixKey();

            if(KeyNum)
            {

                NixieTube(1,KeyNum);
                NixieTube(2,KeyNum);
                NixieTube(3,KeyNum);
                NixieTube(4,KeyNum);
                NixieTube(5,KeyNum);
                NixieTube(6,KeyNum);
                NixieTube(7,KeyNum);
                NixieTube(8,KeyNum);

            }


        }
}




#include <REGX52.H>
#include <INTRINS.H>
#include "Delay1ms.h"

unsigned char code NixieTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
                          0x7d,0x07,0x7f,0x6f,0x77,0x7c,
                          0x39,0x5e,0x79,0x71,0x00};


void NixieTube(unsigned char Location,Number)
{
    switch(Location)
    {
        case 1:P2_4=1;P2_3=1;P2_2=1;break;
        case 2:P2_4=1;P2_3=1;P2_2=0;break;
        case 3:P2_4=1;P2_3=0;P2_2=1;break;
        case 4:P2_4=1;P2_3=0;P2_2=0;break;
        case 5:P2_4=0;P2_3=1;P2_2=1;break;
        case 6:P2_4=0;P2_3=1;P2_2=0;break;
        case 7:P2_4=0;P2_3=0;P2_2=1;break;
        case 8:P2_4=0;P2_3=0;P2_2=0;break;

    }

    P0=NixieTable[Number];
    Delay1ms(1);
    P0=0x00;

}

6-1 矩陣鍵盤.rar

39.46 KB, 下載次數: 4

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

使用道具 舉報

沙發
ID:213173 發表于 2022-2-13 07:12 | 只看該作者
你想要在數碼管上顯示矩陣鍵盤值,卻使用的是液晶屏顯示代碼。
  1. #include <REG51.H>
  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. u8  code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰段碼
  5. u8 KeyValue;        //鍵值

  6. void Delay_ms(u16 t)//延時函數
  7. {
  8.         u16 i,j;
  9.         for(i=t;i>0;i--)
  10.                 for(j=110;j>0;j--);
  11. }

  12. void key_scan()                        //按鍵掃描函數
  13. {
  14.         static bit sign=0;        //自鎖位變量
  15.         static u8 count=0;        //消抖計數變量
  16.         P1=0xf0;                                        //賦值P1 1111 0000
  17.         if(P1!=0xf0)                        //檢測有按鍵按下
  18.         {
  19.                 if(++count>=10 && sign==0)//消抖
  20.                 {                       
  21.                         sign=1;                        //按鍵自鎖標志置1
  22.                         switch(P1)
  23.                         {
  24.                                 case(0xe0):KeyValue = 1;break;
  25.                                 case(0xd0):KeyValue = 2;break;
  26.                                 case(0xb0):KeyValue = 3;break;
  27.                                 case(0x70):KeyValue = 4;break;
  28.                         }
  29.                         P1=0x0f;                        //賦值P1 0000 1111
  30.                         switch(P1)
  31.                         {
  32.                                 case(0x0e):KeyValue+= 0;break;
  33.                                 case(0x0d):KeyValue+= 4;break;
  34.                                 case(0x0b):KeyValue+= 8;break;
  35.                                 case(0x07):KeyValue+=12;break;
  36.                         }
  37.                 }
  38.         }
  39.         else                                                //鍵抬起
  40.         {
  41.                 sign=0;                                //按鍵自鎖標志清0
  42.                 count=0;                                //消抖計數清0
  43.         }
  44. }

  45. void display()                                //數碼管動態顯示函數
  46. {
  47.         static u8 i;
  48.         u8 a[2];
  49.         a[0]=table[KeyValue%10];//分解個位
  50.         a[1]=table[KeyValue/10];//分解十位
  51.         P0=0x00;                                        //段碼消隱
  52.         P2&=0xe3;                                //清除位碼
  53.         P2|=(i<<2);                                //送位碼
  54.         P0=a[i];                                        //送段碼
  55.         i=++i%2;                                        //循環計數
  56. }

  57. void main()
  58. {
  59.         while(1)
  60.         {   
  61.                 key_scan();
  62.                 display();
  63.                 Delay_ms(1);
  64.         }
  65. }
復制代碼
回復

使用道具 舉報

板凳
ID:964313 發表于 2022-2-13 12:25 | 只看該作者
有液晶屏的,也有數碼管的啊,現在就是數碼管的顯示有問題。
回復

使用道具 舉報

地板
ID:964313 發表于 2022-2-14 23:44 | 只看該作者
asd2580 發表于 2022-2-13 12:25
有液晶屏的,也有數碼管的啊,現在就是數碼管的顯示有問題。

數碼管可以顯示了,但顯示8位的時候,除了第一行的數字,其余的數字在按鍵按下時會閃爍,大師能不能幫我看一下 是什么原因呢?
回復

使用道具 舉報

5#
ID:964313 發表于 2022-2-14 23:46 | 只看該作者
數碼管可以顯示了,但8位數全部顯示時,除了第一行的按鍵,其余的按鍵按下數字會一直跳,不知道啥原因,有大師能指導一下嗎?

6-1 矩陣鍵盤A.rar

33.7 KB, 下載次數: 1

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产一区二区电影 | 精品国产99 | 日日摸日日添日日躁av | 欧美性大战久久久久久久蜜臀 | 夜夜操天天干 | 午夜电影福利 | 久久久久国产精品 | 激情毛片 | 成人一区二区在线 | 精品一区视频 | 91精品国产综合久久久久久漫画 | 日日骚网 | 久久精品免费 | 亚洲天堂一区二区 | 亚洲久草视频 | 日韩欧美专区 | www.一级片 | 91国产在线视频在线 | 久久人人爽人人爽 | 国产日韩欧美在线观看 | 中文字幕一区二区三区在线观看 | 天天看片天天干 | 免费a国产 | 91免费版在线 | 秋霞影院一区二区 | 欧美一区二区免费 | 一区二区三区精品 | 野狼在线社区2017入口 | 国产精品国产成人国产三级 | 日韩av在线免费 | 亚洲精品在线免费观看视频 | 亚洲精品99久久久久久 | 男人天堂久久久 | 日韩中文字幕在线观看 | 亚洲一区二区免费视频 | 成人免费在线小视频 | 浮生影院免费观看中文版 | 日本一区二区不卡视频 | 午夜视频在线免费观看 | 欧洲精品码一区二区三区免费看 | 欧美影院 |