Xem mẫu

  1. TRƯỜNG ĐẠI HỌC TÂY BẮC KHOA TOÁN – LÝ -TIN ----------***---------- BÁO CÁO BÀI TẬP LỚN MÔN : THIẾT BỊ NGOẠI VI & CÔNG NGHỆ GHÉP NỐI Đề tài: VI ĐIỀU KHIỂN HIỂN THỊ NHIỆT ĐỘ LCD Thành viên nhóm I : Lớp K48 Đại học công nghệ thông tin Lại Xuân Thành Đỗ Thanh Tâm Trần Sơn Tùng Nguyễn Văn Chung Nguyễn Thị Ngọc Hà Dương Tiến Phượng Giảng viên bộ môn: Phan Trung Kiên SƠN LA, 6/2011
  2. MỤC LỤC Lập trình Pic dùng CCS PCWH v4.023..........................................................................7 6. Tới đây ta đã đủ công cụ để làm mạch hoàn chỉnh............................................................22 LỜI CẢM ƠN
  3. Sau một thời gian tìm hiểu nhóm I đã tìm hiểu, nghiên cứu và xây dựng VI ĐIỀU KHIỂN HIỂN THỊ NHIỆT ĐỘ LCD.Để hoàn thành tốt bài tập lớn chúng em xin chân thành cảm ơn thầy giáo Phan Trung Kiên trong thời này gian qua đã tận tình hướng dẫn chỉ bảo chúng em trong quá trình thực hiện bài tập lớn. Chúng em cũng xin chân thành cảm ơn thầy cô trong khoa Toán – Lý – Tin trong thời gian qua đã dạy bảo, truyền thụ lại kiến thức cho chúng em. Chúng Em chân thành cảm ơn thầy cô! LỜI NÓI ĐẦU
  4. Ngày nay,các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kĩ thuật và đời sống xã hội.Hầu hết các thiết bị kĩ thuật từ phức tạp cho đến đơn giản như thiết bị điều khiển tự động,thiết bị văn phòng cho đến các thiết bị trong gia đình đều có dùng các bộ vi điều khiển.Và một số ứng dụng ứng dụng cơ bản nhất là sử dụng LCD trong các bảng mạch đo điện áp, đo nhiệt độ, quang báo … Với những kiến thức cơ bản nhất về vi điều khiển và kĩ thuật lập trình,nhóm chúng em xin trình bày một trong những ứng dụng đơn giản của bộ vi điều khiển.Đó là lập trình cho Pic 16F877A để đo điện áp xoay chiều . Sơ lược về cấu trúc Pic 16F877A và các linh kiện sử dụng Sơ đồ nguyên lý, chương trình phần mềm và nguyên lý hoạt động Kết quả, ứng dụng và hướng phát triển I. Giới thiệu phần cứng 1.Trước hết nhóm đã lên mạng tìm hiểu tổng quan về PIC để xem mình nên bắt đầu từ đâu Chủ yếu học từ diễn đàn www.picvietnam.com, tiện thể nhóm xin gửi lời cám ơn tới diễn đàn này.
  5. Nhóm I đã tìm được 1 bài dẫn dắt về PIC của tác giả FALLEAF, và theo đó thì để học PIC ta nên bắt đầu bằng việc tìm hiểu về các khái niệm và làm các công việc -Thanh ghi-register -Cờ-flag -Định thời-Timer -Làm mạch nhấp nháy Led Nhưng nếu search trên mạng với từ khoá PIC và các khái niệm này thì có rất ít, thậm chí nhóm tìm không ra. Lý do đơn giản vì các phần kiến thức này đáng lẽ phải được học trong các môn tiền đề cho PIC như kiến trúc máy tính hay vi xử lý. Nhóm tìm tới hỏi các anh đi trước, và theo hướng dẫn của anh chị khóa trước thì nên tìm hiểu về vi điều khiển 8051 trước, và nên học lập trình bằng ASM Để tìm hiểu 8051, nhóm đã tìm đọc sách về 8051 của tác giả Tống Văn On. Chính trong sách này, nhóm đã hiểu được các khái niệm về thanh ghi, định thời, và ngôn ngữ ASM (chỉ ở mức căn bản) Nhóm I xin được nói về cách hiểu của mình về các khái niệm trên : Thanh ghi Trong một vi xử lý 8051 có rất nhiều thanh ghi (khoảng hơn trăm thanh) mỗi thanh là một chuỗi các bit, mỗi bit có 2 giá trị là 1 hoặc 0 và có thể đuợc gán bởi người lập trình, Đa số thanh ghi có 8 bit, ngoài ra còn có các thanh 13 bit. Mỗi thanh như thế có các chức năng riêng. Có thanh chỉ đơn thuần chỉ để nhớ một giá trị nào đó, thanh ghi 8 bit thì chỉ nhớ được 28 = 256 giá trị từ 0 tới 255 Có thanh dùng để điều khiển, ví dụ thanh ghi cho phép xuất hoặc nhập PORTB. PORTB có 8 chân, mỗi chân được điều khiển là chân xuất hay nhập bởi thanh ghi PORTB. Nếu thanh ghi PORTB có giá trị 00000001b thì có nghĩa là chân B0 là chân nhập dữ liệu, còn các chân B1-B7 là chân xuất dữ liệu Cờ (flag) Cờ cũng là 1bit, nhưng nó có chức năng đặc biệt hơn các bit khác nên người ta đặt tên cho nó. Ta sẽ hiểu kỹ hơn về nó qua một ví dụ trong phần timer
  6. Định thời (Timer) Định thời là một chức năng không thể thiếu của các vi điều khiển, nó cho phép vi điều khiển đếm thời gian. Tuy nhiên không thể đếm một cách trực tiếp như con người được, timer đếm thời gian thông qua việc đếm xung dao động. Một vi điều khiển có khoảng vài timer. Bộ định thời cũng là các thanh ghi, chúng được điều khiển bởi bit định thời. Khi ta set bit định thời bằng 1 thì thanh ghi định thời bắt đầu nhảy số 0, 1, 10 … cho đến khi thanh ghi định thời có giá trị 11111111. Bit 7 của thanh ghi định thời là một cờ, bình thường thì bit này bằng 0, cho đến khi thanh ghi đã đếm lên tới giá trị max thì bit này mới bằng 1, và sau đó thanh ghi timer lại trả về giá trị 0 và bắt đầu đếm lại, , và nó chỉ dừng khi bit định thời được gán bằng 0 trở lại. Cờ này như một cách đánh dấu một chu kỳ đếm, giữa 2 lần cờ này bằng 1 là 256 giá trị đã được đếm Cũng có timer nhiều hơn 8bit Hợp ngữ ASM Vi điều khiển muốn hoạt động được phải có các chỉ dẫn cho nó làm việc, đó là các file hex. Mở một file hex ta thấy toàn những 0 với 1. Con người sẽ mất rất nhiều thời gian để viết nên 1 chương trình toàn 0 với 1, vì vậy người ta xây dựng các ngôn ngữ lập trình. Thay vì viết 1 dòng lệnh toàn 0 với 1 thì ta viết một dòng lệnh khác tương đương nhưng gần gũi hơn với ngôn ngữ con người. Ngôn ngữ càng gần với con người thì có cấp càng cao. ASM là ngôn ngữ gần với file hex nhất. Làm việc với ASM ta chủ yếu làm việc với các bit, như việc set bit bằng 1 hay di chuyển giá trị từ thanh ghi này sang thanh ghi khác,… Khối mạch của chúng ta gồm 3 phần: +''IN'':LM35-dùng để đo nhiệt độ và xuất ra giá trị điện áp tương ứng +"Xử Lý":PIC16F877A-dùng để chuyển đổi giá trị điện áp được xuất ra từ LM35 bằng cách dùng bộ ADC của PIC. +Hiển thị:LCD Để đo nhiệt độ ta dùng bộ ADC trong PIC16F877A,mình sẽ trình bày cụ thể dưới đây: 2. Sau khi tìm hiểu qua sách vở những khái niệm này từ xong, nhóm bắt đầu chính thức tìm hiểu về PIC.
  7. Công cụ mô phỏng hữu hiệu là Proteus V7.7 SP2 Lập trình Pic dùng CCS PCWH v4.023 Ngoài chương trình MPLAB IDE cũng được coi là phần mền lập trình biên dịch khá mạnh cho Pic thì CCs cũng vậy. CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip. Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là:  PCB cho dòng PIC 12 -bit opcodes  PCM cho dòng PIC 14-bit opcodes
  8. PCH cho dòng PIC 16 và 18-bit  http://www.mediafire.com/?taw6o9llcge59t1 Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS, phiên bản này là PCWH Compiler Ver 4.023 Nhóm tìm hiểu về PIC thông qua tutorial của tác giả Nguyễn Trung Chính trên diễn đàn picvietnam, xin cám ơn anh Chính đã viết một tutorial rất hay và căn bản và xin phép lấy các hình ảnh minh hoạ từ tutorial này
  9. Sơ đồ chân của PIC16F877A : Để PIC hoạt động ta cần cấp nguồn cho PIC. Ngoài ra có thể thêm vào bộ dao động thạch anh, và nút nhấn reset:
  10. Và đây là mạch nháy Led PortB:
  11. SƠ ĐỒ KHỐI ĐiỀU KHIỂN PIC16F877A Mô phỏng bằng Proteus: - Mạch nhấp nháy Led PIC16F877A Led Trở 330 Ohm
  12. Dùng 1 DCVolmeter ở chân B0, ta thấy điện áp xuất ra ở chân này thay đổi 0V, 5V sau mỗi thời gian delay Code : #include #device* =16 ADC=8 #FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,N OCPD,NOWRT #use delay (clock=20000000) void main() { //Thiet lap che do cho PORT B Set_tris_b(0x00); //Tat ca PORT B deu la cong xuat du lieu output_b(0xFF); //Mo het cac Led While(TRUE) //Vong lap vo han { output_b(0xFF); //Cho các Led sáng delay_ms(500); // Delay 0.5s output_b(0x00); //Tat het cac Led delay_ms(500); Cho 0.5s } } 3. Sử dụng LCD TC1602A Tinh thể lỏng (liquid crystal) là chất lỏng hữu cơ mà phân tử của nó có khả năng phân cực ánh sáng dẫn đến thay đổi cường độ sáng.Trường tĩnh điện được dùng để điều khiển hướng phân tử tinh thể lỏng.
  13. Thay vì các điểm ảnh riêng biệt là các phần tử phát sáng được định địa chỉ một cách tuần tự. Do vậy, trên các monitor này hình ảnh cũng được phát ra từng dòng một. Quá trình quét ngược cũng không còn nữa vì ở đây đơn giản chỉ là việc thay đổi địa chỉ về phần tử đầu dòng tiếp theo
  14. Cấu trúc LCD Polarizing filter (Bộ lọc phân cực) Điều khiển ánh sáng đi vào và thoát ra • Glass substrate (Hợp chất thuỷ tinh đặc biệt) Lọc chặn điện từ các điện cực • Transparent electrodes (Điện cực trong suốt ) Là các thanh dẫn điện trong suốt cho phép ánh sáng xuyên qua • Alignment layer ( Sắp xếp lớp ) Là hai bề mặt có rãnh, ở giữa là các phân tử tinh thể lỏng, các phân tử được sắp xếp theo hình soắn ốc 900 • Liquid crystals ( Các tinh thể lỏng ) • Spacer ( Khoảng trống ) Duy trì khoảng cách đều giữa các tấm kính • Color filter ( Bộ lọc mầu ) Mầu được lọc và thể hiện khi dùng các bộ lọc R, G và B • Backlighting ( Ánh sáng phía sau ) Ánh sáng được chiếu từ phía sau màn hình xuyên qua các lớp trên, ở màn hình điện thoại, người ta sử dụng ánh sáng chiếu từ xung quanh sau đó dùng lớp phản xạ để hướng ánh sáng chiếu thẳng góc với màn hình từ sau về phía trước. Đây là LCD 2 hàng, mỗi hang 16 ký tự Để sử dụng LCD , ta hãy đọc file “LCD.C” trong thư viện Driver của CCS. Ở đó CCS hướng dẫn cách ta đi dây cho các chân của LCD, đồng thời CCS viết sẵn cho ta các hàm thao tác cho LCD: Sơ đồ chân LCD :
  15. Nguyên tắc hoạt động  Active element ( Transistor ) - Phần tử tích cực  X Electronic - Điện cực X  Y Electronic - Điện cực Y  Light - Ánh sáng  Các điện cực X và Y sắp xếp thành hàng và dãy, mỗi điểm giao nhau có một Transistor trường, chân S đấu vào điện cực Y, chân G đấu vào điện cực X , khi Transistor dẫn thì chân D sẽ có điện áp bằng điện cực Y tạo ra một điện áp chênh lệch với đế trên của LCD Mỗi Transistor sẽ điều khiển một điểm mầu , các tín hiệu ngắt mở được đưa đến điện cực X, tín hiệu Video được đưa đến điện cực Y, điện áp chênh lệch giữa điện cực X và Y sẽ làm Transistor dẫn tạo ra một điểm mầu có cường độ sáng nhất định B. Thiết kế hệ thống I. Sơ đồ mạch
  16. II. Chương trình chính Cách nối dây: // As defined in the following structure the pin connection is as follows: // D0 enable // D1 rs // D2 rw // D4 D4 // D5 D5 // D6 D6 // D7 D7 // LCD pins D0-D3 are not used and PIC D3 is not used.
  17. Các hàm thông dụng lcd_init() : là hàm phải có để báo rằng sẽ sử dụng LCD lcd_putc( char c) : hàm để xuất ký tự ra LCD lcd_gotoxy( BYTE x, BYTE y) : hàm cho phép con trỏ nhảy tới vị trí (x,y) trên LCD Mô phỏng ví dụ dùng LCD bằng Proteus: Code : #define #include "16F877A.h" #device *=16 adc=8 //#device PIC16F877A *=16 #use delay(clock=20000000) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9) #include void main () { lcd_init(); lcd_putc("Do an ky thuat"); } Kết quả:
  18. 4. LM35 Đây là cảm biến nhiệt độ LM35 có 3 chân : 2 chân cấp nguồn và 1 chân xuất điện áp ra tùy theo nhiệt độ Nhiệt độ tăng 1C thì điện áp xuất ra ở chân out của LM35 tăng 10mV Các đặc tính kỹ thuật khác :
  19. Mô phỏng bằng Proteus:
nguon tai.lieu . vn