arduino用2个74HC595点亮2个4位共阳数码管
原文:https://www.geek-workshop.com/forum.php?mod=viewthread&tid=7415
这个是上面那个淘宝卖价给的74HC595的电路图

实物连接图:

下面就是代码了
//VCC – 5V
//GND – GND
//DS – A0
//ST_CP – A1
//SH_CP – A2

int latchPin = A1;//ST_CP
int clockPin = A2;//SH_CP
int dataPin = A0; //DS
//这里定义了74HC595的那三个脚

void setup ()
{
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
//让74HC595的三个脚都是输出状态
}

//这个函数是显示一个数用的disNum(显示的数,显示的位,是否有小数点(1为有小数点))
void disNum(int Num_Qua, int Num_Pos, int Num_Dec)
{
int Num_Qua_B = 0;
int Num_Pos_B = 0;
switch (Num_Qua)
{
case 0:Num_Qua_B = 192;break;
case 1:Num_Qua_B = 249;break;
case 2:Num_Qua_B = 164;break;
case 3:Num_Qua_B = 176;break;
case 4:Num_Qua_B = 153;break;
case 5:Num_Qua_B = 146;break;
case 6:Num_Qua_B = 130;break;
case 7:Num_Qua_B = 248;break;
case 8:Num_Qua_B = 128;break;
case 9:Num_Qua_B = 144;break;
default: Num_Qua_B = 255;break;
};
//这个值转换为2进制 为一个数abcdefg的需要亮的针脚。
switch (Num_Pos)
{
case 1:Num_Pos_B = 1;break;
case 2:Num_Pos_B = 2;break;
case 3:Num_Pos_B = 4;break;
case 4:Num_Pos_B = 8;break;
case 5:Num_Pos_B = 16;break;
case 6:Num_Pos_B = 32;break;
case 7:Num_Pos_B = 64;break;
case 8:Num_Pos_B = 128;break;
default: Num_Pos_B = 0;break;
};
//这个值转换为2进制 为当前点亮的位数。
if (Num_Dec == 1)
{
Num_Qua_B = Num_Qua_B + 128;
};
//128是Q7端口2进制值转换为10进制的结果。
digitalWrite(latchPin,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
int L = Num_Qua_B; int R = Num_Pos_B;
shiftOut(dataPin,clockPin,MSBFIRST,R);
shiftOut(dataPin,clockPin,MSBFIRST,L);
digitalWrite(latchPin,HIGH); //将ST_CP这个针脚恢复到高电平
//上面是74HC595的输出方式 每个74HC595能接受一个8位的2进制数值来电灯 第一个74HC595再次输入一个8位的数值他会把他现在的数值传给第二个串联的74HC595。
delayMicroseconds(100);
}
//这个是显示数用的函数
void showNum(double number)//注意用double,int不够长了。
{
long num = number;
int ShowDec [8];
for (int x = 1; x < 9; x++)
{
ShowDec [x] = 0;
}
//创建显示小数点的数组,0为不显示,1为显示

    if (num  < 10000000){if (num  < 1000000){num = number*100; ShowDec[6]=1;ShowDec[7]=0;}else{num = number*10; ShowDec[7]=1;}}//简单的2位小数显示int ShowNumber [8];ShowNumber[1] = (num/10000000)%10;ShowNumber[2]=  (num/1000000)%10;ShowNumber[3] = (num/100000)%10;ShowNumber[4] = (num/10000)%10;ShowNumber[5] = (num/1000)%10;ShowNumber[6] = (num/100)%10;ShowNumber[7] = (num/10)%10;ShowNumber[8]= (num/1)%10;//取得每一位的数。然后存在一个数组里。int dectest = 0;for (int x = 1; x<8; x++){if ((dectest == 0)and(ShowNumber[x] == 0)){ShowNumber[x] = 11;}else{dectest = 1;}}//左侧开始检查是否有0 如果有就不显示(在显示单个数的函数里面设置了如果不是1-9,那么就不显示东西)

disNum(ShowNumber[1],1,ShowDec[1]);
disNum(ShowNumber[2],2,ShowDec[2]);
disNum(ShowNumber[3],3,ShowDec[3]);
disNum(ShowNumber[4],4,ShowDec[4]);
disNum(ShowNumber[5],5,ShowDec[5]);
disNum(ShowNumber[6],6,ShowDec[6]);
disNum(ShowNumber[7],7,ShowDec[7]);
disNum(ShowNumber[8],8,ShowDec[8]);
//依次显示数字,因为LED的闪烁很快,所以人眼无法识别闪烁。
}

void loop()
{
showNum(13456.8);//相对简单的函数调用
}
复制代码

顺便我有几个问题
1、LED这样用脉冲电会不会被闪坏?

2、数码管明显不能用delay(),如果我有个采集器 每10秒采集一次应该如何写这块代码?弄一个计时器?

arduino用2个74HC595点亮2个4位共阳数码管相关推荐

  1. 奥松机器人PHP,Arduino四位七段数码管 LED数码管 4位共阳数码管 显示屏模块

    产品介绍: 四位七段数码管是由一个12管脚的4位7段共阳极数码管和一个控制芯片TM1637构成,模块采用沉金工艺,外观更加美观:采用防插反接口,操作更加安全:插口一边有大写字母I表示该模块采用IIC协 ...

  2. 共阴共阳数码管(及74HC595控制)

    一.共阳数码管 共阳数码管段表  0xc0,/*0*/                             0xF9,/*1*/                             0xA4, ...

  3. Arduino 用4位共阴数码管造一个计数器

    之前已经学习过单位的数码管,现在来看看4位的数码管是如何工作的. 相对于单位的数码管, 可以看到针脚多了com1,com2,com3,com4, 但控制字符的abcdefgh针脚,仍然是只有8个, 那 ...

  4. Arduino 驱动TM1638显示十位的共阳数码管

    Arduino 驱动TM1638显示十位的共阳数码管 二话不说先上图: 这个是电路图,下面我在上传TM1638的手册 哈哈太乱了先凑合着看吧!效果是实现了,画了板还没有发过来. 我也不多说什么了上代码 ...

  5. [STM32F1]基于STM32F103实现TM1640点亮16位共阴极数码管,显示“0~F”数字

    本节我们目标是实现TM1640点亮16位共阴极数码管,显示"0~F"数字: 1. 硬件设计 GPIO初始化配置 SCL(PB6)  SDA(PB7):开漏输出,通过IO模拟驱动TM ...

  6. 74HC595驱动八段共阳数码管工程文件

    飞猫盘|文件加速传输工具|云盘|橘猫旗下新概念云平台 此文件是包括了protues文件仿真和keil文件以及cubemx文件配置 HARDWARE文件里面有关于74HC595的基本驱动代码,可移植 数 ...

  7. Arduino基础之十一 74HC595的使用------控制1位数码管

    一 硬件 74HC595是一种8位串行输入,并行输出的寄存器芯片,一共有16个引脚,如下图. 首先需要理解串行和并行的概念,这个比较容易,串行输入就是一个一个数地输入,并行输出就是8位一道输出,见下图 ...

  8. 两个74HC595驱动共阳4位段选数码管

    74HC595-串入/串并出带锁存的移位寄存器,实在是灰常magic,用它来驱动8段数码管太方便了!除了静态驱动可无限串联的一位数码管,它还能用来动态驱动4位段选数码管,而且由于串入/串并出和锁存特性 ...

  9. arduino二位数码管_用arduino和2个74HC595级联控制8位数码管显示

    初学者打出来的代码,可能不"美观",希望大家点评,多多留下意见,话不多说上代码-- 下面为8位数码管全部显示 #include "Arduino.h" void ...

最新文章

  1. 数据中心电池室管理之经济实用性方法的探索
  2. boost::multi_array模块测试各种构造函数选项
  3. AcWing 756. 蛇形矩阵
  4. 单片机和微型计算机硬件组成的异同,嵌入式和单片机的区别是什么?两者有什么联系...
  5. Filecoin官方提案FIP0013 添加批量提交ProveCommitSector以减少拥塞
  6. python并集符号_Python Union()用法及代码示例
  7. IM在线聊天-微聊即时通讯完整源码
  8. python爬取电子病历_电子病历患者查询
  9. php短信接口怎么用,php短信接口接入详细过程
  10. import settings 错误
  11. 30天自制操作系统第8天harib05c
  12. 将公式图片转word公式
  13. ”消费全返“是割韭菜,非也,广告电商引领全新“全返”模式
  14. find_element()和find_elements()的区别
  15. Oracle11g下载地址Oracle下载
  16. 【C++实现】编译原理 免考小队 FIRSTVT集生成算法
  17. 【云原生之Docker实战】使用Docker部署phpMyAdmin数据库管理工具
  18. [ctfhub.pwn] 第12-14题
  19. CentOS6 安装Tomcat7
  20. 2021.5.10(cf)

热门文章

  1. c语言空格影响编译吗,C语言的空格问题
  2. 攻防世界 Misc 功夫再高也怕菜刀 参考大佬的wp
  3. 【渝粤题库】国家开放大学2021春2114人体解剖生理学题目
  4. 二十九 我在软件园的那些日子里
  5. arm为什么不支持java_为什么在Java 7中没有为ARM改进StAX类
  6. 财会法规与职业道德【7】
  7. Ubuntu和Windows双系统服务器互相切换的简单方案
  8. 2022年N1叉车司机考试题模拟考试题库模拟考试平台操作
  9. HTML5文件夹隐藏了怎么打开,隐藏的文件夹怎么显示 打开隐藏文件夹方法【详解】...
  10. 金九银十,我不允许你们不知道这些软件测试面试题