- Sử dụng tốt phần mềm để lập trình và giải các bài tập cơ bản - Biết tạo dự án, tạo file để viết chương trình mô phỏng - Biết cách chỉnh sửa lỗi và chạy mô phỏng chương trình - Giúp cho
Trang 1TRƯỜNG ĐẠI HỌC
SƯ PHẠM KỸ THUẬT HƯNG YÊN
KHOA ĐIỆN – ĐIỆN TỬ
ĐỀ CƯƠNG BÀI GIẢNG THỰC TẬP LẬP TRÌNH C ỨNG DỤNG
(Dùng cho Sinh viên Đại học chuyên ngành Tự động hóa công nghiệp,
Điều khiển tự động)
Hưng yên, tháng 10 năm 2022
Trang 2ĐẠI HỌC SPKT HƯNG YÊN
KHOA ĐIỆN - ĐIỆN TỬ
Bộ môn ĐK&TĐH
THỰC TẬP LẬP TRÌNH C ỨNG DỤNG
BÀI SỐ 1
BÀI THỰC HÀNH VỀ 1 LED ĐƠN, DÃY 16 LED
ĐƠN
NGÀY : ……….
SỐ GIỜ TT : ………
LỚP : ……….
TÊN SV : ……….
1 Mục tiêu bài học:
Học xong bài này người học có khả năng:
- Biết Cài đặt phần mềm
- Sử dụng tốt phần mềm để lập trình và giải các bài tập cơ bản
- Biết tạo dự án, tạo file để viết chương trình mô phỏng
- Biết cách chỉnh sửa lỗi và chạy mô phỏng chương trình
- Giúp cho Sinh viên nâng cao kỹ năng sử dụng tập lệnh đã được học
2 Kiến thức cần thiết
2.1 Hướng dẫn sử dụng phần mềm CCS C compiler
Vi điều khiển chỉ nhận và xử lý chương trình dưới dạng file Hex Vì vậy cần phải có phần mềm để soạn thảo và biên dịch chương trình sang mã Hex Hiện nay, có rất nhiều phần mềm có thể lập trình và mô phỏng: CCS C, Keil C, Prog studio, Sim.51, Raisonance Kit 6.1(Ride) …
Với vi điều khiển PIC16F877A sử dụng trình biên dịch CCS C
Các bước thực hiện viết chương trình trên phần mềm CCS C
Bước 1: Tạo Project
Cách 1: Project Wizard
Để tạo 1 project mới sau khi khởi động chương trình CCS C Compiler chọn File → New → Project Wizard như sau:
Hình 1.1 Tạo giao diện với Project Wizard
Trang 3Hộp thoại mới hiện ra và định tên Project và vị trí nơi Project tồn tại:
Hình 1.2 Lưu file project Chọn loại vi điều khiển, tần số thạch anh sử dụng sau đó nhấn Create Project:
Hình 1.3 Cấu hình vi điều khiển trong CCS
Trang 4Quá trình khởi tạo một project hoàn thành, người sử dụng có thể viết chương trình
ngay:
Hình 1.4 Giao diện soạn thảo chương trình theo Project
Cách 2: Tạo chương trình với Source File
File => New => Source File:
Hình 1.5 Tạo chương trình mới với Source File
Trang 5Lưu file vừa tạo:
Hình 1.6 Lưu file theo định dạng source file Viết chương trình:
Hình 1.7 Giao diện lập trình với Source file
Chú ý: Với việc tạo file dạng Source File thì nội dung ban đầu trong file được tạo sẽ để
trống, người lập trình sẽ viết chương trình tại đây, bao gồm việc khai báo tệp tiêu đề
#include<16f877a.h> và các khai báo khác
Trang 6Bước 2: Soạn thảo chương trình
Hình dưới đây là giao diện người dùng sử dụng để viết chương trình
Hình 1.8 Giao diện soạn thảo chương trình trong ccs
Bước 3: Biên dịch một chương trình
Sau khi soạn thảo xong nhấn Ctrl+S để lưu Biên dịch chương trình bằng cách Click
vào nút Compile hoặc nhấn tổ hợp phím Ctrl + Alt + F9:
Hình 1.9 Giao diện Compile chương trình
Trang 7Với trường hợp tạo Project theo cách 2 (Source File) thì trước khi biên dịch cần Click
chuột phải vào tên file và chọn Make File Project
Sau khi biên dịch phần mềm sẽ tạo ra file hex để nạp vào vi điều khiển
2.2 Thư viện và hàm được hỗ trợ trong trình biên dịch CCS C
2.2.1 Khai báo thư viện
Khai báo tệp tiêu đề: #include<16f877a.h>
Để làm việc với vi điều khiển PIC16F877A với phần mềm CCS thì ta cần khai báo tệp
tiêu đề “16f877a.h” Tệp tiêu đề “16f877a.h” được cung cấp khi cài đặt phần mềm CCS và
được lưu trữ tại thư mục PICC\Devices
Khai báo sử dụng hàm trễ: #use delay(option)
Trình biên dịch CCS hỗ trợ hàm thực hiện tạo trễ thường được sử dụng trong lập trình
vi điều khiển Để sử dụng chức năng tạo trễ cần khai báo và cung cấp thông số dao động của
Giá trị của tần số có thể ghi theo đơn vị M, MHZ, K, KHZ
Sau khi khai báo sử dụng delay người dùng có thể sử dụng các hàm delay_ms(time)
và delay_us(time) để tạo trễ
delay_ms(time): Hàm tạo trễ theo đơn vị mili giây
delay_us(time): Hàm tạo trễ theo đơn vị micro giây
Trong đó: time là một biến hoặc một hằng số kiểu int16 có giá trị trong khoảng từ
0-65535
2.2.2 Các hàm nhập xuất
- set_tris_x (value): Cài đặt trạng thái vào ra cho PORT
+ x: tên các PORT (a, b, c, d, …);
+ value: giá trị là 8bit int với mỗi bit đại diện cho một bit của cổng I / O (bit 0: output, bit 1:
input)
- output_low (pin): Xuất ra giá trị mức thấp
+ pin: là tên các chân I/O cần xuất có dạng PIN_tên chân
- output_high (pin): Xuất ra giá trị mức cao
+ pin: là tên các chân I/O cần xuất có dạng PIN_tên chân
- output_toggle (pin): Xuất ra giá trị mức đảo với mức hiện tại
+ pin: là tên các chân I/O cần xuất có dạng PIN_tên chân
- output_x (value): Xuất giá trị cho port
+ x: tên các PORT (a, b, c, d, )
Trang 8+ value: giá trị là 8bit int với mỗi bit đại diện cho một bit của cổng I / O trong PORT
- value = input (pin): đọc tín hiệu từ một chân I/O
+ pin: là tên các chân I/O cần đọc có dạng PIN_tên chân
+ value: Giá trị đọc được (= 0: mức thấp, =1: mức cao)
- value = input_x: đọc tín hiệu từ một PORT
+ pin: là tên các chân I/O cần đọc có dạng PIN_tên chân
+ value: Giá trị đọc được dạng 8bit tương ứng với 8 pin trong PORT (= 0: mức thấp, =1: mức
cao)
2.3 Hướng dẫn sử dụng phần mềm nạp chương trình
Để nạp chương trình cho MCU PIC16F877A ta cần sử dụng các mạch nạp PICKIT
Một số mạch nạp được sử dụng như: PICKIT V2, PICKIT V2 OEM, PICKIT V3
Hình 1.10 PICKIT v2 OEM
Hình 1.11 PICKIT V2
Trang 9Hình 1.12 PICKIT V3 Mạch nạp bao gồm các chân cần được kết nối tương ứng với vi điều khiển PIC:
Hình 1.13 Bố trí chân trong mạch nạp PICKit
* Quy trình nạp chương trình xuống vi điều khiển PIC
Bước 1: Kết nối mạch nạp vào bộ KIT PIC
Bước 2: Mở phần mềm PICkit3 hoặc PICkit 2 tùy theo mạch nạp sử dụng
Hình 1.14 Biểu tượng phần mềm PICkit 2 và PICkit 3 tại Desktop
Bước 3: Vào tool -> Check Communication để kiểm tra PICKIT đã kết nối thành công
chưa
Trang 10Hình 1.15 Kiểm tra giao tiếp với Check Communication Bước 4: Xóa chương trình cũ trong PIC: chọn Erase
Hình 1.16 Nút Erase dùng để xóa chương trình trong chip Bước 5: Vào File -> Import Hex -> Chọn tới file hex của chương trình cần nạp
Hình 1.17 Import Hex và Export Hex Bước 6: Nhấn Write để nạp chương trình
Hình 1.18 Ghi chương trình với nút Write
2.4 Giới thiệu modul KIT thực hành PIC16F877A
2.4.1 Sơ đồ khối
Trang 11MCU PIC16F877A Button
DC DC
Hình 1.19 Sơ đồ khối modul KIT thực hành vi điều khiển PIC 16F877A
Trong đó:
Khối nguồn: Sử dụng nguồn điện đầu từ bộ nguồn Adapter 220AC/12VDC sau đó
được chia làm 2 cấp điện áp 5VDC cấp cho mạch điều khiển và 12VDC cấp cho mạch động
Khối đầu ra số: Gồm các khối Led đơn, Led 7 thanh, Led ma trận, màn hình LCD,
động cơ bước và động cơ một chiều
Khối MCU: Sử dụng vi điều khiển PIC16F877A, khối MCU được thiết kế riêng và
được ghép nối với các khối còn lại thông qua kết nối jump và dây cắm
2.4.2 Sơ đồ nguyên lý
Trang 12Hình 1.20 Sơ đồ nguyên lý mạch mainboard bộ KIT thực hành
Trang 13Hình 1.21 Modul KIT thực tập vi điều khiển PIC16F877A thực tế
Trang 143 Nội dung thực tập:
3.1 Các bài toán ví dụ
Bài toán 1: Cho sơ đồ kết nối như hình vẽ Viết chương trình điều khiển led D1 sáng nhấp
nháy với chu kỳ T=1 giây
+ Lưu đồ thuật toán:
Trang 15+ Viết chương trình:
1 #include <16F877A.h> // Khai bao tien xu ly
2 #device ADC=16 // Thiet lap ADC 16bit
3 #FUSES NOWDT //No Watch Dog Timer
4 #FUSES NOBROWNOUT //No brownout reset
5 #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) u
sed for I/O
13 output_low(pin_d0); // Bat led D1
14 delay_ms(500); // Tao tre 500ms
15 output_high(pin_d0); // Tat led D1
16 delay_ms(500); // Tao tre 500ms
17 }
19 }
Bài toán 2: Viết chương trình điều khiển 8 led đơn D1 D8 được nối với Port D sáng dần rồi
tắt dần ngược chiều.(Các led được nối A chung)
+ Lưu đồ thuật giải:
Trang 16Chương trình:
Trang 173.2 Bài tập tự luyện:
Bài tập số 1: Viết chương trình điều khiển led đơn D1 (nối với RD0) sáng tắt 10 lần với tần
số f=1Hz
Bài tập số 2: Viết chương trình điều khiển 8 led đơn D1 D8 được nối với Port D sáng dần
rồi tắt dần ngược chiều 10 lần
Trang 18Bài tập số 3: Viết chương trình điều khiển 8 led đơn D1 D8 được nối với Port D sáng dần 8
Led từ giữa sáng ra ngoài rồi tắt từ ngoài vào trong
Bài tập số 4: Viết chương trình điều khiển 16 led đơn sáng dần từ giữa ra, tắt dần từ ngoài
vào
Trang 19Bài tập số 5: Viết chương trình điều khiển 8 LED sáng dồn
Bài tập số 6: Viết chương trình điều khiển 16 led đơn sáng dần rồi tắt dần ngược chiều 5 lần
Chú ý: Thời gian delay giữa các trạng thái led do người lập trình quy định sao cho có thể dễ
quan sát
Trang 20ĐẠI HỌC SPKT HƯNG YÊN
KHOA ĐIỆN - ĐIỆN TỬ
Bộ môn ĐK&TĐH
THỰC TẬP LẬP TRÌNH C ỨNG DỤNG
BÀI SỐ 2
BÀI THỰC HÀNH ĐIỀU KHIỂN LED 7 THANH
KẾT NỐI TRỰC TIẾP
NGÀY : ……….
SỐ GIỜ TT : ………
LỚP : ……….
TÊN SV : ……….
1 Mục tiêu bài học:
Học xong bài này người học có khả năng:
- Sử dụng tốt phần mềm để lập trình và giải các bài tập cơ bản
- Lập được lưu đồ thuật toán theo yêu cầu công nghệ
- Viết được chương trình điều khiển led 7 thanh kết nối trực tiếp
- Kết nối được mạch phần cứng và vận hành mạch hoạt động
2 Kiến thức cần thiết
2.1 Led 7 thanh
LED 7 thanh hay còn được gọi là LED 7 đoạn, bao gồm 7 đoạn đèn LED được xếp lại với nhau thành hình chữ nhật Khi các đoạn lập trình để chiếu sáng thì sẽ hiển thị chữ số của
hệ thập phân hoặc thập lục phân Đôi khi LED số 8 được hiển thị dấu thập phân khi có nhiều LED 7 thanh được nối với nhau để có thể hiển thị được các số lớn hơn 2 chữ số
Hình 2.1 Cách tạo số từ các thanh led Phân loại LED 7 đoạn:
Dựa vào các cực được nối, có thể phân loại LED 7 đoạn như sau:
Loại dương chung (Common Anode): nếu cực dương (anode) của tất cả 8 LED được nối với nhau và các cực âm (cathode) đứng riêng lẻ
Hình 2.2 Sơ đồ kết nối led 7 thanh kiểu Anode chung
Trang 21Loại âm chung (Common Cathode): nếu cực âm (cathode) của tất cả 8 LED được nối
với nhau và các cực dương (anode) đứng riêng lẻ
Hình 2.3 Sơ đồ kết nối led 7 thanh kiểu cathode chung Bảng 2.1 Mã cho led anode chung
Trang 23+ Chương trình điều khiển:
3.2 Bài tập tự luyện
Bài tập số 1: Cho sơ đồ mạch nguyên lý như hình vẽ Viết chương trình hiển thị ngày sinh
của sinh viên trên 2 led 7 thanh
Trang 24Bài tập số 2: Cho sơ đồ mạch nguyên lý như hình vẽ Viết chương trình hiển thị các số đếm
từ 00 – 99 trên 2 LED 7 thanh
Bài tập số 3: Cho sơ đồ mạch nguyên lý như hình vẽ Viết chương trình hiển thị các số đếm
từ 99 – 00 trên 2 LED 7 thanh
Trang 25Bài tập số 4: Cho sơ đồ mạch nguyên lý như hình vẽ Viết chương trình hiển thị các số lẻ có
2 chữ số tăng dần trong đoạn 00 – 99 sau đó hiển thị các số chẵn theo chiều ngược lại trên 2
LED 7 thanh
Bài tập số 5: Viết chương trình hiển thị dãy số fibonacci trên 2 LED 7 thanh
Gợi ý: Dãy Fibonacci là dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 0 hoặc 1 và 1,
các phần tử sau đó được thiết lập theo quy tắc mỗi phần tử luôn bằng tổng hai phần tử trước
nó Công thức truy hồi của dãy Fibonacci là:
Ví dụ: 01, 01, 02, 03, 05, 08, 13, 21…