DS18B20
là IC cảm biến nhiệt độ, chỉ bao gồm 3 chân, đóng gói dạng TO-92 3 chân rất nhỏ
gọn.
DS18B20
giao tiếp thông qua giao thức 1 dây dẫn với vi xử lý.
Đặc
điểm chính của DS18B20 như sau:
+ Cung
cấp nhiệt độ với độ phân giải 12bit.
+
Ngưỡng nhiệt độ rộng: -10°C đến 125°C
+ Sai
số cho phép: ±0.5°C
+ Có
chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép. Người dùng có thể
lập trình chức năng này cho DS18B20. Bộ nhớ nhiệt độ cảnh báo không bị mất khi
mất nguồn.
+ Cảm
biến nhiệt độ DS18B20 có mã nhận diện lên đến 64-bit, vì vậy bạn có thể kiểm
tra nhiệt độ với nhiều IC DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp
với các IC này.
Với
DS18B20 bạn hoàn toàn có thể tạo cho mình mạch cảm biến nhiệt độ theo ý muốn.
- Đây là ảnh mô phỏng protues.
- Đây là code chương trình.
/*
* File: DS18_20.c
* Author: Lam 3 Ngon
* My blog http://xcvn.blogspot.com
* Created on April 26, 2016, 8:57 PM
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#define _XTAL_FREQ 4000000
#define RS RD2
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7
#include "lcd.h"
#include "1wire.h"
// CONFIG1
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // RE3/MCLR pin function select bit (RE3/MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
#pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)
// CONFIG2
#pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)
#pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off)
void delay(unsigned int t)
{
while(--t)
__delay_ms(1);
}
//**************************************************************************/
void main(void)
{
Convert_Temperature();
TRISD = 0X00;
float Temp = 0;
char S[20];
Lcd_Init();
Lcd_Set_Cursor(1,2);
Lcd_Write_String("SENSOR DS18B20");
Lcd_Set_Cursor(2,3);
Lcd_Write_String("BY LAM 3 NGON");
delay(2000);
Lcd_Clear();
while(1)
{
Convert_Temperature();
Temp = Read_Temperature_DS18B20();
sprintf(S,"Temperatura:%2.1f",Temp);
Lcd_Set_Cursor(1,1);
Lcd_Write_String(S);
delay(1000);
}
}
* File: DS18_20.c
* Author: Lam 3 Ngon
* My blog http://xcvn.blogspot.com
* Created on April 26, 2016, 8:57 PM
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#define _XTAL_FREQ 4000000
#define RS RD2
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7
#include "lcd.h"
#include "1wire.h"
// CONFIG1
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // RE3/MCLR pin function select bit (RE3/MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
#pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)
// CONFIG2
#pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)
#pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off)
void delay(unsigned int t)
{
while(--t)
__delay_ms(1);
}
//**************************************************************************/
void main(void)
{
Convert_Temperature();
TRISD = 0X00;
float Temp = 0;
char S[20];
Lcd_Init();
Lcd_Set_Cursor(1,2);
Lcd_Write_String("SENSOR DS18B20");
Lcd_Set_Cursor(2,3);
Lcd_Write_String("BY LAM 3 NGON");
delay(2000);
Lcd_Clear();
while(1)
{
Convert_Temperature();
Temp = Read_Temperature_DS18B20();
sprintf(S,"Temperatura:%2.1f",Temp);
Lcd_Set_Cursor(1,1);
Lcd_Write_String(S);
delay(1000);
}
}
No comments:
Post a Comment