CHƯƠNG III: THI CÔNG 1 Sơ đồ mạch in:

Một phần của tài liệu THIẾT KẾ MẠCH ĐO NHIỆT ĐỘ 4 KÊNH DÙNG VI ĐIỀU KHIỂN AT89S52 (Trang 38 - 47)

13 D6 I/O DATA

CHƯƠNG III: THI CÔNG 1 Sơ đồ mạch in:

1. Sơ đồ mạch in:

2. Sơ đồ bố trí linh kiện:

3. Code điều khiển: #include <AT89X51.H> #include <stdio.h>

#include<string.h> #define RS P2_7 //#define RW P3_6//RW=0 => ghi #define EN P2_6//RW=1 => doc //RS=0 => code //RS=1 => data #define LCD_PORT P0 #define ADC_PORT P1 #define ALE P2_0 #define START P2_4 #define ADCA P3_6 #define ADCB P3_5 #define ADCC P3_4 #define loa P2_5 //=========================== void delay_ms(int n) { int k,j; for(k=0;k<n;k++) { for(j=0;j<500;j++); }

} //========================== void delay_5ms(){ int i,j; for(i=0;i<250;i++) for(j=0;j<4;j++){} } //=========================== void delay_15ms(){ int i,j; for(i=0;i<250;i++) for(j=0;j<100;j++){} } //============================

void LCDWriteCmd(unsigned char c) //CT con ghi du lieu len LCD { RS=0; //RW=0; LCD_PORT=c; EN=1; EN=0; delay_5ms(); }

//==============================

void LCDWriteData(unsigned char c) //CT con doc du lieu tu LCD { RS=1; //RW=0; LCD_PORT=c; EN=1; EN=0; delay_5ms(); } //============================= void LCDcursorxy(int x, int y)

{ if((x<1||x>2)&&(y<1||y>16)) { x=1; y=1; } if(x == 1) LCDWriteCmd(0x7F+y); else LCDWriteCmd(0xBF+y); } //===============================

void LCD_init() // Khoi tao LCD { delay_15ms(); LCDWriteCmd(0x38); LCDWriteCmd(0x0C); // LCDWriteCmd(0x06);

LCDWriteCmd(0x01); // Xoa man hinh LCD } //================================ void LCD_clear() { LCDWriteCmd(0x01); } //=============================== void LCD_home() { LCDWriteCmd(0x80); } //============================= void LCD_putstr(unsigned char *s)

{

while (*s) {

LCDWriteData(*s); s++;

}

}

//============================

void HienThi_ADC(unsigned char n1,n2,n3,n4) {

LCDWriteCmd(0x80);

LCD_putstr("T1:"); LCDWriteData(n1/10+48); LCDWriteData(n1%10+48); LCDWriteData(223);

LCD_putstr("C ");

LCD_putstr("T2:"); LCDWriteData(n2/10+48); LCDWriteData(n2%10+48); LCDWriteData(223);

LCD_putstr("C "); LCDWriteCmd(0xC0);

LCD_putstr("T3:"); LCDWriteData(n3/10+48); LCDWriteData(n3%10+48); LCDWriteData(223);

LCD_putstr("C ");

LCD_putstr("T4:"); LCDWriteData(n4/10+48); LCDWriteData(n4%10+48); LCDWriteData(223);

LCD_putstr("C ");

//==========================================

void main (void) {

unsigned char t1,t2,t3,t4=0; //gt la bie^n' cho gia tri 8bit ADC LCD_init();

LCDWriteCmd(0x80);

LCD_putstr("MACH DO NHIET DO"); while(1)

{

//doc kenh 1

ADCA = 0; ADCB = 0; ADCC = 0; ALE = 1;

START = 1; // Bat dau chuyen doi gia tri tu ADC delay_ms(1); // Tao tre de cap nhat du lieu tu ADC

START = 0; ALE = 0;

delay_ms(2); // Nhan du lieu da duoc chuyen doi t1=ADC_PORT;

//doc kenh 2

ADCA = 1; ADCB = 0; ADCC = 0; ALE = 1;

delay_ms(1); // Tao tre de cap nhat du lieu tu ADC START = 0;

ALE = 0;

delay_ms(2); // Nhan du lieu da duoc chuyen doi t2=ADC_PORT;

//doc kenh 3

ADCA = 0; ADCB = 1; ADCC = 0; ALE = 1;

START = 1; // Bat dau chuyen doi gia tri tu ADC delay_ms(1); // Tao tre de cap nhat du lieu tu ADC

START = 0; ALE = 0;

delay_ms(2); // Nhan du lieu da duoc chuyen doi t3=ADC_PORT;

//doc kenh 4

ADCA = 1; ADCB = 1; ADCC = 0; ALE = 1;

START = 1; // Bat dau chuyen doi gia tri tu ADC delay_ms(1); // Tao tre de cap nhat du lieu tu ADC

START = 0; ALE = 0;

delay_ms(2); // Nhan du lieu da duoc chuyen doi t4=ADC_PORT;

HienThi_ADC(t1,t2,t3,t4);

if(t1>50||t2>50||t3>50||t4>50) loa = 0; if(t1<50&&t2<50&&t3<50&&t4<50) loa = 1;

delay_ms(150); }

}

PHẦN 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1. Những điều đã đạt được trong đồ án:

- Đã nắm được phương pháp giao tiếp vi điều khiển với ADC0809 và LCD. - Hiểu được phương phức hoạt động của ADC0809 với cảm biến nhiệt LM35. - Rèn luyện được kỹ năng tự tìm tòi, học hỏi.

2. Hạn chế:

- Sự mạch cồng kềnh nhưng chỉ có 1 mục đích là đo nhiệt độ môi trường 1 cách đơn điệu.

- Lãng phí kênh ADC0809 do đo nhiệt độ dùng 4 kênh nhưng chỉ đo tại 1 điểm. - Tính ứng dụng thực tế chưa cao.

3. Hướng phát triển:

- Có thể kết hợp mạch đo nhiệt độ với đồng hồ lịch vạn niên.

- Ứng dụng cao hơn là dùng báo cháy trong các nhà máy, hay dựa vào nhiệt độ đo được để điều khiển nhiệt độ trong phòng, lò bánh mì, lò ấp trứng…

TÀI LIỆU THAM KHẢO - Sách “Vi xử lý- Vi điều khiển” – Nguyễn Đình Phú.

- Sách “Thực tập vi xử lý AT89S52 – 2013” – Nguyễn Đình Phú. - Sách “Họ vi điều khiển 8051” – Tống Văn On & Hoàng Đức Hải. - Ngoài ra còn sử dụng nguồn internet:

+ dientuvietnam.net + codientu.com

Một phần của tài liệu THIẾT KẾ MẠCH ĐO NHIỆT ĐỘ 4 KÊNH DÙNG VI ĐIỀU KHIỂN AT89S52 (Trang 38 - 47)

Tải bản đầy đủ (DOCX)

(47 trang)
w