洪嵐峰 發表於 2023-4-24 18:51:43

PIC16F1786

為了製作溫度濕度監測控制器,您需要以下零件:

PIC16F1786 微控制器
溫濕度傳感器(例如DHT11或DHT22)
LCD顯示屏(例如16x2或20x4字符LCD)
10K電位器
電容(例如100nF電容)
電阻(例如220歐姆電阻)
杜邦線和麵包板
下面是PIC16F1786的引腳分配:

RA0 - 不使用
RA1 - 不使用
RA2 - 不使用
RA3 - 不使用
RA4 - 不使用
RA5 - 不使用
RA6 - LCD數據線D4
RA7 - LCD數據線D5
RB0 - 溫濕度傳感器數據線
RB1 - 不使用
RB2 - LCD數據線D6
RB3 - LCD數據線D7
RB4 - LCD RS引腳
RB5 - LCD EN引腳
RB6 - 不使用
RB7 - 不使用

下面是PIC16F1786的程式碼,這個程式碼是用MPLAB X IDE和XC8編譯器撰寫的。

請注意,這僅僅是一個示例程式碼,您可以根據您的需求進行修改:


#include <xc.h>
#include <stdio.h>
#include "lcd.h"
#include "dht.h"

// 配置配置字1
#pragma config FOSC = INTOSC // 使用內部振盪器
#pragma config WDTE = OFF    // 禁用看門狗定時器
#pragma config PWRTE = OFF   // 禁用上電定時器
#pragma config MCLRE = ON    // 啟用MCLR輸入
#pragma config CP = OFF      // 禁用代碼保護
#pragma config BOREN = OFF   // 禁用低壓檢測
#pragma config CLKOUTEN = OFF // 禁用CLKOUT輸出
#pragma config IESO = OFF    // 禁用內部/外部切換
#pragma config FCMEN = OFF   // 禁用失敗時安全模式

// 設置內部時鐘為8MHz
#define _XTAL_FREQ 8000000

int main() {

    // 初始化LCD
    lcd_init();

    // 初始化DHT11/22傳感器
    dht_init();

    // 無窮循環
    while (1) {

        // 讀取溫度和濕度值
        float temp, hum;
        dht_read(&temp, &hum);

        // 在LCD上顯示溫度和濕度值
        lcd_gotoxy(0, 0);
        printf("Temp: %.1f C", temp);
        lcd_gotoxy(0, 1);
        printf("Hum : %.1f %%", hum);

    // 等待1秒鐘
    __delay_ms(1000);
}

return 0;
}



這個程式碼使用LCD和DHT庫來顯示溫度和濕度值。

您需要將這些庫添加到您的項目中。

您可以在互聯網上找到這些庫的下載鏈接。
頁: [1]
查看完整版本: PIC16F1786