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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

網(wǎng)上51單片機(jī)+TM1637模塊的官方例程

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:380108 發(fā)表于 2021-11-13 15:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
網(wǎng)上可以買(mǎi)到模塊,現(xiàn)在附上官方的例程,方便大家測(cè)試編程。

特性描述
TM1637 是一種帶鍵盤(pán)掃描接口的LED(發(fā)光二極管顯示器)驅(qū)動(dòng)控制專用電路,內(nèi)部集成有MCU 數(shù)
字接口、數(shù)據(jù)鎖存器、LED 高壓驅(qū)動(dòng)、鍵盤(pán)掃描等電路。本產(chǎn)品性能優(yōu)良,質(zhì)量可靠。主要應(yīng)用于電磁爐、
微波爐及小家電產(chǎn)品的顯示屏驅(qū)動(dòng)。采用DIP/SOP20的封裝形式。

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

單片機(jī)源程序如下:
  1. /*
  2. * 深圳天微電子
  3. *文件名: TM1637
  4. *當(dāng)前版本: 1.0
  5. *單片機(jī)型號(hào): AT89S52
  6. *開(kāi)發(fā)環(huán)境: Keil uVision3
  7. *晶震頻率: 11.0592M
  8. *程序功能: 把 TM1637 所有顯示寄存器地址全部寫(xiě)滿數(shù)據(jù) 0xff,并開(kāi)顯示,然后再讀按鍵值。
  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 延時(shí)
  17. {
  18. for(;i>0;i--)
  19. _nop_();
  20. }
  21. ///======================================
  22. void I2CStart(void) //1637 開(kāi)始
  23. {
  24. clk = 1;
  25. dio = 1;
  26. Delay_us(2);
  27. dio = 0;
  28. }
  29. ///=============================================
  30. void I2Cask(void) //1637 應(yīng)答
  31. {
  32. clk = 0;
  33. Delay_us(5); //在第八個(gè)時(shí)鐘下降沿之后延時(shí) 5us,開(kāi)始判斷 ACK 信號(hào)
  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) //寫(xiě)一個(gè)字節(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++) //從低位開(kā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) //寫(xiě)顯示寄存器
  99. {
  100. unsigned char i;
  101. I2CStart();
  102. I2CWrByte(0x40); // 40H 地址自動(dòng)加 1 模式,44H 固定地址模式,本程序采用自加 1 模式
  103. I2Cask();
  104. I2CStop();
  105. I2CStart();
  106. I2CWrByte(0xc0);  //設(shè)置首地址,
  107. I2Cask();
  108. for(i=0;i<6;i++)  //地址自加,不必每次都寫(xiě)地址
  109. {
  110. I2CWrByte(0xff); //送數(shù)據(jù)
  111. I2Cask();
  112. }
  113. I2CStop();
  114. I2CStart();
  115. I2CWrByte(0x8f); //開(kāi)顯示 ,最大亮度
  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(); //寫(xiě)寄存器并開(kāi)顯示
  130. while(1)
  131. {
  132. keydate=Scankey();  //讀按鍵值 ,讀出的按鍵值不作處理。
  133. }
  134. }
  135. //===========end==================================
復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:121859 發(fā)表于 2022-8-15 17:13 | 只看該作者
程序基本可以用,就是顯示數(shù)據(jù)為空,按鍵讀出來(lái)沒(méi)有處理。在這個(gè)程序基礎(chǔ)上,稍加修改,可以顯示按鍵,代碼如下:
#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 延時(shí)
{
for(;i>0;i--)
_nop_();
}
///======================================
void I2CStart(void) //1637 開(kāi)始
{
clk = 1;
dio = 1;
Delay_us(2);
dio = 0;
}
///=============================================
void I2Cask(void) //1637 應(yīng)答
{
clk = 0;
Delay_us(5); //在第八個(gè)時(shí)鐘下降沿之后延時(shí) 5us,開(kāi)始判斷 ACK 信號(hào)
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) //寫(xiě)一個(gè)字節(jié)
{
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; // 在讀按鍵前拉高數(shù)據(jù)線
for(i=0;i<8;i++) //從低位開(kā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) //寫(xiě)顯示寄存器
{
unsigned char i;
I2CStart();
I2CWrByte(0x40); // 40H 地址自動(dòng)加 1 模式,44H 固定地址模式,本程序采用自加 1 模式
I2Cask();
I2CStop();
I2CStart();
I2CWrByte(0xc0);  //設(shè)置首地址,
I2Cask();
for(i=0;i<6;i++)  //地址自加,不必每次都寫(xiě)地址
{
I2CWrByte(table[buf[i]]); //送數(shù)據(jù)
I2Cask();
}
I2CStop();
I2CStart();
I2CWrByte(0x8f); //開(kāi)顯示 ,最大亮度
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(); //寫(xiě)寄存器并開(kāi)顯示
        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(); //寫(xiě)寄存器并開(kāi)顯示
                }
        }
}
//===========end==================================
回復(fù)

使用道具 舉報(bào)

板凳
ID:468415 發(fā)表于 2023-7-18 19:18 | 只看該作者
zhxiufan 發(fā)表于 2022-8-15 17:13
程序基本可以用,就是顯示數(shù)據(jù)為空,按鍵讀出來(lái)沒(méi)有處理。在這個(gè)程序基礎(chǔ)上,稍加修改,可以顯示按鍵,代碼 ...

你好!
請(qǐng)問(wèn)同樣驅(qū)動(dòng)0.36英寸共陽(yáng)的,為什么0.56的就不能點(diǎn)亮呢?而0.36是正常顯示的
回復(fù)

使用道具 舉報(bào)

地板
ID:1064915 發(fā)表于 2023-7-19 10:39 | 只看該作者
AIP1637_LED顯示驅(qū)動(dòng)_規(guī)格書(shū).PDF (710.49 KB, 下載次數(shù): 31)
回復(fù)

使用道具 舉報(bào)

5#
ID:1085441 發(fā)表于 2023-7-20 00:12 | 只看該作者
fzzz321 發(fā)表于 2023-7-18 19:18
你好!
請(qǐng)問(wèn)同樣驅(qū)動(dòng)0.36英寸共陽(yáng)的,為什么0.56的就不能點(diǎn)亮呢?而0.36是正常顯示的

不應(yīng)該這樣,我用來(lái)驅(qū)動(dòng)0.36或0.56都行,是不是數(shù)碼管引腳沒(méi)接對(duì)?0.56的是不是共陰的?還有,不同廠家的0.56數(shù)碼管,引腳也有不一樣的。
回復(fù)

使用道具 舉報(bào)

6#
ID:195666 發(fā)表于 2024-4-17 12:59 | 只看該作者
這家的0.56寸沒(méi)點(diǎn)亮,暫時(shí)沒(méi)找到問(wèn)題
貓id=645475641900
回復(fù)

使用道具 舉報(bào)

7#
ID:195666 發(fā)表于 2024-4-17 19:11 | 只看該作者
06123 發(fā)表于 2024-4-17 12:59
這家的0.56寸沒(méi)點(diǎn)亮,暫時(shí)沒(méi)找到問(wèn)題
貓id=645475641900

問(wèn)題找到了,他家的板子在信號(hào)線上接電容了  
回復(fù)

使用道具 舉報(bào)

8#
ID:1111684 發(fā)表于 2024-4-21 14:28 | 只看該作者
06123 發(fā)表于 2024-4-17 19:11
問(wèn)題找到了,他家的板子在信號(hào)線上接電容了

官方規(guī)格書(shū)上兩個(gè)信號(hào)線是要接100P電容到地,我也買(mǎi)了斷0.56寸的,始終未能點(diǎn)亮。
以為芯片壞了,更換芯片后,也不能點(diǎn)亮,檢查了模塊上的數(shù)碼管,貼片電阻電容都
好的,奇怪得很?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美八区| 久久狼人天堂 | 国产乱码精品一品二品 | 日韩一区二区黄色片 | 欧美专区在线观看 | 亚洲视频在线看 | 欧美日韩国产一区二区三区 | 日韩不卡一区二区三区 | 亚洲精品久久久一区二区三区 | 国产97久久 | 男人的天堂久久 | 久久久久精 | 犬夜叉在线观看 | 久久久.com| 日韩色在线 | 国产亚洲一区精品 | 亚洲精品乱码久久久久久久久 | www国产亚洲精品久久网站 | 麻豆亚洲 | 免费黄色的视频 | 亚洲国产精品va在线看黑人 | 国产精品永久免费观看 | 日韩一二区在线观看 | 中文字幕人成乱码在线观看 | 久久大陆| 日韩在线免费观看视频 | 日韩av啪啪网站大全免费观看 | 成人在线视频免费观看 | 在线观看www视频 | 精品一区二区久久久久久久网站 | 色精品 | 欧美精品一二区 | 成人h动漫亚洲一区二区 | 激情国产 | 国产高清在线精品一区二区三区 | 久久曰视频 | 国产精品久久亚洲7777 | 秋霞在线一区二区 | 欧美一级片在线 | 国产高清一二三区 | 狠狠久 |