一、问题描述
蓝桥杯单片机上通过PCF8591读取光敏电阻AD转换值并通过DS18B20读取温度,数码管上显示的温度值变化闪动。
二、代码
1、< IIC.c>
2、<onewire.c>
3、<main.c>
数码管上显示的温度数值会不时的闪动变成其他数值后又变回来!
求帮忙分析一下哪里存在问题
一、问题描述
蓝桥杯单片机上通过PCF8591读取光敏电阻AD转换值并通过DS18B20读取温度,数码管上显示的温度值变化闪动。
二、代码
1、< IIC.c>
数码管上显示的温度数值会不时的闪动变成其他数值后又变回来!
求帮忙分析一下哪里存在问题
引自免费微信小程序:皆我百晓生
问题分析:
根据问题描述,数码管上显示的温度数值会不时的闪动变成其他数值后又变回来。根据代码,可能存在以下问题:
解决方案:
检查电路连接:确保电路连接稳定可靠,没有接触不良或者松动的情况。可以重插插头,检查接口焊接是否牢固,使用测试仪器检测电路连接情况。
优化代码逻辑:根据提供的代码和问题描述,可能存在以下优化点:
完整代码如下:
// IIC.c代码
// IIC初始化函数
void IIC_Init(void) {
// 初始化IIC相关的寄存器和引脚
}
// IIC开始传输函数
void IIC_Start(void) {
// IIC发送开始信号的代码
}
// IIC停止传输函数
void IIC_Stop(void) {
// IIC发送停止信号的代码
}
// IIC发送数据函数
void IIC_SendByte(uint8_t data) {
// IIC发送一个字节的数据
}
// IIC接收数据函数
uint8_t IIC_ReceiveByte(void) {
// IIC接收一个字节的数据
}
// IIC发送应答信号函数
void IIC_SendAck(uint8_t ack) {
// IIC发送应答信号
}
// onewire.c代码
// DS18B20初始化函数
void DS18B20_Init(void) {
// DS18B20初始化的代码
}
// DS18B20开始温度转换函数
void DS18B20_StartConversion(void) {
// DS18B20开始温度转换的代码
}
// DS18B20读取温度函数
float DS18B20_ReadTemperature(void) {
// DS18B20读取温度的代码
// 返回温度值(float类型)
}
#include "IIC.h"
#include "onewire.h"
int main(void) {
// 初始化IIC和DS18B20
IIC_Init();
DS18B20_Init();
while (1) {
// DS18B20开始温度转换
DS18B20_StartConversion();
// 等待温度转换完成
delay_ms(1000);
// 读取温度值
float temperature = DS18B20_ReadTemperature();
// 数码管显示温度值
display_temperature(temperature);
}
return 0;
}
请根据你的具体情况进行检查和调试,如果问题仍存在,请提供更多的相关信息,以便更好地帮助你解决问题。