找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5859|回復: 9
打印 上一主題 下一主題
收起左側(cè)

請問TM1637數(shù)碼管驅(qū)動芯片是IIC方式通訊嗎

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:404720 發(fā)表于 2018-11-26 08:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
iic接口有scl和sda,tm1637有clk和dio,但是感覺方法都一樣啊
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:104472 發(fā)表于 2018-11-26 09:17 | 只看該作者
是IIC,可以詳細看器件手冊。
回復

使用道具 舉報

板凳
ID:396960 發(fā)表于 2018-11-26 09:24 | 只看該作者
看完硬件再看看協(xié)議,開始信號,結(jié)束信號,應答...那應該就是和IIC差不了了
回復

使用道具 舉報

地板
ID:94031 發(fā)表于 2018-11-26 09:39 | 只看該作者
TM1637應該是iic接口。
回復

使用道具 舉報

5#
ID:155507 發(fā)表于 2018-11-26 09:54 | 只看該作者
TM1637是iic

  1. /*
  2. *版權信息: 深圳天微電子
  3. *文件名: TM1637
  4. *當前版本: 1.0
  5. *單片機型號: AT89S52
  6. *開發(fā)環(huán)境: Keil uVision3
  7. *晶震頻率: 11.0592M
  8. *程序功能: 把TM1637 所有顯示寄存器地址全部寫滿數(shù)據(jù)0xff,并開顯示,然后再讀按鍵值。
  9. */
  10. #include<reg52.h>
  11. #include<intrins.h>
  12. //定義端口
  13. sbit clk = P1^2;
  14. sbit dio = P1^1;
  15. ///=======================================
  16. void Delay_us(unsigned int i) //nus 延時
  17. {
  18.         for(;i>0;i--)
  19.         _nop_();
  20. }
  21. ///======================================
  22. void I2CStart(void) //1637 開始
  23. {
  24.         clk = 1;
  25.         dio = 1;
  26.         Delay_us(2);
  27.         dio = 0;
  28. }
  29. ///=============================================
  30. void I2Cask(void) //1637 應答
  31. {
  32.         clk = 0;
  33.         Delay_us(5); //在第八個時鐘下降沿之后延時5us,開始判斷ACK 信號
  34.         while(dio);
  35.         clk = 1;
  36.         Delay_us(2);
  37.         clk=0;
  38. }
  39. ///========================================
  40. void I2CStop(void) // 1637 停止
  41. {
  42.         clk = 0;
  43.         Delay_us(2);
  44.         dio = 0;
  45.         Delay_us(2);
  46.         clk = 1;
  47.         Delay_us(2);
  48.         dio = 1;
  49. }
  50. ///=========================================
  51. void I2CWrByte(unsigned char oneByte) //寫一個字節(jié)
  52. {
  53.         unsigned char i;
  54.         for(i=0;i<8;i++)
  55.         { clk = 0;
  56.                 if(oneByte&0x01) //低位在前
  57.                 {
  58.                         dio = 1;
  59.                 }
  60.                 else
  61.                 {
  62.                         dio = 0;
  63.                 }
  64.                 Delay_us(3);
  65.                 oneByte=oneByte>>1;
  66.                 clk=1;
  67.                 Delay_us(3);
  68.         }
  69. }
  70. ///-------------------------------------------------
  71. unsigned char ScanKey(void) //讀按鍵
  72. {
  73.         unsigned char rekey,rkey,i;
  74.         I2CStart();
  75.         I2CWrByte(0x42); //讀按鍵命令
  76.         I2Cask();
  77.         dio=1; // 在讀按鍵前拉高數(shù)據(jù)線
  78.         for(i=0;i<8;i++) //從低位開始讀
  79.         { clk=0;
  80.                 rekey=rekey>>1;
  81.                 Delay_us(30);
  82.                 clk=1;
  83.                 if(dio)
  84.                 {
  85.                         rekey=rekey|0x80;
  86.                 }
  87.                 else
  88.                 {
  89.                         rekey=rekey|0x00;
  90.                 }
  91.                 Delay_us(30);
  92.         }
  93.         I2Cask();
  94.         I2CStop();
  95.         return (rekey);
  96. }
  97. ///================================================
  98. void SmgDisplay(void) //寫顯示寄存器
  99. {
  100.         unsigned char i;
  101.         I2CStart();
  102.         I2CWrByte(0x40); // 40H 地址自動加1 模式,44H 固定地址模式,本程序采用自加1 模式
  103.         I2Cask();
  104.         I2CStop();
  105.         I2CStart();
  106.         I2CWrByte(0xc0); //設置首地址,
  107.         I2Cask();
  108.         for(i=0;i<6;i++) //地址自加,不必每次都寫地址
  109.         {
  110.                 I2CWrByte(0xff); //送數(shù)據(jù)
  111.                 I2Cask();
  112.         }
  113.         I2CStop();
  114.         I2CStart();
  115.         I2CWrByte(0x8f); //開顯示 ,最大亮度
  116.         I2Cask();
  117.         I2CStop();
  118. }
  119. ///==============================================
  120. void init() //初始化子程序
  121. {
  122.         //初始化略
  123. }
  124. ///==============================================
  125. void main(void)
  126. {
  127.         unsigned char keydate;
  128.         init(); //初始化
  129.         SmgDisplay(); //寫寄存器并開顯示
  130.         while(1)
  131.         {
  132.                 keydate=Scankey(); //讀按鍵值 ,讀出的按鍵值不作處理。
  133.         }
  134. }
  135. //===========end==================================







復制代碼
回復

使用道具 舉報

6#
ID:404720 發(fā)表于 2018-11-26 10:51 | 只看該作者
jiajuntao 發(fā)表于 2018-11-26 09:17
是IIC,可以詳細看器件手冊。

謝謝
回復

使用道具 舉報

7#
ID:404720 發(fā)表于 2018-11-26 10:52 | 只看該作者
phang 發(fā)表于 2018-11-26 09:24
看完硬件再看看協(xié)議,開始信號,結(jié)束信號,應答...那應該就是和IIC差不了了

謝謝
回復

使用道具 舉報

8#
ID:404720 發(fā)表于 2018-11-26 10:52 | 只看該作者
xuyaqi 發(fā)表于 2018-11-26 09:39
TM1637應該是iic接口。

謝謝!
回復

使用道具 舉報

9#
ID:404720 發(fā)表于 2018-11-26 10:52 | 只看該作者

謝謝大佬
回復

使用道具 舉報

10#
ID:433219 發(fā)表于 2018-11-26 11:16 | 只看該作者
不算iic,是自定義的2線通訊而已
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表