这是代码、它们都经过了适当的编译和上传。 1602A 液晶显示屏没有显示任何生命体征。
我以前没有使用过它、因此我不知道它是否正常工作。
当它不起作用时、我尝试添加行 Serial.print (pulseCount);以检查中断例程是否起作用。 但没有结果,我什么都没有。 现在、我将会满意地看到它可以在串行打印寄存器中打印。
该电路也包括在内(可能不包括在内) 、我有一个示波器- LMT01在10uec 时输出1.6 V/0.6伏、并且大约是正确的 脉冲数。 @ 25 C 、它将馈入1.1V 比较器。 该电路是 Brandon Fisher 的标准电路。
我以前没有使用过它、因此我不知道它是否正常工作。
当它不起作用时、我尝试添加行 Serial.print (pulseCount);以检查中断例程是否起作用。 但没有结果,我什么都没有。 现在、我将会满意地看到它可以在串行打印寄存器中打印。
该电路也包括在内(可能不包括在内) 、我有一个示波器- LMT01在10uec 时输出1.6 V/0.6伏、并且大约是正确的 脉冲数。 @ 25 C 、它将馈入1.1V 比较器。 该电路是 Brandon Fisher 的标准电路。
------------------------------
#include
//声明 RS、E、D4、D5、D6、 D7.
LiquidCrystal LCD (3、5、6、9、10、11);
volatile int pulseCount = 0;
浮点温度= 0;
INT HOLD = 0;
void setup()
{
//初始化1602 LCD 显示屏
lcd.begin(16、2);
//打印脉冲计数标签
lcd.setCursor(0,0);
lcd.write ("脉冲:");
//打印温度标签
lcd.setCursor(0,1);
lcd.write ("TEMP (C):");
//设置 ACSR 寄存器,初始化比较器
/* ACSR 位描述
*
ACD -清除 ACD 以启用模拟比较器
ACBG -将 ACBG 设置为1以使用内部1.1V 基准
ACO -清除 ACIO (将被忽略-只读)
ACI -通过写入1复位模拟中断标志
ACIE -将 ACIE 置位以启用比较器中断
ACIC -清除 ACIC、与定时器/计数器无连接
ACIS1 -将 ACIS1置位以在下降沿触发中断
ACIS0 -清除 ACIS0以在下降沿触发中断
*
ACSR = B01011010; //根据上面的位描述进行设置
}
void loop()
{
//如果尚未计算任何脉冲,请勿再次进入循环。
if (pulseCount!= 0)
{
//等待计数完成
while (pulseCount!= HOLD)
{
HOLD = pulseCount;
延迟(1);
}
//将脉冲计数打印到 LCD
lcd.setCursor(9,0);
lcd.print (pulseCount);
serial.print (pulseCount);
//将温度打印到 LCD
温度= 0.0625 *脉冲计数- 50;
lcd.setCursor(9,1);
lcd.print (temperature);
//为下一个循环重置 pulseCount
pulseCount = 0;
}
延迟(2);
}
//中断服务例程,对脉冲进行计数
ISR (analog_COMP_vect)
{
//递增脉冲计数
pulseCount += 1;
}
//声明 RS、E、D4、D5、D6、 D7.
LiquidCrystal LCD (3、5、6、9、10、11);
volatile int pulseCount = 0;
浮点温度= 0;
INT HOLD = 0;
void setup()
{
//初始化1602 LCD 显示屏
lcd.begin(16、2);
//打印脉冲计数标签
lcd.setCursor(0,0);
lcd.write ("脉冲:");
//打印温度标签
lcd.setCursor(0,1);
lcd.write ("TEMP (C):");
//设置 ACSR 寄存器,初始化比较器
/* ACSR 位描述
*
ACD -清除 ACD 以启用模拟比较器
ACBG -将 ACBG 设置为1以使用内部1.1V 基准
ACO -清除 ACIO (将被忽略-只读)
ACI -通过写入1复位模拟中断标志
ACIE -将 ACIE 置位以启用比较器中断
ACIC -清除 ACIC、与定时器/计数器无连接
ACIS1 -将 ACIS1置位以在下降沿触发中断
ACIS0 -清除 ACIS0以在下降沿触发中断
*
ACSR = B01011010; //根据上面的位描述进行设置
}
void loop()
{
//如果尚未计算任何脉冲,请勿再次进入循环。
if (pulseCount!= 0)
{
//等待计数完成
while (pulseCount!= HOLD)
{
HOLD = pulseCount;
延迟(1);
}
//将脉冲计数打印到 LCD
lcd.setCursor(9,0);
lcd.print (pulseCount);
serial.print (pulseCount);
//将温度打印到 LCD
温度= 0.0625 *脉冲计数- 50;
lcd.setCursor(9,1);
lcd.print (temperature);
//为下一个循环重置 pulseCount
pulseCount = 0;
}
延迟(2);
}
//中断服务例程,对脉冲进行计数
ISR (analog_COMP_vect)
{
//递增脉冲计数
pulseCount += 1;
}