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

BÁO CÁO ĐỒ ÁN MÔN GHÉP NỐI MÁY TÍNH

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 (502.21 KB, 29 trang )

Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3



 ! !" #$%# &'
()*Thiết kế mô hình điều khiển đèn giao thông ở ngã tư sử dụng cổng nối tiếp
Yêu cầu:
Hệ thống có các đèn Xanh, Đỏ, Vàng (mô phỏng bằng các led lớn) điều
khiển xe cộ, các đèn xanh, đỏ (mô phỏng bằng các led nhỏ) dành cho người đi
bộ trên 2 hướng đi độc lập; có 02 đồng hồ đếm ngược hiển thị thời gian sáng
của các đèn Xanh, Đỏ điều khiển xe cộ trên 2 hướng đi độc lập.
Hệ thống có thể chạy ở các chế độ khác nhau trong ngày dựa vào đồng hồ
thời gian thực trên máy tính:
+ Chế độ thường: Từ 7h đến 23h: Các đèn sáng/tắt; các đồng hồ đếm ngược
theo quy luật như thực tế.
+ Chế độ nghỉ: Thời gian còn lại trong ngày: Chỉ có đèn Vàng nhấp nháy.
1
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
+,
Máy tính hiện nay đều có các thiết bị ngoài thông dụng như: màn hình, bàn
phím, chuột, máy in… Tuy nhiên máy tính không chỉ dừng lại với thiết bị ngoại vi
nói trên mà còn có những yêu cầu cao hơn như kết nối với các máy móc trong công
nghiệp. Chính vì vậy nhà sản xuất đã trang bị một số cách thức để có thể ghép nối
với bus của máy tính như: RS232, LPT, COM, USB, các khe PCI …Việc nghiên
cứu để mở rộng giao tiếp của máy tính với thiết bị ngoại vi đã trở thành môn học
chính thức của rất nhiều ngành học trong các giảng đường đại học.
Sau một thời gian học tập và nghiên cứu môn học “Đo lường và điều khiển
máy tính” dưới sự hướng dẫn của cô giáo. Chúng em đã thử nghiệm và hoàn thành
đề tài của của cô giao cho nhóm.
Mục đích của đề tài hướng đến:
- Bước đầu làm quen và thử nghiệm các cách giao tiếp đơn giản


giữa máy tính và vi điều khiển thong qua cổng nối tiếp RS232.
- Hướng đến các phương thức giao tiếp cao hơn được ứng dụng
trong thực tế như USB, RS234…
Tuy đã rất cố gắng trong việc thực hiện đồ án tuy nhiên do kiến thức hiểu
biết còn hạn hẹp nên khó tránh phải những sai sót. Rất mong nhận được những
nhận xét quí báu từ cô để chúng em hoàn thiện đồ án một cách tốt nhất.
Chúng em xin trân thành cảm ơn!
/0123456*789:2;4
<01=>*:?@7A(
4:?@7AB
4:?@CD
+3D*EFE
2
Máy tính
Các thi t b ch p h nhế ị ấ à
M ch i u khi nạ đề ể
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
GH<I+J.&K
LG3:0(4CDM/?N
Hình 1: Mô hình giao tiếp giữa máy tính và thiết bị ngoại vi
 #/?N* Phần mềm điều khiển và giám sát được thiết kế trên máy tính có
chức năng gửi các tín hiệu điều khiển qua cổng giao tiếp của máy tính đến
mạch điều khiển, đồng thời nhận các tín hiệu về trạng thái hoạt động của các
thiết bị và hiển thị trên giao diện của phần mềm.
 #O>(:PQ* Có nhiệm vụ đọc tín hiệu điều khiển từ máy tính rồi điều
khiển các thiết bị tương ứng, đồng thời gửi các tín hiệu về trạng thái hoạt
động của các thiết bị lên máy tính.
 />CR9>SD)* Hoạt động theo sự điều khiển của các khối trên.
3
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3

TGU4VCD<TET
RS232 là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết
nối nhiều nhất là với 2 thiết bị, chiều dài kết nối lớn nhất cho phép để đảm bảo dữ
liệu là 12.7 đến 25.4 m, tốc độ 20kBít/s đôi khi là tốc độ 115 k Bít/s với một số
thiết bị đặc biệt.

Sơ đồ chân cổng Com (Cổng đực):
Tín hiệu truyền theo tiêu chuẩn RS - 232 của hãng EIA (Electronics Industry
Associations).
Chuẩn RS-232 quy định mức logic 1 (mark) ứng với điện áp từ -3V đến
-25V, mức logic 0 (space) ứng với điện áp từ 3V đến 25V và có khả năng cung cấp
dòng từ 10 mA đến 20 mA. Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập
mạch.
4
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
 Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:
Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V).
Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt
truyền từ D0 đến D7 và Parity, cuối cùng là xung Stop (mark : -10V) để khôi phục
trạng thái đường truyền. Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):
 Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
Chiều dài cable cực đại 15m
Tốc độ dữ liệu cực đại 20kbps
Điện áp ngõ ra cực đại ±25V
Điện áp ngõ ra có tải ±5V đến ±15V
Trở kháng tải 3K đến 7K
Điện áp ngõ vào ±15V
Độ nhạy ngõ vào ±3V
Trở kháng ngõ vào 3K đến 7K
5

Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
Tốc độ truyền dữ liệu được quy định chuẩn gồm các tốc độ: 300, 600, 1200,
2400, 4800, 9600, 19200, 28800, 56600 baud.
 Các phương thức truyền thông nối tiếp.
Có 3 phương thức truyền tin nối tiếp:
- Phương thức đồng bộ: Các byte chứa các bit thông tin được truyền liên tiếp trên
đường truyền và chỉ được ngăn cách (phân biệt) nhau bằng bít đồng bộ khung
(Hình 2a).
- Phương thức không đồng bộ: Các byte chứa các bit thông tin được chứa trong
một khung. Một khung được bắt đầu bằng 1 bít Start, tiếp theo là các bit mang
thông tin, kế tiếp là bít kiểm tra chẵn lẻ và kết thúc là bít Stop. Khoảng các giữa
các khung là các bít dừng bất kỳ, Khi đó đường truyền được đấy lên mức cao
(Hình 2b).
- Phương thức lai: Đây là phương thức kết hợp của 2 phương thức trên, trong đó
các bít trong 1 khung được truyền theo phương thức không đồng bộ còn các byte
được truyền theo phương thức đồng bộ.
Hình 2: Các phương thức truyền tin nối tiếp
6
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
EG3:0MO>4CD#WXTET
Vì tín hiệu của cổng COM thường ở mức ±12V nên không tương thích với mức
điện áp TTL. Muốn giao tiếp KIT Vi điều khiển 8051 với máy tính qua cổng COM ta
cần một vi mạch biến đổi điện áp cho phù hợp với mức TTL, ở đây ta chọn vi mạch
MAX232 để thực hiện việc tương thích điện áp.
Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dùng trong
giao diện nối tiếp với máy tính. Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào
thành mức +10V hoặc –10V ở phía truyền và các mức +3…+15V hoặc -3…-15V
thành mức TTL ở phía nhận.
Vi mạch MAX 232 có hai bộ chuyển đổi mức từ TTL sang RS232 và hai bộ
lam chức năng ngược lại.

Cụ thể, hai bộ chuyển mức R1IN → R1OUT, R2IN → R2OUT làm chức
năng chuyển mức từ TTL sang RS232. Còn hai bộ chuyển mức T1IN → T1OUT,
T2IN → T2OUT làm chức năng chuyển mức từ TTL sang RS232.
7
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
YGCD>U4VCD>Z0(:PQW[\<]T^
Chúng ta sẽ tìm hiểu các thanh ghi giúp cho vi điều khienr có thể giao tiếp
với máy tinh.
 4(:PQM_`*!
I E 1
3
T F 0 I E 0
6
T F 1
2
I T 0
4
T R 1
1
T R 0
7 0
I T 1
5
aL*Báo trạng thái tràn cho bộ Timer/Counter1
L*Điều khiển cấp xung cho bộ Timer/Counter1
a*Báo trạng thái tràn cho bộ Timer/Counter0
*Điều khiển cấp xung cho bộ Timer/Counter0
bL: Báo trạng thái ngắt ngoài 1
L*Cho phép tác động ngắt ngoài 1 bằng cạnh xuống (default IT1 = 0, tác
động ngắt bằng mức thấp)

b* Báo trạng thái ngắt ngoài 0
*Cho phép tác động ngắt ngoài 0 bằng cạnh xuống (default IT1 = 0, tác
động ngắt bằng mức thấpG
 4>CcM_`*#!d
Là thanh ghi 8 bit, truy xuất (ghi/đọc) byte
Wbef: Điều khiển trạng thái hoạt động cho Timer/Counter
#Le#: Chọn chế độ hoạt động cho Timer/Counter
M M0 Chế độ Mô tả
8
R B 8R E N
0
S M 0
7
R I
1
S M 1
2
S M 2
3
T B 8
45
T I
6
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
1
0 0 0 Timer/Counter 13 bit
0 1 1 Timer/Counter 16 bit
1 0 2 Timer/Counter 8 bit, tự lặp lại
1 1 3 Timer/Counter 8 bit
 4(:PQ`:?(fgVCD*<! (Serial CONtrol)

SM0: Bit 0 chọn chế độ của port nối tiếp
SM1: Bit 1 chọn chế độ của port nối tiếp
SM2: Bit 2 chọn chế độ của port nối tiếp
REN: Cho phép thu. Bít này phải được set để nhận các kí tự
TB8: Bít phát 8
RB8: Bit thu 8
TI: Cờ ngắt phát. Cờ này được set ngay khi kết thúc việc phát một kí tự, nó được
xóa bởi phần mềm
RI: Cờ ngắt thu. Cờ này được set ngay khi kết thúc việc thu 1 kí tự, được xóa bởi
phần mềm.
SM0 SM1 Chế độ Mô tả cổng truyền
0 0 0 Là thanh ghi dịch 8 bit, tốc độ [OSC]/12
0 1 1 Truyền nhận 8 bit, tốc độ thay đổi được
1 0 2 Truyền nhận 9 bit, tốc độ là [OSC]/32 hoặc [OSC]/64
1 1 3 Truyền nhận 9 bit, tốc độ thay đổi được
 U4VCD
9
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
AT89S52 có một cổng (Port) nối tiếp trong chip có thể hoạt động ở nhiều
chế độ khác nhau. Chức năng chủ yếu của port nối tiếp là thực hiện chuyển đổi
song song sang nối tiếp với dữ liệu xuất và chuyển đổi từ nối tiếp sang song song
với dữ liệu nhập để có thể giao tiếp với máy tính qua cổng nối tiếp hoặc các thiết bị
tương ứng.
Port nối tiếp có bốn chế độ hoạt động, trong đó ở chế độ 1 port nối tiếp hoạt
động như một bộ UART 8 bit có tốc đọ thay đổi. Dữ liệu được truyền nối tiếp trên
chân TXD và nhận nối tiếp trên chân RXD. Chế độ này cung cấp cho AT89S52
một công cụ giao tiếp với máy tính qua cổng COM.
Thao tác trao đổi dữ liệu qua port nối tiếp bao gồm 3 bước chính:
- Khởi tạo cổng nối tiếp
+ Truy xuất SCON để đặt các thông số như chế độ hoạt động, cho phép thu,…

+ Thiết lập hoặc xóa bit SMOD của thanh ghi PCON để đặt hệ số chia của tốc
độ baud.
+ Truy xuất các thanh ghi của các bộ Timer1 và Timer 2 để đặt cấc tốc độ baud
cho cổng nối tiếp (chỉ với chế dộ 1và3).
- Kiểm tra cờ TI (khi truyền) và RI (khi nhận).
- Ghi/đọc byte dữ liệu ở SBUF
]GhM(MigD`j7k:ik>l^
Visual Basic là ngôn ngữ lập trình hướng đối tượng, mỗi đối tượng lập trình
như nút nhấn, textbox… sẽ có một chương trình riêng bên trong, các đối tượng này
có các thuộc tính và các phương thức riêng để hoạt động.
 `:?(m4VCD>Z7k:iRk>^
10
RXDTXD
D Thanh ghi dịch
CLK
SBUF
CLK (chỉ ghi)
Q
Xung tạo tốc
độ baud nhận
Xung tạo tốc
độ baud truyền
SBUF
Bus
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
Việc truyền thông nối tiếp trên Windows

được thực hiện thông qua một
ActiveX có sẵn là Microsoft Comm Control. ActiveX này được lưu trữ trong file
MSCOMM32.OCX. Quá trình này có hai khả năng thực hiện


điều khiển trao

đổi
thông tin:
-

Điều khiển sự kiện:

Truyền thông

điều khiển sự kiện là phương pháp tốt
nhất trong quá trình

điều khiển việc trao

đổi thông tin. Quá trình

điều khiển thực
hiện thông qua sự kiện OnComm.
-

Hỏi vòng:

Quá trinh

điều khiển bằng phương pháp hỏi vòng thực hiện
thông qua kiểm tra các giá trị của thuộc tính CommEvent sau một chu kỳ nào
đó


để xác

định xem có sự kiện nào xảy ra hay không. Thông thường phương
pháp này sử dụng cho các chương trình nhỏ.
- ActiveX MsComm

được bổ sung vào một Visual Basic Project thông
qua menu

`n_>oMD_k:
-
Biểu tượng của MsComm:
và các thuộc tính cơ bản mô tả như sau:

<_4k*
-
Xác

định các tham số cho

cổng nối tiếp.
-
Cú pháp: MSComm1.
Settings
= ParamString
-
MSComm1: tên

đối tượng
-

ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S"
-
BBBB: tốc

độ truyền dữ liệu (bps) trong

đó các giá trị
hợp lệ là:
110 2400 38400
11
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
300 9600(mặc định) 56000
600 14400 188000
1200 19200 256000
- P: Kiểm tra chẵn lẻ, với các giá trị:
Giá trị Mô tả
O Kiểm tra lẻ
E Kiểm tra chẵn
M Luôn bằng 1
S Luôn bằng 0
N Không kiểm tra
- D: số bit dữ liệu (4, 5, 6, 7 hay 8), mặc

định là 8 bit trong một khung truyền.
- S: số bit stop (1, 1.5, 2)
VD: MSComm1.
Settings
= "9600,N,8,1"

sẽ xác


định tốc

độ truyền 9600bps,
không kiểm tra parity

với 1 bit stop và 8 bit dữ liệu.

MM`*
-
Xác

định số thứ tự của cổng truyền thông, cú pháp:
MSComm1.
CommPort
= PortNumber
-
PortNumber là giá trị nằm trong khoảng từ 1

đến
99,

mặc

định là 1.
VD:

MSComm1.
CommPort
= 1


xác

định sử dụng COM1

`!D_*
-
Đặt trạng thái hay kiểm tra trạng thái

đóng / mở của cổng nối tiếp.
Cú pháp:

MSComm1.
PortOpen
= True / False.
-
Giá trị xác

định là True sẽ thực hiện mở cổng và False

để

đóng cổng
đồng thời xoá nội dung của các bộ

đệm truyền, nhận.
VD: Mở cổng COM1 với tốc

độ truyền 9600bps.
MSComm1.

Settings
= "9600,N,8,1" MSComm1.
CommPort
= 1
MSComm1.
PortOpen
= True

/>:c>Ng5pi:*
-
Input* nhận một chuỗi ký tự và xoá khỏi bộ

đệm.


pháp:

InputString = MSComm1.
Input
12
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
Thuộc tính này kết hợp với InputLen

để xác

định số ký tự

đọc vào. Nếu
InputLen=0


thì sẽ

đọc toàn bộ dữ liệu có trong bộ

đệm.
VD:

Đọc toàn bộ nội dung trong bộ

đệm nhận nếu có dữ liệu
MSComm1.
D:+_
= 0
If MSComm1.
CommEvent
= comEvReceive Then
InputString

= MSComm1.
Input
End If

/>:c>Nq:S5pi:*
Bao gồm các

thuộc tính

!:D:, chức năng của các thuộc tính này giống
như các thuộc tính nhập.VD: MSComm1.
Output=giá trị cần xuất ra.


MMb0_*
Trả lại các sự kiện xảy ra tại cổng nối tiếp như sau:
Sự kiện
Giá

trị Mô tả
ComEvSend 1 Đã truyền ký tự
ComEvReceive
2
Khi có ký tự trong bộ

đệm nhận
ComEvCTS
3
Có thay

đổi trên CTS (Clear To Send)
ComEvDSR
4
Có thay

đổi trên DSR (Data Set Ready)
ComEvCD
5
Có thay

đổi trên CD (Carrier Detect)
ComEvRing
6

Phát hiện chuông
ComEvEOF
7
Nhận ký tự kết thúc file
GHr#s
LG57
13
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
Chương trình chạy trên phần mêm VB 6.0 có giao diện để điều khiển hoạt
động của mô hình giao thông bằng cách gửi dữ liệu trực tiếp từ máy tính thông qua
cổng COM xuống vi điều khiển để điều khiển hệ thống đèn.
Nếu vi điều khiển nhận được chữ cái “N” tương ứng với hệ thống sẽ hoạt
đông ở chế độ ban ngày “hình ảnh ông mặt trời”.
Nếu vi điều khiển nhận được chữ cái “D” tương ứng với hệ thống sẽ hoạt
động ở chế độ ban đêm “hình ảnh ông trăng”.
Sau đây là toàn bộ Code của chương trình VB:
*************************************************************
Option Explicit
Dim bien1, bien2, bien3 As Integer
Private Sub Command1_Click()
Frame1.Visible = True
Frame2.Visible = False
End Sub
Private Sub Command2_Click()
Frame2.Visible = True
Frame1.Visible = False
14
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
End Sub
Private Sub Command3_Click()

If IsDate(Text2.Text) Then
bien1 = MsgBox("Thao tac se thay doi ngay he thong. Ban van muon tiep
tuc?", vbOKCancel + vbQuestion, "Canh bao!")
If bien1 = 1 Then
Date = Format(Text2.Text, "dd/mm/yyyy")
MsgBox ("Ngay cua he thong da duoc thay doi")
Frame1.Visible = False
End If
Else
MsgBox ("Nhap sai cu phap. Moi nhap lai dung cu phap DD-MM-YYYY")
Text2.SetFocus
End If
End Sub
Private Sub Command4_Click()
If IsDate(Text3.Text) Then
bien2 = MsgBox("Thao tac se thay doi gio he thong. Ban van muon tiep
tuc?", vbOKCancel + vbQuestion, "Canh bao!")
If bien2 = 1 Then
Time = Format(Text3.Text, "hh:mm:ss")
MsgBox ("Gio cua he thong da duoc thay doi")
Frame2.Visible = False
End If
Else
MsgBox ("Nhap sai cu phap. Moi nhap lai dung cu phap HH:MM:SS")
Text3.SetFocus
End If
15
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
End Sub
Private Sub Command5_Click()

Frame2.Visible = False
End Sub
Private Sub Command6_Click()
Frame1.Visible = False
End Sub
Private Sub Command7_Click()
bien2 = MsgBox("Ban thuc su muon thoat khoi chuong trinh?",
vbOKCancel + vbQuestion, "Thoat")
If bien2 = 1 Then
End
Else
MsgBox ("Quay lai chuong trinh")
End If
End Sub
Private Sub Form_Load()
With MSComm1
.Settings = "9600,N,8,1" ' thiet dat cau hinh cong COM
.CommPort = 1 'su dung cong COM1
.RThreshold = 1
.SThreshold = 0
.InputMode = 0 'comInputModeText 0
.InputLen = 2 'Doc toan bo du lieu trong bo dem nhan
If .PortOpen = False Then ' mo cong
16
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
.PortOpen = True
End If
End With
Timer1.Enabled = True
Timer1.Interval = 1000

Timer2.Enabled = True
Timer2.Interval = 1000
Frame1.Visible = False
Frame2.Visible = False
End Sub
Private Sub Timer1_Timer()
Label14.Caption = DateTime.Now
End Sub
Private Sub Timer2_Timer()
If (7 < Hour(Now) And Hour(Now) < 23) Then
MSComm1.Output = "N"
Image2.Visible = False
Image1.Visible = True
Else
MSComm1.Output = "D"
Image1.Visible = False
Image2.Visible = True
End If
End Sub
17
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
TG#mDt4
 Cổng COM ảo
Chúng em sử dụng phần mềm tạo cổng COM ảo VSP (Vitual Serial Port
Driver 6.9) để tạo các cặp cổng COM ảo cho việc mô phỏng mạch trên Proteus.
Giao diện phần mềm tạo COM ảo
18
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
 Mô phỏng Proteus
Sau đây là mạch mô phỏng trên phần mềm mô phỏng Proteus:

Mạch mô phỏng điều khiển đèn giao thông
19
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
Code KeilC:
25s 5s 30s
X1 V1 D1
Hướng đi 1
Hướng đi 2 D2 X2 V2
******************************************************************
#include<reg52.h>
#include<stdio.h>
#include<math.h>
sbit led4=P0^0;
sbit led3=P0^1;
sbit led2=P0^2;
sbit led1=P0^3;
sbit cp2=P3^6;
sbit kcp2=P3^7;
sbit x1=P1^0;
sbit v1=P1^1;
sbit d1=P1^2;
sbit x2=P1^3;
sbit v2=P1^4;
sbit d2=P1^5;
sbit cp1=P1^6;
20
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
sbit kcp1=P1^7;
unsigned char M[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned long int dv0,c0,c1,dv1;

unsigned long int i,j,dem=0;
unsigned char dem1;
void delay (unsigned long n)
{
unsigned long l;
for(l=1;l<= n;++l);
}
void main()
{
unsigned char luu;
SCON=0x52;
TMOD=0x21;
TH1=TL1=-3;
TR1=1;
IE=0x82;
TR0=1;
while(1)
{
21
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
if(RI==1)
{
luu=SBUF;
RI=0;
}
if(luu=='N')
{
if(dem<=25)
{
x1=0;d2=0;cp2=0;kcp1=0;//led sang

v1=1;d1=1;cp1=1;kcp2=1;v2=1;x2=1;//led toi
c0=(30-dem)/10;
dv0 =(30-dem)%10;
c1=(25-dem)/10;
dv1 =(25-dem)%10;
led4=0;
led3=0;
led1=0;
led2=1;
22
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
P2=M[dv0];
delay(100);
led4=0;
led3=0;
led2=0;
led1=1;
P2=M[c0];
delay(100);
led1=0;
led2=0;
led3=0;
led4=1;
P2=M[dv1];
delay(100);
led1=0;
led2=0;
led4=0;
led3=1;
P2=M[c1];

delay(100);
23
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3

}
if(dem>25 &&dem<= 30) // giai doan 2
{
v1=0;d2=0;cp2=0;kcp1=0;//led sang
x1=1;d1=1;cp1=1;kcp2=1;v2=1;x2=1;//led toi
c0=(30-dem)/10;
dv0=(30-dem)%10;
led4=0;
led3=0;
led1=0;
led2=1;
P2=M[dv0];
delay(100);
led4=0;
led3=0;
led2=0;
led1=1;
P2=M[c0];
delay(100);
24
Trường Đại Học Công Nghiệp Hà Nội Nhom 16 - ĐT3 – K3
}
// Giai doan 3
if(dem>30 && dem<=55)
{
d1=0;x2=0;cp1=0;kcp2=0;//led sang

x1=1;v1=1;kcp1=1;v2=1;d2=1;cp2=1;//led toi
c0=(55-dem)/10;
dv0 =(55-dem)%10;
c1=(60-dem)/10;
dv1 =(60-dem)%10;
led4=0;
led3=0;
led1=0;
led2=1;
P2=M[dv0];
delay(100);
led4=0;
led3=0;
led2=0;
led1=1;
P2=M[c0];
25

×