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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機TM1638數(shù)碼管和按鍵控制器程序 怎么得到按鍵返回值?

[復制鏈接]
跳轉到指定樓層
樓主
ID:998050 發(fā)表于 2023-3-9 01:18 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
實物圖
顯示可以設置,但按鍵值不會正確返回,不知道怎么回事。單片機是STC8G系列
  1. #include        <REGX51.H>
  2. #include        <tm1638.h>

  3. unsigned char num[8];                //各個數(shù)碼管顯示的值

  4. int main(void)
  5. {
  6.         unsigned char i;
  7.         init_TM1638();                                   //初始化TM1638
  8.         for(i=0;i<8;i++)
  9.         Write_DATA(i<<1,tab[0]);                       //初始化寄存器
  10.         
  11.         while(1)
  12.         {
  13.                 //★經過測試 i=Read_key(); 不能正確返回按鍵值
  14.                 i=Read_key();                          //讀按鍵值
  15.                 if(i<8)
  16.                 {
  17.                         num[i]++;
  18.                         while(Read_key()==i);                       //等待按鍵釋放
  19.                         if(num[i]>15)
  20.                         num[i]=0;
  21.                         Write_DATA(i*2,tab[num[i]]);
  22.                         Write_allLED(1<<i);
  23.                 }
  24.         }
  25. }

復制代碼
Keil代碼下載:
TM1638測試程序C51(源程序無改動).zip (34.25 KB, 下載次數(shù): 22)

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

使用道具 舉報

沙發(fā)
ID:996773 發(fā)表于 2023-3-9 09:45 | 只看該作者


我看不懂樓主的語言,我只知道匯編,我用過這個1638和樓主一樣很熟悉,思路應該是一樣的

這個1638按鍵沒有返回概念,用它的按鍵只能一直不停讀取鍵值,好像一共三個字節(jié)

,每一個按鍵對應一個位數(shù)據(jù),然后把固定的鍵值做比對,對上就說明按鍵按下,再去

執(zhí)行,提醒樓主,同一個讀鍵腳上的按鍵不一定在同一個字節(jié)里
回復

使用道具 舉報

板凳
ID:278006 發(fā)表于 2023-3-9 09:54 | 只看該作者
回復

使用道具 舉報

地板
ID:624769 發(fā)表于 2023-3-9 13:22 | 只看該作者
TM1638  按要求是  需要在  DIO 放置 10K 上拉 以及 100P 電容濾波的,你買的現(xiàn)成板子大概率 沒有加這個部分的,那么如果 12T 的學習板單片機操作(速度慢板載有上拉) 一般是沒有這個問題的,但是遇到 STC8 這種1T單片機,你就要在 CLK =0 之后給與足夠的 延時等待,以及IO口 要設置內部上拉開,并且不是推挽模式,才能讀到正確的鍵值。
回復

使用道具 舉報

5#
ID:651494 發(fā)表于 2023-3-9 17:00 | 只看該作者
回復

使用道具 舉報

6#
ID:841986 發(fā)表于 2023-3-9 17:24 | 只看該作者
要得到TM1638按鍵返回值,需要進行以下步驟:

初始化TM1638控制器:在程序中通過SPI接口向TM1638控制器寫入數(shù)據(jù),對其進行初始化。具體的初始化操作可以參考TM1638的數(shù)據(jù)手冊。

讀取按鍵狀態(tài):通過讀取TM1638控制器內部的寄存器,可以得到按鍵的狀態(tài)。具體的讀取操作可以參考TM1638的數(shù)據(jù)手冊。

解析按鍵狀態(tài):得到按鍵狀態(tài)后,需要進行解析,以得到按鍵的返回值。TM1638控制器可以同時檢測多個按鍵的狀態(tài),因此需要對返回值進行判斷,以確定哪個按鍵被按下。

以下是一個簡單的示例程序,用于從TM1638控制器讀取按鍵狀態(tài):
#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit STB = P1^0;  // TM1638控制引腳1
sbit CLK = P1^1;  // TM1638控制引腳2
sbit DIO = P1^2;  // TM1638控制引腳3

void tm1638_write(uint address, uchar data)
{
    STB = 0;  // 開始傳輸數(shù)據(jù)
    spi_write(address);  // 發(fā)送地址
    spi_write(data);  // 發(fā)送數(shù)據(jù)
    STB = 1;  // 停止傳輸數(shù)據(jù)
}

uchar tm1638_read(uint address)
{
    uchar data;

    STB = 0;  // 開始傳輸數(shù)據(jù)
    spi_write(address | 0x02);  // 發(fā)送讀取命令和地址
    data = spi_read();  // 讀取數(shù)據(jù)
    STB = 1;  // 停止傳輸數(shù)據(jù)

    return data;
}

uchar get_key(void)
{
    uchar key_code = tm1638_read(0x42);  // 讀取按鍵狀態(tài)

    switch (key_code)
    {
        case 0x01:  // 第1個按鍵被按下
            return 1;
        case 0x02:  // 第2個按鍵被按下
            return 2;
        case 0x04:  // 第3個按鍵被按下
            return 3;
        case 0x08:  // 第4個按鍵被按下
            return 4;
        case 0x10:  // 第5個按鍵被按下
            return 5;
        case 0x20:  // 第6個按鍵被按下
            return 6;
        case 0x40:  // 第7個按鍵被按下
            return 7;
        case 0x80:  // 第8個按鍵被按下
            return 8;
        default:
            return

    }
    return key_code;
}
回復

使用道具 舉報

7#
ID:1109793 發(fā)表于 2024-1-30 10:46 | 只看該作者
188610329 發(fā)表于 2023-3-9 13:22
TM1638  按要求是  需要在  DIO 放置 10K 上拉 以及 100P 電容濾波的,你買的現(xiàn)成板子大概率 沒有加這個部 ...

前輩,請教一下,我的板子上上拉10K也有,101的電容也有,三條線還串聯(lián)了180電阻。顯示和按鍵都正常使用,但是在強電磁干擾下會讀到很多意外的按鍵,甚至亮度都會變成最低,這個怎樣解決?
回復

使用道具 舉報

8#
ID:1109793 發(fā)表于 2024-2-2 16:41 | 只看該作者
再頂一下,望前輩指點
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 波多野结衣二区 | 日本成年免费网站 | 欧美中文一区 | 男人天堂国产 | 精品久久99 | 热99在线 | 久久精品色欧美aⅴ一区二区 | 久久久亚洲 | 国产精品伦一区二区三级视频 | 99精品视频一区二区三区 | 正在播放亚洲 | 视频在线亚洲 | 免费看色 | 国产精品毛片一区二区在线看 | 中文字幕一区二区在线观看 | 狠狠的干狠狠的操 | 久草在线在线精品观看 | 日韩精品福利 | 中文在线视频 | 伊人欧美视频 | 婷婷精品 | 欧美一级观看 | 精品视频一区二区 | 最新中文字幕久久 | 日韩精品成人网 | 亚洲 欧美 日韩在线 | 黄色毛片大全 | 五十女人一级毛片 | www.国产91| 青娱乐一区二区 | 成人a免费| 91成人在线视频 | 亚洲精品久久久蜜桃 | 中文字幕日韩专区 | 欧美日韩亚洲系列 | 免费一级黄色录像 | 欧美一区免费 | 亚洲一区二区三区四区在线观看 | 日本精品视频一区二区三区四区 | 国产成人99久久亚洲综合精品 | 一区视频 |