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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4778|回復: 7
收起左側

網上51單片機+TM1637模塊的官方例程

  [復制鏈接]
ID:380108 發表于 2021-11-13 15:15 | 顯示全部樓層 |閱讀模式
網上可以買到模塊,現在附上官方的例程,方便大家測試編程。

特性描述
TM1637 是一種帶鍵盤掃描接口的LED(發光二極管顯示器)驅動控制專用電路,內部集成有MCU 數
字接口、數據鎖存器、LED 高壓驅動、鍵盤掃描等電路。本產品性能優良,質量可靠。主要應用于電磁爐、
微波爐及小家電產品的顯示屏驅動。采用DIP/SOP20的封裝形式。

功能特點
  采用功率CMOS 工藝
  顯示模式(8 段×6 位),支持共陽數碼管輸出
  鍵掃描(8×2bit),增強型抗干擾按鍵識別電路
  輝度調節電路(占空比 8 級可調)
  兩線串行接口(CLK,DIO)
  振蕩方式:內置RC 振蕩(450KHz+5%)
  內置上電復位電路
  內置自動消隱電路
  封裝形式:DIP20/SOP20

單片機源程序如下:
  1. /*
  2. * 深圳天微電子
  3. *文件名: TM1637
  4. *當前版本: 1.0
  5. *單片機型號: AT89S52
  6. *開發環境: Keil uVision3
  7. *晶震頻率: 11.0592M
  8. *程序功能: 把 TM1637 所有顯示寄存器地址全部寫滿數據 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) //寫一個字節
  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; // 在讀按鍵前拉高數據線
  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); //送數據
  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==================================
復制代碼


評分

參與人數 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:121859 發表于 2022-8-15 17:13 | 顯示全部樓層
程序基本可以用,就是顯示數據為空,按鍵讀出來沒有處理。在這個程序基礎上,稍加修改,可以顯示按鍵,代碼如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F
//uchar code ktab[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef};
uchar code ktab[]={0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0,0xef,0xee,0xed,0xec,0xeb,0xea,0xe9,0xe8};
//定義端口
sbit clk = P1^2;
sbit dio = P1^1;

uchar buf[6]={1,2,3,4,5,6};
uchar keyval;
///=======================================
void Delay_us(unsigned int i) //nus 延時
{
for(;i>0;i--)
_nop_();
}
///======================================
void I2CStart(void) //1637 開始
{
clk = 1;
dio = 1;
Delay_us(2);
dio = 0;
}
///=============================================
void I2Cask(void) //1637 應答
{
clk = 0;
Delay_us(5); //在第八個時鐘下降沿之后延時 5us,開始判斷 ACK 信號
while(dio);
clk = 1;
Delay_us(2);
clk=0;
}
///========================================
void I2CStop(void)  // 1637 停止
{
clk = 0;
Delay_us(2);
dio = 0;
Delay_us(2);
clk = 1;
Delay_us(2);
dio = 1;
}
///=========================================
void I2CWrByte(unsigned char oneByte) //寫一個字節
{
unsigned char i;
for(i=0;i<8;i++)
{  clk = 0;
if(oneByte&0x01)  //低位在前
{
dio = 1;
}
else
{
dio = 0;
}
Delay_us(3);
oneByte=oneByte>>1;
clk=1;
Delay_us(3);
}
}
//-------------------------------------------------
unsigned char Scankey(void) //讀按鍵
{
unsigned char rekey,i;
I2CStart();
I2CWrByte(0x42); //讀按鍵命令
I2Cask();
dio=1; // 在讀按鍵前拉高數據線
for(i=0;i<8;i++) //從低位開始讀
{  clk=0;
rekey=rekey>>1;
Delay_us(30);
clk=1;
if(dio)
{
rekey=rekey|0x80;
}
else
{
rekey=rekey|0x00;
}
Delay_us(30);
}
I2Cask();
I2CStop();
return (rekey);
}
///================================================
void SmgDisplay(void) //寫顯示寄存器
{
unsigned char i;
I2CStart();
I2CWrByte(0x40); // 40H 地址自動加 1 模式,44H 固定地址模式,本程序采用自加 1 模式
I2Cask();
I2CStop();
I2CStart();
I2CWrByte(0xc0);  //設置首地址,
I2Cask();
for(i=0;i<6;i++)  //地址自加,不必每次都寫地址
{
I2CWrByte(table[buf[i]]); //送數據
I2Cask();
}
I2CStop();
I2CStart();
I2CWrByte(0x8f); //開顯示 ,最大亮度
I2Cask();
I2CStop();
}
//-----------------------------------------------
void keydeal(uchar kdat)
{
        uchar i;
        for(i=0;i<16;i++)
        {
                if(kdat==ktab[i])break;
        }
        keyval=i;
}
///==============================================
void init() //初始化子程序
{
//初始化略
}
///==============================================
void main(void)
{
uchar keydate,keyo;
init(); //初始化
SmgDisplay(); //寫寄存器并開顯示
        while(1)
        {
                keydate=Scankey();  //讀按鍵值 ,讀出的按鍵值不作處理。
                if(keydate!=0xff && keydate!=keyo)
                {
                        keyo=keydate;
                        keydeal(keydate);
                        buf[5]=buf[4];
                        buf[4]=buf[3];
                        buf[3]=buf[2];
                        buf[2]=buf[1];
                        buf[1]=buf[0];
                        buf[0]=keyval;
                        SmgDisplay(); //寫寄存器并開顯示
                }
        }
}
//===========end==================================
回復

使用道具 舉報

ID:468415 發表于 2023-7-18 19:18 | 顯示全部樓層
zhxiufan 發表于 2022-8-15 17:13
程序基本可以用,就是顯示數據為空,按鍵讀出來沒有處理。在這個程序基礎上,稍加修改,可以顯示按鍵,代碼 ...

你好!
請問同樣驅動0.36英寸共陽的,為什么0.56的就不能點亮呢?而0.36是正常顯示的
回復

使用道具 舉報

ID:1064915 發表于 2023-7-19 10:39 | 顯示全部樓層
AIP1637_LED顯示驅動_規格書.PDF (710.49 KB, 下載次數: 31)
回復

使用道具 舉報

ID:1085441 發表于 2023-7-20 00:12 | 顯示全部樓層
fzzz321 發表于 2023-7-18 19:18
你好!
請問同樣驅動0.36英寸共陽的,為什么0.56的就不能點亮呢?而0.36是正常顯示的

不應該這樣,我用來驅動0.36或0.56都行,是不是數碼管引腳沒接對?0.56的是不是共陰的?還有,不同廠家的0.56數碼管,引腳也有不一樣的。
回復

使用道具 舉報

ID:195666 發表于 2024-4-17 12:59 | 顯示全部樓層
這家的0.56寸沒點亮,暫時沒找到問題
貓id=645475641900
回復

使用道具 舉報

ID:195666 發表于 2024-4-17 19:11 | 顯示全部樓層
06123 發表于 2024-4-17 12:59
這家的0.56寸沒點亮,暫時沒找到問題
貓id=645475641900

問題找到了,他家的板子在信號線上接電容了  
回復

使用道具 舉報

ID:1111684 發表于 2024-4-21 14:28 | 顯示全部樓層
06123 發表于 2024-4-17 19:11
問題找到了,他家的板子在信號線上接電容了

官方規格書上兩個信號線是要接100P電容到地,我也買了斷0.56寸的,始終未能點亮。
以為芯片壞了,更換芯片后,也不能點亮,檢查了模塊上的數碼管,貼片電阻電容都
好的,奇怪得很?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人精品 | 精品国产欧美一区二区 | 国产精品久久久久一区二区三区 | av毛片在线播放 | 日本小电影网站 | 日本精品国产 | 欧美综合一区二区三区 | 亚洲人成人一区二区在线观看 | 国产资源视频 | 一级片毛片 | 中文字幕四虎 | 亚洲午夜精品一区二区三区他趣 | 久久在视频 | 免费在线观看av网址 | 99热99| 久久国产电影 | 欧美综合久久久 | 久久综合久色欧美综合狠狠 | 日韩中文一区二区 | 福利片在线看 | 亚洲毛片在线观看 | 中文字幕一区在线观看视频 | 黄色在线免费观看 | 日韩综合网 | 97免费视频在线观看 | 91精品久久久久 | 91久久精品日日躁夜夜躁欧美 | 国产欧美精品区一区二区三区 | 国产天天操 | 中文字幕亚洲一区二区三区 | 视频三区| 久久一二区 | www.中文字幕.com | 在线观看视频中文字幕 | 欧美一区2区三区4区公司二百 | 国产精品资源在线观看 | 久久久久久99| 国产黄色在线观看 | 国产日韩欧美二区 | 日韩欧美一区二区三区免费看 | 亚洲不卡在线观看 |