Tải bản đầy đủ (.docx) (39 trang)

Cân điện tử sử dụng vi điều khiển PIC16F877A

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.22 MB, 39 trang )

ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

MỤC LỤC
TÓM TẮT ĐỒ ÁN
LỜI CẢM ƠN
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ ĐỀ TÀI
1.1. Lý do chọn đề tài
1.2. Ứng dụng của đề tài
1.3. Hướng thực hiện đề tài
CHƯƠNG 2: : CÁC LOẠI LINH KIỆN ĐƯỢC SỬ DỤNG
2.1. Giới thiệu về vi điều khiển
2.1.1. Thơng số cơ bản
2.1.2. Các đặc tính ngoại vi
2.1.3. Ưu và nhược điểm của PIC16F877A
2.2. Giới thiệu về cảm biến
2.2.1. Thông số cơ bản
2.2.2. Sơ đồ chân
CHƯƠNG 3: GIỚI THIỆU PHẦN MỀM LẬP TRÌNH CCS VÀ VISUAL STUDIO 2013
KÈM THƯ VIỆN EMGUCV, ZXING
3.1. Giới thiệu phần mềm CCS
3.1.1. Khái quát về phần mềm
3.1.2. Giải thích lưu đồ thuật toán
3.2. Giới thiệu mã QR và phần mềm Visual Studio 2013
3.2.1. Lý thuyết về nhận dạng màu sắc
a. Lưu đồ thuật tốn
b. Giải thích lưu đồ thuật tốn
3.2.2. Giao tiếp giữa PIC16F877A và máy tính bằng giao tiếp nối tiếp UART thông
qua cổng Com
a. Giới thiệu về giao tiếp cổng nối tiếp UART – RS232


Page | 1


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

4.2.3. Chương trình kết nối cổng Com bằng Visual Studio
a. Loại cổng Com
b. Kết nối cổng Com
4.3. Kết quả đạt được
4.3.1. Thiết kế được giao diện điều khiển
4.3.2. Thiết kế phần mô hình hệ thống
4.3.3. Thiết kế mạch điều khiển
Chương 5: Kết luận
PHỤ LỤC
TÀI LIỆU THAM KHẢO

Page | 2


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

LỜI NÓI ĐẦU (cỡ chữ 16, canh lề giữa)

Page | 3



ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ ĐỀ TÀI
1.1. Lý do chọn đề tài
Cân trọng lượng là một nhu cầu cần thiết và không thể thiếu trong đời sống xã
hội , từ người nơng dân làm ra hạt thóc cho đến các khu chế xuất , các nhà máy sản xuất
ra hàng trăm tấn sản phẩm trong 1 ngày... Xuất phát từ nhu cầu thực tế và ứng dụng công
nghệ vi điều khiển các nhà khoa học đã nghiên cứu ra các loại cân điện tử hiện thị số có
thể cân được trọng lượng từ mg cho đến hàng trăm tấn mà các loại cân cơ bình thường
khơng thể thực hiện được. Trên thực tế các nhà máy sản xuất muốn biết khối lượng hàng
hoá, sản phẩm hay nguyên vật liệu, và cả cho những lĩnh vực khác như bến cảng, trạm
cân xe phát hiện quá tải của cảnh sát giao thông...đều được sử dụng cân điện tử. Trong
thời đại ngày nay các hệ thống điều khiển tự động ngày càng có vai trò quan trọng trong
việc phát triển, sự tiến bộ của kĩ thuật công nghệ và văn minh hiện đại. Xuất phát từ thực
tế đó, nhóm đã lựa chọn thực hiện đề tài “Cân điện tử “.
1.2. Ứng dụng của đề tài
Trong nội dung, ứng dụng của đề tài được sử dụng rất nhiều trong các cửa hàng, đặc biệt
là những cửa hàng bán thực phẩm hằng ngày như thịt, cá, rau, hoa quả. Bên cạnh đó đề
tài cũng thuận tiện trong việc sử dụng, thống kê và quản lý dữ liệu với khả năng kết nối
trong thời đại kĩ thuật số hiện nay.
1.3. Hướng thực hiện đề tài
Với giới hạn của đề tài: “Cân điện tử và ứng dụng quản lý bán hàng”. Nhóm đi sâu
vào nghiên cứu những vấn đề chính sau:
- Tìm hiểu về vi điều khiển mà trọng tâm là PIC16F877A phần cứng và tập lệnh.
- Tìm hiểu về bộ phận hiển thị cụ thể là màn hình LCD.
- Tìm hiểu về ngơn ngữ lập trình C, C#, ... viết chương trình cho PIC16F877A,
loadcell thanh cùng với đó là module HX711
- Tìm hiểu phần mềm thiết kế mạch điện tử Proteus, phần mềm để thực hiện xử lý

ảnh Visual Studio, phần mềm lập trình điều khiển vi điều khiển CCS, …

Page | 4


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

CHƯƠNG 2: CÁC LOẠI LINH KIỆN ĐƯỢC SỬ DỤNG
2.1. Giới thiệu về vi điều khiển
Nhóm chọn vi điều khiển PIC16F877A là vi điều khiển họ PIC16F được sản xuất bởi
hãng Microchip với tập lệnh gồm 35 lệnh có độ dài 14 bit. Đây là chip được sử dụng khá
phổ biến hiện nay tại Việt Nam và trên thế giới với đầy đủ chức năng của vi điều khiển
nói chung và sử dụng phù hợp với các ứng dụng cơ bản.

Hình 2.1. Hình dạng thực tế của PIC16F877A (Internet)
2.1.1. Thông số cơ bản
- Bộ nhớ chương trình Flash với dung lượng 8K x 14bit, với khả năng ghi/xóa lên đến
100.000 lần.
- Bộ nhớ dữ liệu RAM: 368 byte.
- Bộ nhớ EEPROM: dung lượng 256 byte, có khả năng ghi/xóa 1.000.000 lần, có thể lưu
trữ dữ liệu hơn 40 năm.
- Nguồn sử dụng: 2.0 – 5.5 VDC.
- Tần số hoạt động tối đa: 20MHz.
- Có chế độ SLEEP để tiết kiệm năng lượng.
- PIC16F877A có 40 chân, trong đó có 5 ports I/O với 33 chân (A, B, C, D, E), 4 chân
nguồn cho PIC, 2 chân ngõ vào dao động thạch anh và 1 chân reset tích cực mức thấp.
- Hỗ trợ giao tiếp USB, USART, I2C, SPI.


Page | 5


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

PORT A
-

Là cổng xuất nhập hai chiều với 6 chân từ RA0 – RA5.
Thanh ghi định hướng dữ liệu: TRISA (0: OUTPUT, 1: INPUT)
Chân RA4 được đa hợp với ngõ vào xung clock của module Timer0: RA4/T0CKI.
Các chân còn lại được đa hợp với các ngõ vào tương tự, ngõ vào tương tự VREF cho
các bộ chuyển đổi A/D và các bộ so sánh.
Khi sử dụng ngõ vào tương tự cần đảm bảo rằng thanh ghi TRISA được duy trì ở mức
1.

PORT B
-

Là cổng xuất nhập hai chiều với 8 chân từ RB0 – RB7.
Thanh ghi định hướng dữ liệu: TRISB.
Mỗi chân của port B có điện trở nội kéo lên. Bit điều khiển là RBPU
(OPTION_REG<7>).
RBPU = 0 → mở các điện trở kéo lên.
Port B được thiết lập là ngõ vào hoặc lúc bị reset & tắt chức năng điện trở kéo lên.
Chân RB0/INT được đa hợp ngắt ngoài.
Chân RB4 – RB7 có cấu trúc ngắt thay đổi khi có sự thay đổi xung tác động ở các
chân (chỉ khi được thiết lập là input).


PORT C
-

Là cổng xuất nhập hai chiều với 8 chân từ RC0 – RC7.
Thanh ghi định hướng dữ liệu: TRISC.
Chân RC3-RC4 được đa hợp với giao tiếp SPI và I2C.
Chân RC6-RC7 được đa hợp với giao tiếp nối tiếp USART.

PORT D
-

Là cổng xuất nhập hai chiều với 8chân từ RD0 – RD7.
Thanh ghi định hướng dữ liệu: TRISD.
Được đa hợp với giao tiếp song song.

PORT E
Là cổng xuất nhập hai chiều với 3 chân từ RE0 – RE2.
Thanh ghi định hướng dữ liệu: TRISE. 0: OUTPUT, 1: INPUT.
Các chân ở Port E được đa hợp với ngõ vào tương tự.
- Phải đảm bảo các chân được cấu hình là ngõ vào khi sử dụng ngõ vào tương tự.
-

Page | 6


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI


Hình 2.3: Sơ đồ chân họ PIC16F87XA (Internet)
2.1.2. Các đặc tính ngoại vi
Có 3 bộ định thời:
Timer 0: timer/counter 8 bit, có bộ chia trước.
Timer 1: timer/counter 16 bit, có bộ chia trước, có thể đếm khi CPU ở chế độ sleep
với nguồn xung từ thạch anh hoặc nguồn xung bên ngoài.
- Timer 2: timer/counter 8 bit, có bộ chia trước và bộ chia sau.
2 bộ CCP (Capture/Compare/PWM):
- Capture có độ rộng 16 bit, độ phân giải 12.5ns.
- Compare có độ rộng 16 bit, độ phân giải 200ns.
- PWM với độ phân giải lớn nhất là 10 bit.
-

Các chuẩn giao tiếp nối tiếp MSSP:
-

Giao tiếp SPI.
Giao tiếp I2C.

Chuẩn giao tiếp nối tiếp USART.
Chuẩn giao tiếp song song PSP.
Bộ chuyển đổi ADC với 8 kênh có độ phân giải 10 bit.
Có khả năng hoạt động với nhiều dạng Oscillator khác nhau.
2.1.3. Ưu và nhược điểm của PIC16F877A
Ưu điểm:
-

PIC là bộ vi điều khiển được phát triển bởi Microchip. PIC thực hiện chương trình
Page | 7



ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

nhanh và đơn giản. Lập trình và giao tiếp với nhiều thiết bị ngoại vi khác.
-

Điện năng tiêu thụ thấp, kết nối rất tốt, giá cả trung bình, dể kiếm ở thị trường Việt
Nam

Nhược điểm:
-

PIC có ít lệnh và nhiều thiết bị ngoại vi nên muốn thực hiện một lệnh tương đường

với dịng vi điều khiển khác thì phải viết một khối lệnh rất dài (như thế sẽ rất phức tạp
và tốn bộ nhớ).
-

Số chương trình con và ngắt tại cùng một thời điểm là hữu hạn và nhỏ.

2.1.4. Lập trình cho VDK
a. Các ngơn ngữ lập trình:
- Ngơn ngữ Assembly
- Ngơn ngữ C
b. Phần mềm lập trình cho VDK:
- CCS Complier
- Mplab
- MikroC

Sử dụng trình biên dịch CCS để viết chương trình

Hình 2.4: Trình biên dịch CCS
Page | 8


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

c. Nạp chương trình cho vi điều khiển
Để nạp code cho cho VDK PIC16F877A, cần có mạch nạp dành riêng cho PIC, và phần
mềm nạp PICkit3.

Hình 2.5: Phần mềm PicKit3
2.2.
Giới thiệu về Loadcell và module HX711
2.2.1. Loadcell

Loadcell là thiết bị cảm biến dùng để chuyển đổi lực hoặc trọng lượng thành tín
hiệu điện. Nhóm dùng cảm biến loadcell thanh với tải trọng tối đa là 5kg.

Page | 9


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

Hình 2.6: Loadcell 5kg (Internet)

a. Cấu tạo

Loadcell được cấu tạo bởi hai thành phần, thành phần thứ nhất là "Strain gauge"
và thành phần còn lại là "Load". Strain gauge là một điện trở đặc biệt chỉ nhỏ bằng móng
tay, có điện trở thay đổi khi bị nén hay kéo dãn và được nuôi bằng một nguồn điện ổn
định, được dán chết lên “Load” - một thanh kim loại chịu tải có tính đàn hồi.
b. Thông số cơ bản

Điện áp hoạt động: 5 VDC
Khối lượng tối đa: 5 kg
Đầu ra định mức: 1.0 ± 0.15 mV/V
Trở kháng đầu vào: 1066 ± 20 Ω
Trở kháng đầu ra: 1000 ± 20 Ω
Quá tải an toàn: 120%
c. Sơ đồ chân
- Dây đỏ: Ngõ vào (+)
- Dây đen: Ngõ vào (-)
- Dây xanh: Ngõ ra (+)
- Dây trắng: Ngõ ra (-)
2.2.2. Mạch Chuyển Đổi ADC 24bit Loadcell HX711
-

HX711 là bộ chuyển đổi tương tự kỹ thuật số 24bit chính xác được thiết kế cho cân và
các ứng dụng điều khiển để giao tiếp trực tiếp với cảm biến cầu với giao tiếp thông qua 2
chân Clock và Data để gửi dữ liệu về cho vi điều khiển.

Page | 10


ĐỒ ÁN VI ĐIỀU KHIỂN


GVHD: Th.S TRẦN QUANG KHẢI

Hình 2.7: Module Chuyển Đổi ADC 24bit Loadcell HX711 (Internet)
Thông số kỹ thuật:
- Điện áp hoạt động : 2.7~5VDC
- Dòng tiêu thụ : < 1.5 mA
- Tốc độ lấy mẫu : 10 - 80 SPS ( tùy chỉnh )
- Độ phân giải : 24 bit ADC
- Độ phân giải điện áp : 40mV
- Kích thước : 38 x 21 x 10 mm
2.2.3. Phương pháp hiệu chỉnh và kiểm tra

Load cell khá nhạy và phụ thuộc vào sự thay đổi môi trường, việc hiệu chỉnh có
thể là điều cần thiết. Nhóm sử dụng phương pháp hai điểm hiệu chỉnh: giá trị 0 và một
giá trị xác định. Phương pháp hiệu chỉnh khối lượng sẽ đảm bảo rằng mỗi lần sử dụng
load cell, nó sẽ hiệu chỉnh với một khối lượng đã biết, đảm bảo gần đúng với khối lượng
của các vật chưa biết khối lượng.
Sử dụng phương trình đường thằng, ta có thể bắt đầu hiểu được cách hiệu chỉnh và
cách mà ta sẽ hiệu chỉnh chuẩn xác, phương trình đường thẳng là:
y = m.x + b
Trong đó x là giá trị đọc được từ HX711, y là khối lượng đã biết, m là độ dốc của
đường hiệu chỉnh, và b là giá trị thỏa mãn y = 0, cũng là điểm chuẩn 0, khi chưa đặt khối
lượng vào. Nếu giả sử điểm x0, y0 được sử dụng làm một điểm trên đường thẳng, và x1,
y1 được sử dụng là điểm thứ hai trên đường thẳng thì:
=>
Cuối cùng xác định được đường hiệu chỉnh theo hai khối lượng đã biết :
y = ().x + ()
2.3.


Các linh kiện khác
Page | 11


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

2.3.1. LCD

Trong nội dung của đồ án vi điều khiển, LCD được sử dụng để hiển thị khối lượng hiện
tại của vật sau khi đã đo được.

Hình 2.9: Khối hiển thị LCD

Sơ đồ nối chân:
3 chân VSS, VDD, VEE được nối theo thứ tự nguồn âm, nguồn dương, và chân 2 của
biến trở vi chỉnh để điều chỉnh độ tương phản.
- 3 chân điều hướng dữ liệu RS, RW, E được nối vào 3 chân C1, C2, C3 của port C.
- 4 chân dữ liệu DATA4, DATA5, DATA6, DATA7 được nối vào chân D0, D1, D3, D2
theo thứ tự vào port D.
2.3.2. Module RS232
-

Các máy tính và vi điều khiển thường truyền tín hiệu theo hai cách: song song và nối
tiếp. Trong kênh song song, khi truyền một gói dữ liệu n-bit thì người dùng cần cung cấp
n đường truyền, mỗi bít trong gói dữ liệu sẽ truyền đi trên một đường truyền. Trong kênh
truyền nối tiếp, người dùng chỉ cần một đường truyền để truyền tuần tự n-bit của gói dữ
liệu. Như vậy, để truyền gói dữ liệu trong kênh truyền song song thì phần mềm tốn khoản
thời gian tbit trong kênh truyền nối tiếp để truyền n-bit ta tốn một khoản thời gian x*tbit.

Trong hệ thống này chúng em chỉ sử dụng truyền thông nối tiếp của vi điều khiển đó là
giao tiếp nối tiếp USART(Universal Synchoronous Asynchronous Receiver Transmitter).
a. Giới thiệu về giao tiếp cổng nối tiếp UART – RS232
Page | 12


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, nó
có ưu điểm sau:
− Khoảng cách truyền nhận xa hơn so với truyền nhận kiểu song song.
− Số lượng dây kết nối ít.
− Có thể truyền khơng dây bằng cách dùng hồng ngoại.
− Có thể ghép nối với vi điều khiển hay PLC.
− Cho phép nối mạng.
− Có thể tháo lắp thiết bị trong khi máy tính đang làm việc.
− Có thể cung cấp nguồn cho các mạch điện đơn giản.
b. Chuẩn UART (hay chuẩn TTL)
Là chuẩn của các chíp vi điều khiển có đặc điểm:
− Chuyển một bit trong một đơn vị thời gian theo một tốc độ truyền nhận dữ liệu
quy định (tốc độ baud).
− Mức “0” tương ứng với điện áp 0 → 0,8 VDC.
− Mức “1” tương ứng với điện áp 3,3 → 5 VDC.
c. Chuẩn RS232
Là chuẩn của máy tính được sử dụng rộng rãi hiện nay để ghép nối thiết bị ngoại vi
với máy tính. Nó là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết nối
nhiều nhất là hai thiết bị, chiều dài kết nối lớn nhất cho phép là 15m tốc độ 20 Kbit/s (có
thể cao hơn).

− Mức logic 0: +3 → +12VDC
− Mức logic 1: -12 → -3VDC
d. Giao tiếp UART – RS232
Như đã đề cập ở trên, tín hiệu truyền theo chuẩn RS-232 của hiệp hội công nghiệp
điện quy định mức logic “1” ứng với điện áp -12 → -3VDC và mức “0” ứng với điện áp
+3 → +12VDC. Tuy nhiên, các chíp vi điều khiển lại sử dụng mức logic theo chuẩn TTL
mức “0” tương ứng với điện áp 0 → 0,8VDC và mức “1” tương ứng với điện áp 3 →
5VDC. Do đó, để thực hiện việc giao tiếp giữa vi điều khiển và máy tính thơng qua cổng
Com, người dùng phải sử dụng các mạch tích hợp để chuyển đổi giữa 2 tín hiệu này.
Mạch tích hợp mà nhómsử dụng cho mục đích trên đó là Module UART Serial RS232
giúp gửi và nhận tín hiệu UART để có thể giao tiếp với máy tính.

Page | 13


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

Hình 4.6. ModulUART Serial RS232
Trình biến dịch CCS cung cấp cho người dùng các cách thức đơn giản để thực hiện
giap tiếp UART – RS232. Người dùng chỉ cần cung cấp một vài thơng tin quan trọng cho
q trình giao tiếp, nhưng thiết lập cịn lại sẽ được thực hiện bởi trình biên dịch.
#use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8)

− #use rs232: cung cấp cho trình biên dịch thơng tin về các tham số cấu hình RS232







sẽ sử dụng để giao tiếp.
baud=9600: tốc độ baud là 9600.
Parity = N: nếu không cần sử dụng bit kiểm tra chẳn lẻ thì khai báo Parity = N.
Xmit : pin_c6: chân truyền dữ liệu là RC6.
Rcv = pin_c7: chân nhận dữ liệu là RC7.
Bits = 8: số bit dữ liệu là 8 bit.

Để nhận dữ liệu từ máy tính thơng qua truyền thông nối tiếp UART – RS232, người
sử dụng có thể dùng lệnh getch(). Cú pháp như sau :
Char c ;
C= getch() ;

2.3.3. Mạch nguồn

Page | 14


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

Hình 2.10: Khối mạch nguồn
Với đồ án cân điện tử này, nhóm thiết kế mạch nguồn 5V cho vi điều khiển từ nguồn
12V adapter.
Các linh kiện cần chuẩn bị bao gồm:
-

IC7805: là IC ổn định điện áp dương với đầu ra 5V

Tụ hóa 2200uF và 220uF: lọc nhiễu tần số thấp
Tụ gốm 104 (100nF): lọc nhiễu tần số cao
Diode: chống mắc ngược nguồn điện
BJT B688: dùng để khuếch đại dòng điện
Led báo hiệu nguồn hoạt động

Page | 15


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

CHƯƠNG 3: GIỚI THIỆU PHẦN MỀM LẬP TRÌNH CCS VÀ
VISUAL STUDIO 2013 KÈM THƯ VIỆN EMGUCV, ZXING
3.1. Giới thiệu phần mềm CCS
Giao diện khởi động phần mềm

Hình 3.1. Giao diện phần mềm sau khi khởi động
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ềm ứng dụng
cho việc lập trình cho con vi điều khiển đó. Vi điều khiển chỉ 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 là làm việc với dãy các con số 0 và 1. Sau
này khi kiến trúc của Vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh nhiều
lên, việc lập trình với dãy các số 0 và 1 khơng cịn phù hợp nữa, địi hỏi ra đời một ngôn
ngữ mới thay thế. Và ngôn ngữ lập trình Assembly. Ở đây ta khơng nói nhiều đến
Assmebly. Sau này khi lập trình cho Vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã
dẫn đến sự ra đời của ngôn ngữ C, nhu cầu dùng ngôn ngữ C đề thay cho ASM trong việc
mô tả các lệnh nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển : Keil C,
HT‐PIC, MikroC,CCS… Nhóm chọn CCS cho bài giới thiệu này vì CCS là một cơng cụ
lập trình C mạnh cho Vi điều khiển PIC.

CCS là trình biên dịch lập trình ngơn ngữ C cho Vi điều khiển PIC của hãng
Microchip. Chương trình là sự tích hợp 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‐bit opcodes.
Page | 16


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

− PCM cho dòng PIC 14‐bit opcodes.
− PCH cho dòng PIC 16 và 18‐bit.

Tất cả 3 trình biên dich này được tích hợp lại vào trong một chương trình bao gồm cả
trình soạn thảo và biên dịch là CCS.
Giống như nhiều trình biên dịch C khác cho PIC, CCS giúp cho người sử dụng nắm
bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án. Các chương trình điều
khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả cao thơng qua việc sử dụng ngơn
ngữ lập trình cấp cao – Ngôn ngữ C. Tài liệu hướng dẫn sử dụng có rất nhiều, nhưng chi
tiết nhất chính là bản Help đi kèm theo phần mềm (tài liệu Tiếng Anh). Trong bản trợ
giúp nhà sản xuất đã mô tả rất nhiều về hằng, biến, chỉ thị tiền xử lý, cấu trúc các câu
lệnh trong chương trình, các hàm tạo sẵn cho người sử dụng…

3.2. Giới thiệu mã QR
Thời gian gần đây khi nhìn trên nhãn mác hàng hóa chúng ta thường thấy ơ vng
lớn bên trong có nhiều ơ vuông xếp liên tiếp thành các kỹ tự lạ giống như ma trận, ơ
vng đó được gọi là QR Code. Vậy QR Code là gì?
QR Code (Quick response code) là một dạng mã vạch 2D nhằm giúp cho người
dùng biết được thơng tin mà mình muốn tìm về sản phẩm mà mà QR được dán lên. Được

phát triển từ năm 1994 bởi một công ty của Nhật Bản, QR code ra đời đã đáp ứng được
nhu cầu lưu trữ nhiều thông tin hơn so với mã vạch Barcode hiện nay chỉ có thể lưu được
tối đa 20 ký tự. Cùng với sự phổ cập của Smartphone, những năm gần đây, QR code cũng
trở nên quen thuộc hơn với người dùng.
-

Cấu tạo: QR code được cấu trúc dựa trên những nguyên tắc cơ bản được định sẵn.

① Cell
Trong QR code có chứa nhiều ô hoa văn đen trắng chứa các đoạn mã nhị phân. Các ô
(cell) trắng đen này lần lượt mang giá trị 0 và 1, tập hợp các cell chính là các thơng tin
được lưu trữ vào QR code.
② Hoa văn định vị
Ở bốn góc của QR code bố trí các ơ vng gọi là hoa văn định vị. Nhờ vào hoa văn định
vị này, camerra có thể xác định được phạm vi QR code cũng như đọc được thông tin ngay
cả trong trường hợp QR code bị biến dạng, nhờ đó ta có thể quét được QR code một cách
nhanh chóng ở bất kỳ góc độ nào.
③ Timing pattern
Các ô vuông đen trắng được đặt xen kẽ nhau nhằm giúp cho việc xác định toạ độ của QR
code.
④ Alignment pattern
Page | 17


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

Ở vùng phía dưới bên phải của QR code có một hình vng chứa hình vng nhỏ khác
bên trong, hoa văn này có tác dụng quan trọng, giúp cho việc điều chỉnh lại những chênh

lệch phát sinh do camera bị lệch trong q trình qt.
⑤ Thơng tin format (chức năng sửa chữa lỗi)
Xung quanh hoa văn định vị là phần chứa thông tin format, quyết dịnh mức độ sửa chữa
lỗi của QR code.

Hình 3.1: Cấu trúc của QR Code (Internet)
Ưu điểm:
Khối lượng dữ liệu lớn
Có thể được đọc một cách nhanh chóng ở nhiều góc độ khác nhau
Dễ dàng tiếp cận với người dùng
Thông tin vô cùng đa dạng, từ văn bản (bao gồm ký tự kanji/kana), hình ảnh, video,
cho tới việc truy cập WiFi,…
- Không yêu cầu thiết bị phức tạp, chỉ cần một chiếc điện thoại thơng minh có camera
là đủ.
Nhược điểm:
- Khơng thể qt nếu khơng có mạng
-

Page | 18


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

QR Code chưa thơng dụng, vẫn cịn khá nhiều người chưa biết đến loại mã đặc biệt
này
Trong nội dung đồ án vi điều khiển, nhóm sử dụng QR Code để lưu dữ liệu cho từng loại
sản phẩm riêng biệt. Và mã sẽ được dán lên bao bì sản phẩm để dễ dàng thanh toán hơn
sau này.

-

3.3. Giới thiệu phần mềm Visual Studio 2013
3.3.1. Khái quát về phần mềm Visual Studio 2013
Microsoft Visual Studio là một mơi trường phát triển tích hợp từ Microsoft. Nó
được sử dụng để phát triển chương trình máy tính cho Microsoft Windows, cũng như các
trang web, các ứng dụng web và các dịch vụ web. Visual Studio là một phần mềm lập
trình hệ thống được sản xuất trực tiếp từ Microsoft. Từ khi ra đời đến nay, Visual Studio
đã có rất nhiều các phiên bản sử dụng khác nhau. Điều đó, giúp cho người dùng có thể
lựa chọn được phiên bản tương thích với dịng máy của mình cũng như cấu hình sử dụng
phù hợp nhất.
Bên cạnh đó, Visual Studio cịn cho phép người dùng có thể tự chọn lựa giao diện
chính cho máy của mình tùy thuộc vào nhu cầu sử dụng.
Trong nội dung đồ án, phần mềm được sử dụng với mục đích xây dựng GUI sử
dụng Windows Forms, xây dựng các nút điều khiển bên trong hoặc cũng có thể khóa
chúng vào bên cạnh mẫu, cùng với đó là điều khiển trình bày dữ liệu có thể được liên kết
với các nguồn dữ liệu như: cơ sở dữ liệu hoặc truy vấn.
a. Giao diện khởi động phần mềm

Page | 19


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

Hình 3.4. Giao diện phần mềm sau khi khởi động
Microsoft Viual Studio (VS) là một IDE được Microsoft phát triển để hỗ trợ các lập
trình viên trong q trình viết mã. Ngồi chức năng cơ bản là viết mã, build và debug, VS
còn cung cấp cho người dùng những chức năng như:

− Làm việc nhóm thơng qua Team Foundation Server của Microsoft.
− Advanced Breakpoints.
− Các phím tắt và plugins hỗ trợ người dùng thao tác nhanh trong việc viết mã.
− Wizard Classes.
− Tùy chỉnh liên kết các project và thư viện, tập tin liên quan.
b. Giao diện làm việc chính
Để bắt đầu làm việc với VS, người dùng cần phải tạo hoặc mở ra một Solution và tạo
hoặc mở một hoặc nhiều Project trong đó.

Page | 20


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

Hình 3.5. Giao diện làm việc chính
Solution Explorer: là cửa sổ hiển thị Solution, các Project và các tập tin trong project.
Khu vực code: đây là khu vực để lập trình viên viết mã nguồn cho chương trình. Cửa
sổ lập trình cho một tập tin trong Project sẽ hiển thị khi người dùng nháy đúp chuột lên
tập tin đó trong cửa sổ Solution Explorer.
Output: đây là cửa sổ hiển thị các thông tin, trạng thái của Solution khi build hoặc
của chương trình khi debug.
Error List: là cửa sổ hiển thị danh sách lỗi (Error) hoặc cảnh báo (Warning) của
chương trình khi build.
Toolbar: với các công cụ hỗ trợ người dùng trong việc viết mã và debug (các cơng cụ
trên thanh có thể thay đổi khi bắt đầu debug).
Thanh menu với đầy đủ các danh mục chứa các chức năng của VS. Khi người dùng
cài thêm những trình cắm hỗ trợ VS (ví dụ như Visual Assist), thanh menu này sẽ cập
nhật thêm menu của các trình cắm (nếu có).

d. Giao diện điều khiển

Page | 21


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

Hình 3.6. Giao diện điều khiển
Form1: Chính là màn hình giao diện điều khiển của dự án.
Toolbox: Là hộp thoại bao gồm như các button, picturebox, lable, comboBox…
Properties: Là các thuộc tính của mỗi toolbox, như named, text, font. Size, color…
e. Thêm cửa sổ vào giao diện
Đôi khi một số cửa sổ khơng được kích hoạt sẵn trên giao diện cơ bản của VS, hoặc
cũng có thể do người dùng vơ tình tắt mất.
Để hiển thị cửa sổ mong muốn, người dùng có thể vào View và chọn cửa sổ cần hiển
thị.
Một số cửa sổ được đặt trong View → Other Windows, các thanh công cụ được đặt
trong View → Toolbars.
Build, Debug và Run
Ở các phiên bản từ Visual 2012 trở về trước, phím tắt mặc định để Build một
Solution là F7, tuy nhiên ở phiên bản Visual 2013, thao tác này được chuyển đến tổ hợp
phím Ctrl + Shift + B.
Để bắt đầu Debug một Solution, ta sử dụng phím tắt F5.
Để Run một Solution, ta sử dụng tổ hợp phím Ctrl + F5.
Khác biệt giữa Debug và Run: Khi ta Run 1 Solution, tức là ta chạy trực tiếp chương
trình sinh ra từ Solution đó trên Windows, những Breakpoint ta đặt trên cửa sổ code của
Visual sẽ không được bắt, và cửa sổ Output cũng sẽ không cập nhật trạng thái của
chương trình đang chạy, nói cách khác là ta đang “chạy thật” chương trình đó trên máy.

Nghĩa là khi ta Run, chương trình sẽ dừng lại cho ta xem kết quả, kèm theo một dòng ký
tự “Press any key to continue…!” cịn Debug thì khơng.
Page | 22


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

3.2.3. Quét và xử lý QR code từ camera với hai thư viện Emgu và Zxing
1. Thư viện Emgu
Thư viện EmguCV là một cross flatform .NET, một thư viện xử lý ảnh mạnh dành
riêng cho ngôn ngữ C#. Thư viện này cho phép gọi được chức năng của OpenCV là từ
.NET.
Thư viện EmguCV tương thích ngơn ngữ như: C#, VB, VC++, Iron Python… Thư
viện này có thể chạy trên Windows, Linux, Mac OS X, iOS, Android và Window Phone.
Ưu điểm của thư viện EmguCV:
− EmguCV được viết hồn tồn bằng C#. Nó có thể chạy trên bất kỳ nền tảng hỗ trợ
nào bao gồm iOS, Android, Window Phone, Hệ điều hành Mac OS X và Linux.
− EmguCV sử dụng được nhiều loại ngôn ngữ khác nhau.
− Nhận dạng ảnh: nhận dạng khuôn mặt, các vật thể, …
− Xử lý ảnh: khử nhiễu, điều chỉnh độ sáng, …
− Nhận dạng cử chỉ.
− Sự lựa chọn để sử dụng hình ảnh lớp hoặc trực tiếp gọi chức năng từ OpenCV.
2. Thư viện ZXING
Zxing (viết tắt của “zebra crossing”) là một thư viện mã nguồn mở, xử lý nhiều
định dạng mã vạch 1 chiều và 2 chiều, được cài đặt bằng Java. Mục đích của thư viện này
là sử dụng máy ảnh trên điện thoại di động để chụp và giải mã các mã vạch trên thiết bị,
không cần phải kết nối với máy chủ. Hiện tại thư viện hỗ trợ các định dạng mã vạch sau:



UPC-A và UPC-E



EAN-8 và EAN-13



Code 39



Code 128



QR Code



Data Matrix



ITF

3. Cơ sở dữ liệu SQL Server
4. Một số xử lý được sử dụng trong giao diện


Đầu tiên, để có thể quét và xử lý QR code, chúng ta cần thêm hai thư viện
Emgu và Zxing.

Page | 23


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

using Emgu.CV;
using Emgu.CV.Structure;
using ZXing;

a. Bật camera
Camera = new Capture(0);
Camera.ImageGrabbed += Camera_ImageGrabbed;
Camera.Start();

b. Quét và hiển thị nội dung QR code
BarcodeReader Reader = new BarcodeReader();
Result result = Reader.Decode(img);
string decoded = result.ToString().Trim();

c. Kết nối với cơ sở dữ liệu
using System.Data.SqlClient;
string strCon = @"Data Source=QUANGHUY;Initial Catalog=
QuanLyBanHang;Persist Security Info=True;User ID=sa;Password=quanghuy21";
OleDbConnection sqlCon = null;
public void OpenConnection()

{
if (sqlCon == null)
{
sqlCon = new OleDbConnection(strCon);
}
if (sqlCon.State == ConnectionState.Closed)
{
sqlCon.Open();
}
}
// Close
public void CloseConnection()
{
if (sqlCon.State == ConnectionState.Open && sqlCon != null)
{
sqlCon.Close();
}
}

Page | 24


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Th.S TRẦN QUANG KHẢI

CHƯƠNG 4: LƯU ĐỒ THUẬT TỐN VÀ CHƯƠNG TRÌNH
4.1. Lưu đồ thuật tốn

4.2. Giải thích lưu đồ thuật tốn

Sau khi khởi động cân và phần mềm giao diện bán hàng, vi điều khiển PIC sẽ tính
tốn và hiển thị giá trị lên LCD, đồng thời camera (kết nối camera của điện thoại qua
phần mềm IvCam) sẽ được bật và thực hiện quét mã QR trên sản phẩm. Một khi mã được
quét, lúc này các thông tin về sản phẩm sẽ được hiển thị, cùng với đó là khối lượng sản
phầm được gửi từ vi điều khiển. Tiếp đó, các thơng tin về khách hàng sẽ được nhập và
Page | 25


×