1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

HỌC PIC QUA VI dụ hot

44 1,1K 7
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tự Học Lập Trình C cho PIC Qua Ví Dụ
Tác giả Ch Phan Vinh Hiếu
Trường học Trường Đại Học Kỹ Thuật Công Nghiệp
Chuyên ngành Điện Tử - Tự Động Hóa
Thể loại Sách hướng dẫn tự học
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 44
Dung lượng 1,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

HỌC PIC QUA VÍ dụ hot

Trang 1

TỰ HỌC LẬP TRÌNH C CHO PIC QUA VÍ DỤ

Biên Soạn: Ch Phan Vinh Hiếu

Tập 1: Dành cho người mới bắt đầu

Trang 2

Lời nói đầu:

Trên thế giới, dòng Vi điều khiển Pic (Programmable Interlligent Controller)

đang được sử dụng ngày càng rộng rải trong mọi lãnh vực của đời sống do các tính năng vượt trội của nó so với các dòng VĐK khác Do đó, nhu cầu học tập, nghiên cứu và ứng dụng Vi Điều Khiển Pic trong giới sinh viên các trường khối kỷ thuật cũng như của các anh chị đang làm việc trong các lĩnh vực Điện-Điện Tử-Tự Động Hóa ngày càng cao Tuy nhiên, tài liệu Tiếng Việt của VĐK Pic hiện nay chưa nhiều và còn nặng tính lý thuyết, học thuật mà chưa đi sâu vào thực tế ứng dụng nên còn gây nhiều khó khăn cho người học Từ lý do đó, tôi viết cuốn”” này với mong muốn là đem tới cho độc giả một cách tiếp cận VĐK mới: dể hiểu, dể làm, ít tốn thời gian và tiết kiệm chi phí nhất nhưng vẫn đảm bảo lượng kiến thức cần thiết để các bạn có thể tự mở rông, nâng cao Trong cuốn sách này chúng ta từng bước học cách lập trình và sử dụng các modul của Pic qua các bài tập thực tế, trực quang Tài liệu chắc chắn không tránh khỏi thiếu sót, tôi mong nhận được ý kiến đóng góp chân thành của các bạn để các ấn bản sau được tốt hơn Rất cám ơn

Mọi thư từ, ý kiến, đóng góp và thắc mắc xin gởi về địa chỉ: hieuphanvinh@gmail.com

Handphone: 0983053941

Trang 3

Mục lục

Phần 1: Các bước chuẩn bị trước khi làm việc với PIC

1- Tổng quan

2- Giới thiệu và hướng dẩn cài đặt CCSC

3- Ráp mạch hoạt động của Pic

4- Ráp mạch nạp của Pic

5- Giới thiệu và sử dụng chương trình Win Pic-800

6- Kiểm tra mạch nạp và mạch test

7- Giới thiệu VĐK Pic-Pic 16f877a

8- Cấu trúc cơ bản của một chương trình C cho Pic

Phần 2: Các bài thực hành

Bài tập 1: Bặt tắt đèn Led

Bài tập 2: DK dong co buoc

Bài tập 3: Điều khiển tốc độ động cơ DC

Bài tập 4: Giao tiếp với bàn phím

Bài tập 5: Quét Led 7 đoạn

Bài tập 6: Đo - hiển thị nhiệt độ

Trang 4

Phần 1: Các bước chuẩn bị trước khi làm việc với PIC

1 Tổng quan:

Để làm việc với VĐK chúng ta cần có 3 thứ cơ bản: Trình biên dịch (Compiler), Mạch-chương trình nạp(Programmer) và Kit thực hành

- Về trình biên dịch : Chúng ta sử dụng CCSC phiên bản 4.0.11 cho phép

chúng ta dùng ngôn ngữ C để lập trình cho Pic, trình biên dịch này các bạn có thể tự tải trên mạng hoặc lấy trong đĩa CD đính kèm theo sách

- Mạch nạp(Programmer) và Kit thực hành: Tối có tặng kèm theo sách 2

PCB: 1 PCB mạch nạp loại JMD Programmer và 1 PCB kit thực hành

khá đơn giản để các bạn có thể mua linh kiện về tự ráp, trong đĩa CD tôi

có ghi danh sách linh kiện cần mua và hướng dẩn chi tiết cách lắp ráp, các bạn chịu khó nghiên cứu Ngoài ra, các bạn có thể sử dụng bất kỳ loại mạch nạp và kit test nào mà các bạn có miễn là có nguyên lý phần cứng giống như yêu cầu mà tôi mô tả ở mỗi bài tập

- Chương trình nạp: Chúng ta sử dụng chương trình Winpic 800 phiên bản

-, trong đĩa CD tôi cũng đã hướng dẩn chi tiết cách sử dụng

2 Hướng dẩn cài đặt và sử dụng CCSC:

Một trong những khó khăn với người học khi lần đầu tiếp cận với VĐK là việc lập trình bằng hợp ngữ do sự khó hiểu và phức tạp của nó Do đó tôi chọn ngữ C để giới thiệu với các bạn nhằm tạo sự dể chịu cũng như rút ngắn thời gian làm việc cho người dùng VĐK Với ưu thế về sự đơn giản, tiện lợi, C dường như là 1 giải pháp cho người học VĐK Tuy nhiên, nếu có thời gian các bạn nên tìm hiểu thêm về hợp ngử để có nền tảng vững chắc

Trang 5

Để cài thành công trình biên dịch này các bạn phải tuân thủ theo 3 bước sau:

Bước thứ 1: Cài đặt chương trình

Click vào tập tin pcwhupd để cài đặt

Click next

Chọn thư mục cài đặt Click next

Click next Để bắt đầu quá trình cài đặt

Trang 6

Sau khi hoan tat máy sẽ hiện ra thông báo đòi file đăng ký:

Nhấn cancel Rồi nhấn Finish

Bước thứ 2: Đăng ký

Sau đó bạn chép file KeyfileGen từ tập tin CCS_PCWH_4.016

vào thư mục cài đặt C:\Program Files\PICC để đăng ký sử dụng

Click vào KeyfileGen lúc đó sẽ hiện lên bảng thông báo sau:

Click vào Tab Generar licencias.org sẽ xuất hiện:

Trang 7

Bạn tìm đường dẩn đến thư mục cài đặt PICC

Sau đó click vào PICC rồi nhấn OK

Bước thứ 3: Cuối cùng là cài phần update cho chương trình

Bạn click vào tập tin ideutilsupd trong thư mục CCS_PCWH_4.016 ở đĩa CD:

Tiếp tục Click next

Trang 8

Sau khi hoàn tất bạn nhấn finish rồi khởi động lại máy

Hướng dẫn sử dụng CCSC

Sau khi khởi động lại máy, trên màn hình Desktop sẽ xuất hiện Icon:

Click vào Icon này cửa sổ làm việc chính sẽ mỡ ra Mục Help

Thanh Menu

Save

Trên thanh Menu có các mục là: File, Project, Edit, Search, Compile, View, Tools,

Debug, Document, Users Bạn nhấn vào từng mục để xem các chức năng cụ thể

Trang 9

Lưu nội dung chương trình

Lưu nội dung chương trình với 1 tên khác

*

* Mục Tool (công cụ):

COMPILE

Xác định giòng Pic đang lập trình

Xem mã asm được dịch từ file C

Nhấn vào đây (hoặc nh ắn F9) để dịch ra file hex.

Dùng để hiển thị nội dung VĐK gởi về PC qua cổng RS232.

Dùng để dịch ngược file hex về file.asm hay c

Dùng để chuyển đổi giá trị giữa các hệ đếm(deca-binary-hexa 8 16 32)

Trang 10

* Mục Edit (Chỉnh sữa):

Mục Help (hỗ trợ, hướng dẫn):

*

Nhấn vào đây (hoặc F1) để mở Help

Thư viện tập lệnh phần cứng của PIC Thư viện tập lệnh C

- Ráp mạch hoạt động của Pic

Trang 11

Vi điều khiển Pic có rất nhiều loại, nhiều dòng như: 12fxxx, 16fxxx, 18fxxx,

Bảng so sánh đặc tính giửa AT89C51 và P16F877A:

33fxxx, 32fxxx, dsPIC, rfPIC, PIC giao tiếp Usb v v…….; tùy theo nhu cầu ứng

dụng của người sử dụng mà chúng ta có sự lựa chọn cho thích hợp Trong khuôn khổ

cuốn sách này tôi chọn Pic16f877a để giới thiệu vối các bạn vì nó là con Pic thuộc họ 14

bit 40 chân đủ mạnh cho các ứng dụng ở mức độ thông thường và tương đối phổ biến ở

thị trường Việt Nam Nếu các bạn nắm vửng cấu trúc và cách lập của Pic16f877a các

bạn có thể dể dàng tiếp cận với các họ Pic khác vì chúng có chung các cấu trúc và tập lệnh căn bản

AT89C51

Trang 12

Số Port xuất nhập 4 Port(0,1,2,3), 32 I/O 5 Port (A, B, C, D, E), 33 I/O

Modul điều biến xung (CCP )

Độ phân giải: 10 bit

Modul biến đổi tương tự - số (ADC) Khơng cĩ 1

Độ phân giải: 10 bit, 8 kênh

Modul so sánh tuơng tư

(Compartor)ï

Modul giám sát hoạt động(WDT) Khơng cĩ 1

Cổng song song (Parallel) Khơng cĩ 1

Chuẩn giao tiếp SPI

Chuẩn giao tiếp I2C

Chế độ tiết kiệm năng lượng (Sleep

Mode)

Nạp trương trình theo chuẩn nối

Cống suất họat động tối đa của các cổng I/O:

Dịng ngõ ra cực đại khi ngõ ra ở trạng thái điện áp cao là 20 mA

Dịng ngõ ra cực đại khi ngõ ra ở trạng thái điện áp thấp là 25 mA

Dịng điện của ngõ ra đủ lớn để kích đèn Led trực tiếp mà khơng cần qua Buffer

Trang 13

Điện áp làm việc:

Điện áp làm việc tối đa là 5.5V

Điện áp làm việc tối thiểu là 4.5V

Mạch Reset:

Pic sẽ bị reset nếu đưa chân số 1(MCLR) xuống GND

Nguyên lý mạch reset: khi mở nguồn tụ C18 sẽ nối chân 1 xuống Mass – Reset VĐK Khi điện áp đã ổn định điện trở R24 sẽ nối chân 1 lên cao thế 5V- đưa VĐK về trạng thái hoạt động Nút nhấn sẽ Reset mạch một cách bắt buộc Diod d1 dùng để xã dòng điệntừ

tụ c18 về nguồn mà không phải qua điện trở r24 khi tắt điện nguồn làm mạch reset ngay sau khi ta tắt điện

Thạch anh dao động:

VĐK Pic hoạt động ở 4 chế độ dao động :

RC: Chế độ tạo dao động bằng điện trở R- tụ điện C

LP: Chế độ tạo dao động bằng thạch anh công suất thấp, tần số giao đông từ:

Trang 14

Khi lập trình các bạn phải khai báo chế độ dao động tương ứng với giá trị thạch anh mà các bạn sử dụng một cách chính xác nếu không chương trình sẽ không chạy Tụ lọc nhiễu xung thạch anh nằm trong khoảng từ 15-33pF

Phần thứ 1(Không bắt buộc): Phần chú thích Bất cứ một chương trình nào, cũng được

bắt đầu bằng việc giới thiệu về chương trình, tên chương trình, người thực hiện chương trình, lưu ý phần cứng, v v Nội dung của phần này phải nằm sau dấu //

//================================================= =======

// Ten chuong trinh : Chuong trình chop tat den led

// Nguoi thuc hien : X X X

// Ngay thuc hien : 19/06/2008

Trang 15

Phần thứ hai(Bắt buộc): Phần khởi tạo PIC Phần này là phần bắt buộc theo sau phần

ghi chú, bởi vì chương trình dịch cần phải hiểu bạn đang làm việc với con PIC nào, làm việc với nó như thế nào và thiết lập phần cứng cho nó ra sao

#include<16f877A.h>

#fuses HS,NOLVP,NOWDT,NOPUT, NOPROTECT

#use delay (clock=20000000)

• Từ khóa #fuses dùng để thiết lập cấu hình hoạt động cho Pic :

1 Khai tốc độ thạch anh: HS, XT, LP hay RC

2 Có sự dụng bộ giám sát hoạt động WDT hay không

3 Có bảo vệ code hay không

4 Timer 0 có sử dụng khi mở nguồng lên hay không

Phần còn lại là chương trình chính (Bắt buộc):

void main()

{

//Nội dung chương trình chính được viết tại đây

}

• Lưu ý: Trình biên dịch không dịch những nội dung nằm sau dấu // vì những nội

dung đó được hiểu là chú thích

Đến đây các bạn đã có đầy đủ những phương tiện và kiến thức cơ bản để bắt tay vào

phần thứ 2: làm các bài thực hành

Trang 16

Phần 2: Các bài thực hành

Bài 1: Xuất Giá Trị

I _ Lý thuyết:

Pic 16f877a có 5 Port I/O bao gồm:

• Port A(RA0- RA5): có 6 I/O

• Port B(RB0- RB7): có 8 I/O

• Port C(RC0- RC7): có 8 I/O

• Port D(RD0- RD7): có 8 I/O

• Port E(RE0- RE2): có 3 I/O

Khác với AT89C51 hoạt động xuất nhập của từng Port được thực hiện chỉ bởi 1 thanh ghi là thanh ghi Port(P0, P1, P2, P3) thì Pic sử dụng 2 thanh ghi là thanh ghi Port(PortA,PortB,PortC…) và thanh ghi Tris (TrisA, TrisB, TrisC… )

Thanh ghi Tris được dùng để quy định từng chân riêng rẽ của Port hay cả Port là xuất hay nhập Sau đó dữ liệu sẽ được xuất hay được nhập thông qua việc ghi vào hay đọc ra từ thanh ghi Port

Ví dụ: Khi ta ghi vào thanh ghi Tris B giá trị 00001111 thì nghĩa làcác chân từ RB0-RB3

là nhập còn từ RB4-RB7 là xuất

Hệ đếm trong C:

Số nhị phân được viết dưới dạng: 0Bxxxxxxxx Ví dụ: 0b11111111

Số Hexa được viết dưới dạng: 0Xxx Ví dụ: 0XFF

Số Deca được viết dưới dạng: xxx Ví dụ: 255

Trang 17

II _ Thực hành:

Bài 1 A:

Bây giờ chúng ta bắt đầu bài thực hành đầu tiên: Sử dụng Port B để bật tắt đèn Led:

Bước thứ 1: Viết chương trình

Bạn mở chương trình CCSC, vào File ->New -> Source file

Bạn đặt tên và lưu project vào 1 thư mục nào đó do bạn chỉ định.Ví dụ: baitap1.c

Sau đó bạn đánh đoạn mã sau vào

//================================================= ======= // Ten chuong trinh : Chuong trình xuat gia tri thay doi trang thai Port B

// Nguoi thuc hien : Phan Vinh Hieu

// Ngay thuc hien : 19/08/2008

// Phien ban : 1.0

// Mo ta –Chu thich : Dung PIC16F877A - thach anh 20MHz

//Port B được quy định là Port xuat va noi voi 8 led de kiem tra trang thai

Set_tris_B (0B 00000000);//Quy định trạng thái xuất nhập của Port

Lưu ý: Kết thúc lệnh phải có dấu ;

Output_B(0B 11111111);//Xuất giá trị ra Port B

}

Bây giờ, chúng ta cùng tìm hiểu ý nghĩa của từng giòng lệnh:

Tại phần khai bao phần cứng: #fuses HS,NOWDT,PUT

Trang 18

- Khai báo HS: Sử dụng thạch anh tốc độ cao(20MHz)

- Khai báo NOWDT:Không sử dụng bộ định thời giám sát

- Khai báo PUT: Không sử dụng Timer0

Trong thân chương trình chính:

- Lệnh Set_Tris_B(0B 00000000) sẽ đưa giá trị 0B 00000000 vào thanh ghi TRIS_B nhằm quy định toàn bộ Port B là xuất

- Lệnh Output_B(0B 11111111) sẽ đưa giá trị 0B 11111111 vào thanh ghi

PortB đưa trạng thái ngõ ra của tất cả các chân của Port B lên cao (*Lưu ý : Tham khảo Help của CCSC phần Build in function để nắm rõ hơn về các tập lệnh.)

Sau khi hoàn tất, các bạn ấn nút save để lưu chương trình lại rồi nhấn Compile

(hoặc F9) để dịch ra tập tin Hex Lúc đó chương trình sẽ hiện ra bản thông báo sau :

Tên – đường dẩn của project được dịch

Thông báo xem có lỗi hay

không

Thông báo dung lượng Ram - Rom đã sài hết

Bước 2: Tiếp theo ta nạp chương trình cho Pic bằng phần mếm Win Pic 800

- Đầu tiên bạn mở tập tin WinPic800-356d-All nằm trong đĩa CD

- Click chuột phãi vào Icon

-Tạo một shortcut rồi chép ra desktop

Trang 19

Click vào Shortcut này để mở chương trình nạp

Kiểm tra kết nối giữa kit nạp với máy tính

Đầu tiên bạn cần khai báo và thiết lập phần cứng cho mạch nạp: Vào Setting ->

Tại mục Selection Hardware bạn chọn loại kit nạp JMD Programmer Sau đó xác dịnh

địa chỉ cổng Com của máy rồi nhấn Apply edits để thoát

Sau khi set up xong, bạn cắm IC vào mạch nạp(Lưu ý: Chỉ cắm IC vào sau khi set up

phần cứng xong.).Bạn nhấn vào biểu tượng:

Tải file Hex cần nạp

Tiếp theo nhấn:

Trang 20

Để nạp

Sau khi nạp bạn rút IC ra khỏi mạch và cắm IC vào mạch test

Bước 3: Cấm Buss nối giữa Port B với modul 8 đèn Led theo sơ đồ sau:

33 35 37 39

15 17 23 25

19 21 27 29

8 10

RB0/INT RB1 RB3 RB5 RB6/PGC

RC0/T1OSI/T1CLK RC1/CCP2/T1OSO RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD2/PSP2 RD4/PSP4 RD6/PSP6 RE0/AN5/RD RE1/AN6/WR RE2/AN6/CS OSC2/CLKOUT

1 3 5 7

output_bit( PIN_B0, 0); Lệnh này điều khiểng trạng thái 1 chân của Port,

output_high(PIN_A0); Lệnh này điều khiểng trạng thái 1 chân của Port

Trang 22

- Lệnh SET_TRIS_B(0B 11111111) sẽ đưa giá trị 0B

11111111 vào thanh ghi TRIS_B nhằm quy định toàn bộ Port B là nhập

- Lệnh SET_TRIS_D(0B 00000000) sẽ đưa giá trị 0B

00000000 vào thanh ghi TRIS_D nhằm quy định toàn bộ Port D là xuất

-

- Input_B() sẽ đọc trạng thái các chân của PortB

- Output_D(Input_B()); sẽ xuất các trạng thái đó ra các led của Port D

R8 1K

33 35 37 39

15 17 23 25

19 21 27 29

8 10

RB0/INT RB1 RB3 RB5 RB6/PGC

RC0/T1OSI/T1CLK RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK

RD0/PSP0 RD2/PSP2 RD4/PSP4 RD6/PSP6

RE0/AN5/RD RE1/AN6/WR RE2/AN6/CS

OSC2/CLKOUT

B4

5V

R8 1K

R6

330

R8 1K

1 3 5 7

LED1 LED2

33pF

R8 1K

JUMPER 8

2 4 6 8

1 3 5 7

LED7

Trang 23

Bài 2: SỬ DỤNG HÀM DELAY VÀ LỆNH GOTO

I _ Lý thuyết:

a-hàm delay:

Khi lập trình bằng hợp ngử để điều khiển đèn Led chớp tắt ta phải viết 1 chương trình con có tên là Delay với mục đích là làm chậm hoạt động của VĐK đi 1 khoảng thời gian bằng cách tuần tự giảm giá trị của các thanh ghi Đối với C ta không còn phải làm công việc này nữa vì C hộ trợ cho ta 3 hàm Delay như sau:

- delay_cycles (time):Làm chậm chương trình đi (time) lần chu kỳ máy, giá trị của (time) thay đổi trong khoảng từ 0-255

- delay_ms (time): Làm chậm chương trình đi (time) mili giây, giá trị của (time) thay đổi trong khoảng từ 0- 65535

- delay_us (time): Làm chậm chương trình đi (time) micro giây, giá trị của (time) thay đổi trong khoảng từ 0- 65535

Vi dụ: Nếu bạn muốn chương trình chạy chậm đi 1 giây bạn sử dụng hàm Delay như sau:

delay_ms (1000);//1 giây bằng 1000 mili giây

a-Lệnh Goto:

Khi các bạn muốn chương trình của các bạn rẻ nhánh đến 1 vị trí, 1 đoạn chương tri2ng khác thỉ các bạn dùng lệnh nhảy, trong 89c51 ta dùng lệnh LJMP NHAN Còn trong PIC ta dùng lệnh GOTO NHAN

Trang 24

#use delay(clock=20000000) // defind crystal = 20MHz main()

{ SET_TRIS_B (0b00000000);

Trang 26

Bài 3: KHAI BÁO VÀ SỬ DỤNG CÁC BIẾN (VARIABLE)

biến có kiểu Interger 1 bit chứa các số 0-1

biến có kiểu Interger 8 bit chứa các số nguyên nằm trong khoảng từ 0-255

biến có kiểu Interger 16 bit chứa các số nguyên nằm trong khoảng từ 0-65535 biến có kiểu Interger 32 bit chứa các số nguyên nằm trong khoảng từ 0-

Ngày đăng: 27/03/2014, 23:59

HÌNH ẢNH LIÊN QUAN

Bảng so sánh đặc tính giửa AT89C51 và P16F877A: - HỌC PIC QUA VI dụ hot
Bảng so sánh đặc tính giửa AT89C51 và P16F877A: (Trang 11)
Bảng tóm tắt: - HỌC PIC QUA VI dụ hot
Bảng t óm tắt: (Trang 36)
Bảng mả led 7 đoạn : - HỌC PIC QUA VI dụ hot
Bảng m ả led 7 đoạn : (Trang 37)

TỪ KHÓA LIÊN QUAN

w