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

sách tham khảo lập trình PIC 16f877a

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.61 MB, 58 trang )

Mục lục

Trang

Mục lục....................................................................................................................1

Lời nói đầu..................................................................................................................2
phần I : hớng dẫn cài đặt, sử dụng phần mềm CCS và
winpic800

1. Hớng dẫn cài đặt....................................................................................................3
2. Tổng quan về CCS.................................................................................................3
3. Tạo một Project trong CCS.....................................................................................3
3.1. Tạo một Project mới sử dụng PIC Wizard..........................................................3
3.1.1. Tab General.......................................................................................................4
3.1.2. Tab Communicatiions.......................................................................................6
3.1.3 Tab SPI and LCD..............................................................................................6
3.1.4 Tab Timer..........................................................................................................7
3.1.5 Tab Analog.........................................................................................................7
3.1.6 Tab Other...........................................................................................................8
3.1.7 Tab Interrupts và Tab Driver..............................................................................9
4. Hớng dẫn sử dụng WinPic800...............................................................................10
phần I I : các bài thực hành cơ bản ....................................................16
Bài thực hành số 1: Nháy Led..........................................................................................16
Bài thực hành số 2: Điều khiển vào ra..............................................................................21
Bài thực hành số 3: Điều khiển động cơ một chiều..........................................................24
Bài thực hành số 4: Điều khiển động cơ bớc....................................................................27
Bài thực hành số 5: Hiển thị Led 7 thanh.........................................................................32
Bài thực hành số 6: Giải mã bàn phím..............................................................................35
Bài thực hành số 7: Hiển thị LCD....................................................................................40
Bài thực hành số 8: Lập trình điều khiển mô đun ADC-DAC......................................46


Bài thực hành số 9: Lập trình ngắt của bộ định thời.........................................................50
Bài thực hành số 10: Lập trình với ngắt ngoài..................................................................53
Bài thực hành số 11: Lập trình hiển thị matrix 8x8..........................................................55
Bài thực hành số 12: Lập trình giao tiếp I2C với DS1307.................................................58
Bài thực hành số 13: Lập trình sử dụng bộ ADC trong Pic 16F877..................................65


Vi điều khiển PIC với phần mềm PCW C
Phần I

Hớng dẫn cài đặt, sử dụng phần mền CCS và winpic
800

1. Hớng dẫn cài đặt. Sử dụng Pcwh version 3.227.
Mở Forder cài đặt CCS nháy đúp vào file pcwhupd3.227.exe để tiến hành cài đặt.
Sau khi cài đặt xong thì copy 2 file Pcw.exe V3.227 Patch.exe và Ccsc.exe V3.227
Patch.exe vào trong C:/Program files/Picc.
2. Tổng quan về CCS
Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mền ứng dụng
cho việc lập trình con vi điều khiển đó. Vi điều khiển chr hiểu và làm việc với hai con
số 0 và 1, ban đầu việc lập trình cho VĐk khiển chỉ lập trình với hai con số 0 và . Khi
cấu trúc của VĐk phức tạp lên, số lợng thanh ghi nhiều lên, việc lập trình với số 0 và
1 không còn phù hợp nữa, đòi hỏi sự ra đời của ngôn ngữ mới thay thế. Sự ra đời của
Assembly và sau này là ngôn ngữ C, C++, thì việc lập trình cho VĐK trở nên dễ dàng
hơn.
CSS là trình biên dịch lập trình ngôn ngữ C cho VĐK Pic của hãng Microchip.
Chơng trình là sự tich hợp của của 3 trình biên dịch riêng biệt cho 3 dòng Pic khác
nhau là:
+ PCB cho dòng Pic 12 bít opcodes.
+ PCM cho dòng Pic 14 bít opcodes.

+PCH cho dòng Pic 16 và 18 bít
Tất cả 3 trình biên dịch này đợc tích hợp lại trong một chơng trình bao gồm cả trình
soạn thảo và biên dịch là CSS, phiên bản PCWH Compiler Ver 3.227.
3. Tạo một Project trong CCS
Có nhiều cách để tạo một Project trong CSS, có thể dùng Project Wizard, Manual
Creat, hay đơn giản là tạo một file mới và thêm vào đó các khai báo ban đầu.
Dới đây sẽ trình bày cách tạo một Project mới theo cả 3 phơng pháp. Ta cần chú ý
khi tạo một Project mới thì ta nên tạo một th mục mới có tên liên quan đến dự án định
làm, rồi lu tất cả các file liên quan vao trong th mục đó. Khi biên dịch, CSS sẽ tạo ra
rất nhiều file liên quan khác nhau các file này sẽ tự động lu trong th mục chung đó.
Đây cũng là quy tắc chung khi làm việc với bất kỳ phần mềm lập trình nào.
3.1 Tạo một Project mới sử dụng PIC Wizard
Khởi động chơng trình làm việc PIC C Compiler. Từ giao diện chơng trình chọn
Project NewPIC Wizard . Hình 2.1.1
Sau khi chọn một cửa sổ mới hiện ra yêu cầu nhập tên file cần tạo, Tạo một th
mục mới và lu file này vào trong th mục đó.
Sau khi Save một cửa sổ New Project hiện ra. Hình 2.1.2. Trong cửa sổ này bao
gồm rất nhiều Tab, mỗi tab mô tả một vài tính năng nhất định của Pic. Ta sẽ chọn tính
năng trong các tab tơng ứng.

2


Vi điều khiển PIC với phần mềm PCW C
Hình 2.1.1

Hình 2.1.2
3.1.1 Tab General
Tab General cho phép ta lựa chọnloại Pic mà ta sử dụng cùng với một số lựa
chọn khác nh tần số thạch anh, thiết lập các bít CONFIG để thiết lập chế độ hoạt động

cho Pic. Hình 2.1.3.
+ Debice: Liệt kê danh sách các loại PIC 12F, 16F, 18F, ở đây ta dùng Pic
16F877A.
+ Oscilator Frenquency: Tần số thạch anh sử dụng.
+ Fuses: Thiết lập các bít Config nh: Chế độ dao đông (HS, RC, INTERNAL),
chế độ bảo vệ Code, Brownout detected.
+ Chọn kiểu con trỏ Ram 8 bít hay 16 bít.

3


Vi ®iÒu khiÓn PIC víi phÇn mÒm PCW C

H×nh 2.1.3

H×nh 2.1.4
3.1.2. Tab Communicatiions
4


Vi điều khiển PIC với phần mềm PCW C
Tab Communications liệt kê các giao tiếp nối tiếp mà một con Pic hỗ trợ, thờng là
RS232 và I2C, cùng với các lựa chọn để thiết lập các thông số hoạt động cho từng loại
giao tiếp.
+ Giao tiếp RS232: Mỗi VĐK Pic hỗ trợ một cổng truyền thông RS232 chuẩn. Tab
này cho phép ta lựa chọn các chân Rx, Tx, tốc độ baud, Data bít, Bít Parity
+ Giao tiếp I2C: Để sử dụng I2C ta chọn vào nút use I2C, khi đó ta có các lực chọn:
Chân SDA, SCL, tốc độ truyền (Fast hay Slow), chế độ Master hay Slave, địa chỉ cho
Slave. Hình 2.1.4.
3.1.3. Tab SPI and LCD

Tab này liệt kê cho chúng ta các lựa chọn đối với giao tiếp nối tiếp SPI, chuẩn giao
tiếp tốc độ cao mà Pic hỗ trợ về cấu hình cứng. Chú ý khi ta dùng I2C thì không thể
dùng đợc SPI và ngợc lại. Để có thể sử dụng cả hai giao tiếp này cùng một lúc thì
buộc một trong hai giao tiếp phải đợc lập trình bằng phần mềm (giống nh dùng I2C
cho 89C51). Hình 2.1.5
Phần cấu hình cho LCD chỉ dành cho các đời Pic 18F và 30F.

Hình 2.1.5
3.1.4. Tab Timer
Tab này liệt kê các bộ đếm, bộ định thời mà các con Pic dòng Midrange có: timer0,
timer1, timer2, WDT Hình 2.1.6
Trong lựa chọn cấu hình cho các bộ đếm, bộ định thời có chọn nguồn xung đồng
hồ (trong hay ngoài), khoảng thời gian xảy ra tràn
5


Vi điều khiển PIC với phần mềm PCW C

Hình 2.1.6

3.1.5. Tab Analog
Tab này cho phép lựa chọn bộ chuyển đổi tơng tự/số (ADC) của Pic. Tuỳ vào từng
IC cụ thể mà có các lựa chọn khác nhau.,bao gồm:
+ Lựa chọn cổng vào tơng tự.
+ Lựa chọn chân điện áp lấy mẫu (Vref)
+ Chọn độ phân giải: 8 bít (0 ~ 55) hay 10 bít(0 ~ 1023)
+ Nguồn xung đồng hồ cho bộ ADC (trong hay ngoài), từ đó mà ta có đợc tốc
độ lấy mẫu, thờng gọi là interal 2 hay 6 us.
+ Khi không sử dụng bộ ADC ta chọn none.
Hình 2.1.7.


6


Vi điều khiển PIC với phần mềm PCW C

Hình 2.1.7

3.1.6. Tab Other. Hình 2.1.8
Tab này thiết lập các thông số cho các bộ Capture/Comparator/PWM.
+ Capture (Bắt giữ):
Chọn bắt giữ xung theo sờng dơng (rising edge) hay sờn âm (failling edge)
của xung vào.
Chọn bắt giữ sau 1, 4 hay 16 xung (copy giá trị của TimerX vào thanh ghi lu
trữ CCCPx sau 1, 4 hay 16 xung)
+ Compare (So sánh): Ta có các lạ chọn thực hiện lệnh xảy ra bằng nhau giữa 2
đối tợng so sánh là giá trị của Timer1 với giá trị lu trong thanh ghi để so sánh. Bao
gồm:
Thực hiện ngắt và thiết lập mức 0.
Thiết lập ngắt và thiết lập mức 1.
Thực hiện ngắt nhng không thay đổi trạng thái của chân Pic
Đa Timer1 về 0 nhng không thay đổi trạng thái chân Pic.
+ PWM (Điều chế độ rộng xung).
Lựa chọn về tần số xung ra và duty cycle. Ta có thể lựa chọn sẵn hay tự chọn
tần số, tất nhiên tần số ra phải nằm trong khoảng cho phép.
+ Comparator. (So sánh điện áp)
Lựa chọn mức điện áp so sánh Vref, có rất nhiều mức điện áp để ta lựa chọn, ta
cũng có thể lựa chọn cho đầu vào của bọ so sánh.

7



Vi điều khiển PIC với phần mềm PCW C

Hình 2.1.8
3.1.7. Tab Interrupts và Tab Driver
Tab Interrupts cho phép ta lựa chọn nguồn ngắt mà ta muốn sử dụng. Tuỳ vào từng
loại Pic mà số lợng nguồn ngắt khác nhau, bao gồm: Ngắt ngoài 0 (INT0), ngắt
RS232, ngắt timer, ngắt I2C, SPI, ngắt onchange PORTB
Tab Drive đợc dùng để lựa chọn những ngoại vi mà trình dịch đã hỗ trợ sẵn các
hàm giao tiếp. Đây là những ngoại vi mà ta sẽ kết nối với Pic, trong các IC mà CCS
hỗ trợ nh các loại EEPROM 2404, 2416, 2432, 9346, 9355 và một số IC Ram nh
PCF 8570, IC thời gian thực DS 1302, Keypad 3x4, LCD, ADC

Hình 2.1.9: Tab Interrupts
8


Vi điều khiển PIC với phần mềm PCW C

Hình 2.1.10: Tab Drive
Sau khi thực hiện xong ta nhấn OK để hoàn tất, một file.c đợc tạo ra. File này chứa
tất cả các thiết lập mà ta đã lựa chọn.
4. Hớng dẫn sử dụng WinPic 800.
4.1. Cài đặt và sử dụng GTP USB Programmer.
GTP USB Programmer dùng để nạp chơng trình sau khi đã dịch ra file hex xuống
Pic, sử dụng kết nối USB 2.0 và phần mềm WinPic800. GTP USB có thể nạp cho hầu
hết các chíp Pic bao gồm các họ 8, 14, 18, 24 và 40 chân, ngoài ra nó còn có thể nạp
cho cả dsPic30.
4.1.1. Cài đặt.

Kết nối mạch nạp với máy tính thông qua cổng USB máy sẽ có thông báo sau:

Nhấn Next

9


Vi ®iÒu khiÓn PIC víi phÇn mÒm PCW C

T×m ®êng dÉn trong file cµi ®Æt trªn ®Üa CD.
NhÊn Next.

Chê cho Window t×m kiÕm vµ cµi ®Æt .

10


Vi điều khiển PIC với phần mềm PCW C

Xã nhận cài đặt bằng continue Anyway

Chọn Finish để kết thúc cài đặt.

11


Vi điều khiển PIC với phần mềm PCW C

Để kiểm tra lại quá trình cài đặt ta làm nh sau: Quay trở về Desktop nhấn phải
chuột vào biểu tợng My Computer chọn Magane, chọn Device Magane


4.1.2. Sử dụng
WinPic800 là một phần mềm thông dụng đợc sử dụng để nạp chơng trình cho hầu
hết các loại VĐK Pic.
WinPic800 có giao điện làm việc nh sau:

12


Vi điều khiển PIC với phần mềm PCW C

Trong lần chạy đầu tiên thì thờng WinPic800 không hiển thị tiếng Anh vì vậy
chúng ta cần thiết lập lại. Trên giao diện WinPic800 chọn Ideoma/English.

Để sử dụng WinPic với GTP USB Programmer thì ta cần phải thiết lập một vài
thông số trong Menu. Chọn Setting/Hardware, Setting/Hardware bảng hiện ra nh
sau:

13


Vi điều khiển PIC với phần mềm PCW C
Trở lại giao diện chính của WinPic800, chọn Deivce/Detect Pi, nếu phần mềm báo
đúng Pic thì ta có thể tiến hành nạp chơng trình.
Mở một file hex (File/Open) rồi chọn Device/Program all để tiến hành nạp.
Thông báo sau kết thúc quá trình nạp đã thành công.

14



Vi điều khiển PIC với phần mềm PCW C

Phần II
Các bài thực hành cơ bản
Bài thực hành số 1

Nháy Led

I. Mục đích

Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cách đặt cấu hình vào ra cho các PORT.
- Hiểu cách kiểm tra tín hiệu vào tại một chân.
- Hiểu đợc cấu trúc và hoạt động của lệnh if.

II. Tóm tắt lí thuyết
- Nháy Led là một bài thực hành đơn giản và dễ thực hiện nhất vì vậy nó thờng là sự
lựa chọn đầu tiên cho tất cả những ai mới làm quen với lập trình vi điều khiển.

- Các bớc của chơng trình nháy Led nh sau:
B1: Chuyển chân PD0 lên mức 1
B2: Gọi hàm thời gian.
B3: Chuyển chân PD0 xuống mức 0.
B3: Gọi hàm thời gian.
Lặp lại quá trình.
1. Sơ đồ kết nối:
Kết nối modul led đơn với Main chính qua PORD. Sơ đồ nguyên lý nh sau:
U1

R2

330
DS1
LED0

30
29
28
27
22
21
20
19
26
25
24
23
18
17
16
15
40
39
38
37
36
35
34
33

+5v


RD7/PSP7
RD6/PSP6
RD5/PSP5
RD4/PSP4
RD3/PSP3
RD2/PSP2
RD1/PSP1
RD0/PSP0

VDD
VDD

11
32
+5v

GND
GND

RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RE2/CS/AN7
RC3/SCK/SCL
RE1/WR/AN6
RC2/CCP1
RE0/RD/AN5
RC1/T1OSI/CCP2

RC0/T1OSO/T1CKI RA5/AN4/SS/C2OUT
RA4/TOCKI/C1OUT
RB7/PGD
RA3/AN3/VREF+
RB6/PGC
RA2/AN2/VREF-/CVREF
RB5
RA1/AN1
RB4
RA0/AN0
RB3/PGM
RB2
MCLR/Vpp
RB1
OSC2/CLKOUT
RB0/INT
OSC1/CLKIN

12
31
R3
10K
10
9
8
RERET
SW

7
6

5
4
3
2

+ C15
10uF

1
14
13

pic_16F877A
X2
12000000
C13
104

III. Các bớc tiến hành

Hình 1.1

1. Khởi động phần mềm lập trình CCS bằng cách Click và biểu tợng
trên màn hình desktop.
2. Tạo một dự án mới
Chọn Project/New/PIC Wizard.
15

C16
104



Vi điều khiển PIC với phần mềm PCW C

3. Đặt tên cho dự án
- Trong hộp thoại Name gõ tên dự án. Ví dụ Nhay_led lu vào trong forder
nhay_led.

Click vào save.
Chọn chíp sử dụng là 16F877A.
Portd là port xuất dữ liệu.
Sau khi hoàn tất các lựa chọn thì ta đợc kết quả nh sau:
include "C:\Documents and
Settings\Administrator\Desktop\Nhay_led\nhay_led.h"
void main(){
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
while {}
}
- Ta phải tiến hành chỉnh sửa lại các thông số nh file dới đây: Chú ý các file đợc quản
lý theo Project nên ta chi cần khai báo #include <16f877.h>.
#include <16f877.h>
//Khai bao thu vien 16F877
#FUSES NOWDT, HS, NOPUT, NOLVP, NOWRT //Khai bao cac bit config
#use delay(clock=12000000)
//Khai bao thach anh dung
//////////////////////////////////////////////////////////////////////////
void main() {
-


16


Vi điều khiển PIC với phần mềm PCW C
#define LED PIN_D0
// Định nghĩa chân PD0 cho LED
while(1){.
.//Viết các đoạn code tại đây
.}

}
4. Soạn thảo chơng trình.
- Nhiệm vụ của ngời lập trình là thêm các đoạn code vào vòng while();
#include <16f877.h>
//Khai bao thu vien 16F877
#FUSES NOWDT, HS, NOPUT, NOLVP, NOWRT //Khai bao cac bit config
#use delay(clock=12000000)
//Khai báo tần số thạch anh.
void main() {
#define LED PIN_D0
// Định nghĩa chân PD0
while(1){
output_high (LED);
//Bật LED
delay_ms (500);
//Gọi hàm thời gian
output_low (LED);
//Tắt LED
delay_ms (500); }

//Gọi hàm thời gian.
}
//End Programmer
5. Biên dịch chơng trình nguồn sang File có đuôi *.HEX
- Trên thanh công cụ

Click vào đây để dịch ra file .hex
- Nếu quá trình dịch thành công thì window sẽ có thông báo nh sau.

6. Nạp chơng trình cho vi điều khiển
- Lắp vi điều khiển Pic 16F877 vào GTP USB Programmer.
- Khởi động WinPic800.
- Thiết lập các thông số cho phần cứng. (Nh phần hớng dẫn cho WinPic800)
- Mở file nhay_led.hex trong th mục nhay_led .

17


Vi điều khiển PIC với phần mềm PCW C

- Chọn Device/Programl. Nếu quá trình nạp thành công thì window sẽ có thông báo
sau:

7. Hoạt động thử.
- Chuyển chíp sang main chính và cho chạy thử.
- Theo dõi sự hoạt động của mạch.
IV. Báo cáo thí nghiệm:

1.
2.

3.
4.
5.

Số thứ tự và tên bài.
Mục đích thí nghiệm.
Chơng trình đã soạn thảo để thí nghiệm .
Kết quả thí nghiệm.
Nhận xét và kết luận.

V. Câu hỏi kiểm tra

1. Vẽ lu đồ thuật toán của chơng trình và giải thích.

18


Vi điều khiển PIC với phần mềm PCW C
Bài thực hành số 2

điều khiển vào ra
Bài tập ứng dụng:
Lập trình kiểm tra một tín hiệu vào và điều khiển một thiết bị. Ví dụ Pin_B0 nối
với nút Start, Pin_B1 nối với nút Stop, điều khiển bật tắt một con LED ở Pin_D0.
I. Mục đích

Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cách đặt cấu hình vào ra cho các PORT.
- Hiểu cách kiểm tra tín hiệu vào tại một chân.
- Hiểu đợc cấu trúc và hoạt động của lệnh if.

II. Tóm tắt lí thuyết

- Trong các chơng trình đơn giản thì việc xử lý các tín hiệu trong vòng while() là
đơn giản. Đối với các chơng trình lớn thì viêc xử lý tín hiệu trong vòng while() là
không còn phù hợp nữa. Việc viết chơng trình sử dụng các chơng trình con sẽ làm
cho chơng trình trở nên ngắn gọn hơn, tiết kiệm đợc EFFROM cho chíp. Từ bài
này trở đi chúng ta sẽ dùng nhiều đến các chơng trình con và các th viện.
- Sơ đồ nguyên lý.
Mô tả: Bình thờng các chân RB0, RB1 ở mức cao, khi nhấn nút thì điện áp tại
các chân này chuyển xuống mức thấp. Hình 2.1
U1
30
29
28
27
22
21
20
19

R2
330

26
25
24
23
18
17
16

15

DS1
LED0
+5v

R?
10K

R?
10K

PB1
PB
PB0

40
39
38
37
36
35
34
33

+5v

RD7/PSP7
RD6/PSP6
RD5/PSP5

RD4/PSP4
RD3/PSP3
RD2/PSP2
RD1/PSP1
RD0/PSP0

VDD
VDD

GND
GND

RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RE2/CS/AN7
RC3/SCK/SCL
RE1/WR/AN6
RC2/CCP1
RE0/RD/AN5
RC1/T1OSI/CCP2
RC0/T1OSO/T1CKI RA5/AN4/SS/C2OUT
RA4/TOCKI/C1OUT
RB7/PGD
RA3/AN3/VREF+
RB6/PGC
RA2/AN2/VREF-/CVREF
RB5
RA1/AN1

RB4
RA0/AN0
RB3/PGM
RB2
MCLR/Vpp
RB1
OSC2/CLKOUT
RB0/INT
OSC1/CLKIN

11
32
+5v

12
31

R3
10K
10
9
8
RERET
SW

7
6
5
4
3

2
1
14
13

pic_16F877A
X2

PB

12000000
C13
104

III. Các bớc tiến hành

+ C15
10uF

C16
104

Hình 2.1

1. Khởi động phần mềm lập trình CCS.
2. Tạo một dự án mới và đặt tên cho dự án.
- Soạn thảo chơng trình theo nội dung sau:
#include <16f877.h>
#include <def_877a.h>
//Khai báo th viện 16f877.h

#FUSES NOWDT, HS, NOPUT, NOLVP, NOWRT //Khai báo các bít config
#use delay(clock=12000000)
//Khai báo tần số thạch anh dùng.
19


Vi điều khiển PIC với phần mềm PCW C
void set(){
// Chơng trình con bật.
output_high(pin_d0);
}
void rset(){
//Chơng trình con tắt.
output_low(pin_d0);
}
void main(){
//Chơng trình chính
while(true){
if (input(pin_b0)==0){ //Kiểm tra Pin_B0
set();}
//Nếu = 0 thì gọi chơng trình set()
if (input(pin_b1)==0){ //Kiểm tra Pin_B1
rset();}
//Nếu = 0 thì gọi chơng trình rset()
delay_us(20);
//Chờ 20us.
}}.
// End programmer
3. Biên dịch chơng trình nguồn sang File .hex
4. Hoạt động thử.

- Tắt công tắc nguồn.
- Lắp ghép mô đun ghép nối bàn phím và mô đun hiển thị LED với main chính.
- Chuyển vi điều khiển Pic lắp sang main chính.
- Bật công tắc nguồn.
- Nhấn nút Start nối với Pin_B0.
- Nhấn nút Stop nối với Pin_B1.
- Theo dõi sự hoạt động của Led.
IV. Báo cáo thí nghiệm:

1.
2.
3.
4.
5.

Số thứ tự và tên bài.
Mục đích thí nghiệm
Chơng trình đã soạn thảo để thí nghiệm
Kết quả thí nghiệm:
Nhận xét và kết luận.

V. Câu hỏi kiểm tra

1. Giải thích hoạt động của đoạn code sau: So sánh sự hoạt động của nó với chơng trình vừa soạn thảo ở trên.
#include <16f877.h>
#include <def_877a.h>
//Khai báo th viện 16f877.h
#FUSES NOWDT, HS
//Khai báo các bít config
#use delay(clock=12000000) //Khai báo tần số thạch anh dùng.

void main(){
//Chơng trình chính
while(true){
if (input(pin_b0)==0) output_high(pin_d0);
if (input(pin_b1)==0) output_low(pin_d0);
delay_us(20);
//Chờ 20us.
}}.
// End programmer

20


Vi điều khiển PIC với phần mềm PCW C
Bài thực hành số 3

điều khiển động cơ một chiều

Bài tập ứng dụng:
Lập trình điều khiển độngc cơ hoạt động nh sau: Nhấn nút PC0, động cơ chạy
thuận, nhấn nút PC1 thì động cơ chạy ngợc, nhấn nút PC2 thì động cơ chạy
nhanh, nhấn nút PA3 thì động cơ chạy chậm, nhấn nút PA4 thì động cơ dừng.
I. Mục đích

Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cách điều khiển động cơ trên mô đun động cơ DC.
- Hiểu cách điều khiển động cơ bằng tín hiệu PWM (độ rộng xung).
- Hiểu đợc cấu trúc và cách hoạt động của lệnh SWITCH.
- Hiểu đợc cách dùng các lệnh toán học trong chơng trình.


II. Tóm tắt lí thuyết

- Sơ đồ nguyên lý. Hình 2-1.
Mô tả: Các tín hiệu điều khiển đợc cách li với mạch động lực qua các IC quang
IC1, IC2. Động cơ đợc điều khiển qua bộ Tranzitor mắc Darlington dùng nguồn
12VDC. RL1 dùng để đảo chiều động cơ đợc điều khiển bởi Q3. Khi kết nối với
Main chính thì J1 nối với PORTD sao cho PD0 qua IC1, PD1 qua IC2.
0V

IC1

J1
1
2
3
4
5
6
7
8
9
10

+12V

R2

Q1
Q2


R1

R3

RL1
D1

IC2

+88.8

Q3

R4

III. Các bớc tiến hành

Hình 2-1

5. Khởi động phần mềm lập trình CCS.
6. Tạo một dự án mới và đặt tên cho dự án dkdcdc.
- Soạn thảo chơng trình theo nội dung sau:
#include <16F877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOLVP, NOCPD, NOWRT
#use delay(clock=12000000)
unsigned char i=0,j=3,k=3;
void right();
void left();
void main(void) {

trisb = 0xff;
21


Vi ®iÒu khiÓn PIC víi phÇn mÒm PCW C
portb = 0xff;
trisd = 0x00;
while (1){
if (input(pin_b0)==0) i=1;
if (input(pin_b1)==0) i=2;
switch(i) {
case 1: right(); break;
case 2: left(); break;}
if (input(pin_b2)==0)
{ j=5;
k=1;
}
if (input(pin_b3)==0)
{j=1;
k=5;
}
if (input(pin_b4)==0){
output_high(pin_d0);
i=0;
}
}
}
void right(){
output_low(pin_d1);
output_low(pin_d0);

delay_ms(j);
output_high(pin_d0);
delay_ms(k);
}
void left(){
output_high(pin_d1);
output_low(pin_d0);
delay_ms(j);
output_high(pin_d0);
delay_ms(k);
}
7. Ho¹t ®éng thö.
- T¾t c«ng t¾c nguån.
- L¾p ghÐp m« ®un ghÐp nèi bµn phÝm vµ m« ®un ®iÒu khiÓn ®éng c¬ bíc vµo
main chÝnh.
- N¹p ch¬ng tr×nh cho chÝp.
- BËt c«ng t¾c nguån.
- Ên nót “Lefl” ®éng c¬ ch¹y thuËn
- Ên nót “Right” ®éng c¬ ch¹y ngîc
- Ên nót “Fast” ®éng c¬ ch¹y nhanh
- Ên nót “Slow” ®éng c¬ ch¹y chËm
- Ên nót “Stop” ®éng c¬ dõng
- Theo dâi sù ho¹t ®éng cña ®éng c¬.
22


Vi điều khiển PIC với phần mềm PCW C
IV. Báo cáo thí nghiệm:

6. Số thứ tự và tên bài.

7. Mục đích thí nghiệm
8. Chơng trình đã soạn thảo để thí nghiệm
9. Kết quả thí nghiệm:
10.Nhận xét và kết luận.

V. Câu hỏi kiểm tra

1. Giải thích hoạt động của chơng trình. Viết lu đồ thuật toán của chơng trình.

23


Vi điều khiển PIC với phần mềm PCW C
Bài thực hành số 4

Điều khiển động cơ bớc
Bài tập ứng dụng:
Lập trình đảo chiều quay và thay đổi tốc độ động cơ bớc.
I. Mục đích

Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cấu tạo, nguyên lí hoạt động của động cơ bớc.
- Hiểu đợc cách khai báo và sử dụng các biến, cách khai báo và cách gọi các ch ơng trình con.
- Hiểu đợc cấu trúc và cách dùng lệnh Switch.
- Hiểu đợc phơng pháp tạo xung điều khiển động cơ bớc bằng phần mềm
- Xây dựng đợc chơng trình đảo chiều quay và thay đổi tốc độ động cơ bớc.
II. Tóm tắt lí thuyết

Hiện nay trong một số hệ thống điều khiển tự động có sử dụng một loại động cơ
đặc biệt chạy bằng xung điện. Khác với động cơ thông thờng là động cơ này không

quay liên tục mà nó chỉ dịch chuyển từng bớc vì vậy còn gọi là động cơ bớc. Ưu
điểm nổi bật của nó là có thể điều khiển, khống chế để trục đông cơ bớc quay một
góc nào đó.
Sơ lợc cấu tạo:
Động cơ bớc rất có cấu tạo giống
động cơ điện một chiều nhng có điểm
khác biệt là không có cổ góp và chổi
than, rô to không có cuộn kích từ.
Thông thờng, động cơ bớc gồm một
rô to sắt mềm trên đó xẻ nhiều rãnh
tạo thành các răng. Stato cũng đợc xẻ
rãnh tạo thành các cực từ. Trên các
cực từ có quấn dây. Xem hình 4-1

Hình 4-1

Nguyên lí làm việc của động cơ bớc:
Xét một động cơ bớc 2 pha đơn giản stato có 2 cực, rô to kiểu nam châm vĩnh cửu
gồm 6 cực đặt xen kẽ lẫn nhau. Góc hợp bởi 2 cực từ kề nhau trên rô to là 60 0. Dòng
điện 2 pha đợc tạo ra bằng cách đóng mở không đồng thời các công tắc K 1 và K2
Xung dòng điện chạy trong 2 cuộn dây (2 pha) đợc minh hoạ trên hình 4-2.
Xét tại thời điểm t1, khoá K1 đóng , K2 mở; dòng điện pha A đặt giá trị cực đại còn
dòng điện pha B bằng không. Từ trờng stato là từ trờng của pha A (có phơng thẳng
đứng. Từ trờng này sẽ hút các cực trái dấu về vị trí trùng phơng với nó. Hình 4-3a

24


Vi điều khiển PIC với phần mềm PCW C
Xét tại thời điểm t2, khoá K1

mở, K2 đóng; dòng điện pha A
đặt giá trị không còn dòng điện
pha B đạt giá trị cực đại. Từ trờng stato là từ trờng của pha B
(có phơng nằm ngang). Từ trờng này sẽ hút các cực trái dấu
về vị trí trùng phơng với nó.
Hình 4-3b

ia

t
t2

t1
ib

t

Hình 4-2
+

iA =Imax

+

a

= 30

0


iA = 0

a

ib = 0
B
U-

ib = Imax

S
N
S

S

N

N
S

B

B'

N
S

N


U-

B'

N

S

N

a'

a'
K1

N

S

S

K2

K1

K2

-

Hình 4-3a


Hình 4-3b

Nhận xét:
Sau một xung điện, rô to đã quay đựơc một góc là 300. Góc này bằng một nửa góc
hợp bởi 2 cực từ trái dấu kề nhau trên rô to.
Xét ở các thời điểm trên các xung điện tiếp theo ta cũng có kết quả tơng tự.
Nếu gọi số cặp cực trên stato là a, số cực trên rô to là n thì để quay hết một vòng
rô to cần dịch chuyển k bớc. Với k = n x a (bớc) - k còn đợc gọi là độ phân giải của
động cơ bớc
Góc quay của một bớc chuyển là =
Ví dụ. Trong động cơ trên ta có:
Độ phân giải k =6 x 2 = 12.

3600
k

0
Góc quay của một bớc chuyển là: 360 =300

12

Đặc điểm của động cơ bớc:
- Sử dụng nguồn điện áp xung, tốc độ quay phụ thuộc vào tần số xung điện nên việc
thay đổi và kiểm soát tốc độ đơn giản
25


×