LỜI CÁM ƠN
Lời đầu tiên em xin gửi lời cảm ơn chân thành đến thầy giáo hướng dẫn Phạm
Hoàng Vương bộ môn Kỹ thuật máy đã giúp đỡ em rất nhiều trong quá trình thực
hiện đề tài này. Từ lúc bắt đầu đến khi kết thúc đề tài thầy đã giúp em làm quen với
lĩnh vực vi xử lí, học tập nghiên cứu và sử dụng được các phần mềm liên quan đến
điều khiển như Proteus,PicC… . Thầy cũng giúp đỡ em rất nhiều trong lúc thiết kế
và thi công mạch mô hình thực tế.
Em cũng xin cám ơn các thầy, cô trong bộ môn Kỹ thuật máy đã giúp đỡ, tạo
điều kiện cho sinh viên chúng em có cơ hội học tập, nghiên cứu trong suốt các năm
học vừa qua để bọn em được phát triển các kĩ năng cơ bản của 1 sinh viên kĩ thuật
trước khi tốt nghiệp.
Hà Nội, ngày 15 tháng 4 năm 2014
Đàm Hùng Việt
1
MỤC LỤC
2
DANH MỤC HÌNH ẢNH
3
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ VI XỬ LÍ
1.1.Cấu trúc tổng thể của một hệ vi điều khiển
-Trước hết ta cần phân biệt hai khái niệm vi xử lí và vi điều khiển, về cơ bản
chúng không khác nhau nhiều đều là các thuật ngữ dung để đề cập đến kĩ thuật ứng
dụng các công nghê vi điện tử, công nghệ tích hợp và khả năng xử lí theo chương
trình vào các lĩnh vực khác nhau. Tuy nhiên có khác biệt là vi xử lí chủ yếu sử
dụng vào mục đích tính toán còn vi điều khiển sử dụng cho các mục đích nhỏ cụ
thể.
Hình 1.1: Kiến trúc cơ bản của môt vi xử lý
4
-Ngoài cấu trúc như trên ra với mỗi loại vi điều khiển cụ thể còn có thêm một số
phần cứng khác như bộ dao động trong,bộ biến đổi tần số tương tự DAC, các mạch
điều chế dạng sóng WG, điều chế độ rộng xung PWM…
nhìn chung là tương thích với mức logic TTL.
+ Cổng giao tiếp song song thường gồm 8 đường khác nhau gọi là các
cổng 8bit. Các đường tín hiệu này độc lập với nhau, điều này cho phép ta đưa ra
hay đọc vào các giá trị logic khác nhau đối với từng chân. Ngoài ra cần chú ý các
cổng giao tiếp này có thể kiêm thêm các chức năng đặc biệt lien quan đến các ngoại
vi khác.
+ Cổng giao tiếp nối tiếp khác với cổng song song các bit dữ liệu được
truyền lần lượt trên cùng một đường tín hiệu thay vì cùng môt lúc như trên cổng
song song. Tuy nhiên việc truyền dữ liệu trên cổng nối tiếp phải tuân theo một cơ
chế, một giao thức hay một nguyên tắc nhất định. Có thể kể một số giao thức như
SPI,I
2
C,SCI
Cổng nối tiếp có 2 kiểu truyền dữ liệu chính:
6
Truyền đồng bộ: thiết bị truyền và thiết bị nhận đều dùng chung một
xung nhịp.
Truyền dị bộ: thiết bị truyền và thiết bị nhận sử dụng hai nguồn xung
nhịp riêng. Tuy nhiên hai nguồn xung nhịp này không được khác nhau quá nhiều.
Xung nhịp là yếu tố không thể thiếu trong truyền dữ liệu nối tiếp và nó có vai trò
xác định giá tri của bit dữ liệu.
Cổng nối tiếp có thể có một trong các tính năng sau:
Đơn công: thiết bị chỉ có thể truyền hoặc nhận dữ liệu.
Bán song công: thiết bị có thể truyền và nhận dữ liệu nhưng tại một
thời điểm chỉ có thể nhận hoặc truyền đi.
Song công: thiết bị có thể truyền và nhận dữ liệu đồng thời.
1.2.5.Bộ đếm/Bộ định thời.
Đây là các ngoại vi được thiết kế để thực hiện môt nhiệm vụ đơn giản là đếm các
xung nhịp. Mỗi khi có thêm một xung nhip tại đầu vào đếm thì giá trị bộ đếm tăng
lên 1 đơn vị ( trong bộ đếm tiến) hay giảm đi 1 đơn vị (trong bộ đếm lùi). Xung
chỉ dùng một số chân, tín hiệu dữ liệu dùng một số chân khác). Người ta thường
dùng “dồn kênh”, tức là ghép chức năng để giảm thiểu số chân cần thiết. Khi đó tín
hiệu địa chỉ sẽ xuất hiện trước, sau đó là tín hiệu dữ liệu. Để tách được hai loại tín
hiệu này thì nhà sản xuất cung cấp cho người sử dụng một đường tín hiệu điều
khiển có tên là tín hiệu chốt địa chỉ (thường kí hiệu là ALE). Tín hiệu này sẽ “tích
cực” khi tín hiệu địa chỉ xuất hiện và “không tích cực” khi tín hiệu dữ liệu xuất
8
hiện trên các bus. Các IC thích hợp với việc tách tín hiệu địa chỉ và dữ liệu là các
IC thuộc họ 74xx373/374 hoặc 74xx573/574.
1.2.7.Ngăn xếp(stack).
- Là một đoạn bộ nhớ (thường đặt trong RAM) dùng để chứa địa chỉ trở về
trong các trường hợp chương trình con hoặc chương trình phục vụ ngắt được gọi.
Ngoài ra ngăn xếp còn dùng để lưu các dữ liệu tạm thời. Ngăn xếp hoạt động theo
cơ chế “vào sau ra trước”(LIFO-Last in First out).
Ngăn xếp là phần cứng vô cùng quan trọng trong vi xử lí, nó tham gia vào các
thao tác rẽ nhánh( trừ thao tác nhảy) của chương trình. Người lập trình phải hết sức
cẩn thận khi gán giá trị khởi tạo cho SP(thanh ghi con trỏ ngăn xếp) để tránh sự cố
tràn ngăn xếp hoặc ngăn xếp trùng với các vùng nhớ lưu dữ liệu khác. Khi xảy ra
một trong các sự cố trên sẽ không có cách nào kiểm soát được hoạt động của vi xử
lí và có thể gây thiệt hại lớn đối với hệ thống.
1.3.Nguyên lí hoạt động của một vi xử lí.
-Các thao tác tính toán xử lí được CPU thực hiện theo chuỗi các lệnh đặt
trong bộ nhớ chương trình.
-Việc thực hiện các lệnh sẽ diễn ra tuần tự từ thấp đến cao bắt đầu từ thấp
đến cao bắt đầu từ địa chỉ reset. Địa chỉ reset là địa chỉ mà tại đó sau khi cấp nguồn
nuôi CPU sẽ bắt đầu đọc và thực hiện theo các chỉ dẫn được mã hóa tại đó. Mỗi
loại vi xử lí sẽ có một địa chỉ reset riêng do nhà sản xuất quy định.
-Các lệnh được thực hiện tuần tự là nhờ có thanh ghi “bộ đếm chương trình”.
Thanh ghi này chứa địa chỉ của ô nhớ chứa mã của lệnh tiếp theo sẽ được thực
hiện. Khi CPU tìm nạp được mã của lệnh n, thanh ghi sẽ tự động tăng lên 1 đơn vị
-PIC là chữ viết tắt của “Programmable Intelligent Computer”(máy tính thông
minh khả trình) là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip
Technology.
- Qua thời gian phát triển lâu dài( từ năm 1975), ngày nay, rất nhiều dòng được
sản xuất hàng loạt với các module ngoại vi tích hợp sẵn với bộ nhớ chương trình từ
512Word đến 32K Word.
- Ưu thế của PIC là phổ biến rộng rãi, giá thành không quá đắt, có đầy đủ tính
năng của vi điều khiền khi hoạt động độc lập, có nhiều tính năng đa dạng và các
tính năng này không ngừng được phát triển.
1.5.1.2.Cấu trúc của PIC.
- Cấu trúc phần cứng của PIC được thiết kế theo 2 dạng:
+Cấu trúc Von-Neumann, 2 bộ nhớ được bố trí nằm chung nên rất gọn,
tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí của CPU là rất cao.
+ Đối với cấu trúc Havard bộ nhớ dữ liệu và bộ nhớ chương trình tách ra
thành các thành phần riêng biệt. Như vậy, trong cùng một thời điểm CPU có thể
truy xuất đến cả hai bộ nhớ. Điều này giúp cho tốc độ xử lý của vi xử lý tăng lên.
Ngoài ra, tập lệnh trong cấu trúc Havard có thể được tối ưu tùy theo yêu cầu cấu
11
trúc của vi điều khiển mà không phụ thuộc cấu trúc dữ liệu. Ví dụ, đối với vi điều
khiển PIC dòng 16Fxxx thì độ dài lệnh luôn là 14-bit.
Hình 1.2: Hai kiểu tổ chức phần cứng trong PIC
Tổ chức phần cứng của các dòng vi điều khiển PIC được thiết kế theo cấu trúc
Havard. Việc được thiết kế theo cấu trúc Havard giúp cho tập lệnh của vi điều
khiển PIC được tối ưu, cấu trúc lệnh không phụ thuộc cấu trúc dữ liệu và có thể
linh động tùy chỉnh theo khả năng và tốc độ của từng vi điều khiển.
1.5.1.3.Ngôn ngữ lập trình.
- Ngôn ngữ lập trình cho PIC rất đa dạng từ cấp thấp đến cấp cao.
- Ngôn ngữ cấp thấp có MPLAB,các ngôn ngữ lập trình cao hơn có C,
Baisic , Pascal…
12
11. Chân 28 làm chân I/O tín hiệu số hoặc chân P1B.
12. Chân 29 làm chân I/O tín hiệu số hoặc chân P1C.
13. Chân 30 làm chân I/O tín hiệu số hoặc chân P1D.
14.Chân 33 đến 38 làm chân I/O tín hiệu số hoặc chân Input tín hiệu tương tự.
20. Chân 39 làm chân I/O hoặc ICSPCLK.
21.Chân 40 làm chân I/O hoặc ICSPDAT.
15
Hình 1.4.Chức năng các chân (ảnh chụp từ Data Sheet)
16
Hình 1.5.Một vi điều khiển PIC16F887.
1.5.3.Tổ chức bộ nhớ.
- Đâ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. Tốc độ hoạt động
tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình
8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung
lượng 256x8 byte. Số PORT I/O là 5 với 33 pin I/O.
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
+Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit.
+Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm
dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
+Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
Hai bộ Capture/so sánh/điều chế độ rộng xung.
+Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.
+Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
+Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR, CS ở bên ngoài.
17
Các đặc tính Analog:
+ 8 kênh chuyển đổi ADC 10 bit.
+Hai bộ so sánh.
ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở
tất cả các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm
giảm bớt lệnh của chương trình. Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877 như
sau:
20
21
1.5.4.Bộ tạo dao động.
- Vi điều khiển PIC16F887 có thể thực hiện với nhiều kiểu bộ tạo dao động
khác nhau. Ta lấy 1 ví dụ đơn giản là dao động thạch anh.
Hình 1.7.Sơ đồ
bộ tạo dao
động.
-Thông số
của 2 tụ gốm
phụ thuộc vào
tần số của bộ dao động thạch anh.
Bảng 2.1: Thông số của 2 tụ gốm theo từng loại của bộ dao động thạch anh
Kiểu thạch anh Tần số Tụ C
1
Tụ C
2
LP
32 kHz 33 pF 33 pF
200 kHz 15 pF 15 pF
XT
1.0 MHz 33 pF 33 pF
4.0 MHz 27 pF 27 pF
HS
4.0 MHz 27 pF 27 pF
8.0 MHz 22 pF 22 pF