目录

一、实验目的

二、实验设备与环境

三、实验重点

四、实验难点

五、实验内容

5.1实验任务

5.2实验原理

5.3实验内容

5.4实验结果

5.5思考题


一、实验目的

(1)掌握1位数码管模块的功能;

(2)熟悉4位数码管模块的功能;

(3)4位数码计时显示功能编程

二、实验设备与环境

Arduino UNO套件、Arduino IDE、计算机、1位数码管、4位数码管、4个220欧限流电阻、面包板、杜邦线等

三、实验重点

(1)实验电路连接;(2)编写数码显示控制程序;(3)功能调试

四、实验难点

(1)数码显示控制程序编写

五、实验内容

5.1实验任务

任务描述:1位数码显示;4位数码显示;自动计时显示

5.2实验原理

1.1位数码管

1位数码管,是由8段发光二极管(LED)封装在一起组成“8”字型加一个小数点数码显示器件,又称为LED数码管,是单片机应用最为广泛的显示器件。

图中所示数码管有8个显示笔画“a,b,c,d,e,f,g,h”,上下共10个引脚,上、下方中间引脚是公共极。公共引脚是阴极的为共阴数码管,公共引脚是阳极的为共阳数码管。共阴、共阳极数码管从外形上无法判断,可以通过公共极与任一笔画LED引脚外加3V电压点亮二极管判断,或用万用表电阻档测量判断。

共阳极1位数码管显示数字与对应各段发光LED电平对照表:

ArduinoUNO R3板与1位数码管的电路接法:

2.4位 数码管

数码管根据位数不同,其封装的引脚也各不相同。但其内部都是将单个数码管的段选线a,b,c,d,e,f,g,dp发光二极管对应连接在一起,公共极则相互独立。使用时分别通过控制不同的位选线(即单个数码管的公共极)来控制单个数码管的显示。以人眼难以分辨的速度进行刷新显示,即可达到多个数码管同时显示的效果。

四位数码管引脚分布如下图所示,其中1,2,3,4表示对应位数码管的公共极。

四位数码管电路原理图:

注:1, 2, 3, 4 引脚用于选择处理的数字位(共阴型,低电平有效;共阳极,高电平有效),是这一位数字的公共极。例如,选择数字1,则对1脚送出低电平。

选好数字后,对abcdefgh各段LED的操作与一位数码管相同。

5.3实验内容

1.实验电路搭建

共阳极数码管公共引脚串联一个限流电阻接VCC, abcdefgh各脚顺序接Arduino数字D2-D9接口。

2.1位数码管显示实验

步骤1:数码管abcdefgh管脚测试

1位数码管公共引脚接3.5V电源(或接地),其它引脚分别用杜邦线接地(或接3.5V电源),根据LED段的亮(灭)判断并识别abcdefgh的管序。

步骤2:1位数码显示控制程序编写:

// 程序控制数码管显示
int digitPin= 2; //管脚D2连接到数码管的A脚
void setup() {for(int x=0; x<=7; x++)pinMode(digitPin+x, OUTPUT);//设置D2~D9引脚为输出
}
void loop() { for (int x=0; x<16; x++) {// 每隔1秒,顺序显示0-9,A-F数字displayDigital(x); //调用    displayDigit()显示数字函数delay(1000); //等待1秒}
}
//自定义函数,数码管显示数字
void displayDigital(unsigned intdigit) {//定义一个二维数组,存储各位数字的abcdefgh取值unsigned charabcdefgh[][8] = {{0,0,0,0,0,0,1,1},//0{1,0,0,1,1,1,1,1},//1{0,0,1,0,0,1,0,1},//2{0,0,0,0,1,1,0,1},//3{1,0,0,1,1,0,0,1},//4{0,1,0,0,1,0,0,1},//5{0,1,0,0,0,0,0,1},//6{0,0,0,1,1,1,1,1},//7{0,0,0,0,0,0,1,1},//8{0,0,0,1,1,0,0,1},//9{0,0,0,1,0,0,0,1},//A{1,1,0,0,0,0,0,1},//b{0,1,1,0,0,0,1,1},//C{1,0,0,0,0,1,0,1},//d{0,1,1,0,0,0,0,1},//E{0,1,1,1,0,0,0,1}//F};if ( digit >= 16 ) return;for (unsigned intx=0; x<8; x++){digitalWrite( digitPin+ x, abcdefgh[digit][x] );}
}
// 数码管每隔一秒显示一个数字从0~9,A~F

步骤3:数码管显示测试

3.4位数码显示控制

步骤1:4位数码管管脚功能测试

4将位数码管的1、2、3、4公共引脚分别接3.5V电源(或接地),其它引脚分别用杜邦线接地(或接3.5V电源),根据LED段的亮(灭)判断并识别公共引脚控制显示位数字的abcdefgh管序。

步骤2:连接4位数码管驱动电路

根据四位数码管引脚顺序,a,b,c,d,e,f,g,h引脚分别连接开Arduino UNO R3板的数字引脚D2、D3、D4、D5、D6、D7、D8、D9。数码管的4个数字位1,2,3,4引脚分别串联220Ω限流电阻,电阻另一端分别连接开发板的数字引脚D10、D11、D12、D13。

注意:电路连线较多,检查正确无误后再通电测试,不要搭接错误!

步骤3:编写4位数码管控制程序

// 4位数码管显示示例程序
int digitalPin= 2; //D2引脚连接数码管a脚,D3连b... D9连h
int weiPin= 10; // 第一位数引脚接口
void setup() {for(int x=0; x<4; x++) {pinMode(weiPin+x, OUTPUT); //设置各位公共引脚接口为输出digitalWrite(weiPin+x, HIGH);//公共引脚高电平,}for(int x=0; x<8; x++) {pinMode(digitalPin+x, OUTPUT); //设置各段led引脚接口为输出}
}
void loop() { display(1, 3);//调用函数显示第1位数字3display(2, 2);//调用函数显示第2位数字2display(3, 1);//调用函数显示第3位数字1display(4, 0);//调用函数显示第4位数字0
}
// 定义数码管位显数字函数
void displayDigital(unsigned intdigit) {unsigned char abcdefgh[][8] = {//定义一个数组,存储不同数字的abcdefgh各段的取值{0,0,0,0,0,0,1,1},//0{1,0,0,1,1,1,1,1},//1{0,0,1,0,0,1,0,1},//2{0,0,0,0,1,1,0,1},//3{1,0,0,1,1,0,0,1},//4{0,1,0,0,1,0,0,1},//5{0,1,0,0,0,0,0,1},//6{0,0,0,1,1,1,1,1},//7{0,0,0,0,0,0,1,1},//8{0,0,0,1,1,0,0,1},//9{0,0,0,1,0,0,0,1},//A{1,1,0,0,0,0,0,1},//b{0,1,1,0,0,0,1,1},//C{1,0,0,0,0,1,0,1},//d{0,1,1,0,0,0,0,1},//E{0,1,1,1,0,0,0,1},//F{1,1,1,1,1,1,1,0},//DOT = 16{1,1,1,1,1,1,0,1},//MINUS= 17{1,1,1,1,1,1,1,1} //BLANK =18}if ( digit > 18)return;for (unsigned intx=0; x<8; x++)digitalWrite( digitalPin+ x, abcdefgh[digit][x] );
}
//指定位显示给定数字函数
void display(unsigned intwei, unsigned intdigit) {const intBLANK 18;for(int x=0; x<=3; x++) {digitalWrite(weiPin + x,LOW);// 数字位引脚置低平}displayDigital(BLANK); //调用函数关闭所有显示字段digitalWrite(weiPin +wei-1 , HIGH);//选择位显引脚,置高电平delay(1);displayDigital(digit);//调用函数位显数字字段delay(1000);//指定位的数字显示时间
}

步骤4:功能测试更改delay(ms)函数的时间参数,分别为500ms、100ms、10ms、1ms时,观察显示结果有什么不同。

4.程序扩展任务:根据以上示例,编写程序,实现一个累加计数器或累减计数器。

int digitalPin= 2;
int weiPin= 10;
int count = -1;
void setup() {for(int x=0; x<4; x++) {pinMode(weiPin+x, OUTPUT); digitalWrite(weiPin+x, HIGH);}for(int x=0; x<8; x++) {pinMode(digitalPin+x, OUTPUT);}
}
void loop() {  count++;if(count<10){display(4,count);delay(1000);}else if(count<100){for(int i=0;i<50;i++){display(3,count/10);delay(10);display(4,count%10);delay(10);}}else if(count<1000){for(int i=0;i<50;i++){display(2,count/100);delay(20/3);   display(3,count/10%10);delay(20/3);display(4,count%10);delay(20/3);}}
}
void displayDigital(unsigned int digit) {unsigned char abcdefgh[][8] = {//定义一个数组,存储不同数字的abcdefgh各段的取值{0,0,0,0,0,0,1,1},//0{1,0,0,1,1,1,1,1},//1{0,0,1,0,0,1,0,1},//2{0,0,0,0,1,1,0,1},//3{1,0,0,1,1,0,0,1},//4{0,1,0,0,1,0,0,1},//5{0,1,0,0,0,0,0,1},//6{0,0,0,1,1,1,1,1},//7{0,0,0,0,0,0,0,1},//8{0,0,0,1,1,0,0,1},//9{0,0,0,1,0,0,0,1},//A{1,1,0,0,0,0,0,1},//b{0,1,1,0,0,0,1,1},//C{1,0,0,0,0,1,0,1},//d{0,1,1,0,0,0,0,1},//E{0,1,1,1,0,0,0,1},//F{1,1,1,1,1,1,1,0},//DOT = 16{1,1,1,1,1,1,0,1},//MINUS= 17{1,1,1,1,1,1,1,1} //BLANK =18};if(digit > 18)return;for (unsigned int x=0; x<8; x++)digitalWrite( digitalPin+ x, abcdefgh[digit][x] );}//指定位显示给定数字函数
void display(unsigned int wei, unsigned int digit) {const int BLANK=18;for(int x=0; x<=3; x++) {digitalWrite(weiPin + x,LOW);// 数字位引脚置低电平}displayDigital(BLANK);    //调用函数关闭所有显示字段digitalWrite(weiPin +wei-1 , HIGH);//选择位显引脚displayDigital(digit);//调用函数位显数字字段
}

5.4实验结果

结论:本次实验1根据LED段的亮(灭)判断并识别abcdefgh的管序。实验2结果为数码依次显示0 1 2 3。实验3,实现计时器的功能,可以计时。

反思:首先,通过本次实验,我熟悉了掌握1位数码管模块的功能;熟悉4位数码管模块的功能;4位数码计时显示功能编程和各种函数的应用。其次,本次实验1根据LED段的亮(灭)判断并识别abcdefgh的管序。实验2结果为数码依次显示0 1 2 3。实验3,实现计时器的功能,可以计时。最后在本次实验中也遇到了一些问题,希望以后多学习,更加熟练,再接再厉。

作品:

5.5思考题

1.如果用一位数码管做一个掷骰子选数字,怎样实现?

2.怎样实现4位数字的同时显示?为什么?

3.如果用4位数码管完成一个分、秒的计时器,怎样在现有示例程序的基础上实现?

【Arduino实验10 数码管显示】相关推荐

  1. 【Arduino实验12 1602 LCD显示】

    目录 一.实验目的 二.实验设备与环境 三.实验重点 四.实验难点 五.实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果 5.5思考题 一.实验目的 (1)熟悉1602LCD液 ...

  2. 【Arduino】四位数码管显示

    程序名称:数码管静态显示 程序功能:四位数码管显示 程序版本:Ver 1.0 编写日期:2020/07/30 作者信息:天津科技大学创新实验室-JC /************************ ...

  3. Arduino 实现八段数码管显示练习

    晚上蛋疼,本来要做arduino的测距显示,由于老师没有设备只能用八段数码管显示~没有LED~ 今天拿出来观察了下,结果红外测距没有导线 -.- 只好拿数码管练练手 设备:ARDUINO 2009 D ...

  4. 实验四 数码管显示设计与仿真

    4.1实验目的 熟练掌握组合逻辑电路的设计.掌握不定位宽乘法器以及7段数码管(不带小数点)显示原理.实现并仿真: 1)4位乘法器及数码管显示: 4.2实验内容 (1)设计4位乘法器,并将被乘数,乘数, ...

  5. 【Arduino实验11 LED点阵屏显示】

    目录 一.实验目的 二.实验设备与环境 三.实验重点 四.实验难点 五.实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果 5.5思考题 一.实验目的 1熟悉8*8点阵屏的原理与 ...

  6. Arduino实验二十 数码管实验

    学习任务: 学会使用数码管 组件: Arduion主板 数码管 杜邦线 面包板 USB数据线 下图是数码管 实验步骤: 1.建立电路 Arduion 数码管 2 CLK 3 DIO 3.3v + GN ...

  7. 汇编语言随笔(8)-实验9(显示字符串)、实验10(子程序:除法溢出,数值到字符串的转换)和课程设计1

    实验9 编程,在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串'welcome to masm!'.       80x25彩色字符模式下的显示缓冲区,每页可以显示25行,每行80个字符,其中每个字 ...

  8. 汇编语言:实验10 根据材料编程—1.显示字符串

    问题描述 显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能. 我们应该提供灵活的调用接口,使调用者可以决定显示的位置(行.列).内容和颜色. 实验效果 将字符串展示到8行 ...

  9. Arduino UNO驱动TM1637四位时钟数码管显示时间

    Arduino UNO驱动TM1637四位时钟数码管显示时间 一.TM1637简介 二.引脚定义 三.Arduino UNO与数码管模块接线 四.测试代码 五.实验结果 一.TM1637简介 TM16 ...

最新文章

  1. TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别
  2. web -httpd
  3. gradle转maven
  4. matlab 除噪点,MATLAB应用在基于噪声检测的图像均值去噪法
  5. 抖音城市美食算数报告
  6. SpringBoot+JWT整合-解决登陆验证问题
  7. 两个局域网如何互联_如何申请使用三大航司的机上wifi服务?
  8. windows xp中安装PadWalker
  9. WEB前端开发工程师 学习第二天 边框
  10. uni-app 中通过 async + await + Promise 实现 request 请求同步化
  11. android开源播放器代码,github上十二款最著名的Android播放器开源项目
  12. 工程测量计算机在线用,工程测量中的计算机编程新技术.doc
  13. ICP算法学习笔记(原理加公式理解)
  14. 对于拖延症的最好方法
  15. 《谁说菜鸟不会数据分析》数据处理 之 数据清洗--重复数据的处理
  16. android zip格式的ndk,Android 使用NDK (JNI)容易解压7z压缩文件
  17. 开源 Python IDE PyScripter设置中文界面
  18. 人生需要认真思考的一些故事
  19. DIY USB3.0 SM2246XT+双贴闪迪15131颗粒256G固态U盘
  20. 宝利通group终端升级指导书

热门文章

  1. 鸽了亿下下的游记——2022 GDOI普及组游记
  2. 关于NetCore+饿了么开放平台+奇门+聚石塔对接的解释说明
  3. 北大青鸟消防控制器组网_北大青鸟消防报警主机维修与调试
  4. 人工智能的发展方向与机遇
  5. Fly-小学妹都喜欢的Go后端项目
  6. 手机通过IPV6访问电脑共享文件
  7. 高等教育学备考:教育学概述
  8. 自定义iTerm2主题配置(iTerm2-Color-Schemes)
  9. 在hbase shell中执行list抛出异常:ERROR: No valid credentials provided
  10. UIautomator2:APP自动化测试方法与小技巧记录(文末附实用APP测试脚本编写模板)