实验十六:一位数码管

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

数码管是一种半导体发光器件,其基本单元是发光二极管。数
码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),本实验所使用的是八段数码管。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM 接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。

数码管的每一段是由发光二极管组成,所以在使用时跟发光二极管一样,也要连接限流电阻,否则电流过大会烧毁发光二极管的。本实验用的是共阴极的数码管,共阴数码管在应用时应将公共极接到GND,当某一字段发光二极管的阳极为低电平时,相应字段就点熄灭。当某一字段的阳极为高电平时,相应字段就点亮。

实验器材清单

介绍完原理,我们开始准备实验用元器件。

  1. 一位八段数码管 1个
  2. 220欧姆直插电阻 8个
  3. 面包板 1个
  4. 面包板跳线 1扎

实验原理图



数码管共有七段显示数字的段,还有一个显示小数点的段。当让数码管显示数字时,只要将相应的段点亮即可。例如:让数码管显示数字1,则将b、c 段点亮即可。将每个数字写成一个子程序。在主程中每隔2s 显示一个数字,让数码管循环显示1~8 数字。每一个数字显示的时间由延时时间来决定,时间设置的大些,显示的时间就长些,时间设置的小些,显示的时间就短。


参考程序源代码:
//设置控制各段的数字IO 脚
int a=7;//定义数字接口7 连接a 段数码管
int b=6;// 定义数字接口6 连接b 段数码管
int c=5;// 定义数字接口5 连接c 段数码管
int d=10;// 定义数字接口10 连接d 段数码管
int e=11;// 定义数字接口11 连接e 段数码管
int f=8;// 定义数字接口8 连接f 段数码管
int g=9;// 定义数字接口9 连接g 段数码管
int dp=4;// 定义数字接口4 连接dp 段数码管
void digital_0(void) //显示数字5
{
unsigned char j;
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 digital_1(void) //显示数字1
{
unsigned char j;
digitalWrite(c,HIGH);//给数字接口5 引脚高电平,点亮c 段
digitalWrite(b,HIGH);//点亮b 段
for(j=7;j<=11;j++)//熄灭其余段
digitalWrite(j,LOW);
digitalWrite(dp,LOW);//熄灭小数点DP 段
}
void digital_2(void) //显示数字2
{
unsigned char j;
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
for(j=9;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
}
void digital_3(void) //显示数字3
{
digitalWrite(g,HIGH);
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(dp,LOW);
digitalWrite(f,LOW);
digitalWrite(e,LOW);
}
void digital_4(void) //显示数字4
{
digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
digitalWrite(a,LOW);
digitalWrite(e,LOW);
digitalWrite(d,LOW);
}
void digital_5(void) //显示数字5
{
unsigned char j;
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 digital_6(void) //显示数字6
{
unsigned char j;
for(j=7;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(c,HIGH);
digitalWrite(dp,LOW);
digitalWrite(b,LOW);
}
void digital_7(void) //显示数字7
{
unsigned char j;
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
for(j=8;j<=11;j++)
digitalWrite(j,LOW);
}
void digital_8(void) //显示数字8
{
unsigned char j;
for(j=5;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
}
void digital_9(void) //显示数字5
{
unsigned char j;
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 setup()
{
int i;//定义变量
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);//设置4~11 引脚为输出模式
}
void loop()
{
while(1)
{
digital_0();//显示数字1
delay(1000);//延时1s
digital_1();//显示数字1
delay(1000);//延时1s
digital_2();//显示数字2
delay(1000); //延时1s
digital_3();//显示数字3
delay(1000); //延时1s
digital_4();//显示数字4
delay(1000); //延时1s
digital_5();//显示数字5
delay(1000); //延时1s
digital_6();//显示数字6
delay(1000); //延时1s
digital_7();//显示数字7
delay(1000); //延时1s
digital_8();//显示数字8
delay(1000); //延时1s
digital_9();//显示数字8
delay(1000); //延时1s
}
}


实验现象

数码管显示0-9 循环显示。

程序代码

int a=7;//定义数字接口7 连接a 段数码管
int b=6;// 定义数字接口6 连接b 段数码管
int c=5;// 定义数字接口5 连接c 段数码管
int d=10;// 定义数字接口10 连接d 段数码管
int e=11;// 定义数字接口11 连接e 段数码管
int f=8;// 定义数字接口8 连接f 段数码管
int g=9;// 定义数字接口9 连接g 段数码管
int dp=4;// 定义数字接口4 连接dp 段数码管
void digital_0(void) //显示数字5
{
unsigned char j;
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 digital_1(void) //显示数字1
{
unsigned char j;
digitalWrite(c,HIGH);//给数字接口5 引脚高电平,点亮c 段
digitalWrite(b,HIGH);//点亮b 段
for(j=7;j<=11;j++)//熄灭其余段
digitalWrite(j,LOW);
digitalWrite(dp,LOW);//熄灭小数点DP 段
}
void digital_2(void) //显示数字2
{
unsigned char j;
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
for(j=9;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
}
void digital_3(void) //显示数字3
{
digitalWrite(g,HIGH);
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(dp,LOW);
digitalWrite(f,LOW);
digitalWrite(e,LOW);
}
void digital_4(void) //显示数字4
{
digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
digitalWrite(a,LOW);
digitalWrite(e,LOW);
digitalWrite(d,LOW);
}
void digital_5(void) //显示数字5
{
unsigned char j;
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 digital_6(void) //显示数字6
{
unsigned char j;
for(j=7;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(c,HIGH);
digitalWrite(dp,LOW);
digitalWrite(b,LOW);
}
void digital_7(void) //显示数字7
{
unsigned char j;
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
for(j=8;j<=11;j++)
digitalWrite(j,LOW);
}
void digital_8(void) //显示数字8
{
unsigned char j;
for(j=5;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
}
void digital_9(void) //显示数字5
{
unsigned char j;
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 setup()
{
int i;//定义变量
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);//设置4~11 引脚为输出模式
}
void loop()
{
while(1)
{
digital_0();//显示数字1
delay(1000);//延时1s
digital_1();//显示数字1
delay(1000);//延时1s
digital_2();//显示数字2
delay(1000); //延时1s
digital_3();//显示数字3
delay(1000); //延时1s
digital_4();//显示数字4
delay(1000); //延时1s
digital_5();//显示数字5
delay(1000); //延时1s
digital_6();//显示数字6
delay(1000); //延时1s
digital_7();//显示数字7
delay(1000); //延时1s
digital_8();//显示数字8
delay(1000); //延时1s
digital_9();//显示数字8
delay(1000); //延时1s
}
}

Ardino基础教程 16_一位数码管相关推荐

  1. Ardino基础教程 17_四位数码管

    实验十七:四位数码管 这次我们进行的实验是使用arduino 驱动一块共阴四位数码管.驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4 颗.这种接法好处是需求 ...

  2. Ardino基础教程 25_8X8LED点阵

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

  3. Ardino基础教程 21_LCD1602液晶屏

    实验二十一:LCD1602液晶屏 本次试验使用arduino 直接驱动1602 液晶显示文字 1602 液晶在应用中非常广泛,最初的1602 液晶使用的HD44780 控制器,现在各个厂家的1602 ...

  4. Ardino基础教程 20_红外遥控

    实验二十:红外遥控 库文件下载链接:ArduinoCode20-红外遥控库代码.zip 注意:把 IRremote 文件夹放到 编译器安装目录下的\Arduino\libraries里.不然编译不过. ...

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

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

  6. Ardino基础教程 18_驱动74HC595

    实验十八:驱动74HC595 概述: 74HC595 是一款漏极开路输出的CMOS 移位寄存器,输出端口为可控的三态输出端,亦能串行输出控制下一级级联芯片. 特点: 管脚图: 管脚说明: 74HC59 ...

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

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

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

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

  9. Ardino基础教程 8_模拟值

    实验八:模拟值 本个实验我们就来开始学习一下模拟I/O 接口的使用,Arduino 有 模拟A0-模拟A5 共计6 个模拟接口,这6 个接口也可以算作为接口功能复用,除模拟接口功能以外,这6 个接口可 ...

最新文章

  1. tcpdump-根据IP查看程序与服务都用了哪些端口
  2. 怎么调节手机的刷新率_高刷新率屏幕为何开始流行起来?
  3. matlab从入门到精通:图像可视化基础操作
  4. [转]XNA 3.1 转换到 XNA4.0 的备忘录
  5. C++二维数组按行遍历和按列遍历的区别
  6. 最简单的 SAP Cloud Application programming CDS 练习
  7. S3C6410移植u-boot-2010.3(2)基本的启动信息修改
  8. CSS3 Media Query实现响应式Web设计(针对不同移动设备宽度)
  9. 右上角鼠标滑过展开收缩动画效果js代码的演示页面
  10. [转]bss,data,rodata,text
  11. idea工具修改Git路径
  12. POP介绍与使用实践(快速上手动画)
  13. [Android移动安全渗透基础教程] 模拟器篇
  14. 2012年中国大学最新排名
  15. 超级玛丽跳 时间的优化
  16. 2012考研计划时间安排表
  17. 乱炖“简书交友”数据之代码(1)
  18. vscode中选中多行多光标进行操作及一些常用的命令(快捷键)
  19. 帆布指纹识别(canvas fingerprinting)
  20. 电路板设计时的注意事项

热门文章

  1. 特殊的IP地址与端口
  2. 文本分类 特征选取之CHI开方检验
  3. UA MATH571B 试验设计VI 随机效应与混合效应4 裂区设计
  4. Matlab数据类型学习图解
  5. C# Image 学习总结
  6. Win32 汇编语句模板
  7. 图解内存搜索工具初步使用
  8. easyui左侧导航菜单右侧载入百度地图项目框架
  9. SpringBoot入门和配置
  10. opencv setTo()