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

標(biāo)題: 單片機(jī)TM1638數(shù)碼管和按鍵控制器程序 怎么得到按鍵返回值? [打印本頁(yè)]

作者: mentooo    時(shí)間: 2023-3-9 01:18
標(biāo)題: 單片機(jī)TM1638數(shù)碼管和按鍵控制器程序 怎么得到按鍵返回值?
實(shí)物圖
顯示可以設(shè)置,但按鍵值不會(huì)正確返回,不知道怎么回事。單片機(jī)是STC8G系列
  1. #include        <REGX51.H>
  2. #include        <tm1638.h>

  3. unsigned char num[8];                //各個(gè)數(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.                 //★經(jīng)過(guò)測(cè)試 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. }

復(fù)制代碼
Keil代碼下載:
TM1638測(cè)試程序C51(源程序無(wú)改動(dòng)).zip (34.25 KB, 下載次數(shù): 22)


作者: hi等你    時(shí)間: 2023-3-9 09:45


我看不懂樓主的語(yǔ)言,我只知道匯編,我用過(guò)這個(gè)1638和樓主一樣很熟悉,思路應(yīng)該是一樣的

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

,每一個(gè)按鍵對(duì)應(yīng)一個(gè)位數(shù)據(jù),然后把固定的鍵值做比對(duì),對(duì)上就說(shuō)明按鍵按下,再去

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

作者: level888    時(shí)間: 2023-3-9 09:54
http://m.zg4o1577.cn/bbs/dpj-216788-1.html
作者: 188610329    時(shí)間: 2023-3-9 13:22
TM1638  按要求是  需要在  DIO 放置 10K 上拉 以及 100P 電容濾波的,你買(mǎi)的現(xiàn)成板子大概率 沒(méi)有加這個(gè)部分的,那么如果 12T 的學(xué)習(xí)板單片機(jī)操作(速度慢板載有上拉) 一般是沒(méi)有這個(gè)問(wèn)題的,但是遇到 STC8 這種1T單片機(jī),你就要在 CLK =0 之后給與足夠的 延時(shí)等待,以及IO口 要設(shè)置內(nèi)部上拉開(kāi),并且不是推挽模式,才能讀到正確的鍵值。
作者: feeling1791    時(shí)間: 2023-3-9 17:00
http://m.zg4o1577.cn/bbs/dpj-226112-1.html 可以參考一下
作者: lzh085    時(shí)間: 2023-3-9 17:24
要得到TM1638按鍵返回值,需要進(jìn)行以下步驟:

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

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

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

以下是一個(gè)簡(jiǎn)單的示例程序,用于從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;  // 開(kāi)始傳輸數(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;  // 開(kāi)始傳輸數(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個(gè)按鍵被按下
            return 1;
        case 0x02:  // 第2個(gè)按鍵被按下
            return 2;
        case 0x04:  // 第3個(gè)按鍵被按下
            return 3;
        case 0x08:  // 第4個(gè)按鍵被按下
            return 4;
        case 0x10:  // 第5個(gè)按鍵被按下
            return 5;
        case 0x20:  // 第6個(gè)按鍵被按下
            return 6;
        case 0x40:  // 第7個(gè)按鍵被按下
            return 7;
        case 0x80:  // 第8個(gè)按鍵被按下
            return 8;
        default:
            return

    }
    return key_code;
}

作者: xiaobendan001    時(shí)間: 2024-1-30 10:46
188610329 發(fā)表于 2023-3-9 13:22
TM1638  按要求是  需要在  DIO 放置 10K 上拉 以及 100P 電容濾波的,你買(mǎi)的現(xiàn)成板子大概率 沒(méi)有加這個(gè)部 ...

前輩,請(qǐng)教一下,我的板子上上拉10K也有,101的電容也有,三條線還串聯(lián)了180電阻。顯示和按鍵都正常使用,但是在強(qiáng)電磁干擾下會(huì)讀到很多意外的按鍵,甚至亮度都會(huì)變成最低,這個(gè)怎樣解決?
作者: xiaobendan001    時(shí)間: 2024-2-2 16:41
再頂一下,望前輩指點(diǎn)




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 黄色一级大片在线免费看国产一 | 天天操夜夜爽 | 欧美日韩成人一区二区 | 在线免费观看黄色片 | 亚洲免费小视频 | 成人扒开伸进免费观看 | 日本一本草久p | 成人毛片网 | 久久久久久九九九九 | 在线一区视频 | 日韩av在线看 | 黄色片亚洲 | 日韩欧美高清视频 | 欧美日韩亚洲一区二区 | 久久精品二区 | 黄网在线播放 | 日本国产在线 | 两性午夜视频 | 成av人片一区二区三区久久 | 欧美国产日韩在线 | 日韩欧美国产成人 | 在线观看欧美日韩视频 | 久久视频免费在线观看 | 国产精品一区二区三区不卡 | 一区二区福利视频 | 激情视频网| 日日夜夜操操 | 毛片毛片毛片毛片毛片 | 日韩精品第一页 | 最新av在线播放 | 日本一级大毛片a一 | 黄色高潮视频 | 日韩中文字幕在线视频 | 欧美性色网 | 国产精品国产三级国产专区52 | 欧美一区二区三区在线 | 亚洲天堂一区二区三区 | 欧洲美一区二区三区亚洲 | 麻豆一区二区三区 | 日韩视频精品 | 亚洲三级黄色片 |