你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

数码管驱动芯片的芯片

[复制链接]
adersonl 发布时间:2017-5-20 11:05
本帖最后由 adersonl 于 2017-5-20 15:27 编辑

工作中经常要用到大量的数码管,点阵,LED

一般都是用74系列的芯片去驱动,因为公司的项目需求找了这颗芯片现在分享驱动和原理图过

3E_{Q1VD30GJ(~[[5LI7VZ4.png
  1. enum Brightness
  2. {
  3.     Level1 = 0x88,
  4.     Level2,
  5.     Level3,
  6.     Level4,
  7.     Level5,
  8.     Level6,
  9.     Level7,
  10.     Level8,
  11.     LEDOFF = 0x80
  12. };

  13. uint8_t NUM[11][5] =
  14. {
  15.   {0xFF, 0x41, 0x41, 0x41, 0xFF},//0
  16.   {0x00, 0x00, 0x7F, 0x00, 0x00},//1
  17.   {0x79, 0x49, 0x49, 0x49, 0x4F},//2
  18.   {0x49, 0x49, 0x49, 0x49, 0xFF},//3
  19.   {0x0F, 0x08, 0x08, 0x08, 0xFF},//4
  20.   {0x4F, 0x49, 0x49, 0x49, 0x79},//5
  21.   {0xFF, 0x49, 0x49, 0x49, 0x79},//6
  22.   {0x01, 0x01, 0x01, 0x01, 0xFF},//7
  23.   {0xFF, 0x49, 0x49, 0x49, 0xFF},//8
  24.   {0x4F, 0x49, 0x49, 0x49, 0xFF},//9
  25.   {0x00, 0x00, 0x22, 0x00, 0x00},//:
  26. };

  27. void TM1640_GPIO_Init(void)
  28. {
  29.   GPIO_Init(GPIOA, (GPIO_Pin_TypeDef)(GPIO_PIN_1), GPIO_MODE_OUT_PP_HIGH_FAST);
  30.   GPIO_Init(GPIOA, (GPIO_Pin_TypeDef)(GPIO_PIN_2), GPIO_MODE_OUT_PP_HIGH_FAST);
  31.   GPIO_Init(GPIOC, (GPIO_Pin_TypeDef)(T2_Din | T2_Clk), GPIO_MODE_OUT_PP_HIGH_FAST);
  32. }


  33. void Delay(uint16_t nCount)
  34. {
  35.   while (nCount != 0)
  36.   {
  37.     nCount--;      
  38.   }
  39. }

  40. void TM1640_Start(void)
  41. {
  42.   GPIO_WriteHigh(GPIOA, T1_Clk);
  43.   Delay(10);
  44.   GPIO_WriteHigh(GPIOA, T1_Din);
  45.   Delay(10);
  46.   GPIO_WriteLow(GPIOA, T1_Din);
  47.   Delay(10);  
  48.   GPIO_WriteLow(GPIOA, T1_Clk);
  49.   Delay(10);
  50. }

  51. void TM1640_Stop(void)
  52. {
  53.   GPIO_WriteLow(GPIOA, T1_Clk);
  54.   Delay(10);
  55.   GPIO_WriteLow(GPIOA, T1_Din);
  56.   Delay(10);
  57.   GPIO_WriteHigh(GPIOA, T1_Clk);
  58.   Delay(10);
  59.   GPIO_WriteHigh(GPIOA, T1_Din);
  60.   Delay(10);
  61. }

  62. void TM1640_2_Start(void)
  63. {
  64.   GPIO_WriteHigh(GPIOC, T2_Clk);
  65.   Delay(10);
  66.   GPIO_WriteHigh(GPIOC, T2_Din);
  67.   Delay(10);
  68.   GPIO_WriteLow(GPIOC, T2_Din);
  69.   Delay(10);  
  70.   GPIO_WriteLow(GPIOC, T2_Clk);
  71.   Delay(10);
  72. }

  73. void TM1640_2_Stop(void)
  74. {
  75.   GPIO_WriteLow(GPIOC, T2_Clk);
  76.   Delay(10);
  77.   GPIO_WriteLow(GPIOC, T2_Din);
  78.   Delay(10);
  79.   GPIO_WriteHigh(GPIOC, T2_Clk);
  80.   Delay(10);
  81.   GPIO_WriteHigh(GPIOC, T2_Din);
  82.   Delay(10);
  83. }


  84. void TM1640_Write_Byte(uint8_t dat)
  85. {
  86.   uint8_t i;
  87.   for(i = 0; i < 8; i++)
  88.   {
  89.     GPIO_WriteLow(GPIOA, T1_Clk);   
  90.     if(dat & 0x01)
  91.     {
  92.       GPIO_WriteHigh(GPIOA, T1_Din);
  93.     }
  94.     else
  95.     {
  96.       GPIO_WriteLow(GPIOA, T1_Din);
  97.     }
  98.     Delay(10);
  99.     GPIO_WriteHigh(GPIOA, T1_Clk);
  100.     Delay(10);
  101.     dat >>= 1;
  102.   }
  103.   GPIO_WriteLow(GPIOA, T1_Clk);
  104.   Delay(10);
  105. }

  106. void TM1640_2_Write_Byte(uint8_t dat)
  107. {
  108.   uint8_t i;
  109.   for(i = 0; i < 8; i++)
  110.   {
  111.     GPIO_WriteLow(GPIOC, T2_Clk);   
  112.     if(dat & 0x01)
  113.     {
  114.       GPIO_WriteHigh(GPIOC, T2_Din);
  115.     }
  116.     else
  117.     {
  118.       GPIO_WriteLow(GPIOC, T2_Din);
  119.     }
  120.     Delay(10);
  121.     GPIO_WriteHigh(GPIOC, T2_Clk);
  122.     Delay(10);
  123.     dat >>= 1;
  124.   }
  125.   GPIO_WriteLow(GPIOC, T2_Clk);
  126.   Delay(10);
  127. }


  128. void TM1640_Init(void)
  129. {
  130.   TM1640_GPIO_Init();  
  131.   Delay(10);
  132.   TM1640_Start();
  133.   TM1640_Write_Byte(Level8);
  134.   TM1640_Stop();
  135.   TM1640_2_Start();
  136.   TM1640_2_Write_Byte(Level8);
  137.   TM1640_2_Stop();
  138. }


  139. void TM1640_Bit1(uint8_t *Dat)
  140. {
  141.   uint8_t i;
  142.   TM1640_Start();
  143.   TM1640_Write_Byte(0x40);
  144.   TM1640_Stop();
  145.   Delay(10);
  146.   TM1640_Start();
  147.   TM1640_Write_Byte(0xC0);
  148.   for(i = 0; i < 5; i++)
  149.   {
  150.     TM1640_Write_Byte(*(Dat++));
  151.   }
  152.   TM1640_Stop();
  153. }

  154. void TM1640_Clear_C5(void)
  155. {
  156.   TM1640_Start();
  157.   TM1640_Write_Byte(0x44);
  158.   TM1640_Stop();
  159.   Delay(10);
  160.   TM1640_Start();
  161.   TM1640_Write_Byte(0xC5);
  162.   TM1640_Write_Byte(0x00);
  163.   TM1640_Stop();
  164.   TM1640_Start();
  165.   TM1640_Write_Byte(0x44);
  166.   TM1640_Stop();
  167.   Delay(10);
  168.   TM1640_Start();
  169.   TM1640_Write_Byte(0xCD);
  170.   TM1640_Write_Byte(0x00);
  171.   TM1640_Stop();
  172.   TM1640_2_Start();
  173.   TM1640_2_Write_Byte(0xC4);
  174.   TM1640_2_Write_Byte(0x00);
  175.   TM1640_2_Stop();
  176. }

  177. void TM1640_ClearAll(void)
  178. {
  179.   uint8_t i;
  180.   TM1640_Start();
  181.   TM1640_Write_Byte(0x40);
  182.   TM1640_Stop();
  183.   Delay(10);
  184.   TM1640_Start();
  185.   TM1640_Write_Byte(0xC0);
  186.   for(i = 0; i < 16; i++)
  187.   {
  188.     TM1640_Write_Byte(0x00);
  189.   }
  190.   TM1640_Stop();
  191.   TM1640_2_Start();
  192.   TM1640_2_Write_Byte(0x40);
  193.   TM1640_2_Stop();
  194.   Delay(10);
  195.   TM1640_2_Start();
  196.   TM1640_2_Write_Byte(0xC6);
  197.   for(i = 0; i < 16; i++)
  198.   {
  199.     TM1640_2_Write_Byte(0x00);
  200.   }
  201.   TM1640_2_Stop();  
  202. }

  203. void TM1640_Bit2(uint8_t *Dat)
  204. {
  205.   uint8_t i;
  206.   TM1640_Start();
  207.   TM1640_Write_Byte(0x40);
  208.   TM1640_Stop();
  209.   Delay(10);
  210.   TM1640_Start();
  211.   TM1640_Write_Byte(0xC6);
  212.   for(i = 0; i < 5; i++)
  213.   {
  214.     TM1640_Write_Byte(*(Dat++));
  215.   }
  216.   TM1640_Stop();
  217. }

  218. void TM1640_Bit3(uint8_t En)
  219. {
  220.   TM1640_Start();
  221.   TM1640_Write_Byte(0x44);
  222.   TM1640_Stop();
  223.   Delay(10);
  224.   TM1640_Start();
  225.   TM1640_Write_Byte(0xCC);
  226.   if(En)
  227.     TM1640_Write_Byte(NUM[10][2]);
  228.   else
  229.     TM1640_Write_Byte(0x00);
  230.   TM1640_Stop();
  231. }

  232. void TM1640_2_Bit4(uint8_t *Dat)
  233. {
  234.   uint8_t i;
  235.   TM1640_Start();
  236.   TM1640_Write_Byte(0x44);
  237.   TM1640_Stop();
  238.   Delay(10);
  239.   TM1640_Start();
  240.   TM1640_Write_Byte(0xCE);
  241.   TM1640_Write_Byte(*(Dat++));
  242.   TM1640_Stop();
  243.   TM1640_2_Start();
  244.   TM1640_2_Write_Byte(0x44);
  245.   TM1640_2_Stop();
  246.   Delay(10);
  247.   TM1640_2_Start();
  248.   TM1640_2_Write_Byte(0xC0);
  249.   for(i = 1; i < 5; i++)
  250.   {
  251.     TM1640_2_Write_Byte(*(Dat++));
  252.   }
  253.   TM1640_2_Stop();
  254. }

  255. void TM1640_2_Bit5(uint8_t *Dat)
  256. {
  257.   uint8_t i;
  258.   TM1640_2_Start();
  259.   TM1640_2_Write_Byte(0x40);
  260.   TM1640_2_Stop();
  261.   Delay(10);
  262.   TM1640_2_Start();
  263.   TM1640_2_Write_Byte(0xC5);
  264.   for(i = 0; i < 5; i++)
  265.   {
  266.     TM1640_2_Write_Byte(*(Dat++));
  267.   }
  268.   TM1640_2_Stop();
  269. }
复制代码
--------------------------------------------------------------------------------------------
TB.jpg

调试器都忘记放啦,做了几十片,大家可以看一下
2 收藏 1 评论22 发布时间:2017-5-20 11:05

举报

22个回答
lising 回答时间:2017-5-20 12:18:18
不错,学习了!
zhao.zhao 回答时间:2017-5-20 14:54:51
不知这个芯片的价格几何?
adersonl 回答时间:2017-5-20 15:19:55
zhao.zhao 发表于 2017-5-20 14:54
不知这个芯片的价格几何?

0.8
寂寞,点燃一支烟 回答时间:2017-5-20 19:05:45
这种芯片挺不错,尤其还LED和按键同时驱动,我们公司也用到了。
epochal 回答时间:2017-5-20 19:46:49
0.8是多大量时的价格?
adersonl 回答时间:2017-5-21 13:31:23
寂寞,点燃一支烟 发表于 2017-5-20 19:05
这种芯片挺不错,尤其还LED和按键同时驱动,我们公司也用到了。

嗯,这家貌似有很多这样的芯片,,方便多了
zhao.zhao 回答时间:2017-5-21 14:10:23
这个芯片扩展性不行,驱动有点麻烦,也许控制少量几个数码管或LED点阵屏可以,量多了就不行了,影响了其使用范围。
adersonl 回答时间:2017-5-22 11:10:04
zhao.zhao 发表于 2017-5-21 14:10
这个芯片扩展性不行,驱动有点麻烦,也许控制少量几个数码管或LED点阵屏可以,量多了就不行了,影响了其使 ...

驱动非常简单啊,点阵一个5排,我带了25排,差不多就是带25个数码管了,也很好,总线速率也很快,并没有 出现你说的那种不行
Ljmp 回答时间:2017-5-22 14:44:51
欢迎大家使用,我们公司还有很多其他的LED驱动芯片;
123下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版