找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8200|回复: 18
打印 上一主题 下一主题
收起左侧

TM1640 含51单片机主程序带电路图 驱动共阳5位7断数码管

  [复制链接]
跳转到指定楼层
楼主
适合小白学习51通过TM1640驱动共阳数码管 含51主程序和电路图 烧录不用更改即可显示 模块化编程 方便移值

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

  2. /*void delay_ms(int ms)                //@11.0592MHz
  3. {
  4.         unsigned char i, j;
  5.         do{
  6.         _nop_();
  7.         i = 2;
  8.         j = 199;
  9.         do
  10.         {
  11.                 while (--j);
  12.         } while (--i);
  13.         }while(--ms);
  14. } */



  15. void TM1640_Start(void)
  16. {
  17.         TM1640_SCK_HIGH;
  18.         TM1640_DOUT_HIGH;
  19.         //delay_us(10);
  20.         TM1640_DOUT_LOW;
  21.         //delay_us(10);
  22.         TM1640_SCK_LOW;
  23.         //delay_us(10);
  24. }

  25. void TM1640_Stop(void)
  26. {
  27.         TM1640_DOUT_LOW;
  28.         TM1640_SCK_HIGH;
  29.         //delay_us(10);
  30.         TM1640_DOUT_HIGH;
  31.         //delay_us(10);
  32. }

  33. void TM1640_Write_Byte(unsigned char date)
  34. {
  35.         unsigned char i;
  36.         unsigned char Temp;
  37.         Temp=date;
  38.         TM1640_SCK_LOW;
  39.         TM1640_DOUT_LOW;
  40.         for(i=0;i<8;i++)
  41.         {
  42.                 TM1640_SCK_LOW;
  43.                 //delay_us(2);

  44.                 if(Temp&0x01)
  45.                 {        
  46.                         TM1640_DOUT_HIGH;
  47.                         //delay_us(10);
  48.         
  49.                 }
  50.                 else
  51.                 {
  52.                         TM1640_DOUT_LOW;
  53.                         //delay_us(10);

  54.                 }
  55.                 TM1640_SCK_HIGH;
  56.                 //delay_us(1);
  57.                 Temp = Temp >> 1;
  58.         }
  59.         TM1640_SCK_LOW;
  60.   TM1640_DOUT_LOW;
  61. }

  62. void Write_Com(unsigned char date)//发送命令字
  63. {
  64.         TM1640_Start();
  65.         TM1640_Write_Byte(date);
  66.         TM1640_Stop();
  67. }

  68. /*void Write_DATA(unsigned char add,unsigned char DATA)                //指定地址写入数据
  69. {
  70.         Write_Com(0x44); //44固定地址 40连续地址
  71.         TM1640_Start();
  72.         TM1640_Write_Byte(0xc0|add);
  73.         TM1640_Write_Byte(DATA);
  74.         TM1640_Stop();
  75. }*/
  76. void Write_DATA(unsigned char DATA0 ,unsigned char DATA1,unsigned char DATA2,unsigned char DATA3,unsigned char DATA4,unsigned char DATA5,unsigned char DATA6)                //指定地址写入数据
  77. {
  78.         Write_Com(0x44); //44固定地址 40连续地址
  79.         TM1640_Start();
  80.         TM1640_Write_Byte(0xc0);
  81.         TM1640_Write_Byte(DATA0);
  82.         TM1640_Stop();
  83.         TM1640_Start();
  84.         TM1640_Write_Byte(0xc1);
  85.         TM1640_Write_Byte(DATA1);
  86.         TM1640_Stop();
  87.         TM1640_Start();
  88.         TM1640_Write_Byte(0xc2);
  89.         TM1640_Write_Byte(DATA2);
  90.         TM1640_Stop();
  91.         TM1640_Start();
  92.         TM1640_Write_Byte(0xc3);
  93.         TM1640_Write_Byte(DATA3);
  94.         TM1640_Stop();
  95.         TM1640_Start();
  96.         TM1640_Write_Byte(0xc4);
  97.         TM1640_Write_Byte(DATA4);
  98.         TM1640_Stop();
  99.         TM1640_Start();
  100.         TM1640_Write_Byte(0xc5);
  101.         TM1640_Write_Byte(DATA5);
  102.         TM1640_Stop();
  103.         TM1640_Start();
  104.         TM1640_Write_Byte(0xc6);
  105.         TM1640_Write_Byte(DATA6);
  106.         TM1640_Stop();
  107. }

  108. void cls_TM1640(void)//清屏函数
  109. {
  110.         unsigned char i;        
  111.         Write_Com(0x44);//连续地址模式
  112.         TM1640_Start();
  113.         TM1640_Write_Byte(0xc0);
  114.         for(i=0;i<16;i++)
  115.                 TM1640_Write_Byte(0x00);
  116.         TM1640_Stop();
  117. }

  118. void init_TM1640(void)
  119. {
  120.         cls_TM1640();
  121.         //Write_Com(0x8c);//亮度0x88~0x8F 已放主程序里面调节
  122. }
复制代码

所有程序51hei提供下载:
TM1640红绿点阵STC89单片机.7z (16.06 KB, 下载次数: 267)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:822028 发表于 2021-4-9 19:31 | 只看该作者
兄弟,下倒是下载了,不会用啊
回复

使用道具 举报

板凳
ID:725358 发表于 2021-10-6 14:44 | 只看该作者
zxjnhs 发表于 2021-4-9 19:31
兄弟,下倒是下载了,不会用啊

驱动的是共阳数码管 ,具体哪里不会?
回复

使用道具 举报

地板
ID:904368 发表于 2021-10-6 16:19 | 只看该作者
兄弟,压缩包里面没有电路图哦
回复

使用道具 举报

5#
ID:725358 发表于 2021-10-6 16:41 | 只看该作者
yangyouyoulin 发表于 2021-10-6 16:19
兄弟,压缩包里面没有电路图哦

压缩包里没电路图  你要自己画了 我原图没有了  除51以外的都在那了贴子最上方的图片上了 51除基本电路外就只有  SCLK接 P1^3 口 ;
DIN 接 P1^2  口  这样接了你直接就可以跑起来了
回复

使用道具 举报

6#
ID:970326 发表于 2021-10-8 11:29 | 只看该作者
楼主 我想用stc15w408as驱动tm1640控制2个4位一体共阴数码管怎么写啊,我想做一个定时时钟
回复

使用道具 举报

7#
ID:970326 发表于 2021-10-8 11:32 | 只看该作者
楼主 我用stc15w408as驱动tm1640控制2个4位一体共阴数码管,做一个显示时间的定时时钟,怎么写啊?
回复

使用道具 举报

8#
ID:26229 发表于 2021-11-13 09:19 | 只看该作者
怎样改动可以操作到16个数码管?
回复

使用道具 举报

9#
ID:994319 发表于 2021-12-19 17:52 | 只看该作者
我的编译器貌似有问题呀
回复

使用道具 举报

10#
ID:297735 发表于 2022-1-1 18:35 | 只看该作者
没有任何显示楼主 请教下是什么问题啊
回复

使用道具 举报

11#
ID:725358 发表于 2022-5-6 08:14 | 只看该作者
wkaikai 发表于 2021-10-8 11:29
楼主 我想用stc15w408as驱动tm1640控制2个4位一体共阴数码管怎么写啊,我想做一个定时时钟

2位共阴只需要10个脚 你有16脚的MCU就可以直接驱动了 要1640干嘛
回复

使用道具 举报

12#
ID:725358 发表于 2022-5-6 08:15 | 只看该作者
fdc2011 发表于 2021-11-13 09:19
怎样改动可以操作到16个数码管?

16位共阴是可以的
回复

使用道具 举报

13#
ID:1037785 发表于 2022-6-30 17:09 | 只看该作者
这个代码全面吗
回复

使用道具 举报

14#
ID:1037785 发表于 2022-6-30 17:18 | 只看该作者
程序源码全面吗
回复

使用道具 举报

15#
ID:725358 发表于 2022-7-12 20:30 | 只看该作者
luzy666 发表于 2022-6-30 17:18
程序源码全面吗

全面的点亮的
回复

使用道具 举报

16#
ID:878399 发表于 2022-7-20 20:44 | 只看该作者
请问一下楼主,这个程序在TM1637.TM1650上也可以用吗?
回复

使用道具 举报

17#
ID:725358 发表于 2022-10-22 12:56 | 只看该作者
shzx 发表于 2022-7-20 20:44
请问一下楼主,这个程序在TM1637.TM1650上也可以用吗?

不清楚呢 估计不行 你可以试下
回复

使用道具 举报

18#
ID:1077165 发表于 2023-5-13 15:14 | 只看该作者
共阳数码管
回复

使用道具 举报

19#
ID:98880 发表于 2023-11-3 09:55 | 只看该作者
谢谢提供代码,只是有一些地方写的复杂了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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