Xem mẫu
- 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
- 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
- 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
- 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.
- 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
- Đị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.
- 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
- 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
- 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:
- Và đây là mạch nháy Led PortB:
- 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
- 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.
- 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
- 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 :
- 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
- 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.
- 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ả:
- 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 :
- Mô phỏng bằng Proteus:
nguon tai.lieu . vn