Lập trình cho Pic các chân I/O Time...
Trang 1MỤC LỤC
PHẦN I: MÔ TẢ THIẾT BỊ -2
I GIỚI THIỆU HỆ THỐNG -2
II MÔ TẢ CÁC THÀNH PHẦN CỦA HỆ THỐNG -4
DIP SWITCH (DIPSW) -4
JUMPERs -4
MCU SOCKETs -6
POWER SUPPLY -8
ON-BOARD PROGRAMMER -9
REAL TIME CLOCK (RTC) DS1307 -10
RS-232 COMMUNICATION -11
USB COMMUNICATION -12
PS/2 COMMUNICATION -13
DS1820 DIGITAL THERMOMETER -14
A-D CONVERTER INPUT -15
DIRECT PORT ACCESS -16
PHẦN II: THỰC HÀNH -17
BÀI THỰC HÀNH SỐ 1: SỬ DỤNG PHẦN MỀM WINPIC800 TRUY CẬP CỔNG VÀO RA SỐ VÀ ĐIỀU KHIỂN LED 7 DOẠN -17
I MỤC ĐÍCH -17
II CHUẨN BỊ -17
III THỰC HÀNH -17
BÀI THỰC HÀNH SỐ 2: BIẾN ĐỔI ADC, ĐO ĐIỆN ÁP, NHIỆT ĐỘ HIỂN THỊ TRÊN LED VÀ TRUYỀN THÔNG QUA RS232 -25
I MỤC ĐÍCH -25
II CHUẨN BỊ -25
III THỰC HÀNH -25
BÀI THỰC HÀNH SỐ 3: ĐỌC PHÍM BẤM, ĐIỀU KHIỂN RELAY VÀ ĐỌC THỜI GIAN THỰC DS1307 HIỂN THỊ TRÊN LEB 7 ĐOẠN -29
I MỤC ĐÍCH -29
II CHUẨN BỊ -29
III THỰC HÀNH -29
PHỤ LỤC: MỘT SỐ MÃ NGUỒN MẪU -32
Trang 2PHẦN I: MÔ TẢ THIẾT BỊ
I GIỚI THIỆU HỆ THỐNG
HẾ THỐNG ĐÀO TẠO PIC (PIC.TS) là board mạch đầy đủ các công cụ choviệc học tập và nghiên cứu vi điều khiển PIC của Microchip Sinh viên dễ dàng thựchành, kiểm tra và đánh giá khả năng của vi điều khiển PIC PIC.TS cho phép PICgiao tiếp với một số lượng lớn các thiết bị ngoại vi và mạch ngoài Với PIC.TS, sinhviên không còn lo lắng về phần cứng mà chỉ cần tập trung vào việc phát triển phầnmềm Trên PIC.TS, mỗi thành phần được in thẳng trên board mạch rất rõ ràng đánhdấu sự mô tả kết nối đến các thiết bị cùng một vài ghi chú hữu ích
Hình 1.1 - PIC.TS
Trang 3Hình 1.2 - Sơ đồ nguyên lí PIC.TS
Trang 4II MÔ TẢ CÁC THÀNH PHẦN CỦA HỆ THỐNG
1 DIP SWITCH (DIPSW)
PIC.TS có đặc tính là kết nối với nhiều thiết vị ngoại vi Để kết nối những thiết
bị này trước khi lập trình, cần phải kiểm tra và thiết đặt của các jumper và DIPSW.DIPSW là linh kiện tập hợp nhiều switch có 2 vị trí ON và OFF dùng để nốihoặc ngắt giữa 2 chân với nhau PIC.TS có 2 DIPSW
DIPSW1 cho phép kết nối giữa các port của PIC (PORTA và PORTE) với điệntrở pull-up/down bên ngoài Các điện trở pull-up/down phải được tách rời ra khi cácchân của các port này dùng làm ngõ vào Analog vì làm ảnh hưởng đến mức điện ápđầu vào Khi các chân của PORTA và PORTE sử dụng như digital inputs/outputs thìnhững điện trở pull-up/down lại thích hợp và được cho phép
Sáu switches đầu của DIPSW2 cho phép kết nối tới PortA để điều khiển 6 LED
7 đoạn (7-Segment display) Nếu không cần 7-seg Display trong bài tập thì các SWnày cần phải OFF
Hai switches đầu của SW2 cho phép kết nối DS1307 đến chân RC4 và RC3 củaPIC Khi không có nhu cầu sử dụng DS1307 thì nên đưa các SW này về vị trí OFF
Hình 1.3 - Dip switch
Trang 52 JUMPERs
Jumpers cũng giống như switches, có thể ngắt hoặc nối hai điểm với nhau Bêntrong vỏ bọc nhựa của jumper là một lá kim loại dùng để tiếp xúc Nó sẽ nối (dẫnđiện) nếu jumper này được gắn vào hai pin đang bị ngắt
Ví dụ: Hai biến trở trong mạch ADC được ngắt rời với RA2 và RA3 Để nốichúng với nhau cần sử dụng jumper
Hình 1.4 - Jumper như một Switch
Các jumper cũng thường được sử dụng để lựa chọn giữa hai kết nối Như minhhọa trong hình dưới, điểm giữa được nối với bên phải hoặc bên trái tuỳ thuộc vào vịtrí của jumper
Hình 1.5 – Lựa chọn kết nối với jumper
Trang 62 MCU SOCKETs
PIC.TS được thiết kế sử dụng cho các loại vi điều khiển PIC 16F và 18F Người
sử dụng có thể dùng các PIC khác nhau thích hợp cho công việc của mình có cáckiểu chân phù hợp với socket DIP40, DIP28, DIP18
Hình 1.6 - MCU socket Chú ý: Tất cả các sockets trên được nối song song với nhau, vì vậy trong cùng
một thời điểm bạn chỉ có thể sử dụng được một vi điều khiển PIC mà thôi
Chân MCU được sử dụng để nối đến nhiêu thiết bị ngoại vi như được minh hoạ
trong Hình 1.8 Do đó tất cả các port đều kết nối trực tiếp đến những đầu nối 5x2.
Những đầu nối như vậy cho phép mở rộng kết nối đến các thiết bị ngoại vi bênngoài hoặc hữu ích cho việc kết nối với các đầu dò digital logic
Tất cả các ports đều được nối đến điện trở pull-ip/down và được đánh số ghichú rất chi tiết để dễ dàng cho việc kiểm tra và đo thử
Một vài chân được kết nối tới các thiết bị ngoại vi khác như DS1820temperature sensor, RS-232 communication, 7-segment displays, LCD
Trang 7Hình 1.8 - Sự kết nối hệ thống
PIC.TS có một nút bấm sử dụng cho mục đích RESET, sơ đồ mạch RESET được nhìn thấy trong hình dưới
Hình 1.9 – Sơ đồ mạch reset
Trang 8Hình 1.10 – Lựa chọn nguồn cung cấp
Power supply swiches Power supply connector
Trang 94 ON-BOARD PROGRAMMER
Không cần sử dụng bất kỳ mạch nạp nào khác, PIC.TS có riêng một mạch nạpon-board rất tiện lợi và dễ sử dụng Bạn chỉ cần cắm cáp kết nối đến PC qua cổngLPT
Hình 1.11 –Mạch nạp
Đây là mạch nạp giao tiếp qua cổng máy in sử dụng phần mềm WinPIC800 có
độ ổn định cao, tốc độ nhanh, hỗ trợ rất nhiều PIC
Trang 105 REAL TIME CLOCK (RTC) DS1307
PIC.TS sử dụng đồng hồ thời gian thực DS1307 giao tiếp chuẩn I2C với vi điềukhiển PIC Hai chân SCL và SDA nối với RC3 và RC4 qua SW2 Pin CMOS dùngnuôi DS1307 khi ngắt nguồn
Hình 1.12 – Sơ đồ kết nối DS1307
Trang 11RS-232 communiction
6 RS-232 COMMUNICATION
Truyền thông RS-232 cho phép truyền dữ liệu điểm tới điểm RS232 thườngđược dùng trong các ứng dụng giao tiếp truyền thông giữa giữa vi điều khiển vàmáy tính Mức điện áp giữa vi điều
khiển và máy tính không thích hợp nhau
Do vậy bộ đệm Max-232 được sử dụng
Để sử dụng linh hoạt hơn, trên PIC.TS vi
điều khiển được nối tới Max232 qua cặp
jumper JP_TX và JP_TD Jumper
JP_RX được sử dụng để nối tới đường
Rx tới RC7, RB2 hoặc RB1 Jumper
JP_TX được sử dụng để nối tới đường
Trang 127 USB COMMUNICATION
PIC.TS có một cổng USB Nó được
sử dụng cho những loại vi điều khiển PIC
đặc biệt c
ó hỗ trợ giao tiếo USB như 18F2450,
18F2550, 18F4550… ngoài khả năng giao
tiếp USB nó còn là bộ phận cấp nguồn 5V
cho chế độ chạy thử (không sử dụng được
nguồn USB ở chế độ nạp)
Để kết nối giữa vi điều khiển và
socket USB cần phải nối cả 3 jumpers
JP17, JP18 và JP19 lên phía trên Kết quả
là vi điều khiển có RC3, RC4 và RC5
được tách ra khỏi các phần tử khác trên
board và nối với socket USB
Hình 1.14 – Sơ đồ kết nối truyền thông USB
USB communication connector
Trang 138 PS/2 COMMUNICATION
Đầu nối PS/2 cho phép kết nối trực tiếp giữa PIC.TS với những thiết bị có sửdụng giao tiếp PS/2 như PC, bàn phím hoặc chuột Ví dụ: vi điều khiển được nối vớibàn phím để đọc những phím được nhấn hoặc kết nối với PC để hoạt động như mộtbàn phím Đường DATA cà CLK được sử dụng cho việc truyền dữ liệu Trongtrường hợp này chúng được nối tới những pin tương ứng RC1 và RC0 của vi điềukhiển
Hình 1.15 – Sơ đồ kết nối PS/2 với vi điều khiển
Trang 149 DS1820 DIGITAL THERMOMETER
DS1820 là IC cảm biến nhiệt độ dạng số rất tốt cho việc đo nhiệt độ môi trườngvới dải nhiệt độ đo rộng -55OC đến 125OC với độ chính xác +/- 0.5OC Nó phải đượcđặt chính xác trong socket 3 chân và đúng chiều với hình vẽ in trên PIC.TS Nếukhông DS1820 có thể bị hỏng Chân data của DS1820 có thể nối tới pin RA5 hoặcRE2 của vi điều khiển PIC bởi jumper JP14
Hình 1.16 – Sơ đồ kết nối DS18b20 với vi điều khiển
Trang 1510 A-D CONVERTER INPUT
Board phát triển Kit phát triển Vi điều khiển PIC có 2 biến trở để làm việc vớiAnalog to Digital converter – ADC Biến trở P1 thì hoạt động khi Jumper JP 15được chọn gắn vào cho tín hiệu analog đến chân RA2 của Microcontroller Biến trởP2 thì hoạt động khi jumper JP16 được chọn gắn vào cho tín hiệu analog đến chânRA3 của microcontroller Cả 2 đầu ra analog của biến trở trong phạm vi 0V đến 5V
Hình 1.17 - ADC Converter input
Để đo tín hiệu tương tự các jumper pull-up/down của PORTA cần phải đượcloại bỏ Các chân của PORTA không kết nối tới bất cứ các thành phần thiết bị nàokhác
Ứng dụng chuyển đổi tương tự - số khác nhau, vi điều khiển nhận tín hiệutương tự từ chân đầu vào và chuyển nó thành tín hiệu số Về cơ bản, bạn có thể đobất kỳ tín hiệu tương tự nào trong phạm vi 0 ÷ 5V
Hình 1.18 – Sơ đồ kết nối khi đo ADC
Trang 1611 DIRECT PORT ACCESS
Tất cả các pin vào/ra của microcontroller có thể được truy cập trực tiếp qua cácđầu nối đặt bên mép phải của PIC.TS cho mỗi PORTA, PORTB, PORTC, PORTD
và PORTE Đây là socket 10-pin (5x2) cung cấp VDD, GND và 8 pin port kết nốivới bên ngoài bằng cáp kết nối
Những đầu nối này sử dụng cho việc mở rộng hệ thống với những board mởrộng hệ thống bên ngoài và cần bảo đảm những thiết bị ngoại vi trên board phảiđược tách ra bằng việc đặt các jumper thích hợp khi thiết bị ngoại vi bên ngoài cũngdùng chân đó
Những đầu nối cũng có thể sử dụng để gắn đầu dò logic hoặc các thiết bị đo thử khác
Hình 1.19 - Sơ đồ kết nối PORTB
Trang 17PHẦN II: THỰC HÀNHBài thực hành số 1
SỬ DỤNG PHẦN MỀM WINPIC800 TRUY CẬP CỔNG VÀO RA SỐ VÀ ĐIỀU KHIỂN LED 7 DOẠN
I MỤC ĐÍCH
- Làm quen với phần mềm WinPIC800, biết cách sử dụng phần mềm và mạchnạp có sẵn trên PIC.TS để nạp chương trình cho PIC
các số từ 0 ÷ 9 trên leb 7 thanh
II CHUẨN BỊ
- Máy tính có cài chương trình WinPIC800, trình dịch CCS, HT-PIC
- PIC.TS và các module, vi điều khiển PIC16F877A, đồng hồ đo, cáp nguồn, cápkết nối
- Lý thuyết về lập trình C, lập trình C cho PIC trên CCS, HT-PIC…
- Giải mã và hiển thị với led 7 thanh
III THỰC HÀNH
1 Nạp chương trình cho PIC bằng phần mềm WinPIC
Trên PIC.TS được thiết kế sẵn một mạch nạp do đó sẽ không cần bất kỳ mạchnạp nào từ bên ngoài Mặt khác với mạch nạp sẵn có này bạn không cần phải tháochip nhiều lần tránh các phiền phức và hư hỏng vật lý
Phần mền WinPIC800 đi cùng không cần cài đặt có thể sử dụng ngay rất tiệnlợi Nhấn dúp vào biểu tượng WinPIC800 trên desktop hoặc file WinPIC800.exetrong thư mục WinPIC800 Cửa sổ chương trình WinPIC800 hiện lên:
Hình 2.1 – Giao diện WinPIC800
Trang 18Nhấn vào menu Settings ->Hardware để chọn cấu hình sử dụng WinPIC800cho PIC.TS như sau:
Hình 2.2 – Cầu hình cho WinPIC800 Lưu ý:
- Nếu không hiện lên bảng như hình trên thì nhấp chuột vào ô tròn số 1
- Nhấp vào ô tròn số 2 để bật các chức năng chọn cấu hình
Hình 2.3 – Cấu hình WinPIC800 để sử dụng cho PIC.TS
Trang 19Nhấn vào nút Apply edits để xác nhận cài đặt.
Kết nối với PIC.TS:
- Chuyển chuyển mạch nguồn sang chế độ nguồn từ kit (lên trên)
- Bật Công tắc nguồn – Đèn Power sáng
- Nối cable programmer vào cổng LPTx của PC và bo mạch
Kiểm tra kết nối:
Sau khi kết nối phần cứng, chạy phần mềm WinPIC800 Nhấn vào Icon Detectdevice (trong vòng tròn hình dưới) màn hình hiện lên như hình sau:
Hình 2.4 – Quá trình kiểm tra kết nối và loại pic sử dụng
Nhấn chọn ô “Close this window….” Để lần sau bảng detect tự động Nhấn nútaccept để đóng cửa sổ
Lưu ý: Khi nhân nút detect device WinPIC800 sẽ tự động chọn device mà nódetect được Điều này này giúp bạn khỏi tốn công chọn device
Kích vào menu chọn File -> Open sau đó chọn đường dẫn dến file hex
Ví dụ: D:\PIC\port test.hex chọn OK
Sau đó vào menu chọn thực đơn Device -> Program All
Kết quả: Chíp sẽ được nạp chương trình điều khiển.
Trang 20Hình 2.5 – Đang nạp chương trình cho vi điều khiển Chú ý: Sau khi nạp chương trình thành công phải tháo cáp nạp để tránh gây ảnh hưởng tới hoạt động của hệ thống.
Trang 21Nguyên lý hoạt động:
Các đèn led trên PIC.TS01 sẽ được nối trực tiếp chân anot đến cổng của vi điềukhiển PIC trên PIC.TS đồng thời nối tiếp một điện trở 100ohm rồi đưa xuống đất.Các cổng của PIC có thể cấp dòng trực tiếp cho led mà không cần đệm hay khuếchđại Mỗi cổng vào ra số được nối với một đèn led Khi một cổng được xuất giá trị là
“1” thì led sáng ngược lại nếu xuất giá trị “0” led tắt Chú ý: ở đây giả định là PICđang được cấu hình là một cổng ra số
Các bước tiến hành:
- Nối các cổng PA, PB, PC, PD và PE của PIC.TS tương ứng với các JP1,JP2, JP3, JP4 và JP5 của module PIC.TS01
- Viết chương trình điều kiển các đèn led tắt sáng theo yêu cầu
- Biên dịch và nạp chương trình lên vi điều khiển PIC
- Sửa lại chương trình để có được chu chình led sáng theo ý muốn
Có thể chạy thử chương trình mẫu: PORT_TEST.C có sẵn ở thư mục /sample/PORT_TEST/ để tham khảo hoặc kiểm tra các module có chạy tốt hay không trướckhi viết một chương trình cho riêng mình
3 Điều khiển led 7 đoạn
Nhiệm vụ: Tìm hiểu led 7 đoạn, PIC16F877A trong điều khiển và giải mã hiển
thị các số Viết được chương trình giải mã hiển thị các số theo yêu cầu trên led 7đoạn
R22 R24 R26 R28
B0B1B2B3
2
c 4
DP 5
2
c 4
DP 5
JP
VCC
Hình 2.7 – Sơ đồ nguyên lý PIC.TS03
Trang 22Nguyên lý hoạt động:
Trong PIC.TS03 sử dụng các led catot chung Anot của mỗi thanh led của led 7đoạn được nối đến cổng vi điều khiển PIC thông qua điện trở 100ohm nhằm hạndòng Catot của mỗi led 7 đoạn được nôi xuống đất Khi cổng đó xuất giá trị là “1”thì thành led sáng và ngược lại xuất “0” thì tắt Chữ số bên phải nối với cổng PC,chữ số bên trái nối với cổng PD Các thanh a, b, c, d, e, f, g của mỗi chữ số tươngứng nối với các bit b0, b1, b2, b3, b4, b5, b6 của mỗi cổng
Các bước tiến hành:
- Nối các PORT PC và PD PIC.TS tương ứng với JP3 và JP4 trên modulePIC.TS03
- Viết chương trình điều kiển led 7 đoạn để hiển thị chữ số theo yêu cầu
- Biên dịch và nạp chương trình cho vi điều khiển PIC
- Sửa lại chương trình để có được sự hiển thị theo yêu cầu
Có thể chạy thử chương trình mẫu: 7SegCount00To99.c có sẵn ỏ thư mục
…/sample/7SEGS_LED/ để tham khảo hoặc kiểm tra module có chạy tốt hay khôngtrước khi viết một chương trình theo ý muốn
4 Điều khiển đèn giao thông
Nhiệm vụ: Tìm hiểu PIC16F877A trong việc vào ra số và giải mã điều khiển
led 7 đoạn Viết chương trình điều khiển đèn giao thông
R22 R24 R26 R28
B0B1B2B3
2
c 4
DP 5
2
c 4
DP 5
JP
VCC
Hình 2.8 – Sơ đồ nguyên lý PIC.TS03
Trang 23Nguyên lý hoạt động:
Trong PIC.TS03 sử dụng các led catot chung Anot của mỗi thanh led của led 7đoạn được nối đến cổng vi điều khiển PIC thông qua điện trở 100ohm nhằm hạndòng Catot của mỗi led 7 đoạn được nôi xuống đất Khi cổng đó xuất giá trị là “1”thì thành led sáng và ngược lại xuất “0” thì tắt Chữ số bên phải nối với cổng PC,chữ số bên trái nối với cổng PD Các thanh a, b, c, d, e, f, g của mỗi chữ số tươngứng nối với các bit b0, b1, b2, b3, b4, b5, b6 của mỗi cổng
Các đèn led xanh, đỏ và vàng cũng được nối đến các cổng của vi điều khiểnPIC thông qua trở 100ohm Khi vi điều khiển xuất giá trị “1” ra cổng đó thì đèntương ứng sáng ngược lại nếu xuất giá trị “0” đèn sẽ tắt Các đèn led và led 7 đoạnđược nối với vi điều khiển PIC theo như bảng sau:
- Biên dịch và nạp chương trình lên vi điều khiển PIC
Trang 24- Sửa lại chương trình để có được thời gian lưu thông các luồng theo theo yêucầu.
Có thể thử chương trình mẫu: TRAFFIC_LIGHT.c có sẵn ỏ thư mục
…/sample/TRAFFIC_LIGHT/ để tham khảo hoặc kiểm tra module có chạy tốt haykhông trước khi viết một chương trình theo yêu cầu
Mở rộng, nếu có thể hãy viết chương trình dùng các phím F để thay đổi thờigian lưu thông của các luồng
Trang 25Bài thực hành số 2 BIẾN ĐỔI ADC, ĐO ĐIỆN ÁP, NHIỆT ĐỘ HIỂN THỊ TRÊN LED VÀ TRUYỀN THÔNG QUA RS232
I MỤC ĐÍCH
Làm quen với bộ biến đổi tương tự số ADC có sẵn trên vi điều khiểnPIC16F877A Tìm hiểu chuẩn 1 dây và truyền thông không đồng bộ UART Viếtchương trình biến đổi ADC, đo điện áp, giao tiếp vơi cảm biến nhiệt độ DS18B20
II CHUẨN BỊ
- Máy tính có cài chương trình WinPIC800, trình dịch CCS, HT-PIC
- PIC.TS và các module, vi điều khiển PIC16F877A, đồng hồ đo, cáp nguồn,cáp kết nối
- Lý thuyết về lập trình C, lập trình C cho PIC trên CCS, HT-PIC…
- Lý thuyết về chuẩn 1 dây, truyền thông không đồng bộ UART
III THỰC HÀNH
1 Biến đồi ADC và hiển thị trên led
Nhiệm vụ: Tìm hiểu và sử dụng bộ biến đổi ADC của vi điều khiển
Cách tiến hành:
- Kiểm tra jumper JP_ADC2 ở trạng thái kết nối, để nối đầu ra biến trở vớiđầu vào ADC của PIC VR2 và JP_ADC2 nối đến ngõ vào AN3
- Công tắc DIP_SW1.3, DIP_SW1.4 ở trạng thái OFF để ngắt đầu vào ADC
ra khỏi điện trở treo khi làm việc với điện áp tương tự (điện trở treo dùngkhi làm việc ở chế độ vào ra tín hiệu số)
Trang 26- Nối port PC (PD) của kit chính PIC.TS với các port JP3 (JP4) của modulePIC.TS03
- Viết chương trình đọc giá trị từ bộ chuyển đổi ADC và xuất ra cổng C (D)
- Biên dịch và nạp chương trình lên vi điều khiển PIC
- Sau khi nạp thành công, khi chương trình đang chạy, vặn biến trở từ minđến max sẽ thấy giá trị của điện áp được chuyển đổi thành tín hiệu số hiểnthị trên các led nối với PC (PD) thay đổi theo mỗi vị trí của chiết áp
Có thể thử chương trình mẫu: ADC Single_LED.c có sẵn ỏ thư mục …/sample/
ADC2PORTC/ để tham khảo hoặc kiểm tra module có chạy tốt hay không trước khiviết một chương trình theo yêu cầu
2 Đo điện áp và truyền thông qua RS232
Nhiệm vụ:
Sử dụng bộ ADC trên PIC để đo điện áp từ đầu ra của biến trở sau đó truyền
dữ liệu đo được lên máy tính qua RS232
- Kiểm tra JP_TX và JP_RX ở trạng thái nối chân 5 với chân 6 để nối chân TX
và RX của bộ thu phát UART với bộ phát thu MAX232
- Nối cổng truyền thông nối tiếp của PIC.TS với cổng COM của máy tính
- Sử dụng trình HyperTermial giao tiếp với tín hiệu trên kênh RS232
Vào Hyper Terminal như hình dưới đây
Hình 2.10a - Hyper Terminal
Gõ tên là 9600 trong ô Name như hình dưới, rồi chọn OK