嵌入式系统基于PIC16F882微控制器和热敏电阻创作数字温度计 需要C语言代码,适配MPLAB X IDE 在操作过程中,嵌入式系统有以下几点: 1)以2hz的频率连续采样Vtherm; 2)将采样的Vtherm值转换为°C的温度(使用提供的库函数); 3) LCD顶部一行显示当前温度; 4)计算开机(或复位)以来记录的最高/最低温度; 5)在LCD底部显示最高/最低温度。 系统必须以以下方式对教程板上的按钮的输入做出反应: —RB0—重置记录的最大/最小值 •开关1 (RB1)—将温度单元从℃改为F 请求提供代码
时间: 2023-02-13 10:59:16 浏览: 85
好的,以下是在 MPLAB X IDE 中使用 C 语言编写基于 PIC16F882 微控制器和热敏电阻创作数字温度计的代码示例:
```
#include <xc.h> // 包含PIC16F882的头文件
#include "lcd.h" // 包含LCD库函数的头文件
#include "adc.h" // 包含ADC库函数的头文件
#define _XTAL_FREQ 4000000 // 定义晶振频率
#define THERMISTOR_PIN 0 // 定义热敏电阻的引脚编号
#define RESET_BUTTON PORTBbits.RB0 // 定义复位按钮
#define UNIT_BUTTON PORTBbits.RB1 // 定义单位按钮
void main(void) {
TRISB = 0b00000011; // 将RB0和RB1设置为输入
ADCON1 = 0b00000110; // 设置ADC的工作模式
CMCON = 0b00000111; // 禁用比较器
LCD_Init(); // 初始化LCD
LCD_Clear(); // 清空LCD
LCD_SetCursor(0, 0); // 设置LCD光标位置
LCD_WriteString("Temp: "); // 在LCD顶部显示"Temp: "
int currentTemp = 0; // 当前温度
int maxTemp = -10000; // 最高温度
int minTemp = 10000; // 最低温度
char unit = 'C'; // 温度单位(默认为摄氏度)
while (1) {
__delay_ms(500); // 以2Hz的频率采样
int vTherm = ADC_Read(THERMISTOR_PIN); // 采样Vtherm值
currentTemp = ConvertToTemp(vTherm, unit); // 将Vtherm值转换为°C的温度
if (currentTemp > maxTemp) { // 更新最高温度
maxTemp = currentTemp;
}
if (currentTemp < minTemp) { // 更新最低温度
阅读全文