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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC15W404S單片機(jī)TM1650芯片驅(qū)動4位共陰數(shù)碼管驅(qū)動程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:104287 發(fā)表于 2016-1-29 19:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
//使用STC15W404S單片機(jī)測試成功驅(qū)動TM1650芯片的4位共陰數(shù)碼管顯示電路

//陳永飛于2016.1.18

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit CLK = P3^2;
sbit DIO = P3^3;

#define CLK_H  CLK = 1
#define CLK_L  CLK = 0

#define DIO_H  DIO = 1
#define DIO_L  DIO = 0

void TM1650_Set(uchar add,uchar dat);
uchar Scan_Key(void);

uchar CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9顯示代碼

void main()
{
uchar key;
TM1650_Set(0x48,0x51);//為5級亮度,開顯示八段顯示方式,后一個字節(jié)中高位用于亮度,低位用于七段或八段顯示方式和開關(guān)顯示
                                   //如:0x71為七級亮度,八段顯示方式,開顯示;0x79為為七級亮度,七段顯示方式,開顯示
TM1650_Set(0x68,CODE[0]);
TM1650_Set(0x6A,CODE[5]);
TM1650_Set(0x6C,CODE[1]);
TM1650_Set(0x6E,CODE[4]);
while(1) ;
{
key = Scan_Key();
//第一個按鍵按下
if(key == 0x44)  //此鍵值和數(shù)據(jù)手冊上對應(yīng)
{
TM1650_Set(0x6E,CODE[1]);//顯示1
}
//第二個按鍵按下
if(key == 0x4c)
{
TM1650_Set(0x6E,CODE[2]);
}
//第三個按鍵按下

//TM1650_Set(0x6E,CODE[3]);

}
}
void Delay_us(uint i) //us延時
{
for(;i>0;i--)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void I2CStart(void)//開始信號
{
CLK_H;
DIO_H;
Delay_us(5);
DIO_L;

}

void I2Cask(void) //ACK信號
{
uchar timeout = 1;
CLK_H;
Delay_us(5);
CLK_L;
while((DIO)&&(timeout<=100))
{
  timeout++;
}
Delay_us(5);
CLK_L;
}

void I2CStop(void) //停止信號
{
CLK_H;
DIO_L;
Delay_us(5);
DIO_H;
}

void I2CWrByte(uchar oneByte) //寫一個字節(jié)高位在前,低位在后
{
uchar i;
CLK_L;
Delay_us(1);
for(i=0;i<8;i++)
{
oneByte = oneByte<<1;
DIO = CY;
CLK_L;
Delay_us(5);
CLK_H;
Delay_us(5);
CLK_L;
}
}

uchar Scan_Key(void)  // 按鍵掃描
{
uchar i;
uchar rekey;
I2CStart();
I2CWrByte(0x49);//讀按鍵命令
I2Cask();
//DIO_H;
for(i=0;i<8;i++)
{
   CLK_H;
   rekey = rekey<<1;
   if(DIO)
   {
   rekey++;
   }
   Delay_us(5);
   CLK_L;
}
I2Cask();
I2CStop();
return(rekey);
}


void TM1650_Set(uchar add,uchar dat) //數(shù)碼管顯示
{
//寫顯存必須從高地址開始寫
I2CStart();
I2CWrByte(add); //第一個顯存地址
I2Cask();
I2CWrByte(dat);
I2Cask();
I2CStop();
}




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

使用道具 舉報

來自 25#
ID:664169 發(fā)表于 2022-1-2 16:52 | 只看該作者


TM1650_89s51_test.rar (44.46 KB, 下載次數(shù): 159)

感謝各位教導(dǎo),稍微再次修改了一下,做了一個計秒累加的動態(tài)掃描顯示,稍微調(diào)整可以廣泛使用,以表回饋論壇壇友!

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

沙發(fā)
ID:16255 發(fā)表于 2018-5-5 19:07 | 只看該作者
非常好!!!一點就亮!!!
稍后調(diào)試一下程序,打算做一個小時鐘。

評分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:16255 發(fā)表于 2018-5-6 10:16 | 只看該作者
本帖最后由 mengsiu 于 2022-9-20 11:24 編輯

對樓主的程序作了點小修改,實際是方便我自己使用而已,修改內(nèi)容如下:
  • 簡單封裝了一下,日后直接調(diào)用使用;
  • 簡單排版了一下,方便閱讀;
  • 將“I2C”字眼替換掉,TM1650并不是完完全全的I2C器件,只是指令與I2C類同而已,也不能與I2C器件裝在同一線路上的;
  • 增加亮度參數(shù),可以修改亮度;(這次調(diào)試過程中,發(fā)現(xiàn)亮度1其實已經(jīng)很亮了)
  • …………


  1. /*--------------------------------------------------------------------------
  2. TM1650.H
  3. 四位數(shù)碼管驅(qū)動 TM1650 讀寫程序
  4. --------------------------------------------------------------------------*/
  5. #ifndef __TM1650_H__
  6. #define __TM1650_H__

  7. sbit CLK = P3^7;
  8. sbit DIO = P3^6;

  9. void Set1650(uchar add,uchar dat);
  10. uchar Scan_Key(void);

  11. uchar BL = 1;          //亮度等級
  12. uchar CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9顯示代碼
  13.                                 // 0    1    2    3    4    5    6    7    8    9

  14. void Init1650(){
  15.         Set1650(0x48,(BL*16+0x01));//設(shè)定亮度,開顯示八段顯示方式,后一個字節(jié)中高位用于亮度,低位用于七段或八段顯示方式和開關(guān)顯
  16.                                                                 //如:0x71為七級亮度,八段顯示方式,開顯示;0x79為為七級亮度,七段顯示方式,開顯示
  17. }

  18. void Delay_us(uint i){ //us延時
  19.         for(;i>0;i--){
  20.                 _nop_();
  21.                 _nop_();
  22.                 _nop_();
  23.                 _nop_();
  24.                 _nop_();
  25.         }
  26. }

  27. void Start1650(void){//開始信號
  28.         CLK = 1;
  29.         DIO = 1;
  30.         Delay_us(5);
  31.         DIO = 0;
  32. }

  33. void Ask1650(void){ //ACK信號
  34.         uchar timeout = 1;
  35.         CLK = 1;
  36.         Delay_us(5);
  37.         CLK = 0;
  38.         while((DIO)&&(timeout<=100)){
  39.                 timeout++;
  40.         }
  41.         Delay_us(5);
  42.         CLK = 0;
  43. }

  44. void Stop1650(void){ //停止信號
  45.         CLK = 1;
  46.         DIO = 0;
  47.         Delay_us(5);
  48.         DIO = 1;
  49. }

  50. void WrByte1650(uchar oneByte){//寫一個字節(jié)高位在前,低位在后
  51.         uchar i;
  52.         CLK = 0;
  53.         Delay_us(1);
  54.         for(i=0;i<8;i++){
  55.                 oneByte = oneByte<<1;
  56.                 DIO = CY;
  57.                 CLK = 0;
  58.                 Delay_us(5);
  59.                 CLK = 1;
  60.                 Delay_us(5);
  61.                 CLK = 0;
  62.         }
  63. }

  64. uchar Scan_Key(void){  // 按鍵掃描
  65.         uchar i;
  66.         uchar rekey;
  67.         Start1650();
  68.         WrByte1650(0x49);//讀按鍵命令
  69.         Ask1650();
  70.         //DIO = 1;
  71.         for(i=0;i<8;i++){
  72.                 CLK = 1;
  73.                 rekey = rekey<<1;
  74.                 if(DIO){
  75.                 rekey++;
  76.                 }
  77.                 Delay_us(5);
  78.                 CLK = 0;
  79.         }
  80.         Ask1650();
  81.         Stop1650();
  82.         return(rekey);
  83. }

  84. void Set1650(uchar add,uchar dat){ //數(shù)碼管顯示
  85.                                                                 //寫顯存必須從高地址開始寫
  86.         Start1650();
  87.         WrByte1650(add); //第一個顯存地址
  88.         Ask1650();
  89.         WrByte1650(dat);
  90.         Ask1650();
  91.         Stop1650();
  92. }

  93. #endif
復(fù)制代碼



回復(fù)

使用道具 舉報

地板
ID:611724 發(fā)表于 2019-9-15 17:19 | 只看該作者
這個好
回復(fù)

使用道具 舉報

5#
ID:97647 發(fā)表于 2019-12-2 16:09 | 只看該作者
main函數(shù)的while(1)后面有個分號
回復(fù)

使用道具 舉報

6#
ID:201314 發(fā)表于 2019-12-8 09:52 來自觸屏版 | 只看該作者
您好,能給一份STC15W404S外圍器件電路圖嗎,我不知道怎么選擇外圍器件
回復(fù)

使用道具 舉報

7#
ID:201314 發(fā)表于 2019-12-8 09:54 來自觸屏版 | 只看該作者
您好,能給一份STC15W404S電路圖嗎,郵箱1904382840@qq.com,謝謝
回復(fù)

使用道具 舉報

8#
ID:255919 發(fā)表于 2020-4-18 15:18 | 只看該作者
正在學(xué)習(xí),先謝謝了
回復(fù)

使用道具 舉報

9#
ID:255919 發(fā)表于 2020-4-18 15:20 | 只看該作者
很好,正在學(xué)習(xí)
回復(fù)

使用道具 舉報

10#
ID:387856 發(fā)表于 2020-5-28 17:08 | 只看該作者
一點就亮,感謝樓主,省了我好多時間
回復(fù)

使用道具 舉報

11#
ID:763616 發(fā)表于 2020-5-28 18:03 | 只看該作者
正在學(xué)習(xí),先謝謝了
回復(fù)

使用道具 舉報

12#
ID:791173 發(fā)表于 2020-6-28 20:24 | 只看該作者
感謝樓主,感謝2樓,正在學(xué)習(xí)這個;
回復(fù)

使用道具 舉報

13#
ID:791173 發(fā)表于 2020-6-28 21:54 | 只看該作者
mengsiu 發(fā)表于 2018-5-6 10:16
對樓主的程序作了點小修改,實際是方便我自己使用而已,修改內(nèi)容如下:
  • 簡單封裝了一下,日后直接調(diào) ...

  • 您好,我是剛開始學(xué)習(xí)單片機(jī),您寫這部分文件,整個定義成頭文件即可,是吧?
    回復(fù)

    使用道具 舉報

    14#
    ID:145411 發(fā)表于 2020-8-19 10:13 | 只看該作者
    DIO = CY;沒有理解什么意思,并在其他位置沒有找到CY定義
    回復(fù)

    使用道具 舉報

    15#
    ID:748096 發(fā)表于 2021-3-23 15:48 | 只看該作者
    lipengxu 發(fā)表于 2020-8-19 10:13
    DIO = CY;沒有理解什么意思,并在其他位置沒有找到CY定義

    CY在頭文件里。特殊功能寄存器PSW里面的CY進(jìn)位借位標(biāo)志位。
    回復(fù)

    使用道具 舉報

    16#
    ID:147434 發(fā)表于 2021-3-24 21:34 | 只看該作者
    受益匪淺
    回復(fù)

    使用道具 舉報

    17#
    ID:833875 發(fā)表于 2021-7-9 10:27 | 只看該作者
    ack信號最后一行CLK_L是不是應(yīng)該改成CLK_H???
    回復(fù)

    使用道具 舉報

    18#
    ID:934353 發(fā)表于 2021-7-12 15:04 | 只看該作者
    wb731464015 發(fā)表于 2021-7-9 10:27
    ack信號最后一行CLK_L是不是應(yīng)該改成CLK_H???

    就是CLK_L吧,看時序圖,CLK最后是拉低的
    回復(fù)

    使用道具 舉報

    19#
    ID:935976 發(fā)表于 2021-8-26 10:28 | 只看該作者
    mengsiu 發(fā)表于 2018-5-6 10:16
    對樓主的程序作了點小修改,實際是方便我自己使用而已,修改內(nèi)容如下:
  • 簡單封裝了一下,日后直接調(diào) ...

  • 非常感謝
    回復(fù)

    使用道具 舉報

    20#
    無效樓層,該帖已經(jīng)被刪除
    21#
    ID:970326 發(fā)表于 2021-10-8 09:31 | 只看該作者
    大神。用stc 15w408as驅(qū)動tm1640怎么寫啊
    回復(fù)

    使用道具 舉報

    22#
    ID:974015 發(fā)表于 2021-10-29 19:52 | 只看該作者
    mengsiu 發(fā)表于 2018-5-6 10:16
    對樓主的程序作了點小修改,實際是方便我自己使用而已,修改內(nèi)容如下:
  • 簡單封裝了一下,日后直接調(diào) ...

  • 這是真的牛,看了老哥的代碼,井井有條,封裝的還好,只要稍稍閱讀說明書就可以對數(shù)碼管進(jìn)行準(zhǔn)確的調(diào)用。
    回復(fù)

    使用道具 舉報

    23#
    無效樓層,該帖已經(jīng)被刪除
    24#
    ID:970681 發(fā)表于 2021-12-16 16:22 | 只看該作者
    STC15W404S單片機(jī)TM1650芯片驅(qū)動4位共陰數(shù)碼管驅(qū)動程序 ,詳細(xì)的備注有嗎
    回復(fù)

    使用道具 舉報

    26#
    ID:646520 發(fā)表于 2022-7-13 13:14 | 只看該作者

    你好,我對這個I2Cask()函數(shù)有疑問,tm1650的官方手冊是傳輸完成后的第一個時鐘周期即應(yīng)答ACK,而該函數(shù)進(jìn)入后,延遲了一個時鐘周期應(yīng)答。并且在DIO拉低后,clk應(yīng)該給一個上升沿,而該函數(shù)在DIO拉低后沒有產(chǎn)生上升沿。




    屏幕截圖 2022-07-13 130928.png (53.27 KB, 下載次數(shù): 179)

    屏幕截圖 2022-07-13 130928.png
    回復(fù)

    使用道具 舉報

    27#
    ID:59884 發(fā)表于 2023-9-13 11:53 | 只看該作者
    受益匪淺!謝謝樓主分享!
    回復(fù)

    使用道具 舉報

    28#
    ID:1064915 發(fā)表于 2023-10-24 10:46 | 只看該作者
    將“I2C”字眼替換掉,更嚴(yán)謹(jǐn)
    回復(fù)

    使用道具 舉報

    29#
    ID:639666 發(fā)表于 2023-12-23 10:36 | 只看該作者
    joyb 發(fā)表于 2023-10-24 10:46
    將“I2C”字眼替換掉,更嚴(yán)謹(jǐn)

    不一定用Ⅰ2C的專用管肺腳來驅(qū)動的,普通腳就可以驅(qū)動了,對吧?
    回復(fù)

    使用道具 舉報

    30#
    ID:727062 發(fā)表于 2024-2-3 11:01 | 只看該作者
    非常感謝。已經(jīng)下載。測試很好用
    回復(fù)

    使用道具 舉報

    31#
    ID:1091450 發(fā)表于 2024-2-23 11:34 | 只看該作者
    滄興電子 發(fā)表于 2021-3-23 15:48
    CY在頭文件里。特殊功能寄存器PSW里面的CY進(jìn)位借位標(biāo)志位。

    你好,我想請教一下,如果使用的單片機(jī)中沒有這個寄存器怎么辦呢?,我想使用
    DIO = (oneByte & 0x80) ? 1 : 0;
    但是在使用中好像不可以...
    回復(fù)

    使用道具 舉報

    32#
    ID:727062 發(fā)表于 2024-2-23 19:50 | 只看該作者
    BL*16+0x01這句沒看懂
    回復(fù)

    使用道具 舉報

    33#
    ID:727062 發(fā)表于 2024-2-23 19:59 | 只看該作者
    最后一個夏天1 發(fā)表于 2022-7-13 13:14
    你好,我對這個I2Cask()函數(shù)有疑問,tm1650的官方手冊是傳輸完成后的第一個時鐘周期即應(yīng)答ACK,而該函數(shù)進(jìn) ...

    同問
    回復(fù)

    使用道具 舉報

    34#
    ID:996773 發(fā)表于 2024-2-26 09:05 | 只看該作者
    剛剛寫出1650的代碼,第9位ack完全可以不予理睬,單片機(jī)只要象征性的把時鐘端在8位數(shù)據(jù)

    傳送完后做一個上升沿再下降的波形就行了
    回復(fù)

    使用道具 舉報

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

    本版積分規(guī)則

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

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

    快速回復(fù) 返回頂部 返回列表
    主站蜘蛛池模板: 国产小u女发育末成年 | 在线观看亚洲精品视频 | 黄色亚洲网站 | 亚洲三级视频 | 日韩高清一区 | 91久久久久久久久久久久久 | 日本精品视频在线观看 | 日本免费在线看 | 亚洲一区中文字幕在线观看 | 久久久久国产一级毛片高清网站 | 日韩在线小视频 | 国产真实精品久久二三区 | 中文字幕一区二区三区不卡在线 | 亚洲理论在线观看电影 | 日韩在线h | 一区二区高清在线观看 | 国产一在线观看 | 国产在线精品区 | 久久久久久久电影 | 男女网站视频 | 亚洲品质自拍视频网站 | 国产亚洲欧美在线视频 | 超碰97人人人人人蜜桃 | 91 中文字幕 | 午夜免费观看体验区 | 四虎av电影 | 精品国产乱码久久久久久88av | 国内精品久久久久 | 黄色大片在线免费观看 | 国产精品特级毛片一区二区三区 | 免费看一区二区三区 | 毛色毛片免费看 | 亚洲视频一区在线 | 99久久免费精品国产男女高不卡 | 日本欧美在线观看视频 | 国产美女高潮 | 成人精品啪啪欧美成 | 精品欧美激情在线观看 | 黄网站免费在线 | www.av7788.com| 亚洲成人久久久 |