1. Trang chủ
  2. » Luận Văn - Báo Cáo

đo nhiệt độ dùng lm35 và adc0804 qua 8051 hiển thị lên lcd

14 145 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Đo nhiệt độ dùng LM35 kết hợp IC ADC0808 với 8051 Chu Bá Quyết - 2019602370 I, Giới thiệu chung 1, cảm biến nhiệt độ LM35 a, giới thiệu LM35 LM35 cảm biến nhiệt độ tương tự, điện áp đầu cảm biến tỷ lệ với nhiệt độ tức thời dễ dàng xử lý để có giá trị nhiệt độ oC Ưu điểm LM35 so với cặp nhiệt điện khơng u cầu hiệu chuẩn bên ngồi Lớp vỏ bảo vệ khỏi bị nhiệt Chi phí thấp độ xác cao khiến cho loại cảm biến trở thành lựa chọn người yêu thích chế tạo mạch điện tử, người làm mạch tự chế bạn sinh viên Vì có nhiều ưu điểm nêu nên cảm biến nhiệt độ LM35 sử dụng nhiều sản phẩm đơn giản, giá thành thấp Đã 15 năm kể từ lần mắt cảm biến tồn sử dụng nhiều sản phẩm ứng dụng cho thấy giá trị loại cảm biến b, sơ đồ chân Số chân Tên chân Vcc hay +Vs Vout Chức Chân cấp nguồn với điện áp từ 4V đến 30V Chân lấy điện áp ra, điện áp chân thay đổi 10mV/oC GND Chân nối đất c, nguyên lý hoạt động LM35 Cảm biến LM35 hoạt động cách cho giá trị điện áp định chân VOUT (chân giữa) ứng với mức nhiệt độ Như vậy, cách đưa vào chân bên trái cảm biến LM35 điện áp 5V, chân phải nối đất, đo hiệu điện chân giữa, bạn có nhiệt độ (0-100ºC) tương ứng với điện áp đo Vì điện áp ngõ cảm biến tương đối nhỏ nên thông thường mạch ứng dụng thực tế, thường dùng Op-Amp để khuếch đại điện áp ngõ d, dạng mạch đo nhiệt độ LM35 cảm biến nhiệt độ, đầu tín hiệu điện áp biến đổi theo nhiệt độ, 10mV tương ứng với độ C giải đo IC -55 độ đến 150 độ C, điện áp cung cấp từ 4-20VDC Để đo nhiệt độ âm tức nhỏ ta phải cấp thêm nguồn âm -Vs cho IC chuyển đổi analog-digital ADC0808 a, giới thiệu ADC0808 IC ADC0808 vi mạch tích hợp có chức chuyển đổi tín hiệu tương tự sang kỹ thuật số (Analog to Digital Converters), độ phân giải ADC 8bit tức chuyển đổi tín hiệu điện tương tự sang 256 mức điện áp so với Vref cấp vào chuyển đổi b, Sơ đồ chân Ý nghĩa chân: • Các chân từ IN0-IN7 ngõ vào analog • • • • • • Vref+/Vref- chân cấp áp so sánh ALE chân cho phép giao tiếp Từ 2ˆ-1 đến 2ˆ-8 ngõ song song 8bit START chân cho phép chuyển đổi EOC chân báo q trình chuyển đổi hồn tất, kiểu dạng cờ ngắt ADD A, ADD B, ADD C 3bit địa chọn kênh đầu vào từ IN0- IN7 • VCC, GND chân cấp nguồn dương 5V nguồn âm (Mass) • CLOCK chân cấp xung đồng hồ cho IC hoạt động, tốc độ lấy mẫu chuyển đổi phụ thuộc vào này, tối đa 640khz • OUTPUT ENABLE (OE) chân báo cho IC xuất data Port để vi điều khiển lấy c) Giản đồ xung giao tiếp IC ADC0808 c, bước đọc ADC b1: bật CS=0 b2: chuyển WR từ lên b3: chờ INTR xuống b4: đưa CS=0 b5: đưa RD từ xuống b6: đọc liệu b7: đưa RD lên 3, LCD 1602 a, giới thiệu LCD1602 • LCD thực chất hình kèm IC điều khiển chuyên dụng Việc hiển thị lên LCD chẳng qua việc giao tiếp với IC điều khiển đó, IC tự đảm nhiệm phần công việc đưa liệu hiển thị lên hình Việc giao tiếp với LCD dạng giao tiếp song song Có chế độ giao tiếp bít bít Với codevisionAVR cấu hình giao tiếp chế độ bit • Mỗi kí tự hình cấu tạo từ ma trận điểm 5x7 ( cột, hàng) hình bên, chữ b hiển thị dạng ma trận • Khả hiển thị : hàng, hàng hiển thị 16 kí tự (1602) b, sơ đồ chân Có tất 16 chân bao gồm • Chân : nguồn âm • Chân : nối với +5V • Chân 3: Nối với biến trở để điều khiển độ tương phản • Chân 4: Chân RS chân chọn ghi lệnh (0) hay ghi liệu (1) • Chân 5: Chân RW : mức tương ứng với việc đọc liệu từ LCD, mức tương ứng với việc ghi liệu lên LCD • Chân : chân EN : chân cho phép thao tác với LCD, Xung tích cực từ 1->0 • Chân đến 14 : chân liệu D0-D7 • Chân 15 16 : chân cấp nguồn cho đèn LCD, thường chân nối với biến trở để điều khiển độ sáng đèn c, giao tiếp LCD1602 với 8051 chế độ bit * Khởi tạo LCD • • • • • Đợi 15ms, Bật thời gian khởi động cho LCD16x2 Gửi lệnh 0x02 khởi tạo LCD 16x2 chế độ bit Gửi lệnh 0x28 cấu hình LCD chế độ dòng, bit 5x8 Gửi lệnh ON hiển thị (0x0E, 0x0C) Gửi lệnh 0x06 (con trỏ tăng) * chức ghi lệnh • Đầu tiên, gửi lệnh nibble cao • Làm cho pin RS thấp, RS = (lệnh reg.) • Làm cho RW pin thấp, RW = (viết hoạt động) kết nối với mặt đất • Cung cấp xung Cao đến Thấp Bật (E) • Gửi lệnh nibble thấp • Cung cấp xung Cao đến Thấp Bật (E) * chức ghi liệu • Đầu tiên, gửi liệu nhanh • Tạo RS pin cao, RS = (dữ liệu reg.) • Làm cho RW pin thấp, RW = (viết hoạt động) kết nối với mặt đất • Cung cấp xung Cao đến Thấp Bật (E) • Gửi liệu nibble thấp • Cung cấp xung Cao đến Thấp Bật (E) II, hệ thống đo nhiệt độ dùng LM35 ADC0808 8051 hiển thị lên LCD 1, tổng quan hệ thống đo lường Sơ đồ khối hệ thống a, khối chuẩn hóa tín hiệu điện áp đầu cảm biến có giá trị nhỏ (từ -0,55V đến 1,5V) nên ta phải khuếch đại điện áp đầu lên b, khối đọc adc tín hiệu đầu cảm biến dạng analog (điện áp) mà 8051 đọc tín hiệu digital (số) nên ta phải chuyển đổi tín hiệu từ dạng tương tự sang dạng số ADC0808 c, khối xử lý số liệu sau đo tín hiệu ta phải xử lý số liệu vi xử lý để tìm nhiệt độ cần đo d, khối hiển thi sau tìm nhiệt độ cần đo vi xử lý ta phải hiển thị giá trị ngồi LCD 2, xây dựng mạch ngun lý (Mô Proteus) Do mô proteus nên t lược bỏ bớt khâu chuẩn hóa tín hiệu Ta sử dụng biến trở đặt vào chân Vref ADC0808 để tạo áp 2,56V Công thức tính điện áp chuyển đổi: Vin = (Vref*ADC)⁄256 Do độ phân giải ADC0808 8bit lên có 256 mức điện áp so với Vref Tức ta cấp vào Vref 5V tín hiệu input vào 2.5V chẳng hạn giá trị ADC = 256⁄2 = 128 (do Vin = 1⁄2 Vref) từ suy Vref = 2.56V để ADC=25 điện áp đầu vào input phải 250mV => Cứ tăng/giảm 10mV ADC tăng/giảm giá trị Mà cảm biến nhiệt độ LM35 lại có ngõ 10mV thay đổi độ C suy ADC=25 LM35 25 độ C Với cách ta không cần phải tính tốn giá trị nhiệt độ sau chuyển đổi mà xuất ln giá trị ADC hình LCD 3, lưu đồ thuật tốn 4, lập trình phần mềm Keil C Chương trình /*Do nhiet dung LM35 va ADC0808 hoac ADC0809*/ #include #include #include /*Hien thi nhiet LCD*/ void hienthi(unsigned char z) { lcd_puts("Nhiet do: "); lcd_println(z); lcd_puts("*C"); } void init() // khoi tao ngat { TMOD=0x02; TR0=1; ET0=1;//Ngat timer0 EA=1;//Cho phep ngat cuc bo } /*Chuong trình ngat timer 0*/ void INT_Timer0()interrupt //chuong trinh phuc vu ngat tao xung clock cho ADC0808 { ADC0808_CLK=~ADC0808_CLK; //Dao bit } /*Main Program*/ unsigned char nhietdo; void main() { init(); // hoi tao ngat TH0=TL0=236; lcd_init();//Khoi tao LCD delay_ms(200); lcd_puts("Dang nhiet "); lcd_gotoxy(0,1); lcd_puts("xin cho mot chut"); delay_ms(1000); lcd_clear(); while(1) { lcd_gotoxy(0,0); nhietdo=adc0808_read(0); hienthi(nhietdo); delay_ms(500); } } Thư viện lcd #include #include //Khai bao chan giao tiep LCD16x2 4bit #define LCD_RS P0_0 #define LCD_RW P0_1 #define LCD_EN P0_2 #define LCD_D4 P0_4 #define LCD_D5 P0_5 #define LCD_D6 P0_6 #define LCD_D7 P0_7 /*Ham delay*/ void delay_us(unsigned int t) { unsigned int i; for(i=0;i>2)&1; LCD_D7=(Data>>3)&1; } void LCD_SendCommand(unsigned char command) { LCD_Send4Bit(command >>4); LCD_Enable(); LCD_Send4Bit(command); LCD_Enable(); } void lcd_clear() // ham xoa man hinh { LCD_SendCommand(0x01); delay_us(10); } void lcd_init() //Hàm khoi tao LCD { LCD_Send4Bit(0x00); delay_ms(20); LCD_RS=0; LCD_RW=0; LCD_Send4Bit(0x03); LCD_Enable(); delay_ms(5); LCD_Enable(); delay_us(100); LCD_Enable(); LCD_Send4Bit(0x02); LCD_Enable(); LCD_SendCommand( 0x28 ); LCD_SendCommand( 0x0c); LCD_SendCommand( 0x06 ); LCD_SendCommand(0x01); } void lcd_gotoxy(unsigned char x, unsigned char y) // ham tro toi vi tri tren man hinh { unsigned char address; if(!y) address=(0x80+x); else address=(0xc0+x); delay_us(1000); LCD_SendCommand(address); delay_us(50); } void lcd_putchar(unsigned char Data) // Ham gui mot ky tu ASCII len LCD { LCD_RS=1; LCD_SendCommand(Data); LCD_RS=0 ; } void lcd_puts(char *s) // Ham gui chuoi ky tu len LCD { while (*s) { lcd_putchar(*s); s++; } } void lcd_println( float number) { unsigned char str[5]; sprintf(str,"%3.0f",number); lcd_puts(str); } // truy xuat gia tri lcd Thư viện ADC0808 #define VREF //Khai bao chan giao tiep ADC0808 #define ADC0808_DATA P3 #define ADC0808_A P2_0 #define ADC0808_B P2_1 #define ADC0808_C P2_2 #define ADC0808_ALE P2_3 #define ADC0808_START P2_4 #define ADC0808_EOC P2_5 #define ADC0808_OE P2_6 #define ADC0808_CLK P2_7 /*Ham doc dieu khien ADC0808*/ unsigned char adc0808_read(unsigned char channel) { unsigned char kq; ADC0808_A = channel & 0x01; ADC0808_B = channel & 0x02; ADC0808_C = channel & 0x04; ADC0808_ALE = 1; ADC0808_START = 1; ADC0808_ALE = 0; ADC0808_START = 0; while(ADC0808_EOC); while(!ADC0808_EOC); ADC0808_OE = 1; kq = ADC0808_DATA; ADC0808_OE = 0; return kq; } 5, kết ... mạch đo nhiệt độ LM35 cảm biến nhiệt độ, đầu tín hiệu điện áp biến đổi theo nhiệt độ, 10mV tương ứng với độ C giải đo IC -55 độ đến 150 độ C, điện áp cung cấp từ 4-20VDC Để đo nhiệt độ âm tức nhỏ... thiệu LCD1 602 • LCD thực chất hình kèm IC điều khiển chuyên dụng Việc hiển thị lên LCD chẳng qua việc giao tiếp với IC điều khiển đó, IC tự đảm nhiệm phần công việc đưa liệu hiển thị lên hình... hoạt động) kết nối với mặt đất • Cung cấp xung Cao đến Thấp Bật (E) • Gửi liệu nibble thấp • Cung cấp xung Cao đến Thấp Bật (E) II, hệ thống đo nhiệt độ dùng LM35 ADC0808 8051 hiển thị lên LCD

Ngày đăng: 22/03/2022, 21:40

w