标题: STM32-TM1640驱动代码+原理图 [打印本页]

作者: 謬丶傲    时间: 2019-9-25 15:25
标题: STM32-TM1640驱动代码+原理图
用STM32搭建驱动显示芯片TM1640,里面包含TM1640代码,可以调用函数直接使用。

电路原理图如下:


单片机源程序如下:
  1. #include "tm1640.h"


  2. //TM1640初始化
  3. void TM_1640_Init(void)
  4. {
  5.          RCC->APB2ENR|=1<<3;    //使能PORTB时钟         
  6.          GPIOB->CRH&=0XFF00FFFF;
  7.          GPIOB->CRH|=0X00330000;//PB12 13推挽输出  
  8.          GPIOB->ODR|=(0<<12)|(0<<13);
  9. }

  10. //TM1640延时
  11. void TM_1640_Delay(unsigned char i)
  12. {
  13.         unsigned char ii;
  14.         for (ii=0;ii<i;ii++)
  15.         {
  16.                 __nop();
  17.         }
  18. }

  19. //TM1640开始
  20. void TM_1640_Start()
  21. {
  22.         SCK(1);
  23.         TM_1640_Delay(2);
  24.         DIO(1);
  25.         TM_1640_Delay(4);
  26.         DIO(0);
  27.         TM_1640_Delay(4);
  28.         SCK(0);
  29.         TM_1640_Delay(4);
  30. }

  31. //TM1640结束
  32. void TM_1640_Stop()
  33. {
  34.         DIO(0);
  35.         TM_1640_Delay(2);
  36.         SCK(1);        
  37.         TM_1640_Delay(4);
  38.         DIO(1);
  39.         TM_1640_Delay(4);
  40.         SCK(0);
  41.         TM_1640_Delay(4);
  42. }

  43. //送数据 低位先传
  44. void TM_1640_Send_data(unsigned char i)
  45. {
  46.         unsigned char ii;
  47.         unsigned char data;
  48.         data = i;
  49.         DIO(0);
  50.         TM_1640_Delay(2);
  51.         SCK(0);
  52.         
  53.         for(ii=0;ii<8;ii++)
  54.         {
  55.                 SCK(0);
  56.                 TM_1640_Delay(2);
  57.                
  58.                 if(data & 0X01)
  59.                 {
  60.                         DIO(1);
  61.                         TM_1640_Delay(4);
  62.                 }
  63.                 else
  64.                 {
  65.                         DIO(0);
  66.                         TM_1640_Delay(4);
  67.                 }
  68.                 SCK(1);
  69.                 data=data>>1;
  70.         }
  71.                 SCK(0);
  72.                 TM_1640_Delay(4);
  73.           DIO(0);
  74. }



  75. //TM1640
  76. void TM_1640_Send(void)
  77. {
  78.         unsigned char i=0;
  79.         TM_1640_Start();
  80.         TM_1640_Send_data(0X40);//写数据到显示寄存器,采用地址自动加一
  81.         TM_1640_Stop();
  82.         TM_1640_Start();
  83.         TM_1640_Send_data(0XC0);//显示寄存器的00H单元开始
  84.         
  85.         for(i=0;i<16;++i)
  86.         {
  87.                 TM_1640_Send_data(gBLedBuf[i]);
  88.         }
  89.         TM_1640_Stop();
  90.         TM_1640_Start();
  91.         TM_1640_Send_data(0X8F);//开显示,亮度可以通过改变低三位调节
  92.         TM_1640_Stop();
  93. }
复制代码

代码下载,请大家指导:
STM32-TM1640.zip (7.32 KB, 下载次数: 149)



作者: 51黑lwj    时间: 2021-2-26 15:30
还有一部分显示数据的数据没啊




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1