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

ĐỒ ÁN VI XỬ LÝ VÀ VI ĐIỀU KHIỂN: THIẾT KẾ BỘ ĐIỀU KHIỂN TỐC ĐỘ CỦA ĐỘNG CƠ MỘT CHIỀU SỬ DỤNG HỢP NGỮ(Assembly)

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

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


×