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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2215|回復: 1
收起左側

vk1640兼容TM1640的參考驅動程序

[復制鏈接]
ID:380108 發表于 2021-11-13 14:24 | 顯示全部樓層 |閱讀模式
1 、概述
VK1640 是一款 2 線串口共陰極 8 段 16 位的 LED 驅動控制專用電路,內部集成有 MCU 數字接口、數據鎖存器、LED 驅動等電路。本產品性能優良,質量可靠。兼容TM1640
其主要特點如下:
內置顯示RAM
內置RC振蕩
內置自動消隱電路
顯示輝度軟件可調
兩線串行接口(CLK,DATA)
封裝形式:SOP28/SSOP28(0.635mm)
應用領域:
LED顯示面板場合,例如電磁爐顯示、電飯煲顯示、空調顯示、電子秤等家電產品。

源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    vk1640_driver.h
  4.   * @author  kevin_guo
  5.   * @version V1.0.0
  6.   * @date    072-01-2019
  7.   * @brief   This file contains all files for vk1640_driver.
  8.   ******************************************************************************
  9.   * @attention
  10.   ******************************************************************************
  11.   */
  12. /* Includes ------------------------------------------------------------------*/
  13. #include "global.h"

  14. /* extern variables ----------------------------------------------------------*/
  15. //extern uint8_t ic_key;
  16. /* Private typedef -----------------------------------------------------------*/
  17. /* Private define ------------------------------------------------------------*/
  18. /* Private macro -------------------------------------------------------------*/
  19. /* Private variables ---------------------------------------------------------*/
  20. uint8_t vk1640_write_buf[16];
  21. /* Private function prototypes -----------------------------------------------*/
  22. /* Private function ----------------------------------------------------------*/
  23. /*******************************************************************************
  24. * Function Name  : cc_nopdelay
  25. * Description    : 延時
  26. * Input          : dur
  27. * Output         : None
  28. * Return         : None
  29. *******************************************************************************/
  30. void vk1640_nopdelay(uint32_t dur)
  31. {
  32. //        uint32_t        i;
  33. //       
  34. //        while(dur)
  35. //        {
  36. //                dur--;
  37. //                i=1;
  38. //                while(i--)
  39. //                {       
  40. //                        __nop();__nop();__nop();__nop();__nop();
  41. //                }
  42. //        }
  43. }
  44. /*******************************************************************************
  45. * Function Name  : Set_testPara
  46. * Description    : 在時鐘的上升沿通過MCU向LED驅動IC寫1個字節數據
  47. * Input          : data8
  48. * Output         : None
  49. * Return         : None
  50. *******************************************************************************/
  51. void VK1640Write1BytetoIC(uint8_t data8)
  52. {
  53.         uint8_t i;
  54.        
  55.         for(i=0;i<8;i++)
  56.         {
  57.                 VK1640_SLK_LOW;                //先將“CLK”清零
  58.                 if((data8&0x01)!=0)
  59.                 {
  60.                         VK1640_DAT_HIGH;//需要傳送的數據的低位為“1”,則把“DIO”置高
  61.                 }
  62.                 else
  63.                 {
  64.                         VK1640_DAT_LOW;        //需要傳送的數據的低位為“0”,則把“DIO”清零
  65.                 }
  66.                 vk1640_nopdelay(2);
  67.                 VK1640_SLK_HIGH;        //送時鐘的上升沿
  68.                 vk1640_nopdelay(2);
  69.                 data8=data8>>1;                //準備送下一個BIT
  70.        
  71.         }//送完一個字節后退出循環
  72. }

  73. /*******************************************************************************
  74. * Function Name  : VK1640_Start
  75. * Description    :
  76. * Input          : None
  77. * Output         : None
  78. * Return         : None
  79. *******************************************************************************/
  80. void VK1640_Start(void)
  81. {
  82.         VK1640_DAT_HIGH;//通訊開始前通訊端口全部初始化為“1”       
  83.         VK1640_SLK_HIGH;
  84.         vk1640_nopdelay(2);
  85.         VK1640_DAT_LOW;
  86.         VK1640_SLK_LOW;
  87.         vk1640_nopdelay(1);
  88. }
  89. /*******************************************************************************
  90. * Function Name  : VK1640_Stop
  91. * Description    :
  92. * Input          : None
  93. * Output         : None
  94. * Return         : None
  95. *******************************************************************************/
  96. void VK1640_Stop(void)
  97. {
  98.         VK1640_SLK_LOW;
  99.         vk1640_nopdelay(1);
  100.         VK1640_DAT_LOW;
  101.         VK1640_SLK_HIGH;
  102.         vk1640_nopdelay(2);
  103.         VK1640_DAT_HIGH;
  104.         vk1640_nopdelay(1);
  105. }
  106. /*******************************************************************************
  107. * Function Name  : Disp_AutoAdd1Addr
  108. * Description    : 采用地址自動加一方式傳輸地址和數據
  109. * Input          : cmdaddr   寫入的地址
  110. *                                                                  : databuf   數據緩存
  111. *                : num       寫入的數據個數
  112. * Output         : None
  113. * Return         : None
  114. *******************************************************************************/
  115. void VK1640_Disp_AutoAdd1Addr(uint8_t addr,uint8_t* databuf, uint8_t num)
  116. {
  117.         uint8_t i;//i——控制本次需要傳多少個字節顯示數據       
  118.        
  119.         VK1640_Start();
  120.         VK1640Write1BytetoIC(VK1640_WRDTA_AUTOADD1ADDR);//傳數據設置命令,設置采用地址自動加1方式寫顯示數據,
  121.         VK1640_Stop();
  122.         VK1640_Start();       
  123.         VK1640Write1BytetoIC(VK1640_STARTADDR+addr);//傳起始地址
  124.         //地址命令傳完后,“STB”保持為“0”繼續傳需要顯示的數據
  125.         for(i=0;i<num;i++)
  126.         {
  127.                 VK1640Write1BytetoIC(*databuf++);//在連續傳顯示的數據過程中,“STB”一直保持為”0“
  128.         }
  129.         VK1640_Stop();
  130.         VK1640_Start();       
  131.         VK1640Write1BytetoIC(VK1640_DISP_ON|VK1640_PDUTY_14_16);//傳顯示控制命令
  132.         VK1640_Stop();
  133. }

  134. /*******************************************************************************
  135. * Function Name  : VK1640_Disp_FixedAddr
  136. * Description    : 采用地址固定方式傳輸地址和數據
  137. * Input          : disa
  138. * Output         : None
  139. * Return         : None
  140. *******************************************************************************/
  141. void VK1640_Disp_FixedAddr(uint8_t addr, uint8_t data8)
  142. {
  143.         VK1640_Start();
  144.         VK1640Write1BytetoIC(VK1640_WRDTA_FIXEDADDR);//傳數據設置命令,設置采用固定地址寫顯示數據,
  145.         VK1640_Stop();
  146.         VK1640_Start();       
  147.         VK1640Write1BytetoIC(VK1640_STARTADDR+addr);//傳顯示數據對應的地址
  148.         VK1640Write1BytetoIC(data8);//傳1BYTE顯示數據
  149.         VK1640_Stop();
  150.         VK1640_Start();       
  151.         VK1640Write1BytetoIC(VK1640_DISP_ON|VK1640_PDUTY_12_16);//傳顯示控制命令
  152.         VK1640_Stop();
  153. }
  154.        
  155. /*******************************************************************************
  156. * Function Name  : Vk1640_Init
  157. * Description    : 16240初始化
  158. * Input          : None
  159. * Output         : None
  160. * Return         : None
  161. *******************************************************************************/
  162. void VK1640_Init(void)   
  163. {   
  164.         GPIO_SetMode(VK1640_CLK_PORT, VK1640_CLK_PIN, GPIO_MODE_OUTPUT);
  165.         GPIO_SetMode(VK1640_DIO_PORT, VK1640_DIO_PIN, GPIO_MODE_OUTPUT);
  166.        
  167.         VK1640_DAT_HIGH;               
  168.         VK1640_SLK_HIGH;
  169. }  

  170. /*******************************************************************************
  171. * Function Name  : VK1640_Main
  172. * Description    : 1640測試程序
  173. * Input          : None
  174. * Output         : None
  175. * Return         : None
  176. *******************************************************************************/
  177. void VK1640_Main(void)
  178. {   
  179.         uint8_t i,j;
  180.        
  181.         VK1640_Init();
  182.          
  183.         for(i=0;i<16;i++)
  184.         {
  185.                 vk1640_write_buf[i]=0x00;
  186.         }
  187.         VK1640_Disp_AutoAdd1Addr(0,vk1640_write_buf,16);   //16個數碼管全滅
  188.         DelaymS(1000);
  189.         while(1)
  190.         {
  191.                 for(i=0;i<16;i++)
  192.                 {
  193.                         vk1640_write_buf[i]=0xff;
  194.                 }
  195.                 VK1640_Disp_AutoAdd1Addr(0,vk1640_write_buf,16);   //16個數碼管全亮
  196.                 DelaymS(1000);
  197.                 for(i=0;i<16;i++)
  198.                 {
  199.                         vk1640_write_buf[i]=0x00;
  200.                 }
  201.                 VK1640_Disp_AutoAdd1Addr(0,vk1640_write_buf,16);   //全滅
  202.                 DelaymS(1000);
  203.                
  204.                 for(j=0;j<16;j++)
  205.                 {
  206.                         for(i=0;i<16;i++)
  207.                         {
  208.                                 vk1640_write_buf[i]=0x00;
  209.                         }
  210.                         vk1640_write_buf[j]=0xff;
  211.                         VK1640_Disp_AutoAdd1Addr(0,vk1640_write_buf,16);   //全亮
  212.                         DelaymS(500);
  213.                 }
  214.                 for(j=0;j<8;j++)
  215.                 {
  216.                         for(i=0;i<16;i++)
  217.                         {
  218.                                 vk1640_write_buf[i]=(1<<j);
  219.                         }
  220.                         VK1640_Disp_AutoAdd1Addr(0,vk1640_write_buf,16);   //全亮
  221.                         DelaymS(1000);
  222.                 }
  223.                
  224.                 __nop();
  225.         }
  226. }   
  227. /************************END OF FILE****/
復制代碼
51hei.png
以上2個文件下載: vk1640_driver.rar (2.51 KB, 下載次數: 40)

評分

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

查看全部評分

回復

使用道具 舉報

ID:37023 發表于 2022-4-26 00:02 | 顯示全部樓層
global.h"
這個里面是啥
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月婷婷丁香 | 亚洲激情综合 | 999精品视频 | 9191在线观看 | 中文字幕日韩三级 | 91视频大全 | 免费同性女女aaa免费网站 | 亚洲视频免费一区 | 日韩有码一区二区三区 | 色综合久久伊人 | 成人免费视频一区二区 | av黄色免费 | 日韩在线视频一区 | 四虎在线视频 | 中文字幕四虎 | 久久久久免费精品国产 | 国产目拍亚洲精品99久久精品 | 91精品国产综合久久婷婷香蕉 | 一级a性色生活片久久毛片波多野 | 国产午夜精品一区二区三区四区 | 在线亚洲欧美 | 免费在线成人 | 国产精品资源在线 | 欧美大片一区 | 精品欧美一区二区精品久久久 | 香蕉一区二区 | 国产欧美一区二区三区在线看 | 欧美黄色一级毛片 | 在线中文字幕亚洲 | av网站在线播放 | 精品成人av | 国产一级在线 | 免费看国产一级特黄aaaa大片 | www.色综合| 国产网站在线免费观看 | 99精品视频在线 | 成人二区| 成人免费视频观看 | 精品三级在线观看 | 男人久久天堂 | 日韩av在线一区 |