Professional Documents
Culture Documents
Hệ Thống Điều Khiển Quạt Tự Động
Hệ Thống Điều Khiển Quạt Tự Động
----***----
MỤC LỤC
Thế giới: Các nước tiên tiến và phát triển đã ứng dụng rộng rãi các hệ
thống điều hoà không khí, đặc biệt ở những nước có khí hậu giống với nước ta.
Ở Việt Nam: Hệ thống hầu như chỉ sử dụng trong công nghiệp, các nhà
máy xí nghiệp và trong các trường đại học, chưa phổ biến rộng rãi trong các hộ dân
và các trường trung học do giá thành còn khá cao.
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Cảm biến nhiệt độ LM35 là loại cảm biến tương tự, hoạt động chính xác,
sai số nhỏ, kích thước gọn nhẹ, được sản xuất theo công nghệ bán dẫn dựa trên các
chất bán dẫn dễ bị tác động bởi sự thay đổi nhiệt độ. Đầu ra của cảm biến là điện áp
(V) tỉ lệ với nhiệt độ mà nó được đặt trong môi trường cần đo. Loại cảm biến
nhiệt độ tương tự này cũng rất dễ dàng đọc thông số, giá trị đo bằng các hàm đơn
giản.
Cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà
điện áp đầu ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius. Chúng
cũng không yêu cầu cân chỉnh ngoài vì vốn chúng đã được cân chỉnh. Cảm biến
LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại chân Vout
(chân giữa) ứng với mỗi mức nhiệt độ.
Thông số kỹ thuật:
- Điện áp đầu vào : ViDC = 4V đến 30V
- Điện áp đầu ra : VoDC = -1V đến 6V
- Dòng đầu ra : Io = 10mA
- Dòng tiêu thụ: I = 60uA
- Độ phân giải điện áp đầu ra : 10mV/1°C
- Dải đo nhiệt độ : -55°C đến 150°C
Ưu điểm : Giá thành rẻ, chống nhiễu khá tốt, mạch xử lí đơn giản, độ
chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng 2°C tới 150°C,
thích hợp đo nhiệt độ môi trường hoặc do nhiệt độ bảo vệ các mạch điện tử.
Nhược điểm : Tính chịu nhiệt độ cao kém (giới hạn ở 150°C) , kém bền,
khi nhiệt độ vượt ngưỡng bảo vệ có thể làm hỏng cảm biến.
Có nhiều cách để hiển thị nhưng kết quả cho hệ thống, chẳng hạn như có
thể dùng LED đơn báo hiệu, có thể dùng LED 7 đoạn hoặc có thể dùng các loại
LCD… lựa chọn thiết bị hiển thị đúng với nhu cầu là điều thiết yếu để đảm bảo tính
rõ ràng, hợp lí của hệ thống.
a) Sơ đồ chân:
Trong 16 chân của LCD được chia làm 4 dạng tín hiệu như sau:
- Các chân cấp nguồn: Chân số 1 nối mass (0V), chân thứ 2 là VDD nối nguồn +5V.
Chân thứ 3 dùng để chỉnh độ tương phản (contrast) thường nối với biến trở, chỉnh
cho đến khi thấy được kí tự thì ngừng.
- Các chân điều khiển: Chân số 4 là chân RS dung để điều khiển lựa chọn thanh ghi.
Chân R/W dung để điều khiển quá trình đọc và ghi. Chân E là chân cho phép.
- Các chân dữ liệu D0 – D7: Chân số 7 đến chân số 14 là 8 chân dung để trao đổi
dữ liệu giữa thiết bị điều khiển và LCD
- Các chân LED_A và LED_K: Chân số 15 và 16 là 2 chân dùng để cấp nguồn cho
đèn nền để có thể nhìn thấy vào ban đêm.
Chân số Tên chân Input/Output Chức năng
1 VSS Power GND
2 VDD Power +5V
3 VO Analog Contrast Control
4 RS Input Register Slectect
5 R/W Input Read/Write
6 E Input Enable (strobe)
7 D0 I/O Data (LSB)
8 D1 I/O Data
9 D2 I/O Data
10 D3 I/O Data
11 D4 I/O Data
12 D5 I/O Data
13 D6 I/O Data
14 D7 I/O Data (MSB)
15 LED_A Input Backlight Anode
16 LED_K Input Backlight Cathode
b) Thông số kỹ thuật:
Sơ đồ khối gồm có 4 phần: Bộ điều khiển LCD, bảng kí tự LCD, bộ thúc tín hiệu
các đoạn, đèn nền.
Bộ điều khiển LCD có 3 vùng nhớ, mỗi vùng có chức năng riêng. Bộ điều khiển
phải khởi động trước khi truy cập vào các vùng nhớ.
a) Bộ nhớ DDRAM (Display Data RAM):
Bộ nhớ chứa dữ liệu để hiển thị, lưu trữ những mã kí tự để hiển thị lên màn
hình. Mã kí tự được lưu trong vùng DDRAM sẽ tham chiếu với từng vùng bitmap
kí tự được lưu trữ trong CGROM (Character Generator ROM) đã được định nghĩa
trước hoặc đặt trong vùng do người sử dụng định nghĩa.
b) Bộ phát kí tự ROM – CGROM (Character Generator ROM):
Bộ phát kí tự ROM chứa các kiểu bitmap cho mỗi kí tự được định nghĩa
trước mà LCD có thể hiển thị.
Mã kí tự lưu trong DDRAM cho mỗi vùng kí tự sẽ được tham chiếu đến một
vị trí trong CGROM.
c) Bộ phát kí tự RAM – CGRAM (Character Generator RAM):
Bộ phát kí tự RAM cung cấp vùng nhớ để tạo ra 8 kí tự tuỳ ý. Mỗi kí tự gồm
5 cột và 8 hàng.
2.2.4 Tập lệnh điều khiển LCD:
Lệnh RS RW D7 D6 D5 D4 D3 D2 D1 D0 Mô tả Thời
gian
thực
thi
NOP 0 0 0 0 0 0 0 0 0 0 Không hoạt 0
động
Clear 0 0 0 0 0 0 0 0 0 1 Ghi một 1,52
Display khoảng trống ms
vào tất cả các ô
nhớ trong
DDRAM và trả
địa chỉ đếm về
0
Cursor 0 0 0 0 0 0 0 0 1 0 Trả bộ đếm địa 39 us
Home chỉ về 0, trả
con trỏ về vị trí
gốc. Nội dung
DDRAM
không đổi
Entry 0 0 0 0 0 0 0 1 I/D S I/D: Bộ đếm 39 us
Mode Set tăng hoặc giảm
1 đơn vị khi có
hành động đọc
trong vùng
DDRAM.
S: Khi S=1 thì
toàn bộ nội
dung hiển thị
dịch sang phải
(I/D=1) hoặc
sang trái
(I/D=0), không
dịch khi S=0.
Display 0 0 0 0 0 0 1 D C B D: Hiển thị 39 us
Control màn hình khi
bằng 1.
C: Hiển thị con
trỏ khi bằng 1
B: Nhấp nháy
con trỏ khi
bằng 1
Cursor 0 0 0 0 0 1 S/C R/L 0 0 Dịch chuyển 39 us
Display con trỏ hay dữ
Shift liệu hiển thị
sang trái hoặc
phải mà không
cần hành động
ghi/đọc dữ
liệu. Dữ liệu
trong DDRAM
không đổi.
Function 0 0 0 0 1 DL N F 0 0 Thiết lập giao 39 us
Set thức dữ liệu 4
bit (DL=1)
hoặc 8 bit
(DL=0), thiết
lập số hàng
hiển thị (N=0
hiển thị hàng 1,
LCD sử dụng mã ASCII để hiển thị các kí tự, số, kí hiệu,…tổng cộng là 256 kí tự.
Trong bảng mã ASCII, các số hiển thị trên LCD có mã từ 0x30 đến 0x39 và các kí
tự la tinh có mã từ 0x41 đến 0x5A.
- Khối cổng chân I/O: là cầu nối giữa vi xử lý và các ngoại vi bên ngoài đưa tín hiệu
vào cho vi xử lý như các cảm biến, các công tắc, nút nhấn. Hoặc đưa tín hiệu ra để
điều khiển các ngoại vi như LED 7 đoạn hoặc LCD
- Khối bộ nhớ: là nơi lưu trữ các lệnh chương trình để vi xử lý thực hiện và cũng là
nơi lưu trữ các dữ liệu trước và sau khi xử lý
- Khối Timer: là một bộ đếm xung nhịp (xung clock), có chứa các thanh ghi chứa giá
trị đếm được và dùng dữ liệu đó để quét led, tạo xung PWM,….
- Khối ADC: chuyển đổi tín hiệu tương tự nhận được từ các cảm biến thông qua các
chân I/O thành tính hiệu số để vi xử lý có thể xử lý được
- Khối CCP/PWM: điều chế độ rộng xung nhằm làm thay đổi giá trị trung bình của
điện áp hoặc dòng điện, từ đó có thể dùng để điều khiển tốc độ động cơ DC
- Khối tạo xung dao động: dùng để tạo xung cấp cho các hoạt động của vi xử lý và
các ngoại vi bên trong con vi điều khiển
- Khối truyền dữ liệu nối tiếp: dùng để truyền dữ liệu giữa các thiết bị với vi điều
khiển mà không tiêu tốn quá nhiều cổng I/O trên vi điều khiển
- Khối nguồn: cung cấp nguồn nuôi cho vi xử lý và các ngoại vi liên quan có trong vi
điều khiển đó
- Bộ dao động nội chính xác: Sai số ± 1% và có thể lựa chọn tần số dao động nội từ
31 kHz đến 8 Mhz bằng phần mềm.
- Chế độ bắt đầu 2 cấp tốc độ.
- Mạch phát hiện hỏng dao động thạch anh cho các ứng dụng quan trọng.
- Có chuyển mạch nguồn xung clock trong quá trình hoạt động để tiết kiệm công
suất.
- Có chế độ ngủ để tiết kiệm năng lượng.
- Dãy điện áp hoạt động rộng từ 2V đến 5,5V.
- Tầm nhiệt độ làm việc theo chuẩn công nghiệp.
- Có mạch reset khi có điện (Power On Reset – POR).
- Có bộ định thời chờ ổn định điện áp khi mới có điện (Power up Timer – PWRT) và
bộ định thời chờ dao động hoạt động ổn định khi mới cấp điện (Oscillator Startup
Timer – OST).
- Có mạch tự động reset khi phát hiện nguồn điện cấp bị sụt giảm, cho phép lựa chọn
bằng phần mềm (Brown out Reset – BOR).
- Có bộ định thời giám sát (Watchdog Timer – WDT) dùng dao động trong chip cho
phép bằng phần mềm (có thể định thời lên đến 268 giây).
- Đa hợp ngõ vào reset với ngõ vào có điện trở kéo lên.
- Có bảo vệ code đã lập trình.
- Bộ nhớ Flash cho phép xóa và lập trình 100,000 lần.
- Bộ nhớ Eeprom cho phép xóa và lập trình 1,000,000 lần và có thể tồn tại trên 40
năm.
- Cho phép đọc/ghi bộ nhớ chương trình khi mạch hoạt động.
- Có tích hợp mạch gỡ rối.
c) Sơ đồ chân:
b) Điện trở:
Điện trở là đại lượng vật lý đặc trưng cho tính chất cản trở dòng điện của một
vật thể dẫn điện. Nó được định nghĩa là tỷ số của hiệu điện thế giữa hai đầu vật thể
đó với cường độ dòng điện đi qua nó:
𝑈
𝑅=
𝐼
- Trong đó:
+ U là hiệu điện thế giữa hai đầu vật dẫn, đơn vị Volt (V)
+ I là cường độ dòng điện đi qua vật dẫn, đơn vị Ampe (A)
+ R là điện trở vật dẫn, đơn vị Ohm (Ω)
Quy ước màu quốc tế :
Màu sắc Giá trị
Đen 0
Nâu 1
Đỏ 2
Cam 3
Vàng 4
Xanh lá 5
Xanh dương 6
Tím 7
Xám 8
Trắng 9
Nhũ vàng -1
Nhũ bạc -2
- Cách đọc trị số điện trở 4 vòng màu được mô tả qua hình dưới đây:
Hình 2.12. Cách tính giá trị điện trở bằng các vòng màu
c) Tụ điện:
Tụ điệnlà một loại linh kiện điện tử thụ độngtạo bởi hai bề mặt dẫn điện được
ngăn cách bởi điện môi. Khi có chênh lệch điện thế tại hai bề mặt, tại các bề mặt sẽ
xuất hiện điện tích cùng điện lượng nhưng trái dấu.
Trong đó,
d) Biến trở:
Biến trở là các thiết bị có điện trở thuần có thể biến đổi được theo ý muốn. Chúng
có thể được sử dụng trong các mạch điện để điều chỉnh hoạt động của mạch điện.
Điện trở của thiết bị có thể được thay đổi bằng cách thay đổi chiều dài của dây
dẫn điện trong thiết bị, hoặc bằng các tác động khác như nhiệt độ thay đổi, ánh sáng
hoặc bức xạ điện từ, ...
- Khi được cấp nguồn, toàn bộ hệ thống sẽ được cấp nguồn, khối hiển
thị, khối cảm biến, quạt sẽ đợi tín hiệu điều khiển từ khối xử lí trung tâm.
- Khối xử lí trung tâm bắt đầu đọc dữ liệu từ khối cảm biến nhiệt độ,
sau đó xử lí rồi xuất dữ liệu nhiệt độ đã được xử lí ra khối hiển thị LCD
- Khối hiển thị LCD sẽ hiển thị thời gian chạy, thời gian nghỉ của quạt.
Các giá trị thời gian này được cài đặt bởi khối điều khiển. Khi khối điều
khiển tác động sẽ gửi các tín hiệu điều khiển đến khối xử lí trung tâm, từ đó
xử lí các tín hiệu điều khiển và xuất ra màn hình các giá trị thời gian cài đặt.
- Khối quạt lúc này sẽ chờ tín hiệu điều khiển từ khối xử lí trung tâm.
Khi khối điều khiển tác động cho phép quạt hoạt động, khối xử lí trung tâm
sẽ nhận tín hiệu này và điều khiển khối quạt theo thời gian đã được cài đặt
sẵn.
Biến áp: Biến đổi dòng xoay chiều 220V thành dòng xoay chiều có điện áp
phù hợp và ngăn cách mạch chỉnh lưu với mạng điện xoay chiều về một chiều.
Mạch chỉnh lưu: Chuyển điệp áp U2 thành dạng điện áp một chiều nhưng
vẫn còn một ít thành phần của sóng sin từ ngõ vào.
Bộ lọc: San bằng điện áp một chiều UT thành dòng một chiều ổn định, ít
nhấp nhô và răng cưa, loai bỏ các thành phần gợn sóng.
Bộ ổn áp: Ổn định điện áp ra ở một giá trị cụ thể như mong muốn mà không
phụ thuộc vào điện áp đầu vào.
c) Biến áp:
Nguồn áp sử dụng lưới điện xoay chiều 220V – 50Hz và điện áp đầu ra của bộ
nguồn 1 là 5VDC-1A, nguồn 2 là 12VDC-1A.
Công suất nguồn ra : P = P1 + P2 = 5x1 + 12x1 = 17 (W)
Sinh viên sử dụng biến áp có điện áp vào là 220 VAC, có điện áp ra
VOAC = 18 VAC và dòng tải IOAC = 2A
d) Mạch chỉnh lưu và lọc nguồn sau chỉnh lưu:
- Phương án 1: Sử dụng mạch chỉnh lưu bán kỳ (Chỉnh lưu nửa sóng).
Ở phương án này, chỉ có một nửa chu kỳ được chỉnh lưu, do đó mạch
chỉnh lưu cho ra hiệu suất thấp, dạng sóng rang cưa lớn, không ổn định
khi dùng để làm mạch nguồn ổn áp cho các linh kiện điện tử.
- Phương án 2: Sử dụng mạch chỉnh lưu toàn kỳ (Chỉnh lưu toàn sóng).
Đối với chỉnh lưu toàn kỳ, sinh viên sử dụng cầu diode để chỉnh lưu, với
hiệu suất chỉnh lưu cao hơn bán kỳ, cho ra dạng sóng sau chỉnh lưu ổn
định, điện áp ra liên tục, sóng răng cưa nhỏ dễ dàng lọc thành dạng
phẳng. Khi điện áp lưới có giá trị lớn nhất là Umax = 240 VAC, dòng lớn
nhất qua diode sẽ là 2A. Điện áp sau chỉnh lưu là:
U = 18√2 – 1,4 = 24 V
- Từ các lựa chọn tính toán trên, sinh viên chọn mạch cầu diode 50V – 3A cho
mạch chỉnh lưu.
e) Khối ổn áp:
Do dễ tìm mua, sử dụng và hiệu suất làm việc cao, lắp ráp đơn giản nên
sinh viên sẽ sử dụng khối ổn áp họ IC LM78xx, cụ thể là IC LM7805 cho điện áp
đầu ra 5V và IC LM7812 cho điện áp đầu ra là 12V.
Các đặc tính của IC LM7805 ở 25oC
- Điện áp đầu vào : Vi = 7,5V – 20V
- Điện áp đầu ra : Vo = 5V
- Điện áp sụt : Vdrop = 2V
- Dòng đầu ra: Io= 5mA – 1A
- Nhiệt độ hoạt động : Tj = 0oC – 125oC
Hình 3.11. Sơ đồ nguyên lý cảm biến LM35 kết nối với vi điều khiển
Thông số kỹ thuật :
- Điện áp định mức: Uđm = 12 (V)
- Dòng điện định mức: Iđm = 0,2 (A)
- Điện áp khởi động: Ustart = 7 (V)
- Công suất ngõ vào: Pin = 3 (W)
- Điện áp hoạt động: Uo = 10,2 ~ 13.8 (V)
- Nhiệt độ hoạt động: -10oC ~ 70oC
Quạt sẽ được điều khiển bằng khối xử lí trung tâm, nhưng do đầu ra của vi
điều khiển chỉ đáp ứng được 5V sẽ không điều khiển được hiệu năng của quạt nên
ta sẽ điều khiển quạt bằng một module trung gian. Có rất nhiều module điều khiển
động cơ DC khác nhau tuỳ theo công suất của động cơ và nhu cầu của người sử
dụng. Đối với quạt 12V DC không chổi than, ta nên dùng module cầu H sử dụng IC
L298N để điều khiển. Việc sử dụng mạch cầu H L298N sẽ phù hợp với các động cơ
nhỏ, công suất thấp.
Hình 3.14. Sơ đồ nguyên lý cầu H L298 kết nối với vi điều khiển
Chân ENA của L298 được kết nối với chân RC2 (Chân CCP1) của
vi điều khiển.
Chân IN1, VS, SENSA kết nối với nguồn 12 V và được nối song
song với một tụ điện có giá trị điện dung 100nF theo hướng dẫn
của nhà sản xuất.
Chân VCC nối với nguồn 5V và được nối song song với một tụ
điện có giá trị điện dung 100nF theo hướng dẫn của nhà sản xuất.
Chân GND nối với GND
Chân OUT1 được kết nối với chân VCC của quạt
Hình
Hình 5.8.
5.8. HệCài đặt khi
thống thông
vừasốcấp
thờinguồn
gian
Các nút nhấn có chức năng cài đặt thời gian cho hệ thống. Trước khi cho
phép quạt hoạt động phải cài đặt các thông số thời gian cho quạt.
Sau khi kiểm tra và thiết lập hệ thống thì có thể cho phép quạt chạy bằng nút
nhấn ONOFF. Hệ thống sẽ hoạt động liên tục cho đến khi được tắt.
Về khuyết điểm:
- Về khả năng định thời của PIC16F887 còn một số hạn chế nên dẫn
đến sai lệch so với thời gian thực.
- Tốc độ đáp ứng khá chậm vì chương trình sử dụng nhiều tài
nguyên của vi điều khiển.
- Diện tích bảng mạch còn khá lớn do sinh viên chưa có nhiều kinh
nghiệm trong thiết kế.
- Một số chân của vi xử lí còn bỏ trống, chưa tận dụng khai thác
được hết khả năng của vi điều khiển.
[1] Nguyễn Đình Phú(2014), “Giáo trình vi xử lý Vi Điều Khiển PIC”, Nhà
xuất bản Trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM.
[2] Nguyễn Đình Phú(2/2014), “Giáo trình thực hành Vi Điều Khiển PIC”,
Nhà xuất bản Trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM.
[3] Trương Thị Bích Ngà(9/2012), “tài liệu thực hành Điện tử cơ bản”, Nhà
xuất bản Trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM.
PHỤ LỤC
Code chương trình viết bằng CCS:
#INCLUDE <TV_16F887.C>
#INCLUDE <TV_LCD.C>
#INT_TIMER1
VOID INTERRUPT_TIMER1()
{
BDN++;
SET_TIMER1(3036);
}
ELSE
{
PHUT_WAIT++;
PHUT_WAIT_SET = PHUT_WAIT;
}
BREAK;
}
WHILE (!INPUT(UP));
}
}
}
GIAY_SET = GIAY;
}
BREAK;
CASE 2: IF (PHUT==0) PHUT=60;
ELSE
{
PHUT--;
PHUT_SET = PHUT;
}
BREAK;
CASE 3: IF (PHUT_WAIT==0) PHUT_WAIT=10;
ELSE
{
PHUT_WAIT--;
PHUT_WAIT_SET = PHUT_WAIT;
}
BREAK;
}
WHILE (!INPUT(DW));
}
}
}
IF (!INPUT(MOD))
{
DELAY_MS(10);
IF (!INPUT(MOD))
{
IF (TT_SS==0)
{
GT_MOD++;
IF (GT_MOD == 4) GT_MOD=0;
}
WHILE (!INPUT(MOD));
}
}
}
}
}
}
LCD_DATA("C");
LCD_DATA("-->");
LCD_COMMAND(0X80 + 12);
IF (KQ_ADC0 > 32)
LCD_DATA("HOT ");
ELSE IF ((KQ_ADC0 <= 32) & (KQ_ADC0 > 28))
LCD_DATA("WARM");
ELSE IF ((KQ_ADC0 <= 28) & (KQ_ADC0 > 25))
LCD_DATA("COOL");
ELSE IF (KQ_ADC0 <= 25)
LCD_DATA("COLD");
IF (GT_MOD == 2)
{
LCD_COMMAND(0XC0);
LCD_DATA(" FAN OFF:");
LCD_COMMAND(0XC0 + 10);
LCD_DATA(PHUT_CHUC);
LCD_DATA(PHUT_DONVI);
LCD_COMMAND(0XC0 + 12);
LCD_DATA("<");
LCD_DATA(GIAY_CHUC);
LCD_DATA(GIAY_DONVI);
LCD_COMMAND (0XC0 + 15);
LCD_DATA(" ");
}
IF (GT_MOD == 3)
{
LCD_COMMAND(0XC0);
LCD_DATA(" WAIT : ");
LCD_COMMAND(0XC0 + 10);
LCD_DATA(PHUT_WAIT/10 + 0X30);
LCD_DATA(PHUT_WAIT%10 + 0X30);
LCD_DATA("<");
LCD_DATA(GIAY_WAIT/10 + 0X30);
LCD_DATA(GIAY_WAIT%10 + 0X30);
LCD_COMMAND (0XC0 + 15);
LCD_DATA(" ");
}
}
ELSE
{
IF (TT_WAIT == 0)
{
LCD_COMMAND(0XC0);
VOID DOC_ADC()
{
SET_ADC_CHANNEL(0);
DELAY_MS(2);
KQ_ADC0 = READ_ADC() / 2.046;
}
VOID TIMEON()
{
IF ((TT_SS == 1)&&(TT_WAIT==0))
{
GIAY--;
IF (GIAY==-1)
{
GIAY=59;
PHUT--;
}
IF ((PHUT == 0)&&(GIAY==0))
{
TT_WAIT = ~TT_WAIT;
PHUT_WAIT = PHUT_WAIT_SET;
GIAY_WAIT = 0;
}
}
}
VOID TIMEWAIT()
{
IF ((TT_SS == 1)&&(TT_WAIT==1))
{
GIAY_WAIT--;
IF (GIAY_WAIT==-1)
{
GIAY_WAIT=59;
PHUT_WAIT--;
}
IF ((PHUT_WAIT == 0)&&(GIAY_WAIT==0))
{
TT_WAIT = ~TT_WAIT;
GIAY = GIAY_SET;
PHUT = PHUT_SET;
}
}
}
//HAM CHINH
VOID MAIN()
{
//KHOI TAO BAN DAU
SET_TRIS_A(0XFF); // 1: INPUT | 0: OUTPUT
SET_TRIS_B(0X00);
SET_TRIS_D(0X00);
SET_TRIS_C(0X0F);
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_8);
SET_TIMER1(3036);
ENABLE_INTERRUPTS(GLOBAL);
ENABLE_INTERRUPTS(INT_TIMER1);
LCD_SETUP();
HIEN_THI_LCD();