Tải bản đầy đủ (.pdf) (129 trang)

đồ án : Thiết kế bộ điều khiển PID SỐ TRÊN NỀN VI ĐIỀU KHIỂN PIC

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 (4.93 MB, 129 trang )






Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 1
Mục lục
Lời mở đầu 5
Lời cảm ơn 6
Chương 1 : Họ vi điều khiển PIC và vi điều khiển PIC18F4520
7
1.1 Giới thiệu chung 7
1.2 . Vi điều khiển Pic18F4520 8
1.2.1. Tổ chức bộ nhớ (Memory Organization)
13
1.2.2. 8 x 8 HARDWARE MULTIPLIER 22
1.2.3. Ngắt (Interrupts) 23
1.2.4. Cổng vào ra (I/O Port) 32
1.2.5. Bộ định thời (Timer)
33
1.2.6. Bộ truyền nhận dữ liệu đồng bộ (EUSART-Enhanced Universal
Synchronous Asynchronous Receiver Transmitter) 37
1.2.7. Module chuyển đổi tưong tự sang số 10 bit (A/D) 50
Chương 2 : Thiết kế bộ điều khiển PID
số 57
2.1 Thiết kế mô hình phần cứng mạch điều khiển 57
2.1.1. Yêu cầu thiết kế 57
2.1.2. Các khối chức năng trên kit điều khiển 58
a) Khối vi điều khiển trung tâm 58
b) Khối giao tiếp máy tính qua cổng nối tiếp 59
c) Khối bàn phím 60


d) Khối hiển thị LCD 2x16(2 dòng, 16cột) 61
e) Khối mạch động lực điều khiển 62
f) Khối nguồn 12V/5V 62
g) Các khối khác 63
2.2 Thiết kế phần mềm trên nền vi điều khiển PIC 64
2.2.1. Yêu cầu phần mềm 64


Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 2
2.2.2. Giải thuật chương trình
65
a) Loop điều khiển 65
b) Thuật toán PID số 66
2.2.3. Thiết kế phần mềm điều khiển và giám sát trên máy tính 69
2.3 Kit điều khiển 71
Chương 3 : Ứng dụng bộ điều khiển PID số điều khiển động cơ một chiều 72
3.1 Đối tượng điều khiển 72
3.1.1. Thông số kĩ thuật
72
3.1.2. Nhận dạng mô hình động học của động cơ điện một chiều 72
3.1.3. Thu thập dừ liệu vào/ra của động cơ điện một chiều từ thựcnghiệm. 72
3.1.4. Nhận dạng động cơ điên một chiều bằng Toolbox Identification cảu
Matlab 74
3.1.5. Đánh giá chất lượng mô hình 76
3.2 Thiết kế luật điều khiển PID 77
3.2.1. Phương pháp Ziegler-Nichols1
77
3.2.2. Phương pháp IMC 77
3.2.3. Mô phỏng và đánh giá chất lượng bộ điều khiển 78
3.3 Thiết bị chấp hành(IC L298) 78

3.4 Cảm biến (Encoder) 81
3.5 Hệ thống điều khiển 84
3.6 Một số hình ảnh về Kit điều khiển động cơ sử dụng vi điều khiển PIC 86
3.7 :Kết quả thực nghiệm 87
3.8 So sánh kết quả mô phỏng và thực
tế 88
Kết luận 89
Tài liệu tham khảo 91
Phụ lục Code phần mềm 92





Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 3







MỤC LỤC HÌNH VẼ

Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520 9
Hình 1.2 Sơ đồ chân vi điều khiển Pic18F4520 10
Hình 1.3: Tổ chức bộ nhớ chương trình 13
Hình 1.5: Clock/Instruction Cycle 15
Hình 1.6 Instruction Pipeline Flow 15
Hình 1.7 Instruction In Program Memory 16

Hình 1.8 Sơ đồ cấu trúc bộ nhớ dữ liệu Pic18F4520 16
Hình 1.9 Sơ đồ cấu trúc thanh ghi của Pic18F4520 17
Hình 1.10 Pic 18 Interrup logic 23
Hình 2.1 Mô hình khối mạch điều khiển 57
Hinh 2.2.Sơ đồ khối vi điều khiển trung tâm 58
Hinh 2.3 Mạch nạp cho vi điều khiển trung tâm 58
Hinh 2.4 Khối giao tiếp máy tính Max232 59
Hình 2.5 : Cấu tạo cổng COM 59
Hinh 2.6 Modul bàn phím 60
Bảng sơ lược chức năng LCD 2x16 61
Hình 2.7 Khối hiển thị LCD 62
Hinh 2.8 Khối thiết bị chấp hành 62
Hình 2.9 Sơ đồ khối nguồn 62
Sơ đồ nguyên lý kit điều khiển 63


Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 4
Sơ đồ mạch in hai lớp 64
Hình 2.10 Lưu đồ loop điều khiển 65
Hình 2.11 Lưu đồ hàm ngắt dùng tạo chu lì trích mẫu 66
Hình 2.12 Sơ đồ bộ điều khiển PID số 67
Hình 2.13 Chống bão hào tích phân 68
Hình 2.14. Giao diện giao tiếp PC 69
Hình 3.1 Động cơ sủ dụng trong đồ án 72
Hinh 3.2 Sơ đồ thu thập dữ liệu nhận dạng 72
Hình 3.2 Đặc tính thu thập dữ liệu nhận dạng 73
Hình 3.3Chọn đầu vào và mô hình nhận dạng của đối tượng 75
Hình 3.4Phương thức nhận dạng và đánh giá mô hình thu được 75
Hình 3.5 Đặc tính quá độ đối tượng sau khi nhận dang 76
Hình 3.6 Sai lệch mô hình nhận dạng 76

Hình 3.7 Mô phỏng trên Simulink các phương pháp điều khiển 78
Hình 3.9 Đặc tính mô phỏng 78
Hình 3.10 Sơ đồ chân L298 79
Hình 3.11: Các chế độ của L298 80
Hình 3.12 : Sơ đồ giải pháp 81
Hình 3.13 : Mô hình1 - En coder quang tương đối 81
Hình 3.14 : Phương thức hoạt động Encoder quang tương đối 82
Hình 3.15 : Mô hình 2 -En coder quang tương đối 82
Hình 3.16 : Sơ đồ xung của En coder quang tương đối(mô hình 2) 83
Hình 3.17 Sơ đồ hệ thốngđiều khiển động cơ 84
Hình 3.18 Cấu trúc hệ thống điều khiển 84
Hình 3.19 Cấu trúc khối điều khiển động cơ 85
Một số hình ảnh mạch điều khiển động cơ một chiều 86
Hình 3.20 Đặc tính với bộ điều khiển PI 87
Hình 3.21 Đặc tính với bộ đièu khiển PID 87
Hình 3.22 Hệ thống khi có nhiễu 88
Hình 3.23 Đặc tính khi hệ thống có thay đỏi giá trị đặt 88




Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 5

















Lời mở đầu
Khoa học công nghệ hiện đại đã có những bước tiến nhanh và xa đi theo đó là
những thành tựu ứng dụng trong mọi lĩnh vực dời sống, công nghiệp. Kĩ thuật điều
khiển trong tiến trình hoàn thiện lý thuyết cũng tạo cho mình nhiều phát triển có ý
nghĩa. Bây giờ khi nhắc tới điều khiển con người dưòng như hình dung đến sự chính
xác, tốc độ xử lý và thuật toán thông minh đồng nghĩa là lượng chất xám cao hơn.
Có thể nói trong lĩnh vực điều khiển và trong công nghiệp thì bộ điều khiển PID
có ứng dụng kha rộng rãi, một giả pháp đa năng chocác ứng dụng cả Analog cũng như
Digital. Thống kê cho thấy có tới hơn 90% các bộ điều khiển sử dụng trong thực tế là
PID. Rõ ràng nếu có thiết kế và chọn lựa các thông số hợp lý cho bộ điều khiển PID thì
việc đạt được các chỉ tiêu chất lượng mong muốn là khả thi Bộ điều khiển PID cũng
giúp người sử dụng dễ dàng tích hợp cũng như chọn các luật điều khiển như : tỉ lệ(P),
tích phân(I), tỉ lệ tích phân(PI), tỉ lệ vi phân(PD)… sao cho phù hợp đối với các đối
tượng điều khiển. Nhiều quá trình trong công nghiệp việc sử dụng bộ điều khiển PID là
không thể thay thế như khống chế nhiệt độ, mức, tốc độ…? Ngay cả những lý thuyết
điều khiển hiện đại cũng không cho ta những hiệu quả cao như bộ điều khiển PID
mang lại.Ngoài ra bộ điều khiển PID còn ứng dụng nhiều trong điều khiển thích
nghi,bền vững vẫn mang lại hiệu quả cao trong các cơ cấu chỉnh định.


Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 6
Bài toán thiết kế và điều khiển động cơ một chiều là bài toán cơ bản và quen thuộc

trong ngành điều khiển tự động. Có thể thiết kế điều khiển cho đối tượng độngcơ điện
một chiều theo nhiều phương pháp như :dùng PLC & biến tần, điện tử công suất, vi
điều khiển… Mỗi phương pháp có ưu và nhược điểm khác nhau nhưng đều có mục
đích ổn định và điều khiển được tốc độ động cơ. Ngày nay vi điều khiển phát triển sâu
rộng và ngày càng ứng dụng nhiều trong cài đặt thiết kế bộ điều khiển cho các đối
tượng công nghiệp. Trên cơ sở muốn tìm hiểu về lĩnh vực vi điều khiển chúng em chọn
đề tài: Thiết kế bộ điều khiển PID số trên nền vi điều khiểnPIC. Vì khả năng và thời
gian có hạn nên không thể tránh khỏi những thiếu sót trong đồ án. Do vậy chúng em
rất mong được thầy cô và bạn bè đóng góp xây dựng để đồ án của chúng em được hoàn
thiện hơn.
Hà Nội, ngày tháng năm 2009
Sinh viên
Phạm Văn Cường
Hoàng Văn Quân

Lớp ĐKT1 - K49
Lời cảm ơn
Đầu tiên chúng em xin chân thành gửi lời cảm ơn tới nhà truờng, khoa điện, bộ
môn ĐKTĐ, các thầy cô đã dạy dỗ và dìu dắt chúng em trong suốt 5 năm học vừa qua
để có được những kiến thức chuyên môn cơ sở sau này chúng em có thể vào đời làm
việc, sử dụng có ích cho xã hội.
Để thực hiện thành công đồ án là sự hướng dẫn, chỉ bảo tận tình của PGS.TS Phan
Xuân Minh, Người đã hướng dẫn tận tình , giúp chúng em định hướng, góp ý và cung
cấp ý tưởng cũng như chỉ dẫn tài liệu và các tiến trình thực hiện đồ án .Sự hướng dẫn
của cô là một yếu tố quan trọng để chúng em có thể hoàn thành đồ án này .
Cuối cùng chúng em xin chân thành gửi những lời cảm ơn sâu sắc đến cha mẹ và
gia đình, những người luôn sát cánh cùng chúng em, nuôi dưỡng chăm sóc chúng em
tạo điều kiện tốt nhất cho chúng em học tập để có kết quả như ngày hôm nay. Chúng
em xin chân thành cảm ơn








Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 7
















Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 8
Chương 1: Họ vi điều khiển PIC và vi điều
khiển PIC18F4520
1.1 Giới thiệu chung
Ngày nay, những ứng dụng của vi điều khiển đã đi sâu vào đời sống sinh hoạt và

sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện hiện nay đều có sự
góp mặt của vi điều khiển và vi xử lí. Ứng dụng vi điều khiển trong thiết kế hệ thống
làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn định của
thiết bị và hệ thống.
Trên thị trường hiện nay có nhiều họ vi điều khiển để lựa chọn như: 8051,
Motola68HC, AVR, ARM, Pic…và có lẽ 8051 là dòng mà chúng ta được làm quen
nhiều nhất trong môi trường đại học nhưng tại sao chúng ta chọn dòng vi điều khiển Pic
để thực hiện ứng dụng và phát triển không ngoài những nguyên nhân sau:
- Họ vi điều khiển Pic phát triển và sử dụng phổ biến ở nước ta => việc tìm mua và
trao đổi kinh nghiệm là hết sức thuận lợi.
- Giá thành các dòng Pic là không quá mắc.
- Các dòng Pic có đầy đủ tính năng để hoạt động độc lập.
- Là sự bổ sung hợp lý về kiến thức cũng như ứng dụng cho họ vi điều khiển 8051
- Có sự hỗ trợ cao của nhà sản xuất về các công cụ lập trình, trình biên dịch, mạch
nạp Pic từ đơn giản tới phức tạp. Không những vậy các tính năng đa dạng của các
đòng Pic không ngừng được phát triển.
- Có nhiều bộ phận ngoại vi ngay trên chip, bao gồm: Cổng và/ra số, bộ biến đổi
ADC, bộ nhớ EEFROM, bộ định thời, bộ điều chế độ rộng xung (PWM)…
- Bộ nhớ chương trình và bộ nhớ dữ liệu được tích hợp ngay trên chip.
Đây là họ VĐK được chế tạo theo kiến trúc RISC (Reduced Intruction Set
Computer) có cấu trúc khá phức tạp. Ngoài các tính năng như các họ VĐK khác, nó
còn tích hợp nhiều tính năng mới rất tiện lợi cho người thiết kế và lập trình.
Pic18F4520 nằm trong dòng sản phẩm PIC18F2420/2520/4420/4520 của nhà sản
xuất Microchip với đặc điểm 28/40/44 -Pin Enhanced Flash Microcontrollers with
10Bit A/D and nanoWatt Technology. Dòng sản phẩm này có nhiều cải tiến đáng kể về
tính năng so các dòng Pic trước đó như :
- Bộ nhớ chương trình được tăng cường (16Kbytes for PIC18F2420/4420 devices
and 32Kbytes for PIC18F2520/4520 devices).
Vi điều khiển Pic


Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 9
- I/O ports (3 bidirectional ports on 28-pin devices, 5 bidirectional ports on 40/44-
pin devices).
- Tăng cường modul CCP.
- Sử dụng công nghệ nanoWatl
Dòng sản phẩm này nói chung có nhiều sự tương đồng về tính năng nhưng có thể
chia làm hai nhóm Pic18F2420/2520 với 28 chân và Pic 18F4420/4520 với 40 hoặc 44
chân ghép nối. Phần này chủ yếu chúng ta tìm hiểu Pic18F4520 nhưng những đặc điểm
các Pic khác thuộc dòng này sẽ hoàn toàn tương tự với các kí hiệu tương ứng. Trong đồ
án chúng ta quan tâm chủ yếu Pic18F4520 loại PDIP sử dụng trong mạch thiết kế.
1.2 . Vi điều khiển Pic18F4520
Vi điều khiển Pic18F4520 có các đặc điểm cơ bản:
- Sử dụng công nghệ nanoWatl: Hiệu năng cao, tiêu thụ năng lượng ít
- Kiến trúc RISC
 75 lệnh mạnh, hầu hết các lệnh thực hiện trong bốn chu kì xung.
 Tốc độ thực hiện lên tới 10 triệu lệnh trong 1s với tần số 40Mhz  Có
bộ nhân cứng .
- Các bộ nhớ chương trình và dữ liệu cố định
 32 Kbytes bộ nhớ flash có khả năng tự lập trình trong hệ thống có thể
thực hiện được 100.000 lần ghi/xóa
 256 bytes EEPROM có thể thực hiện được 1.000.000 lần ghi/xóa- 
256 bytes SRAM - Những ngoại vi tiêu biểu
 4 bộ định thời/bộ đếm 8 bit với các chế độ tỉ lệ đặt trước và chế độ so
sánh.
 Bộ đếm thời gian thực với bộ tạo dao động riêng biệt
 2 kênh PWM
 13 kênh ADC 10 bit
 Bộ truyền tin nối tiếp USART khả trình
 Watchdog Timer khả trình với bộ tạo dao động bên trong riêng biệt 
Bộ so sánh tương tự - Các đặc điểm đặc biệt khác

Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 10
 Power on Reset và dò Brown out khả trình
 Bộ tạo dao động RC được định cỡ bên trong
 Các nguồn ngắt bên trong và bên ngoài - I/O và các kiểu đóng gói
 32 đường I/O khả trình
 Đóng gói 40-pin PDIP, 44-lead TQFP, và 44-pad MLF

Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 11
Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520
Sơ đồ chân của các vi điều khiển Pic18F4420/4520

Hình 1.2 Sơ đồ chân vi điều khiển Pic18F4520
Sau đây là giới thiệu cấu tạo chân loại 40 chân (40 Pin PDIP):
• Chân 1(MCLR/V
PP
/RE3) :
- MCLR là đầu vào Master Clear (reset) hoạt động ở mức thấp dể reset toàn bộ thiết
bị.
- V
PP
dùng để thay đổi điện áp đầu vào.
- RE3 đầu vào số.
Các chân thuộc cổng vào ra Port A
• Chân 2(RA0/AN0):với RA0 là cổng vào ra số, AN0 là đầu vào tương tự Input0.
• Chân 3(RA1/AN1): RA1 là cổng vào ra số, AN1 là đầu vào tương tự Input1.
• Chân 4(RA2/AN2/V

REF+
): RA2 là cổng vào ra số, AN2 là đầu vào tương tự Input2.
V
REF+
đầu vào tương tự chuyển đổi A/D điện áp tham chiếu(mức thấp), còn CV
REF

đầu ra tương tự để so sánh điện áp chuẩn.
• Chân 5(RA3/AN3/V
REF-
/CV
REF
): RA3 là cổng vào ra số, AN3 là đầu vào tương tự
Input3. V
REF-
đầu vào tương tự chuyển đổi A/D điện áp tham chiếu(mức cao).
• Chân 6(RA4/T0CKI/C1OUT): RA4 là đầu vào ra số,T0CKI dầu vào xung bên ngoài
của Timer0, C1OUT là đầu ra bộ so sánh 1.
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 12

• Chân 7(RA5/AN4/SS /HLVDIN/C2OUT): trong đó RA5 là cổng vào ra só, AN4

là đầu vào tương tự Input 4, SS chọn đầu vào phụ thuộc SPI, HLVDINđầu vào tương
tự để dò điện áp, C2OUT đầu ra bộ so sánh 2.
• Chân 13(OSC1/CLKI/RA7): với OSC1là đầu vào bộ dao động thạch anh hoặc là đầu
vào nguồn xung từ bên ngoài, khi ta nối dây với các thiết bị tương tự thì đầu vào này
dạng ST( Schmitt Trigger input ưith CMOS levels).CLKI là đầu vào CMOS cho
nguồn xung bên ngoài và luôn được ghép nối với chân OSC1. Còn RA7 là chân vào ra

sử dụng chung .
• Chân 14(OSC2/CLKO/RA6): OSC2 là đầu ra bộ dao động thạch anh được nối với
thạch anh hoặc bộ công hưởng dể lựa chọn dạng bộ dao động thạch anh. CLK0 có tần
số bằng ¼ tần số của OSC1 đọ rộng chu kì lệnh, RA6 là đầu vào ra chung.
Các chân cổng vào ra hai chièu Port B. Port B có thể lập trình bằng phần mềm khi cho
kéo đầu vào bên trong yếu lên trên toàn bộ đầu vào.
• Chân 33(RB0/INT0/FLT0/AN12): Với RB0 là cổng vào ra số, INT0 là đầu vào ngắt
ngoài Interrup 0, FLT0 là đầu vào báo lỗi PWM được tăng cường CCP1, AN12 đầu
vào tương tự Input 12.
• Chân 34(RB1/INT1/AN10): RB1 là đầu vào ra số, INT1 đầu vào ngắt ngoài Interrup1,
AN10 đầu tương tự Input 10.
• Chân 35(RB2/INT2/AN8): RB2 là đầu vào ra số, INT2 đầu vào ngắt ngoài Interrup2,
AN8 đầu tương tự Input 8.
• Chân 36 (RB3/AN9/ccp2): RB3 là đầu vào ra số, AN9 đầu tương tự Input 9, CCP2 (
Capture 2 input/Compare 2 output/PWM2 output.)
• Chân 37(RB4/KBI0/AN11):): RB4 là đầu vào ra số, KBI0 thay đổi mở ngắt, AN11
đầu tương tự Input 9.
• Chân 38(RB5/KBI1/PGM): RB5 đầu vào ra số, KBI1 thay đổi mở ngắt, PGM cho
phép có thể lập trình ISCP
TM
ở điện áp thấp.
• Chân 39(RB6/KBI2/PGC): RB6 là đầu vào ra số, KBI2 thay đổi mở ngắt, PGC chân
dùng trong mạch chạy và xung lập trình ICSP.
• Chân 40(RB7/KBI3/PGD): RB7 đầu vào ra số, KBI3 thay đổi mở ngắt, PGD chân
dùng trong mạch chạy và xung lập trình ICSP.
Các chân công Port C
• Chân 15(RC0/T1OSO/T13CKI):RC0 đầu vào ra số, T1OSO đầu ra bộ dao động
Timer1, T13CKI đầu vào xung bên ngoài Timer1/Timer3.
• Chân 16(RC1/T1OSI/CCP2): RC1 đầu vào ra số, T1OSI đầu vào bộ dao động Timer1,
CCP2(Capture 2 input/Compare 2 output/PWM2 output.).

Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 13
• Chân 17(RC2/CCP1/P1A): RC2 lầ đầu vào ra số, CCP1(Capture1 input/Compare 1
output/PWM1 output.), P1A đầu ra tăng cường CCP1.
• Chân 18(RC3/SCK/SCL): RC3 là đầu vào ra số, SCK đầu vào ra đư chuỗi xung vào ra
cho SPI lựa chọn, SCL đầu vào ra đưa chuỗi xung vào ra cho I
2
C
TM
lựa chọn.
• Chân 23(RC4/SDI/SDA): RC4 là đầu vào ra số, SDI đầu vào dữ liệu API, SDA đầu
vào ra dữ liệu cho I
2
C.
• Chân 24(RC5/SDO): RC5 đầu vào ra số, SDO đầu ra dữ liệu SPI.
• Chân 25(RC6/TX/CK): RC6 đầu vào ra số, TX đầu ra chuyển đổi dị bộ EUSARRT,
CK dầu vào ra xung đồng bộ EUSART.
• Chân 26(RC7/RX/DT): RC7 đầu vào ra số, RX đầu vào nhận dị bộ EUSART, DT đầu
vào ra dữ liệu đồng bộ EUSART.
Các chân cổng Port D( Port D có thể vào ra hai hướng hoặc cổng song song phụ
thuộc(PSP) cho giao diên vi xử lý và khi đó các đầu vào phải là TTL
• Chân 19(RD0/PSP0): RD0 đầu vào ra số, PSP0 cổng dữ liệu song song phụ thuộc.
• Chân 20(RD1/PSP1): RD1 đầu vào ra số, PSP1cổng dữ liệu song song phụ thuộc
• Chân 21(RD2/PSP2): RD2đầu vào ra số, PSP2 cổng dữ liệu song song phụ thuộc
• Chân 22(RD3/PSP3): RD3 đầu vào ra số, PSP3 cổng dữ liệu song song phụ thuộc
• Chân 27(RD4/PSP4): RD4 đầu vào ra số, PSP4 cổng dữ liệu song song phụ thuộc
• Chân 28(RD5/PSP5/P1B): RD5 đầu vào ra số, PSP5 cổng dữ liệu song song phụ
thuộc, P1B đầu ra được tăng cường CCP1.
• Chân 29(RD6/PSP6/P1C): RD6 đầu vào ra số, PSP6 cổng dữ liệu song song phụ

thuộc, P1C đầu ra được tăng cường CCP1.
• Chân 30(RD7/PSP7/P1D): RD7 đầu vào ra số, PSP7 cổng dữ liệu song song phụ
thuộc, P1D đầu ra được tăng cường CCP1. Các chân cổng Port E


• Chân 8(RE0/RD/AN5): RE0 đầu vào ra số, RD đầu vào điều khiển đọc cho cổng PSP,
AN5 đầu vào tương tự Input5.


• Chân 9(RE1/WR /AN6): RE1 đầu vào ra số, WR đầu vào điều khiển viết dữ liệu cổng
PSP, AN6 đầu vào tương tự Input6.


Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 14
• Chân 10(RE2/CS /AN7): RE2 đầu vào ra số, CS điều khiển chọn Chip cho cổng PSP,
AN7 đầu vào tương tự Input7.
- Đầu RE3 nằm ở chân 1
Các chân khác
• Chân 12,31(V
SS
): nối đất chuẩn cho I/O và logic.
• Chân 11,32(V
DD
): cungcấp nguồn dương cho I/O và logic.
Loại 44 chân có thêm một số chân phụ khác khi cần thiết ta có thể dễ dàng tra trong
DataSheet. Chi tiết hơn chúng ta có thể thấy qua sơ đồ khối của Pic18F4420/4520 trong
tài liệu do microchip cung cấp sẽ có hoàn toàn đầy đủ thông tin. đặc điểm cấu tạo.
1.2.1. Tổ chức bộ nhớ (Memory Organization)

Dòng Pic18Fxxxx được tổ chức bộ nhớ thành ba loại:
• Bộ nhớ chương trình (Program Memory).
• Bộ nớ dữ liệu RAM (Data RAM).
• Bộ nhớ dữ liệu EEPROM (Data EEPROM ).
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 15

(Program counter) có thể quản lý 2Mbyte bộ nhớ chương trình. Với Pic18F4520 có
32Kbytes bộ nhớ Flash có thể lưu trữ lên tới 16,384 câu lệnh đơn, dòng Pic này có
hai vector ngắt: Reset vector có địa chỉ 0000h và Interrupt vector ở địa chỉ 0008h và
0018h.
• Bộ đếm chương trình – PC (Program Counter)
PC có độ rộng 21 bits phân chia trên 3 thanh ghi 8 bits: thanh ghi PCL, thanh ghi
PCH, thanh ghi PCU. Dữ liệu bytes địa chỉ của PC được lưu trong bộ nhớ chương trình.
Khi sử dung cần lưu ý tới cấu trúc lệnh có làm thay đổi giá trị PC hay không.
• Khôi phục dịa chỉ ngăn xếp (RETURN ADDRESS STACK)
Ở đây ta có thể cho phép lưu trữ gọi 31 chương trình và các ngắt xảy ra. Trong
thực thi ngăn xếp cấu trúc lệnh CALL và RCALL là được quan tâm. Sơ đồ ngăn
xếp dạng:
T

ch

c các b

nh

ch
ươ

ng trình theo ki
ế
n trúc Harvard
đượ
c s

p x
ế
p theo s
ơ

đồ

:

Hình 1.3: T

ch

c b

nh

ch
ươ
ng trình

T

ch


c b

nh

ch
ươ
ng trình(Program Memory Organization)
Dòng vi
đ
i

u khi

n Pic18xxxx là thi
ế
t b

v

i 21bit b


đế
m ch
ươ
ng trinh PC
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 16


Hình 1.4: Sơ đồ địa chỉ ngăn xếp
Trong vùng ngăn xếp này cần quan tâm tới::
- Top-of-Stack Access
- Return Stack Pointer (STKPTR)
- Stack Full and Underflow Resets
Khi chúng ta lập trình cần thiết chính xác khi gọi chương trình qua lệnh Call và
Rcall nên khi tác động cần quan tâm sự thay đổi các ngăn xếp cũng như quản lý
con trỏ (Pointer). Ta có thể dùng các lệnh Push và Pop để điều khiển con trỏ. Một
quan tâm khác nữa đó là Stack Pointer Register (STKPTR) - thanh ghi con trỏ ngăn
xếp:

Bit 7 (STKFUL): bit cờ báo ngăn xếp đầy
− Giá tri 1 có nghĩa là ngăn xếp đã đầy hoặc tràn
− Giá trị 0 thì ngăn xếp vẫn chưa bị đầy hoặc tràn
Bit 6 (STKUNF): bit cờ báo tràn dưới
− Giá trị 1: xảy ra tràn dưới
− Giá trị 0: không có tràn dưới
Bit 5 (Unimplementad): mang giá trị “0”
Bit 4-0 (SP<4:0>:Các bit xác định con trỏ ngăn xếp
Chúng ta có thể xóa bit 6 và bit 7 nhờ phần mềm hoạc bởi một POR
• FAST REGISTER STACK
Nhóm thanh ghi này gồm có các thanh ghi: Status, WREG, BSR giúp việc khôi phục
nhanh lựu chọn cho các ngắt. Ví dụ một chương trình:
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 17

Việc quản lý tốt bộ nhớ chương trình sẽ giúp ta thực hiện chương trình tốt hơn cũng
như tối ưu câu lệnh.

• Chu kì lệnh Pic 18Fxxx
Bất kì một vi điều khiển Pic nào khi nhận một xung từ bên trong hay bên ngoài
đều xử lý theo một chu kì gồm 4 bước. Họ 18Fxxxx cũng vậy chu kì lệnh được xử
lý song song (Pipelining) qua 4 bước Q1,Q2,Q3,Q4.

Hình 1.5: Clock/Instruction Cycle

Hình 1.6 Instruction Pipeline Flow
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 18

Hình 1.7 Instruction In Program Memory
Tổ chức dữ liệu bộ nhớ(Data Memory Organization)
Pic18Fxxxx là họ Statis Ram mỗi thanh ghi bộ nhớ dữ liệu có 12 bit địa chỉ, cho
phép truy nhập tới 4096 bytes dữ liệu bộ nhớ. Không gian bộ nhớ chia làm 16
bank gồm 256 byte mỗi bank Pic18F4520 như sơ đồ phía sau.
Bộ nhớ dữ liệu bao gồm : thanh ghi chức năng đặc biệt (SFRs), thanh ghi mục
đích chung (GPRs). Thanh ghi SFR dùng để điều khiển trạng thái và chức năng
thiết bị ngoại vi, trong khi thanh ghi GPR dùng để lưu trữ hoặc làm vùng nhớ tạm
thời đang hoạt động của các ứng dụng.
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 19

Hình 1.8 Sơ đồ cấu trúc bộ nhớ dữ liệu Pic18F4520
Theo cấu trúc lệnh và kiến trúc dòng Pic18Fxxxx cho phép các bank hoạt động
đồng thời. Toàn bộ bộ nhớ dữ liệu có thể cho phép truy nhập có hướng, vô hướng hay
địa chỉ có chỉ số, đặc điểm chung của các thanh ghi là cho phép xử lý trong một chu kì
đơn. Pic 18Fxxxx cung cấp một AccesBank gồm 256 byte bộ nhớ cho phép truy cập

nhanh tới SFRs và phần Bank0 của GPR nếu không sử dụng BSR.
Chi tiết các bank thanh ghi và chức năng ta có thể theo dõi kĩ hơn trong dataSheet
Sau đây là một số cấu trúc các thanh ghi điển hình:
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 20

Hình 1.9 Sơ đồ cấu trúc thanh ghi của Pic18F4520
Thanh ghi Status (Status Register)

Bit 7-5 (Unimplemented): mang giá trị “0”
Bit 4 (N): bit xác định dấu(Negative bit) dược sử dụng cho số có dấu(số bù 2), nó
được xác dịnh khi kết quả mang dấu âm(ALU MSB=1)
− Giá trị 1: kết quả là âm
− Giá trị 0: kết quả là dương
Bit 3 (OV): bít báo tràn(overflow bit) được sử dụng cho số có dấu (số bù 2), nó
xác định báo tràn cho độ dài 7 bit cái là nguyên nhân thayđổi trạng
thái và dấu bit 7.
− Giá trụ 1: xảy ra tràn
− Giá trị 0 : không xáy ra tràn
Bit 2 (Z): bít không (Zero bit)
− Giá trụ 1: kết quả các phép toán số học và logic là bằng “0”
− Giá trị 0 : kết quả các phép toán khác “0”

Bit 1 (DC): Digit Carry/borrowbit. Sử dụng cho các lệnh ADDWF, ADDLW,
SUBLW và SUBWF
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 21
− Giá trụ 1: xảy ra việc thao tác 4 bit thấp.

− Giá trị 0 : không xảy ra việc thao tác 4 bit thấp.

Bit 1 (DC): Carry/borrowbit. Sử dụng cho các lệnh ADDWF, ADDLW, SUBLW
và SUBWF
− Giá trụ 1: xảy ra việc thao tác bit quan trọng.
− Giá trị 0 : không xảy ra việc thao tác với bit quan trọng.
• Các kiểu địa chỉ dữ liệu(Data Addressing Modes) Có bốn kiểu địư chỉ
như sau:
• Địa chỉ có sẵn (Inherent addressing)
• Địa chỉ bằng chữ (Literal addressing)
• Địa chỉ có hướng (Direct addressing)
• Địa chỉ vô hướng (Indirect addressing)
Các chế độ này có chế độ địa chỉ theo hướng khi sử dụng có liên hệ thanh ghi FSR

• Bộ nhớ dữ liệu và cấu trúc lệnh được mở rộng(Data Memory and the
Extended Instruction Set)
Pic 18 có khả năng cho ta mở rộng cấu trúc lệnh nhờ Access Bank và cho ta gấp dôi
lệnh khi lựa chon địa chỉ không gian bộ nhớ. Nó có thể mang lại nhiều ý nghĩa về kích
thước bộ nhớ. Với chế độ này chủ yếu thay đổi cấu trúc kiểu địa chỉ có hướng và vô
hướng còn hai chế độ địa chỉ bàng chữ và có sẵn là không thay đổi, cụ thể ta có thể
theo đõi như hình vẽ
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 22

Bộ nhớ chương trình Flash (Flash Program Memory)
Đặc điểm bộ nhớ Flash là có khả năng đọc viết và xoá trong thời gian hoạt động dựa
vào khoảng điện áp V
DD
một cách dễ dàng.

Tại một thời điểm chúng ta có thể thực hiện đọc một byte, Viết một khối 32 byte, xoá
một khối 64 byte. Hoạt động xoá một khối lớn không có khả năng từ mã người sử
dụng.
Khi ta xoá hoặc viết vào bộ nhớ chương trình sẽ ngừng chỉ dẫn cho khi hoàn
thành hoạt động.Và không có sự truy nhập trong suốt quá trình viết hoặc xoá dữ
liệu. Sẽ có một bộ đếm thời gian khi có hoạt động xoá hoặc viết.
Sau đây chúng ta sẽ tìm hiểu một số thuộc tính cơ bản khi thao tác bộ nhớ Flash.
• Table Reads and Table Writes
Theo thứ tự đọc và viết dữ liệu cho phép vi xử lý di chuyển các byte giữa không
gian bộ nhớ chương trình và dữ liệu trong RAM thông qua: Table Reads and Table
Writes. Nhưng do bộ nhớ chương trình có độ rông 16bit còn bộ nhớ Ram chỉ là 8
bit nên để di chuyển dữ liệu giữa chúng cần thanh ghi 8bit (TABLAT):
Bảng đọc hoạt động lấy ra dữ liệu từ bộ nhớ chương trình đưa chúng tới khoảng nhớ
của RAM.:

Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 23
Bảng viết hoạt động lưu trữ dữ liệu từ bộ nhớ dữ liệu htông qua đó giữ trong bộ nhớ
chương trình:

• Control Registers
Có bốn thanh ghi điều khiển:
• EECON1 register
• EECON2 register
• TABLAT (TABLE LATCH ) register
• TBLPTR(TABLE POINTER) registers Ta đưa ra thanh ghi
EECON1 ví dụ:

Bit 7 (EEPGD): bit lựa chọn bộ nhớ Flash và bộ nhớ dữ liệu EEPROM

− Giá trị 1:Cổng vào cho bộ nhớ Flash.
− Giá trị 0: Cổng vào cho bộ nhớ EEPROM.
Bit 6 (CFGS): bit lựa chọn bộ nhớ Flash , bộ nhớ dữ liệu EEPROM hoặc thanh ghi
cấu hình (Configuration register):
− Giá trị 1:Cổng vào cho thanh ghi cấu hình.
− Giá trị 0: Cổng vào cho bộ nhớ EEPROM hoặc bộ nhớ Flash . Bit
5 (Unimplemented): mang giá trị “0”
Bit 4 (FREE): bit cho phép xóa bộ nhớ Flash theo hàng:
− Giá trị 1: Xoá bộ nhớ chương trình theo địa chỉ hàng bởi TBLPTR
trên cơ sỏ lệnh WR kế tiếp.
− Giá trị 0: Chỉ thực hiện hoạt động viết.
Bit 3 (WRERR): bit cờ để báo lỗi trren bộ nhớ Flash và bộ nhớ dữ liệu EEPROM.
Vi điều khiển Pic

Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 24
− Giá trị 1: Một hoạt động viết kết thúc sớm.
− Giá trị 0: Hoạt động viết được hoàn tất.
Bit 2 (WREN): bít cho phép hoạt động viết trên bộ nhớ Flash và bộ nhớ dữ liệu
EEPROM.
− Giá trị 1: Cho phép viết theo chu kỳ trên bộ nhớ Flash và bộ nhớ dữ
liệu EEPROM.
− Giá trị 1: Ngăn cản viết theo chu kỳ trên bộ nhớ Flash và bộ nhớ dữ
liệu EEPROM.
Bit 1 (WR): bit điều khiển hoạt động viết.
− Giá trị 1: Bắt đầu chu kỳ xóa/viết dữ liệu trên bộ nhớ dữ liệu EEPROM
hoặc bộ nhớ chương trình.
− Giá trị 0: Chu kỳ viết trên bộ nhớ EEPROM hoàn tất.
Bit 0 (RD): Bit điều khiển hoạt động đọc.
− Giá trị 1: Bắt đầu hoạt động đọc dữ liệu EEPROM.
− Giá trị 0: Chưa bắt đầu hoạt động đọc dữ liệu.

Ta có thể xác định hoặc điều khiển các bit 0 và bit 1 nhờ phần mềm.
• Reading the Flash Program Memory
Khi đọc dữ liệu chúng ta sử dụng cấu trúc lệnh TBLRD để lấy dữ liệu từ bộ nhớ tới
bộ nhớ RAM. Hoạt động theo hình sau:

• Erasing Flash Program Memory
Việc thực hiện xoá dữ liệu có thể thông qua người lập trình hoặc thông qua điều
khiển ISCP. Chúng ta có thể xoá khối nhỏ nhất 32 từ tới 64 byte, có khả nưng cho

×