C语言数码管显示函数解析:void display() 函数详解
C语言数码管显示函数解析:void display() 函数详解
这是一个用于控制数码管显示的函数,主要功能是将电压值分段显示在数码管上。
void display () {
unsigned int vol ;
// 定义一个无符号整型变量 vol
vol = (dat * 5000.0 / 255) + 0.5;
// 将 dat 乘以 5000.0 再除以 255,再加上 0.5,赋值给 vol
p2 = 0xef;
// 将 0xef 赋值给 p2
p0 = seg[vol / 1000] & 0x7f;
// 将 vol 除以 1000 的商作为下标,从 seg 数组中取出对应的值,并将其与 0x7f 进行按位与运算,再赋值给 p0
delay(300);
// 延时 300ms
P2 = 0xf7;
// 将 0xf7 赋值给 P2
p0 = seg[vol % 1000 / 100];
// 将 vol 对 1000 取余再除以 100 作为下标,从 seg 数组中取出对应的值,赋值给 p0
delay(200);
// 延时 200ms
p2 = 0xfb;
// 将 0xfb 赋值给 p2
p0 = seg[vol % 100 / 10];
// 将 vol 对 100 取余再除以 10 作为下标,从 seg 数组中取出对应的值,赋值给 p0
delay(200);
// 延时 200ms
P2 = 0xfd;
// 将 0xfd 赋值给 P2
P0 = seg[vol % 10];
// 将 vol 对 10 取余作为下标,从 seg 数组中取出对应的值,赋值给 p0
delay(300);
// 延时 300ms
p2 = 0xfe;
// 将 0xfe 赋值给 p2
p0 = 0xcl;
// 将 0xcl 赋值给 p0
delay(200);
// 延时 200ms
}
代码解析:
- dat: 表示输入的电压值。
- seg: 一个数组,存储了数码管需要显示的数字对应的数码值。
- vol: 用于存储经过计算后的电压值,以便后续使用。
- p2, p0: 用于控制数码管的引脚,负责发送数据和控制信号。
- delay(x): 延时函数,用于控制显示速度。
函数逻辑:
- 首先将输入电压值 dat 进行转换,得到一个代表电压值的整数 vol。
- 接着将 vol 分段,分别得到千位、百位、十位和个位数字。
- 根据各个位数对应的数字,从 seg 数组中取出对应的数码值。
- 通过控制 p2 和 p0 引脚,将相应的数码值发送到数码管的各个位,最终显示出电压值。
总结:
该函数通过控制数码管的引脚,并将经过计算的电压值分段,实现了将电压值显示在数码管上的功能。
原文地址: https://www.cveoy.top/t/topic/ofH3 著作权归作者所有。请勿转载和采集!