【嵌入式原理设计】实验三:带报警功能的数字电压表设计
·
目录
一、实验目的
熟悉和掌握A/D转换及4位数码管、摇杆、蜂鸣器的联合工作方式
二、实验环境
Win10+ESP32实验开发板
三、实验内容
1、用摇杆传感器改变接口电压;
2、在4位数码管上显示变化的电压,数值显示要求保留3位小数;
3、当电压值小于2V,有报警提示。
四、实验记录及处理
- 器件连接
带报警功能的数字电压表设计:
| 设备名称 | 设备管脚 | ESP32管脚 |
| 四位数码管 | SCLK=16; RCLK=4; DIO=0; | SCLK=16; RCLK=4; DIO=0; |
| 摇杆 | #define RSx 25 | #define RSx 25 |
| LED小灯 | #define LEDD 27 | #define LEDD 27 |
- 实物连接图(拍照,控制图片大小,能看清即可)及程序运行结果描述
实物连接好的图片如下:

操作摇杆,端口数据输出显示器与数码管上显示的电压数值一致,

数码管上的数字会随摇杆x轴的移动而变化:x值增大,电压值也会相应增大;x值减小,电压值也会相应减小

其中当数码管上电压值小于2V时,有报警提示,连接的小灯会亮起。

3、程序控制代码
//部分代码如下,完整代码请查看附件
void LED4_Display(void){
unsigned char *led_table;
unsigned char i;
//第一位
led_table=LED_0F1+LED[0];
i=*led_table;
LED_OUT(i);
LED_OUT(0x08);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
delay(5);
//第二位
led_table=LED_0F+LED[1];
i=*led_table;
LED_OUT(i);
LED_OUT(0x04);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
delay(5);
//第三位
led_table=LED_0F+LED[2];
i=*led_table;
LED_OUT(i);
LED_OUT(0x02);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
delay(5);
//第四位
led_table=LED_0F+LED[3];
i=*led_table;
LED_OUT(i);
LED_OUT(0x01);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
delay(5);
}
void LED_OUT(unsigned char X) {
unsigned char i;
for (i = 8; i >= 1; i--) {
if (X & 0x80) { // 取出最高位
digitalWrite(DIO, HIGH);
} else {
digitalWrite(DIO, LOW);
}
X <<= 1; // 左移一位,让次高位来到最高位
digitalWrite(SCLK, LOW); // SCK是上升沿的时候要把数据写入
digitalWrite(SCLK, HIGH);
}
}
五、实验小结
掌握了四位数码管的连接方式,学会了如何通过编程控制数码管显示数字,并实现了保留三位小数的电压值显示。定义一个带小数点的数字字模数组,第一位需要小数表示,显示第1位数+小数点led_table = LED_0F1 + LED[0]
六、成果文件提取链接
链接: https://pan.baidu.com/s/14AjaJ6nyJAsIDe5WP5vfFQ?pwd=jiis 提取码: jiis
更多推荐



所有评论(0)