GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Đồ án vi xử lý và vi điều khiển
CHƯƠNG 1: NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG
1.1
a.
Mục tiêu và sơ đồ khối của hệ thống dùng vi điều khiển PIC
Mục tiêu:
Hiểu được cấu trúc và chức năng của vi điều khiển, cụ thể ở đây là
PIC16f877. Ứng dụng pic16f877 vào thiết kế và xây dựng mô hình điều
khiển tốc độ động cơ DC. Nắm bắt được ưu điểm và nhược điểm của hệ
thống sử dụng PIC so với các hệ thống khác.
Cải thiện, nâng cao kỹ năng sử dụng các phần mềm, kỹ năng viết chương
trình và chế tạo mạch.
b. Sơ đồ khối tổng quát của hệ thống:
Khối nguồn nuôi
Nút điều chỉnh
KHỐI ĐIỀU KHIỂN TRUNG TÂM
(VI ĐIỀU KHIỂN PIC16F877A)
HIỂN THỊ
TỐC ĐỘ
PWM
Động cơ DC
Encoder
Hình1.1 Sơ đồ khối tổng quát của hệ thống
1.2
Nguyên lý hoạt động của hệ thống
Khối nguồn nuôi có nhiệm vụ cấp nguồn cho hệ thống. Khối điều khiển
trung tâm dùng vi điều khiển PIC16F877A nhận tín hiệu từ các nút bấm
Đồ án vi xử lý và vi điều khiển
Trang 1
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
sau đó xử lý tín hiệu và xuất ra xung để điều khiển PWM nhằm tăng hay
giảm tốc độ động cơ.
Thay đổi độ rộng xung PWM để thay đổi điện áp trung bình đặt lên động
cơ DC. Độ rộng xung càng lớn, điện áp đặt lên động cơ càng lớn, tốc độ
động cơ càng nhanh, ngược lại, độ rộng xung càng bé động cơ chạy càng
chậm.
Lúc này Encoder có nhiệm vụ đọc tốc độ của động cơ rồi hồi tiếp lại cho
khối điều khiển. Khối điều khiển xử lý tín hiệu và hiển thị tốc độ trên màn
hình LCD.
CHƯƠNG 2: TÍNH TOÁN LINH KIỆN SỬ DỤNG TRONG HỆ THỐNG
Đồ án vi xử lý và vi điều khiển
Trang 2
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
2.1 Giới thiệu các linh kiện trong hệ thống
2.1.1 Tổng quan về họ vi điều khiển pic
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty
Microchip Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi
Microelectronics Division thuộcGeneral_Instrument. PIC bắt nguồn từ
chữ viết tắt của “Programmable Intelligent Computer” (Máy tính khả
trình thông minh) là một sản phẩm của hãng General Instrumentsđặt cho
dòng sản phẩm đầu tiên của họ là PIC1650. Lúc này, PIC 1650 được
dùng để giaotiếp với các thiết bị ngoại vi cho máy chủ 16 bit CP1600, vì
vậy, người ta cũng gọi PIC với tên “Peripheral Interface Controller” (Bộ
điều khiển giao tiếp ngoại vi). CP1600 là một CPU tốt, nhưng lại kém về
các hoạt động xuất nhập, và vì vậyPIC 8-bit được phát triểnvào khoảng
năm 1975để hỗ trợ hoạt động xuất nhập cho CP1600. PIC sử dụng
microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được
sử dụng thời bấygiờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc
RISC, chạy một lệnh một chu kỳmáy (4 chu kỳ của bộ dao động). Năm
1985 General Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu
mới hủy bỏ hầu hết các dự án – lúc đó quá lỗi thời. Tuy nhiên, PICđược
bổ sung EPROM để tạo thành 1 bộ điều khiển vào ra khả trình. Ngày nay
rất nhiềudòng PIC được xuất xưởng với hàng loạt các module ngoại vi
tích hợp sẵn (như USART,PWM, ADC…), với bộ nhớ chương trình từ
512 Word đến 32K Word.
a) Một số đặc tính vi điều khiển PIC
−
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng,
nhưng chúng ta có thể điểm qua một vài nét như sau :
8/16 bit CPU, xây dựng theo kiến truc Harvard có sửa đổi Flash và
−
ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
Các cổng Xuất/ Nhập (I/ O) (mức logic thường từ 0V đến 5.5V, ứng với
−
−
logic 0 và logic 1)
8/16 bit Timer
Các chuẩn giao tiếp nối tiếp đồng bộ/ khung đồng bộ USART
Đồ án vi xử lý và vi điều khiển
Trang 3
GVHD : NGUYỄN QUỐC ĐỊNH
−
−
−
−
−
−
−
−
−
−
−
−
•
•
SVTH : NGUY ỄN HUY HOÀNG
Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
Bộ so sánh điện áp (Voltage Comparator)
Các module Capture/ Compare/ PWM
LCD 4
MSSP Peripheral dựng cho các giao tiếp I2C, SPI.
Bộ nhớ nội EPROM – có thể ghi/ xoá lớn tới 1 triệu lần
Module Điều khiển động cơ, đọc encoder
Hỗ trợ giao tiếp USB
b) Những đặc tính ngoại vi
Timer0 : 8- bit định thời/ đếm với 8- bit prescaler
Timer1 : 16- bit định thời/ đếm với prescaler, có thể được tăng lên trong
suốt chế độ Sleep qua thạch anh/ xung clock bên ngoài.
Timer2 : 8- bit định thời/đếm với 8- bit, prescaler và postscaler
Hai module 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
Độ phân giải lớn nhất của PWM là 10bit.- Có 13 ngõ I/O có thể điều
khiển trực tiếp
− Dòng vào và dòng ra lớn :
• 25mA dòng vào cho mỗi chân
• 20mA dòng ra cho mỗi chân.
c) Đặc điểm về tương tự
− 10 bit, với 8 kênh của bộ chuyển đổi tương tự sang số (A/D).
− Brown – out Reset (BOR).
−Module so sánh về tương tự.
• Hai bộ so sánh tương tự.
• Module điện áp chuẩn VREF có thể lập trình trên PIC.
− Có thể lập trình ngõ ra vào đến từ những ngõ vào của PIC và trên
d)
điện áp bên trong
− Những ngõ ra của bộ so sánh có thể sử dụng cho bên ngoài.
Các đặc điểm đặc biệt
− Có thể ghi/ xoá 100.000 lần với kiểu bộ nhớ chương trình Enhanced
−
−
−
−
−
−
Flash.
ghi/ xoá với kiểu bộ nhớ EPROM.
EPROM có thể lưu trữ dữ liệu hơn 40 năm.
Có thể tự lập trình lại dưới sự điều khiển của phần mềm.
Mạch lập trình nối tiếp qua 2 chân.
Nguồn đơn 5V cấp cho mạch lập trình nối tiếp.
Watchdog Timer (WDT) với bộ dao động RC tích hợp sẵn trên Chip
Đồ án vi xử lý và vi điều khiển
Trang 4
GVHD : NGUYỄN QUỐC ĐỊNH
−
−
−
e)
SVTH : NGUY ỄN HUY HOÀNG
cho hoạt động đáng tin cậy.
Có thể lập trình mờ bảo vệ.
Tiết kiệm năng lượng với chế độ Sleep.
Có thể lựa chọn bộ dao động.
Vi điều khiển PIC16F877A
PIC 16F877A là loại vi điều khiển 8 bit tầm trung của hãng microchip.
− PIC 16F877A có kiến trúc Havard, sử dụng tập lệnh kiểu RISC với
−
chỉ 35 lệnh cơ bản.
Tất cả các lệnh được thực hiện trong một chu kì lệnh ngoại trừ các
−
lệnh rẽ nhánh.
Sơ đồ chân với chip loại cắm 40 chân:
Đồ án vi xử lý và vi điều khiển
Trang 5
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Hình 2.1: Sơ đồ chân với chip loại cắm 40 chân
f)
Các cổng xuất nhập I/O:
Trong vi điều khiển PIC16F877A có 5 cổng:
- Cổng A gồm 6 chân: RA0, RA1.. RA5
- Cổng B gồm 8 chân: RB0, RB1,..RB7
- Cổng C gồm 8 chân: RC0, RC1, ..RC7
- Cổng D gồm 8 chân: RD0, RD1,..RD7
- Cổng E gồm 3 chân: RE0, RE1, RE2
Mỗi cổng thực chất được quản lý bởi các thanh ghi PORTA, PORTB,
PORTC, PORTD, PORTE nằm trong bộ nhớ RAM của vi điều khiển.
Hình 2.2: Các bank thanh ghi trong bộ nhớ
Đồ án vi xử lý và vi điều khiển
Trang 6
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Bộ nhớ RAM của vi điều khiển PIC 16F877A gồm 4 bank nhớ. Nhìn vào
các bank nhớ ta có thể thấy các thanh ghi được đặt tên và các thanh ghi đa
mục đích (General Purpose Register).
−
−
Các thanh ghi được đặt tên là các thanh ghi đặc biệt dùng để điều khiển,
quản lý hoặc thể hiện trạng thái của các khối chức năng trong vi điều khiển
Các thanh ghi đa mục đích được dùng để đặt biến trong một chương trình
ứng dụng của vi điều khiển. Nhìn vào bản đồ bộ nhớ RAM, ta thấy biến có
thể đặt từ địa chỉ 20F đến 7Fh trong bank nhớ 0, A0h-EFh, 120h-16Fh,
1A0h-1EFh. Trở lại vấn đề về các cổng, tới đây ta có thể đưa ra nhận xét:
Thanh ghi PORTA phản ánh trạng thái của các chân cổng A, nghĩa là muốn
tín hiệu đầu ra của các chân cổng A như thế nào ta chỉ việc đưa giá trị vào
các bit tương ứng 7 trên thanh ghi PORTA. Cũng như khi đọc giá trị của
thanh ghi PORTA ta sẽ biết được trạng thái của các chân cổng A.
Ví dụ: Muốn RA0 ở mức logic 1 (mức 5V), RA1 ở mức logic 0 (mức
0V), RA2 ở mức logic 1, RA3 ở mức logic 0, RA4 ở mức logic 1, RA5 ở
mức logic 1, ta chỉ việc gán giá trị 000110101 cho thanh ghi PORTA.
g)
Tính đa chức năng của một chân trên vi điều khiển:
Nhìn vào sơ đồ chân của vi điều khiển, ta có thể thấy một số chân của
vi điều khiển có tên gồm nhiều phần với dấu gạch chéo.
Ví dụ: RA0/AN0, RC7/RX/DT, RC6/TX/CK.
Đây chính là tính đa chức năng của một chân trên vi điều khiển hay
còn gọi là sự dồn kênh. Ý nghĩa của nó là: Bình thường nếu không được
cài đặt thì tấc cả các chân trên 5 cổng A, B, C, D, E là các chân vào ra số
I/O. Nếu trong chương trình ta có cài đặt một chức năng nào đó như
RS232, ADC hoặc PWM v.v thì các chân tương ứng với chức năng đó sẽ
hoạt động theo chức năng đó. Khi đó chân này sẽ không được dùng làm
chân vào ra số như bình thường nữa.
h)
Cài đặt vào/ra cho các chân vào ra số trên các cổng:
Các chân vào/ra số trên vi điều khiển PIC phải được cài đặt là chân
vào hoặc chân ra thì mới hoạt động đúng chức năng. Việc một chân trên
Đồ án vi xử lý và vi điều khiển
Trang 7
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
cổng X (X=A,B,..E) được qui định là đầu ra hay đầu vào phụ thuộc vào
bit tương ứng trên thanh ghi TRISX (X=A,B,..E) là 0 hay 1.
Các đặc tính ngoại vi:
Bao gồm các khối chức năng sau:
- Timer0: Bộ đếm 8 bit với bộ chia tần số 8 bit.
- Timer1: Bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng
i)
đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế
2.1.2
a)
độ sleep.
- Timer2: Bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
Động cơ điện một chiều – Encoder
Động cơ một chiều
Động cơ điện một chiều là động cơ điện hoạt động với dòng điện một
chiều.
Động cơ điện một chiều ứng dụng rộng rãi trong các ứng dụng dân
dụng cũng như công nghiệp. Thông thường động cơ điện một chiều chỉ
chạy ở một tốc độ duy nhất khi nối với nguồn điện, tuy nhiên vẫn có thể
điều khiển tốc độ và chiều quay của động cơ với sự hỗ trợ của các mạch
điện tử cùng phương pháp PWM.
Hình 2.3: Động cơ một chiều
Đồ án vi xử lý và vi điều khiển
Trang 8
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Encoder
Đo tốc độ động cơ dùng encoder, tín hiệu từ encoder tạo ra các dạng
b)
xung vuông có tần số thay đôi phụ thuộc vào tốc độ động cơ. Do đó các
xung vuông này được đưa vào bộ vi xử lý để đếm số xung trong khoảng
thời gian cho phép từ đó ta có thể tính được giá trị vận tốc của động cơ.
Đây cũng là phương pháp mà người ta sử dụng để ổn định tốc độ động cơ
hay điều khiển nhanh chậm….
Hình 2.4 : Cấu tạo và hoạt động của Encoder
Nguyên tắc hoạt động của Encoder
Nguyên lý cơ bản của encoder, đó là một đĩa tròn xoay, quay quanh
trục. Trên đĩa có các lỗ (rãnh). Người ta dùng một đèn led để chiếu lên
mặt đĩa . Khi đĩa quay, chỗ không có lỗ (rãnh), đèn led không chiếu
xuyên qua được, chỗ có lỗ (rãnh), đèn led sẽ chiếu xuyên qua.Khi đó,
phía mặt bên kia của đĩa, người ta đặt một con mắt thu. Với các tín hiệu
có, hoặc không có ánh sáng chiếu qua, người ta ghi nhận được đèn led có
chiếu qua lỗ hay không.Số xung đếm được và tăng lên nó tính bằng số lần
ánh sáng bị cắt!
Đồ án vi xử lý và vi điều khiển
Trang 9
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Như vậy là encoder sẽ tạo ra các tín hiệu xung vuông và các tín hiệu
xung vuông này được cắt từ ánh sáng xuyên qua lỗ. Nên tần số của xung
đầu ra sẽ phụ thuộc vào tốc độ quay của tấm tròn đó. Môt số Encoder có
2 tín hiệu ra lệch pha nhau 90. Hai tín hiệu này có thể xác định được
chiều quay của động cơ.
2.1.3
Màn hình LCD 16x2
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử
dụng trong rất nhiều các ứng dụng của VĐK. LCD có rất nhiều ưu điểm
so với các dạng hiển thị khác: Nó có khả năng hiển thị kí tự đa dạng, trực
quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo
nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá
thành rẽ …
Hình 2.5: Vị trí các chân của LCD
∗
Chức năng của các chân:
Đồ án vi xử lý và vi điều khiển
Trang 10
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Chân
1
2
3
Ký hiệu
VSS
VDD
VEE
Mức Logic
-
I/0
-
4
RS
0/1
I
5
R/W
0/1
I
6
7-14
15
16
E
DB0 - DB7
LampLamp+
0/1
0/1
-
I
I/0
-
Chức năng
Nguồn (GND)
Nguồn (+5V)
Chỉnh độ tương phản
0 = Nhập lệnh
1 = Nhập dữ liệu
0 = Ghi dữ liệu
1= Đọc dữ liệu
Tín hiệu cho phép
Bus dữ liệu từ 0⇒7
Chân âm đèn LCD
Chân dương đèn LCD
Các thanh ghi:
Thanh ghi IR: Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng.
∗
−
Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi
−
IR. Ví dụ: Lệnh hiển thị màn hình con trỏ có mã lệnh “00001110”
Thanh ghi DR: Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào
vùng Ram Ddram hoặc GGRAM ( ở chế độ ghi) hoặc dùng để chứa dữ
liệu từ 2 vùng Ram này gửi ra cho MPU (ở chế độ đọc).
Các mã lệnh trong LCD
DDRAM đây là vùng dùng để hiển thị chứa các địa chỉ trên ram ứng
∗
với các ô kí tự trên màn hình.
Hình2.6: Địa chỉ các ô hiển thị trên LCD
Đồ án vi xử lý và vi điều khiển
Trang 11
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
CGROM chứa các mẫu kí tự loại 5×7 hoặc 5×10 điểm ảnh ký tự và có
địa chỉ là 8bit.
Hình 2.7: Địa chỉ các ký tự của LCD
2.1.4
Modul điều khiển động cơ L298
Mạch điều khiển động cơ DC L298 có khả năng điều khiển 2 động cơ DC,
dòng tối đa 2A mỗi động cơ, mạch tích hợp diod bảo vệ và IC nguồn 7805
giúp cấp nguồn 5V DC cho các modul khác (chỉ sử dụng 5V nếu nguồn cấp
< 12VDC).
Đồ án vi xử lý và vi điều khiển
Trang 12
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Hình 2.8: Modul L298
Thông số kỹ thuật:
•
IC chính: L298 Dual Full Brigde Driver
•
Điện áp đầu vào: 5~30VDC
•
Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor)
•
Công suất tối đa: 25W 1cầu (lưu ý công suất = dòng điện x điện áp nên
áp cấp vào càng cao, dòng càng nhỏ, công suất có định 25W).
•
Mức điện áp logic: Low-0.3V~1.5V, High: 2.3V~Vss
•
Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃
2.1.5
Thạch anh điện tử
Thạch anh điện tử là một linh kiện làm bằng tinh thể đá thạch anh
được mài phẳng và chính xác. Linh kiện thạch anh làm việc dựa trên hiệu
ứng áp điện. Hiệu ứng này có tính thuận nghịch. Khi áp một điện áp vào
2 mặt của thạch anh, nó sẽ bị biến dạng. Ngược lại, khi tạo sức ép vào 2 bề
mặt đó, nó sẽ phát ra điện áp.
Hình 2.9 Thạch anh điện tử
Đồ án vi xử lý và vi điều khiển
Trang 13
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Ứng dụng của thạch anh:
Cho ra tần số rất ổn định, sử dụng rất nhiều trong các đồng hồ điện tử
(như đồng hồ đeo tay, đồng hồ để bàn...), trong các thiết bị đo lường điện
tử (tạo xung chuẩn), trong mạch đồng bộ màu của TV, VCR, trong các
thiết bị tin học (máy vi tính, các thiết bị nối với máy vi tính), trong các
nhạc cụ điện tử như Piano điện, organ...
2.2
Tính toán linh kiện trong hệ thống
− Ta sử dụng nguồn adapter 9V nối dây qua L298 do L298 được tính
−
hợp IC7805 nên sẽ cho đầu ra 5V cung cấp nguồn cho vi điều khiển.
Điện trở cho các nút bấm ta chọn trở có giá trị 4.7k để có dòng đầu
−
vào là mA < 25mA (dòng vào lớn nhất cho mỗi chân)
Để có thể đo được tốc độ động cơ ta phải dùng thạch anh 20MHz để
−
nâng cao tốc độ xử lý của vi điều khiển thì ta mới có kết quả chính xác
Tra trong datasheet của pic16F877A(tr146) để tăng sự ổn định cho
−
thạch anh ta sử dụng tụ gốm có giá trị 33pF
Chọn biến trở vuông có giá trị 1k Ω để điều chỉnh độ tương phản cho
LCD
CHƯƠNG 3: THUYẾT KẾ MẠCH NGUYÊN LÝ
Đồ án vi xử lý và vi điều khiển
Trang 14
GVHD : NGUYỄN QUỐC ĐỊNH
3.1
SVTH : NGUY ỄN HUY HOÀNG
Thuyết kế mạch nguyên lý
Hình 3.1 Sơ đồ mạch nguyên lý
3.2
Lưu đồ thuật toán của chương trình chính
a) Chương trình chính
Đồ án vi xử lý và vi điều khiển
Trang 15
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Cài đặt vào ra, Timer0,
LCD,Thiết lập PWM
Hiển thị “START VDK” trên
LCD
Đ
S
RA3==0
(START)
Đ
S
RA3==0
(START)
RB1=1,RB2=0,XUNG=0, CHIEU =
+,
Hiển thị “TOC DO” và “+00 v/s trên
LCD
GIE=1,TMR0IE=1,INTE=1
RA0==0
(TANG)
S
Kiểm tra nút giảm
Đ
S
RA0==1
(TANG)
Đ
CCPR1L=W
Đồ án vi xử lý và vi điều khiển
180-W=W
Trang
16
RA2==1
RA2==0
RA1==1
RA1==0
(GIAM)
(DAO)
STATUS,Z==1
CCPR1L=W
0-W=W
Đ
W =30
= 30
S
SS
SS
CCPR1L+30=
CCPR1L-30=
CCPR1L
Kiểmtra
Kiểm tranút
nútSTOP
đảo
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
Đ
RB1==1
RB1=1
S
RB2=0
Đồ án vi xử lý và vi điều khiển
RB1=0
Trang
17
RA3==1
RA3==0
CHIEU = +
Đ(STOP)
RB2=1
RB1=0,RB2=0,XUNG=0
Hiển thị “START VDK” trên
LCD = −
GIE=0,TMR0IE=0,INTE=
CHIEU
Đ
S
Kiểmtra nút TANG
GVHD : NGUYỄN QUỐC ĐỊNH
b)
SVTH : NGUY ỄN HUY HOÀNG
Chương trình ngắt
Lưu giá trị các thanh ghi vào
Kiểm tra ngắt ngoài
các biến tạm
INTF==1
GIE=1
Đồ án vi xử lý và vi điều khiển
CALL chia 10
Trang
18
GIE=0,
INTF=0
Trả lại giá trị của thanh
ghi
trong biến tạm thời
XUNG=XUNG+1
CALL HTTOCDO
RETFIE
XUNG=0
GIE=0,TMR0IF=0
TMR0=24
Lap-1==0
LAP=100
GVHD : NGUYỄN QUỐC ĐỊNH
c)
SVTH : NGUY ỄN HUY HOÀNG
Chương trình chạy bằng ngôn ngữ ASEMBLY:
#include p16f877a.inc
__config _HS_OSC &_WDT_OFF &_LVP_OFF
Đồ án vi xử lý và vi điều khiển
Trang 19
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
cblock 0x20
XUNG,VONG1,VONG2,VONG3,CHIEU,CHUC,DONVI,DEM,STATUS_TE
MP,W_TEMP,LAP,
PCLATH_TEMP,FSR_TEMP,HT
ENDC
#define RS PORTC,6
#define E PORTC,7
Org 0x00
goto MAIN
org 0x04
goto NGAT
org0x05
;----CHUONG TRINH CHINH----;
MAIN
;---CAI DAT VAO RA---;
BSF STATUS,5
CLRF TRISD
CLRF TRISC
MOVLW 0X06
MOVWF ADCON1
MOVLW D'179'
MOVWF PR2
MOVLW B'00001111'
Đồ án vi xử lý và vi điều khiển
Trang 20
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
MOVWF TRISA
BSF TRISB,0
BCF TRISB,1
BCF TRISB,2
BCF TRISB,3
MOVLW B'00000111'
MOVWF OPTION_REG
CALL DELAY
CALL DELAY
BCF STATUS,5 ;CHUYEN QUA BANK0
;---CAI DAT TIMER1---;
MOVLW D'247'
MOVWF TMR0
MOVLW D'100'
MOVWF LAP
;TA CO: V=(N/T*D)
;
V:VAN TOC CAN DO
;
N:SO XUNG DO DUOC
;
T:THOI GIAN DO
;
D:DO PHAN GIAI DONG CO
;DE V=N THI T*D=1
;MA D=20 THI T=1/20(s)
;THOI GIAN DINH THOI=(256-TIMER0)*N*Tl*LAP
;TIMER0=247,N=256,LAP=100,TL=0.2
Đồ án vi xử lý và vi điều khiển
Trang 21
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
;THOI GIAN DINH THOI=46080(us)
;---CAI DAT PWM---;
MOVLW B'00000110'
MOVWF T2CON
BSF CCP1CON,2
BSF CCP1CON,3
MOVLW D'0'
MOVWF CCPR1L
CLRF XUNG
;---CAI DAT LCD---;
MOVLW 0X38
;LCD CAI DAT 8 BIT
CALL GHILENH
CALL DELAY
MOVLW 0X0C
CALL GHILENH
CALL DELAY
;--HIEN THI LCD---;
;HIEN THI "DO AN VXL-VDK"
HIENTHILCD
MOVLW 0X80
CALL GHILENH
MOVLW 'S'
Đồ án vi xử lý và vi điều khiển
Trang 22
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
CALL GHIKYTU
MOVLW 'T'
CALL GHIKYTU
MOVLW 'A'
CALL GHIKYTU
MOVLW 'R'
CALL GHIKYTU
MOVLW 'T'
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW 'V'
CALL GHIKYTU
MOVLW 'D'
CALL GHIKYTU
MOVLW 'K'
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW 0XC0
CALL GHILENH
MOVLW ' '
CALL GHIKYTU
MOVLW ' '
Đồ án vi xử lý và vi điều khiển
Trang 23
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
MOVLW ' '
CALL GHIKYTU
GOTO START
GHILENH
BCF RS
MOVWF PORTD
BSF E
BCF E
Đồ án vi xử lý và vi điều khiển
Trang 24
GVHD : NGUYỄN QUỐC ĐỊNH
SVTH : NGUY ỄN HUY HOÀNG
CALL DELAY
RETURN
GHIKYTU
BSF RS
MOVWF PORTD
BSF E
BCF E
CALL DELAY
RETURN
DELAY
nop
nop
movlw d'149'
movwf VONG1
movlw d'3'
movwf VONG2
movlw d'1'
movwf VONG3
decfsz VONG1,f
goto $-1
decfsz VONG2,f
goto $-3
decfsz VONG3,f
goto $-5
Đồ án vi xử lý và vi điều khiển
Trang 25