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

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

QQ登錄

只需一步,快速開始

搜索
查看: 3845|回復(fù): 2
收起左側(cè)

STM32F103驅(qū)動(dòng)LED顯示控制程序 可驅(qū)動(dòng)多達(dá)384點(diǎn)陣LED TM1681

[復(fù)制鏈接]
ID:266546 發(fā)表于 2020-10-27 13:00 | 顯示全部樓層 |閱讀模式
TM1681是一種存儲(chǔ)器交換LED顯示控制的驅(qū)動(dòng)芯片,可以選擇多重的ROW/COM模式(32ROW/8COM和24ROW/16COM),可以用來(lái)驅(qū)動(dòng)點(diǎn)陣LED。該芯片提供了軟件設(shè)置的16 個(gè)級(jí)別的脈寬調(diào)制控制輸出,可以調(diào)整LED 循環(huán)顯示的亮度。

單片機(jī)源程序如下:
  1. #include "TM1681.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "Buzzer.h"
  5. #include "SysTick.h"
  6. /** Write multiple bits in an 8-bit device register.
  7. * @param slaveAddr I2C slave device address
  8. * @param regAddr Register regAddr to write to
  9. * @param bitStart First bit position to write (0-7)
  10. * @param length Number of bits to write (not more than 8)
  11. * @param data Right-aligned value to write
  12. */
  13. static unsigned char temp;
  14. static unsigned char x=1;
  15. //unsigned char channel_1=1;
  16. unsigned char Enable_1,Enable_2,Enable_3,Enable_4,Enable_5,Enable_6;
  17. extern unsigned char channel;
  18. extern unsigned char NumDis[24],TIME[10],G_1,K1;
  19. extern int16_t cache[6],data[6];
  20. //__IO u32 Time_1;
  21. extern __IO u32 Total_time;
  22. void TM1637_Delay_us(unsigned  int Nus)
  23. {
  24. for(;Nus>0;Nus--)
  25.         {
  26.           __nop();
  27.         }
  28. }

  29. void TM1637_Start(void)
  30. {
  31.         TM1637_DIO_OUT();
  32.   TM1637_CLK (1);
  33.         TM1637_OUT_DIO1 = 1;
  34.         TM1637_Delay_us(2);
  35.         TM1637_OUT_DIO1 = 0;
  36.         TM1637_Delay_us(2);
  37.         TM1637_CLK ( 0);
  38. }
  39. void TM1637_Ack(void)
  40. {
  41.         TM1637_DIO_IN();
  42.   TM1637_CLK ( 0);
  43.         TM1637_Delay_us(5);
  44.         while(TM1637_READ_DIO1);
  45.         TM1637_CLK (1);
  46.         TM1637_Delay_us(2);
  47. }
  48. void TM1637_Stop(void)
  49. {
  50.         TM1637_DIO_OUT();
  51.         TM1637_CLK ( 0);
  52.         TM1637_Delay_us(2);
  53.         TM1637_OUT_DIO1 = 0;
  54.         TM1637_Delay_us(2);
  55.         TM1637_CLK (1);
  56.         TM1637_Delay_us(2);
  57.         TM1637_OUT_DIO1 = 1;
  58.         TM1637_Delay_us(2);
  59.         TM1637_CLK( 0);
  60.         TM1637_OUT_DIO1 = 0;
  61. }
  62. void TM1637_WriteByte(unsigned char oneByte)
  63. {
  64. unsigned char i;
  65.         TM1637_DIO_OUT();
  66.         for(i=0;i<8;i++)
  67.         {
  68.          TM1637_CLK(0);
  69.                 if(oneByte&0x01)
  70.                 {
  71.                         TM1637_OUT_DIO1 = 1;
  72.                 }
  73.                 else
  74.                 {
  75.                         TM1637_OUT_DIO1 = 0;
  76.                 }
  77.                 TM1637_Delay_us(3);
  78.                 TM1637_CLK(1);
  79.                 oneByte=oneByte>>1;
  80.         }
  81. }

  82. void TM1637_DisplayChar_1(unsigned char ch,unsigned char p)
  83. {
  84.         if(ch>23)ch=0;//防止數(shù)組越界
  85.         TM1637_Start();
  86.         TM1637_WriteByte(0x44);//0x44固定模式有利于控制顯示位,0x40則采用顯示地址自加模式這里不使用
  87.         TM1637_Ack();
  88.         TM1637_Stop();
  89.         TM1637_Start();
  90.         
  91.         TM1637_WriteByte(0xC0+p);//0X00地址開始顯示
  92.         TM1637_Ack();
  93.                
  94.         TM1637_WriteByte(NumDis[ch]);//顯示
  95.         TM1637_Ack();
  96.         
  97.         TM1637_Stop();
  98.         TM1637_Start();
  99.         TM1637_WriteByte(0x8C);
  100.         TM1637_Ack();
  101.         TM1637_Stop();
  102.                
  103. }
  104. void TM1637_Display_1(void)
  105. {
  106.         unsigned char a=0,b=0,c=0,d=0;
  107.         if(cache[0]<0)
  108.         {
  109.                 d=((-cache[0])%60)%10;
  110.                 c=((-cache[0])%60)/10;
  111.                 b=((-cache[0])/60)%10;
  112.                 a=0x40;
  113.         }
  114.         else
  115.         {
  116.         d=(cache[0]%60)%10;
  117.         c=(cache[0]%60)/10;
  118.         b=(cache[0]/60)%10;
  119.         a=(cache[0]/60)/10;
  120.         }
  121.         TM1637_Start();
  122.         TM1637_WriteByte(0x40);//0x40則采用顯示地址自加1模式
  123.         TM1637_Ack();
  124.         TM1637_Stop();
  125.         TM1637_Start();
  126.         TM1637_WriteByte(0xC0);//0X00地址開始顯示
  127.         TM1637_Ack();
  128.                
  129.         TM1637_WriteByte(TIME[a]);//顯示1
  130.         TM1637_Ack();
  131.         if(x==1)
  132.         {
  133.                 temp=TIME[b];
  134.                 x++;
  135.         }
  136.   temp^=0x80;  //10000000^11001111=01001111;01001111^10000000=11001111
  137.         TM1637_WriteByte(temp);//顯示2和跳動(dòng)的冒號(hào)
  138.         TM1637_Ack();
  139.         
  140.         TM1637_WriteByte(TIME[c]);//顯示0
  141.         TM1637_Ack();
  142.                
  143.         TM1637_WriteByte(TIME[d]);//顯示0
  144.         TM1637_Ack();
  145.                
  146.         TM1637_WriteByte(0xFF);
  147.         TM1637_Ack();
  148.                
  149.         TM1637_WriteByte(0xFF);
  150.         TM1637_Ack();
  151.         
  152.         TM1637_Stop();
  153.         TM1637_Start();
  154.         TM1637_WriteByte(0x8c);
  155.         TM1637_Ack();
  156.         TM1637_Stop();
  157. }

  158. void time_1(void)
  159. {
  160.         
  161.         if(x>=2)
  162.                         {
  163.                                                 if((Enable_1==1)&&(channel==0))
  164.                                                 {
  165.                                                                 G_1=1;
  166.                                                                 cache[0]--;
  167.                                                                 if(cache[0]<0)
  168.                                                                 {
  169.                                                                         if((-cache[0])>599)
  170.                                                                         {
  171.                                                                                 Enable_1=0;
  172.                                                                         }
  173.                                                                         K1=1;                                
  174.                                                                 }        
  175.                                                         }
  176.                                 x=1;
  177.                         }
  178. }

  179. void Digital_off_1(void)
  180. {
  181.         TM1637_Start();
  182.         TM1637_WriteByte(0x88);
  183.         TM1637_Ack();
  184.         TM1637_Stop();
  185.         
  186. }
復(fù)制代碼
  1. /*******************************************************************************
  2. * @file    TM1637.h
  3. * @author  
  4. * @date     
  5. *******************************************************************************/
  6. #ifndef TM1637_H
  7. #define TM1637_H

  8. #include "sys.h"

  9. #define TM1637_OUT_DIO1           PCout(0)

  10. #define TM1637_READ_DIO1           PCin(0)

  11. //IO方向設(shè)置
  12. #define TM1637_DIO_IN()     {GPIOC->CRL&=0XF000000F;GPIOC->CRL|=0X08888880;}
  13. #define TM1637_DIO_OUT()    {GPIOC->CRL&=0XF000000F;GPIOC->CRL|=0X03333330;}

  14. /**
  15.   * @brief  Configuration Dots's Mode enumeration  
  16.   */
  17. typedef enum
  18. {
  19.         DulDot = 0x00,
  20.   LowDot= 0x01,
  21.   HighDot= 0x2,
  22. }DisDotSetting;
  23. typedef enum
  24. {
  25.         sty = 0x00,
  26.   Jep = 0x01,
  27. }DisDotMode;



  28. void TM1637_Delay_us(unsigned  int Nus);

  29. void TM1637_Display_1(void);
  30. void TM1637_DisplayChar_1(unsigned char ch,unsigned char p);
  31. void time_1(void);

  32. void TM1637_Display_2(void);
  33. void TM1637_DisplayChar_2(unsigned char ch,unsigned char p);
  34. void time_2(void);

  35. void TM1637_Display_3(void);
  36. void TM1637_DisplayChar_3(unsigned char ch,unsigned char p);
  37. void time_3(void);

  38. void TM1637_Display_4(void);
  39. void TM1637_DisplayChar_4(unsigned char ch,unsigned char p);
  40. void time_4(void);

  41. void TM1637_Display_5(void);
  42. void TM1637_DisplayChar_5(unsigned char ch,unsigned char p);
  43. void time_5(void);

  44. void TM1637_Display_6(void);
  45. void TM1637_DisplayChar_6(unsigned char ch,unsigned char p);
  46. void time_6(void);

  47. void Digital_off_1(void);
  48. void Digital_off_2(void);
  49. void Digital_off_3(void);
  50. void Digital_off_4(void);
  51. void Digital_off_5(void);
  52. void Digital_off_6(void);
  53. #endif
復(fù)制代碼


51hei.png
上面2個(gè)文件  帖到網(wǎng)頁(yè)上面了

原理圖參考:http://www.zg4o1577.cn/bbs/dpj-213103-1.html

回復(fù)

使用道具 舉報(bào)

ID:328014 發(fā)表于 2020-10-27 14:41 | 顯示全部樓層
電路連接是怎么樣的?
回復(fù)

使用道具 舉報(bào)

ID:116831 發(fā)表于 2021-12-28 13:52 | 顯示全部樓層
這不是TM1637的程序,不是TM1681的啊。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩午夜一区二区三区 | 欧美日韩三级视频 | 正在播放一区二区 | 亚洲视频三| 精品欧美黑人一区二区三区 | 久久亚洲国产 | 操久久 | 日韩欧美一区二区三区在线播放 | 欧美色欧美亚洲另类七区 | 日韩成人av在线 | 久久久久久成人 | 91精品国产777在线观看 | 中文一区二区视频 | 日本精品久久久久久久 | 精品中文字幕在线 | 欧美综合一区 | 久久99精品视频 | 男女网站免费观看 | 蜜臀久久99精品久久久久野外 | 99精品欧美一区二区三区综合在线 | 亚洲一区二区三区免费观看 | 国产精品不卡一区 | 五月天婷婷激情 | 欧美一区二区在线 | 国产精品一区二区三区久久 | 日本福利在线观看 | 日本成人免费观看 | 亚洲一区二区三区福利 | 欧美激情一区二区三级高清视频 | 欧美在线天堂 | 欧美黄 片免费观看 | 激情亚洲| 色视频网站 | 97国产精品 | 久久久高清 | 91精品国产日韩91久久久久久 | 国产情侣在线看 | 91在线精品一区二区 | 黄色大片毛片 | 欧美福利在线 | 国产香蕉视频在线播放 |