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

TÀI LIỆU học VI điều KHIỂN PIC

70 327 0

Đ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

Định dạng
Số trang 70
Dung lượng 2,21 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

5:Các hàm hay dùng trong CCStôi sẽ trình bày theo mức độ quan trọng giảm dầnNếu a có giá trị =1 thì chương trình trên b=0; Nếu a có giá trị =7 thì chương trình trên b=10; -Hàm forvòng l

Trang 1

TÀI LIỆU HỌC VI ĐIỀU KHIỂN PIC

Trang 2

Chương I:

ÔN TẬP LẠI NGÔN NGỮ LẬP TRÌNH

C++

I:Tón tắt về ngôn ngữ c.

Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh được phát triển từ

đầu thập niên 1970 bởi Ken Thompson và Dennis Ritchie để dùng trong hệđiều hành UNIX Từ dó, ngôn ngữ này đã lan rộng ra nhiều hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất C là ngôn ngữ rất

có hiệu quả và được ưa chuộng nhất để viết các phần mềm hệ thống, mặc

dù nó cũng được dùng cho việc viết các ứng dụng Ngoài ra, C cũng

thường được dùng làm phương tiện giảng dạy trong khoa học máy

tính mặc dù ngôn ngữ này không được thiết kế dành cho người nhập môn

II:Cá cấu trúc lệnh biến,hằng, hàm, mảng, chương trình con trong c++(cụ thể là phần mềm CCS).

2:Các kiểu biến sử dụng trong CCS

-Int1 kiểu logic 1 or 0

- Int8,Int,short,byte số nguyên 8 bit (-127 đến 127)

-Int16 số nguyên 16bit

-Int32 số nguyên 32 bit

-char ký tự 8 bit

-float số thực 32 bit

Trang 3

-long số nguyên 16 bit

-double số thực có độ chính xác cao

3:Định nghĩa biến và sử dụng

-Ví dụ sau sẽ giúp bạn hiểu về biến

Int8 a; //khai báo biến a 8 bit

Int b=5; //Khai báo biến b 8 bit và gán giá trị bằng 5

Int c; //khai báo biến a 8 bit

a=10; //Gán giá trị cho a=10

a=a+2; // a=10+2=12 biến a mang giá trị mới bằng 12

c=a+b; // c=12+5=17 biến c mang giá trị mới =17

Tóm lại là biến sau khi đưa vào tính toán thì nó bị thay đổi giá trị đi

-Ví dụ khai báo mảng-Mảng là một tập hợp các biến cùng tên cùng kiểu

dữ liệu nhưng khác chỉ số

Int8 abc[10]; //mảng abc có 10 phần tử từ abc[0] đến abc[9]

abc[0]=5; //Gán giá trị cho phần tử thứ 1 trong mảng abc =5

abc[1]=7; //Gán giá trị cho phần tử thứ 2 trong mảng abc =7

c=abc[0]+abc[1]; //Biến c có giá trị =5+7=12

c=a+b; // Biến c có giá trị là 2+2=4

Nếu dùng như sau là không được vì hằng số không thể thay đổi giá trị a=b+3;

Trang 4

5:Các hàm hay dùng trong CCS(tôi sẽ trình bày theo mức độ quan trọng giảm dần)

Nếu a có giá trị =1 thì chương trình trên b=0;

Nếu a có giá trị =7 thì chương trình trên b=10;

-Hàm for(vòng lặp)

for(biến chạy;điều kiện;thay đổi biến){chương trình A }

Giải thích, hàm này sẽ tạo ra một vòng lặp với một số lần quy ước của người sử dụng

VD:

Trang 5

Sau chương trình này biến b sẽ mang giá trị bằng 0.

6:Các hàm xử lý toán số , toán học trong CCS.

gán giá trị của biến a bằng giá trị đang chứa trong biến b Chú ý rằng

chúng ta chỉ gán giá trị của b cho a và sự thay đổi của b sau đó sẽ không ảnh hưởng đến giá trị của a

Một thuộc tính của toán tử gán trong C++ góp phần giúp nó vượt lên các ngôn ngữ lập trình khác là việc cho phép vế phải có thể chứa các phép gánkhác Ví dụ:

Trang 6

Thứ tự thực hiện các toán tử này cũng giống như chúng được thực hiện trong toán học Điều duy nhất có vẻ hơi lạ đối với bạn là phép lấy phần dư,

ký hiệu bằng dấu phần trăm (%) Đây chính là phép toán lấy phần dư trongphép chia hai số nguyên với nhau Ví dụ, nếu a = 11 % 3, biến a sẽ mang giá trị 2 vì 11 = 3*3 +2

Các toán tử gán phức hợp (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

Một đặc tính của ngôn ngữ C++ làm cho nó nổi tiếng là một ngôn ngữ súc tích chính là các toán tử gán phức hợp cho phép chỉnh sửa giá trị của một biến với một trong những toán tử cơ bản sau:

value += increase; tương đương với value = value + increase;

a -= 5; tương đương với a = a - 5;

a /= b; tương đương với a = a / b;

price *= units + 1; tương đương với price = price * (units + 1);

và tương tự cho tất cả các toán tử khác

Tăng và giảm

Một ví dụ khác của việc tiết kiệm khi viết mã lệnh là toán tử tăng (++) và giảm ( ) Chúng tăng hoặc giảm giá trị chứa trong một biến đi 1 Chúng tương đương với +=1 hoặc -=1 Vì vậy, các dòng sau là tương đương:a++;

a+=1;

a=a+1;

Một tính chất của toán tử này là nó có thể là tiền tố hoặc hậu tố, có nghĩa

là có thể viết trước tên biến (++a) hoặc sau (a++) và mặc dù trong hai biểu thức rất đơn giản đó nó có cùng ý nghĩa nhưng trong các thao tác khác khi

mà kết quả của việc tăng hay giảm được sử dụng trong một biểu thức thì chúng có thể có một khác biệt quan trọng về ý nghĩa: Trong trường hợp toán tử được sử dụng như là một tiền tố (++a) giá trị được tăng trước khi biểu thức được tính và giá trị đã tăng được sử dụng trong biểu thức; trong trường hợp ngược lại (a++) giá trị trong biến a được tăng sau khi đã tính toán Hãy chú ý sự khác biệt:

Để có thể so sánh hai biểu thức với nhau chúng ta có thể sử dụng các toán

tử quan hệ Theo chuẩn ANSI-C++ thì giá trị của thao tác quan hệ chỉ có thể là giá trị logic - chúng chỉ có thể có giá trị true hoặc false, tuỳ theo biểu thức kết quả là đúng hay sai

Sau đây là các toán tử quan hệ bạn có thể sử dụng trong C++

Trang 7

(a*b >= c) sẽ trả giá trị true.

(b+4 < a*c) sẽ trả giá trị false

Cần chú ý rằng = (một dấu bằng) lf hoàn toàn khác với == (hai dấu bằng) Dấu đầu tiên là một toán tử gán (gán giá trị của biểu thức bên phải cho biến ở bên trái) và dấu còn lại (==) là một toán tử quan hệ nhằm so sánh xem hai biểu thức có bằng nhau hay không

Trong nhiều trình dịch có trước chuẩn ANSI-C++ cũng như trong ngôn ngữ

C, các toán tử quan hệ không trả về giá trị logic true hoặc false mà trả về giá trị int với 0tương ứng với false còn giá trị khác 0 (thường là 1) thì tươngứng với true

Các toán tử logic (!, &&, ||)

Toán tử ! tương đương với toán tử logic NOT, nó chỉ có một đối số ở phía bên phải và việc duy nhất mà nó làm là đổi ngược giá trị của đối số từ true sang false hoặc ngược lại Ví dụ:

Đối số thứ nhất

a

Đối số thứ haib

Kết quả

a && b

Kết quả

a || b

Trang 8

false False false false

Ví dụ:

( (5 == 5) && (3 > 6) ) trả về false ( true && false )

( (5 == 5) || (3 > 6)) trả về true ( true || false )

Toán tử điều kiện ( ? )

Toán tử điều kiện tính toán một biểu thức và trả về một giá trị khác tuỳ thuộc vào biểu thức đó là đúng hay sai Cấu trúc của nó như sau:

condition ? result1 : result2

Nếu condition là true thì giá trị trả về sẽ là result1, nếu không giá trị trả về

là result2

7==5 ? 4 : 3 trả về 3 vì 7 không bằng 5

7==5+2 ? 4 : 3 trả về 4 vì 7 bằng 5+2

5>3 ? a : b trả về a, vì 5 lớn hơn 3

a>b ? a : b trả về giá trị lớn hơn, a hoặc b

Các toán tử thao tác bit (&, |, ^, ~, <<, >>)

Các toán tử thao tác bit thay đổi các bit biểu diễn một biến, có nghĩa là thayđổi biểu diễn nhị phân của chúng:

Toán tử asm Mô tả

& AND Logical AND

<< SHL Dịch bit sang trái

SHR Dịch bit sang phảiCác toán tử chuyển đổi kiểu

Các toán tử chuyển đổi kiểu cho phép bạn chuyển đổi dữ liệu từ kiểu này sang kiểu khác Có vài cách để làm việc này trong C++, cách cơ bản nhất được thừa kế từ ngôn ngữ C là đặt trước biểu thức cần chuyển đổi tên kiểu dữ liệu được bọc trong cặp ngoặc đơn (), ví dụ:

là sử dụng các constructors (ở một số sách thuật ngữ này được dịch là cấu

tử nhưng tôi thấy nó có vẻ không xuôi tai lắm) thay vì dùng các toán tử: Đặt trước biểu thức cần chuyển đổi kiểu tên kiểu mới và bao bọc biểu thứcgiữa một cặp ngoặc đơn

Trang 9

i = int ( f );

Cả hai cách chuyển đổi kiểu đều hợp lệ trong C++ Thêm vào đó ANSI-C++ còn có những toán tử chuyển đổi kiểu mới đặc trưng cho lập trình hướngđối tượng

sizeof()

Toán tử này có một tham số, đó có thể là một kiểu dữ liệu hay là một biến

và trả về kích cỡ bằng byte của kiểu hay đối tượng đó

a = sizeof (char);

a sẽ mang giá trị 1 vì kiểu char luôn có kích cỡ 1 byte trên mọi hệ thống Giá trị trả về của sizeof là một hằng số vì vậy nó luôn luôn được tính trước khi chương trình thực hiện

6:Viết một chương trình con (Cái này sử dụng nhiều và quan trong).

Nếu ta gọi hàm con

c=tinhtoan(5); thì c se mang giá trị là 10

-Kiểu không trả về kết quả

Void tenchuongtrinhcon(cac bien truyen vao)

Trang 10

Bài 1:Viết một chương trình vòng lặp for biến i chạy từ 20 về 0.

Bài 2:Viết một chương trình sử dụng if-else kiểm tra biến a nếu a>0 thì thực hiện vòng lặp for biến i chạy từ 0 đến 10 ,nếu a<0 thì biến i chạy từ 10

về 0

Bài 3: Viết một chương trình sử dụng If-else

Nếu 5<=a<=10 thì b=10

Nếu 11<=a<=15 thì b=15

Nếu a<5 hoặc a>15 thì b=0

III:Làm quen với CCS

-CCs là một môi trường lập trình phổ biến cho dòng PIC sử dụng cả ngôn ngữ c và asm

-Ở tài liệu này,ta lập trình trên ngôn ngữ C

-Ngôn ngữ C giúp người dùng tiếp cận và học PIC nhanh hơn, ta không cần quan tâm tới cấu trúc của Pc như thế nào, hay các thanh gi và địa chỉ các thanh gi như nào.với C ta chỉ cần quan tâm duy nhất tới một thứ đó là

Cú pháp câu lệnh, để ta sử dụng nó lập trình cho PIC

Trang 11

-Một điều nữa mà C mang lại là ta có thế dễ dàng viết ra ý tưởng hay thuậttoán trong đầu trên ngôn ngữ C một cách đơn giản.gần như là nghĩ được

IV:Ôn lại một số linh kiện điện tử cơ bản,

-Tụ điệu, điện trở, tranzito

-Xem lại trong quấn điện tử cơ bản đính kèm file.

Trang 12

Chương II:

HỌC PIC CƠ BẢN CÁC DỰ ÁN CƠ ĐƠN GIẢN CHO

NGƯỜI MỚI BẮT ĐẦU

Bài 1:CƠ BẢN VỀ VDK PIC

1)Giới thiệu về VDK PIC.

- VDK PIC là một họ vi điều khiển có khả năng lập trình để xử lý tính toán

số liệu hay điều khiển các modul thết bị ngoại vi

-Là một dòng VDK mạnh giải quyết được nhiều bài toán ,ứng dụng trongthực tế

- PIC hỗ trợ lập trình trên ngôn ngữ C

-PIC hỗ trợ nhiều modul phần cứng nhưng ADC, PWM, RS232, USB,SPI, I2C

-PIC mình nghiên cứu ở trong tài liệu này là PIC 16F887.Gồm có 34 chân

in out dữ liệu, 14 chân ADC, 3 timer, 8k byte rom, 256 byte EEPROM , 368byte RAM

- Phần mềm lập trình CCS bản 4.104

Trang 14

Tạo trể +delay_ms(value); tạo trễ một khoảng thời gian ms.

+delay_us(value); tạo trễ một khoảng thời gian us

+delay_cycles (count): tạo trễ theo chu kỳ lệnh

Tất cả các lệnh của CCS các bạn có thể xem trong phần trợ giúp của phầnmềm

Bài 2:XUẤT DỮ LIỆU

1)Các lệnh cơ bản xuất dữ liệu

-Lệnh output_high(PIN_X?);

Lệnh này xuất dữ liệu mức 1 ra một chân của vi điều khiển

VD: Ta xuất ra chân A1 của vi điều khiển mức 1bằng lệnh này

Output_high(PIN_A1);

-Lệnh output_low(PIN_X?);

Lệnh này xuất dữ liệu mức 0 ra một chân của vi điều khiển

VD: Ta xuất ra chân B2 của vi điều khiển mức 1bằng lệnh này

Output_low(PIN_B2);

-Lệnh output_bit (pin, value);

Lệnh này xuất dữ liệu value ra một chân của vi điều khiển.dữ liệu ở đây có giá trị là 0 hoặc 1, các số khác số 0 đều có giá trị bằng 1

VD:Ta xuất ra chân C1 của vi điều khiển một mức nào đấy

Trang 15

Những câu lệnh trên đều có tác dụng làm cho chân B0 xuống mức thấp.

-Lệnh output_X ( value);

Lệnh này xuất dữ liệu ra một cổng của VDK với giá trị là value

VD: output_B(0x00) xuất ra cổng b tất cả các chân đều ở mức thấp(mức 0)

output_B(0xff) xuất ra cổng b tất cả các chân đều ở mức cao(mức 1) output_B(0x0f) các chân B0->B3 mức cao.Các chân B4-B7 mức thấp

2)Thực hành xuất dữ liệu trên PIC.

+ Lập trình nhấp nháy 1 bóng led -8 bóng led,hoặc 8 chữ cái gồm nhiều led,relay on off thiết bị

Trang 16

+Chương trình on off một re lay nối vào chân B1, thời gian đóng cắt 2 giây.

#include <On off.h>

Bài 2: Viết một chương trình nháy 16 led đơn với 5 hiệu ứng nháy, trong đó

có 1 kiểu chạy từ phải sang trái

Bài 3 : Viết một chương trình nháy 8 led đơn từ phải sang trái (trên xuống dưới) sử dụng vòng lặp for và phép dịch bit

Bài 4 : Thiết kế một biển led quảng cáo nháy chữ “DAM ME CONG

NGHE”, Mỗi chữ cái gồm 50 led đơn nói song song với nhau.Lập trình với trên 10 kiểu nháy đẹp mắt

Trang 17

Thiết kế mạch nguyên lý chi tiết trên giấy khổ A4, mô phỏng trên phẩn mềm Proteus và code lập trình.(Buổi tới đi học mang đi để kiểm tra và sửa lỗi).

Bài 3:LED 7 THANH

1)Tìm hiểu về led 7 thanh

Khái niệm cơ bản

Led 7 thanh có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo Hình 1.1 dưới và có thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 thanh 8 led đơn trên led 7 đoạn có Aode(cực +) hoặc Cathode(cực -) được nối chung với nhau vào một điểm, được đưa chân ra ngoài để kết nối với mạch điện

8 cực còn lại trên mỗi led đơn được đưa thành 8 chân riêng:

Nếu led 7 đoạn có Anode(cực +) chung, đầu chung này được nối với +Vcc,các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0

Nếu led 7 đoạn có Cathode (cực -) chung, đầu chung này được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắtcủa các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1

Hình 1.1

Bảng giá trị tín hiệu

Trang 18

-Chung A

=>

-Chung K

=>

2)Thực hành hiển thị led 7 thanh.

a Led 7 thanh đơn

Ví dụ:sơ đồ mô phỏng như sau

Chương trình hiển thị số 1 lên led 7 thanh

b.Led 7 thanh kép và phương pháp quét led

-Hiệu ứng lưu ảnh của mắt: hiểu đơn giản như thế này, có 1 bóng led tắt rồi bật, lúc đầu cứ 1s sáng thì lại tắt 1s nghĩa là chu kỳ 2 s, rồi giảm chu kỳ

ấy xuống 1s ta vẫn thấy bóng led đấy nháy, khi ta giảm chu kỳ xuống 1ms thì lúc đó mắt ta nhìn thấy gì? Trả lời được câu hỏi thì bạn cũng đã hiểu về hiệu ứng lưu ảnh của mắt

Trang 19

- Phương pháp quét led: Ta có mạch nguyên lý như dưới đây.

Gồm 2 led loại chung A được mắc chung chân dữ liệu

bây giờ bạn hãy thử đoạn chương trình sau,và thay đổi tham số chuky nhỏdần từ 1s đến nhỏ hơn 1/24/a s xem nhé.(a là số led 7 thanh)

Trang 20

c.Hiển thị một số có 2 chữ số trên led

Bài 1) Lập trình hiển thị led 7 thanh chạy từ 0->9 chu kỳ 500ms

Bài 2) Lập trình hiển thị led 7 thanh chạy từ 000->150 chu ky 200ms

Bài 3) Lập trình hiển thị led 7 thanh chạy từ 0->50 rồi nhảy lên 60->100

Bài 4) Có 7 biến giờ phút giây thư ngày tháng năm được lưu trong các biếnhour,min,sec,day,date,month,year Hãy mô phỏng trên proteus và viết

chương trình hiển thị các biến trên bằng phương pháp quét led, triển khai

sơ đồ nguyên lý chi tiết ,cụ thể trên giấy A4.Buổi sau đi học mang bài đến nộp

Bài 4:ĐỌC DỮ LIỆU-INPUT

1)Các lệnh cơ bản đọc vào dữ liệu.

a=input(PIN_X); //đọc giá trị logic ở một chân của vdk

VD:

a=input(PIN_A1) ;

Trang 21

Nếu chân A1 ở mức cao thì biến a mang giá trị là 1 còn chân A1 ở mức thấp thì biến a mang giá trị là 0.

Sơ đồ mô phỏng dưới đây.

-Viết chương trình khi nhấn nút trên thì động cơ quay và nhấn nút dưới thì động cơ ngừng quay, tức là đưa ra chân D0 mức cao sẽ làm mở Tip41 đóng re lay relay tác động thì tiếp điểm thường mở sẽ thành thường đóng, mạch kín động cơ quay, và ngược lại

-Code

#include <nut nhan.h>

#define Relay_on output_high(PIN_D0)

#define Relay_off output_low(PIN_D0)

Trang 22

-Lập trình đọc dữ liệu vào từ cổng C và xuất ra led cổng D.

#include <nut nhan.h>

-Giới thiệu về modul thu phát RF

-Modul thu và sơ đồ chân

Trang 23

Có 2 loại modul thu RF là loại giữ mức và loại không giữ mức.

-Modul phát 4 kênh và hình ảnh thực tế

-Kết nối bộ RF 4 kênh vào 4 chân input của vi điều khiển ta lập trình đọc

dữ liệu tương tự như nút nhấn

-Bộ RF ở trong bài học này là loại giữ mức nên ta sẽ dùng để điều khiển 4relay đóng cắt cho 4 thiết bị điện trong nhà

d.Cảm biến chuyển động

-Hình ảnh cảm biến

Trang 24

Sơ đồ chân.

Cách sử dụng rất đơn giản: Khi có người trong vùng cảm biến có thể phát hiện ra được thì chân Out của cảm biến sẽ out ra mức cao nhưng ở dạng xung , ta đưa vào một chân VDk để đọc tín hiệu đó vào và xử lý bật và tắt một relay để đóng mở một thiết bị nào đấy

Trang 25

2) Lập trình và mô phỏng chương trình một nút nhấn nối vào cổng B0 nếu nút nhấn thì giá trị trên led 7 thanh tăng lên 1 sử dụng 2 led 7 thanh hiển thị bằng phương pháp quét led.

3) Đọc dữ liệu 1 cổng từ Dipswhich và hiển thị giá trị 8 bit của cổng đó lên led 7 thanh VD: giá trị cổng B=0x12=18 thì led 7 thanh phải hiển thị số 018

4) Lập trình và mô phỏng nhận dữ liệu từ 4 đầu vào nếu ở mức cao thì bật một relay nối ở bất kỳ 1 cổng nào đấy.còn mức thấp thì tắt relay tương ứng

5) Lập trình đầu vào dữ liệu cho 4 nút nhấn, cứ mỗi lần nhấn thì thay đổi mức logic cho một chân ra của vdk để đóng cắt một relay

6) BÀI TẬP TỔNG HỢP

-Thiết kế một dự án điều khiển 4 thiết bị điện từ xa bằng modul RF 4 kênh (modul không giữ mức) 3 kênh A B C điều khiển 3 thiết bị điện,nhấn một lần mở, nhấn thêm lần nữa tắt Còn kênh D để mở một bóng điện kết hợp với cảm biến chuyển động, khi mở bóng mà người còn trong phòng thì bóng sáng, người ra khỏi phỏng một thời gian thì bóng tắt

(Bao gồm code lập trình, mô phỏng và mạch nguyên lý chi tiết)

Bài 5:CHUYỂN ĐỔI ADC

-VD ta có một tín hiệu điện áp thay đổi trong dải từ 0V-5V ta chọn điện áp

so sánh là 0-5V ,và độ phân giải ADC là 8 bit , tại một thời điểm điện áp là 2,5V thì tín hiệu tương tự này sau khi chuyển đổi có giá trị là 127.

2)Cách cấu hình và sử dụng ADC trong PIC.

-PIC 16f887 hỗ trợ 2 độ phân giải chuyển đổi ADC là 8 bit và 10 bit Sau đây là một chương trình đơn giản về chuyển đổi ADC và hiển thị giá trị ADC chuyển đổi được lên LED 7 thanh

Trang 26

int8 const Led[6]={0x00,0x01,0x02,0x04,0x08};

//Chương trình quét led

Void Quetled(int i,int j){

setup_adc_ports(sAN0); //Thiết lập chân chuyển đổi ADC

setup_adc(ADC_CLOCK_DIV_2); //Thiết lập tần số lấy mẫu

while(TRUE)

{

set_adc_channel(0); // Chọn kênh cần lấy mẫu

delay_us(10); // Trễ chờ chuyển đổi

Trang 27

value = read_adc(); // Hàm đọc về giá trị ADC

Quetled(value/1000,1); //Đoạn chương trình hiển thị led 7

Cụ thể cách cài đặt và ý nghĩa sẽ được hướng dẫn chi tiết trên lớp.

3)Cảm biến tương tự và cách đo, đọc kết quả để xử lý.

-Cảm biến tương tự là các loại cảm biến tín hiệu đo được , được trả về

bằng tín hiệu tương tự.

-Khi có trong tay một cảm biến ta phải xác định xem nó trả về kết quả dưới dạng gì,số hay tương tự.Cách nhanh nhất là tra Datasheet của nhà sản xuất để biết được thông số và dạng tín hiệu trả về.

VD: ta có một cảm biến đo áp suất tương tự tín hiệu là tuyến tính,theo thông số của nhà sản xuất thì dải tín hiệu từ 0-5v tương ứng với áp suất là

0 atm tới 250 atm thì ta làm sao để có thể đọc được kết quả giá trị áp suất tại một thời điểm.Giả sử ta chuyển đổi ADC 10 bit của VDK để đo áp suất, tại thời điểm t ta đọc được giá trị ADC=756,bằng công thức sau ta suy ra được kết quả áp suất tại thời điểm đó tính bằng atm.

Giá trị vật lý=( kết quả ADC/độ phân giải)*Thang đo.

(Công thức này chỉ dùng với cảm biến trên này thôi, mỗi cảm biến một công thức khác nhau)

Giá trị áp suất =(756/1023)*250=184.75 atm.

4)Thực hành và làm ứng dụng với cảm biến nhiệt độ

Trang 28

K=307/150°C = 2.046

Trang 29

Bây giờ ta dùng PIC để đọc giá trị ADC từ cảm biến về được kế quả ta sẽtính toán bằng phép tính sau sẽ ra được kết quả nhiệt độ hiện tại.

Trang 30

int8 const Led[6]={0x00,0x01,0x02,0x04,0x08};

Void Quetled(int i,int j){

Trang 31

-LED thu hồng ngoại: Cũng tương tự quang trở là điện trở suất của nó giảm xuống rất nhanh khi có tia hồng ngoại chiếu vào.

-Cả hai đều có thể coi là những biến trở, giá trị điện trở sẽ thay đổi khi có những điều kiện ảnh hướng tới điện trở suất thay đổi,Vì thế phương pháp

sử dụng 2 loại cảm biến này trong thực tế là mắc nối tiếp nó với một điện trở khác để tạo thành mạch phân áp

-Mắc nguyên lý

Trang 32

Từ mạch trên ta thấy, điện áp tại điểm Out sẽ bằng

Vout=Vcc/(Rp+R)*R

-Rp là điện trở của Phôt Diode , là quang trở hay là led hồng ngoại

-Trong biểu thức ta thấy Vcc và R không đổi còn Rp sẽ thay đổi theo

cường độ ánh sáng hay cường độ tia hồng ngoại chiếu vào nó nên => Vcc

sẽ thay đổi theo, từ đấy ta đọc ADC và được kết quả để xử lý

Bài tập:

Bài 1) Đọc giá trị nhiệt độ cảm biến LM35 hiển thì nhiệt độ lên LED 7

thanh và điều khiển tốc độ quạt.Quạt có 3 số khoảng nhiệt độ từ 27-30 số

1 từ 30-33 số 2, từ 33 trở lên là số 3, nhỏ hơn 27 độ là số 0

Trang 33

HD:dùng re lay để đóng cắt tiếp điểm của quạt.(xem lại phần relay).

Bài 2) Thiết kế một đồng hồ vạn năng, đo điện áp một chiều DC đo được điện áp <= 50v Hiển thị kết quả đo trên led 7 thanh

Bài 3) Lập trình hệ thống phát hiện trời tối để bật tắt bong điện chiếu sáng đường

Bài 4) Lập trình hệ thống chống trộm bằng hồng ngoại,hoặc laze khi có trộm thì đóng chuống kêu.(Chuông 12V-DC)

Bài 5) Thiết kế bao gồm( Sơ đồ nguyên lý chi tiết+mô phỏng+lập trình) Hệ thống gia nhiệt lò ấp trứng Lò ấp bao gồm điều khiển

+ 1 quạt 220V AC trao đổi khí lò ấp với môi trường ngoài,hoạt động theo chu kỳ cứ 1 phút mở một lần 5s

+ Nhiệt độ trong lò đặt được bằng nút nhấn

(Trình bày bài 3 sơ đồ nguyên lý trên giấy A4 vẽ sạch sẽ cẩn thận, buổi sau

đi học mang theo để kiểm tra và sửa lỗi)

Bài 6:HIỂN THỊ LCD

1)Giới thiệu về LCD.

-Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, LCD16x2 là một loại LCD thông dụng

Hình dáng của loại LCD thông dụng

- Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780)

bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết Các chân này được đánh số thứ tự và đặt tên như hình 2 :

Trang 34

Sơ đồ chân của LCD

- Chức năng các chân :

1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điều khiển

2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V của mạch điều khiển

3 VEE Điều chỉnh độ tương phản của LCD

Chân chọn thanh ghi (Register select) Nối chân RS với logic

“0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi

+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)

+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD

Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1”

để LCD ở chế độ đọc

6 E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus

DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E

+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E

+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được

Trang 35

LCD giữ ở bus đến khi nào chân E xuống mức thấp.

Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD

thông qua các chân DBx

2)Ghép nối LCD với VDK PIC.

-Giao tiếp LCD 16x2 với vi điều khiển PIC16F887 ở chế độ 4 bit.

-Sơ đồ ghép nối chân

-Biến trở RV1 để điều chỉnh độ tương phản cho LCD.

Ngày đăng: 19/11/2017, 19:01

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w