Giáo trình thí nghiệm VDK - Pdf 12

Giáo trình thí nghiệm vi điều khiển ứng dụng

1

MỤC LỤC

CHƢƠNG I : PHẦN CỨNG PIC16F 4
I.KIẾN TRÚC 4
1.Kiến trúc Von neumann 4
2.Kiến trúc harvard 4
II.INSTRUCTION PIPELINING 5
III.KÍCH THƢỚC TỪ LỆNH 9
IV.THIẾT KẾ PHẦN CỨNG CHO PIC 10
1.Mạch nguyên lý 10
2.Chuẩn ICSP(In-Circurt Serial Programming) 11
3.Các tính năng đặc biệt, các bit cấu hình của PIC16F887 11
CHƢƠNG II : XUẤT NHẬP I/O PORT 21
I.MỤC ĐÍCH THÍ NGHIỆM 21
II.DỤNG CỤ THÍ NGHIỆM 21
III.CƠ SỞ LÝ THUYẾT 21
1.Thanh ghi qui định tín hiệu xử lý 21
2.Chức năng của thanh ghi TRIS 22
3. Chức năng của thanh ghi PORT 22
4.Những thanh ghi đặc biệt chỉ có riêng ở PORTB 23
IV.BÀI TẬP THỰC HÀNH 26
V.BÀI TẬP TỰ GIẢI 32
CHƢƠNG III : ADC MODULE 33
I.MỤC ĐÍCH THÍ NGHIỆM 33
II.DỤNG CỤ THÍ NGHIỆM 33
III.CƠ SỞ LÝ THUYẾT 33
1.Tín hiệu tương tự và tín hiệu số 33

IV.BÀI TẬP THỰC HÀNH 67
V.BÀI TẬP TỰ GIẢI 70
CHƢƠNG VI :GIAO TIẾP NỐI TIẾP BẤT ĐỒNG BỘ 72
I.MỤC ĐÍCH THÍ NGHIỆM 72
II.DỤNG CỤ THÍ NGHIỆM 72
III.CƠ SỞ LÝ THUYẾT 72
1.Khái niệm về giao tiếp nối tiếp bất đồng bộ 72
2.Các thanh ghi điều khiển truyền UART 74
3.Các thanh ghi điều khiển nhận UART 76
Giáo trình thí nghiệm vi điều khiển ứng dụng

3

5.Công thức tính tốc độ baund rate 78
IV:BÀI TẬP THỰC HÀNH 78
V.BÀI TẬP TỰ GIẢI 81
TÀI LIỆU THAM KHẢO 83
PHỤ LỤC 84
I.CỬA SỔ CHƢƠNG TRÌNH 84
II.CÁC BƢỚC KHỞI TẠO MỘT PROJECT MỚI 84
II.HI TECH C CƠ BẢN 88
1.Khai báo biến 88
2.Kiểu con trỏ 89
3.Kiểu enum 89
4.Phép toán học 90
5.Phép toán gán 90
6.Phép toán tăng , giảm 90
7.Phép toán quan hệ 90
8.Tóan tử logic 91
9.Toán tử theo bit 91

nâng cao độ tin cậy của hệ thống và dễ dàng thay thế những vùng nhớ bị lỗi kỹ thuật. Nhờ những
lợi thế đó mà trong một thời gian kiểu kiến trúc này đã được thương mại và sản xuất. Tuy nhiên
nó cũng có một số nhược điểm: hạn chế băng thông, thực hiện nhiều lần lấy dữ liệu chỉ cho một
lệnh, không thể thực hiện song song thao tác này. Chính vì sự phổ biến đầu tiên của kiến trúc
Von Neumann mà hầu hết các loại Vi Điều Khiến đều được xây dựng quanh cấu trúc này, mặc
dù giá thành bộ nhớ hiện nay đã rẻ hơn rất nhiều và độ tin cậy cũng tăng lên rất nhiều. Hình 1: Kiến trúc bộ nhớ kiểu Von Neuman
2.Kiến trúc harvard :
Havard có không gian nhớ dành cho bộ nhớ dữ liệu và bộ nhớ chương trình riêng biệt. Lợi
thế và hiệu năng chính của kiểu dữ liệu này là nó có 2 Bus dữ liệu riêng biệt hoạt động đồng thời
phục vụ cho bộ nhớ dữ liệu và bộ nhớ chương trình: Trong khi CPU lấy dữ liệu từ bộ nhớ
chương trình, thì nó vẫn có thể đọc ghi dữ liệu ở vùng nhớ dữ liệu.

Von Neumann
Architecture
8-bit
Bus
CPU
Program
& Data
Memory
Giáo trình thí nghiệm vi điều khiển ứng dụng

5

Một lợi thế khác của kiến trúc Harvard là độ rộng Bus bộ nhớ chương trình và Bus dữ liệu
có thể khác nhau. Không phải tất tất cà các loại Vi Điều Khiển có kiến trúc Harvard điều có lợi
thế này, nhưng PIC thì có. Do bus có độ rộng khác nhau nên độ rộng Bus bộ nhớ chương trình có

6

thiết cho lệnh đó ở đâu để thực thi đồng thời hai thao tác này trong một chu kỳ lệnh, bởi vì thông
tin địa chỉ của dữ liệu cần thiết trong vùng nhớ dữ liệu nằm trong lệnh kia.Vấn đề được giải
quyết bằng Instruction Pipelining.
Trong chu kỳ lệnh đầu tiên khi CPU hoạt động, lệnh được lấy vào Pipeline. Bus bộ nhớ
chương trình được truy xuất, Bus dự liệu không hoạt động.

Hình 4: Thực hiện lệnh trong chu kỳ đầu tiên

Trong chu kỳ lệnh thứ 2, lệnh lấy trước đó được thực thi, có nghĩa là Bus dữ liệu hoạt động
trao đổi dữ liệu với CPU khi CPU thực thi lệnh. Đồng thời trong lúc này, cả 2 Bus đều hoạt động
đồng thời.

Hình 5: Thực hiện lệnh trong chu kỳ thứ hai

Trong chu kỳ lệnh thứ 3, lệnh thứ 2 lấy trước đó được thực thi, đồng thời lệnh tiếp theo
được lấy. Tới lúc này thì mọi thứ đã khá rõ ràng, ngoại trừ chu kỳ lệnh đầu tiên ra, mỗi chu kỳ
lệnh sẽ thực thi xong một lệnh, bao gồm 2 bước lấy lệnh và thực thi. Bởi vì lúc thực thi 1 lệnh thì
lệnh đó đã có sẵn, và thông tin về địa chỉ bộ nhớ dữ liệu cũng đã được lấy vào từ lúc lệnh trước
thực thi.
Giáo trình thí nghiệm vi điều khiển ứng dụng

7 Hình 6:Thực hiện lệnh trong chu kỳ thứ ba

Chu kỳ thứ 4,5:Với quy trình như vậy thì lệnh nằm sau luôn luôn thực thi khi lệnh trước nó
thực thi xong. Tuy nhiên khi bộ đếm chương trình bị thay đổi bằng một lệnh, thì có thể lệnh sau

nhất 2 byte dữ liệu hằng 8 bit, và byte còn lại cho lệnh. Điều này có nghĩa là, khi thực hiện lệnh
này, bộ nhớ bị truy xuất 2 lần. Ngoài việc kém hiệu quả về tốc độ truy xuất ra, các tổ chức từ
lệnh 1, 2 hay 3 của kiểu kiến trúc này làm cho việc thiết kế một vi điều khiển với bộ nhớ vừa
phải hợp yêu cầu khó khăn hơn.

Hình 8: Quy trình thực thi lệnh LDAA

Đối với PIC16F mà chúng ta đang dùng, kiến trúc bộ nhớ được thiết kế là 14 bit có độ rộng
bus bộ nhớ chương trình, phù hợp với các ứng dụng vừa phải. Từ lệnh dài như vậy sẽ chứa được
nhiều thông tin hơn, đủ để thực thi một công việc chỉ với một từ lệnh, có nghĩa là chỉ cần truy
xuất bộ nhớ 1 lần cho 1 lệnh. Với thiết kế này thì kích thước bộ nhớ sẽ tối ưu hơn so với các kích
thước bộ nhớ kiểu khác.

Hình 9: Thực thi một công việc chỉ với một từ lệnh

Giáo trình thí nghiệm vi điều khiển ứng dụng

10

IV.THIẾT KẾ PHẦN CỨNG CHO PIC
1.Mạch nguyên lý:
Các chân nguồn Vdd phải được cấp nguồn đầy đủ, không được bỏ trống: Chip càng nhiều
tính năng thì lượng Transistor càng lớn, khi số lượng Transistor trong chip tăng lên, thì độ dài
đường cấp nguồn trong diesilicon cũng tăng lên, làm điện trở tăng gây ra mất cân đối điện áp
cung cấp trên các vùng của chip. Hơn nữa khi đường nối dài thì cảm kháng ký sinh cũng tăng
theo làm áp cung cấp cho các vùng trên cũng bị sụt tức thời khi chip hoạt động ở tần số cao.
Những hiệu ứng này làm chip hoạt động kém ổn định. Do đó chip đưa ra nhiều đầu cấp nguồn
Giáo trình thí nghiệm vi điều khiển ứng dụng

11

2.Chuẩn ICSP(In-Circurt Serial Programming)
Đây là chuẩn nạp trực tiếp cho vi điều khiển PIC kể cả khi PIC được hàn trên Board, gồm
có 6 chân như theo thứ tự :

Hình 10: Vị trí các chân trong chuẩn ICSP

Chỉ cần 5 chân từ 1 đến 5 là có thể nạp được PIC, tuy nhiên có thêm chân số 6 để đề phòng
trường hợp nếu như cắm ngược, lúc đó chân MCLR/Vpp sẽ đưa vào chân NC, khi thiết bị nạp
chân Chip, nó sẽ nâng điện áp chân MCLR/Vpp lên từ 8-13V, nếu chân MCLR/Vpp nối vào một
I/O bất kỳ, có thể gây hỏng.
Bus nạp cho chuẩn ICSP này ta có thể chọn loại Bus có quy định chiều cắm thì càng tốt.

3.Các tính năng đặc biệt, các bit cấu hình của PIC16F887:
PIC16F887 có một loại các tính năng nhằm tối đa hóa độ tin cậy của hệ thống, giảm thiểu
chi phí qua việc loại bỏ các linh kiện bên ngoài, các tính năng bảo vệ mã, tiết kiệm năng lượng.
Những tính năng đó là:
 Reset
 Power-on Reset (POR)
 Power-up timer (PWRT)
 Oscillator Start-up Timer (OST)
 Brown-out Reset (BOR)
 Interrupts
 Watchdog timer (WDT)
 Oscillator selection

Hi-tech C, được cách nhau bằng dấu „&‟. Từ __CONFIG đầu tiên cấu hình cho thanh ghi
CONFIG1,__CONFIG thứ 2 cấu hình cho thanh ghi CONFIG2
Một chương trình mẫu khi sử dụng các bit cấu hình đặt trong chương trình:
/////////////////////Cấu hình thanh ghi CONFIG1
XT: Dao động thạch anh bên ngoài, 4Mhz
WDTDIS: Tắt chức năng watch-dog
PWRTEN: Mở tính năng Power-up Timer
MCLREN: Mở tính năng master clear từ chân MCLR
UNPROTECH : không bảo vệ mã
DUNPROTECH: Không bảo vệ dữ liệu trong EEPROM
BORDIS: Không sử dụng Brown-out reset
IESODIS: Không sử dụng tính năng Internal External Switchoer
FCMDIS: Không sử dụng tính năng Fail-Safe Clock Monitor
LVPDIS:Không sử dụng tính năng LVP.
/////////////////////Cấu hình thanh ghi CONFIG2
BORV40: Nếu Brown-out Reset được cho phép, thì điện áp Vbor = 4V
Cho phép PIC được ghi lên Flash ( không xuất hiện WP0,WP1, WP2 nghĩa là cho
phép tất cả ). Giáo trình thí nghiệm vi điều khiển ứng dụng

13

Thanh ghi cấu hình CONFIG1:
DEBUG: tích cực mức thấp, khi bit này bị xóa(0), chip sẽ hoạt động ở chế độ gỡ rối, chạy
từng bước, truyền thông tin bộ nhớ về thiết bị gỡ rối. Chân RB6/CLK và RB7/DAT hoạt động
với chức năng gỡ rối. Ngược lại, khi bit này bật lên bằng (1), chip không thực hiện tính năng
Debug, thay vào đó RB6/CLK và RB7/DAT hoạt động như một I/O thông thường. Chú ý là bit
này có thể xóa hay bật bởi MPLAB khi chọn chế độ nạp hay gỡ rối trên MPLAB, do vậy trong

FSCM là một SR Latch, cứ mỗi xung clock bên ngoài đưa vào sẽ bậc ngõ ra Q=1 và cứ khoảng
2ms, dao động mẫu sẽ xóa ngõ ra Q=0; Dao động bên ngoài hỏng sẽ được phát hiện ngay nếu
trong hơn một nữa chu kỳ của dao động mẫu, Q luôn bằng 0.

Hình 12: Quy trình hoạt động khối FSCM

Khi dao động bên ngoài bị hỏng, FSCM sẽ chuyển dao động dùng cho PIC từ nguồn dao
động bên ngoài sang nguồn dao động nội, đồng thời bật cờ OSFIF trong thanh ghi PIR2, sẽ gây
ngắt nếu OSFIF trong thanh ghi PIE2 được cho phép. Dao động nội được dùng cho tới khi nào
nguồn dao động bên ngoài được phục hồi và phần mềm trong PIC chuyển sang dao động ngoài.
Dao động nội được FSCM chọn phục thuộc vào 3 bit IRCF<2:0> trong thanh ghi OSCCON,
nghĩa là FSCM cho phép cấu hình dao động nội trước khi FSCM nhận biết sự hỏng hóc của dao
động bên ngoài.
Khi phần mềm PIC thay đổi nguồn dao động (dao động nội và dao động ngoại), tức là bật,
tắt bit SCS, thì coi như FSCM khởi động lại từ đầu, lúc này bit OSFIF mới được phép xóa.Ngoài
ra, sau khi PIC khởi động từ RESET hay SLEEP, FSCM cũng khởi động.
Định nghĩa trong Hi-Tech C:
// Monitor Clock Fail-safe
#define FCMEN 0x3FFF // Enabled
#define FCMDIS 0x37FF // Disabled

IESO (Internal External Switch Over ): Bit này dùng để cấu hình cho chế độ khởi động 2
tốc độ (Two-speech Start up). Đây là tính năng giúp giảm thiểu năng lượng tiêu hao trên PIC do
quá trình khởi động gây ra bằng cách giảm thiểu độ trễ dao động bên ngoài và quá trình thực thi
mã.Với những ứng dụng thường sử sụng như SLEEP để tiết kiện năng lượng, TSS thực sự hiệu
quả khi mà PIC đi vào SLEEP và thức dậy tử SLEEP một cách nhanh chóng.TSS sẽ sử dụng dao
động nội trong quá trỉnh khởi động, ngay sau khi dao động bên ngoài ổn định, PIC sẽ tự chuyển
sử dụng dao động bên ngoài.
Giáo trình thí nghiệm vi điều khiển ứng dụng


PCON, bit này có thể bật/tắt bằng phần mềm trong PIC .
 BOREN<1:0> = 0:Brown – out Reset không hoạt động. Giáo trình thí nghiệm vi điều khiển ứng dụng

16

Định nghĩa Brown – Out Reset trong Hi – tech C:
// Brown Out Detect
#define BORDIS 0x3CFF // BOD and SBOREN disabled
#define SWBOREN 0x3DFF // SBOREN controls BOR function
(Software control)
#define BORXSLP 0x3EFF // BOD enabled in run, disabled in
sleep, SBOREN disabled
#define BOREN 0x3FFF // BOD Enabled, SBOREN Disabled

CPD (Code Protect Data): Bit này tích cực mức thấp, khi cấu hình bằng 0, cho phép bảo vệ
dữ liệu trong EEPROM, sẽ không thể đọc lại dữ liệu EEPROM từ PIC bằng bất cứ chương trình
với sự hỗ trợ của thiết bị nạp nào.
Định nghĩa tring Hi – tech C:
// Data EE Read Protect
#define DUNPROTECT 0x3FFF // Do not read protect EEPROM data
#define CPD 0x3F7F // Read protect EEPROM data

CP(Code Protect): Bảo vệ toàn bộ bộ nhớ chương trình, tích cực mức thấp, khi được xóa
bằng 0, không thể đọc lại nội dung từ bộ nhớ chương trình của PIC.Chú ý: trong quá trình gỡ rối
(Debug), CP không cho phép, MPLAB sẽ cảnh báo và yêu cầu nếu cố tình cho phép CP (CP=0)
trong quá trình gỡ rối.
// Code Protect
Hình 15: Khối Watch dog timer trong Vi điều khiển

Sơ lược về tính năng Watchdog: Watchdog timer là một timer có nguồn dao động RC
31Khz độc lập với dao động của PIC, có thể coi đây là mộ timer có thể cấu hình được giá trị nó
đếm, (đếm 32xung tràn (5 bit) hay đếm 65536 xung tràn(16 bit) … ), khi WDT Timer tràn sẽ
Reset PIC. Nếu sử dụng WDT, trong một khoảng thời gian nhất định, nhỏ hơn thời gian tràn của
WDT Timer thì phải xóa bộ đếm của WDT về 0, đều này hữu ích khi PIC bị treo và không thể
xóa bộ đếm của WDT Timer. Giáo trình thí nghiệm vi điều khiển ứng dụng

18

Chú ý: Khi dùng Watchdog Timer, thì cần cấu hình thời gian cần thiết để WDT tràn, việc
cấu hình bằng phần mềm trong PIC, tác động lên các bit WDTPS<3:0> trong thanh ghi
WDTCON.
Định nghĩa trong Hi – Tech C:
// Watchdog Timer
#define WDTEN 0x3FFF // On
#define WDTDIS 0x3FF7 // Disabled / SWDTEN control

FOSC<2:0> (Oscliiator Selection): Chọn chế độ dao động chính của PIC, 3 bit FOSC<2:0>
có thể lựa chọn được 8 chế độ. Khi lựa chọn chế độ dao động, cần phải tìm hiểu các chế độ dao
động của: PIC hoạt động như thế nào. Hình 16: Sơ đồ khối dao động bên trong vi điều khiển


Hình 18: Dao động dùng tụ và điện trở
Giáo trình thí nghiệm vi điều khiển ứng dụng

20

 FOSC<2:0>=111:Chế độ RC, giống như RCIO, tuy nhiên RA6/OSC2/CLKOUT xuất
xung clock bằng xung đưa vào chia 4.
Đối với phần dao động, chú ý đến bit SCS trong thanh ghi OSCCON, bit này có thể thay
đổi bằng phần mềm trong PIC, mặc định SCS = 0. Khi SCS bằng 0, PIC sẽ chạy bằng dao động
định nghĩa bởi FOSC<2:0> trong thanh ghi CONFIG1 như đã bàn ở trên, khi SCS bằng 1, dao
động được sử dụng là dao động nội, và tần số được quyết định bởi IRCF<2:0> trong thanh ghi
OSCCON. Ngoài ra việc cân chỉnh cho dao động nội chính xác thì sử dụng thanh ghi
OSCTUNE.
Định nghĩa trong Hi – TechC:
// Oscillator
#define EXTCLK 0x3FFF // External RC Clockout
#define EXTIO 0x3FFE // External RC No Clock
#define INTCLK 0x3FFD // Internal RC Clockout
#define INTIO 0x3FFC // Internal RC No Clock
#define EC 0x3FFB // EC
#define HS 0x3FFA // HS
#define XT 0x3FF9 // XT
#define LP 0x3FF8 // LP

 Giải thích ưu khuyết điểm của ngắt .

II.DỤNG CỤ THÍ NGHIỆM :
 Kít thí nghiệm + cáp USB.
 Máy tính .
 Nguồn 12V/1A.

III.CƠ SỞ LÝ THUYẾT :
1.Thanh ghi qui định tín hiệu xử lý ở chân vi điều khiển là tín hiệu số hay tín hiệu tƣơng
tự:
Hình 19: Các chân có thể xử lý tín hiệu số Hình 20: Các chân có thể xử lý tín hiệu tương tự

Những chân có kí hiệu ANX là những chân vừa có thể xử lý tín hiệu số vừa có thể xử lý tín
hiệu tương tự . Do đó khi làm việc với những chân này ta cần chú ý đến hai thanh ghi : Giáo trình thí nghiệm vi điều khiển ứng dụng

22

Hai thanh ghi này có tổng cộng 14bit từ ANS0 đến ANS13 , sẽ quy định tín hiệu làm việc
của các chân từ AN0 đến AN13 là tín hiệu số hay tín hiệu analog .
 ANSX=0 : Cho phép chân ANX xử lý tín hiệu số .
 ANSX=1 : Cho phép chân ANX xử lý tín hiệu tương tự .

 RXY=1: Quy định chân thứ Y của PORTX là mức cao(V
H
).
(Trong đó : X=A,B,C,D,E ; Y=0-7) Giáo trình thí nghiệm vi điều khiển ứng dụng

23

 Tóm lại ta có bảng tóm tắt sau :

ANSX
TRISXY
RXY
Kết quả
0
0
0
Ngõ ra mức thấp(0V)
0
0
1
Ngõ ra mức cao(+5V)
0
1
0
Tổng trở cao (R=)
0
1




 Điện trở kéo lên nên khởi tạo khi PORTB là ngõ vào số , các PORT khác không có hỗ
trợ điện trở treo trong , do đó nếu có nhu cầu sử dụng ta có thể mắc thêm điện trở bên
ngoài. Giáo trình thí nghiệm vi điều khiển ứng dụng

24

4.2.Ngắt ngoài ở chân RB0:
Để xử lý được các tín hiệu tác động tức thời (cạnh lên hay cạnh xuống), chân RB0 có hỗ trợ
xử lý ngắt (interrupt ) kí hiệu ở chân là INT, khởi tạo ngắt ngoài ở chân RB0 ta cần chú ý đến
các bit sau :

 INTE(Interrupt enable ) : bit cho phép ngắt ở PORTB
 INTF(Interrupt flag): cờ ngắt , bit này tự động bằng 1 khi có sự kiện ngắt (cạnh lên hay
cạnh xuống) xảy ra ở chân RB0, ta phải xóa bít này trong khi lập trình .
 GIE(Global interrupt ) : bit cho phép ngắt toàn cục.
 INTEDG (interrupt edge select bit ) : Bit chọn cạnh tác động để sinh ra sự kiện ngắt ở
RB0.
INTEDG=1: Xảy ra ngắt khi có tín hiệu cạnh lên ở RB0
INTEDG=0: Xảy ra ngắt khi có tín hiệu cạnh xuống ở RB0 Hình 22: Sơ đồ ngắt INT ở chân RB0

 Các bƣớc khởi tạo ngắt INT:

 IOCBX=0 : Không cho phép ngắt on-change ở chân thứ X của PORTB.
 IOCBX=1 : Cho phép ngắt on-change ở chân thứ X của PORTB.

 Các bit khởi tạo khác :
 RBIF : Cờ ngắt on-change ở PORTB, cần phải xóa bít này trong lập trình.
 RBIE : Bit cho phép ngắt on-change của PORTB.
 GIE : Bit cho phép ngắt toàn cục.

 Các bƣớc khởi tạo ngắt on-change :
 Bước 1 : Khởi tạo PORTB là ngõ vào số , có điện trở treo.
 Bước 2 : Khởi tạo ngắt on-change ở PORTB
IOCB=0xFF; //khởi tạo toàn bộ PORTB ngắt on-change(có thể khởi tạo
một hay cả PORTB).
RBIE=1; //Cho phép ngắt xảy ra .
RBIF=0; //Xóa cờ ngắt
GIE=1; //Cho phép ngắt toàn cục
 Chú ý : Đối với ngắt on-change , việc xóa cờ ngắt (RBIF=0) không đủ để cho lần ngắt
tiếp theo được thực hiện , mà còn phải thêm điều kiện đọc hoặc viết vào thanh ghi PORTB.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status