【Arduino22】4位数码管模拟值实验

硬件准备

4位数码管:1 个

1K欧电阻:4个

杜邦线:12根

面包板:1块

硬件连线

1、用1K欧电阻分别接到数码管的位引脚

2、将数码管的12个引脚接到开发板上

软件程序

//静态程序(静态显示1234)

const char num_array[10] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 };  //数字0~9
const char Temp[4] = { 0xF9, 0xA4, 0xB0, 0x99 };                                            //缓冲数组,1~4

int val = 0;  //位变量

/*引脚*/
const char seg_pins[4] = { 13, 7, 5, 2 };             //位
const char led_pins[8] = { 11, 3, 6, 10, 12, 9, 4 };  //段

/*函数声明*/
void Init();
void display();

void setup() {
  Serial.begin(9600);
  for (int i; i < 4; i++) {
    pinMode(seg_pins[i], OUTPUT);
  }

  for (int i; i < 8; i++) {
    pinMode(led_pins[i], OUTPUT);
  }
}

void loop() {
  Init();
  display();
}

/*初始化*/
void Init() {
  for (int i = 0; i < 4; i++) {
    digitalWrite(seg_pins[i], LOW);
  }
  for (int i = 0; i < 8; i++) {
    digitalWrite(led_pins[i], LOW);
  }
}

void display() {
  for (val = 0; val < 4; val++) {
    digitalWrite(seg_pins[val], HIGH);
    for (int i = 0; i < 8; i++) {
      digitalWrite(led_pins[i], bitRead(Temp[val],i));
    }
    delay(5);
    digitalWrite(seg_pins[val], LOW);
  }
}

//动态程序

const char num_array[10] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 };  //数字0~9
unsigned char displayTemp[4];                                                                  //缓冲数组

/*引脚*/
const char seg_pins[4] = { 13, 7, 5, 2 };             //位
const char led_pins[8] = { 11, 3, 6, 10, 12, 9, 4 };  //段

/*函数声明*/
void Init();
void GetFigure(int time);

unsigned int time_val = 0;  //时间变量
unsigned int cnt = 0;//延时变量

void setup() {
  Serial.begin(9600);
  for (int i; i < 4; i++) {
    pinMode(seg_pins[i], OUTPUT);
  }

  for (int i; i < 8; i++) {
    pinMode(led_pins[i], OUTPUT);
  }
}

void loop() {
  Init();               //初始化
  GetFigure(time_val);  //获得数码管数字
  Display();            //显示数字
  cnt++;
  if (cnt > 4) {
    time_val++;
    cnt = 0;
  }
  if (time_val > 9999){
    time_val = 0;
  }
}

/*初始化*/
void Init() {
  for (int i = 0; i < 4; i++) {
    digitalWrite(seg_pins[i], LOW);
  }
  for (int i = 0; i < 8; i++) {
    digitalWrite(led_pins[i], LOW);
  }
}

void GetFigure(int time) {
  displayTemp[0] = num_array[time / 1000 ];
  displayTemp[1] =  num_array[ time % 1000 / 100];
  displayTemp[2] =  num_array[time % 100 / 10];
  displayTemp[3] =  num_array[time % 10];
}

void Display() {
  for (int i = 0; i < 4; i++) {
    digitalWrite(seg_pins[i], HIGH);
    for (int j = 0; j < 8; j++) {
      digitalWrite(led_pins[j], bitRead(displayTemp[i], j));
    }
    delay(5);
    digitalWrite(seg_pins[i], LOW);
  }
}

产品展示视频

上电后四位数码管静态显示1234

【Arduino22】静态显示1234

上电显示0000,然后每次加1,最后加到9999后回到0000

【Arduino22】动态显示9999

总结

通过本次实验,我熟悉了1位数码管和4位数码管的使用,并学会了 bitRead() 函数的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值