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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20947|回復(fù): 30
打印 上一主題 下一主題
收起左側(cè)

TM1650模塊單片機(jī)源程序(子函數(shù))

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:23844 發(fā)表于 2018-3-25 08:08 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
TM1650模塊子函數(shù),歡迎下載測試應(yīng)用. 取之于網(wǎng)絡(luò),分享給大家

單片機(jī)源程序如下:
  1. #include<STC12C5A.h>
  2. #include"tm1650.h"
  3. void Delay_us(uint i) //us延時
  4. {
  5.         for(;i>0;i--)
  6.         {
  7.         _nop_();
  8. //        _nop_();
  9. //        _nop_();
  10.         }
  11. }
  12. void I2CStart(void)        //開始信號
  13. {
  14.         CLK_H;
  15.         DIO_H;
  16.         Delay_us(5);
  17.         DIO_L;
  18.         
  19. }

  20. void I2Cask(void) //ACK信號
  21. {
  22.         uchar timeout = 1;
  23.         CLK_H;
  24.         Delay_us(5);
  25.         CLK_L;
  26.         while((DIO)&&(timeout<=100))
  27.         {
  28.           timeout++;        
  29.         }
  30.         Delay_us(5);
  31.         CLK_L;
  32. }

  33. void I2CStop(void) //停止信號
  34. {
  35.         CLK_H;
  36.         DIO_L;
  37.         Delay_us(5);
  38.         DIO_H;
  39. }

  40. void I2CWrByte(uchar oneByte) //寫一個字節(jié)高位在前,低位在后
  41. {
  42.         uchar i;
  43.         CLK_L;
  44.         Delay_us(1);
  45.         for(i=0;i<8;i++)
  46.         {        
  47.                 oneByte = oneByte<<1;
  48.                 DIO = CY;
  49.                 CLK_L;
  50.                 Delay_us(5);
  51.                 CLK_H;
  52.                 Delay_us(5);
  53.                 CLK_L;
  54.         }
  55. }

  56. uchar Scan_Key(void)          // 按鍵掃描
  57. {
  58.         uchar i;
  59.         uchar rekey;
  60.         I2CStart();
  61.         I2CWrByte(0x49);//讀按鍵命令
  62.         I2Cask();
  63.         //DIO_H;
  64.         for(i=0;i<8;i++)
  65.         {
  66.            CLK_H;
  67.            rekey = rekey<<1;
  68.            if(DIO)
  69.            {
  70.                    rekey++;
  71.            }
  72.            Delay_us(5);
  73.            CLK_L;        
  74.         }
  75.         I2Cask();
  76.         I2CStop();
  77.         return(rekey);
  78. }


  79. void TM1650_Set(uchar add,uchar dat) //數(shù)碼管顯示
  80. {
  81.         //寫顯存必須從高地址開始寫
  82.         I2CStart();
  83.         I2CWrByte(add); //第一個顯存地址
  84.         I2Cask();
  85.         I2CWrByte(dat);
  86.         I2Cask();
  87.         I2CStop();
  88. }
復(fù)制代碼

所有資料51hei提供下載:
TM1650.rar (1.01 KB, 下載次數(shù): 597)


評分

參與人數(shù) 2黑幣 +55 收起 理由
supermcu8 + 5 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

來自 2#
ID:386669 發(fā)表于 2020-8-1 16:42 | 只看該作者
正在看規(guī)格書寫1650的程序,還沒有拿到板子上面測試。看了樣例程序,對于有的師兄說按鍵掃描沒有反應(yīng),可能是有的單片機(jī)的端口輸入和輸出狀態(tài)要單獨(dú)設(shè)定,而樣例里面的單片機(jī)可能是不用設(shè)定的。
我這邊看規(guī)格書的時候也有個疑問,按鍵讀取的時候,只有一個字節(jié),又不區(qū)分地址,怎么能讀取28個按鍵呢?
問了代理,說是晚上回復(fù)。
回復(fù)

使用道具 舉報

板凳
ID:39626 發(fā)表于 2018-9-17 20:12 | 只看該作者
這個程序不錯,找了好久總算找到合適的方案了
回復(fù)

使用道具 舉報

地板
ID:289967 發(fā)表于 2018-10-22 15:02 | 只看該作者
我想問一下,我用賽元的MCU驅(qū)動的這個芯片,為什么按鍵掃描的時候按鍵沒有任何反應(yīng)呢
回復(fù)

使用道具 舉報

5#
ID:106045 發(fā)表于 2018-11-28 16:35 | 只看該作者
謝謝了
回復(fù)

使用道具 舉報

6#
ID:310569 發(fā)表于 2018-12-21 21:17 | 只看該作者
下來看看是否適合
回復(fù)

使用道具 舉報

7#
ID:461792 發(fā)表于 2019-1-4 14:50 | 只看該作者
請問,這個是pic的還是51的,我是個新手  求指教呀
回復(fù)

使用道具 舉報

8#
ID:374174 發(fā)表于 2019-4-25 20:22 | 只看該作者
謝了!
回復(fù)

使用道具 舉報

9#
ID:314601 發(fā)表于 2019-4-30 13:06 | 只看該作者
主函數(shù)部分沒有嗎     主要是按鍵掃描判斷       有點(diǎn)搞不懂
回復(fù)

使用道具 舉報

10#
ID:314601 發(fā)表于 2019-4-30 13:06 | 只看該作者
安靜的麻瓜 發(fā)表于 2019-1-4 14:50
請問,這個是pic的還是51的,我是個新手  求指教呀

51的升級版   也屬于51
回復(fù)

使用道具 舉報

11#
ID:486481 發(fā)表于 2019-5-17 16:55 | 只看該作者
謝謝了
回復(fù)

使用道具 舉報

12#
ID:493236 發(fā)表于 2019-5-27 14:53 | 只看該作者
很好,但是沒有黑幣了、、、
回復(fù)

使用道具 舉報

13#
ID:479519 發(fā)表于 2019-7-3 13:12 | 只看該作者
!好東西
回復(fù)

使用道具 舉報

14#
ID:295805 發(fā)表于 2019-7-26 16:05 | 只看該作者
謝樓主分享了。學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

15#
ID:636445 發(fā)表于 2019-11-6 08:31 | 只看該作者
謝謝了
回復(fù)

使用道具 舉報

16#
ID:263951 發(fā)表于 2020-1-11 20:40 | 只看該作者
liuzhengduo16 發(fā)表于 2018-10-22 15:02
我想問一下,我用賽元的MCU驅(qū)動的這個芯片,為什么按鍵掃描的時候按鍵沒有任何反應(yīng)呢

你的問題解決了嗎,我也要碰上SC的單片機(jī),不能讀按鍵
回復(fù)

使用道具 舉報

17#
ID:242109 發(fā)表于 2020-5-18 10:31 | 只看該作者
請問這款蕊片需要用戶主動掃描嗎?還是寫入數(shù)據(jù)后,蕊片自動刷新?
回復(fù)

使用道具 舉報

18#
ID:791173 發(fā)表于 2020-6-27 22:30 | 只看該作者
正在找這個內(nèi)容,多謝樓主;
回復(fù)

使用道具 舉報

19#
ID:386669 發(fā)表于 2020-8-1 17:53 | 只看該作者
fox1357 發(fā)表于 2020-8-1 16:42
正在看規(guī)格書寫1650的程序,還沒有拿到板子上面測試。看了樣例程序,對于有的師兄說按鍵掃描沒有反應(yīng),可能 ...

我大概明白了,這個芯片無法判斷兩個按鍵,0-255只需要返回一個值,就代表某一個具體按鍵。
回復(fù)

使用道具 舉報

20#
ID:828202 發(fā)表于 2020-10-11 11:22 | 只看該作者
程序 ACK 是錯的  試了好久鍵盤讀不出鍵值 最后發(fā)現(xiàn)詢問SDA下拉提前了一個脈沖
uchar BL = 2;          //亮度等級
uchar CODE[11] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff}; //0~9顯示代碼
                   // 0    1    2    3    4    5    6    7    8    9   a


void TM1650(uchar B1,uchar B2, uchar B3 ,uchar B4)
{
    uchar temp[5],temp1[5];
    uchar i;
    temp[1] = B1;
    temp[2] = B2;
    temp[3] = B3;
    temp[4] = B4;
    temp1[1]=temp[1] ;
    temp1[2]=temp[2] ;
    temp1[3]=temp[3] ;
    temp1[4]=temp[4] ;
    for( i=1 ; i < 5 ; i++ )
    {
        if (temp[i] == 97)
        {
           temp1[i] = 10;
        }   
    }
    Set1650(0x48,(BL*16+0x01));     //打開顯示 調(diào)節(jié)灰度
    Set1650(0x68, CODE[temp1[1]]);//數(shù)碼管顯示
    Set1650(0x6a, CODE[temp1[2]]);//數(shù)碼管顯示
    Set1650(0x6c, CODE[temp1[3]]);//數(shù)碼管顯示
    Set1650(0x6e, CODE[temp1[4]]);//數(shù)碼管顯示
}

/******************************************************************************
* 函 數(shù) 名: InitTM1650(void)
* 函數(shù)功能: 初始化TM1650
* 入口函數(shù): 無
* 返   回:  無
*******************************************************************************/
void InitTM1650(void)
{
    TRI_CLK = 0; //設(shè)置端口位輸出模式
    TRI_DAT = 0; //設(shè)置端口位輸出模式
    WPUA |= 0x20; //設(shè)置 RA5 RA4弱上拉
    Set1650(0x48,(BL*16+0x01));//設(shè)定亮度,開顯示八段顯示方式,后一個字節(jié)中高位用于亮度,低位用于七段或八段顯示方式和開關(guān)顯
                               //如:0x71為七級亮度,八段顯示方式,開顯示;0x79為為七級亮度,七段顯示方式,開顯示
}

/******************************************************************************
* 函 數(shù) 名: Set1650(uchar add,uchar dat)
* 函數(shù)功能: 按鍵掃描   寫顯存必須從高地址開始寫
* 入口函數(shù): add 地址  dat 數(shù)據(jù)
* 返   回:  無
*******************************************************************************/
void Set1650(uchar add,uchar dat)//數(shù)碼管顯示
{                                                         
    Start1650();     //開始   
    WrByte1650(add); //第一個顯存地址
    Ask1650();
    WrByte1650(dat); //第一個顯示數(shù)據(jù)
    Ask1650();
    Stop1650();      //停止
}

/******************************************************************************
* 函 數(shù) 名: Scan_Key(void)
* 函數(shù)功能: 按鍵掃描
* 入口函數(shù): 無
* 返   回:  rekey 按鍵掃描結(jié)果
*******************************************************************************/
uchar Scan_Key(void) // 按鍵掃描
{
    uchar i;
    uchar rekey;
    Start1650();              //開始
    WrByte1650(0x49);         //讀按鍵命令
    Ask1650();                //ASK
    //DIO = 1 ;
    TRI_DAT = 1;              //數(shù)據(jù)端口位輸入模式
    Delay_us(1);
    for(i=0;i<8;i++)
    {  
        CLK = 1;
        rekey = rekey<<1;
        if(DIO)
        {
            rekey++;
        }
        Delay_us(5);
        CLK = 0;   
        Delay_us(1);
    }
    TRI_DAT = 0;              //數(shù)據(jù)端口位輸出模式
    Ask1650();               //ASK
    Stop1650();              //停止
    return(rekey);
}

/******************************************************************************
* 函 數(shù) 名: WrByte1650(uchar oneByte)
* 函數(shù)功能: 寫一個字節(jié)
* 入口函數(shù): oneByte 要寫入的字節(jié)
* 返   回:  無
*******************************************************************************/
void WrByte1650(uchar oneByte)//寫一個字節(jié) 高位在前,低位在后
{
    uchar i;
    CLK = 0;
    Delay_us(5);
    for(i=0;i<8;i++)
    {
        oneByte = oneByte<<1;
        DIO = nC ;                      //進(jìn)位標(biāo)志 溢出1 空位0
        CLK = 0;
        Delay_us(5);
        CLK = 1;
        Delay_us(5);
        CLK = 0;
    }
}

/******************************************************************************
* 函 數(shù) 名: Stop1650(void)
* 函數(shù)功能: 停止信號
* 入口函數(shù): 無
* 返   回:  無
*******************************************************************************/
void Stop1650(void)//停止信號
{
    CLK = 1;
    DIO = 0;
    Delay_us(5);
    DIO = 1;         
}

/******************************************************************************
* 函 數(shù) 名: Ask1650(void)
* 函數(shù)功能: ACK信號
* 入口函數(shù): 無
* 返   回:  無
*******************************************************************************/
void Ask1650(void)//ACK信號
{
    int timeout = 1;
    TRI_DAT = 1;              //數(shù)據(jù)端口位輸入模式
    Delay_us(5);
     while((DIO)&&(timeout<=300))  //延時等待反饋信號
    {
        timeout++;
    }
    CLK = 1;
    Delay_us(5);
    CLK = 0;
    TRI_DAT = 0;              //數(shù)據(jù)端口位輸出模式

}


/******************************************************************************
* 函 數(shù) 名: Start1650(void)
* 函數(shù)功能: 開始信號
* 入口函數(shù): 無
* 返   回:  無
*******************************************************************************/
void Start1650(void)//開始信號
{
    CLK = 1;
    DIO = 1;
    Delay_us(5);
    DIO = 0;
}

/******************************************************************************
* 函 數(shù) 名: Delay_us(uint i)
* 函數(shù)功能: us延時
* 入口函數(shù): i 延時長度
* 返   回:  無
*******************************************************************************/
void Delay_us(uint i)//us延時
{
    for(;i>0;i--)
    {
        NOP();
        NOP();
        NOP();
        NOP();
        NOP();
    }
}
回復(fù)

使用道具 舉報

21#
ID:828202 發(fā)表于 2020-10-11 11:24 | 只看該作者
fox1357 發(fā)表于 2020-8-1 16:42
正在看規(guī)格書寫1650的程序,還沒有拿到板子上面測試。看了樣例程序,對于有的師兄說按鍵掃描沒有反應(yīng),可能 ...

ASK 是錯的  試試我改的
/******************************************************************************
* 函 數(shù) 名: Ask1650(void)
* 函數(shù)功能: ACK信號
* 入口函數(shù): 無
* 返   回:  無
*******************************************************************************/
void Ask1650(void)//ACK信號
{
    int timeout = 1;
    TRI_DAT = 1;              //數(shù)據(jù)端口位輸入模式
    Delay_us(5);
     while((DIO)&&(timeout<=300))  //延時等待反饋信號
    {
        timeout++;
    }
    CLK = 1;
    Delay_us(5);
    CLK = 0;
    TRI_DAT = 0;              //數(shù)據(jù)端口位輸出模式

}
回復(fù)

使用道具 舉報

22#
ID:828202 發(fā)表于 2020-10-11 11:25 | 只看該作者
liuzhengduo16 發(fā)表于 2018-10-22 15:02
我想問一下,我用賽元的MCU驅(qū)動的這個芯片,為什么按鍵掃描的時候按鍵沒有任何反應(yīng)呢

ASK錯了
回復(fù)

使用道具 舉報

23#
ID:316803 發(fā)表于 2020-11-10 17:12 | 只看該作者
雪城 發(fā)表于 2020-10-11 11:24
ASK 是錯的  試試我改的
/************************************************************************* ...

TRI_DAT = 1;              //數(shù)據(jù)端口位輸入模式
TRI_DAT = 0;              //數(shù)據(jù)端口位輸出模式

這個數(shù)據(jù)端口位,在嗎定義的?
回復(fù)

使用道具 舉報

24#
ID:217038 發(fā)表于 2020-11-15 14:58 | 只看該作者
這個程序不錯,參考下
回復(fù)

使用道具 舉報

25#
ID:951099 發(fā)表于 2021-8-6 10:32 | 只看該作者
DIO = CY;  cy是什么
回復(fù)

使用道具 舉報

26#
ID:818864 發(fā)表于 2021-11-11 16:03 | 只看該作者
本帖最后由 什么都不懂啊 于 2021-11-11 19:07 編輯
這是單片機(jī)頭文件里面定義的一個數(shù)
sbit  CY                 =     PSW^7;
回復(fù)

使用道具 舉報

27#
ID:412814 發(fā)表于 2022-1-15 08:58 | 只看該作者
挺好的資料,學(xué)習(xí)了,謝謝樓主
回復(fù)

使用道具 舉報

28#
ID:101990 發(fā)表于 2022-1-18 21:12 | 只看該作者
學(xué)習(xí)一下!不錯的例程
回復(fù)

使用道具 舉報

29#
ID:884711 發(fā)表于 2022-8-30 15:29 | 只看該作者
哪位高手把四位數(shù)碼管分離成28個LED,用于分別指示28個按鍵的執(zhí)行情況可好
回復(fù)

使用道具 舉報

30#
ID:59884 發(fā)表于 2023-8-18 10:02 | 只看該作者
haide1998 發(fā)表于 2022-8-30 15:29
哪位高手把四位數(shù)碼管分離成28個LED,用于分別指示28個按鍵的執(zhí)行情況可好

如果我沒有理解錯,這個玩意用的是串行信號,對應(yīng)地址的存儲單元位,對應(yīng)著一個LED.對應(yīng)關(guān)系IC說明書可查。唯一要弄明白的就是,串行信號的傳輸規(guī)則。
回復(fù)

使用道具 舉報

31#
ID:427868 發(fā)表于 2023-8-26 21:33 | 只看該作者
對比新舊版本規(guī)格書,發(fā)現(xiàn)舊版本TM1650的讀按鍵命令是0x49,而新版本的命令則是0x4F。新版本不能讀按鍵的可以修改一下試試(舊版本批號首位位是1,新版本批號首位是2).
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美久久一级特黄毛片 | 综合九九| 国产精品久久久久久久7777 | 7777奇米影视| 日本久久网 | 国产精品毛片一区二区在线看 | 老熟女毛片 | 日韩中文字幕免费在线观看 | 国产精品1区2区3区 一区中文字幕 | 91精品久久久久久久久中文字幕 | 黄网站在线播放 | 国产在线小视频 | 亚洲一区二区免费视频 | 午夜午夜精品一区二区三区文 | 在线中文字幕亚洲 | 国产麻豆一区二区三区 | 欧美二区三区 | 91免费观看在线 | 91精品久久久 | 精品国产一区二区在线 | 国产视频91在线 | 91精品亚洲| 九九热在线观看视频 | 日韩精品色网 | 日韩精品在线一区 | 色精品| 岛国午夜 | 国产精品夜色一区二区三区 | 色精品视频| 精品国产99| 久久久一二三区 | 久久精品免费观看 | 99久久久国产精品 | 中文字幕亚洲视频 | 日本精品一区二区三区在线观看视频 | 欧美一级片在线观看 | 国产精品久久久久久一区二区三区 | 色偷偷噜噜噜亚洲男人 | 激情91| 欧美成年网站 | 久久精品一区二 |