Tải bản đầy đủ (.doc) (25 trang)

MẠCH báo mức nước HIỂN THỊ LCD DÙNG PIC (có code và layout)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.09 MB, 25 trang )

ĐỒ ÁN 2

MẠCH BÁO MỨC NƯỚC HIỂN THỊ
LCD DÙNG PIC


MỤC LỤC
DANH MỤC CÁC HÌNH VẼ..............................................................................................III
DANH MỤC CÁC BẢNG BIỂU.........................................................................................IV
DANH MỤC CÁC TỪ VIẾT TẮT.......................................................................................V
GIỚI THIỆU CHUNG VỀ ĐỀ TÀI.......................................................................................1
TỔNG QUAN VÀ NGUYÊN LÝ HOẠT ĐỘNG MẠCH..................................................2
KẾT QUẢ MÔ PHỎNG..........................................................................................................8
NHẬN XÉT.............................................................................................................................10
KẾT LUẬN..............................................................................................................................11
TÀI LIỆU THAM KHẢO.....................................................................................................12
PHỤ LỤC A.............................................................................................................................14


DANH MỤC CÁC HÌNH VẼ
HÌNH 2.1: SƠ ĐỒ CHÂN CỦA PIC 16F877A....................................................................3
HÌNH 2.2: CÁC CHÂN NĂNG CƠ BẢN CỦA PIC 16F877A..........................................4
HÌNH 2.3: LCD VÀ SƠ ĐỒ CHÂN CỦA LCD...................................................................5
HÌNH 2.4: CHỨC NĂNG CÁC CHÂN CỦA LCD.............................................................6
HÌNH 2.5: CẢM BIẾN SIÊU ÂM SRF-05 VÀ VỊ TRÍ CÁC CHÂN...............................7
HÌNH 3.6: MẠCH NGUYÊN LÝ TRÊN PROTEUS.........................................................8
HÌNH 3.7: LAYOUT CỦA MẠCH IN MÔ PHỎNG BẰNG PROTEUS.........................8


DANH MỤC CÁC BẢNG BIỂU



DANH MỤC CÁC TỪ VIẾT TẮT

LCD

Liquid Crystal Display

PIC

Programmable Intelligent Computer
Peripheral Interface Controller

ROM

Read-Only Memory

RAM

Random Access Memory

EEPROM

Electrically Erasable Programmable Read-Only Memory

AD

Analog to Digital

CMOS


Complementary Metal-Oxide-Semiconductor


ĐỒ ÁN 2
Trang 1/20

GIỚI THIỆU CHUNG VỀ ĐỀ TÀI
1.1 Giới thiệu chung về sản phẩm
Ngày nay, trong sự phát triển không ngừng nghỉ của khoa học kỹ thuật, việc đào sâu
phát triển những thành quả của những thành công và nghiên cứu những hướng đi
mới nhằm phục vụ cho việc cải thiện đời sống xã hội cũng như gia tăng sản xuất là
việc làm cấp thiết. Trong đề tài nghiên cứu này, em đã tìm hiểu về mạch đo mực
nước hiển thị LCD dùng PIC vi điều khiển, một đề tài hay và có nhiều ứng dụng
thực tiễn trong xã hội. Mạch dùng vi điều khiển hiển thị qua LCD cho ta các kết quả
chính xác và nhanh nhất có thể, giúp ta thay thế những phương thức đo truyền thống
không thực sự chính xác và nhiều rủi ro nguy hiểm cho người thực hiện phép đo.
Lịch sử
Các tiểu mục của luận văn được trình bày và đánh số và nhóm chữ số, nhiều nhất
gồm 04 chữ số với số thứ nhất chỉ số chương (Thí dụ: 4.1.2.1 chỉ tiểu mục 1, nhóm
tiểu mục 2, mục 1, Chương 04). Tại mỗi nhóm tiểu mục phải có ít nhất 02 tiểu mục,
nghĩa là không thể có tiểu mục 2.1.1 mà không có tiểu mục 2.1.2 tiếp theo.
1.1.1 Phương thức nghiên cứu
Qua đề tài nghiên cứu này, em đã có cơ hội vận dụng những kiến thức mà em
đã được học cũng như đào sâu tìm hiểu về những linh kiện liên quan như
PIC, LCD.....
Mô phỏng mạch qua proteus, cũng như có những kinh nghiệm quý giá thông
qua quá trình thực nghiệm và hoàn thiện sản phẩm đề tài
1.1.2 Kết quả nghiên cứu
Việc xây dựng và thực nghiệm đã giúp em hoàn thiện mạch đo mực nước
hiển thị qua LCD dùng PIC vi điều khiển có thể đo và đọc được kết quả một

cách chính xác và nhanh chóng nhất. Đồng thời đảm bảo tiêu chí tiết kiệm
chi phí và kích thước nhỏ gọn đúng yêu cầu của đề tài.
Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 2/20

TỔNG QUAN VÀ NGUYÊN LÝ HOẠT ĐỘNG MẠCH
1.2 Tổng quan về mạch
1.2.1 Sơ đồ khối
Bộ nguồn

Sóng thu

Sóng phát

chân echo

chân trigger

Bộ vi xử lý

Bộ hiển thị LCD
1.2.2 Chức năng từng khối
-

Khối nguồn: cung cấp một nguồn ổn định cho toàn mạch

-


Khối xử lý: xử lý thông tin thu nhận được thông qua vi điều khiển để tính
toán và đưa ra những giá trị kết quả chính xác nhất

-

Khối hiển thị: hiển thị những giá trị kết quả qua màn hình LCD

1.3 Linh kiện và chức năng
1.3.1 PIC 16F877A
Nhà sản xuất: Microchip

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 3/20

Thuộc dòng PIC16
5 Port xuất nhập với 35 Pin I/O
Tần số hoạt động tối đa 20Mhz
Điện áp hoạt động từ 2.5V-5.5V
Hỗ trợ 8KB flash, 256Byte Internal EEPROM
Có đầy đủ chức năng cần thiết của vi điều khiển: 14kênh ADC 10 Bit, CCP
(Capture, Compare, PWM) ,MSSP (UART, SPI, I2C),

3 Bộ Timer: Timer 0, Timer 1, Timer 2

Hình 2.1: Sơ đồ chân của PIC 16F877A


Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 4/20

Hình 2.2: Các chân năng cơ bản của PIC 16F877A

Nguyên lý hoạt động của PIC



















8 K flash ROM
368 bytes RAM

256 bytes EEPROM
5 port (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập
2 bộ định thời 8 bits (timer 0 và timer 2), 1 bộ định thời 16 bits (timer
1) có thể hoạt động với chế độ tiết kiệm năng lượng( sleep mode) với
xung clock ngoài.
2 bộ CCP (Capture/Compare/PWM)
1 bộ biến đổi AD 10 bits, 8 ngõ vào
1 bộ so sánh tương tự (Compartor)
1 bộ định thời giám sát (WatchDog timer)
1 cổng song song 8 bits với các tín hiệu điều khiển
1 cổng nối tiếp
12 nguồn ngắt
Có chế độ tiết kiệm năng lượng
Được nạp chương trình bằng cổng ICSP (In-Circuit Serial
Programing)
Được chế tạo trên công nghệ CMOS
35 tập lệnh có độ dài 14 bits
Tần số hoạt động tối đa là 20MHz

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 5/20

1.4 LCD
Thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụng rộng rãi và phổ biến
trong nhiều ứng dụng thực tế. LCD có nhiều ưu điểm hơn so với các thiết bị hiển thị
khác :
 Có thể hiển thị ký tự đa dạng, trực quan (chữ, số, và ký tự đồ họa)

 Có thế đưa vào nhiều mạch ứng dụng khác nhau dễ dàng
 Ít tốn tài nguyên hệ thống và giá thành tương đối rẻ

Hình 2.3: LCD và sơ đồ chân của LCD

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 6/20

Hình 2.4: Chức năng các chân của LCD

1.5 Cảm biến siêu âm SRF-05
Cảm biến siêu âm SRF-05 sử dụng sóng siêu âm (sona), là một loại sóng siêu âm
cao tầng mà con người không thể nghe thấy được. Tuy nhiên, ta co thể thấy được sự
hiện diện của loại sóng siêu âm này trong tự nhiên.
Nguyên tắc sử dụng sóng siêu âm để định vị rất đơn giản, có thể tóm gọn trong ba
bước sau:
Vật chủ phát ra 1 sóng âm
Sóng âm này va chạm với môi trường xung quanh và phản xạ lại

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 7/20

Dựa vào thời gian thu phát , ta có thể xác định được khoảng cách giữa vật chủ và
môi trường xung quanh

Cảm biến SRF-05 cũng hoạt động dựa trên nguyên lý trên, với 5 chân để kết nối với
vi điều khiển

Hình 2.5: Cảm biến siêu âm SRF-05 và vị trí các chân

Vcc: cấp nguồn cho cảm biến(5v)
Trigger: kích hoạt quá trình phát của sóng âm. Quá trính kính hoạt khi một chu kỳ
điện cao/thấp diễn ra
Echo: bình thường sẽ ở trạng thái 0v, nhưng sẽ được kích hoạt lên 5v ngay sau nhận
được tính hiệu trả về, sau đó lại trở về tín hiệu 0v
Gnd: nối đất
Out: không sử dụng
1.6 Nguyên lý hoạt động của mạch
Ta kích một xung clock cạnh lên vào chân Trigger để chân Trigger kích hoạt quá
trình phát của sóng âm từ chân đến vật với vận tốc sóng âm là 0.0344cm/us (344
m/s) và nhận được một kết quả là d1. Lúc này chân Echo được kích lên sau khi
nhận dược tín hiệu trả về, ta nhận được kết quả là d2.
Với khoảng cách giữa 2d là bằng nhau.
Mà d = vt
Suy ra 2d = vt
 d= vt/2
 d= t/2/v
 d= t/58 (với v của sóng âm v=0,0344 cm/us)
Thông qua xử lý vi điều khiển, ta có thể xuất kết quả sau khi tính toán và hiển thị
trên LCD
Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 8/20


KẾT QUẢ MÔ PHỎNG
1.7 Mô hình mô phỏng

Hình 3.6: Mạch nguyên lý trên Proteus

Hình 3.7: Layout của mạch in mô phỏng bằng proteus

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 9/20

1.8 Kết quả mô phỏng

Hình 3.2: mạch thực tế

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 10/20

NHẬN XÉT
1.9 Nhận xét 1
1.9.1 Ưu điểm
-

Mạch có sự ổn định, tính chính xác cao

Gọn nhẹ, đơn giản, và dễ sử dụng
Dễ khắc phục khi xảy ra sự cố
Chi phí thấp
Hiện thị kết quả thông qua LCD giúp dễ đọc kết quả trong quá trình sử dụng

1.9.2 Nhược điểm
-

Do sử dụng sóng siêu âm để đo đạc nên đôi khi xảy ra tình trạng không nhận
được sóng phát hoặc sóng truyền về
Những ảnh hưởng như rung giật do môi trường trong quá trình đo đạc cũng
gây ảnh hưởng lên kết quả

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 11/20

KẾT LUẬN
1.10

Kết luận

Trong quá trình thực hiện đề tài lần này, em rút ra được kết luận: những linh kiện
như PIC 16f877a, cảm biến SRF-05 , thiết bị hiển thị LCD,…. Tương đối phổ biến
và đơn giản, dễ áp dụng trong việc học tập nghiên cứu nhằm làm quen với linh kiện
này. Đây cũng là những linh kiện dễ gặp trong nhiều ứng dụng thực tế đời sống
hằng ngày. Qua việc tìm hiểu những linh kiện như PIC, cảm biến SRF-05, hay LCD
giúp thực hiện những công việc như xác định khoảng cách vật, điều khiển hiển thị

ngày càng dễ dàng.

1.11

Hướng phát triển

Trong đề tài lần này, chỉ mang tính chất nghiên cứu thực nghiệm, nên mô hình còn
có phần thô sơ hơn so với mạch trên thực tế.
Mạch được áp dụng thực tiễn trong việc đo đạc mực nước cũng như việc nghiên
cứu trên việc lên xuống của những mực nước

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 12/20

TÀI LIỆU THAM KHẢO
Tiếng Việt:
Quách Ngọc Ân (1992), “Nhìn lại hai năm phát triển lúa lai”, Di tuyền học ứng
dụng, 98(1), tr. 10-16.
Bộ nông nghiệp & PTNT (1996), Báo cáo tổng kết 5 năm (1992-1996) phát triển
lúa lai, Hà Nội.
Nguyễn Hữu Đống, Đào Thanh Bằng, Lâm Quang Dụ, Phan Đức Trực (1997), Đột
biến – Cơ sở lý luận và ứng dụng, Nhà xuất bản nông nghiệp, Viện khoa học kỹ
thuật nông nghiệp Việt Nam, Hà Nội.
Nguyễn Thị Gấm (1996), Phát hiện và đánh giá một số dòng bất dục đực cảm ứng
nhiệt độ, Luận văn thạc sĩ khoa học nông nghiệp, Viện khoa học kỹ thuật nông
nghiệp Việt Nam, Hà Nội.
……….

Võ Thị Kim Huệ (2000), Nghiên cứu chẩn đoán và điều trị bệnh…, Luận án Tiến sĩ
y khoa, Trường đại học y Hà Nội, Hà Nội.
Tiếng Anh:
Anderson J.E. (1985), The Relative Inefficiency of Quota, The Cheese Case,
American Economic Review, 75(1), pp. 178-90.
Borkakati R. P.,Virmani S. S. (1997), Genetics of thermosensitive genic male
sterility in Rice, Euphytica 88, pp. 1-7.
Boulding K.E. (1955), Economics Analysis, Hamish Hamilton, London.
Burton G. W. (1988), “Cytoplasmic male-sterility in pearl millet (penni-setum
glaucum L.)”, Agronomic Journal 50, pp. 230-231.
Central Statistical Oraganisation (1995), Statistical Year Book, Beijing.
FAO (1971), Agricultural Commodity Projections (1970-1980), Vol. II. Rome.

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 13/20

Institute of Economics (1988), Analysis of Expenditure Pattern of Urban
Households in Vietnam, Departement pf Economics, Economic Research Report,
Hanoi.

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 14/20

PHỤ LỤC A

#include <16F877A.h>
#FUSES NOWDT

//No Watch Dog Timer

#FUSES NOBROWNOUT

//No brownout reset

#FUSES NOLVP

//No low voltage prgming, B3(PIC16) or B5(PIC18)

used for I/O
#use delay(crystal=8000000)
#include<lcd4.h>
/
*--------------------------------------------------------------------------------------------------------------------------------------------------*/
// Cach ket noi cac chan LCD voi cac chan vi dieu khien.
/*#define LCD_RS_PIN
#define LCD_RW_PIN

PIN_D1
PIN_D2

#define LCD_ENABLE_PIN

PIN_D3

#define LCD_DATA4


PIN_D4

#define LCD_DATA5

PIN_D5

#define LCD_DATA6

PIN_D6

#define LCD_DATA7

PIN_D7 */

/
*******************************************************************
*******************************************************************
************
*******************************************************************
*******************************************************************
************/
//Khai bao bien toan cuc
#define trigger pin_B7 //Dinh nghia chân RB7 la chan phat
Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 15/20


#define echo pin_B0 //Dinh nghia chân RB0 la chan thu
#define button pin_C0
#define tang pin_C1
#define giam pin_C2
unsigned int tram,chuc,donvi;
unsigned int tram1,chuc1,donvi1;
unsigned int tram2,chuc2,donvi2;
unsigned int time,Distance,mucNuoc;
int16 menu=0, count=0;
void khoiTao_lcd();
void tinhToan();
void clear_EEPROM();
void menu_Mode()
{
if(input(button)==0)
{
while(input(button)==0);
menu++;
if(menu==1)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Do Muc Nuoc");
lcd_gotoxy(1,2);
printf(lcd_putc,"Muc Nuoc: %d%d%d cm", tram2,chuc2,donvi2);
}
else if(menu==2)

Mạch báo mức nước hiển thị LCD dùng PIC



ĐỒ ÁN 2
Trang 16/20

{
menu=0;
}
}
}

void value_EEPROM()
{
if(input(tang)==0){
while(input(tang)==0);
count++;
write_eeprom(0x00,count);
}
if(input(giam)==0){
while(input(giam)==0);
count=count-1;
write_eeprom(0x00,count);
}
}
void chieuCao()
{
while(0value_EEPROM();
lcd_gotoxy(1,1);
printf(lcd_putc,"Nhap chieu cao");
lcd_gotoxy(1,2);
tram1=Read_eeprom(0x00)/100;


Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 17/20

chuc1=(Read_eeprom(0x00)%100)/10;
donvi1=(Read_eeprom(0x00)%100)%10;
printf(lcd_putc,"chieuCao: %d%d%d cm",tram1,chuc1,donvi1);
clear_EEPROM();
delay_ms(50);
}
}
#INT_TIMER1
void Ngat_Timer1(void)
{
disable_interrupts(GLOBAL);
time+=0xffff;
enable_interrupts(GLOBAL);
}
#INT_EXT
void Ngat_Ngoai(void)
{
disable_interrupts(GLOBAL);
time+=get_timer1();
enable_interrupts(GLOBAL);
}
/
*******************************************************************

*******************************************************************
************/
/
*******************************************************************

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 18/20

*******************************************************************
***********/
//Chuong trình chính
void main()
{
khoiTao_lcd();
set_tris_D(0x00); //Thiet lap port D la ngo ra
set_tris_B(0b01111111);
set_tris_C(0xFF);
output_low(trigger);
setup_timer_1(T1_Internal|T1_DIV_BY_2);
ext_int_edge(H_TO_L);

// ngat canh xuong

enable_interrupts(INT_TIMER1);
enable_interrupts(INT_EXT);

// kich hoat ngat ngoai


disable_interrupts(GLOBAL);
while(TRUE)
{
Output_high(trigger);
delay_ms(15);
Output_low(trigger);
while(input(echo)==0); //Doi chan Echo keo len muc 1
set_timer1(0);
enable_interrupts(GLOBAL);
tinhToan();
menu_Mode();
if(input(pin_B4)==0)
{
chieuCao();
}

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 19/20

if(menu==0)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Do Khoang Cach");
lcd_gotoxy(1,2);
printf(lcd_putc,"Distance: %d%d%d cm",tram,chuc,donvi);
}

clear_EEPROM();
delay_ms(500);
}
}
void tinhToan()
{
disable_interrupts(GLOBAL);
Distance=(time/58);
tram=Distance/100;
chuc=(Distance%100)/10;
donvi=Distance%100%10;
mucNuoc =Read_eeprom(0x00) - Distance;
tram2=mucNuoc/100;
chuc2=(mucNuoc%100)/10;
donvi2=(mucNuoc%100)%10;
time=0;
}
void khoiTao_lcd()
{
lcd_init(); //Khoi tao lcd

Mạch báo mức nước hiển thị LCD dùng PIC


ĐỒ ÁN 2
Trang 20/20

lcd_putc('\f'); // Xóa trang man hinh lcd
}
void clear_EEPROM()

{
if(input(tang)==0 && input(giam)==0){
delay_ms(10);
count=0;
Write_eeprom(0x00,count);
}
}

Mạch báo mức nước hiển thị LCD dùng PIC


×