Đinh Thanh An
LỜI MỞ ĐẦU
Ngày nay, các thiết bị điện tử và tự động hóa có mặt ở khắp nơi, chúng có mặt
trong tất cả các lĩnh vực, từ những ứng dụng trong công nghiệp cho đến những sản
phẩm dân dụng, và những ứng dụng chuyên dụng trong quân sự, công nghệ thông tin,
điện tử viễn thông. Mà lõi của các thiết bị đó đại đa số là các họ vi xử lí, vi điều
khiển. Một trong những vi điều khiển được ứng dụng rộng rãi và có nhiều tài nguyên
là họ vi điều khiển PIC.
Trước đây, việc giám sát từ xa thông qua một hệ thống gồm các phần tử nối với
nhau bằng dây dẫn với các chuẩn truyền thông phổ biến như RS-232, RS-485. Tuy
nhiên, việc mở rộng phạm vi điều khiển (sự gia tăng về số lượng các phần tử) thì mô
hình này gặp nhiều khó khăn, và đặc biệt là khoảng cách điều khiển rất hạn chế. Sự ra
đời của công nghệ truyền thông với giao thức TCP/IP đã làm thay đổi hoàn toàn
phạm vi ứng dụng của thiết bị giám sát và điều khiển từ xa. Mô hình mạng phổ biến
đó là mạng nội bộ LAN (Local Area Network) và mạng diện rộng WAN (Wide Area
Network), gọi chung là mạng Ethernet đã cho phép mở rộng phạm vi giám sát và quy
mô của hệ thống. Thêm vào đó, khi muốn truyền xa hơn, có thể truy câp vào hệ thống
từ bất kỳ đâu chỉ cần có thêm đường truyền Internet.
Vi điều khiển PIC có rất nhiều tài nguyên, có đầy đủ tính năng của một vi điều
khiển khác như các cổng I/O, biến đổi ADC, các bộ timer…Và PIC18F97J60 là một
trong những chip vi điều khiển có đấy đủ tính năng như vậy, đăc biệt hơn khi vi điều
khiển này hỗ trợ chuẩn Ethernet giúp các thiết bị có thể dễ dàng kết nối Internet.
Xuất phát từ thực tiễn đó qua đề tài: “ Nghiên cứu, ứng dụng vi điều khiển
điều khiển thiết bị từ xa qua giao thức TCP/IP dùng PIC18F97J60 ” nhóm chúng
em đã quyết định chọn một ứng dụng quan trọng nổi trội hơn so với các họ vi điều
khiển khác đó chính là điều khiển thiết bị từ xa qua giao thức TCP/IP dùng
PIC18F97J60 .
1
Đinh Thanh An
Trong quá trình thực hiện đề tài không tránh khỏi nhiều thiếu sót, chúng em
mong nhận được nhiều ý kiến đóng góp từ quý thầy cô và các bạn để đề tài hoàn
năm 70 Genneral Instrument cũng chế tạo vi xử lý 16 bit PC1600. Bộ xử lý này
khá tốt nhưng có nhược điểm là khả năng vào ra không mạnh để thích ứng bộ xử
lý PC1600 trong các ứng dụng cần có tính nâng cao. Năm 1975 Genneral
Instrument thiết kế vi mạch điều khiển giao tiếp ngoại vi (Peripheral interface
controler) viết tắt là PIC, đó là linh kiện hỗ trợ các tính năng vào ra cho vi xử lý
PIC không cần nhiều chức năng vì chỉ xử lý các công việc vào ra do đó bộ m.
lệnh của nó khó nhỏ gọn. Những vi điều khiển PIC đầu tiên có điểm yếu là chế
tạo theo công nghệ n-MOS nên tiêu thụ nhiều năng lượng, bộ nhớ chương tr.nh
là loại ROM mặt nạ chỉ nạp được một lần, do đó chương trình điều khiển được
nạp ngay khi chế tạo vi mạch nên chỉ thích hợp với các khách hang đặt mua với
số lượng lớn, để lắp ráp trong sản xuất những sản phẩm cụ thể.
Những năm đầu thập kỷ 80 Genneral Instrument gặp khó khăn trong
thương mại và tổ chức lại. Hãng tập trung vào chế tạo linh kiện bán dẫn công
suất lớn là thế mạnh cho tới hiện nay của hãng. Genneral Instrument đã chuyển
nhượng Ban vi điện tử và nhà máy tại Chandle, bang Anizona cho các nhà đầu
tư. Họ lập ra một công ty mới, đặt tên là Arizona Microchip technology hiện nay
là Microchip technology Inc.
Chiến lược của các nhà đầu tư là tập trung vào vi điều khiển và các bộ
nhớ bán dẫn. Các vi mạch PIC n-MOS được cải tiến, chế tạo dựa trên nền tảng
công nghệ mới CMOS. Các sản phẩm đầu tiên của Microchip được biết tới và
6
7
bán ra với số lượng lớn là các vi điều khiển PIC thuộc họ PIC16C5x. Họ này có
hai biến thể với bộ nhớ chương trình là OTP và UV EPROM. Loại OTP có thể
nạp trình một lần dùng cho sản xuất loại lớn. Loại UV EPROM có thể xóa được
bằng tia cực tím (tia UV) dùng khi phát triển, thử nghiệm phần mềm.
Năm 1983 Microchip là hãng đầu tiên tích hợp được bộ nhớ chương trình
flash EEPROM vào những vi điều khiển mới, trong đó được biết đến nhiều nhất
là PIC. Bộ nhớ chương trình flash đã loại bỏ vai trò của vi điều khiển có bộ nhớ
xoá bằng tia cực tím, có vỏ bằng gốm đắt tiền và các đèn chiếu tia cực tím.
Bao gồm 12C6xx, 14C000, 16C55x, 16C6x, 16C62x, 16F62x, 16C67x, 16C8x,
16F87x và 16C9xx.
Độ dài từ lệnh 14 bit
Là họ vi điều khiển PIC thông dụng nhất hiện nay.
Bố chí các thanh ghi: 128 byte trên một bank, tối đa 4 bank.
Là vi điều khiển vạn năng tinh năng mạnh.
Có rất nhiều biến thể khắc nhau, với các kiểu đóng vỏ đa dạng: DIP,
PLCC,
Đặc điểm:
- Tốc độ cao, thực hiện được 5 triệu chỉ thị /s ở xung nhịp 20MHz.
- Có các ngắt phần cứng.
- Có từ 1 đến 3 bộ đếm – timer
- Có rất nhiều kiểu khác nhau về chân vào/ra tăng cường bao gồm các
vào/ra tương tự,giao diện truyền thông nối tiếp: đồng bộ, không đồng bộ,
12C, SPI, CAN, USB…, bộ, điều khiển LCD.
- Bộ nhớ chương trình flash ở hầu hết các vi mạch.
- Khả năng nạp trình nối tiếp ICSP.
- Có khả năng tự ghi vào bộ nhớ chương trình (self-programming).
- Có phần cứng gỡ rối chương trình ICD ở một số loại.
1.1.3.3. Họ cấp cao (High-end) 17Cxxx
Gồm các loại 17Cxxx
Độ dài từ lệnh 16 bit
8
9
Bố trí các thanh ghi: 224 byte trên một bank, tối đa 8 bank, 48 thanh ghi
chức năng đặc biệt (SFR).
Đặc điểm chung.
- Kiến trúc khác so với họ PIC cấp chung, cấp thấp.
- Có ác lệnh tăng cường và nhiều khả năng định địa chỉ.
- Vi điều khiển giao tiếp bus, truy nhập cac thiết bị song song trực tiếp.
nằm chung trong một bộ nhớ, do đó ta có thể tổ chức, cân đối 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, vì với cấu trúc đó, 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.
Đối với kiến trúc Havard, bộ nhớ dữ liệu và bộ nhớ chương trình tách ra
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ể.
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 16F, độ dài lệnh luôn là 14 bit (trong
khi dữ liệu được tổ chức thành từng byte), còn đối với kiến trúc Von-Neuman,
độ dài lệnh luôn là bội số của 1 byte (do dữ liệu được tổ chức thành từng byte).
Đặc điểm này được minh họa trong hình 1.1.
1.2. Vi điều khiển PIC 18F97J60
10
11
Hình 1.2. Vi điều khiển PIC 18F97J60
1.2.1. Tổng quan về họ PIC 18F
Họ PIC18F gồm có các thiết bị sau đây:
• PIC18F66J60 • PIC18F87J60
• PIC18F66J65 • PIC18F96J60
• PIC18F67J60 • PIC18F96J65
• PIC18F86J60 • PIC18F97J60
• PIC18F86J65
Họ này giới thiệu một dòng mới của các thiết bị điện áp thấp với các lợi
thế truyền thống quan trọng của tất cả các vi điều khiển PIC18- cụ thể là, hiệu
suất tính toán cao, nhiều tính năng, với giá cả cực kì cạnh tranh. Những tính
cầu khi hoạt động bình thường.
- Chuyển đổi chế độ nhanh: chế độ quản lí năng lượng được gọi bởi mã
lệnh của người sử dụng trong suốt quá trình vận hành, cho phép người sử
dụng kết hợp ý tưởng quản lí năng lượng vào trong các thiết kế phần mềm
ứng dụng.
Lựa chọn bộ dao động Oscillator và các tính năng chính
Tất cả các thiết bị trong họ PIC18F97J60 cung cấp 5 lựa chọn bộ dao
động khác nhau, cho phép người sử dụng một loạt các lựa chọn trong phát triển
phần cứng của các ứng dụng. Những tùy chọn bao gồm:
- Hai chế độ thạch anh, sử dụng thạch anh hoặc các bộ cộng hưởng dùng
gốm.
12
13
- Hai chế độ xung clock bên ngoài, cung cấp các tùy chọn phân chia bởi 4
đầu ra clock.
Bộ nhớ mở rộng
Họ PIC18F97J60 cung cấp dư thừa chỗ cho các mã ứng dụng, không gian
từ 64 Kbytes đến 128 Kbytes. Các bộ nhớ Flash cho bộ nhớ chương trình được
đánh giá kéo dài đến 100 chu kì xóa / ghi. Dữ liệu lưu trữ mà không làm mới
được bảo toàn ước tính là nhiều hơn 20 năm. Họ PIC18F97J60 cũng cung cấp
rất nhiều không gian cho dữ liệu của các ứng dụng động với 3808 byte RAM.
Bus nhớ mở rộng
Trong trường hợp không chắc rằng 128 Kbytes bộ nhớ đủ cho một ứng
dụng, các thành viên 100 chân của họ PIC18F97J60 cũng sử dụng bus bộ nhớ
bên ngoài. Điều này cho phép bộ điều khiển chương trình bên trong truy cập để
sử dụng một không gian bộ nhớ lên đến 2 Mbytes, cho phép một mức độ truy
cập dữ liệu mà ít thiết bị 8-bit nào có thể đáp ứng được. Điều này cho phép thêm
lựa chọn bộ nhớ, bao gồm:
• Sử dụng sự kết hợp của bộ nhớ trên chip và bên ngoài chip lên đến giới hạn 2-
Mbyte
độ tin cậy và giảm thiểu chi phí thông qua việc loại bỏ các thành phần bên
ngoài. Đó là:
• Lựa chọn bộ dao động
• Đặt lại:
- Power-on Reset (POR)
- Power-up Timer (PWRT)
- Oscillator Start-up Timer (OST)
- Brown-out Reset (BOR)
• Ngắt
14
15
• Kiểm tra hoạt động xung clock an toàn/ lỗi
• Khởi động 2 tốc độ
• Mã bảo vệ
• Chương trình nối tiếp trong mạch
•Điều chỉnh điện áp trên chip
Họ PIC18F97J60 thường được thiết kế để hoạt động với điện áp danh
nghĩa 2.5V. Điều này có thể tạo ra một vấn đề cho các mẫu thiết kế được yêu cầu
để hoạt động ở mức cao hơn điện áp điển hình, chẳng hạn như 3.3V. Để đơn
giản hóa thiết kế hệ thống, tất cả các thiết bị trong họ PIC18F97J60 tích hợp trên
chip một bộ điều chỉnh. Bộ điều chỉnh được điều khiển bởi chân ENVREG. Nối
VDD tới các chân của bộ điều chỉnh, nối tiếp nhau, do đó, năng lượng được
cung cấp cho bộ điều chỉnh từ tất cả các chân VDD. Khi bộ điều chỉnh được
kích hoạt, một bộ lọc thông thấp ESR dùng tụ điện phải được kết nối với chân
VDDCORE / VCAP. Điều này giúp duy trì sự ổn định của bộ điều chỉnh. Giá trị
được đề xuất cho các tụ lọc.
Nếu ENVREG được gắn với VSS, bộ điều chỉnh bị vô hiệu hóa. Trong
trường hợp này, điện áp danh nghĩa 2.5V phải được cung cấp cho thiết bị tại
chân VDDCORE/VCAP để chạy các chân I/O ở điện áp cao hơn, thường là
3.3V. Ngoài ra,VDDCORE/VCAP và các chân VDD có thể được gắn với nhau
OSC2/CLKO- 64- đầu ra bộ dao động thạch anh hoặc clock
• OSC2- đầu ra bộ dao động thạch anh. Kết nối với thạch anh hoặc bộ
cộng hưởng trong chế độ dao động thạch anh
• CLKO- trong chế độ RC nội bộ, chân OSC2 các đầu ra CLKO với tần số
bằng ¼ tần số của OSC1
35- PORTA là 1 cổng I/O 2 chiều
• I/O- vào/ra số
• O- đầu ra chỉ thị Ethernet LEDA
• I- đầu vào tương tự 0
34- I/O- vào/ra số
• O- đầu ra chỉ thị Ethernet LEDB
• I- đầu vào tương tự 1
33- I/O- vào/ra số
• I- đầu vào tương tự 2
• I- đầu vào điện áp tham chiếu A/D
42- I/O- vào/ra số
• I- đầu vào clock mở rộng Timer 0
41- I/O- vào/ra số
• I- đầu vào tương tự 4
5- PORTB là một cổng I / O hai chiều. PORTB có thể được lập trình bằng phần
mềm để kéo tất cả các đầu vào còn kém lên.
• I/O- vào/ra số
17
18
• I- ngắt ngoài 0
• I- modun ECCP, có thể được kích hoạt bằng phần mềm
6- I/O- vào/ra số
• I- ngắt ngoài 1
7- ngắt ngoài 2
8- I/O- vào/ra số
• I- dữ liệu vào SPI
• I/O – vào ra dữ liệu I2C
56- I/O- vào/ra số
O - dữ liệu vào SPI
45- I/O- vào/ra số
• O- truyền tải không đồng bộ EUSART1
• I/O – xung clock đồng bộ EUSART1
46- I/O- vào/ra số
• I- nhận không đồng bộ EUSART1
• I/O- dữ liệu đồng bộ EUSART1
92-I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 0
• I/O- cổng dữ liệu tớ song song
91- I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 1
• I/O - cổng dữ liệu tớ song song
90-I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 2
19
20
• I/O - cổng dữ liệu tớ song song
89- I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 3
• I/O- cổng dữ liệu tớ song song
88- I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 4
• I/O- cổng dữ liệu tớ song song
O - dữ liệu ra SPI
87- I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 5
96-I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 12
• O - đầu ra B cho khối ECCP3 PWM
95-I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 13
O- đầu ra C cho khối ECCP1 PWM
94-I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 14
O- đầu ra B cho khối ECCP1 PWM
93-I/O- vào/ra số
• I/O- bộ nhớ địa chỉ/ dữ liệu mở rộng 15
• I/O- đầu vào Capture 2/đầu ra so sánh 2/ đầu ra PWM 2
O- đầu ra A của khối ECCP2 PWM
12- PORTF là 1 cổng vào ra 2 chiều
21
22
• I/O- vào/ra số
• I- đầu vào tương tự 5
28-I/O- vào/ra số
• I- đầu vào tương tự 6
O – đầu ra so sánh 2
23- I/O- vào/ra số
• I- đầu vào tương tự 7
• O- đầu ra so sánh 1
22-I/O- vào/ra số
• I- đầu vào tương tự 8
21- I/O- vào/ra số
• I- đầu vào tương tự 9
20- I/O- vào/ra số
• I- đầu vào tương tự 10
• O- bộ nhớ địa chỉ mở rộng 17
1-I/O- vào/ra số
• O- bộ nhớ địa chỉ mở rộng 18
2-I/O- vào/ra số
• O- bộ nhớ địa chỉ mở rộng 19
27-I/O- vào/ra số
• I- đầu vào tương tự 12
• O- đầu ra C của khối ECCP3 PWM
26-I/O- vào/ra số
• I- đầu vào tương tự 13
23
24
• O- đầu ra B của khối ECCP3 PWM
25-I/O- vào/ra số
• I- đầu vào tương tự 14
• O- đầu ra C của khối ECCP1 PWM
24-I/O- vào/ra số
• I- đầu vào tương tự 15
• O- đầu ra B của khối ECCP1 PWM
49- PORT là 1 cổng vào ra 2 chiều
• I/O- vào/ra số
• O- cho phép chốt địa chỉ bộ nhớ ngoài
50-I/O- vào/ra số
• O- kích hoạt bộ nhớ ngoài
66-I/O- vào/ra số
• O- điều khiển ghi chậm vào bộ nhớ ngoài
61-I/O- vào/ra số
• O- điều khiển ghi nhanh vào bộ nhớ ngoài
47-I/O- vào/ra số
• O- điều khiển byte địa chỉ 0 bộ nhớ ngoài