PIC 16F1788读取电压
PIC 16F1788 reading voltages
我是 PIC 编程的新手,需要一些关于我的代码是否走在正确轨道上的建议。我正在编写一个函数,它从端口 7 读取输入值 (0-5V) 和 returns 基于 (0-6.5V) 的电压值。
这是我目前的情况:
float measure(void) {
do {
ADCON1= 0x00; // configure ports as AD
buffer.vol = ADC_Read(7); // reads value from port 7
Real = (buffer.vol/5)*6.5; // converts it to voltage between 0 -6.5v
} while(1);
}
这看起来正确吗?我需要改变什么吗?
您不需要重新配置循环内的引脚。启动配置应发生在 main
.
的开头
ADC_Read
不是 return 浮点值;你需要自己转换它。对于 12 位 ADC,您可以
const float conversion_factor = 6.5f / ( ( 1 << 12 ) - 1 );
然后
Real = ADC_Read(7) * conversion_factor;
不清楚 buffer
的用途。除非出于某种原因需要保存未缩放的电压,否则不要。
我是 PIC 编程的新手,需要一些关于我的代码是否走在正确轨道上的建议。我正在编写一个函数,它从端口 7 读取输入值 (0-5V) 和 returns 基于 (0-6.5V) 的电压值。
这是我目前的情况:
float measure(void) {
do {
ADCON1= 0x00; // configure ports as AD
buffer.vol = ADC_Read(7); // reads value from port 7
Real = (buffer.vol/5)*6.5; // converts it to voltage between 0 -6.5v
} while(1);
}
这看起来正确吗?我需要改变什么吗?
您不需要重新配置循环内的引脚。启动配置应发生在 main
.
ADC_Read
不是 return 浮点值;你需要自己转换它。对于 12 位 ADC,您可以
const float conversion_factor = 6.5f / ( ( 1 << 12 ) - 1 );
然后
Real = ADC_Read(7) * conversion_factor;
不清楚 buffer
的用途。除非出于某种原因需要保存未缩放的电压,否则不要。