ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
LỜI NÓI ĐẦU
Hiện nay đất nước ta đang chuyển mình theo sự phát triển chung của thế giới
và khu vực Châu Á bằng nền sản xuất đa dạng và đầy tiềm năng. Nền sản xuất này
không chỉ đòi hỏi một số lượng lao động khổng lồ mà còn yêu cầu về trình độ, chất
lượng tay nghề, kỹ thuật lao động và thiết bị sản xuất. Trên đà phát triển đó, vấn đề
tự động hóa trong quá trình sản xuất, nghiên cứu trở thành một nhu cầu cần thiết.
Thoạt đầu vấn đề tự động hóa được thực hiện riêng lẻ từ cơ khí hóa đến các mạch
điện tử. Ngày nay, với sự xuất hiện của các chíp vi xử lý và máy tính cùng với việc
sử dụng rộng rãi của nó đã đẩy vấn đề tự động hóa lên bước cao hơn và thời lượng
nhanh hơn…
Trong đó, việc ứng dụng máy vi tính vào kỹ thuật đo lường và điều khiển đã
đem lại những kết quả đầy tính ưu việc. Các thiết bị, hệ thống đo lường và điều
khiển ghép nối với máy vi tính có độ chính xác cao, thời gian thu nhập số liệu
ngắn. Ngoài ra, máy tính còn có phần giao diện lên màn hình rất tiện lợi cho người
sử dụng.
Việc dùng máy tính để điều khiển và thông tin liên lạc với nhau thì vấn đề
truyền dữ liệu rất quan trọng. Hiện nay chúng ta có thể dùng máy tính để liên lạc
với nhau thông qua hệ thống mạng như : mạng cục bộ (LAN) hay mạng toàn cầu
Internet.
Em xin chân thành cảm ơn Thầy NGÔ ĐÌNH NGHĨA đã quan tâm chỉ dẫn
cho em hiểu biết hơn về đề tài. Qua các đề tài Thầy gợi ý cho em tìm hiểu, phân
tích và bắt tay vào thực hiện. Em đã quyết định nghiên cứu đề tài “ Giao tiếp máy
tính điều khiển nhiệt độ bằng phương pháp ON-OFF”.
SVTH : NGUYỄN ĐÌNH BẢO 1
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
LỜI CẢM ƠN
Trong quá trình thực hiện đồ án em đã nhận được sự hướng dẫn và giúp đỡ tận
tình của Thầy NGÔ ĐÌNH NGHĨA. Em xin chân thành cảm ơn Thầy cùng toàn thể
Thầy Cô trong khoa Điện đã tạo điều kiện để em nghiên cứu đề tài.
Dù đã cố gắng rất nhiều nhưng trong quá trình làm còn nhiều thiếu sót nên em
SVTH : NGUYỄN ĐÌNH BẢO 4
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
MỤC LỤC
LỜI GIỚI THIỆU 1
LỜI CẢM ƠN 2
MỤC LỤC 5
Chương 1: TỔNG QUAN ĐỀ TÀI 8
I. Đặt vấn đề 8
II. Mục đích 9
III. Hướng tiếp cận đề tài 9
IV. Cách thức tiến hành 10
Chương 2: GIỚI THIỆU CÁC PHẦN TỬ, LINH KIỆN SỬ DỤNG TRONG
MẠCH 11
I. Cổng COM và truyền nhận dữ liệu 11
1 Giới thiệu cổng com 11
2 IC MAX 232 14
II. Vi điều khiển PIC16F877A 16
1 Khái quát về vi điều khiển PIC16F877A 16
c. Thanh ghi T2CON : điều khiển hoạt động của timer: 33
5. Ngắt (INTERRUPT) : 33
6. Phương pháp điều chế xung PWM cho PIC16F877A : 38
6.1 Điều chế PWM là gì ? 38
6.2 Nguyên lý của PWM : 38
6.3 Cách thiết lập chế độ PWM cho PIC16F877A: 40
7. ADC : 41
8. Giao tiếp nối tiếp: 42
9. Cổng giao tiếp song song PSP : 44
10. Các đặc tính của OSCILLATOR : 44
11. Các chế độ RESET : 45
III. Cảm biến nhiệt LM35 : 47
IV. Tổng quan về ngôn ngữ lập trình CCS : 48
V. Visual basic và truyền thông nối tiếp : 49
Chương 3 : THIẾT KẾ PHẦN CỨNG 56
I. Lưu đồ giải thuật visual basic: 56
II. Lưu đồ giải thuật vi điều khiển : 59
SVTH : NGUYỄN ĐÌNH BẢO 6
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
III. Phần cứng : 61
IV. Giao diện Visual Basic : 64
V. Code Visual Basic : 64
VI. Code vi điều khiển : 70
VII. Kết luận : 73
SVTH : NGUYỄN ĐÌNH BẢO 7
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Chương 1 : TỔNG QUAN VỀ ĐỀ TÀI
I. Đặt vấn đề :
Nhiệt độ là yếu tố ảnh hưởng rất quan trọng đến đời sống hằng ngày của
chúng ta. Nhiệt độ chiếm vị trí quan trọng trong nền kinh tế quốc dân. Bởi vì nhiệt
xúc sử dụng cảm biến LM335. Vì thế, em đã chọn đề tài “Ứng dụng vi điều khiển
pic16f877a giao tiếp với máy tính thông qua cảm biến nhiệt LM35 để thể hiện nhiệt
độ môi trường trên phần mềm visual basic.”
II. Mục đích :
- Hiển thị chính xác nhiệt độ môi trường xung quanh.
- Sử dụng cảm biến nhiệt độ để theo dõi nhiệt độ.
- So sánh nhiệt độ đo được với nhiệt độ ngưỡng (ngưỡng trên Tmax và
ngưỡng dưới Tmin, được cài đặt tại bất kì thời điểm nào, tùy theo yêu cầu
thông qua bàn phím) để đưa ra cảnh báo đèn và màn hình khi nhiệt độ vượt
qua ngưỡng.
- Thông qua chương trình vi điều khiển nhằm đáp ứng sự thay đổi nhiệt độ tùy
theo mục đích sử dụng mà tác động tăng hay giảm nhiệt độ.
- Kết hợp với máy tính ghi nhận sự thay đổi nhiệt độ nhằm phân tích đánh giá
sự biến đổi nhiệt độ.
- Sử dụng phần mềm Visual basic nhằm hiển thị giá trị nhiệt độ.
- Các phương án có thể lựa chọn, ưu khuyết điểm của từng phương án.
+ Để đo lường nhiệt độ thì có thể dùng nhiều loại cảm biến nhiệt khác, mỗi
loại có một ưu điểm riêng phù hợp với từng nhu cầu riêng. Trong phạm vi
đề tài là đo nhiệt độ môi trường bình thường nên sử dụng LM35 là tối ưu
nhất vì: đây là loại cảm biến có độ chính xác cao, tầm hoạt động tuyến tính
từ 0-128 độ C, tiêu tán công suất thấp
+ Trong đề tài sử dụng píc6f877a vì dễ mua, rẻ tiền, có tích hợp bộ chuyển
đổi ADC, có khả năng lập trình, có thể phát triển cho các đề tài sau…
III. Hướng tiếp cận đề tài :
- Thu thập và tìm hiểu đề tài qua sách vở và tài liệu trên mạng.
- Tìm hiểu công cụ lập trình qua các kiến thức đã học ở trường, qua hướng dẫn
của Thầy Cô, hỗ trợ từ bạn bè, tìm hiểu từ sách vở tài liệu liên quan.
IV. Cách thức tiến hành :
SVTH : NGUYỄN ĐÌNH BẢO 9
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
được truyền trước thì điện áp đường dây tương ứng là 10V, sau bit dữ liệu là bit
kiểm tra chẵn lẻ rồi bit Stop ở logic 1(-10V). DTE nhận tín hiệu truyền ngược trở
lại theo đường RXD, nếu nối hai DTE với nhau thì dùng sơ đồ sau:
SVTH : NGUYỄN ĐÌNH BẢO 11
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Trường hợp dùng DTE và DCE thì chân TXD của DCE nhận tín hiệu còn chân
RXD phát tín hiệu.
Cổng COM có 2 dạng đầu nối: D-9 và D-25.
Ở
khoảng cách ngắn ta thường dùng sơ đồ sau:
Sơ đồ truyền dữ liệu ở khoảng cách dài.
SVTH : NGUYỄN ĐÌNH BẢO 12
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Tín hiệu truyền nối tiếp dưới dạng các bit, số bit trong một giây được gọi là baud.
Các vận tốc truyền thông dụng là: 300, 600, 1200, 2400, 4800, 9600, 19200…
baud. Kết nối giữa máy tính (DTE) và modem (DCE) thực hiện theo nguyên tắc
các chân cùng tên nối với nhau. Còn khi kết nối DTE và DTE thì dùng sơ đồ sau:
Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4
với các địa chỉ như sau:
Tên Địa chỉ Ngắt
Vị trí chứa địa
chỉ
COM1 3F8H 4 0000H:0400H
COM2 2F8H 3 0000H:0402H
COM3 3E8H 4 0000H:0404H
COM4 2E8H 3 0000H:0406H
Khi DTE cần truyền dữ liệu thì DTR tích cực đưa về DSR cho biết phía nhận sẵn
sàng đưa về CD cho biết đã nhận được sóng mang của modem ảo. Hai DTE có
SVTH : NGUYỄN ĐÌNH BẢO 13
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
C
Từ hình vẽ ta thấy tín hiệu từ máy tính truyền xuống MAX232 theo tiêu chuẩn
TTL/CMOS, sau khi qua MAX232 được chuyển thành chuẩn RS-232. Tín hiệu
nhận về cũng được chuyển đổi sang chuẩn RS-232 trước khi được đưa về chuẩn
TTL/CMOS trước khi đưa vào máy tính.
Chân nguồn cần 1 tụ Bypass (khoảng 0.1µF) còn 4 tụ còn lại ở các chân C1, C2,
V+ và V- có thể sử dụng loại phân cực hoặc không phân cực, các tụ này phải từ
0.1µF trở lên để làm giảm gợn song ở các ngõ ra của bộ truyền và làm giảm đáng
kể công suất tiêu thụ của nguồn tụ ở các chân C2,V1 và V2 có thể thay đổi giá trị
nhưng tụ C1 thì không.
II. Vi điều khiển PIC16F877A :
1. Khái quát về vi điều khiển PIC16F877A :
1.1 Khái quát :
- PIC là tên viết tắt của “Programmable Intelligent computer” do hãng
General Instrument
đặt
tên cho con vi điều khiển đầu tiên của họ.Hãng
Micrchip tiếp tục phát triển sản phầm này
và
cho
đến hàng đã tạo ra gần 100
loại sản phẩm khác nhau.
- PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu
SVTH : NGUYỄN ĐÌNH BẢO 15
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
hết tất cả các
ứng
dụng thực tế. Đây là dòng PIC khá dễ cho người mới làm
quen với PIC có thể học tập và tạo
Khả năng ngắt (lên tới 14 nguồn cả ngắt trong và ngắt
ngoài).
Ngăn nhớ Stack được chia làm 8
mức.
Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián
tiếp.
Dải điện thế hoạt động rộng: 2.0V đến
5.5V.
Nguồn sử dụng
25mA.
Công suất tiêu thụ
thấp:
<0.6mA với 5V,
4MHz
20uA với nguồn 3V, 32
kHz.
Có 3 timer: timer0, 8 bit chức năng định thời và bộ đếm với hệ số
tỷ lệ trước.Timer1,
16
bit chức năng bộ định thời, bộ đếm với hệ số tỷ lệ
trước, kích hoạt chế độ Sleep.Timer2,
8
bit chức năng định thời và bộ đếm
với hệ số tỷ
như:
- Tổ chức bộ nhớ của PIC
16F877A.
- Chức năng của các Port
I/O.
- Chức năng và cách thiết lập các tham số của 3 Timer
0,1,2.
- Chức năng và cách thiết lập bộ điều chế độ rộng xung
PWM.
- Định nghĩa ngắt, các nguồn ngắt và tìm hiểu sâu về ngắt timer và
ngắt
ngoài là hai chức năng được sử dụng trong đề tài
này.
SVTH : NGUYỄN ĐÌNH BẢO 17
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Hình 2: Sơ đồ nguyên lí PIC
16F877A
1.2 Sơ đồ chân và sơ đồ nguyên lý của PIC16F877A :
Sơ đổ chân :
SVTH : NGUYỄN ĐÌNH BẢO 18
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Sơ đồ nguyên lý :
1.3 Nhận xét :
Từ sơ đồ chân và sơ đồ nguyên lý ở trên, ta rút ra các nhận xét ban đầu như sau
- PIC16F877A có tất cả 40
chân
- 40 chân trên được chia thành 5 PORT, 2 chân cấp nguồn, 2 chân GND, 2
chân thạch
anh
và một chân dùng để RESET vi điều
lượng
bộ
nhớ 8K word (1
word
=
14 bit) và được phân thành nhiều trang
(từ page0 đến page 3) .
Như vậy bộ nhớ chương trình có khả năng chứa
được
8*1024 = 8192 lệnh (vì
một lệnh sau
khi
mã hóa sẽ có dung lượng 1 word
(14
bit).Để mã hóa được
địa chỉ của 8K
word
bộ
nhớ
chương trình, bộ đếm chương
trình
có dung lượng
13 bit
(PC<12:0>).
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h
(Reset vector).Khi
có
ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ
SFR
nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục
đích dùng chung GPR nằm ở vùng
địa
chỉ còn lại của mỗi bank thanh ghi.
Vùng ô nhớ các thanh ghi mục đích dùng chung này chính
là
nơi người dùng sẽ
lưu dữ liệu trong quá trình viết chương trình. Tất cả các biến dữ liệu nên
được
khai báo chứa trong vùng địa chỉ
này.
- Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào mà
thường xuyên được
sử
dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả các
bank để thuận tiện trong việc truy
xuất.
Sở dĩ như vậy là vì, để truy xuất một
thanh ghi nào đó trong bộ nhớ của 16F877A ta cần phải
khai
báo đúng bank
chứa thanh ghi đó, việc đặt các thanh ghi sử dụng thường xuyên giúp ta thuận
tiên
hơn rất nhiều trong quá trình truy xuất, làm giảm lệnh chương
trình.
Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét như sau
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi
dùng chung để chứa dữ
liệu
Hình 6: Cấu trúc bộ nhớ dữ liệu của PIC
16F877A
a. Thanh ghi chức năng đặc biệt SFR :(Special Function Resister)
- Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và
điều khiển các
khối
chức năng được tích hợp bên trong vi điều khiển. Có
thể
phân thanh ghi SFR làm hai lọai:
thanh
ghi SFR liên quan đến các chức năng
bên trong (CPU) và thanh ghi SRF dùng để thiết lập và
điều
khiển các khối
chức năng bên ngoài (ví dụ như ADC, PWM,
…).
- Một số thanh ghi cức năng đặc
biệt:
SVTH : NGUYỄN ĐÌNH BẢO 22
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực
hiện phép toán
của
khối ALU, trạng thái reset và các bit chọn bank cần
truy xuất trong bộ nhớ dữ
liệu.
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và
ghi, cho phép
bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ
EEPROM.
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ
reset
của vi điều
khiển.
b. Thanh ghi mục đích chung GPR : (General Purpose Resister)
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanh
ghi FSG (File
Select
Register).Đây là các thanh ghi dữ liệu thông thường, người
sử dụng có thể tùy theo mục đích
chương
trình mà có thể dùng các thanh ghi này
để chứa các biến số, hằng số, kết quả hoặc các tham số phục
vụ
cho chương
trình.
Hình 7: Cấu trúc thanh ghi chức năng chung của
PIC
16F877A
2.3 Stack :
- Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một
SVTH : NGUYỄN ĐÌNH BẢO 23
ĐỒ ÁN 2A GVHD : NGÔ ĐÌNH NGHĨA
vùng nhớ đặc
biệt
không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện
các
thao tác với bộ nhớ stack sẽ hoàn
toàn được điều khiển bởi
CPU.
3.
Khái quát về chức năng của các port trong vi điều khiển
PIC16F877A
3.1 PORT A:
- PORTA (RPA) bao gồm 6 I/O pin.Đây là các chân “hai chiều” (bidirectional
pin), nghĩa
là
có thể xuất và nhập được.Chức năng I/O này được điều khiển bởi
thanh ghi TRISA (địa chỉ
85h).
Muốn
xác lập chức năng của một chân trong
PORTA là input, ta “set” bit điều khiển tương ứng
với
chân đó trong thanh ghi
TRISA và ngược lại, muốn xác lập chức năng của một chân trong PORTA
là
output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA.
Thao tác này hoàn
toàn
tương tự đối với các PORT và các thanh ghi điều
khiển tương ứng TRIS (đối với PORTA là TRISA, đối với PORTB là TRISB,
đối với PORTC là TRISC, đối với PORTD là TRISD vàđối với
PORTE
là
(địa
chỉ 9Dh) : thanh ghi điều khiển bộ so sán điện
áp.
ADCON1 (địa chỉ 9Fh)
: thanh ghi điều khiển bộ
ADC.
3.2
PORT B:
PORTB (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình
nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. PORTB còn
liên quan đến ngắt ngoại vi và bộ Timer0. PORTB còn được tích hợp chức năng
điện trở kéo lên được điều khiển bởi chương trình.
Các thanh ghi SFR liên quan đến PORTB bao gồm:
- PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
- TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
- OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0.
3.3 PORT C:
PORTC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISC. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ
Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.
Các thanh ghi điều khiển liên quan đến PORTC:
- PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
- TRISC (địa chỉ 87h) : điều khiển xuất nhập.
3.4 PORT D:
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là
TRISD. PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave
Port).
SVTH : NGUYỄN ĐÌNH BẢO 25