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

ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic

77 2,4K 42

Đ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 đề Ứng dụng Vi điều Khiển PIC16F877A Giao tiếp Với Máy tính Thông Qua Cảm biến Nhiệt LM35 Thể Hiện Nhiệt Độ Môi Trường Trên Phần Mềm Visual Basic
Tác giả Nguyễn Đình Bảo
Người hướng dẫn Ngô Đình Nghĩa
Trường học Trường Đại học Điện Lực
Chuyên ngành Kỹ thuật Điện tử & Vi điều Khiển
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 77
Dung lượng 2,17 MB

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

Nội dung

bank 2 là cùng các thanh ghi có chức năng đặc biệt SFR mà người dùng khôngđược chứa dữ liệu khác, còn 4 bank bộ nhớ dữ liệu của PIC16F877A được tổchức theo cách khác.- Mỗi bank của bộ nh

Trang 1

LỜI NÓI ĐẦU

Hiện nay đất nước ta đang chuyển mình theo sự phát triển chung của thế giới

và khu vực Châu Á bằng nền sản xuất đa dạng và đầy tiềm năng Nền sản xuất nàykhông chỉ đòi hỏi một số lượng lao động khổng lồ mà còn yêu cầu về trình độ, chấtlượng tay nghề, kỹ thuật lao động và thiết bị sản xuất Trên đà phát triển đó, vấn đề

tự động hóa trong quá trình sản xuất, nghiên cứu trở thành một nhu cầu cần thiết.Thoạt đầu vấn đề tự động hóa được thực hiện riêng lẻ từ cơ khí hóa đến các mạchđiện tử Ngày nay, với sự xuất hiện của các chíp vi xử lý và máy tính cùng với việc

sử dụng rộng rãi của nó đã đẩy vấn đề tự động hóa lên bước cao hơn và thời lượngnhanh hơn…

Trong đó, việc ứng dụng máy vi tính vào kỹ thuật đo lường và điều khiển đãđem lại những kết quả đầy tính ưu việc Các thiết bị, hệ thống đo lường và điềukhiển ghép nối với máy vi tính có độ chính xác cao, thời gian thu nhập số liệungắn Ngoài ra, máy tính còn có phần giao diện lên màn hình rất tiện lợi cho người

sử dụng

Việc dùng máy tính để điều khiển và thông tin liên lạc với nhau thì vấn đềtruyền dữ liệu rất quan trọng Hiện nay chúng ta có thể dùng máy tính để liên lạcvới nhau thông qua hệ thống mạng như : mạng cục bộ (LAN) hay mạng toàn cầuInternet

Em xin chân thành cảm ơn Thầy NGÔ ĐÌNH NGHĨA đã quan tâm chỉ dẫncho em hiểu biết hơn về đề tài Qua các đề tài Thầy gợi ý cho em tìm hiểu, phântích và bắt tay vào thực hiện Em đã quyết định nghiên cứu đề tài “ Giao tiếp máytính điều khiển nhiệt độ bằng phương pháp ON-OFF”

Trang 2

LỜI CẢM ƠN

Trong quá trình thực hiện đồ án em đã nhận được sự hướng dẫn và giúp đỡ tậntình của Thầy NGÔ ĐÌNH NGHĨA Em xin chân thành cảm ơn Thầy cùng toàn thểThầy Cô trong khoa Điện đã tạo điều kiện để em nghiên cứu đề tài

Dù đã cố gắng rất nhiều nhưng trong quá trình làm còn nhiều thiếu sót nên emrất mong được sự góp ý của quý Thầy Cô và toàn thể các bạn

Trang 3

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Trang 4

Trang 5

MỤC LỤC

LỜI GIỚI THIỆU 1

LỜI CẢM ƠN 2

MỤC LỤC 5

Chương 1: TỔNG QUAN ĐỀ TÀI 8

I Đặt vấn đề 8

II Mục đích 9

III Hướng tiếp cận đề tài 9

IV Cách thức tiến hành 10

Chương 2: GIỚI THIỆU CÁC PHẦN TỬ, LINH KIỆN SỬ DỤNG TRONG MẠCH 11

I Cổng COM và truyền nhận dữ liệu 11

1 Giới thiệu cổng com 11

2 IC MAX 232 14

II Vi điều khiển PIC16F877A 16

1 Khái quát về vi điều khiển PIC16F877A 16

1.1 Khái quát : 16

1.2 Sơ đồ chân và sơ đồ nguyên lý của PIC16F877A 18

1.3 Nhận xét : 19

2 Tổ chức bộ nhớ : 20

2.1 Bộ nhớ chương trình : 20

2.2 Bộ nhớ dự liệu 20

a Thanh ghi chức năng đặc biệt SFR :(Special Function Resister) 22

b Thanh ghi mục đích chung GPR : (General Purpose Resister) 23

2.3 Stack 23

3 Khái quát về chức năng của các port trong vi điều khiển PIC16F877A 24

3.1 Port A : 24

3.2 Port B : 25

3.3 Port C : 25

3.4 Port D : 25

Trang 6

3.5 Port E : 26

4 Các vấn đề của Timer 26

4.1 Timer 0 : 26

a Là bộ định thời hoặc bộ đếm có những ưu điểm sau : 26

b Hoạt động của Timer 0 : 26

c Ngắt của timer 0 : 27

d Các thanh lien quan đến timer 0 : 28

4.2 Timer 1 : 30

a Timer1 : 30

b Timer1 có 3 chế độ hoạt động : 30

c Các thanh ghi lien quan đến Timer1 bao gồm : 31

4.3 Timer2 : 32

a Timer2 : 32

b Hoạt động của bộ Timer2 : 32

c Thanh ghi T2CON : điều khiển hoạt động của timer: 33

5 Ngắt (INTERRUPT) : 33

6 Phương pháp điều chế xung PWM cho PIC16F877A : 38

6.1 Điều chế PWM là gì ? 38

6.2 Nguyên lý của PWM : 38

6.3 Cách thiết lập chế độ PWM cho PIC16F877A: 40

7 ADC : 41

8 Giao tiếp nối tiếp: 42

9 Cổng giao tiếp song song PSP : 44

10 Các đặc tính của OSCILLATOR : 44

11 Các chế độ RESET : 45

III Cảm biến nhiệt LM35 : 47

IV Tổng quan về ngôn ngữ lập trình CCS : 48

V Visual basic và truyền thông nối tiếp : 49

Chương 3 : THIẾT KẾ PHẦN CỨNG 56

I Lưu đồ giải thuật visual basic: 56

II Lưu đồ giải thuật vi điều khiển : 59

Trang 7

III Phần cứng : 61

IV Giao diện Visual Basic : 64

V Code Visual Basic : 64

VI Code vi điều khiển : 70

VII Kết luận : 73

Trang 8

Chương 1 : TỔNG QUAN VỀ ĐỀ TÀI

độ đã trở nên rất quan trọng trong việc sử dụng nhiệt độ ví dụ như trong lò nhiệt,phòng xử lý chất thải… Trong nhiều trường hợp người ta cần xác định đo nhiệt độ

ở trong một phòng, lò xử lý… Ngày nay với sự biến đổi ngày càng xấu đi và khólường của thời tiết thì việc đo nhiệt độ môi trường trở nên rất quan trọng Do vậyvấn đề đo nhiệt độ được mọi người quan tâm để thực hành và kiểm tra đồng thờicũng là công cụ để lập trình đo nhiệt độ của thiết bị hay môi trường Vì nếu nắmbắt được nhiệt độ cuả môi trường giúp ta biết được tình trạng làm việc của các yêucầu Và có những xử lý kịp thời tránh được những hư hỏng và sự cố có thể xảy ra.Bởi vậy, trong các nghiên cứu khoa học , trong công nghiệp và đời sống hàng ngàyviệc đo nhiệt độ là điều rất cần thiết Tuy nhiên, để đo được trị số chính xác củanhiệt độ lại là vấn đề không đơn giản

Với sự phát triển không ngừng của khoa học kỹ thuật đã ứng dụng rất nhiềutrong công nghiệp Trong lĩnh vực điều khiển, từ khi công nghệ chế tạo loại vimạch lập trình phát triển đã đem đến các kỹ thuật điều khiển hiện đại có nhiều ưuđiểm hơn so với việc sử dụng các mạch điều khiển lắp ráp bằng các linh kiện rờinhư kích thước nhỏ, giá thành rẻ, độ làm việc tin cậy, công suất tiêu thụ nhỏ

Đo nhiệt độ là nhiệm vụ thường gặp trong các ngành nhiệt học, hoá học ,luyện kim Tuỳ theo nhiệt độ đo mà có thể dùng các phương pháp đo khácnhau.Thông thường nhiệt độ đo được chia thành 3 giải : Nhiệt độ thấp, nhiệt độtrung bình và nhiệt độ cao Ở nhiệt độ trung bình và thấp, phương pháp đo thường

là tiếp xúc nghĩa là các chuyển đổi được đặt trực tiếp ở ngay môi trường cần đo

Trang 9

Đối với nhiệt độ cao,đo bằng phương pháp không tiếp xúc, nghĩa là dụng cụ

đo đặt ngoài môi trường đo Một trong số những cách đó là đo nhiệt độ không tiếpxúc sử dụng cảm biến LM335 Vì thế, em đã chọn đề tài “Ứng dụng vi điều khiểnpic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt LM35 để thể hiện nhiệt

độ môi trường trên phần mềm visual basic.”

II Mục đích :

- Hiển thị chính xác nhiệt độ môi trường xung quanh.

- Sử dụng cảm biến nhiệt độ để theo dõi nhiệt độ

- So sánh nhiệt độ đo được với nhiệt độ ngưỡng (ngưỡng trên Tmax vàngưỡng dưới Tmin, được cài đặt tại bất kì thời điểm nào, tùy theo yêu cầuthông qua bàn phím) để đưa ra cảnh báo đèn và màn hình khi nhiệt độ vượtqua ngưỡng

- Thông qua chương trình vi điều khiển nhằm đáp ứng sự thay đổi nhiệt độ tùytheo mục đích sử dụng mà tác động tăng hay giảm nhiệt độ

- Kết hợp với máy tính ghi nhận sự thay đổi nhiệt độ nhằm phân tích đánh giá

sự biến đổi nhiệt độ

- Sử dụng phần mềm Visual basic nhằm hiển thị giá trị nhiệt độ

- Các phương án có thể lựa chọn, ưu khuyết điểm của từng phương án.+ Để đo lường nhiệt độ thì có thể dùng nhiều loại cảm biến nhiệt khác, mỗiloại có một ưu điểm riêng phù hợp với từng nhu cầu riêng Trong phạm vi đềtài là đo nhiệt độ môi trường bình thường nên sử dụng LM35 là tối ưu nhấtvì: đây là loại cảm biến có độ chính xác cao, tầm hoạt động tuyến tính từ 0-

128 độ C, tiêu tán công suất thấp

+ Trong đề tài sử dụng píc6f877a vì dễ mua, rẻ tiền, có tích hợp bộ chuyểnđổi ADC, có khả năng lập trình, có thể phát triển cho các đề tài sau…

III Hướng tiếp cận đề tài :

- Thu thập và tìm hiểu đề tài qua sách vở và tài liệu trên mạng

- Tìm hiểu công cụ lập trình qua các kiến thức đã học ở trường, qua hướng dẫncủa Thầy Cô, hỗ trợ từ bạn bè, tìm hiểu từ sách vở tài liệu liên quan

IV Cách thức tiến hành :

Trang 10

- Tìm hiểu vi xử lý PIC16F877A phần cứng và tập lệnh.

- Tìm hiểu ngôn ngữ lập trình và biên dịch CCS, viết chương trình và

biên dịch ra file.hex nạp cho vi điều khiển PIC.

- Tìm hiểu phần mềm Visual Basic và thiết lập giao diện hiển thị nhiệt độ trên Visual Basic.

- Viết chương trình và thiết lập phần cứng hiển thị mạch đo nhiệt độ.

Trang 11

Chương 2: GIỚI THIỆU CÁC PHẦN TỬ, LINH KIỆN SỬ

DỤNG TRONG MẠCH

I Cổng COM và truyền nhận dữ liệu :

1 Giới thiệu cổng com :

Cổng nối tiếp trên máy tính thường gọi là cổng COM, được sử dụng để truyền dữliệu hai chiều giữa máy tính và thiết bị ngoại vi và có các ưu điểm sau:

Khoảng cách truyền dài hơn so với cổng song song Cổng nối tiếp truyền mức 1 từ-3V đến -25V và mức 0 từ 3V đến 25 V nên khả năng chống nhiễu cao hơn, chophép khoảng cách truyền xa hơn

Số dây kết nối ít tối thiểu 3 dây

Có thể truyền không dây dùng tia hồng ngoại

Có thể ghép nối dễ dàng với PLC hay vi điều khiển

Các thiết bị ghép nối tiếp chia làm 2 loại :

- DCE (Data Communication Equipment):là các thiết bị trung gian như modem…

- DTE(Data Terminal Equipment): là các thiết bị như máy vi tính, vi điều khiển,PLC là nguồn tạo ra dữ liệu hay tiếp nhận dữ liệu để xử lí.Có thể ghép nối DTE vớiDTE hoặc DCE, hoặc DCE với DTE hoặc DCE

Tín hiệu truyền nối tiếp theo dạng xung chuẩn RS-232 mức logic 0 còn gọi làSpace giữa +3V và +25 V, mức logic 1 còn gọi là Mark ở giữa -3V và -25 V TừDTE tín hiệu được truyền giữa 2 dây GND và TXD theo hình sau:

Khi không truyền đường dây ở trạng thái Mark,khi bắt đầu truyền, xung Start đượctruyền (+10V) sau đó là 8 bit dữ liệu, bit D0 được truyền trước, nếu bit logic 0được truyền trước thì điện áp đường dây tương ứng là 10V, sau bit dữ liệu là bitkiểm tra chẵn lẻ rồi bit Stop ở logic 1(-10V) DTE nhận tín hiệu truyền ngược trởlại theo đường RXD, nếu nối hai DTE với nhau thì dùng sơ đồ sau:

Trang 12

Trường hợp dùng DTE và DCE thì chân TXD của DCE nhận tín hiệu còn chânRXD phát tín hiệu.

Cổng COM có 2 dạng đầu nối: D-9 và D-25

khoảng cách ngắn ta thường dùng sơ đồ sau:

Trang 13

Tín hiệu truyền nối tiếp dưới dạng các bit, số bit trong một giây được gọi là baud.Các vận tốc truyền thông dụng là: 300, 600, 1200, 2400, 4800, 9600, 19200…baud Kết nối giữa máy tính (DTE) và modem (DCE) thực hiện theo nguyên tắccác chân cùng tên nối với nhau Còn khi kết nối DTE và DTE thì dùng sơ đồ sau:

Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4với các địa chỉ như sau:

Tên Địa chỉ Ngắt Vị trí chứa địa

Trang 14

Khi DTE cần truyền dữ liệu thì DTR tích cực đưa về DSR cho biết phía nhận sẵnsàng đưa về CD cho biết đã nhận được sóng mang của modem ảo Hai DTE cócùng khung truyền nên RTS và CTS nối với nhau Đôi khi có thể bỏ đường nốiDTR với DSR và CD.

Khi kết nối DTE với DCE,do vận tốc khác nhau cần điều khiển lưu lượng.Có 2cách dùng là phần cứng và phần mềm.Khi dùng phần cứng sử dụng hai dây RTS vàDCS.Nếu DTE muốn truyền cho RTS tác động,nếu DCE chấp nhận sẽ gởi trở vềCTS và máy tính sẽ gởi dữ liệu Điều khiển lưu lượng bằng phần mềm dùng 2 ký tựXon và Xoff Khi modem muốn máy tính ngừng truyền sẽ gởi đi ký tự Xoff,còn khimodem rảnh sẽ gửi ký tự Xon

Cấu tạo ic max 232:

Theo tiêu chuẩn EIA(Electronics Industry Association)

- Nguồn cung cấp +5V

- Dùng thêm 4 tụ ngoài 0.1mF

- Tốc độ truyền có thể lên đến 1Mbit/s

- Có hai bộ đệm truyền và hai bộ đệm nhận

Hình 3.1: sơ đồ chân ic max 232

Trang 15

Một vài thông số của MAX 232:

Chân nguồn cần 1 tụ Bypass (khoảng 0.1mF) còn 4 tụ còn lại ở các chân C1, C2,V+ và V- có thể sử dụng loại phân cực hoặc không phân cực, các tụ này phải từ0.1mF trở lên để làm giảm gợn song ở các ngõ ra của bộ truyền và làm giảm đáng

kể công suất tiêu thụ của nguồn tụ ở các chân C2,V1 và V2 có thể thay đổi giá trịnhưng tụ C1 thì không

II Vi điều khiển PIC16F877A :

1 Khái quát về vi điều khiển PIC16F877A :

1.1 Khái quát :

- PIC là tên viết tắt của “Programmable Intelligent computer” do hãngGeneral Instrument đặt tên cho con vi điều khiển đầu tiên của họ.HãngMicrchip tiếp tục phát triển sản phầm này và cho đến hàng đã tạo ra gần 100loại sản phẩm khác nhau

- PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu

Trang 16

hết tất cả các ứng dụng thực tế Đây là dòng PIC khá dễ cho người mới làmquen với PIC có thể học tập và tạo nền tản về họ vi điều khiển PIC của mình.

- PIC 16F877A thuộc họ vi điều khiển 16Fxxx có các đặt tính sau:

 Ngôn ngữ lập trình đơn giản với 35 lệnh có độ dài 14 bit

 Tất cả các câu lệnh thực hiện trong 1 chu kì lệnh ngoại trừ 1 số câulệnh rẽ nhánh thực hiện trong 2 chu kì lệnh Chu kì lệnh bằng 4 lần chu kìdao động của thạch anh

 Bộ nhớ chương trình Flash 8Kx14 words, với khả năng ghi xoákhoảng 100 ngàn lần

 Bộ nhớ Ram 368x8bytes

 Bộ nhớ EFPROM 256x8 bytes

 Khả năng ngắt (lên tới 14 nguồn cả ngắt trong và ngắt ngoài)

 Ngăn nhớ Stack được chia làm 8 mức

 Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp

 Dải điện thế hoạt động rộng: 2.0V đến 5.5V

 Nguồn sử dụng 25mA

 Công suất tiêu thụ thấp:

<0.6mA với 5V, 4MHz20uA với nguồn 3V, 32 kHz

 Có 3 timer: timer0, 8 bit chức năng định thời và bộ đếm với hệ số

tỷ lệ trước.Timer1, 16 bit chức năng bộ định thời, bộ đếm với hệ số tỷ lệtrước, kích hoạt chế độ Sleep.Timer2, 8 bit chức năng định thời và bộ đếmvới hệ số tỷ lệ trước và sau

 Có 2 kênh Capture/ so sánh điện áp (Compare)/điều chế độ rộng xungPWM 10 bit / (CCP)

 Có 8 kênh chuyển đổi ADC 10 bit

 Cổng truyền thong nối tiếp SSP với SPI phương thức chủ và I2C(chủ/phụ).Bộ

truyền nhận thông tin đồng bộ, dị bộ (USART/SCL) có khả năng phát hiện 9

Trang 17

- Tổ chức bộ nhớ của PIC 16F877A.

- Chức năng của các Port I/O

- Chức năng và cách thiết lập các tham số của 3 Timer 0,1,2

- Chức năng và cách thiết lập bộ điều chế độ rộng xung PWM

- Định nghĩa ngắt, các nguồn ngắt và tìm hiểu sâu về ngắt timer vàngắt ngoài là hai chức năng được sử dụng trong đề tài này

Trang 18

Hình 2: Sơ đồ nguyên lí PIC 16F877A

1.2 Sơ đồ chân và sơ đồ nguyên lý của PIC16F877A :

Sơ đổ chân :

Trang 20

- 5 port của PIC16F877A bao gồm :

Cấu trúc bộ nhớ của vi điều khiển

PIC16F877A bao gồm bộ nhớ chương

trình (Program memory) và bộ nhớ dữ

liệu (Data Memory)

2.1 Bộ nhớ chương trình :

Bộ nhớ chương trình của vi điều

khiển PIC16F877A là bộ nhớ flash,

dung lượng bộ nhớ 8K word (1word =

14 bit) và được phân thành nhiều trang

(từ page0 đến page 3)

Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vìmột lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit).Để mã hóa đượcđịa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có dung lượng

13 bit (PC<12:0>)

Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h(Reset vector).Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ0004h (Interrupt vector) Bộ nhớ chương trình không bao gồm bộ nhớ stack vàkhông được địa chỉ hóa bởi bộ đếm chương trình

Trang 21

bank 2 là cùng các thanh ghi có chức năng đặc biệt SFR mà người dùng khôngđược chứa dữ liệu khác, còn 4 bank bộ nhớ dữ liệu của PIC16F877A được tổchức theo cách khác.

- Mỗi bank của bộ nhớ dữ liệu PIC16F877A bao gồm cả các thanh ghi có chứcnăng đặc biệt SFR nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mụcđích dùng chung GPR nằm ở vùng địa chỉ còn lại của mỗi bank thanh ghi.Vùng ô nhớ các thanh ghi mục đích dùng chung này chính là nơi người dùng sẽlưu dữ liệu trong quá trình viết chương trình Tất cả các biến dữ liệu nên đượckhai báo chứa trong vùng địa chỉ này

- Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào màthường xuyên được sử dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả cácbank để thuận tiện trong việc truy xuất Sở dĩ như vậy là vì, để truy xuất mộtthanh ghi nào đó trong bộ nhớ của 16F877A ta cần phải khai báo đúng bankchứa thanh ghi đó, việc đặt các thanh ghi sử dụng thường xuyên giúp ta thuậntiên hơn rất nhiều trong quá trình truy xuất, làm giảm lệnh chương trình

Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét như sau

- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghidùng chung để chứa dữ liệu của người dùng địa chỉ từ 20h đến 7Fh.Các thanh ghi PORTA, PORTB, PORTC, PORTD, PORTE đều chứa ởbank0, do đó để truy xuất dữ liệu các thanh ghi này ta phải chuyển đếnbank0 Ngoài ra một vài các thanh ghi thông dụng khác ( sẽ giới thiệusau) cũng chứa ở bank0

- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh Các thanh ghi dùngchung có địa chỉ từ A0h đến Efh Các thanh ghi TRISA, TRISB, TRISC,TRISD, TRISE cũng được chứa ở bank1

- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên

sơ đồ trên

Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có mặt trên

cả 4 bank Một điều quan trọng cần nhắc lại trong việc truy xuất dữ liệu củaPIC16F877A là : phải khai báo đúng bank chứa thanh ghi đó.Nếu thanh ghi nào

Trang 22

mà 4 bank đều chứa thì không cần phải chuyển bank.

Hình 6: Cấu trúc bộ nhớ dữ liệu của PIC 16F877A

a Thanh ghi chức năng đặc biệt SFR :(Special Function Resister)

- Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập vàđiều khiển các khối chức năng được tích hợp bên trong vi điều khiển Cóthể

phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năngbên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khốichức năng bên ngoài (ví dụ như ADC, PWM, …)

- Một số thanh ghi cức năng đặc biệt:

Trang 23

 Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực

hiện phép tốn của khối ALU, trạng thái reset và các bit chọn bank cầntruy xuất trong bộ nhớ dữ liệu

 Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và

ghi, cho phép điều khiển chức năng pull-up của các chân trong PORTB,xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và

bộ đếm Timer0

 Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh): thanh ghi cho phép đọc

và chứa các bít điều khiển và các cờ hiệu khi timer0 bị tràn, ngắtngoại vi RB0/INT và ngắt interrput-on-change tại các chân của PORTB

 Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các

khối chức năng ngoại vi

 Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi, các

ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1

 Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối

chức năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớEEPROM

 Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ

reset của vi điều khiển

b Thanh ghi mục đích chung GPR : (General Purpose Resister)

Các thanh ghi này cĩ thể được truy xuất trực tiếp hoặc gián tiếp thơng qua thanhghi FSG (File Select Register).Đây là các thanh ghi dữ liệu thơng thường, người

sử dụng cĩ thể tùy theo mục đích chương trình mà cĩ thể dùng các thanh ghi này

để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình

Hình 7: Cấu trúc thanh ghi chức năng chung của PIC 16F877A

2.3 Stack :

- Stack khơng nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một

Trang 24

vùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL được thực hiệnhay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếmchương trình PC tự động được vi điều khiển cất vào trong stack Khi một trongcác lệnh RETURN, RETLW hat 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 qui trình định trước.

- Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được 8địa chỉ và hoạt động theo cơ chế xoay vòng Nghia là giá trị cất vào bộ nhớ Stacklầ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á tri6 cất vào Stack lần thứ 2

- Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó ta khôngbiết được khi nào stack tràn Bên cạnh đó tập lệnh của vi điều khiển dòng PICcũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàntoàn được điều khiển bởi CPU

3 Khái quát về chức năng của các port trong vi điều khiển PIC16F877A

3.1 PORT A:

- PORTA (RPA) bao gồm 6 I/O pin.Đây là các chân “hai chiều” (bidirectionalpin), nghĩa là có thể xuất và nhập được.Chức năng I/O này được điều khiển bởithanh ghi TRISA (địa chỉ 85h) Muốn xác lập chức năng của một chân trongPORTA là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghiTRISA và ngược lại, muốn xác lập chức năng của một chân trong PORTA làoutput, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA.Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điềukhiển tương ứng TRIS (đối với PORTA là TRISA, đối với PORTB là TRISB,đối với PORTC là TRISC, đối với PORTD là TRISD vàđối với PORTE làTRISE)

- Ngoài ra, PORTA còn có các chức năng quan trọng sau :

 Ngõ vào Analog của bộ ADC : thực hiện chức năng chuyển từ Analog sang Digital

 Ngõ vào điện thế so sánh

Trang 25

 Ngõ vào xung Clock của Timer0 trong kiến trúc phần cứng : thực hiện các nhiệm vụ đếm xung thông qua Timer0…

 Ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port)

- Các thanh ghi SFR liên quan đến PORTA bao gồm:

PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA

TRISA (địa chỉ 85h) : điều khiển xuất nhập

CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh

CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sán điện áp

ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC

3.2 PORT B:

PORTB (RPB) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng làTRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trìnhnạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB cònliên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tích hợp chức năngđiện trở kéo lên được điều khiển bởi chương trình

Các thanh ghi SFR liên quan đến PORTB bao gồm:

- PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB

- TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập

- OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0

3.3 PORT C:

PORTC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng làTRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộTimer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART

Các thanh ghi điều khiển liên quan đến PORTC:

- PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC

- TRISC (địa chỉ 87h) : điều khiển xuất nhập

3.4 PORT D:

Trang 26

PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng làTRISD PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel SlavePort).

Các thanh ghi liên quan đến PORTD bao gồm:

- Thanh ghi PORTD : chứa giá trị các pin trong PORTD

- Thanh ghi TRISD : điều khiển xuất nhập

3.5 PORT E:

PORTE (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tương ứng làTRISE Các chân của PORTE có ngõ vào analog Bên cạnh đó PORTE còn là cácchân điều khiển của chuẩn giao tiếp PSP

Các thanh ghi liên quan đến PORTE bao gồm

- PORTE : chứa giá trị các chân trong PORTE

- TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếpPSP

- ADCON1 : thanh ghi điều khiển khối ADC

4 Các vấn đề của Timer :

PIC16F877A có tất cả 3 timer : timer0 (8 bit), timer1 (16 bit) và timer2 (8 bit)

4.1 Timer 0 :

a Là bộ định thời hoặc bộ đếm có những ưu điểm sau :

 8 bit cho bộ định thời hoặc bộ đếm

 Có khả năng đọc và viết

 Có thể dùng đồng bên trong hoặc bên ngoài

 Có thể chọn cạnh xung của xung đồng hồ

 Có thể chọn hệ số chia đầu vào (lập trình bằng phần mền)

 Ngắt tràn

b Hoạt động của Timer 0 :

 Timer 0 có thể hoạt động như một bộ định thời hoặc một bộ

đếm.Việc chọn bộ định thời hoặc bộ đếm có thể được xác lập bằng việc xoá hoặc đặt bít TOCS của thanh ghi OPTION_REG<5>

Trang 27

 Nếu dùng hệ số chia xung đầu vào thì xoá bit PSA củathanh ghi OPTION_REG<3>.

 Trong chế độ bộ định thời được lựa chọn bởi việc xoá bit T0CS(OPTION REG<5>), nó sẽ được tăng giá trị sau một chu kỳ lệnhnếu không chọn hệ số chia xung đầu vào.Và giá trị của nó được viếttới thanh ghi TMR0

 Khi dùng xung clock bên ngoài cho bộ định thời Timer0 và khôngdùng hệ số chia clock đầu vào Timer0 thì phải đáp ứng các điềukiện cần thiết để có thể hoạt động đó là phải bảo đảm xung clockbên ngoài có thể đồng bộ với xung clock bên trong (TOSC)

 Hệ số chia dùng cho Timer 0 hoặc bộ WDT Các hệ số nay không

có khả năng đọc và khả năng viết Để chọn hệ số chia xung cho

bộ tiền định của Timer0 hoặc cho bộ WDT ta tiến hành xoáhoặc đặt bít PSA của thanh ghi OPTION_REG<3>

 Những bít PS2, PS1, PS0 của thanh ghi OPTION_REG<2:0> dùng

c Ngắt của timer 0 :

Khi giá trị thanh ghi TMR0 từ FFh trở về 00h, ngắt Timer0 sẽ xuất hiện.Thanh ghi TMR0 cho phép ghi và xóa được giúp ta ấn định thời điểm ngắt Timer0xuất hiện một cách linh động Muốn Timer0 hoạt động ở chế độ counter ta set bitTOSC (OPTION_REG<5>) Khi đó xung tác động lên bộ đếm được lấy từ chânRA4/TOCK1 Bit TOSE (OPTION_REG<4>) cho phép lựa chọn cạnh tác độngvào bột đếm Cạnh tác động sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là

Trang 28

cạnh xuống nếu TOSE=1 Khi thanh ghi TMR0 bị tràn, bit TMR0IF(INTCON<2>) sẽ được set Đây chính là cờ ngắt của Timer0 Cờ ngắt này phảiđược xóa bằng chương trình trước khi bộ đếm bắt đầu thực hiện lại quá trình đếm.Ngắt Timer0 không thể “đánh thức” vi điều khiển từ chế độ sleep.

d Các thanh lien quan đến timer 0 :

- TMR0 (địa chỉ 01h, 101h) : chứa giá trị đếm của Timer0

- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE vàPEIE)

- OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler

Hình 8: Cấu trúc thanh ghi OPTION_REG REGISTER

điều khiển hoạt động của Timer0

 bit 5 TOCS lựa chọn nguồn clock

1=Clock ngoài từ chân T0CKI0=Clock trong Focs/4

 bit 4 T0SE bit lựa chon sườn xung clock

1=Timer 0 tăng khi chân T0CKI tử cao xuống thấp(sườn xuống)0=Timer 0 tăng khi chân T0CKI tử thấp lên cao(sườn xuống)

 bit 3 PSA bit gán bộ chia xung đầu vµo

1=gán bộ chia Prescaler cho WDT0=gán bộ chia Prescaler cho Timer 0

 bit 2:0 PS2:PS1 lựa chọn hệ số chia hệ số xung theo bảng sau:

Trang 29

- Thanh ghi TMR0 đại chỉ 01h và 101h : chứa giá trị của bộ định thời Timer0

- Thanh ghi INTCON : cho phép ngắt hoạt động

Thanh ghi chứa các bit điều khiển và các bít cờ hiệu khi timer0 bị tràn, ngắtngoại vi RB0/INT và ngắt interrupt_on_change tại các chân của PORTB

Hình 9: Cấu trúc thanh ghi INTCON cho phép ngắt Timer0 hoạt động

 Bit 7 GIE Global Interrupt Enable bit

GIE = 1 cho phép tất cả các ngắt

GIE = 0 không cho phép tất cả các ngắt

 Bit 6 PEIE Pheripheral Interrupt Enable bit

PEIE = 1 cho phép tất cả các ngắt ngoại vi

PEIE = 0 không cho phép tất cả các ngắt ngoại vi

 Bit 5 TMR0IE Timer0 Overflow Interrupt Enable bit

TMR0IE = 1 cho phép ngắt Timer0

TMR0IE = 0 không cho phép ngắt Timer0

 Bit 4 RBIE RB0/INT External Interrupt Enable bit

RBIE = 1 cho phép tất cả các ngắt ngoại vi RB0/INTRBIE = 0 không cho phép tất cả các ngắt ngoại vi RB0/INT

 Bit 3 RBIE RB Port change Interrupt Enable bit

RBIE = 1 cho phép ngắt RB Port changeRBIE = 0 không cho phép ngắt RB Port change

 Bit 2 TMR0IF Timer0 Interrupt Flag bit

Trang 30

TMR0IF = 1 thanh ghi TMR0 bị tràn (phải xóa cờ hiệu bằngchương trình).

TMR0IF = 0 thanh ghi TMR0 chưa bị tràn

 Bit 1 INTF BR0/INT External Interrupt Flag bit

INTF = 1 ngắt RB0/INT xảy ra (phải xóa cờ hiệu bằng chương trình) INTF = 0 ngaột RB0/INT chửa xaỷy ra

 Bit 0 RBIF RB Port Change Interrupt Flag bit

RBIF = 1 ít nhất có một chân RB7:RB4 có sự thay đổi trạng thái.Bít này phải được xóa bằng chương trình sau khi đã kiểm tra lạicác giá trị chân tại PORTB

RBIF = 0 không có sự thay đổi trạng thái các chân RB7:RB4

4.2 Timer 1 :

a Timer1 : là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong hai

thanh ghi 8 bit TMR1H:TMR1L Cờ ngắt của Timer1 là bit TMR1IF, bitđiều khiển của Timer1 là TRM1IE.Cặp thanh ghi của TMR1 sẽ tăng từ0000h lên đến FFFFh rồi sau đó tràn về 0000h Nếu ngắt được cho phép,

nó sẽ xảy ra khi khi giá trị của TMR1 tràn từ FFFFh rồi về 0000h, lúc nàyTMR1IF sẽ bật lên

b Timer1 có 3 chế độ hoạt động :

 Chế độ hoạt động định thời đồng bộ: Chế độ được lựa chọn bởi bitTMR1CS.Trong chế độ này xung cấp cho Timer1 là Fosc/4, bitT1SYNC không có tác dụng

 Chế độ đếm đồng bộ: trong chế độ này, giá trị của timer1 sẽ tăng khi

có xung cạnh lên vào chân T1OSI/RC1 Xung clock ngoại sẽ được đồng

bộ với xung clock nội, hoạt động đồng bộ được thực hiện ngay sau bộtiền định tỉ lệ xung (prescaler)

 Chế độ đếm bất đồng bộ:chế độ này xảy ra khi bit T1SYNC được set

Bộ định thời sẽ tiếp tục đếm trong suốt quá trình ngủ (Sleep) của vi điềukhiển và có khả năng tạo một ngắt khi bộ định thời tràn và làm cho viđiều khiển thoát khỏi trạng thái ngủ

Trang 31

c Các thanh ghi lien quan đến Timer1 bao gồm :

 INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (2bit GIE và PEIE)

 PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF)

 PIE1 (địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE) Ba thanh ghi vừanêu trên sẽ được trình bày ở phần chương trình ngăt của PIC

 TMR1L (địa chỉ 0Eh): chứa giá trị 8 bít thấp của bộ đếm Timer1

 TMR1H (địa chỉ 0Eh): chứa giá trị 8 bít cao của bộ đếm Timer1

Hai thanh ghi TMR1L và TMR1H là 2 thanh ghi chứa dữ liệu 16 bit(lần lượt chứa 4 bit thấp và 4 bit cao) của bộ đếm Timer1

 T1CON (địa chỉ 10h): xác lập các thông số chi Timer

Hình 10: Cấu trúc thanh ghi T1CON điều khiển hoạt động của Timer1

0= Bộ dao động không hoạt động

- bit 2 bit điều khiển xung clock ngoài đồng bộ khi TMR1CS=1khi TMR1CS=0 bit này không có tác dụng

- bit 1 TMR1CS bit lựa chọn nguồn xung clock vào TMR1CS=1 clock từ chân

Trang 32

RC0/T1OSO/T1CKI (sườn lên) TMR1CS=0 clock trong Fosc/4

- bit 0 bit bật tắt Timer

1= Timer 1 enable

0=Timer 1 Disable

4.3 Timer2 :

a Timer2 : là bộ định thời 8 bit bao gồm một bộ tiền định (prescaler), một

bộ hậu định Postscaler và một thanh ghi chu kỳ viết tắt là PR2 Việc kết hợptimer2 với 2 bộ định tỉ lệ cho phép nó hoạt động như một bộ đinh thời 16 bit Module timer2 cung cấp thời gian hoạt động cho chế độ điều biến xungPWM nếu module CCP được chọn

Hình 11: Sơ đồ khối Timer2

b Hoạt động của bộ Timer2 :

- Timer2 được dùng chủ yếu ở phần điều chế xung của bộ CCP, thanh ghiTMR2 có khả năng đọc và viết, nó có thể xóa bằng việc reset lại thiết bị Đầuvào của xung có thể chọn các tỷ số sau; 1:1; 1:4 hoặc 1:16 việc lựa chọn các

tỷ số này có thể điều khiển bằng các bit sau T2CKPS1 và bit T2CKPS0

- Bộ Timer2 có 1 thanh ghi 8 bít PR2 Timer 2 tăng từ gi trị 00h cho đếnkhớp với PR2 và tiếp theo nó sẽ reset lại gi trị 00h và lệnh kế tiếp thựchiện.Thanh ghi PR2 là một thanh ghi có khả năng đọc và khả năng viết

c Thanh ghi T2CON: điều khiển hoạt động của Timer

Trang 33

Hình 12: Cấu trúc thanh ghi T2CON điều khiển hoạt động

5 Ngắt (INTERRUPT) :

- PIC16F877A có đến 14 nguồn tạo ra hoạt động ngắt được điều khiển bởithanh ghi INTCON (bit GIE) Bên cạnh đó mỗi ngắt còn có một bit điềukhiển và cờ ngắt riêng Các cờ ngắt vẫn được set bình thường khi thỏa mãnđiều kiện ngắt xảy ra bất chấp trạng thái của bit GIE, tuy nhiên hoạt động ngắtvẫn phụ thuôc vào bit GIE và các bit điều khiển khác Bit điều khiển ngắtRB0/INT và TMR0 nằm trong thanh ghi INTCON, thanh ghi này còn chứa bitcho phép các ngắt ngoại vi PEIE Bit điều khiển các ngắt nằm trong thanh ghiPIE1 và PIE2.Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2

- Trong một thời điểm chỉ có một chương trì nh ngắt được thực thi, chương trìnhngắt được kết thúc bằng lệnh RETFIE Khi chương trình ngắt được thực thi,bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình chính đượccất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h.Lệnh RETFIE được dùng để thoát khỏi chương trình ngắt và quay trở về

Trang 34

chương trình chính, đồng thời bit GIE cũng sẽ được set để cho phép các ngắthoạt động trở lại Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra vàphải được xóa bằng chương trình trước khi cho phép ngắt tiếp tục hoạt động trởlại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra.

- Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạngthái các pin của PORTB (PORTB Interrupt on change), việc xác định ngắt nàoxảy ra cần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời điểm xảy ra ngắt

- Cần chú ý là trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chươngtrình được cất vào trong Stack, trong khi một số thanh ghi quan trọng sẽ khôngđược cất và có thể bị thay đổi giá trị trong quá trình thực thi chương trìnhngắt.Điều này nên được xử lí bằng chương trình để tránh hiện tượng trên xảy ra

- Các nguồn ngắt của Pic 16F877A:

1) RTCC hoặc TIMER0: ngắt tràn Timer0

2) RB: ngắt khi có sự thay đổi trạng thái 1 trong các chân từ RB4 đếnRB7 của PORTB

3) EXT: (External Interrupt) ngắt ngoài khi có sự thay đổi trạng thái

ở chân RB0 cùa PORTB

4) AD: ngắt khi bộ chuyển đổi tính hiệu tương tự sang tính hiệu sốchuyền đổi hoàn tất 1 tính hiệu

5) TBE: ngắt khi bộ đệm của cổng RS232 rỗng

6) RDA: ngắt khi cổng RS232 nhận tính hiệu

7) TIMER1: ngắt khi timer1 bị tràn

8) TIMER2: ngắt khi timer2 bị tràn

9) CCP1; CCP2: ngắt khi bộ capture hoặc bộ Compare (bộ so sánhđiện áp) hoạt động; ở kênh 1 hoặc 2

10) SSP: ngắt khi SPI hoặc I2C hoạt động

11) PSP: ngắt khi truyền nhận dữ liệu song song

12) BUSCOL: ngắt khi xung đột đường truyền

13) EEPROM: ngắt khi ghi xong dữ liệu

14) COMP: ngắt sau khi thực hiện so sánh tính hiệu

Trang 35

Hình 13: Sơ đồ hoạt động ngắt của PIC 16F877AVới đề tài “Điều khiển tốc độ động cơ DC” chúng em sử dụng hai loại nguồnngắt là ngắt ngoài khi có sự thay đổi trạng thái ở chân RB0 của PORTB và ngắttràn Timer1, vì thế chúng em sẽ trình bày cụ thể hơn về nguyên lí hoạt động vàcác cài đặt của hai loại ngắt này trong phần dưới đây:

5.1 Ngắt ngoài (External Interrupt):

- Ngắt này dựa trên sự thay đổi trạng thái của pin RB0/INT Cạnh tác động gây

ra ngắt có thể là cạnh lên hay cạnh xuống và được điều khiển bởi bit INTEDG(thanh ghi OPTION_ REG <6>) Khi có cạnh tác động thích hợp xuất hiện tạipin RB0/INT, cờ ngắt INTF được set bất chấp trạng thái các bit điều khiển GIE

và PEIE Ngắt này có khả năng đánh thức vi điều khiển từ chế độ sleep nếu bitcho phép ngắt được set trước khi lệnh SLEEP được thực thi

- Thanh ghi OPTION_REG: địa chỉ 81h, 181h

Thanh ghi này cho phép điều khiển chức năng pull-up của các pin trong PORTB,xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi RB0(External Interrupt) và bộ đếm Timer0

Trang 36

Hình 14: Cấu trúc thanh ghi OPTION_REG cho phép ngắt

ngoại và ngắt timer0

 Bit 7 PORTB pull-up enable bit

= 1 không cho phép chức năng pull-up của PORTB

= 0 cho phép chức năng pull-up của PORTB

 Bit 6 INTEDG Interrupt Edge Select bit

INTEDG = 1 ngắt xảy ra khi cạnh dương chân RB0/INT xuất hiện.INTEDG = 0 ngắt xảy ra khi cạnh âm chân BR0/INT xuất hiện

 Bit 5 TOCS Timer0 Clock Source select bit

TOSC = 1 clock lấy từ chân RA4/TOCK1

TOSC = 0 dùng xung clock bên trong (xung clock này bằng vớixung clock dùng để thực thi lệnh)

 Bit 4 TOSE Timer0 Source Edge Select bit

TOSE = 1 tác động cạnh lên

TOSE = 0 tác động cạnh xuống

 Bit 3 PSA Prescaler Assignment Select bit

PSA = 1 bộ chia tần số (prescaler) được dùngcho WDT PSA = 0 bộ chia tần số được dùng choTimer0

 Bit 2:0 PS2:PS0 Prescaler Rate Select bit

Các bit này cho phép thiết lập tỉ số chia tần số của Prescaler

5.2 Ngắt tràn Timer1:

- Cặp thanh ghi TMR1H và TMR1L chứa giá trị đếm của Timer1, chúng tăng

từ gía trị 0000h đến gía trị FFFFh đến giá trị này tiếp tục tăng thì timer1 tràn

Trang 37

và quay lại giá trị 0000h.Và ngắt xuất hiện khi tràn quá giá trị FFFFh khi này

cờ ngắt TMR1IF sẽ được đặt.Ngắt có thể hoạt động hoặc không hoạt độngnhờ việc đặt hoặc xóa bít TMR1IE

- Thanh ghi điều khiển Timer1 T1CON:

 bit 7,6 không sử dụng

 bit 5,4 T1CKPS1:T1CKPS0 lựa chọn hệ số chia xung vào

T1CKPS1:T1CKPS0 tỷ lệ chia đầu vào

0= Bộ dao động không hoạt động

 bit 2 bit điều khiển xung clock ngoài đồng bộ

khi TMR1CS=1

bit2=0 có đồng clock ngoài

=1 không đồng bộ clock ngoàikhi TMR1CS=0 bit này không có tác dụng

 bit 1 TMR1CS bit lựa chọn nguồn xung clock vào

TMR1CS=1 clock từ chân RC0/T1OSO/T1CKI (sườn

lên) TMR1CS=0 clock trong Fosc/4

 bit 0 bit bật tắt Timer

1= Timer 1 enable

0=Timer 1 Disable

6 Phương pháp điều chế xung PWM cho PIC16F877A :

Trang 38

Để điều khiển tốc độ động cơ DC người ta có thể dùng nhiều phương pháp khác nhau trong đó có một phương pháp hết sức quan trọng và thông dụng là phương pháp điều chế độ rộng xung kích (PWM).

6.1 Điều chế PWM là gì ?

Phương pháp điều chế độ rộng xung PWM (Pulse Width Modulation) là phươngpháp điều chỉnh điện áp ra tải hay nói cách khác là phương pháp điều chế dựatrên sự thay đổi độ rộng của chuỗi xung kích để điều khiển linh kiệnđóng ngắt (SCR hay Transistor) dẫn đến sự thay đổi điện áp ra tải

Ngày đăng: 10/05/2014, 12:36

HÌNH ẢNH LIÊN QUAN

Hình 3.1: sơ đồ chân ic  max 232 - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 3.1 sơ đồ chân ic max 232 (Trang 14)
Hình 2: Sơ đồ nguyên lí PIC 16F877A - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 2 Sơ đồ nguyên lí PIC 16F877A (Trang 18)
Sơ đồ nguyên lý : - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Sơ đồ nguy ên lý : (Trang 19)
Hình 5 : Cấu trúc bộ  nhớ PIC 16f877a - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 5 Cấu trúc bộ nhớ PIC 16f877a (Trang 20)
Hình 6: Cấu trúc bộ nhớ dữ liệu của PIC 16F877A - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 6 Cấu trúc bộ nhớ dữ liệu của PIC 16F877A (Trang 22)
Hình 8: Cấu trúc thanh ghi OPTION_REG REGISTER điều khiển hoạt động của Timer0 - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 8 Cấu trúc thanh ghi OPTION_REG REGISTER điều khiển hoạt động của Timer0 (Trang 28)
Hình 11: Sơ đồ khối Timer2 - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 11 Sơ đồ khối Timer2 (Trang 32)
Hình 13: Sơ đồ hoạt động ngắt của PIC 16F877A - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 13 Sơ đồ hoạt động ngắt của PIC 16F877A (Trang 35)
Đồ thị dạng xung điều chế PWM - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
th ị dạng xung điều chế PWM (Trang 38)
Hình 17: Sơ đồ khối CCP  (PWMmode)(trái) - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 17 Sơ đồ khối CCP (PWMmode)(trái) (Trang 41)
Hình 7.2: Tạo giao diện VB - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 7.2 Tạo giao diện VB (Trang 49)
Hình 7.3: tạo đối tượng Mscomm - Thấy đối tượng MSComm như sau: - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 7.3 tạo đối tượng Mscomm - Thấy đối tượng MSComm như sau: (Trang 50)
Hình 7.4:  tạo đối tượng MScomm - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 7.4 tạo đối tượng MScomm (Trang 51)
Hình 7.6:  thiết lập thông số cho Mscomm - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
Hình 7.6 thiết lập thông số cho Mscomm (Trang 52)
Hình  7.7: các thông số của Mscomm - ứng dụng vi điều khiển pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt lm35 thể hiện nhiệt độ môi trường trên phần mềm visual basic
nh 7.7: các thông số của Mscomm (Trang 52)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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

w