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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

查看數(shù): 20956 | 評論數(shù): 30 | 收藏 19
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2018-3-25 08:08

正文摘要:

TM1650模塊子函數(shù),歡迎下載測試應(yīng)用. 取之于網(wǎng)絡(luò),分享給大家 單片機源程序如下: #include<STC12C5A.h> #include"tm1650.h" void Delay_us(uint i) //us延時 {         for ...

回復(fù)

ID:386669 發(fā)表于 2020-8-1 16:42
正在看規(guī)格書寫1650的程序,還沒有拿到板子上面測試。看了樣例程序,對于有的師兄說按鍵掃描沒有反應(yīng),可能是有的單片機的端口輸入和輸出狀態(tài)要單獨設(shè)定,而樣例里面的單片機可能是不用設(shè)定的。
我這邊看規(guī)格書的時候也有個疑問,按鍵讀取的時候,只有一個字節(jié),又不區(qū)分地址,怎么能讀取28個按鍵呢?
問了代理,說是晚上回復(fù)。
ID:427868 發(fā)表于 2023-8-26 21:33
對比新舊版本規(guī)格書,發(fā)現(xiàn)舊版本TM1650的讀按鍵命令是0x49,而新版本的命令則是0x4F。新版本不能讀按鍵的可以修改一下試試(舊版本批號首位位是1,新版本批號首位是2).
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ī)則。
ID:884711 發(fā)表于 2022-8-30 15:29
哪位高手把四位數(shù)碼管分離成28個LED,用于分別指示28個按鍵的執(zhí)行情況可好
ID:101990 發(fā)表于 2022-1-18 21:12
學(xué)習(xí)一下!不錯的例程
ID:412814 發(fā)表于 2022-1-15 08:58
挺好的資料,學(xué)習(xí)了,謝謝樓主
ID:818864 發(fā)表于 2021-11-11 16:03
本帖最后由 什么都不懂啊 于 2021-11-11 19:07 編輯
這是單片機頭文件里面定義的一個數(shù)
sbit  CY                 =     PSW^7;
ID:951099 發(fā)表于 2021-8-6 10:32
DIO = CY;  cy是什么
ID:217038 發(fā)表于 2020-11-15 14:58
這個程序不錯,參考下
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ù)端口位,在嗎定義的?
ID:828202 發(fā)表于 2020-10-11 11:25
liuzhengduo16 發(fā)表于 2018-10-22 15:02
我想問一下,我用賽元的MCU驅(qū)動的這個芯片,為什么按鍵掃描的時候按鍵沒有任何反應(yīng)呢

ASK錯了
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ù)端口位輸出模式

}
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 ;                      //進位標志 溢出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();
    }
}
ID:386669 發(fā)表于 2020-8-1 17:53
fox1357 發(fā)表于 2020-8-1 16:42
正在看規(guī)格書寫1650的程序,還沒有拿到板子上面測試?戳藰永绦,對于有的師兄說按鍵掃描沒有反應(yīng),可能 ...

我大概明白了,這個芯片無法判斷兩個按鍵,0-255只需要返回一個值,就代表某一個具體按鍵。
ID:791173 發(fā)表于 2020-6-27 22:30
正在找這個內(nèi)容,多謝樓主;
ID:242109 發(fā)表于 2020-5-18 10:31
請問這款蕊片需要用戶主動掃描嗎?還是寫入數(shù)據(jù)后,蕊片自動刷新?
ID:263951 發(fā)表于 2020-1-11 20:40
liuzhengduo16 發(fā)表于 2018-10-22 15:02
我想問一下,我用賽元的MCU驅(qū)動的這個芯片,為什么按鍵掃描的時候按鍵沒有任何反應(yīng)呢

你的問題解決了嗎,我也要碰上SC的單片機,不能讀按鍵
ID:636445 發(fā)表于 2019-11-6 08:31
謝謝了
ID:295805 發(fā)表于 2019-7-26 16:05
謝樓主分享了。學(xué)習(xí)學(xué)習(xí)
ID:479519 發(fā)表于 2019-7-3 13:12
!好東西
ID:493236 發(fā)表于 2019-5-27 14:53
很好,但是沒有黑幣了、、、
ID:486481 發(fā)表于 2019-5-17 16:55
謝謝了
ID:314601 發(fā)表于 2019-4-30 13:06
安靜的麻瓜 發(fā)表于 2019-1-4 14:50
請問,這個是pic的還是51的,我是個新手  求指教呀

51的升級版   也屬于51
ID:314601 發(fā)表于 2019-4-30 13:06
主函數(shù)部分沒有嗎     主要是按鍵掃描判斷       有點搞不懂
ID:374174 發(fā)表于 2019-4-25 20:22
謝了!
ID:461792 發(fā)表于 2019-1-4 14:50
請問,這個是pic的還是51的,我是個新手  求指教呀
ID:310569 發(fā)表于 2018-12-21 21:17
下來看看是否適合
ID:106045 發(fā)表于 2018-11-28 16:35
謝謝了
ID:289967 發(fā)表于 2018-10-22 15:02
我想問一下,我用賽元的MCU驅(qū)動的這個芯片,為什么按鍵掃描的時候按鍵沒有任何反應(yīng)呢
ID:39626 發(fā)表于 2018-9-17 20:12
這個程序不錯,找了好久總算找到合適的方案了

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区二区三区精彩视频 | 成人在线 | 亚洲www | 国产精品日韩欧美一区二区三区 | 欧美色视频免费 | 久久久国产一区二区三区 | 91av亚洲| av一区二区在线观看 | 久久激情视频 | 天天爽夜夜爽精品视频婷婷 | av一二三区 | 国产一级在线 | 亚洲欧美日本在线 | 亚洲国产精品久久久久 | 久久se精品一区精品二区 | 91视频在线看 | 一区二区三区免费观看 | 成人三级视频 | 国产亚洲精品久久久久动 | 曰韩一二三区 | 中文字幕久久精品 | 欧美激情精品久久久久久变态 | 黄色毛片在线观看 | 啪视频在线 | www.youjizz.com日韩 | 91在线网站 | 特级毛片爽www免费版 | 亚洲视频中文字幕 | 欧美久久一区二区三区 | 亚洲综合在线一区 | 国产成人麻豆免费观看 | 四虎永久影院 | 成人在线视频网 | 久久久久无码国产精品一区 | 6080亚洲精品一区二区 | 久久av网| 一区二区精品 | 国产精品一二三区 | 天堂中文在线播放 | 欧美色综合一区二区三区 | 亚洲精品久久久 |