arduino 8段数码管,arduino 8段数码管

arduino 8段数码管,arduino 8段数码管,arduino 8段数码管

arduino例子,今天学习数码管:

线连接图:

 

 

 

 

 

 

显示的效果是数字从1 到8 ,每间隔2秒换一次

代码如下:

 

//设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。
int a=7;
int b=6;
int c=5;
int d=11;
int e=10;
int f=8;
int g=9;
int dp=4;
//显示数字1
void digital_1(void){
  digitalWrite(c,LOW);//给数字5引脚低电平,点亮c段
  digitalWrite(b,LOW);//点亮b段
  //熄灭其余段
  for(int j=7;j<=11;j++){
    digitalWrite(j,HIGH);
  }
  digitalWrite(dp,HIGH);//熄灭小数点DP段
}
//显示数字2
void digital_2(void){
  digitalWrite(b,LOW);
  digitalWrite(a,LOW);
  for(int j=9;j<=11;j++){
    digitalWrite(j,LOW);
  }
  digitalWrite(dp,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(f,HIGH);
}
//显示数字3
void digital_3(void){
  digitalWrite(g,LOW);
  digitalWrite(d,LOW);
  for(int j=5;j<=7;j++){
    digitalWrite(j,LOW);
  }
  digitalWrite(dp,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(e,HIGH);
}
//显示数字4
void digital_4(void){
  digitalWrite(c,LOW);
  digitalWrite(b,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  digitalWrite(dp,HIGH);
  digitalWrite(a,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(d,HIGH);   
}
//显示数字5
void digital_5(void){
  for(int j=7;j<=9;j++){
    digitalWrite(j,LOW);
  }
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(dp,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(e,HIGH); 
}
//显示数字6
void digital_6(void){
  for(int j=7;j<=11;j++){
    digitalWrite(j,LOW);
  }
  digitalWrite(c,LOW);
  digitalWrite(dp,HIGH);
  digitalWrite(b,HIGH);   
}
//显示数字7
void digital_7(void){
  int  j;
  for(j=5;j<=7;j++){
    digitalWrite(j,LOW);
  }
  digitalWrite(dp,HIGH);{
  for(j=8;j<=11;j++)
    digitalWrite(j,HIGH);
  }
}
//显示数字8
void digital_8(){
  for(int j=5;j<=11;j++){
    digitalWrite(j,LOW);
  }
  digitalWrite(dp,HIGH);
}
 
//显示dian
void digital_dian(void){
  digitalWrite(dp,LOW);
}
void setup(){
  for(int i=4;i<=11;i++)
    pinMode(i,OUTPUT);//设置4~11引脚为输出模式
}
void loop(){  
    digital_1();//数字1
    delay(2000);//延时2s
    digital_2();
    delay(2000);
    digital_3();
    delay(2000);
    digital_4();
    delay(2000);
    digital_5();
    delay(2000);
    digital_6();
    delay(2000);
    digital_7();
    delay(2000);
    digital_8();
    delay(2000);   
    digital_dian();
    delay(2000);
}

 

,最终效果如下图显示:

  • 大小: 1.3 MB
  • 大小: 121.6 KB
  • 大小: 55.4 KB
数码管是一种常见的显示设备,通常用于显示数字和一些字母。Arduino是一款开源的单片机平台,广泛应用于各种电子项目中。结合八数码管Arduino,可以实现许多有趣的实验和创新项目。以下是一些可能的实验和创新方向: ### 实验步骤 1. **硬件连接**: - 将八数码管的每个(A-G和DP)通过限流电阻连接到Arduino的数字引脚。 - 将八数码管的公共端(通常是共阳或共阴)连接到Arduino的GND或5V。 2. **编写代码**: - 使用Arduino IDE编写代码,定义每个对应的引脚。 - 编写函数来控制每个的亮灭,从而显示不同的数字和字母。 3. **测试和调试**: - 上传代码到Arduino板子上,观察八数码管显示情况。 - 根据需要调整代码和硬件连接,确保显示正确。 ### 创新项目 1. **数字时钟**: - 使用DS3231实时时钟模块获取当前时间,通过八数码管显示小时和分钟。 - 添加按钮用于设置时间。 2. **温度显示器**: - 使用DHT11或DHT22温度传感器获取当前温度,通过八数码管显示温度值。 - 可以添加蜂鸣器,当温度超过设定值时发出警报。 3. **计数器**: - 使用按钮作为输入,每次按下按钮时,八数码管显示的数字加一。 - 可以设置上限值,达到上限后自动清零。 4. **游戏**: - 制作一个简单的数字游戏,例如猜数字游戏。Arduino随机生成一个数字,玩家通过按钮输入猜测的数字,八数码管显示提示信息。 ### 示例代码 ```cpp // 定义八数码管连接的引脚 const int segmentA = 2; const int segmentB = 3; const int segmentC = 4; const int segmentD = 5; const int segmentE = 6; const int segmentF = 7; const int segmentG = 8; const int segmentDP = 9; // 数字0-9对应的码 const byte numTable[10] = { 0b00111111, // 0 0b00000110, // 1 0b01011011, // 2 0b01001111, // 3 0b01100110, // 4 0b01101101, // 5 0b01111101, // 6 0b00000111, // 7 0b01111111, // 8 0b01101111 // 9 }; void setup() { // 初始化八数码管为输出 pinMode(segmentA, OUTPUT); pinMode(segmentB, OUTPUT); pinMode(segmentC, OUTPUT); pinMode(segmentD, OUTPUT); pinMode(segmentE, OUTPUT); pinMode(segmentF, OUTPUT); pinMode(segmentG, OUTPUT); pinMode(segmentDP, OUTPUT); } void displayNumber(int num) { if (num < 0 || num > 9) return; byte segments = numTable[num]; digitalWrite(segmentA, segments & 0b00000001); digitalWrite(segmentB, segments & 0b00000010); digitalWrite(segmentC, segments & 0b00000100); digitalWrite(segmentD, segments & 0b00001000); digitalWrite(segmentE, segments & 0b00010000); digitalWrite(segmentF, segments & 0b00100000); digitalWrite(segmentG, segments & 0b01000000); digitalWrite(segmentDP, segments & 0b10000000); } void loop() { for (int i = 0; i < 10; i++) { displayNumber(i); delay(1000); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值