1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo tổng kết môn học vi Điều khiển Đề tài Điều khiển hiển thị nhiệt Độ lcd

19 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Điều khiển hiển thị nhiệt độ LCD
Tác giả Nguyễn Văn Pháp, Trần Đoàn Anh Kiện
Người hướng dẫn Nguyễn Trọng Hải
Trường học Trường Đại học Công nghệ TP. Hồ Chí Minh
Chuyên ngành Công nghệ kỹ thuật ô tô
Thể loại Báo cáo tổng kết môn học
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 19
Dung lượng 2,98 MB

Nội dung

LỜI CẢM ƠN Sau thời gian học tập và tìm hiểu, nhóm em xin gửi lời cảm ơn chân thành đến giảng viên hướng dẫn môn học “Vi Điều Khiển” là thầy Nguyễn Trọng Hải đã nhiệt tình hướng dẫn,

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH

VIỆN KỸ THUẬT HUTECH

BÁO CÁO TỔNG KẾT MÔN HỌC

VI ĐIỀU KHIỂN

Đề tài: Điều Khiển Hiển Thị Nhiệt Độ LCD

Ngành: Công nghệ kỹ thuật ô tô Khoa/Viện: Viện Kỹ Thuật

Hutech

Giảng viên hướng dẫn: Nguy n Tr ng H iễn Trọng Hải ọng Hải ải

Sinh viên thực hiện:

Nguyễn Văn Pháp

Trần Đoàn Anh Kiện

MSSV: 1911252973 MSSV: 1911255727

Lớp: 19DOTD2 Lớp: 19DOTD2

Tp.HCM, ngày 20 tháng 4 năm 2024

Trang 2

LỜI CẢM ƠN



Sau thời gian học tập và tìm hiểu, nhóm em xin gửi lời cảm ơn chân thành đến giảng viên hướng dẫn môn học “Vi Điều Khiển” là thầy Nguyễn Trọng Hải đã nhiệt tình hướng dẫn, tạo mọi điều kiện thuận lợi giúp đỡ các thành viên trong nhóm trong suốt quá trình nghiên cứu và hoàn thiện bài báo cáo này

Tuy nhiên, chúng em thực hiện báo cáo môn học trong thời gian và kiến thức có hạn nên có thể sẽ không tránh khỏi những sai sót trong quá trình thực hiện Rất mong nhận sự đóng góp ý kiến của thầy cô, giảng viên hướng dẫn để nhóm em có thể rút kinh nghiệm để được hoàn thiện hơn

Nhóm xin trân trọng cảm ơn !!

Trang 3

MỤC LỤC

I.Giới thiệu phần cứng 4

1.Tổng quan về Pic 4

2.Công cụ mô phỏng Proteus 5

3 Sử dụng LCD TC1602A 10

II.Thiết Kế Hệ Thống 13

1.Sơ đồ mạch 13

2.Chương trình chính 13

3 Chức năng ADC của PIC16F977A 16

4.Mạch hoàn chỉnh 16

TÀI LIỆU THAM KHẢO 19

Trang 4

NỘI DUNG BÁO CÁO

I Giới thiệu phần cứng

1.Tổng quan về Pic

Các khái niệm:

- 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 2® = 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

Trang 5

2 Công cụ mô phỏng Proteus:

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 dịch 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

Sơ đồ chân của PIC16F877A

Trang 7

Để 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:

Trang 8

Và đây là mạch nháy Led PortB:

Trang 9

Mô phỏng bằng Proteus:

Mạch nhấp nháy Led

 PIC16F877A

 Led

Trang 10

 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<16f877a.h>

#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

}

}

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.

Trang 11

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

Trang 12

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

Trang 13

II Thiết kế hệ thống

1 Sơ đồ mạch

2 Chương trình chính

Cách nối dây :

// As defined in the following structure the pin connection is as

follows:

//

DO enable

//

D1 rs

D2 rw

Trang 14

D4 D4

11

D5 D5

ᎠᏮ ᎠᏮ

//

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 <16f877a.h>

#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 <LCD.C>

void main()

{

lcd_init( ;

lcd_putc("Do an ky thuat");

}

Kết quả:

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 độ

Trang 15

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 :

Features

■Calibrated directly in Celsius (Centigrade) Linear + 10.0 mV/°C scale factor

0.5°C accuracy guaranteeable (at +25°C)

■Rated for full -55° to +150°C range

■Suitable for remote applications

■Low cost due to wafer-level trimming

■ Operates from 4 to 30 volts

Less than 60 μA current drain A current drain

Low self-heating, 0.08°C in still air Nonlinearity only ±1⁄4°C typical

Low impedance output, 0.1 $2 for 1 mA load

Nhiệt độ là 27C, điện áp xuất ra là V=0.27176 chứng tỏ sự tăng 10mV /C là khá chính xác

Trang 16

Khi mô phỏng Proteus, nếu khối LM35 không hoạt động, thì click chuột phải/ edit properties/ bỏ check exclude from Simulation đi

3 Chức năng ADC của PIC16F977A

Chức năng ADC cho phép PIC nhận tín hiệu tương tự từ các chân có hỗ trợ ADC và chuyển tín hiệu đó sang tín hiệu số để xử lý

Các chân có hỗ trợ ADC của PIC16F877A là : A0 A1 A2 A3 A5 EO E1 E2 Một số lệnh căn bản khi dùng ADC:

Muốn dùng ADC, ta phải khai báo #DEVICE cho biết dùng ADC mấy bit, chẳng hạn #device*=16

ADC=8 cho biết dùng ADC 8 bit

Setup_ADC(mode)

.Mode là ADC_OFF : tắt chức năng ADC

.Mode là ADC_CLOCK_INTERNAL : thời gian lấy mẫu bằng xung clock

.Mode là ADC_CLOCK_DIV_2: gian lấy mẫu bằng xung clock /

2

Setup_ADC_ports(value) //Xác định chân lấy tín hiệu Analog và điện thế chuẩn

.Value là ALL_ANALOGS : dùng tất cả các chân có hỗ trợ ADC

.Value là NO_ANALOG : không dùng ADC

.Value la ANi : dùng chân ANi là chân ADC

Set_ADC_channel(channel) //chọn chân để đọc giá trị analog bằng lệnh

read_adc()

.Với PIC16F877A channel có 8 giá trị 0-7 tương ứng là các chân A0-E2 như đã kể ở trên

.Để chính xác ta nên delay khoảng 10ms trước khi đọc tín hiệu:

delay_ms(10);

read = read_adc( ; Sau đoạn code này , read sẽ có giá trị bằng giá trị điện áp mà chân được

Mô phỏng bằng Proteus

Kết quả:

Trang 17

Code:

#define <16f877a.h>

#include "16F877A.h"

#device *=16 adc=8

//#device PIC16F877A *=16

#use delay(clock=12000000)

#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 <LCD.C>

#INT_EXT

int8 read;

void main(void)

{

// set_tris_b(0);

set_tris_a(0xFF);

set_tris_d(0x00);

// Khoi tao cho ngat ngoai

enable_interrupts (INT_EXT);

Trang 18

ext_int_edge(H_TO_L);

enable_interrupts (GLOBAL);

//Khoi tao ADC

setup_adc_ports(ANO);

setup_adc(ADC_CLOCK_INTERNAL);

delay_ms(50);

while(TRUE)

{

lcd_init( ;

read=read_adc();

read read*1.960784314;

printf(lcd_putc,"\rNhiet do: %u",read);

delay_us(20);

}

}

Khi dùng ADC 8bit tín hiệu ADC đọc được từ chân ADC như sau:

Tức là nếu điện áp vào 1V thì tín hiệu digital tăng 51

1V →ADC=51

1C →10mV→ADC=10*51/1000

Suy ra T →ADC = T*10*51/1000

Suy ra T = ADC*1000/10/51 = ADC * 1.960784314

Công thức này đã dùng ở đoạn code trên

Trang 19

Tham khảo : Nguồn sách giáo trình và sách điện tử

Công cụ :

sử dụng phần mềm MPLAP IDE 8.02 để soạn thảo Code

(http://www.microchip.com/stellent/idcplg? IdcService=SS GET

PAGE&nodeId=1406&dDocName=en023073) sử dụng phần mềm proteus 7.7 (http://forum.sharingvn.net/threads/96111+Proteus+7+7+Sp2+full+Key+Crack)

Website tham khảo :

http://lab3i.com

http://diendanict.edu.vn

Ngày đăng: 15/11/2024, 19:57

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w