ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
LỜI NÓI ĐẦU
Ngày nay khoa học kĩ thuật phát triển mạnh mẽ, đặc biệt là lĩnh vực điều khiển và
tự động hóa. Để tăng tính năng điều khiển, các bộ vi điều khiển đã không ngừng
cải tiến và nâng cấp. Và một trong những họ vi điều khiển đang được ứng dụng
rộng rãi ngày nay là họ MSP430. Với ưu điểm tiết kiệm công suất cùng hàng loạt
các tính năng nổi trội, MSP430 được sử dụng phổ biến trong các ứng dụng thuộc
một số lĩnh vực như công nghiệp, nông nghiệp, y tế, giáo dục,.. Trong nhiều ứng
dụng đó, nhóm 3
Tham gia vào thực hiện đề tài “Thiết kế mạch đo mực nước ở thượng lưu, báo
về hạ lưu khi có lũ ”. Chúng em chân thành cảm ơn Thầy Hồ Viết Việt đã tận
tình hướng dẫn nhóm trong quá trình làm đồ án , đã tạo điều kiện cho chúng em
thực hiện đề tài tốt nhất.
Page 1
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
MỤC LỤC
CHƯƠNG I: GIỚI THIỆU LINH KIỆN……………………………………
Page 2
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
CHƯƠNG 1:GIỚI THIỆU ĐỀ TÀI
1.1.Tên đề tài:
Thiết kế và thi công mạch đo mực nước và báo về hệ thống phát thanh ở hạ lưu
1.2.Nhiệm vụ đề tài:
Giám sát mức nước trong đập.Nếu lượng nước trong đập ở mức nguy hiểm thì
truyền tín hiệu về phía hạ lưu để phát âm thanh báo động khẩn cấp.Nước lượng
nước ở mức bình thường thì hiển thị cho người giám sát biết.
1.3.Sơ đồ khối
a/Khối phát:
Khối nguồn
Khối cảm biến
mực nước
Khối vi điều khiển
Khối phát tín hiệu
cảnh báo
Khối hiển thị mức
nước
b/Khối thu:
Khối nhận tín
hiệu vào
Khối nguồn
Khối vi điều khiển
Khối phát tín hiệu
cảnh báo
Khối LCD
Page 3
Khối
Khối
hiển
hiển
thịthị
LCD
LCD
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
CHƯƠNG 2:GIỚI THIỆU LINH KIỆN
2.1. HỌ VI ĐIỀU KHIỂN MSP430
2.1.1.Đặc điểm tổng quát
MSP430 chứa 16 bit RISC CPU, các ngoại vi và hệ thống bộ định thời linh hoạt
được kết nối với nhau theo cấu trúc VON-NEUMANN, có các Bus liên kết như:
Bus địa chỉ bộ nhớ ( MAB), Bus dữ liệu bộ nhớ ( MDB).
Đây là một bộ xử lý hiện đại với các mô đun bộ nhớ tương tự và nhứng kết nối
ngoại vi tín hiệu số, MSP430 đã đưa ra được những giải pháp tốt cho những nhu
cầu ứng dụng với tín hiệu hỗn tạp.MSP430 có một số phiênbản như: MSP430x1xx,
MSP430x2xx, MSP430x3xx, MSP430x4xx, MSP430x5xx.
Dưới đây là những đặc điểm tổng quát của họ vi điều khiển MSP430:
+ Cấu trúc sử dụng nguồn thấp giúp kéo dài tuổi thọ của Pin
-Duy trì 0.1µA dòng nuôi RAM.
-Chỉ 0.8µA real-time clock.
-250 µA/ MIPS.
+ Bộ tương tự hiệu suất cao cho các phép đo chính xác
-12 bit hoặc 10 bit ADC-200 kskp, cảm biến nhiệt độ, Vref
-12 bit DAC.
-Bộ giám sát điện áp nguồn.
+ 16 bit RISC CPU cho phép được nhiều ứng dụng, thể hiện một phần ở kích
thước Code lập trình.
-Thanh ghi lớn nên loại trừ được trường hợp tắt nghẽn tập tin khi đang làm việc.
-Thiết kế nhỏ gọn làm giảm lượng tiêu thụ điện và giảm giá thành.
-Tối ưu hóa cho những chương trình ngôn ngữ bậc cao như C, C++
-Có 7 chế độ định địa chỉ.
-Khả năng ngắt theo vector lớn.
+ Trong lập trình cho bộ nhớ Flash cho phép thay đổi Code một cách linh hoạt,
phạm vi rộng, bộ nhớ Flash còn có thể lưu lại như nhật ký của dữ liệu.
Page 4
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
2.1.2.Sơ đồ chân của MSP430G2553
2.2.MÀN HÌNH LCD 16x2
2.2.1.Mô tả các chân của LCD 16x2:
Page 5
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
2.2.2.Nguyên lí hoạt động
- Các chân VSS, VDD,VEE là các chân cấp nguồn và nối mass
- Chân chọn thanh ghi RS: có 2 thanh ghi trong LCD, chân này dùng để chọn
thanh ghi như sau: Nếu RS = 0 thì thanh ghi lệnh được chọn để cho phép người
dùng gửi một lệnh xuống LCD, chẳng hạn như đưa con trỏ về đầu dòng, xuống
dòng, xóa màn hình,… Nếu RS = 1 thì thanh ghi dữ liệu được chọn để cho
phép người dùng gửi dữ liệu cần hiển thị lên LCD.
- Chân R/W: cái này cũng đơn giản, đã nói ở trên.
- Chân cho phép LCD chốt dữ liệu (E): Khi dữ liệu được cấp đến chân này thì
một xung mức cao xuống thấp phải được đặt lên chân E để LCD chốt dữ liệu
trên các chân dữ liệu (DB0 – DB7). Xung này phải rộng tối thiểu là 450ns.
- Chân DB0 - DB7: là 8 chân dữ liệu 8-bit (LCD 8-bit), được dùng để gửi dữ liệu
lên LCD (thông tin cần hiển thị) hoặc đọc nội dung của các thanh ghi trong
LCD. Để hiển thị các chữ cái và các con số thì chúng ta sẽ gửi các mã ASCII
của các chữ cái từ A – Z, a – z và các số từ 0 – 9 đến các chân này khi RS = 1.
Page 6
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
- Ta có thể sử dụng RS = 0 để kiểm tra bit cờ bận để xem LCD có sẵn sàng
nhận thông tin hay không. Cờ bận là bit DB7 và có thể được đọc khi R/W = 1
và RS = 0 như sau:
- Nếu R/W = 1 và RS = 0 khi DB7 = 1 thì LCD bận và không nhận bất kỳ
thông tin mới nào. Khi DB7 = 0 thì LCD sẵn sàng nhận thông tin mới. Nên
kiểm tra cờ bận trước khi ghi bất kỳ dữ liệu bào lên LCD.
2.2.3.Bảng mã lệnh của LCD
Mã (HEX)
Lệnh gửi đến thanh ghi của LCD
01
Xoá màn hình hiển thị
02
Trở về đầu dòng
04
Giảm con trỏ (dịch con trỏ sang trái )
06
Tăng con trỏ (dịch con trỏ sang phải)
05
Dịch hiển thị sang phải
07
Dịch hiển thị sang trái
08
Tắt con trỏ, tắt hiển thị
0A
Tắt hiển thị, bật con trỏ
0C
Bật hiển thi, tắt con trỏ
0E
Bật hiển thị, nhấp nháy con trỏ
0F
Tắt con trỏ, nhấp nháy con trỏ
10
Dịch vị trí con trỏ sang trái
14
Dịch vị trí con trỏ sang phải
18
Dịch toàn bộ hiển thị sang trái
1C
Dịch toàn bộ hiển thị sang phải
80
Ép con trỏ về đầu dòng thứ nhất
C0
Ép con trỏ về đầu dòng thứ 2
38
Hai dòng và ma tận 5x7.
Page 7
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
2.3.IC GIẢI MÃ TÍN HIỆU MT8870
1.3.1.Sơ đồ chân
+Q1->Q4 : Đầu ra dữ liệu 4 bit.
+STQ : Đầu ra báo hiệu có thông tin DTMF được gửi.
STQ=1 : Khi có thông tin được gửi đến.
STQ=0 : Khi không có thông tin.
+/STQ : Đầu ra đảo của STQ.
+IN : Đầu vào audio
+GND
+VCC
2.3.2.Tính năng và ứng dụng
Tính năng :
+Thiết bị thu tín hiệu DTMF.
+Tiêu thụ điện năng thấp.
+Điện áp sử dụng : +5V
Ứng dụng :
+Điều khiển từ xa.
+Thiết bị thu trong hệ thống viễn thông British Telecom (BT) hoặc CEPT Spec.
+Hệ thống nhắn tin vô tuyến.
+Hệ thống thẻ tín dụng.
+Máy trả lời điện thoại tự động.
Page 8
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
2.3.3.Nguyên lí hoạt động
+MT8870 là một thiết bị thu tín hiệu DTMF có tích hợp sẵn bộ lọc tín hiệu DTMF
và giải mã chuyển đổi 16 mã DTMF thành một số 4bit dạng số ở đầu ra
+MT8870 có thể ứng dụng để thu tín hiệu DTMF thông qua tín hiệu Audio lấy từ
điện thoại có tích hợp tính năng DTMF
Page 9
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
CHƯƠNG 3: SƠ ĐỒ NGUYÊN LÍ VÀ MẠCH IN
3.1.KHỐI PHÁT
3.1.1.Khối cảm biến mực nước
Nhiệm vụ của khối
Sử dụng opamp LM311 thực hiện chức năng đo mực nước trong đập,truyền
dữ liệu đến khối vi điều khiển.
Sơ đồ mạch của khối
Giải thích hoạt động của khối mạch
+Điều kiện làm việc của opamp Vcc=4,9-5,1 VDC
+Ban đầu khi dây đo chưa tiếp xúc nước:
V(+)=3.3V và V(-)=1.2V
V(+)>V(- ) =>Vout=Vcc=3.3V(mức logic 1)
+Khi dây đo tiếp xúc nước :
Điện trở của nước và điện trở 500K sẽ tạo nên cầu phân áp làm cho
V(+)
Page 10
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
3.1.2.Khối vi điều khiển
Nhiệm vụ của khối:
Dùng để xử lý các tín hiệu vào và xuất tín hiệu ra,điều khiển mọi hoạt động
của hệ thống
Sơ đồ mạch của khối
Giải thích hoạt động của khối mạch:
Các chân từ P2.3 đến P2.6 nhận dữ liệu từ đầu ra của cảm biến .Tùy thuộc
vào giá trị của các chân P2.3 đến P2.6 ,vi điều khiển xuất ra giá trị logic 0
hoặc logic 1 trên các chân P1.0P1.5; P2.0P2.2; P2.7.
Page 11
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
3.1.3.Khối hiển thị
Nhiệm vụ của khối:
Nhận tín hiệu từ khối cảm biến mức nước hiển thị lên led 7 đoạn
Sơ đồ mạch của khối:
Giải thích hoạt động của khối mạch:
Khi các cảm biến mức nước tiếp xúc nước.Tùy thuộc vào giá trị các chân
P2.3->P2.6 là logic 0 hay logic 1.Khi đó vi điều khiển sẽ xuất giá trị tương
ứng ra các chân P1.0->P1.5 và P2.0 để hiển thị mức nước lên led 7 đoạn.
3.1.4.Khối phát tín hiệu về hạ lưu
Nhiệm vụ của khối:
Được điều khiển thông qua VĐK, xuất tín hiệu cảnh báo.
Sơ đồ mạch của khối:
Page 12
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
Giải thích hoạt động của khối mạch:
+Khi mức nước trong đập ở mức 1,dây đo cảm biến mức nước mức 1 tiếp
xúc nước,gía trị đầu ra của opamp mức logic 0,gửi đến chân P2.3vđk
điều khiển led 7 đoạn hiển thị số 1.
+Khi mức nước trong đập ở mức 2,dây đo cảm biến mức nước mức 2 tiếp
xúc nước,giá trị đầu ra của opamp mức logic 0,gửi đến chân P2.4vđk
điều khiển led 7 đoạn hiển thị số 2.
+Khi mức nước trong đập ở mức 3,dây đo cảm biến mức nước mức 3 tiếp
xúc nước,gía trị đầu ra của opamp mức logic 0,gửi đến chân P2.5vđk
điều khiển led 7 đoạn hiển thì số 3.
+Khi mức nước trong đập ở mức 4,dây đo cảm biến mức nước mức 4 tiếp
xúc nước,giá trị đầu ra của opamp mức logic 0,gửi đến chân P2.6vđk
điều khiển led 7 đoạn hiển thì số 4, chuông reo, đèn led nhấp nháy, khi đó
điện thoại sẽ gọi điện ,nhấn phím gửi tín hiệu DTMF về phía thu.
3.2.KHỐI THU
3.2.1.Khối nhận tín hiệu vào
Nhiệm vụ của khối
Giải mã tín hiệu DTMF và truyền dữ liệu đến vi điều khiển
Sơ đồ mạch của khối
Giải thích hoạt động của khối mạch
MT 8870 có chân VSS nối mass, chấn VDD nhận nguồn 5V, tín hiệu DTMF
đưa vào MT8870 thông qua chân –IN và GS. Tín hiệu DTMF được giải mã
thành chuỗi nhị phân 4 bit và được xuất ra ở chân Q4Q1, trong đó Q4 là
MSB và Q1 là LSB.
Page 13
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
3.2.2.Khối vi điều khiển
Nhiệm vụ của khối:
Dùng để xử lý các tín hiệu vào và xuất tín hiệu ra,điều khiển mọi hoạt động
của hệ thống
Giải thích hoạt động của khối mạch :
Đầu vào các chân vi điều khiển P1.0 đến P1.3 được lấy từ chân Q1Q4 của
MT 8870.
Dựa vào trạng thái các chân P1.0P1.3, vi điều khiển sẽ thiệt lập trạng thái
cho các chân “P1.4, P1.5, P2.0, P2.1, P2.6, P2.7” để điều khiển LCD; “P2.3”
để điều khiển mp3; “ P2.4 và P2.5” để điều khiển led.
3.2.3.Khối hiển thị LCD
Nhiệm vụ của khối
Hiển thị thông tin cảnh báo khi nước trong đập ở mức nguy hiểm
Sơ đồ mạch của khối
Giải thích hoạt động của khối mạch
LCD 16x2 được sử dụng ở chế độ 4 bit, chân Vss nối mass, chấn VDD nhận
nguồn 5V, chân RW nối mass, chân RS-EN được điều khiển thông qua các
chân P2.6-P2.7, chân nhận dữ liệu D4 đến D7 nối với P1.4 P1.5 P2.0 P2.1
của vi điều khiển.
Page 14
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
4.2.5/Khối phát tín hiệu cảnh báo
Nhiệm vụ của khối
Nhấp nháy led và bật mp3 phát âm thanh cảnh báo khi nước trong đập ở
mức nguy hiểm
Sơ đồ mạch của khối
Giải thích hoạt động của khối mạch:
Khi các chân P1.0 P1.3 có trạng thái 0001 thì vđk sẽ điều khiển như sau:
Hiển thị LCD cảnh báo vỡ đập.
Chân p2.3 ở mức 0 thì BJT Q1 sẽ dẫnkích dẫn opto PC 817mở mp3.
Chân p2.4 và p2.5 được điều khiển sang trạng thái 0,1 để tạo hiện tượng
nhấp nháy.
Page 15
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
3.3.MẠCH IN
3.3.1.Quy trình thực hiện mạch in
Layout mạch:
- Dùng Orcad để vẽ sơ đồ nguyên lý mạch
- Dùng Layout Plus để tạo layout từ sơ đồ nguyên lý.
Quá trình ủi mạch :
- Chùi sạch bảng đồng bằng giấy nhám mịn, đặt úp phần layout được in
trên giấy vào bảng đồng.
- Đặt nhiệt độ bàn là lên mức cao nhất khoảng 1 phút sau đó giữ chặt lên
board một thời gian để cho mực in được chảy ra và giấy bắt đầu bám lên
board đồng.
- Sau khi giấy đã được giữ cố định trên board. Tiến hành là qua lại khắp
board để cho mực in được chảy ra. Sau khi cảm thấy mực đã chảy ra và
bám chặt trên board thì hạ nhiệt độ bàn là và đặt bàn là khỏi board.
Quá trình rửa mạch:
- Sau khi đợi cho mạch mới ửi xong được nguội, ta gở bỏ phần giấy trên
board, ngâm vào nước lạnh để lấy sạch giấy. Sau đó kiểm tra phần chổ
nào mực không bám lên board ta dùng bút xạ để kẻ lại đường mực.
- Sau đó tiến hành ngâm mạch trong dung dịch FeCl3 được pha sẵn trong
khoảng 1 giờ để cho FeCl3 phản ứng hết với phần đồng không bị bám
mực trên board.
- Sau khi hoàn thành quá trình ngâm mạch ta rửa lại trong nước lạnh, dùng
giấy nhám mịn chà cho sạch đường mực bám trên board sao cho phần
đường đồng trên mạch không bị ảnh hưởng.
Quá trình khoan, hàn mạch:
- Chọn mũi khoan phù hợp cho chân linh kiện.
- Đối với đế IC thì chọn mũi khoang 1mm. Các linh kiện như điện trở, tụ,
trở thanh, BJT thường chọn mũi khoan 0.6mm và 0.8mm. Đối với BJT
công suất thì chọn mũi 1.2mm.
- Gắn linh kiện theo layout và hàn từng linh kiện một vào mạch.
- Sau khi hàn xong linh kiện vào board dùng kìm bấm phần chân còn dư.
- Đối với những phần cần phải chạy thêm dây: tiến hành chọn dây dẫn phù
hợp. Gọt 2 đầu và hàn vào mạch như linh kiện thông thường.
Page 16
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
3.3.2.Mạch in vẽ bằng phần mềm Altium
*Mạch phát:
*Mạch thu:
Page 17
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
CHƯƠNG 4: LƯU ĐỒ THUẬT TOÁN VÀ CHƯƠNG TRÌNH
4.1.LƯU ĐỒ THUẬT TOÁN
4.1.1.Lưu đồ khối phát
Main
Khởi tạo các chân input, output
Thiết lập trạng thái
ban đầu cho các chân
Cảm biến 1 tiếp xúc nước?
Sai
Đúng
Hiển thị số 1
Cảm biến 2 tiếp xúc nước?
Đúng
Page 18
Sai
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
Hiển thị số 2
Cảm biến 3 tiếp xúc nước?
Sai
Đúng
Hiển thị số 3
Cảm biến 4 tiếp xúc nước?
Đúng
Hiển thị số 4
Chuông reo
Điện thoại tự động gọi
Page 19
Sai
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
4.1.1.Lưu đồ khối thu
Main
Khởi tạo các chân input, output
Thiết lập trạng thái
ban đầu cho các chân
Kiểm tra chuỗi bit Q4Q1
Đúng
Hiển thị LCD
Bật mp3
Nhấp nháy led
Page 20
Sai
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
4.2.Chương trình viết bằng phần mềm Energia
4.2.1.Chương trình khối phát
int val1=0;
int val2=0;
int val3=0;
int val4=0;
int dv1=11;
int dv2=12;
int dv3=13;
int dv4=19;
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(18, OUTPUT);
pinMode(dv1, INPUT);
pinMode(dv2, INPUT);
pinMode(dv3, INPUT);
pinMode(dv4, INPUT);
digitalWrite(dv1, HIGH);
digitalWrite(dv2, HIGH);
digitalWrite(dv3, HIGH);
digitalWrite(dv4, HIGH);
}
void loop()
{
digitalWrite(18, 1);
digitalWrite(2, 1);
digitalWrite(3, 1);
Page 21
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 1);
val1 = digitalRead(dv1);
val2 = digitalRead(dv2);
val3 = digitalRead(dv3);
val4 = digitalRead(dv4);
if ((val1 == LOW)&&(val2==HIGH)&&(val3==HIGH)&&(val4==HIGH))
{
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
}
if ((val1 == LOW)&&(val2==LOW)&&(val3==HIGH)&&(val4==HIGH))
{
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 0);
}
if ((val1 == LOW)&&(val2==LOW)&&(val3==LOW)&&(val4==HIGH))
{
digitalWrite(2, 0);
digitalWrite(3, 0);
Page 22
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
}
if ((val1 == LOW)&&(val2==LOW)&&(val3==LOW)&&(val4==LOW))
{
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(10, 0);
digitalWrite(18, 0);
digitalWrite(9, 0);
delay(2000);
digitalWrite(9, 1);
delay(2000);
digitalWrite(9, 0);
delay(10000);
digitalWrite(9, 1);
delay(3000);
digitalWrite(9, 0);
delay(3000);
}
}
Page 23
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
4.2.2.Chương trình khối thu
#include <LiquidCrystal.h>
int val1=0;
int val2=0;
int val3=0;
int val4=0;
int dv1=2;
int dv2=3;
int dv3=4;
int dv4=5;
int dr=10;
LiquidCrystal lcd(19, 18, 6, 7, 8, 9);
void setup()
{
pinMode(dv1,INPUT);
pinMode(dv2,INPUT);
pinMode(dv3,INPUT);
pinMode(dv4,INPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(18,OUTPUT);
pinMode(19,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(dv1, HIGH);
digitalWrite(dv2, HIGH);
digitalWrite(dv3, HIGH);
digitalWrite(dv4, HIGH);
lcd.begin(16, 2);
lcd.print("nguy hiem vo dap");
}
Page 24
ĐỒ ÁN VI XỬ LÍ & MÁY TÍNH
GVHD: ThS.HỒ VIẾT VIỆT
void loop()
{
lcd.setCursor(0, 1);
lcd.noDisplay();
val1 = digitalRead(dv1);
val2 = digitalRead(dv2);
val3 = digitalRead(dv3);
val4 = digitalRead(dv4);
if((val1==LOW)&&(val2==LOW)&&(val3==LOW)&&(val4==HIGH))
{
lcd.display();
digitalWrite(11,0);
delay(400);
digitalWrite(11,1);
label:
if((val1==LOW)&&(val2==LOW)&&(val3==LOW)&&(val4==HIGH))
{
digitalWrite(12,0);
delay(200);
digitalWrite(12,1);
digitalWrite(13,0);
delay(200);
digitalWrite(13,1);
goto label;
}
}
}
Page 25