Lời mở đầu Với sự phát triển không ngừng của khoa học công nghệ, cuộc sống con người ngày càng trở nên tiện nghi và hiện đại hơn. Điều đó đem lại cho chúng ta nhiều giải pháp tốt hơn, đa dạng hơn trong việc xử lý những vẫn đề tưởng chừng như rất phức tạp gặp phải trong cuộc sống. Việc ứng dụng các thành tựu khoa học kỹ thuật hiện đại trong tất cả các lĩnh vực đã và đang phổ biến trên toàn thế giới, thay thế những phương pháp thủ công, lạc hậu và ngày càng được cải tiến hiện đại hơn, hoàn mỹ hơn. Cùng với sự phát triển chung đó, nước ta cũng đang mạnh mẽ tiến hành công cuộc công nghiệp hóa và hiện đại hóa để theo kịp sự phát triển của các nước trong khu vực và trên thế giới. Trong đó lĩnh vực tự động hóa đang ngày càng đóng vai trò quan trọng trong việc phát triển kinh tế và đời sống con người. Sự phổ biến của nó đóng góp không nhỏ tới sự phát triển của các ngành sản xuất, giải trí,.. trong những năm gần đầy ứng dụng vi điều khiển vào trong các hệ thống tự động đã có sự phát triển mạnh mẽ với nhiều hình thức, phương pháp tiếp cận, chia sẻ thông tin hiện đại và toàn diện hơn. Với lòng đam mê, yêu thích của mình trong lĩnh vực này, em đã quyết định chọn đề tài “ ĐO NHIỆT ĐỘ HIỂN THỊ KẾT QUẢ TRÊN LCD” làm đồ án môn học. Trong thời gian thực hiện đề tài ngắn cộng với kiến thức còn nhiều hạn chế nên đồ án này không tránh khỏi những thiếu sót, em rất mong nhận được sự nhận xét, đóng góp ý kiến của thầy cô và các bạn sinh viên.
LỜI MỞ ĐẦU Lời mở đầu Với phát triển không ngừng khoa học công nghệ, sống người ngày trở nên tiện nghi đại Điều đem lại cho nhiều giải pháp tốt hơn, đa dạng việc xử lý đề tưởng chừng phức tạp gặp phải sống Việc ứng dụng thành tựu khoa học kỹ thuật đại tất lĩnh vực phổ biến toàn giới, thay phương pháp thủ công, lạc hậu ngày cải tiến đại hơn, hoàn mỹ Cùng với phát triển chung đó, nước ta mạnh mẽ tiến hành công công nghiệp hóa đại hóa để theo kịp phát triển nước khu vực giới Trong lĩnh vực tự động hóa ngày đóng vai trò quan trọng việc phát triển kinh tế đời sống người Sự phổ biến đóng góp không nhỏ tới phát triển ngành sản xuất, giải trí, năm gần đầy ứng dụng vi điều khiển vào hệ thống tự động có phát triển mạnh mẽ với nhiều hình thức, phương pháp tiếp cận, chia sẻ thông tin đại toàn diện Với lòng đam mê, yêu thích lĩnh vực này, em định chọn đề tài “ ĐO NHIỆT ĐỘ HIỂN THỊ KẾT QUẢ TRÊN LCD” làm đồ án môn học Trong thời gian thực đề tài ngắn cộng với kiến thức nhiều hạn chế nên đồ án không tránh khỏi thiếu sót, em mong nhận nhận xét, đóng góp ý kiến thầy cô bạn sinh viên 1|Page A: SƠ ĐỒ NGUYÊN LÝ : Sơ đồ nguyên lý đo hiển thị nhiệt độ LCD -Khối mạch gồm phần: +LM35-dùng để đo nhiệt độ xuất giá trị điện áp tương ứng +"Xử Lý"IC16F877A-dùng để chuyển đổi giá trị điện áp xuất từ LM35 cách dùng ADC PIC +Hiển thị:LCD I)linh kiện sử dụng mạch : -ML35 -PIC16F877A -thạch anh 20MHZ 2|Page -bộ nguồn 5V (7805) -giắc cắm chân -màn hình LCD(16X2) -nút bấm -1 trở (220 ),2 trở (10k) -2 tụ hóa (1uF),2 tụ gốm(33pF) -1 chiết áp (10k) -1 led báo nguồn II) nguyên lý làm việc chung mạch điện - Mạch lấy nguồn chiều (DC) với điện áp 1V đến 9V để đưa vào ngõ IN ổn áp IC 7805 ngõ ổn áp (OUT) nguồn VCC để cung cấp cho mạch vi điều khiển hoạt động thông qua đền led báo nguồn sáng - Cảm biến nhiệt độ (ML35) đo nhiệt độ môi trường nối vào chân vào (RA1/NA1) hoạt động cách cho giá trị điện định chân V_out (chân giữa) ứng với nhiệt độ ,đo điện chân pin A0 ardunio ta có nhiệt độ - Pic16f877a xử lý liệu dựa code nạp xuất nhiệt độ LCD 16x2 1) nguyên lý hoạt động ổn áp 7805( khối ổn áp) 3|Page IC LM 7805 IC LM7805 protues -Một số đặc điểm thông số LM7805 Uout 5.25V Iout max =1A 7V Uin 20V 5.0mA Iout Imax Khối ổn áp 7805 khối dùng để ổn áp điện 5V, cấp nguồn ổn định cho vi điều khiển Mạch lấy nguồn chiều có giá trị điện áp 7V đến 9V để đưa vào ngõ IN với tụ hóa (0.1uF) mắc song song giúp lọc dòng điện xoay chiều IC có có ngõ ổn định V ,ngõ nguồn VCC để cấp cho mạch vi điều khiển hoạt động 2) ML35 4|Page Giới thiệu cảm biến LM35 +LM35 cảm biến nhiệt độ analog Nhiệt độ xác định cách đo hiệu điện ngõ LM35 → Đơn vị nhiệt độ: °C 5|Page → Nhiệt độ thay đổi tuyến tính: 10mV/°C +LM35 không cần phải canh chỉnh nhiệt độ sử dụng +Độ xác thực tế: 1/4°C nhiệt độ phòng 3/4°C khoảng 2°C tới 150°C +LM35 có hiệu cao, công suất tiêu thụ 60uA +Cảm biến LM35 hoạt động cách cho giá trị hiệu điện đị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 hiệu điện 5V, chân phải nối đất, đo hiệu điện chân pin A1 arduino có nhiệt độ (0-100ºC) công thức: float temperature = (5.0*analogRead(A1)*100.0/1023.0); +thông qua chuyển đổi ADC biến đôi tín hiệu từ cảm biến ML35 tín hiệu điện áp đo chân NA1chuyển đổi thành tín hiệu số ( nhiệt độ).vì 16f877A ADC 10 bit tức Vref=5V mức ADC tương ứng với Vref/số mức Mỗi mức ADC tương ứng với 5V/1023=4.88 mV.điện áp AN so sánh để đưa để đưa mức ADC tương ứng + LM35có thể tự tạo cho mạch cảm biến nhiệt độ sử dụng LM35 tự động ngắt điện nhiệt độ vượt ngưỡng tối đa, đóng điện nhiệt độ thấp ngưỡng tối thiểu thông qua module rơ le LM35 thay đổi nhiệt độ nhanh xác 3) PIC16F877A 6|Page Pic 16f877a - Để vi điều khiển hoạt động cần thành phần sa 7|Page - Sơ đồ mạch điện đơn giản vận hành pic16f877a 3.1) cấp nguồn V cho vi điều khiển + VDD 5V nối với chân 32,11 +GRD VSS 0V nối với chân 31,12 3.2)mạch tạo dạo động thạch anh 8|Page Sơ dồ khối thạch anh mắc cở chân 13,14 vi điều khiển -Một tạo dao động (thạch anh RC) nối đến chân OSC1 (chân 13) OSC2 (chân 14) sử dụng dao động thạch anh 20MHz Thạch anh tạo xung dao dộng xét chi tiết vi điều khiển có CPU, timer,CPU bao gồm mạch logic Mạch logic cần hoạt động cần có xung clock,timer gồm dãy FF cần có xung để đếm Để chạy câu lệnh pic vi điều khiển cần tạo xung nhịp, tần số vào thạch anh nối chân 13,14 pic với thạch anh sử dụng có tần số 20MHZ,có nhịp xung 1MHZ Để tăng độ ổn định tần số người ta dùng thêm tụ nhỏ C1 = C3=33pF tụ bù nhiệt độ ổn tần 3.3) mạch reset Sơ đồ mạch reset nối chân số pic - Chân MCLR không nối đất Khi MCLD nối đất (chẳng hạn, thông qua nút ấn nhả), vi điều khiển tự động reset 9|Page - Mạch reset đảm bảo hệ thống bắt đầu làm việc vi điêu khiển cấp điện hoạt động mà hệ thống bị lỗi cần tác động mà hệ thống bị lỗi càn tác động cho hệ thông hoạt động trở lại trạng thái băn đầu - chân reset: sử dụng chế độ reset từ chân MCLR vi điều khiển reset chân MCLR chuyển từ mưc logic 1→0 Bình thường công tắc hở,chân MCLR vi điều khiển mang mắc logic 1,với R2=10k không xảy sụt áp để đảm bảo điện áp cung cấp cho vi điều khiển ấn công tắc chân MCLR nối với GND nên mức vi điều khiển reset 3.4) Màn hình LCD LCD sử dụng mạch LCD 16x2 4bit LCD có khả hiển thị kí tự đa dạng , trực quan ( chữ số ksi tự đồ họa ) dẽ dàng đưa vào giao thức khác ,tốn tài nguyên hệ thống giá thành rẻ -Các chân chức chân LCD 10 10 | P a g e Chân số Tên VSS Chức Chân nối đất LCD VDD VEE RS Chân cấp nguồn cho LCD Điều chỉnh độ tương phản LCD Chọn ghi Nối RS với mức logic 0(VSS) mức logic (VDD) để chọn RW E 7-14 DB0-DB7 Chân chọn chế độ dọc ghi nối chân với mức logic để LCD hoạt động chế độ ghi,hoặc nối với logic để LCD chế độ dọc Chân cho phép sau tín hiệu đặt lên Bus BO-B7, lệnh chấp nhận có xung cho phép chân E đường bus liệu để trao đổi thông tin với MPU B) LƯU ĐỒ THUẬT TOÁN VÀ CHƯƠNG TRÌNH I LƯU ĐỒ THUẬT TOÁN BẮT ĐẦU TRISD=0 PORT=0 TRIS_A1=0 LCD_setdatata(0x00) ANSEL=0 ANSELH=0 adcValue = ADC_read(0) voltage=adcValue*5000f/1023; tmp= voltage/10 tmp= voltage/10; 11 11 | P a g e ByteToStr (tmp,buffer); lcd_out(2,1,buffer) ; delay_ms(500); lcd_out(char) Hiển thị kết hình LCD KẾT THÚC II) CODE THUẬT TOÁN // khao báo su ket noi chan cua lcd voi chan cua pic sbit LCD_RS at RD2_bit; sbit LCD_EN at RD3_bit; sbit LCD_D4 at RD4_bit; sbit LCD_D5 at RD5_bit; sbit LCD_D6 at RD6_bit; sbit LCD_D7 at RD7_bit; 12 12 | P a g e sbit LCD_RS_Direction at TRISD2_bit; sbit LCD_EN_Direction at TRISD3_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; // End LCD module connections //chuong trinh hien thi ki tu "o" o phan hien thi lcd const char character[] = {14,17,17,14,0,0,0,0,0,0,0}; void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(73); for (i = 0; i[...]... TRIS_A1=0 LCD_ setdatata(0x00) ANSEL=0 ANSELH=0 adcValue = ADC_read(0) voltage=adcValue*5000f/1023; tmp= voltage/10 tmp= voltage/10; 11 11 | P a g e ByteToStr (tmp,buffer); lcd_ out(2,1,buffer) ; delay_ms(500); lcd_ out(char) Hiển thị kết quả ra màn hình LCD KẾT THÚC 4 II) CODE THUẬT TOÁN // khao báo su ket noi chan cua lcd voi chan cua pic sbit LCD_ RS at RD2_bit; sbit LCD_ EN at RD3_bit; sbit LCD_ D4 at... tren LCD Lcd_Cmd( _LCD_ CURSOR_OFF); // dua con tro ve //khoi tao lcd ADC_Init(); lcd_ out(1,1,"SV THUC HIEN"); //hien thi chuoi ki tu o vi tri hang 1 cot 1 lcd_ out( 2,1,"NGUYEN PHUONG"); delay_ms(500); lcd_ cmd( _LCD_ CURSOR_OFF); lcd_ cmd( _LCD_ CLEAR); delay_ms(1500); lcd_ out(1,3,"NHIET DO LA"); delay_ms(1000); //chuyen doi tinh hieu tng tu thanh so ( tu dien áp thành nhiet do)và hien thi nhiet do len LCD. .. RD4_bit; sbit LCD_ D5 at RD5_bit; sbit LCD_ D6 at RD6_bit; sbit LCD_ D7 at RD7_bit; 12 12 | P a g e sbit LCD_ RS_Direction at TRISD2_bit; sbit LCD_ EN_Direction at TRISD3_bit; sbit LCD_ D4_Direction at TRISD4_bit; sbit LCD_ D5_Direction at TRISD5_bit; sbit LCD_ D6_Direction at TRISD6_bit; sbit LCD_ D7_Direction at TRISD7_bit; // End LCD module connections //chuong trinh con hien thi ki tu "o" o phan hien thi lcd const...Chân số 1 Tên VSS Chức năng Chân nối đất của LCD 2 3 4 VDD VEE RS Chân cấp nguồn cho LCD Điều chỉnh độ tương phản của LCD Chọn thanh ghi Nối RS với mức logic 0(VSS) hoặc mức logic 1 (VDD) để chọn thanh 5 RW 6 E 7-14 DB0-DB7 Chân chọn chế độ dọc ghi nối chân với mức logic 0 để LCD hoạt động ở chế độ ghi,hoặc nối với logic 1 để LCD ở chế độ dọc Chân cho phép sau khi các tín hiệu được đặt lên... pos_char) { char i; Lcd_ Cmd(73); for (i = 0; i