找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7582|回复: 1
收起左侧

STM32-TM1640驱动代码+原理图

[复制链接]
ID:246852 发表于 2019-9-25 15:25 | 显示全部楼层 |阅读模式
用STM32搭建驱动显示芯片TM1640,里面包含TM1640代码,可以调用函数直接使用。

电路原理图如下:
0.png

单片机源程序如下:
  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, 下载次数: 146)
回复

使用道具 举报

ID:352311 发表于 2021-2-26 15:30 | 显示全部楼层
还有一部分显示数据的数据没啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表