Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 42 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
42
Dung lượng
897 KB
Nội dung
II. phần cứng
1. Mạch nguyên ly
2. Các khối trong mạch
• Khối xử lý trung tâm
•
Khối nguồn
Tạo điện áp chuẩn 5V cho vi điều khiển. D1 tạo điện áp 1 chiều, các bộ tụ C1,
C2 để san phẳng và làm ổn định điện áp ra cho vi điều khiển.
•
Khối đo độ ẩm
HS1101 là cảm biến điện dung. Khi độ ẩm thay đổi, điện dung của HS1101 thay đổi. Do
vậy, để đo được độ ẩm người ta thiết kế mạch đo điện dung của HS1101.
Trong thực tế, người ta thường ghép nối HS1101 và IC NE555. Khi đó giá trị điện dung
của HS1101 thay đổi thì làm thay đổi tần số đầu ra của IC555. Như vậy chỉ cần đo tần số
đầu ra là có thể đo được điện dung của HS1101.
•
Khối đo nhiệt độ
•
Khối role
Khi t mở. Chân tiếp điểm kéo xuống đất. Vcc mức 1, tạo ra sự chênh áp.
• Khối hiển thị LCD
•
Khối reset
•
Khối dao động
•
Khối nút nhấn
III.tìm hiểu về các linh kiện được sử dụng
Trong mạch đo nhiệt độ và độ ẩm dùng cảm biến nhiệt độ DS18B20 và cảm biến điện
dung HS1101 hiển thị ra màn hình LCD ta cần sử dụng các linh kiện sau:
………….
1. Vi điều khiển 89S52
a. Hình ảnh
a. Cấu tạo và chức năng các chân trên 89s52
AT89S52 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong
đó có 24 chân có tác dụng kép (có nghĩa là 1 chân có 2 chức năng), mỗi đường
có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là
thành phần của các bus dữ liệu và bus địa chỉ.
* PORT
Port 0: là port có 2 chức năng ở các chân từ 32- 39. Trong các thiết kế cỡ nhỏ
không dùng đến bộ nhớ mở rộng thì port 0 có chức năng là xuất/nhập dữ liệu.
Nếu trong các thiết kế cỡ lớn phải dùng đến bộ nhớ mở rộng thì port 0 được
kết hợp giữa bus địa chỉ và bus dữ liệu.
Port 1: là port có 1 chức năng từ chân 1- 8. Có thể dùng cho giao tiếp với thiết
bị ngoài nếu cần. Vì không có chức năng khác ngoài xuất/nhập nên nó chỉ
được dùng giao tiếp với các thiết bị bên ngoài.
Port 2: là 1 port có tác dụng kép trên các chân 21- 28 được dùng như các
đường xuất nhập hoặc là byte cao của các bus địa chỉ đối với thiết bị dùng bộ
nhớ mở rộng.
Port3: là port có tác dụng kép trên các chân 10- 17, port này có nhiều chức
năng cụ thể như sau:
P3.0
RXT
Ngõ vào đữ liệu nối tiếp
P3.1
TXD
Ngõ xuất dữ liệu nối tiếp
P3.2
INT0
Ngõ vào ngắt 0
P3.3
INT1
Ngõ vào ngắt 1
P3.4
T0
Ngõ vào của timer/ couter 0
P3.5
T1
Ngõ vào của timer/ couter 1
P3.6
WR
Tín hiệu ghi dữ liệu lên bộ nhớ ngoài
P3.7
RD
Tín hiệu đọc dữ liệu bộ nhớ ngoài
* các ngõ tín hiệu điều khiển
PSEN
PSEN là tín hiệu ngõ ra ở chân 29 có ứng dụng cho phép đọc bộ nhớ
chương trình mở rộng thường được nối với chân 0E( output ennable) của
EPROM cho phép đọc các byte mã lệnh. PSEN ở mức 0 khi 89s52 lấy lệnh,
các mã lệnh của chương trình đọc từ EPROM qua bus dữ liệu và được chốt vào
thanh ghi lệnh để giải lệnh. PSEN ở mức 1 khi 89s52 thi hành chhuowng trình
trong ROM nội.
ALE
ALE ở chân số 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường
địa chỉ và dữ liệu khi kết nối chúng với IC chốt. Vì khi 89s52 truy xuất bộ nhớ
bên ngoài port 0 có chức năng là đường địa chỉ và dữ liệu nên phải tách riêng
ra.
Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai
trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.
EA
Ngõ tín hiệu vào EA ở chân 31 thường được mắc lên nguồn. Nếu ở mức 1
thì 89s52 thi hành chương trình từ ROM nội trong khaongr địa chỉ thấp
8kbyte. Nếu ở mức 0 thì 89s52 sẽ thi hành chương trình từ bộ nhớ mở rộng.
RST
Ngõ tín hiệu RST (reset) ở chân số 9. Khi 89s52 thực hiện 2 chu kỳ máy
hoặc khi cấp điện mạch tự động reset.
X1,X2
Ngõ tín hiệu dao động X1, X2 ở chân 18, 19. Thường được nối với thạch
anh để tạo dao động.
Vcc
Vcc là chân số 40, thường được nối lên nguồn 5V.
2. Cảm biến nhiệt độ DS18B20
a. Hình ảnh
DS18B20 là IC cảm biến nhiệt độ chỉ bao gồm 3 chân, đóng gói dạng TO-92
b. Cấu tạo
DS18B20 gồm 3 chân Vcc, GND, DATA.
Sơ đồ kết nối:
c. Đặc tính kỹ thuật
+ Lấy nhiệt độ theo giao thức 1 dây (1wire)
+ Cung cấp nhiệt độ với độ phân giải config 9,10,11,12 bit, tùy theo sử dụng.
Trong trường hợp không config thì nó tự động ở chế độ 12 bit.
Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho mã hóa 12 bit
+Có thể đo nhiệt độ trong khoảng -55 -> +125°C. Với khoảng nhiệt độ là -10°C to
+85°C thì độ chính xác ±0.5°C,±0.25°C ,±0.125°C,±0.0625°C. theo số bít config.
+ 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 vì nó có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM
trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.
+ Cam bien nhiet do 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 y
muốn.
+ Điện áp sử dụng : 3 – 5.5 V
+ Dòng tiêu thụ tại chế độ nghỉ rất nhỏ.
d. Lập trình đo nhiệt độ với vi điều khiển 89s52
Khi xử ly DS18b20 chúng ta cần quan tâm đến 2 nhóm lệnh sau:
+ nhóm lệnh truy cập ROM
+ nhóm lệnh chức năng bộ nhớ
• Nhóm lệnh truy cập ROM
- READ ROM (33h)
Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM, bao gồm: 8
bit mã định tên linh kiện (10h), 48 bit số xuất xưởng, 8 bit kiểm tra
CRC. Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu không
sẽ xảy ra xung đột trên bus do tất cả các thiết bị tớ cùng đáp ứng.
- MATCH ROM (55h)
Lệnh này được gửi đi cùng với 64 bit ROM tiếp theo, cho phép bộ điều
khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có
nhiều cảm biến DS1820 cùng nối vào. Chỉ có DS1820 nào có 64 bit trên
ROM trung khớp với chuỗi 64 bit vừa được gửi tới mới đáp ứng lại các
lệnh về bộ nhớ tiếp theo. Còn các cảm biến DS1820 có 64 bit ROM
không trùng khớp sẽ tiếp tục chờ một xung reset. Lệnh này được sử
dụng cả trong trường hợp có một cảm biến một dây, cả trong trường hợp
có nhiều cảm biến một dây.
- SKIP ROM (CCh)
Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến các lệnh bộ
nhớ của DS1820 mà không cần gửi chuỗi mã 64 bit ROM. Như vậy sẽ
tiết kiệm được thời gian chờ đợi nhưng chỉ mang hiệu quả khi trên bú
chỉ có một cảm biến.
- SEARCH ROM (F0h)
Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành
viên tớ đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM
của chúng bằng một chu trình dò tìm.
- ALARM SEARCH (ECh)
Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm
biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo
trong phép đo nhiệt độ cuối cùng. Điều kiện cảnh báo ở đây được định
nghĩa là giá trị nhiệt độ đo được lớn hơn giá trị TH và nhỏ hơn giá trị
TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên
thanh ghi trong bộ nhớ của cảm biến.
Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh
ROM để định địa chỉ cho các cảm biến một dây đang được đấu vào bus,
thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820. Bằng các lệnh chức
năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp (scratchpath) của
cảm biến DS1820. khởi tạo quá trình chuyển đổi giá trị nhiệt độ đo được
và xác định chế độ cung cấp điện áp nguồn. Các lệnh chức năng có thể
được mô tả ngắn gọn như sau:
- WRITE SCRATCHPAD (4Eh)
Lệnh này cho phép ghi 2 byte dữ liệu vào bộ nhớ nháp của DS1820.
Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp) còn
byte thứ hai được ghi vào thanh ghi TL (byte 3 của bộ nhớ nháp). Dữ
liệu truyền theo trình tự đầu tiên là bit có y nghĩa nhất và kế tiếp là
những bit có y nghĩa giảm dần. Cả hai byte này phải được ghi trước khi
thiết bị chủ xuất ra một xung reset hoặc khi có dữ liệu khác xuất hiện.
- READ SCRATCHPAD (BEh)
Lệnh này cho phép thiết bị chủ đọc nội dung bộ nhớ nháp. Quá trình
đọc bắt đầu từ bit có y nghĩa nhấy của byte 0 và tiếp tục cho đến byte
rhứ 9 (byte 8 – CRC). Thiết bị chủ có thể xuất ra một xung reset để làm
dừng quá trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu
trên bộ nhớ nháp cần được đọc.
- COPYSCRATCHPAD (48h)
Lệnh này copy nội dung của hai thanh ghi TH và TL (byte 2 và byte 3)
vào bộ nhớ EEPROM. Nếu cảm biến được sử dụng trong chế dộ cấp
nguồn l bắt đầu việc đo.
- CONVERT T (44h)
Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ
thành số (nhị phân). Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được
lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ nháp Thời gian
chuyển đổi không quá 200 ms, trong thời gian đang chuyển đổi nếu thực
hiện lệnh đọc thì các giá trị đọc ra đều bằng 0.
- READ POWER SUPPLY (B4h)
Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ
cấp nguồn như thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng
chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn qua một đường dẫn
riêng.
• Nhóm lệnh chức năng bộ nhơ
Để xử ly được nhiệt độ được từ DS18B20 chúng ta cần quan tâm đến
hàm :
-float ds18b20_readtemp(void): Đây là hàm giúp các bạn tính toán và
trả về giá trị nhiệt độ mà DS18b20 đo được
Chúng ta có hàm đọc nhiệt độ
float ds18b20_readtemp(void)
{
float temp;
unsigned char a,b;
DS18B20_Init();
// Khoi tao DS18b20
ds18b20_writebyte(0xCC) ; // Cho phep VDK truy cap thang den cac
lenh bo nho cua DS18b20
ds18b20_writebyte(0x44) ; // Khoi dong qua trinh do va chuyen doi nhiet
do ra so nhi phan
DS18B20_Init() ;
ds18b20_writebyte(0xCC) ;
ds18b20_writebyte(0xBE) ;
// Cho phep doc du lieu tu bo nho
DS18b20 ra ngoai
a = ds18b20_readbyte();
temp=((float)(a&0x0f))/16;
// Lay phan thuc cua gia tri nhiet do
b = ds18b20_readbyte();
a =((a&0xf0)>>4)|((b&0x0f)>3)&1;
}
// -------------------------------------------------// Ham Gui 1 Lenh Cho LCD
void lcd1602_send_command (unsigned char cX )
{
lcd1602_send_4bit_data ( cX >>4 );
// gui 4 bit cao
lcd1602_enable() ;
lcd1602_send_4bit_data ( cX );
lcd1602_enable() ;
}
// --------------------------------------------------
// gui 4 bit thap
// Ham Khoi Tao LCD
void lcd1602_init ( void )
{
lcd1602_send_4bit_data ( 0x00 );
delay_ms(200);
LCD_RS=0;
LCD_RW=0;
LCD_E=0;
// che do gui lenh
lcd1602_send_4bit_data ( 0x03 );
// ket noi 8 bit
lcd1602_enable() ;
lcd1602_enable () ;
lcd1602_enable () ;
lcd1602_send_4bit_data ( 0x02 );
// ket noi 4 bit
lcd1602_enable() ;
lcd1602_send_command( 0x2C );
// giao thuc 4 bit,
hien thi 2 hang, ki tu 5x8
lcd1602_send_command( 0x80);
lcd1602_send_command( 0x0C);
// cho
phep hien thi man hinh
lcd1602_send_command( 0x06 );
// tang ID, khong
dich khung hinh
lcd1602_send_command( CLEAR_LCD );
// xoa toan bo khung hinh
}
// -------------------------------------------------// Ham Thiet Lap Vi Tri Con Tro
void lcd1602_gotoxy(unsigned char x, unsigned char y)
{
unsigned char address;
if(!y)
address = (LINE_1+x);
else
address = (LINE_2+x);
delay_ms(3);
lcd1602_send_command(address);
delay_ms(1);
}
// -------------------------------------------------// Ham Xoa Man Hinh LCD
void lcd1602_clear(void)
{
lcd1602_send_command( CLEAR_LCD );
//delay_us(300);
}
// -------------------------------------------------// Ham Gui 1 Ky Tu Len LCD
void lcd1602_putchar ( unsigned int cX )
{
LCD_RS=1;
lcd1602_send_command( cX );
LCD_RS=0;
}
// -------------------------------------------------// Ham Gui 1 Chuoi Ky Tu Len LCD
void lcd1602_puts(char *s)
{
while (*s)
{
lcd1602_putchar(*s);
s++;
}
}
//Khai bao bien su dung
int xung,dem,frequency;
//*********************************************************************
*********//
void delay_18B20(unsigned int i)
{
while(i--);
}
//*********************************************************************
*********//
void Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1;
delay_18B20(8);
DQ = 0;
delay_18B20(80);
DQ = 1;
delay_18B20(14);
x=DQ;
delay_18B20(20);
}
//*********************************************************************
*********//
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0;
dat>>=1;
DQ = 1;
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
//*********************************************************************
*********//
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(5);
DQ = 1;
dat>>=1;
}
}
//*********************************************************************
*********//
int ReadTemp(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned char t=0;
int nhiet_thuc;
Init_DS18B20();
WriteOneChar(0xCC);
// cho phep dieu khien truy nhap truc tiep den
lenh nho sensor ma khong can gui chuoi ma sensor
WriteOneChar(0x44);
lieu
delay_18B20(100);
// khoi dong qua trinh do va chuyen doi du
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
// Cho phep thiet bi doc nd bo nho nhap
delay_18B20(100);
a=ReadOneChar();
b=ReadOneChar();
nhiet_thuc=b4;
return(nhiet_thuc);
}
code int HS1101_Table[101]={
8109,8090,8070,8051,8033,8015,7997,7979,7961,7944,
7927,7910,7894,7878,7862,7846,7830,7815,7799,7784,
7769,7755,7740,7726,7711,7697,7683,7669,7655,7641,
7628,7614,7600,7587,7574,7560,7547,7534,7521,7507,
7494,7481,7468,7455,7442,7429,7416,7403,7390,7377,
7364,7350,7337,7324,7311,7298,7284,7271,7257,7244,
7230,7216,7203,7189,7175,7161,7147,7132,7118,7103,
7089,7074,7059,7045,7029,7014,6999,6984,6968,6952,
6936,6920,6904,6888,6872,6855,6838,6821,6804,6787,
6770,6752,6735,6717,6699,6680,6662,6644,6625,6606,
6587};
/
*****************************************************************
**************
Noi Dung : Doc gia tri do am.
Tham Bien : frequency: tan so do duoc tu bo dao dong NE555 ket hop HS1101.
Tra Ve
: Gia tri do am do duoc tu HS1101.
**********************************************************************
**********/
int HS1101_GetHumi(int frequency)
{
int i;
for(i=0;iHS1101_Table[i])return i;
}
return 100;
}
//Ham ngat
void ngat0(void) interrupt 0
{
xung++;
}
void ngat_timer_0(void) interrupt 1
{
dem++;
if(dem >= 4000)
{
dem=0;
frequency = xung-2600;
xung=0;
}
}
void main(void)
{
int humi,nhiet_do,nhiet_do2,nhiet_do3,nhiet_do_khong_che=40,fr;
char str[20];
TMOD = 0x02;
TH0=TL0=-250;
IT0=1;
IE=0x83;
TR0=1;
lcd1602_init();
lcd1602_clear();
while(1)
{
if(sw1 == 0) {nhiet_do_khong_che++;
if(nhiet_do_khong_che>=150)
nhiet_do_khong_che=0; }
if(sw2 == 0) {nhiet_do_khong_che--;
nhiet_do_khong_che=150; }
nhiet_do = ReadTemp();
if(nhiet_do_khong_che= nhiet_do-4)&&(nhiet_do2 =
nhiet_do2-4)&&(nhiet_do3 nhiet_do_khong_che)
relay =1; else relay=0;
humi=HS1101_GetHumi(frequency);
sprintf(str,"Do Am: %d %% ",humi);
//sprintf(str,"tanso=%dhz ",fr);
lcd1602_gotoxy(1,0);
lcd1602_puts(str);
sprintf(str,"T=%doC Tkc=%doC ",nhiet_do,nhiet_do_khong_che);
lcd1602_gotoxy(1,1);
lcd1602_puts(str);
}
delay_ms(100);
}
}
2. Mô phỏng bằng phần mềm Proteus
Khi T < Tkc thì rorowle (D1) chưa hoạt động( D1 tắt)
Khi T > Tkc thì rơle hoạt động
[...]... công thức liên hệ giữa độ ẩm và điện dung: (2) Trong đó: oC@55% = 180pF ( tài liệu của hãng ) oC(pf) chính là điện dung đo được Từ (1) và (2) ta có mỗi liên hệ giữa tần số và độ ẩm Giải pháp tính toán: Ta thấy hàm độ ẩm là hàm mũ 3, nên rất khó tính toán mối liên hệ F và RH Ta thấy hàm C(pf) là hàm đồng biến với RH Do vậy ta F sẽ nghịch biến với RH Từ đó ta có phương... quan hệ RH và F, ta thu được bảng F[100] = {7410;7392;….;6019} Mảng này có 100 phần tử tương đương với độ ẩm từ 0-100% Như vậy, khi ta đo được tần số F, ta chọn F>=F và sát nhất với F Khi đó Độ ẩm RH =i% Bảng 1: Bảng tính giá trị độ ẩm qua tần số 4 Hiển thị LCD a Hình ảnh b Cấu tạo và các chức năng - Chân vcc, Vss,VEE: Cấp dương nguồn - 5v và đất tương ứng thì V EE được dùng... giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820 Bằng các lệnh chức năng thiết bị... nháp cần được đọc - COPYSCRATCHPAD (48h) Lệnh này copy nội dung của hai thanh ghi TH và TL (byte 2 và byte 3) vào bộ nhớ EEPROM Nếu cảm biến được sử dụng trong chế dộ cấp nguồn l bắt đầu vi ̣c đo - CONVERT T (44h) Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ thành số (nhị phân) Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được lưu trữ trên... +-2% Dãy nhiệt độ hoạt động từ -400C à 1000C Cảm biến HS1101 được sử dụng phổ biến trong cuộc sống, ngoài ra nó còn dùng kết hợp với cảm biến DS18B20 dùng đo nhiệt độ Nguyên ly làm vi ̣c Cảm biến HS1101 là cảm biến điện dung Khi độ ẩm thay đổi, điện dung của HS1101 thay đổi Do vậy, để đo được độ ẩm người ta thiết kế mạch đo điện dung của HS1101 Trong thực tế, người ta... 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 y muốn + Điện áp sử dụng : 3 – 5.5 V + Dòng tiêu thụ tại chế độ nghỉ rất nhỏ d Lập trình đo nhiệt độ với vi điều khiển 89s52 Khi xử ly DS18b20 chúng ta cần quan tâm đến 2 nhóm lệnh sau: + nhóm lệnh truy cập ROM + nhóm lệnh chức năng bộ nhớ • Nhóm lệnh truy cập ROM - READ ROM (33h) Cho phép đọc... Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang hiệu quả khi trên bú chỉ có một cảm biến - SEARCH ROM (F0h) Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành vi n tớ đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm - ALARM SEARCH (ECh) Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng... để kiểm tra bít cờ bận để xem LCD có sẵn sàne nhân thông tin Cờ bận là D7 và có thể được đọc khi R/W = 1 và RS = 0 như sau: Nếu R/W = 1, RS = 0 khi D7 = 1 (cờ bận 1) thì LCD bận bởi các công vi ̣c bên trong và sẽ không nhận bất kỳ thông tin mới nào Khi D7 = 0 thì LCD sẵn sàng nhận thông tin mới Lưu y chúng ta nên kiểm tra cờ bận trước khi ghi bất kỳ dữ liệu nào lên LCD 5 Role... // cho phep hien thi man hinh lcd1602_send_command( 0x06 ); // tang ID, khong dich khung hinh lcd1602_send_command( CLEAR_LCD ); // xoa toan bo khung hinh } // -// Ham Thiet Lap Vi Tri Con Tro void lcd1602_gotoxy(unsigned char x, unsigned char y) { unsigned char address; if(!y) address = (LINE_1+x); else address = (LINE_2+x); delay_ms(3); lcd1602_send_command(address); delay_ms(1); ... tính toán: Ta thấy hàm độ ẩm là hàm mũ 3, nên rất khó tính toán mối liên hệ F và RH Ta thấy hàm C(pf) là hàm đồng biến với RH Do ta F sẽ nghịch biến với RH Từ ta có phương... ta cần quan tâm đến hàm : -float ds18b20_readtemp(void): Đây là hàm giúp các bạn tính toán và trả về giá trị nhiệt độ mà DS18b20 đo Chúng ta có hàm đọc nhiệt độ float ds18b20_readtemp(void)... làm thay đổi tần số đầu IC555 Như cần đo tần số đầu là có thể đo điện dung HS1101 Sơ đồ ghép nối HS1101 với NE555 c Cách thức đo độ ẩm Ta có công thức tính tần số sau : d