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

Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số

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

MỤC LỤC
1.1.2. Kiến trúc của vi điều khiển PIC 9
1.1.3. Các dòng vi điều khiển PIC: 13
Nếu phân chia theo độ rộng bus dữ liệu thì có 3 dòng vi điều khiển PIC:
13
1.1.3.1.Các dòng PIC 8bit bao gồm: 14
1.1.3.2.Vi điều khiển 16bit 15
1.1.3.2.2. Bộ điều khiển xử lý tín hiệu số 16-bit (dsPIC) 18
1.1.3.3 Vi điều khiển 32bit 20
2.2.Tài nguyên về vi điều khiển Pic 16F877A 27
2.6.ADC 43
2.7.CCP 46
PHỤ LỤC………………………………………………………….……………………72
2
DANH MỤC TỪ VIẾT TẮT
Từ viết tắt Tiếng việt
ADC Bộ chuyển đổi tương tự sang số.
ALU Bộ xử lý số học và logic
CISC Vi điều khiển có tập lệnh phức tạp.
CPU Bộ vi xử lý trung tâm
DMA Truy xuất bộ nhớ trực tiếp
GPR Thanh ghi mục đích chung.
MSSP Cổng giao tiếp nối tiếp đồng bộ chủ
PC Thanh ghi bộ đếm chương trình
Period Chu kỳ
PSP Cổng song song hoạt động ở chế độ Slave
PWM Điều chế độ rộng xung
SFG Thanh ghi có chức năng đặc biệt
SPI Giao diện ngoại vi nối tiếp
RISC Vi điều khiển có tập lệnh đơn giản.
RAM Bộ nhớ truy xuất ngẫu nhiên


ROM Bộ nhớ chỉ đọc
UART Bộ truyền thông bất đồng bộ nối tiếp.
WDT Watchdog Timer.
IR Thanh ghi lệnh
3
DANH MỤC CÁC BẢNG
Bảng 2.1: Bit 5, 4 T1CKPS1:T1CKPS0 lựa chọn hệ số chia xung: 40
Bảng 2.2: Bảng các trường hợp đặc biệt trong ccp 47
Bảng 3.1: Bảng chức năng của LCD 16x2 54
Hình 3.12.Quan hệ giữa nhiệt độ và dữ liệu ra 63
Bảng 3.2: Một số mã lệnh thông dụng của DS18B20 66
4
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1.1.Kiến trúc Neuman 10
Hình 1.2.Kiến trúc Harvard 12
Hình 1.3.Các dòng vi điều khiển của Microchip 13
Hình 1.4.Sơ đồ khối vi điều khiển 8bit của Microchip 14
Hình 1.5.Sơ đồ khối của PIC24F 16
Hình 1.6.Sơ đồ khối của PIC24H 17
Hình 1.7.Sơ đồ khối của dsPIC 18
Hình 1.8.Sơ đồ khối củaPIC32 22
Hình 2.1.Sơ đồ bố trí chân 23
Hình 2.3.Sơ đồ bộ nhớ dữ liệu Pic16F877A 30
Hình 2.4.Sơ đồ khối Timer0 36
Hình 2.5:Thanh ghi OPTION_REG 38
Hình 2.6.Sơ đồ khối Timer1 39
Hình 2.8.Thanh ghi điều khiển Timer1 T1CON 40
Hình 2.7.Sơ đồ khối Timer2 42
Hình 2.9.Sơ khối bộ chuyển đổi ADC 45
Hình 2.10 :Các cách lưu kết quả chuyển đổi ADC 45

Hình 2.11.Sơ đồ khối ở chế độ Capture 47
Hình 2.12.Sơ đồ khối CCP(chế độ compare) 48
Hình 2.13.Sơ đồ khối CCP (PWM mode) 49
Hình 2.14.Các tham số chế độ pwm 49
Hình 2.15.Sơ đồ logic của tất cả các ngắt trong PIC 16F877A 51
Hình 3.1.Sơ đồ khối D_METER 52
Hình 3.2.Sơ đồ khối nguồn 52
5
Hình 3.3.Khối xử lý trung tâm 53
Hình 3.4.Khối hiển thị LCD 54
Hình 3.5.Khối đo điện áp 56
Hình 3.6.Khối tạo xung vuông 57
Hình 3.7.Khối đo nhiệt độ 58
Hình 3.8.IC DS18B20 59
Hình 3.9.Sơ đồ chân 60
Hình 3.10.Sơ đồ khối DS18B20 61
Hình 3.11.Format thanh ghi nhiệt độ ở chế độ 12 bit 62
Hình 3.13.Format thanh ghi TH và TL 63
Hình 3.14.Các kiểu cấp nguồn 65
Hình 3.16.Thanh ghi cấu hình 66
Hình 3.17.Thiết lập phần cứng 66
Hình 3.18.Dạng sóng khi giao tiếp 1 dây 68
6
LỜI NÓI ĐẦU
Ngày nay, chúng ta thấy có rất nhiều sản phẩm điện tử được dùng
trong công nghiệp và gia dụng như các bộ điều khiển từ xa, máy in hoá đơn
điện thoại, bộ điều chỉnh công suất tự động, máy giặt tự động hay bán tự
động, lò vi sóng, các thiết bị đo, các thiết bị hiển thị và các sản phẩm khác.
Điểm chung của các thiết bị này là phải có một linh kiện gọi là ‘vi điều
khiển’, cho phép điều khiển việc phân chia khoảng thời gian và sắp đặt trình

tự của các cơ cấu và quá trình xử lý, lưu giữ và xử lý dữ liệu trong hệ thống
điều khiển.
Việc sử dụng vi điều khiển không chỉ giảm chi phí cho quá trình tự
động hoá mà còn làm cho quá trình trở nên linh hoạt hơn. Nhà thiết kế bớt
căng thẳng hơn do việc ghép nối phức tạp với các thiết bị ngoại vi như
ADC/DAC … và có thể tập trung vào các đối tượng ứng dụng và nội dung
phát triển. Linh kiện này có thể lập trình được để làm cho hệ thống trở nên
thông minh. Điều này hoàn toàn là có thể bởi vì việc xử lý dữ liệu có liên
quan đến dung lượng bộ nhớ của các vi điều khiển. Các vi điều khiển có
nhiều khối chức năng, có thể đáp ứng toàn bộ các yêu cầu chung của kỹ thuật
tự động hoá.
Trong quá trình thực hiện đề tài, được sự hướng dẫn tận tình của thầy
giáo Lê Mạnh Long và các thầy cô khác trong khoa em đã có cơ hội chuyển
kiến thức lý thuyết thành sản phẩm thực tế qua đề tài:“Ứng dụng vi điều
khiển thiết kế Volmet và bộ đếm tần số”, qua đó cũng đã hoàn thành được đề
tài của mình. Tuy nhiên, với thời gian ngắn, trang thiết bị để phục vụ làm báo
cáo chưa đầy đủ nên báo cáo không tránh khỏi những thiếu sót và hạn chế, em
rất mong nhận được sự đóng góp, góp ý kiến của các thầy và các thầy,cô
trong khoa điện tử và các bạn để đồ án tốt nghiệp của em thêm hoàn thiện.
Em xin chân thành cảm ơn!
7
CHƯƠNG 1: TỔNG QUAN VI ĐIỀU KHIỂN PIC
1.1. Giới thiệu về vi điều khiển PIC của Microchip
1.1.1. Vài nét về lịch sử phát triển:
PIC (Programmable Intelligent Computer) là một sản phẩm của hãng
General Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650. Vào
thập kỷ 70 của thế kỷ 20, General Instrument và Honeywell kết hợp sản xuất
ra bộ vi xử lý 16 bit CP1600. Đây là một bộ vi xử lý khá mạnh vào thời điểm
đó nhưng lại hạn chế về hoạt động vào/ra. PIC1650 được sản xuất để hỗ trợ vi
xử lý CP1600 trong các máy tính sử dụng bộ vi xử lý này.

PIC1650 hoạt động với tập lệnh đơn giản nằm trong ROM. Vào thời
điểm đó chưa có khái niệm về RISC (Reduced Instructions Set Code), tuy
nhiên PIC1650 thực sự là một bộ vi điều khiển được thiết kế theo kiểu kiến
trúc RISC. Tập lệnh của PIC1650 với khoảng 30 lệnh và độ dài của mỗi lệnh
là 14 bit. Mỗi lệnh được PIC1650 thực hiện trong 1 chu kỳ máy (4 chu kỳ của
bộ dao động).
Năm 1985 General Instruments bán bộ phận sản xuất vi điện tử của họ
và chủ sở hữu mới hủy bỏ hầu hết các dự án liên quan (do các dự án lúc đó đã
quá lỗi thời).
Năm 1989 Microchip Technology tiếp tục phát triển PIC, bắt đầu bằng
việc thêm bộ nhớ EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình.
Tiếp đến là tích hợp các tính năng như ngắt , ADC (Analog Digital
Converter) để tạo thành các bộ vi điều khiển (Micocontroller).
Đến năm 1992 Microchip Technology đã cho ra đời 6 loại chip với 3
dòng khác nhau:
- Dòng chip có độ dài mã lệnh bằng 12 bit gồm 4 chip PIC16C5x. Các
chip này có từ 12 đến 28 chân vào/ra;
- Dòng chip độ dài mã lệnh bằng 14 bit là PIC16C71. Bộ vi điều khiển
này đã được tích hợp thêm hai tài nguyên là ngắt và ADC.
8
- Dòng chip độ dài mã lệnh bằng 16 bit là PIC17C41, tuy nhiên dòng
chip này không được chú trọng phát triển vào thời điểm đó.
Cùng thời gian này, hàng loạt các công cụ hỗ trợ cũng được các công ty
khác nhau cho ra đời. Điển hình là PICMASTER emulator, PIC Pro II
programmer và cả trình dịch C (C Compiler). Các công cụ này cùng với việc
thay bộ nhớ OTP (one-time programmable parts) bằng bộ nhớ EEP
(Electrically Erasable Parts) đã mang đến rất nhiều tiện lợi cho người lập
trình, ví dụ như: người lập trình có thể nạp mà không cần gỡ chip ra khỏi
mạch. PIC16C84 là bộ vi điều khiển đầu tiên có bộ nhớ kiểu EEP.
Không lâu sau đó Microchip Technology tiếp tục đưa vào bộ vi điều

khiển với mã lệnh dài 14 bit PIC16F877 tính năng gỡ rối (Flash debugging).
Tính năng này cho phép người lập trình có thể kiểm soát từng thanh ghi, từng
câu lệnh trong chương trình. Nhờ những cải tiến liên tiếp, PIC16F877 trở
thành bộ vi điều khiển bán chạy nhất vào thời điểm đó (năm 1995 đến 1998).
Đến năm 2000, Microchip Technology tái phát triển lại dòng chip có độ dài
mã lệnh bằng 16 bit đã có trước đó 8 năm. Đại diện cho dòng chip này là
PIC18F452 với tốc độ, dung lượng bộ nhớ được cải thiện và khá nhiều tính
năng được bổ sung như các bộ định thời (Timer), truyền thông nối tiếp Dòng
vi điều khiển PIC 8 bit đã dẫn đầu về số lượng bộ bán ra mỗi năm liên tục từ
năm 2002 đến nay.
Trước nhu cầu về tốc độ xử lý cũng như các tính năng đặc biệt khác,
Microchip Technology tiếp tục cho ra đời các dòng vi điều khiển tiên tiến
hơn như: PIC24, PIC33, dsPIC
Ngày nay đã có đến hàng chục dòng PIC với hàng trăm loại chip khác
nhau. Tại Việt Nam cũng như trên thế giới, họ vi điều khiển này được sử
dụng khá rộng rãi. Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và
phát triển các ứng dụng như: Số lượng tài liệu, số lượng các ứng dụng mở đã
được phát triển thành công; dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ
dẫn khi gặp khó khăn,…
9
1.1.2. Kiến trúc của vi điều khiển PIC.
Kiến trúc của một bộ vi điều khiển được thiết kế theo hai dạng cơ bản:
Kiến trúc Von Neuman và kiến trúc Harvard. (hình 1.1 và hình 1.2)
Von Neumann là một nhà toán học, vật lí người Mỹ, gốc Do thái.
Năm 1944, Von Neumann làm cố vấn cho dự án chế tạo máy tính ENIAC, để
phục vụ cho các mục đích quân sự của Mỹ. Năm 1945, Sau khi dự án ENIAC
hoàn thành, Von Neumann cùng nhóm một vài thành viên trong nhóm làm
việc của ông lại tiến hành một dự án mới, là xây dựng một máy tính hiện đại
hơn. Năm 1945, Von Neumann đã viết một bài báo có tính bước ngoặc với
tựa: "Bản thảo đầu tiên về máy tính EDVAC " ("The First Draft of a Report

on the EDVAC "), chứa đựng những ý tưởng về cầu trúc cơ bản mà một máy
tính cần có . Bài báo này được Von Neumann trao đổi giới hạn với các thành
viên trong nhóm làm việc, tuy nhiên, sau đó đã được phổ biến rộng rãi và ảnh
hưởng mạnh đến sự phát triển của máy tính ở Mỹ và thế giới. Theo đó, cấu
trúc của máy tính là sự kết hợp của các thành phần sau:
- Bộ xử lý số học và logic (ALU - Arithmetic-Logic Unit )
- Bộ nhớ (Memory)
- Bộ điều khiển (Von Neumann Control Unit)
- Các bộ phận vào/ra.
Một điểm đáng chú ý nhất trong kiến trúc Von Neumann là dữ liệu
(data) cùng với lệnh (instruction) được dùng để xử lí dữ liệu đó có thể được
lưu giữ trên cùng một vùng nhớ của máy tính. Do dữ liệu và các lệnh được
lưu trong cùng một vùng nhớ (vùng nhớ ở đây là RAM), nên cần thiết phải
phân biệt chúng, khối điều khiển Von Neumann (Von Neumann Control Unit)
sẽ thực hiện nhiệm vụ này.
10
Hình 1.1.Kiến trúc Neuman
Với vi điều khiển 16 bit:
- A: Thanh ghi tích lũy
- Y,Z :Temporary Register (thanh ghi đệm)
- Flags : Thanh ghi cờ
- PC : Bộ đếm chương trình (program counter)
- IR: Thanh ghi lệnh (Instruction Register)
- ALU là khối tình logic.
- CPU Data Bus: đương bus dữ liệu.
- Data Buffer : vùng dữ liệu đệm.
Khi khối điều khiển Von Neumann bắt đầu gọi một lệnh để xử lí, nó
gọi tới bộ đếm chương trình (PC - Program Counter) để trỏ tới địa chỉ của
lệnh trong bộ nhớ, rồi lệnh này sẽ được nạp và thực thi bởi CPU. Địa chỉ của
dữ liệu cần xử lí được chứa trong chính lệnh cần thực thi. Khi thực thi các

CP
U
Dat
a
Bu
s
A
Y
Z
ALU

IN
OU
T
Flags
PC
IR
MAR
Data
Buffer
System Bus
Data Line
Addres Line
Control Line
11
lệnh, bộ đếm chương trình sẽ tăng lên để trỏ tới lệnh tiếp theo cần thực thi.
Quá trình này là tuần tự, nghĩa là các lệnh được thực thi một cách tuần tự, tại
mỗi thời điểm chỉ có một lệnh được thực thi (one instruction at a time). Đây
là đặc điểm tiêu biểu của kiến trúc Von Neuman.
Chính kiến trúc này, như Von Neumann đã tự thừa nhận là làm giới hạn

tốc độ thực thi của chương trình do tại mỗi thời điểm chỉ thực thi được một
lệnh. Tình trạng này được John Backus, một người tiên phong trong lĩnh vực
máy tính gọi là tình trạng "Thắt cổ chai Von Neumann" (Von Neumann
bottleneck). Tình trạng "Thắt cổ chai von Neumann" chỉ ra rằng, tốc độ hệ
thống bị giới hạn do tốc độ thực thi của CPU nhanh hơn tốc độ cung cấp
thông tin cho CPU từ bộ nhớ (tốc độ truy xuất bộ nhớ).
Ngày nay, có nhiều kỹ thuật nhằm giúp hạn chế tình trạng “Thắt cổ
chai von Neumann” như tăng độ rộng bus dữ liệu, kỹ thuật dùng bộ nhớ
cache, cùng các kỹ thuật tiên tiến khác, tuy nhiên, bất chấp những cải tiến
trên, kiến trúc dựa trên kiến trúc Von Neumann vẫn là kiến trúc máy tính phổ
biến nhất hiện nay.
Kiến trúc Harvard được nghiên cứu tại trường đại học Harvard (Mỹ),
dưới sự lãnh đạo của Howard Aiken. Nhóm nghiên cứu đã tách các bộ nhớ dữ
liệu và bộ nhớ chương trình với các bus riêng rẽ cho từng bộ nhớ, các bus này
cũng được điều hành độc lập. Bởi thế, tại một thời điểm CPU có thể vừa đọc
mã lệnh, vừa đọc dữ liệu, điều này làm tăng đáng kể tốc độ xử lý của toàn hệ
thống. Vi điều khiển PIC được thiết kế theo kiến trúc này.
12
Hình 1.2.Kiến trúc Harvard
Trong đó :
- Data memory là bộ nhớ dữ liệu.
- Instruction memory là bộ nhớ lệnh.
- Control là khối điều khiển.
- ALU là khối tính toán logic.
- Các đương bus như đương bus trạng thái,đườn bus điều khiển,đường
bus lệnh,đường bus dữ liệu.
Một điểm cần chú ý nữa là 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. Ví dụ, đối với vi điều khiển dòng PIC16F, độ dài mã lệnh
luôn là 14 bit trong khi dữ liệu được tổ chức thành từng byte.

Vi điều khiển được tổ chức theo kiến trúc Havard còn được gọi là vi điều
khiển RISC (Reduced Instruction Set Computer- vi điều khiển có tập lệnh rút
gọ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 (Complex Instruction Set Computer - Vi điều khiển có tập
lệnh phức tạp), mã lệnh của các bộ vi điều khiển này không phải là một số cố
định mà luôn là bội số của 8 bit (1 byte).
13
Ngoài hai kiểu kiến trúc cơ bản nêu trên, Analog Devices còn đưa ra
một kiểu kiến trúc dựa trên kiến trúc Harvard, đó là SHARC (Super Harvard
Architecture). Kiến trúc này được áp dụng cho các bộ xử lý số (DSP – Digital
Signal Processing) của hãng (ví dụ như ADSP-2106x). Ngoài các đặc điểm
như kiến trúc Harvard, SHARC được bổ sung thêm bộ nhớ đệm chỉ lệnh và
điều khiển vào/ra nhằm cải thiện thông lượng dữ liệu. Dòng vi điều khiển
DsPIC được thiết kế theo kiểu kiến trúc này.
1.1.3. Các dòng vi điều khiển PIC:
Nếu phân chia theo độ rộng bus dữ liệu thì có 3 dòng vi điều khiển PIC:
Hình 1.3.Các dòng vi điều khiển của Microchip
PIC10
PIC12
PIC16
PIC18
PIC24F
PIC24H
dsPIC30
dsPIC33
PIC32
Vi điều khiển
8bit
Vi điều khiển
32bit

Vi điều khiển
16bit
14
Đây là dòng sản phẩm bán chạy nhất của Microchip, vi điều khiển 8bit
có một số đặc điểm chính sau:
- Thiết kế theo kiến trúc Harvard
- Độ rộng bus dữ liệu: 8bit
- Mỗi lệnh được thực hiện trong 1 chu kỳ máy.
- Độ rộng của bus giữa CPU và bộ nhớ chương trình có thể là 12, 14
hoặc 16 bit tùy theo mục đích thiết kế của từng loại vi điều khiển.
Hình 1.4.Sơ đồ khối vi điều khiển 8bit của Microchip
1.1.3.1.Các dòng PIC 8bit bao gồm:
1.1.3.1.1. PIC10
Đây là dòng PIC với độ dài mã lệnh là 12 bit, tốc độ thực hiện lệnh: 1
triệu lệnh/giây. Ngoài bộ nhớ (ROM và RAM) dòng PIC này còn một số tài
nguyên cơ bản như: Port xuất/nhập, Timer.
1.1.3.1.2 PIC12
PIC12 được chế tạo theo công nghệ nanoWatt, ngoài các tính năng như
PIC10, dòng chip này còn được bổ sung thêm công cụ gỡ rối (debugging)
tương thích với bộ công cụ MPLAB ICE-2.
1.1.3.1.3. PIC16
Khác với PIC10 và PIC12 là loại vi điều khiển cỡ nhỏ (chỉ gồm 8 chân),
PIC16 là loại vi điều khiển 8bit loại trung. Dòng vi điều khiển này được bổ
sung thêm khá nhiều module như ADC, Timer, PWM, truyền thông nối tiếp
15
Ngoài ra PIC16 còn được bổ sung tính năng “tiết kiệm nguồn điện” nhờ có
thể hoạt động ở chế độ “Power Saving Sleep”.
1.1.3.1.4. PIC18
PIC18 được Microchip nâng tốc độ thực hiện lệnh lên 10 MIPS (10
triệu lệnh/giây), ngoài ra dòng chip này còn được bổ sung một số tính năng

như: Có thể hoạt động ở chế độ nghỉ (sleep mode) với dòng tiêu thụ chỉ
0.1uA; có thể chuyển sang nguồn dao động dự phòng nếu nguồn dao động
chính bị hỏng.
Các chip thuộc dòng 18FxxJxx còn được tích hợp thêm module
Ethernet chuẩn IEEE 802.3.
1.1.3.2.Vi điều khiển 16bit
Dòng vi điều khiển 16bit của Microchip gồm PIC24 và dsPIC.
1.1.3.2.1. PIC24.
PIC24 bao gồm hai dòng PIC24F và PIC24H.
Một số đặc điểm chính của dòng PIC24F:
+ CPU:
- Thiết kế theo kiến trúc Harvard
- Độ rộng bus dữ liệu: 16bit, độ dài mã lệnh: 24bit
- Tốc độ thực hiện lệnh: 16 triệu lệnh/giây
- Bộ nhân phần cứng 16bit x 16bit, thực hiện lệnh nhân trong 1 chu kỳ
- Bộ chia phần cứng 32bit : 16bit .
- Có hỗ trợ bộ dao động nội với tần số từ 31Khz đến 8 Mhz hoặc 32
Mhz nếu qua bộ nhân 4 lần.
- Được tích hợp bộ điều chỉnh điện áp, cho phép chíp có thể hoạt động
khi điện áp nguồn bị rơi đột ngột (LDO- Low-Dropout).
- Được tích hợp chuẩn JTAG.
- Có tính năng giám sát nguồn dao động, vi điều khiển sẽ chuyển sang
chế độ shutdown khi bị sự cố ở nguồn xung cung cấp.
- Được tích hợp Watchdog Timer với bộ dao động RC độc lập.
16
Hình 1.5.Sơ đồ khối của PIC24F
+ Ngoại vi:
- 10-bit ADC, 10 kênh, tốc độ lấy mẫu: 500.2
10
mẫu/giây

- 03 bộ so sánh tương tự (analog comparator)
- 02 module truyền thông nối tiếp (UART), hỗ trợ các chuẩn giao tiếp
LIN (Local Interconnect Network) và IrDA (Infrared Data Association)
- 02 module SPI (Serial_Peripheral_Interface_Bus)
- 02 module I2C (Inter-Integrated Circuit)
- 05 bộ Timer 16-bit.
- 05 module Capture và 05 bộ PWM (Pulse Width Modulation)
- 01 module thời gian thực (RTCC - Real-Time Clock Calendar)
- Hỗ trợ giao tiếp song song (PMP - Parallel Master Port) với 16 đường
địa chỉ và 8/16 đường dữ liệu
17
Hình 1.6.Sơ đồ khối của PIC24H
So với PIC24F thì PIC24H có thêm module DMA (Direct Memory
Access) và 16 kênh ADC với độ phân giải 12bit.
18
1.1.3.2.2. Bộ điều khiển xử lý tín hiệu số 16-bit (dsPIC)
Hình 1.7.Sơ đồ khối của dsPIC
Một số đặc tính cơ bản của dsPIC:
+ CPU:
- Tốc độ: 40 MIPS
- Dải nhiệt độ hoạt động: -40°C to +85°C
- Độ rộng bus dữ liệu: 16bit, độ dài mã lệnh: 24bit
- Không gian địa chỉ dành cho bộ nhớ chương trình lên đến 4M words,
bộ nhớ dữ liệu: 64 Kbytes
- Tập lệnh gồm 83 lệnh cơ bản.
+ Module DSP:
- 16 thanh ghi công dụng chung 16bit
- Hai bộ tích lũy (Accumulator) 40bit
- Bộ nhân 16bit x 16bit
19

- Bộ chia 32bit/16bit và 16bit/16bit
- Bộ ghi dịch 40bit cho phép thực hiện các lệnh dịch/quay trong 1 chu
kỳ lệnh.
- Thực hiện biểu thức gồm phép toán nhân và cộng trong 1 chu kỳ nhờ
bộ MAC (Multiply-Accumulate Unit)
+ 8 kênh DMA với các tính năng:
- 2 Kbytes bộ đệm cho phép đọc/ghi dữ liệu từ/đến thiết bị ngoài trong
khi CPU đang thực hiện lệnh.
- Hỗ trợ ngắt DMA cho các thiết bị ngoài muốn trao đổi dữ liệu kiểu
DMA
- 67 nguồn ngắt với 118 vector ngắt, trong đó:
- 5 nguồn ngắt ngoài
- 7 mức ưu tiên (đặt bởi phần mềm)
+ Ngoại vi:
- Nguồn xung đồng hồ có thể được cung cấp cho chíp từ ngoài, từ bộ
dao động thạch anh, từ bộ cộng hưởng hoặc bộ dao động RC nội. Xung clock
được cấp từ ngoài được đồng bộ hóa nhờ vòng khóa pha (PLL-Phase Locked
Loop) được tích hợp ngay trên chip. Tự động chuyển sang nguồn clock khác
khi nguồn hiện tại bị sự cố mà không ảnh hưởng tới hoạt động của chip.
- Module WT (Watchdog Timer) được tích hợp bộ dao động RC riêng.
- Được tích hợp tới 16 bộ Timer/Counter 16bit (tùy loại chip):
+ Các bộ Timer này có thể hợp thành 4 bộ Timer 32bit
+ 01 bộ Timer có thể hoạt động như đồng hồ thời gian thực (Real-Time
Clock) với nguồn dao động ngoài tần số 32.768 kHz.
+ 08 kênh Capture, xung đầu vào có thể là sườn lên hoặc xuống, 04 bộ đệm
FIFO được trang bị cho 1 kênh.
+ 08 kênh PWM 16bit.
- Truyền thông nối tiếp:
+ 02 module 3-wire SPI
20

+ 02 module I2C™, hỗ trợ các chế độ chủ tớ, 7-10 bit địa chỉ, tự phát hiện
xung đột bus.
+ 02 module UART, hỗ trợ ngắt khi truyền/nhận, khi xảy ra lỗi, trở lại trạng
hoạt động khi đang ở chế độ ngủ (sleep mode) nếu nhận được bit start, bộ
đệm truyền nhận có kích thước 4 byte.
+ Hỗ trợ chuẩn giao tiếp CAN (Controller Area Network) với 8 bộ đệm
truyền và 32 bộ đệm nhận.
+ 08 kênh PWM hỗ trợ điều khiển động cơ
+ 01 module Encoder hỗ trợ đọc các tín hiệu pha A, pha B từ Encoder ngoài.
+02 module ADC, tốc độ 1.1 Mbps (ADC 10 bit) hoặc 500Kbps (ADC 12
bit).
1.1.3.3 Vi điều khiển 32bit
+ CPU:
- 32 bit, kiến trúc RISC
- Xử lý song song 5 giai đoạn thực hiện lệnh (5-Stage Pipeline)
- Tần số làm việc tối đa: 80 MHz, tốc độ xử lý: 1.56 DMISP/Mhz
(Dhrystone MIPS)
- Thực hiện phép nhân chia trong 1 chu kỳ.
- 02 tệp thanh ghi 32 bit
- Bộ nhớ đệm (Cache) cho phép tăng tốc đọc mã lệnh từ bộ nhớ Flash.
+ Tính năng:
- Dải điện áp hoạt động: 2.3V đến 3.6V
- Dung lượng bộ nhớ Flash: 32K đến 512Kb.
- Dung lượng bộ nhớ SRAM: 8K đến 32K
+ Ngoại vi:
- 04 kênh DMA với tính năng tự động nhận dạng kích thước dữ liệu.
- 01 cổng USB 2.0
21
- Xung clock cung cấp cho hệ thống có thể lấy từ bộ dao động thạch
anh (10 MHz đến 40 MHz), từ bộ dao động nội (8 MHz hoặc 32 kHz); 02 bộ

vòng khóa pha (PLL) cho CPU và bộ điều khiển cổng USB riêng biệt.
- 02 module I2C™
- 02 module UART bao gồm: 01 module RS232 và 01 module RS485
- 01 module hồng ngoại (IrDA) hỗ trợ đọc Encoder.
- Hỗ trợ trao đổi dữ liệu song song với chế độ 8/16 bit dữ liệu và 16
đường địa chỉ.
- 01 module thời gian thực (RTCC- Real-Time Clock/Calendar)
- 05 bộ Timers/Counters 16-bit, có hỗ trợ kết hợp hai bộ 16 bit thành
một bộ 32 bit .
- 05 đầu vào Capture
- 05 đầu ra Compare/PWM
- 05 chân ngắt ngoài
- Các chân vào/ra có thể hoạt động xuất nhập ở tốc độ lên tới 80MHz
Tính năng gỡ rối (Debugging):
- 02 giao diện cho phép lập trình (Programming) và gợi rối bao gồm:
Giao diện 2-Wire Microchip và JTAG 4 Wire.
22
Hình 1.8.Sơ đồ khối củaPIC32
Các tính năng tương tự (Analog):
+16 kênh ADC:
- Độ phân giải: 10bit
- Tốc độ biến đổi: 500Kbps
- Có thể biến đổi trong khi CPU đang ở chế độ Sleep hoặc Idle
- 02 bộ so sánh tương tự (Analog Comparators).
23
CHƯƠNG 2
VI ĐIỀU KHIỂN PIC 16F877A
2.1. Sơ đồ chân và sơ đồ khối của PIC 16F877A.
Hình 2.1.Sơ đồ bố trí chân
Sau đây là chức năng của từng chân:

+ Chân 1 :
MCLR
,chân này có 2 chức năng :
- Là chân reset tích cực ở mức thấp .
- Là chân cung cấp điện áp cho chip khi nạp chương trình.
+ Chân 2,3 : RAX/ANX (X=0:1), các chân này có hai chức năng :
- Là chân vào ra số bình thường.
- Là ngõ vào tương tự thứ X.
+ Chân 4 : RA2/AN2/VREF-/CVRE,chân này có 4 chức năng :
- Là chân vào ra số bình thường.
- Là ngõ vào tương tự thứ 2.
- Là ngõ vào để lấy điện áp tham chiếu (mức thấp) cho bộ chuyển đổi
A/D.
- Là ngõ ra của sự so sánh vơi điện áp tham chiếu.
24
+ Chân 5 : RA3/AN3/VREF+,chân này có 3 chức năng :
- Là chân vào ra bình thường.
- Là ngõ vào tương tụ thứ 3.
- Là ngõ vào đê lấy điện áp tham chiếu (mức cao) cho bộ chuyển đổi
A/D.
+ Chân 6 : RA4/T0CKI/C1OUT,chân này có 3 chức năng :
- Là chân vào ra số bình thường.
- Là chân lấy xung clock từ bên ngoài cung cấp cho timer0.
- Là ngõ ra của bộ so sánh 1.
+ Chân 7 : RA5/AN4/
SS
/C2OUT,chân này có 4 chức năng:
- Là chân vào ra số bình thường.
- Là ngõ vào tương tự thứ 4.
- Lựa chọn ngõ vào của con tớ trong giao thức SPI.

- Ngõ ra của bộ so sánh 2.
+ Chân 8 : RE0/
RD
/AN5,chân này có 3 chức năng :
- Là chân vào ra số bình thường.
- Là chân điều khiển đọc cho con tớ trong giao thức song song.
- Là ngõ vào tương tự thứ 5.
+ Chân 9 : RE1/
WR
/AN6, chân này có 3 chức năng:
- Là chân vào ra số bình thường.
- Là chân điều khiển đọc cho con tớ trong giao thức song song.
- Là ngõ vào tương tự thứ 6.
+ Chân 10: RE2/
CS
/AN7,là chân có 3 chức năng:
- Là chân vào ra số bình thường.
- Là chân điều khiển việc chọn chip làm con tớ trong giao thức song
song.
-Là ngõ vào tương tự thứ 7.
+ Chân 11: VDD là chân dương nguồn của vi điều khiển.
25
+ Chân 12 : VSS là chân nguồn của vi điều khiển ,chân này được nối xuống
mass.
+ Chân 13: OSC1/CLKI, chân này có hai chức năng:
- Là chân nối với bộ giao động ngoài để cung cấp giao động cho vi điều
khiển.
- Là chân lấy xung clock từ bên ngoài .
+ Chân 14: OSC2/CLKO,chân này có hai chức năng:
- Là chân nối với bộ giao động bên ngoài đê cung cấp giao động cho vi

điều khiển.
- Là chân xuất xung clock ở chế độ giao động RC,bên trong PIC.
+ Chân 15 : RC0/T1OSO/T1CKI, chân này có 3 chức năng:
- Là chân vào ra số bình thường.
- Là ngõ ra giao động của timer1
- Là chân lấy xung clock cấp cho timer1
+ Chân 16 : RC1/T1OSI/CCP2,chân này có 3 chức năng :
- Là chân vào ra số bình thường.
- Là ngõ vào cấp giao động cho timer1.
- Là ngõ vào ở chế độ capture2,ngõ ra của chế độ compare2, là ngõ ra
của khối PWM2.
+ Chân 17 : RC2/CCP1,chân này có 2 chức năng:
- Là chân vào ra số bình thường.
- Là ngõ vào ở chế độ capture1,là ngõ ra của bộ compare1,là ngõ ra của
khối PWM1.
+ Chân 18 : RC3/SCK/SCL,chân này có 3 chức năng :
- Là chân vào ra số bình thường.
- Là chân có chức năng đồng bộ loạt xung clock vào hoặc ra ở chế độ
SPI.
-Là chân có chức năng đồng bộ loạt xung clock vào hoặc ra ở chế độ
I2C.

×