实验十七:四位数码管

这次我们进行的实验是使用arduino 驱动一块共阴四位数码管。驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4 颗。这种接法好处是需求电阻比较少,但是会产生每一位上显示不同数字亮度会不一样,1 最亮,8 最暗。另外一种接法就是在其他8 个引脚上接,这种接法亮度显示均匀,但是用电阻较多。本次实验使用8 颗220Ω 电阻(因为没有100Ω 电阻,所以使用220Ω的代替,100 欧姆亮度会比较高)。

4 位数码管总共有12 个引脚,小数点朝下正放在面前时,左下角为1,其他管脚顺序为逆时针旋转。左上角为最大的12 号管脚。

下图为数码管的说明手册

实验接线图


参考源程序:
//显示1234
//设置阴极接口
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int dp = 8;
//设置阳极接口
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
//设置变量
long n = 1230;
int x = 100;
int del = 55; //此处数值对时钟进行微调
void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
}
/
void loop()
{
Display(1, 1);
Display(2, 2);
Display(3, 3);
Display(4, 4);
}
///
void WeiXuan(unsigned char n)//
{
switch(n)
{
case 1:
digitalWrite(d1,LOW);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 2:
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 3:
digitalWrite(d1,HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(d4, HIGH);
break;
case 4:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
break;
default :
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
}
}
void Num_0()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_1()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_2()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_3()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_4()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_5()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_6()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_7()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_8()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_9()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Clear() //清屏
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void pickNumber(unsigned char n)//选数
{
switch(n)
{
case 0:Num_0();
break;
case 1:Num_1();
break;
case 2:Num_2();
break;
case 3:Num_3();
break;
case 4:Num_4();
break;
case 5:Num_5();
break;
case 6:Num_6();
break;
case 7:Num_7();
break;
case 8:Num_8();
break;
case 9:Num_9();
break;
default:Clear();
break;
}
}
void Display(unsigned char x, unsigned char Number)//显示x 为坐标,Number 为数字
{
WeiXuan(x);
pickNumber(Number);
delay(1);
Clear() ; //消影
}


实验效果

把下面代码复制下载到控制板中,看看效果图。

实验结果为数码管显示1234 ,
注意:连接的时候需要耐心,认真,不要连错任何线,当出现乱码时,要先检查线路。谢谢!

程序代码

 //设置阴极接口int a = 1;int b = 2;int c = 3;int d = 4;int e = 5;int f = 6;int g = 7;int dp = 8;//设置阳极接口int d4 = 9;int d3 = 10;int d2 = 11;int d1 = 12;//设置变量long n = 1230;int x = 100;int del = 55;  //此处数值对时钟进行微调void setup(){pinMode(d1, OUTPUT);pinMode(d2, OUTPUT);pinMode(d3, OUTPUT);pinMode(d4, OUTPUT);pinMode(a, OUTPUT);pinMode(b, OUTPUT);pinMode(c, OUTPUT);pinMode(d, OUTPUT);pinMode(e, OUTPUT);pinMode(f, OUTPUT);pinMode(g, OUTPUT);pinMode(dp, OUTPUT);}
/
void loop()
{Display(1, 1);Display(2, 2);Display(3, 3);Display(4, 4);}
///
void WeiXuan(unsigned char n)//
{switch(n){case 1: digitalWrite(d1,LOW);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);   break;case 2: digitalWrite(d1, HIGH);digitalWrite(d2, LOW);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH); break;case 3: digitalWrite(d1,HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, LOW);digitalWrite(d4, HIGH); break;case 4: digitalWrite(d1, HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, LOW); break;default :digitalWrite(d1, HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);break;}
}
void Num_0()
{digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, LOW);digitalWrite(dp,LOW);
}
void Num_1()
{digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW);
}
void Num_2()
{digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, LOW);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, LOW);digitalWrite(g, HIGH);digitalWrite(dp,LOW);
}
void Num_3()
{digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, HIGH);digitalWrite(dp,LOW);
}
void Num_4()
{digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW);
}
void Num_5()
{digitalWrite(a, HIGH);digitalWrite(b, LOW);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW);
}
void Num_6()
{digitalWrite(a, HIGH);digitalWrite(b, LOW);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW);
}
void Num_7()
{digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW);
}
void Num_8()
{digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW);
}
void Num_9()
{digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW);
}
void Clear()  //清屏
{digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW);
}
void pickNumber(unsigned char n)
{switch(n){case 0:Num_0();break;case 1:Num_1();break;case 2:Num_2();break;case 3:Num_3();break;case 4:Num_4();break;case 5:Num_5();break;case 6:Num_6();break;case 7:Num_7();break;case 8:Num_8();break;case 9:Num_9();break;default:Clear();break; }
}
void Display(unsigned char x, unsigned char Number)
{WeiXuan(x);pickNumber(Number);delay(1);Clear() ;
}

Ardino基础教程 17_四位数码管相关推荐

  1. Ardino基础教程 16_一位数码管

    实验十六:一位数码管 数码管是一种常见的普遍的显示数字的显示器件,日常生活中例如:电磁炉,全自动洗衣机,太阳能水温显示,电子钟--等等数不甚数.说以掌握数码管的显示原理,是很有必要的. 数码管是一种半 ...

  2. Ardino基础教程 19_舵机控制

    实验十九:舵机控制 舵机控制实验Servo库版本的代码参考如下链接:ArduinoCode19-舵机控制Servo库版本代码.ino 舵机是一种位置伺服的驱动器,主要是由外壳.电路板.无核心马达.齿轮 ...

  3. Ardino基础教程 15_火焰报警器

    实验十五:火焰报警器 认识火焰传感器 火焰传感器(即红外接收三极管)是机器人专门用来搜寻火源的传感器,本传感器对火焰特别灵敏.实物如图: 火焰传感器利用红外线对火焰非常敏感的特点,使用特制的红外线接收 ...

  4. Ardino基础教程 14_倾斜开关

    实验十四:倾斜开关 倾斜开关控制led灯的亮灭 实验器材清单 滚珠开关 1个 LED灯 1个 220欧姆直插电阻 1个 面包板 1个 面包板跳线 1扎 实验接线图 按照Arduino教程将控制板.扩展 ...

  5. Ardino基础教程 2_LED闪烁实验

    实验二:LED 闪烁实验 LED 小灯实验是比较基础的实验之一,上一个" Hello World!"实 验里已经利用到了Arduino 自带的LED,这次我们利用其他I/O 口和 ...

  6. Ardino基础教程 25_8X8LED点阵

    实验二十五:8X8LED点阵 点阵实验另一版本代码参考如下链接下载:ArduinoCode25-8X8LED点阵num.ino 点阵在我们生活中很常见,很多都有用到他,比如LED 广告显示屏,电梯显示 ...

  7. Ardino基础教程 24_RGB全彩LED

    实验二十四:RGB全彩LED 使用三色全彩LED 制造 显示原理,其实原理是在一棵LED 灯里,有三种颜色的灯,红,绿,蓝.每种颜色的灯上的驱动电压不一样,亮度就不一样,它们组合在一起,就形成了各种颜 ...

  8. Ardino基础教程 23_步进电机

    实验二十三:步进电机 步进电机是一种将电脉冲转化为角位移的执行机构.通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角).你可以通过控制脉冲个数来控制 ...

  9. Ardino基础教程 22_PS2摇杆

    PS2摇杆 PS2 摇杆一般可以用来控制小车等等,其构造主要就是两个10K 的电位器,还有一个按键开关.五个端口分别为VCC,X,Button,Y,GND. 实验接线图 以下为参考程序代码: #inc ...

最新文章

  1. 如何在DataGrid里面使用动态图形表示数字
  2. 全球最大规模学术不端调查显示,53%的博士生会从事有问题的研究
  3. YOLOV5 的小目标检测网络结构优化方法汇总(附代码)
  4. iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误
  5. 设置tomcat远程debug
  6. ai与虚拟现实_将AI推向现实世界
  7. Linux系统检查查看桌面环境
  8. 云联惠身份认证需要多长时间_欧盟REACH认证需要多长时间【周期、费用、有效期】...
  9. python从小到大的顺序输出_「小白专栏」Python中使用for循环,为什么输出结果不是按顺序?...
  10. android 三个按钮联动,Android之嵌套联动三:CollapsingToolbarLayout+Toolbar
  11. java滑动窗体动画_java – 为布局滑入和滑出动画
  12. 【leetcode】Remove Duplicates from Sorted Array
  13. servlet中filter的的异步问题以及JSP与servlet配合时filter的注意
  14. 像数据科学家一样思考:12步指南(上) 1
  15. Yii2修改默认控制器
  16. 怎么在html中加入网上的图片,css中如何插入图片?
  17. mysql插件的初始化
  18. 琵琶行用计算机弹,琵琶行中的三次弹奏
  19. Android手机电池耐用吗,手机电池是否还耐用?一招教你识别
  20. Apache POI 合并单元格

热门文章

  1. 5.2.4.最简单的模块源码分析3
  2. 持续集成之jenkins基础
  3. 设计模式之装饰模式20170726
  4. 【python之路24】装饰器
  5. win7访问windows server 2003服务器出现未知的用户名或者错误的密码(转载)
  6. 一位程序员的奋斗历程!------转载
  7. 修改已经打开的对话框的浏览路径
  8. Simple Introduction to Dirichlet Process
  9. linux 内核探测kprobe 初步了解
  10. Three.js 入门示例