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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

TM1640驅(qū)動(dòng)程序及控制LED累加流水 源程序

[復(fù)制鏈接]
ID:885807 發(fā)表于 2021-8-20 15:44 | 顯示全部樓層 |閱讀模式
此程序?yàn)榛赥M1640 驅(qū)動(dòng)LED燈進(jìn)行累加流水

單片機(jī)源程序如下:
  1. #include "ucos_ii.h"
  2. #include "driver_i2c1640.h"
  3. #include "driver_sys.h"
  4. #include "sys_time.h"
  5. //位選地址
  6. #define   DIG1      0xc0
  7. #define   DIG2      0xc1
  8. #define   DIG3      0xc2
  9. #define   DIG4      0xc3
  10. #define   DIG5      0xc4
  11. #define   DIG6      0xc5
  12. #define   DIG7      0xc6
  13. #define   DIG8      0xc7
  14. #define   DIG9      0xc8
  15. #define   DIG10     0xc9
  16. #define   DIG11     0xca
  17. #define   DIG12     0xcb
  18. #define   DIG13     0xcc
  19. #define   DIG14     0xcd
  20. #define   DIG15     0xce
  21. #define   DIG16     0xcf
  22. //顯示亮度級別
  23. #define   LEVEL_OFF   0x80
  24. #define   LEVEL_1     0x88
  25. #define   LEVEL_2     0x89
  26. #define   LEVEL_3     0x8a
  27. #define   LEVEL_4     0x8b
  28. #define   LEVEL_5     0x8c
  29. #define   LEVEL_6     0x8d
  30. #define   LEVEL_7     0x8e
  31. #define   LEVEL_8     0x8f
  32. #define DATA_CMD_ADDR_INC      0x40        //數(shù)據(jù)命令設(shè)置 地址自動(dòng)加1
  33. #define DATA_CMD_ADDR_FIXED    0x44        //固定地址
  34. #define     addr_TM1640   (0xc0+0x01)
  35. #define     DSPTM1640_DIS     0   
  36. #define     DSPTM1640_ENB     1  
  37. #define TM1640_DELAY  delay_us(2)
  38. /***************************TM1640顯示緩沖區(qū)*********************************/
  39. unsigned char led_buffer[48]={0};      //8位數(shù)字緩沖區(qū) //18個(gè)燈緩沖區(qū)
  40. /******************************************************************************
  41. * Function Name --> IIC_GPIO_Init
  42. * Description   --> GPIO初始化
  43. * Input         --> none
  44. * Output        --> none
  45. * Reaturn       --> none
  46. ******************************************************************************/
  47. void IIC_1640_GPIO_Init(void)
  48. {
  49.     GPIO_InitTypeDef  GPIO_InitStructure;
  50.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);

  51.                 GPIO_InitStructure.GPIO_Pin = IIC_1642_SCL_PIN|IIC_1642_SDA_PIN;
  52.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  53.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  54.                 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  55.                 GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
  56.                 GPIO_Init(IIC_1642_SCL_PORT, &GPIO_InitStructure);
  57.                 IIC_Init_1640LC();
  58. }

  59. //IIC初始化
  60. void IIC_Init_1640LC(void)
  61. {   
  62.     IIC_1642_SDA_H;
  63.     IIC_1642_SCL_H;
  64.        
  65.           IIC_Start_1640LC();
  66.     IIC_Send_Byte_1640LC(DATA_CMD_ADDR_INC);//設(shè)置地址自動(dòng)+1模式
  67.     IIC_Stop_1640LC();

  68.                 IIC_Start_1640LC();
  69.                 IIC_Send_Byte_1640LC(LEVEL_8);//顯示亮度
  70.                 IIC_Stop_1640LC();
  71.                 led_clr();
  72. }
  73. //產(chǎn)生IIC起始信號
  74. void IIC_Start_1640LC(void)
  75. {
  76.         IIC_1642_SCL_H;
  77.         TM1640_DELAY;
  78.         IIC_1642_SDA_H;       
  79.         TM1640_DELAY;       
  80.         IIC_1642_SDA_L;//START:when CLK is high,DATA change form high to low
  81.         TM1640_DELAY;
  82. }          
  83. //產(chǎn)生IIC停止信號
  84. void IIC_Stop_1640LC(void)
  85. {
  86.         IIC_1642_SCL_L;
  87.         TM1640_DELAY;
  88.         IIC_1642_SDA_L;//STOP:when CLK is high DATA change form low to high
  89.         TM1640_DELAY;
  90.         IIC_1642_SCL_H;
  91.         TM1640_DELAY;       
  92.         IIC_1642_SDA_H;//發(fā)送I2C總線結(jié)束信號
  93.         TM1640_DELAY;                                                                  
  94. }
  95. void IIC_Send_Byte_1640LC(u8 txd)
  96. {                        
  97.     u8 t;   
  98.     for(t=0;t<8;t++)
  99.     {      
  100.                         IIC_1642_SCL_L;//拉低時(shí)鐘開始數(shù)據(jù)傳輸
  101.                         TM1640_DELAY;
  102.                         if(txd&0x01)       
  103.                         {
  104.                                 IIC_1642_SDA_H;
  105.                                 TM1640_DELAY;  //對TEA5767這三個(gè)延時(shí)都是必須的
  106.                         }       
  107.                         else                               
  108.                         {
  109.                                 IIC_1642_SDA_L;
  110.                                 TM1640_DELAY;  //對TEA5767這三個(gè)延時(shí)都是必須的
  111.                         }
  112.                 IIC_1642_SCL_H;
  113.                 txd = txd>>1;
  114.                 TM1640_DELAY;  //對TEA5767這三個(gè)延時(shí)都是必須的                       
  115.     }         
  116. }                                                      
  117. /*將TM1640顯示緩沖區(qū)寫入到芯片中*/
  118. /*可能需要在語句間增加必要的延時(shí)*/
  119. /*如果128個(gè)點(diǎn)全部用到,需要修改變量I的值*/
  120. void TM1640_display(uint8_t start_address,uint8_t data)
  121. {
  122.                 uint8_t i;
  123.                 IIC_Start_1640LC();
  124.     IIC_Send_Byte_1640LC(DATA_CMD_ADDR_FIXED);    //設(shè)置起始地址
  125.     IIC_Stop_1640LC();
  126.     IIC_Start_1640LC();
  127.                 IIC_Send_Byte_1640LC(start_address);    //設(shè)置起始地址
  128.                 IIC_Send_Byte_1640LC(data);
  129.     IIC_Stop_1640LC();  
  130.                 IIC_Start_1640LC();
  131.     IIC_Send_Byte_1640LC(LEVEL_8);    //設(shè)置起始地址
  132.     IIC_Stop_1640LC();                
  133. }
  134. void deal_Disp()
  135. {
  136.   u8 i,j;
  137.   u16 led_data=0xE0;
  138.         for(j=0;j<6;j++)
  139.         {               
  140.                 led_data |= (1<<j);
  141.                 for(i=0;i<5;i++)
  142.                 {
  143.                                         //最后、顯示
  144.                         TM1640_display(DIG1+i,led_data);
  145.                         OSTimeDlyHMSM(0, 0, 0, 100);               
  146.                 }
  147.         }
  148.         led_clr();

  149. }
  150. void led_clr()
  151. {
  152.         uint8_t i;
  153.         u16 led_data=0;
  154.         for(i=0;i<16;i++)
  155.         {
  156.                         TM1640_display(DIG1+i,led_data);   
  157.         }
  158. }

  159. void led_green_full()
  160. {
  161.          uint8_t i;
  162.          u16 led_data=0xFF;
  163.                 u16 red_data = 0x00;
  164.                  for(i=0;i<5;i++)
  165.                 {
  166.                                 TM1640_display(DIG11+i,led_data);   
  167.                 }
  168.                 for(i=0;i<10;i++)
  169.                 {
  170.                                 TM1640_display(DIG1+i,red_data);   
  171.                 }
  172. }
  173. void led_red_full()
  174. {
  175.          uint8_t i;
  176.                 u16 led_data=0xFF;
  177.                 u16 blue_data = 0x00;

  178.                  for(i=0;i<5;i++)
  179.                 {
  180.                                 TM1640_display(DIG6+i,led_data);   
  181.                 }
  182.                 for(i=0;i<5;i++)
  183.                 {
  184.                                 TM1640_display(DIG1+i,blue_data);   
  185.                 }
  186.                 for(i=0;i<5;i++)
  187.                 {
  188.                                 TM1640_display(DIG11+i,blue_data);   
  189.                 }
  190. }
  191. void led_blue_full()
  192. {
  193.          uint8_t i;
  194.          u16 led_data=0xFF;
  195.          u16 green_data = 0x00;
  196.                  for(i=0;i<5;i++)
  197.                 {
  198.                                 TM1640_display(DIG1+i,led_data);   
  199.                 }
  200.                 for(i=0;i<10;i++)
  201.                 {
  202.                                 TM1640_display(DIG6+i,green_data);   
  203.                 }
  204. }
復(fù)制代碼

  1. #ifndef _DRIVER_I2C1640_H
  2. #define _DRIVER_I2C1640_H

  3. #include "stdlib.h"       
  4. #include "stm32f2xx.h"

  5. typedef unsigned char         u8;
  6. typedef unsigned short         u16;
  7. typedef unsigned int                 u32;


  8. /*  IIC_SCL時(shí)鐘端口、引腳定義 */
  9. #define IIC_1642_SCL_PORT                         GPIOF   
  10. #define IIC_1642_SCL_PIN                         (GPIO_Pin_1)
  11. #define IIC_1642_SCL_PORT_RCC                RCC_AHB1Periph_GPIOF
  12. /*  IIC_SDA時(shí)鐘端口、引腳定義 */
  13. #define IIC_1642_SDA_PORT                         GPIOF  
  14. #define IIC_1642_SDA_PIN                         (GPIO_Pin_0)
  15. #define IIC_1642_SDA_PORT_RCC                RCC_AHB1Periph_GPIOF
  16. /******************************************************************************
  17.                                 位帶操作
  18. ******************************************************************************/
  19. #define IIC_1642_SCL_H                                GPIO_SetBits(IIC_1642_SCL_PORT, IIC_1642_SCL_PIN)
  20. #define IIC_1642_SCL_L                                GPIO_ResetBits(IIC_1642_SCL_PORT, IIC_1642_SCL_PIN)
  21. #define IIC_1642_SDA_H                                GPIO_SetBits(IIC_1642_SDA_PORT, IIC_1642_SDA_PIN)
  22. #define IIC_1642_SDA_L                                GPIO_ResetBits(IIC_1642_SDA_PORT, IIC_1642_SDA_PIN)
  23. #define IN_1642_SDA                                        GPIO_ReadInputDataBit(IIC_1642_SDA_PORT, IIC_1642_SDA_PIN)            //IIC讀取數(shù)據(jù)用

  24. //IIC所有操作函數(shù)
  25. void IIC_1640_GPIO_Init(void);
  26. void IIC_Init_1640LC(void);                //初始化IIC的IO口                                 
  27. void IIC_Start_1640LC(void);                                //發(fā)送IIC開始信號
  28. void IIC_Stop_1640LC(void);                                  //發(fā)送IIC停止信號
  29. void IIC_Send_Byte_1640LC(u8 txd);
  30. void IIC_Send_Byte_1640(unsigned char name,unsigned char display);
  31. void deal_Disp();
  32. void led_clr();
  33. void led_green_full();
  34. void led_red_full();
  35. void led_blue_full();

  36. #endif

復(fù)制代碼


51hei.png


評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品国产乱码久久久久久中文 | 国产综合在线视频 | 国产精品99久久久久久久久久久久 | 日韩欧美一区二区在线播放 | 国产精品永久免费视频 | 国产日韩精品在线 | 精品免费视频 | 久久久久久久久久久91 | 成人精品鲁一区一区二区 | 成人av鲁丝片一区二区小说 | 欧美激情 亚洲 | 久久精品一区二区三区四区 | 看片国产 | 欧美在线国产精品 | 麻豆av网站 | 欧美激情a∨在线视频播放 成人免费共享视频 | 日韩成年人视频在线 | 国产成人精品一区二区三区网站观看 | 一区二区三区电影网 | 日韩第一页 | 秋霞电影院午夜伦 | 久久综合一区二区 | 久久国产精品99久久久久久丝袜 | 九九九国产 | 九九热在线观看视频 | 亚洲高清成人 | 麻豆精品久久 | 欧美一区二区三区在线 | 国产福利在线看 | 久久99深爱久久99精品 | 综合在线视频 | 国产一区二区三区四区区 | 理论片免费在线观看 | 国产精品夜色一区二区三区 | 国产精品久久国产精品99 | 国产欧美日韩一区二区三区在线观看 | 欧美成人激情视频 | 国产精品一二三区 | 国产精品视频一区二区三区不卡 | 欧美一区2区三区3区公司 | 亚洲人a|