1位数码管模拟值实验萌新速成大法

1.前言

这个实验教程献给所有大一想努力的新手

2.欣赏成果

共阳数码管模拟值实验成果

3.安装对应软件

首先先安装对应软件Arduino

网址arduino.cc/en/software

4.学习软件的使用

安装结束,我们进入首页选择我们对应的开发板Arduino UNO

在这里插入图片描述

选择之后就会将UNO开发板作为默认**(UNO开发板适合初学者简单易上手)**

在这里插入图片描述

并将开发板连接到电脑**(注意:后面一定带有后缀,我前面买的盗版无法识别就没有后缀)**

如果没有出现开发板(com)请检查链接器是否连接好或者开发板是否接触不良

5.知识准备

i++

需要先保存变量的原始值到临时空间,再对变量自增,最后返回临时值(多一步临时值操作)

delay(1000)

是将函数延迟1000毫秒

digitalWrite(a,LOW);

如果该引脚通过pinMode()设置为输出模式(OUTPUT),您可以通过digitalWrite()语句将该引脚设置为HIGH(5伏特)或LOW(0伏特/GND)。

pinMode(i,OUTPUT);

通过pinMode()函数,你可以将Arduino的引脚配置为以下三种模式:
输出(OUTPUT)模式
输入(INPUT)模式
输入上拉(INPUT_PULLUP)模式

6.准备道具

一个面包板
八个220欧姆电阻
一个共阳极管

道具介绍
在这里插入图片描述

共阳数码管

是指将所有发光二极管的阳极接到一起形成公共阳极 (COM) 的数码管,共阳数码管在应用时应将公共极 COM 接到 + 5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管

是指将所有发光二极管的阴极接到一起形成公共阴极 COM) 的数码管,共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮
我们本次实验使用共阳极管
在这里插入图片描述

7.代码

int a = 2; // 定义数字接口2 连接a
int b = 3; // 定义数字接口3 连接b
int c = 4; // 定义数字接口4 连接c
int d = 5; // 定义数字接口5 连接d
int e = 6; // 定义数字接口6 连接e
int f = 7; // 定义数字接口7 连接f
int g = 8; // 定义数字接口8 连接g
int h = 9; // 定义数字接口9 连接h,也就是数码管中的dp

void setup() {
  // put your setup code here, to run once:
  int i;
  for(i=2;i<=9;i++){
    pinMode(i,OUTPUT); // 设置2~9号引脚为输出模式
  }
} 

void loop() {
  // put your main code here, to run repeatedly:
  digital_0(); // 显示数字0
  delay(1000);
  digital_1(); // 显示数字1
  delay(1000);
  digital_2(); // 显示数字2
  delay(1000);
  digital_3(); // 显示数字3
  delay(1000);
  digital_4(); // 显示数字4
  delay(1000);
  digital_5(); // 显示数字5
  delay(1000);
  digital_6(); // 显示数字6
  delay(1000);
  digital_7(); // 显示数字7
  delay(1000);
  digital_8(); // 显示数字8
  delay(1000);
  digital_9(); // 显示数字9
  delay(1000);
} 

// 显示数字0(电平反转:适配共阳极)
void digital_0(void){
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,HIGH);
  digitalWrite(h,LOW);
} 

// 显示数字1(电平反转)
void digital_1(void){
  digitalWrite(a,HIGH);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  digitalWrite(h,LOW);
} 

// 显示数字2(电平反转)
void digital_2(void){
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,HIGH);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,HIGH);
  digitalWrite(g,LOW);
  digitalWrite(h,LOW);
} 

// 显示数字3(电平反转)
void digital_3(void){
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,LOW);
  digitalWrite(h,LOW);
} 

// 显示数字4(电平反转)
void digital_4(void){
  digitalWrite(a,HIGH);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  digitalWrite(h,LOW);
} 

// 显示数字5(电平反转)
void digital_5(void){
  digitalWrite(a,LOW);
  digitalWrite(b,HIGH);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,HIGH);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  digitalWrite(h,LOW);
} 

// 显示数字6(电平反转)
void digital_6(void){
  digitalWrite(a,LOW);
  digitalWrite(b,HIGH);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  digitalWrite(h,LOW);
} 

// 显示数字7(电平反转)
void digital_7(void){
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  digitalWrite(h,LOW);
} 

// 显示数字8(电平反转)
void digital_8(void){
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  digitalWrite(h,LOW);
} 

// 显示数字9(电平反转)
void digital_9(void){
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,HIGH);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  digitalWrite(h,LOW);
}

接下验证 ,左上角的勾是验证符号

在这里插入图片描述

查看是否验证成功,然后上传

在这里插入图片描述

上传成功就可以欣赏到开头的结果了

8.心得

我认为这是个新的开始我也遇到了很多问题(见下面),但是当我成功做出来了后感到非常自豪,所以我认为在这个时代人类要不断走出自己的舒适圈,才能前进,如果觉得有帮助就请点一下赞,我火速更新下一章,我是FOX,励志做一个博学的萌新。

9.花絮

在看到代码的时候,我就已经在想代码有什么可以修改的了,于是这些问题就诞生了

我可否将代码与数组结合?

int nums[]{2,3,4,5,6,7,8,9};
const int SEGMENT_COUNT =8;
byte guan[10][8]={
{HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW,HIGH},    // 0(8个元素)
  {LOW,HIGH,HIGH,LOW,LOW,LOW,LOW,HIGH},        // 1(8个元素)
  {HIGH,HIGH,LOW,HIGH,HIGH,LOW,HIGH,HIGH},     // 2(8个元素)
  {HIGH,HIGH,HIGH,HIGH,LOW,LOW,HIGH,HIGH},     // 3(8个元素)
  {LOW,HIGH,HIGH,LOW,LOW,HIGH,HIGH,HIGH},      // 4(8个元素)
  {HIGH,LOW,HIGH,HIGH,LOW,HIGH,HIGH,HIGH},     // 5(8个元素)
  {HIGH,LOW,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH},    // 6(8个元素)
  {HIGH,HIGH,HIGH,LOW,LOW,LOW,LOW,HIGH},       // 7(8个元素)
  {HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH},   // 8(8个元素)
  {HIGH,HIGH,HIGH,HIGH,LOW,HIGH,HIGH,HIGH}     // 9
};
void setup(){
  for(int i=0;i<SEGMENT_COUNT;i++){
    pinMode(nums[i],OUTPUT);
  }
}
void loop(){
  for(int s=0;s<SEGMENT_COUNT;s++){
    displayNumber(s);
delay(1000);

  }
}
void displayNumber(int d){
  if(d<0||d>9){
  return;
  }
  for(d=0;d<9;d++){
  digitalWrite(nums[i],guan[d][i]);
}
}

知识补充

  1. 段引脚数组
    nums:把原来分散定义的 a-h 引脚整合到一
    个数组中,方便循环操作,减少重复代码。
  2. 段码表
    guan

    二维数组,第一维表示数字(0-9),第二维表示对应段
    的电平
    把原来 10 个函数里的电平值集中存储,一目了然,修改
    时只需改数组值
  3. 通用显示函数
    displayNumber()

    接收数字参数,先做范围检查(避免数组越界)
    通过循环遍历段引脚和段码,自动设置每个引脚的电平
  4. 简化的 loop 函数:用一个 for 循环遍历 0-9,调用通用显示
    函数,替代原来重复调用 10 个函数的写法

1. 二维数组定义格式:

数据类型 数组名[行数][列数],比如
nums[3][4]。
2. 访问元素格式:
int
数组名[行下标][列下标],下标从 0 开始计
数。
3. 遍历二维数组通常用嵌套 for 循环,外层控行、内层控列。

想法二:我一开始以为它是阴极管
结果就是一直不亮,最后我直接去问豆包,,然后发现我买的是阳极管,直接裂开,阴极管和阳极管一定要看好啊,阴极管就接GND引脚接口,如果是阳极管就接5V,一定要分清楚!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值