- UID
- 373967
- 帖子
- 8893
- 主題
- 2609
- 精華
- 0
- 積分
- 1000
- 楓幣
- 19
- 威望
- 977
- 存款
- 34995
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 456 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-27
|
PIC16F877A是Microchip公司生產的8位元通用型別微控制器,屬於PIC16系列的產品。
它具有40個封裝的直插式(DIP)腳位,可用於各種應用,例如工業自動化、電源管理、嵌入式系統等。該微控制器採用Flash記憶體技術,具有高速運算、低功耗、豐富的周邊設備和靈活的程式編程能力。
它還支持多種通訊介面,如UART、SPI和I2C,並具有多個定時器和計數器,可用於時間計量和脈衝計數等應用。
要製作一個可程式溫控器,需要以下零件:
PIC16F877A微控制器
溫度傳感器(例如DS18B20)
顯示屏(例如LCD1602)
溫度控制器(例如繼電器)
其他必要的電子元件(例如電容、電阻、電源等)
以下是PIC16F877A的DIP40腳位配置:
PIC16F877A DIP40腳位配置圖
以下是製作可程式溫控器所需的基本程式碼:
#include <16F877A.h> //引入PIC16F877A的頭文件
#fuses HS, NOWDT, NOPROTECT, NOLVP //設置FUSE位
#use delay(clock=20000000) //使用20MHz的內部晶體振盪器
#define DQ PIN_C0 //定義DS18B20溫度傳感器的DQ腳位為C0
#define RELAY PIN_C1 //定義繼電器控制腳位為C1
void main()
{
float temp;
setup_adc_ports(NO_ANALOGS); //設置ADC輸入端口
setup_adc(ADC_OFF); //關閉ADC
output_low(RELAY); //初始化繼電器為關閉狀態
while(TRUE)
{
temp = read_temperature(); //讀取溫度
if(temp >= 25) //如果溫度大於或等於25度
{
output_high(RELAY); //開啟繼電器控制
}
else //否則
{
output_low(RELAY); //關閉繼電器控制
}
}
}
float read_temperature()
{
float temp;
int16 raw;
ow_reset(DQ); //溫度傳感器初始化
ow_write_byte(DQ, 0xCC); //跳過ROM指令
ow_write_byte(DQ, 0x44); //啟動溫度轉換指令
delay_ms(750); //等待轉換完成
ow_reset(DQ); //重置溫度傳感器
ow_write_byte(DQ, 0xCC); //跳過ROM指令
ow_write_byte(DQ, 0xBE); //讀取暫存器指令
raw = ow_read_byte(DQ); //讀取溫度低8位
raw |= (ow_read_byte(DQ) << 8); //讀取溫度高8位
temp = (float)raw / 16.0; //計算實際溫度
return temp; //返回溫度值
} |
|