1. Trang chủ
  2. » Luận Văn - Báo Cáo

Điều khiển hệ thống đèn LED dùng PIC 16f877a

49 1,1K 3

Đ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 49
Dung lượng 823,99 KB

Nội dung

Dòng PIC với giá thành không quá đắt lại đủ mạnh về tính năng, đủ bộ nhớ cho hầu hết các ứng dụng nên đã và đang được dùng phổ biến.. Trong dòng vi điều khiển này, có một họ PIC với độ d

Trang 2

HÀ NỘI, 2014

Trang 3

LỜI CẢM ƠN

Trước tiên, tôi xin bày tỏ lòng kính trọng và biết ơn sâu sắc tới thầy Phùng Công Phi Khanh Thầy đã tận tình hướng dẫn giúp tôi hoàn thành khóa luận Tôi cũng xin gửi lời cảm ơn đến toàn thể các thầy, cô giáo trong khoa Vật Lý, các thầy cô trong trường Đại học Sư phạm Hà Nội 2 - những người đã giúp đỡ tôi trong suốt quá trình học tập và tạo điều kiện thuận lợi giúp tôi hoàn thành khóa luận này

Cuối cùng, tôi xin cảm ơn gia đình, bạn bè và người thân đã luôn giúp

đỡ, cổ vũ, động viên tôi trong suốt quá trình học tập và hoàn thành khóa luận Tôi xin chân thành cảm ơn!

Hà Nội, tháng 5 năm 2014

Sinh viên thực hiện

Đỗ Thị Hạnh

Trang 4

LỜI CAM ĐOAN

Tôi xin cam đoan đề tài “ĐIỀU KHIỂN HỆ THỐNG ĐÈN LED DÙNG

PIC 16F877A” là kết quả của sự nỗ lực cố gắng nghiên cứu, tìm tòi, tra cứu

tài liệu và sự giúp đỡ tận tình của thầy Phùng Công Phi Khanh cùng các thầy,

cô giáo trong khoa Vật Lý trường Đại học Sư phạm Hà Nội 2

Các kết quả được nêu trong khóa luận này là trung thực và chưa từng được công bố trong bất kì nghiên cứu nào

Tôi xin hoàn toàn chịu trách nhiệm với những gì mình khẳng định trên đây

Trang 5

MỤC LỤC

Trang

PHẦN I MỞ ĐẦU 5

PHẦN II NỘI DUNG 8

Chương 1 Tổng quan về vi điều khiển PIC 8

1.1 PIC là gì? 8

1.2 Kiến trúc PIC 8

1.3 Các dòng PIC và cách lựa chọn vi điều khiển 9

1.4 Ngôn ngữ lập trình cho PIC 10

1.5 Mạch nạp PIC 10

Chương 2 Vài nét về vi điều khiển PIC 16F877A 11

2.1 Sơ đồ chân của vi điều khiển PIC 16F877A 11

2.2 Một vài thông số về vi điều khiển PIC 16F877A 12

2.3 Sơ đồ khối vi điều khiển PIC 16F877A 13

2.4 Tổ chức bộ nhớ 15

2.4.1 Bộ nhớ chương trình 15

2.4.2 Bộ nhớ dữ liệu 17

2.4.3 Stack 19

2.5 Các cổng xuất nhập của PIC 16F877A 19

2.5.1 Port A 19

2.5.2 Port B 20

2.5.3 Port C 22

2.5.4 Port D

2.5.5 Port E

24 24 2.6 Tập lệnh của vi điều khiển PIC 26

Chương 3 Phần mềm Proteus 33

Trang 6

Chương 4 Ứng dụng 36

4.1 Điều khiển Led tự động 36

4.1.1 Yêu cầu 36

4.1.2 Thiết kế mạch điện 37

4.1.3 Thiết kế phần mềm 39

4.1.3.1 Sơ đồ khối 39

4.1.3.2 Chương trình 40

4.2 Điều khiển Led sử dụng nút bấm

4.2.1 Yêu cầu

41 41 4.2.2 Thiết kế mạch điện 42

4.2.3 Thiết kế phần mềm 44

4.2.3.1 Sơ đồ khối 44

4.2.3.2 Chương trình 44

PHẦN III KẾT LUẬN 46

TÀI LIỆU THAM KHẢO 47

Trang 7

bổ sung về kiến thức cũng như về ứng dụng cho dòng vi điều khiển cũ Dòng PIC với giá thành không quá đắt lại đủ mạnh về tính năng, đủ bộ nhớ cho hầu hết các ứng dụng nên đã và đang được dùng phổ biến Trong dòng vi điều khiển này, có một họ PIC với độ dài lệnh là 14 bit và bộ nhớ Flash có khả năng ghi, xóa tới 100000 lần đã và đang được khai thác để phát triển các ứng dụng Đó chính là PIC 16F877A Việc nghiên cứu phát triển các ứng dụng của họ PIC này ngày càng thu hút được sự quan tâm, chú ý của sinh viên các trường kĩ thuật Trong số rất nhiều các ứng dụng của nó, chúng ta phải kể đến một số ứng dụng điển hình như: việc phát triển thông tin trong thông tin liên lạc, điều khiển tự động các máy móc, chế tạo Robot, điều khiển các đèn giao thông hay những dãy đèn Led trong các biển quảng cáo, trang trí…

Xuất phát từ thực tế đó, chúng tôi chọn đề tài:

“ĐIỀU KHIỂN HỆ THỐNG ĐÈN LED DÙNG PIC 16F877A”

Nhằm đáp ứng nhu cầu học hỏi của bản thân về vi điều khiển đồng thời góp phần trong xu hướng chung của sinh viên ngành kĩ thuật làm quen và

khai thác sử dụng vi điều khiển PIC

Trang 8

2 Mục đích nghiên cứu

Tìm hiểu về vi điều khiển PIC 16F877A

Nghiên cứu ứng dụng của vi điều khiển PIC 16F877A trong việc điều

khiển dãy đèn Led

3 Nhiệm vụ nghiên cứu

Tổng quan về vi điều khiển PIC

Tìm hiểu dòng PIC 16F877A và mô phỏng hoạt động của nó trong việc điều khiển đèn Led

4 Đối tượng nghiên cứu

Vi điều khiển PIC 16F877A

Phần mềm Proteus hỗ trợ thiết kế mạch điện

6 Phương pháp nghiên cứu

Sử dụng phương pháp nghiên cứu lí thuyết kết hợp với phương pháp

thực nghiệm

7 Ý nghĩa khoa học của đề tài

Điều khiển hệ thống đèn Led là một ứng dụng thực tế mà hiện nay đang phát triển rất mạnh mẽ và được ứng dụng rộng rãi trong đời sống Nghiên cứu

đề tài “ĐIỀU KHIỂN HỆ THỐNG ĐÈN LED DÙNG PIC 16F877A” là bước

tiếp cận đầu tiên khi bắt đầu học về dòng PIC 16F877A Những kiến thức thu được sau khi hoàn thành xong đề tài này sẽ là những kiến thức nền tảng để có

thể tiếp tục nghiên cứu, phát triển những ứng dụng tiếp theo

Trang 9

8 Cấu trúc của khóa luận

Cấu trúc khóa luận gồm 4 chương:

Chương 1 Tổng quan về vi điều khiển PIC

Giới thiệu chung về vi điều khiển PIC: Giới thiệu về kiến trúc PIC, các dòng PIC, cách lựa chọn vi điều khiển, ngôn ngữ lập trình cho PIC và mạch nạp PIC

Chương 2 Vài nét về vi điều khiển PIC 16F877A

Tìm hiểu những nét cơ bản về vi điều khiển PIC 16F877A: Tìm hiểu về

sơ đồ chân, sơ đồ khối, tổ chức bộ nhớ, các cổng xuất nhập và tập lệnh của PIC 16F877A

Chương 3 Phần mềm mô phỏng Proteus

Giới thiệu một cách cơ bản về nhiệm vụ và đặc điểm của phần mềm Proteus

Chương 4 Ứng dụng

Trong chương này, chúng tôi giới thiệu ứng dụng cụ thể của vi điều khiển PIC 16F877A trong việc điều khiển dãy đèn Led

Trang 10

PHẦN II NỘI DUNG Chương 1 Tổng quan về vi điều khiển PIC

1.1 PIC là gì ?

PIC là viết tắt của “Programable Intelligent Computer’’ có thể dịch là

“máy tính lập trình thông minh” do hãng Genenral Instrument đặt tên cho vi

điều khiển đầu tiên của họ là PIC 1650 PIC 1650 được thiết kế để dùng làm

các thiết bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển này sau đó được

nghiên cứu phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC

Cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai kiểu

kiến trúc: Kiến trúc Havard và kiến trúc Von-Neuman

Data memory

Trang 11

Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Havard Điểm khác biệt giữa hai kiểu kiến trúc là ở cấu trúc bộ nhớ dữ liệu và bộ nhớ chương trình

Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung trong một bộ nhớ Do đó ta có thể tổ chức một cách linh hoạt bộ nhớ chương trình và bộ nhớ dữ liệu Tuy nhiên, điều này chỉ có ý nghĩa khi tốc độ xử lí của CPU phải rất cao do trong cùng một thời điểm CPU chỉ có thể tương tác với bộ nhớ dữ liệu hoặc bộ nhớ chương trình Như vậy, có thể nói kiến trúc Von-Neuman không thích hợp với cấu trúc của một vi điều khiển

Vi điều khiển được thiết kế theo kiến trúc Von-Neuman còn được gọi là vi điều khiển CISC (vi điều khiển có tập lệnh phức tạp) vì độ dài lệnh luôn là bội số của 8 bit

Đối với kiến trúc Havard, bộ nhớ dữ liệu và bộ nhớ chương trình tách thành hai bộ nhớ riêng biệt Do đó, trong cùng một thời điểm CPU có thể tương tác với cả hai bộ nhớ Như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể Tập lệnh trong kiến trúc Havard có thể được tối ưu tùy theo yêu cầu kiến trúc của vi điều khiển mà không phụ thuộc vào cấu trúc dữ liệu

Vi điều khiển được thiết kế theo kiến trúc Havard còn được gọi là vi điều khiển RISC (vi điều khiển có tập lệnh rút gọn)

1.3 Các dòng PIC và cách lựa chọn vi điều khiển

Các kí hiệu của vi điều khiển PIC:

PIC12xxxx: độ dài lệnh 12 bit

PIC16xxxx: độ dài lệnh 14 bit

PIC18xxxx: độ dài lệnh 16 bit

C: PIC có bộ nhớ EPROM

F: PIC có bộ nhớ Flash

Trang 12

Bên cạnh đó một số vi điều khiển có kí hiệu xxFxxx là EEPROM Nếu

có thêm chữ A ở cuối là Flash (ví dụ: PIC16F877 là EEPROM, còn PIC 16F877A là Flash)

Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC

Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất

Cách lựa chọn một vi điều khiển PIC phù hợp:

Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển chỉ có 8 chân Ngoài ra còn có các vi điều khiển 28, 40, 44 chân Cần chọn vi điều khiển PIC có bộ nhớ Flash để có thể nạp, xóa chương trình được nhiều lần hơn

Tiếp theo, cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển, chuẩn giao tiếp bên trong

Sau cùng, cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép

1.4 Ngôn ngữ lập trình cho PIC

Ngôn ngữ lập trình cho PIC rất đa dạng Ngôn ngữ lập trình thấp có MPLAB được cung cấp miễn phí bởi nhà sản xuất Microchip Các ngôn ngữ lập trình cấp cao hơn bao gồm: C, Basic, Pascal, Ngoài ra còn có một số ngôn ngữ lập trình được phát triển dành riêng cho PIC như PICBasic, MikroBasic,…

1.5 Mạch nạp PIC

Đây là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC Có thể sử dụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như: PICSTART plus, MPLAB ICD 2, MPLAB ICD 3, PRO MATE II Có thể dùng các sản phẩm này để nạp cho vi điều khiển khác thông qua chương trình MPLAB Ngoài ra còn có WARP- 13A, P16PRO40

Trang 13

Chương 2 Vài nét về vi điều khiển PIC 16F877A

2.1 Sơ đồ chân của vi điều khiển PIC 16F877A

Hình 2.1 Sơ đồ chân của vi điều khiển PIC 16F877A

PIC 16F877A có 40 chân được chia thành 5 Port Trong đó có 2 chân cấp nguồn, 2 chân GND, 2 chân thạch anh và 1 chân dùng để Reset vi điều khiển

5 Port của PIC 16F877A bao gồm: Port B, Port D, Port C (mỗi Port có 8 chân), Port A có 6 chân và Port E có 3 chân

Trang 14

2.2 Một vài thông số về vi điều khiển PIC 16F877A

PIC 16F877A là một vi điều khiển với kiến trúc RISC Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit, mỗi lệnh đều được thực thi trong một chu kì xung clock (4 chu kì của bộ dao động) Là họ vi điều khiển có 40 chân, mỗi chân có một chức năng khác nhau Trong đó có một số chân đa công dụng (đa hợp), mỗi chân có thể hoạt động như một đường xuất/nhập độc lập hoặc là một chức năng đặc biệt dùng để giao tiếp với các thiết bị ngoại vi Tốc độ hoạt động tối đa cho phép là 20MHz với một chu kì lệnh là 200ns

Một vài thông số về vi điều khiển PIC 16F877A:

Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:

 Bộ nhớ Flash với khả năng ghi xóa được 100000 lần

 Bộ nhớ EEPROM với khả năng ghi xóa được 1000000 lần

 Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm

 Có khả năng tự nạp chương trình với sự điều khiển của phần mềm

 Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân

 Watchdog Timer với bộ dao động trong

Trang 15

2.3 Sơ đồ khối vi điều khiển PIC 16F877A

Sơ đồ khối của PIC 16F877A bao gồm các khối chức năng sau:

 Khối ALU (Arithmetic Logic Unit)

 Khối bộ nhớ chương trình (Flash Program Memory)

 Khối bộ nhớ chứa dữ liệu (EEPROM - Data EPROM)

 Khối bộ nhớ file thanh ghi RAM (RAM file Register)

 Khối giả mã lệnh và điều khiển (Instruction Decode Control)

 Khối thanh ghi đặc biệt

 Khối ngoại vi Timer

 Khối giao tiếp nối tiếp

 Khối chuyển đổi tín hiệu tương tự sang số ADC

 Khối các Port xuất/nhập

Trang 16

Hình 2.2 Sơ đồ khối vi điều khiển PIC 16F877A

Trang 17

có tác dụng Bộ nhớ chương trình còn có các ngăn xếp (stack) với 8 mức Vector Reset được đặt ở địa chỉ 0000h và vector ngắt ngoại vi được đặt ở địa chỉ 0004h Khi PIC được Reset thì chương trình sẽ nhảy về vị trí vector Reset

và bắt đầu thực hiện tại đó

Trang 18

Hình 2.3 Bộ nhớ chương trình PIC16F877A

Trang 19

Các vùng RAM đa mục đích (GPR – General Purpose RAM) có chiều rộng là 8 bit và được truy cập trực tiếp hoặc gián tiếp thông qua thanh ghi chức năng đặc biệt

Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung tâm

và các hàm chức năng ngoại vi để điều khiển hoạt động của các thiết bị Các thanh ghi chức năng đặc biệt được chia làm 2 loại: loại thứ nhất dùng cho các chức năng ngoại vi (ngắt, so sánh, điều biến xung PWM, ), loại thứ hai dùng cho các chức năng bên trong của vi điều khiển (các phép tính số học, truy xuất dữ liệu, )

Trang 20

Hình 2.4 Sơ đồ bộ nhớ dữ liệu PIC16F877A

Trang 21

2.4.3 Stack

Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL được thực hiện hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương trình PC tự động được vi điều khiển cất vào trong Stack Khi một trong các lệnh RETURN, RETLW hay RETFIE được thực thi, giá trị PC

sẽ tự động được lấy ra từ trong Stack, vi điều khiển sẽ thực hiện tiếp chương trình theo đúng quy trình định trước

Trong vi điều khiển PIC 16F877A, bộ nhớ Stack có khả năng chứa được

8 địa chỉ và hoạt động theo cơ chế xoay vòng Nghĩa là, giá trị cất vào bộ nhớ Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào

bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá trị cất vào Stack lần thứ 2 Các thao tác với bộ nhớ này sẽ hoàn toàn được điều khiển bởi CPU

2.5 Các cổng xuất nhập của vi điều khiển PIC 16F877A

“clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA

Đọc thanh ghi Port A là đọc trạng thái ở các chân nhưng khi ghi thì dữ liệu sẽ vào ở mạch chốt Port Tất cả hoạt động ghi gồm ba giai đoạn: đọc - hiệu chỉnh - ghi, do đó ghi dữ liệu vào một Port được hiểu ngầm là đọc dữ liệu từ Port rồi hiệu chỉnh và sau cùng là ghi dữ liệu vào mạch chốt dữ liệu Hoạt động của mỗi chân được lựa chọn bằng cách clear/set các bit điều khiển cho phù hợp trong thanh ghi ADCON1 hoặc thanh ghi CMCON1

Trang 22

Khi các chân của Port A được sử dụng là ngõ vào thì các bit của thanh ghi TRISA phải luôn bằng 1

Bảng 2.2 Bảng các chức năng của Port A

RA2/AN2/VREF-/CVREF Bit 2 Port I/O hoặc VREF- hoặc CVREFRA3/AN3/ VREF+ Bit 3 Port I/O hoặc VREF+

RA4/TOCKI/C1OUT Bit 4 Port I/O hoặc ngõ vào xung

clock cho Timer 0 hoặc ngõ ra

Ba chân của Port B được đa hợp với mạch điện gỡ rối bên trong và chức năng lập trình điện áp thấp: RB3/PGM, RB6/PGC, RB7/PGD

Mỗi chân của Port B có một điện trở kéo lên nguồn Vdd Chức năng này hoạt động khi bit RBPU (OPTION<7>) được xóa Khi Port B được thiết lập

là các ngõ ra thì sẽ tự động tắt chức năng điện trở kéo lên cũng tương tự khi CPU bị Reset lúc mới cấp điện

Trang 23

Bảng 2.3 Bảng các chức năng của Port B

RB0/INT Bit 0 Port I/O hoặc ngõ vào ngắt Có lập trình

điện trở kéo lên

RB1 Bit 1 Port I/O Có lập trình điện trở kéo lên

RB2 Bit 2 Port I/O Có lập trình điện trở kéo lên

RB3/PGM Bit 3 Port I/O hoặc lập trình ở chế độ LVP Có

lập trình điện trở kéo lên

RB4 Bit 4 Port I/O (ngắt khi có thay đổi) Có lập

trình điện trở kéo lên

RB5 Bit 5 Port I/O (ngắt khi có thay đổi) Có lập trình

điện trở kéo lên

RB6/PGC Bit 6

Port I/O (ngắt khi có thay đổi) hoặc chân mạch gỡ rối Có lập trình điện trở kéo lên Xung lập trình nối tiếp

RB7/PGD Bit 7

Port I/O (ngắt khi có thay đổi) hoặc chân mạch gỡ rối Có lập trình điện trở kéo lên

Dữ liệu lập trình nối tiếp

Bốn chân RB4 - RB7 có chức năng ngắt (Interrupt) khi trạng thái chân Port thay đổi (khi chân Port được quy định là Output thì chức năng này không hoạt động) Chỉ có những chân được thiết lập ở cấu hình là ngõ vào thì mới có chức năng ngắt Các chân ngõ vào (RB4-RB7) được so sánh với giá trị cũ đã được chốt trong lần đọc trước của Port B

Trang 24

Khi có trạng thái sai lệch giữa hai giá trị này, ngắt sẽ xảy ra với cờ ngắt RBIF (INTCON<0>) bật lên, ngắt có thể làm cho vi điều khiển thoát khỏi trạng thái Sleep Mode

Điều kiện không tương thích sẽ tiếp tục làm cờ báo ngắt RBIF bằng 1 Khi đọc Port B sẽ chấm dứt điều kiện không tương thích và cho phép xóa bit

cờ báo ngắt RBIF

2.5.3 Port C

Port C gồm 8 chân từ RC0 - RC7 Việc ghi các giá trị nào vào thanh ghi TRISC sẽ quy định các chân của Port C là Input hay Output: Output = 0, Input = 1

Việc đọc thanh ghi Port C tương ứng với việc đọc các trạng thái của các chân của Port C Việc ghi giá trị vào thanh ghi Port C sẽ thay đổi các trạng thái của các chân của Port C

Các chân của Port C được đa hợp với các chức năng ngoại vi (bộ so sánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, UART) Khi các hàm chức năng ngoại vi được cho phép, thì cần quan tâm chặt chẽ tới giá trị các bit của thanh ghi TRISC Một số chức năng ngoại vi sẽ ghi các giá trị 0 đè lên các bit của thanh ghi TRISC và mặc định các chân là ngõ vào Do đó cần phải xem xét kỹ các tính năng của các hàm ngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC cho chính xác

Ngày đăng: 16/07/2015, 08:32

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w