Tải bản đầy đủ (.doc) (28 trang)

Thiết Kế Mô Hình Đèn Điều Khiển Giao Thông Ở Ngã Tư

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 (706.3 KB, 28 trang )

ỏn mụn hc Ghộp Ni Mỏy Tớnh

Lời nói đầu
Giao thông là vấn đề rất thực tế mà nhiều ngời đều biết đến
hàng ngày. nhng để hiểu rõ hơn về việc điều khiển đèn giao
thông ở ngã t,thì nhóm chúng em nhận làm bài lớn về điều
khiển đèn giao thông ở ngã t. Đợc sử dụng IC89s52 và một số
linh kiện khác.
Kết thúc môn ghép nối máy tính chúng em đã nhận đề tài
Thiết kế mô hình điều khiển đèn giao thông ở ngã t.
Yêu cầu:
- Mạch điện tử đợc thiết kế trên máy tính bằng phần mềm
chuyên dụng.
- Sử dụng cổng song song để ghép nối với mạch ngoài
- Hệ thống có các đèn Xanh, Đỏ, Vàng điều khiển xe cộ, các
đèn xanh, đỏ 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ừ 6h đến 23h: Các đèn Xanh, Đỏ, Vàng
sáng 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.

THIT K Mễ HèNH ẩN IU KHIN GIAO THễNG
NG T (S DNG CNG SONG SONG)

1



Đồ án môn học Ghép Nối Máy Tính

I. Giới thiệu về cổng song song
1) Cổng m¸y in(LPT):
Cổng song song được thiết kế đầu tiªn bởi c«ng ty Centronics nhằm
mục đÝch ghÐp nối m¸y tÝnh với m¸y in. Sau này cổng này được tiªu
chuẩn hãa và cã mặt ở hầu hết c¸c m¸y tÝnh .Tªn gọi của cổng song song
bắt nguồn từ kiểu truyền dữ liệu qua cổng này ,c¸c bÝt truyền song song
còng c¸c byte th× nối tiếp .Ngoài tªn gọi này ra cổng song song còng cã
tªn là cổng LPT hoặc cổng Centronics.
Cấu tróc cổng song song gồm 8 đường dữ liệu , 4 đường dẫn điều khiển
và 5 đường dẫn trạng th¸i .C¸c đừờng dẫn này đều tương thÝch mức
TTL(0;5) do vậy khã thuận tiện, đơn giản cho vỉệc ghÐp nối víi nhiều linh
kiện ,mạch điện tương thÝch với mức điện ¸p trªn .
Khoảng c¸ch truyền của cổng song song bị hạn chế do điện dung kÝ
sinh, hiện tượng cảm ứng và bị suy giảm c«ng suất .Khoảng c¸ch này bị
giới hạn trong khoảng c¸ch là 2m. Nếu cần ghÐp nối ở khoảng c¸ch xa
hơn cần cã c¸c bộ đệm ,c¸c phương ph¸p làm giảm điện dung kÝ sinh,
hiện tượng cảm ứng (chẳng hạn kẹp mass giữa c¸c đường tÝn hiệu ). Nếu
muốn có khoảng c¸ch xa hơn nữa, nªn chọn giải ph¸p kh¸c ( cổng nối
tiếp chẳng hạn).

Cæng LPT
Trong c¸c m¸y tÝnh thế hệ cũ , cổng song song cã tới 36 ch©n nhưng ngày
nay để giảm chi phÝ, người ta đã chuẩn hãa thành 25 ch©n, trong số 25
ch©n này chỉ cã 18 ch©n cã ý nghĩa thực thụ, số còng lại đều là c¸c ch©n
nối mass , kÝ hiệu và ý nghĩa của c¸c ch©n cắm trªn cổng song song như
sau:

2



Đồ án môn học Ghép Nối Máy Tính

C¸c đường dẫn tÝn hiệu này được chia thành 3 nhãm:
- C¸c đường dẫn tÝn hiệu xuất ph¸t ra từ m¸y tÝnh và điều khiển m¸y
in được gọi là c¸c đường dẫn điều khiển .
- C¸c đường dẫn tÝn hiệu đưa c¸c th«ng b¸o ngược lại từ m¸y in về
m¸y tÝnh được gọi là c¸c đường dẫn trạng th¸i .
- C¸c đường dẫn dữ liệu :Truyền c¸c bytes kÝ tự cần in.
C¸c nhãm đường dẫn tÝn hiệu trªn cã liªn quan trực tiếp với c¸c thanh
ghi trong . Để cã thể ghÐp nối c¸c thiết bị ngoại vi, c¸c mạch điện ứng
dụng trong đo lường và điều khiển với cổng song song ta phải t×m hiểu
c¸ch trao đổi với c¸c thanh ghi th«ng qua c¸ch sắp xếp đường dẫn địa chỉ
của c¸c thanh ghi cũng như c¸c phần mềm liªn quan. Có 3 thanh ghi như
sau
- Thanh ghi dữ liệu (cã điạ chỉ cơ sở ).

- Thanh ghi trạng th¸i ( có địa chỉ cơ sở +1).

3


Đồ án môn học Ghép Nối Máy Tính

- Thanh ghi điều khiển (có địa chỉ cơ sở +2).

Qua cấu tróc c¸c thanh ghi ta thấy có 8 đường dẫn dữ liệu tới 8 « như
trªn thanh ghi dữ liệu cïng 4 đường dẫn điều khiển Strobe, Auto
Linefeed, Reset, Select Input dẫn tới 4 « nhớ trªn thanh ghi điều khiển ,

cuối cïng là đường dẫn trạng th¸i Acknowledge, Busy, Paper Empty,
Select , Error nối tới 5 « trªn thanh ghi trạng th¸i . Riªng ở thanh ghi điều
khiển cần chó ý tới 1 bit nữa được sử dụng cho mục đÝch ghÐp nối nhưng
lại không được nối với ổ cắm 25 ch©n , bÝt này cã thể được sử dụng để
xãa 1 ngắt cã liªn quan với đường dẫn Acknowledge.
Ta cã thể trao đổi với 3 thanh ghi này như thế nào?. Hệ điều hành DOS
dự tÝnh đến 4 cổng song song đặt tªn là: LPT1, LPT2, LPT3 và LPT4. Tuy
vậy hầu hết c¸c m¸y vi tÝnh PC đều chỉ cã nhiều là 2 cổng song song thậm
chÝ là 1 lý do kinh tế. Khi bật m¸y , BIOS sẽ kiểm tra trªn m¸y cã mấy
cổng song song . C¸c cổng song song được BIOS t×m thấy sẽ được sắp
theo c¸c tªn lần lợt là LPT1, LPT2… phần lớn c¸c phiªn bản của BIOS
chạy trong giai đoạn khởi động (Boot phase) của m¸y tÝnh , khi đó c¸c
th«ng số về phần cứng cũng như c¸c cổng song song t×m thấy sẽ hiÓn thị
trong khung h×nh chữ nhật. Ta cã thể dừng lại qu¸ tr×nh khởi động của

4


Đồ án môn học Ghép Nối Máy Tính

m¸y tÝnh b»ng phÝm Pause để quan s¸t kỹ c¸c th«ng số được liệt kª trong
bảng.
C¸c địa chỉ của cổng song song trªn m¸y tÝnh PC:

2, IC 89s52:

H×nh:S¬ ®å ch©n AT89s52

5



ỏn mụn hc Ghộp Ni Mỏy Tớnh

Bộ vi điều khiển AT89S52 gồm các khối chức năng chính sau
đây:
CPU( Central Processing Unit) bao gồm:
- Thanh ghi tích luỹ A
- Thanh ghi tích luỹ phụ B, dùng cho phép nhân và phép
chia
- Đơn vị logic học( ALU: Arithmetic Logical Unit)
- Từ trạng thái chơng trình( PSW: Progam Status Word)
- Bốn băng thanh ghi
- Con trỏ ngăn xếp
Bộ nhớ chơng trình( Bộ nhớ ROM) gồm 8Kb Flash.
Bộ nhớ dữ liệu( Bôn nhớ RAM) gồm 256 bytes.
Bộ UART( Universal Ansynchronous Receiver and
Tranmitter) làm chức năng truyền nhận nối tiếp, nhờ khối này,
AT89S52 có thể giao tiếp với máy tính qua cổng COM.
3 bộ Timer /Counter 16 bít thực hiện các chức năng định
thời và đếm sự kiện.
WDM( Watch Dog Timer) đợc dùng để phục hồi lại
hoạt động của CPU khi nó bị treo bởi một nguyên nhân nào đó.
WDM ở AT89S52 gồm một bộ Timer 14 bít, một bộ Timer 7 bít,
thanh ghi WDTPRG( WDT programable) điều khiển Timer 7 bit
và một thanh ghi chớc năng WDTRST( WDM register). Bình thờng WDT không hoạt động( bị cấm), để cho phép WDT, các giá
trị 1EH và E1H cần phải đợc ghi liên tiếp vào thanh ghi
WDTRST. Timer 14 bit của WDT sẽ đếm tăng dần sau mỗi chu
kỳ đồng hồ cho đến giá trị 16383 thì xảy ra tràn. Khi xảy ra tràn,
chân RTS sẽ đợc đặt ở mức cao trong thời gian 96.Tosc
(Tossc=1/Fosc) và AT89S52 sẽ đợc reset. Khi WDT hoạt động,

ngoại trừ reset phần cứng và reset do WDT tràn thì không có
cách nào cấm đợc WDT, vì vậy khi sử dụng WDT thì các đoạn
mã chơng trình phải đợc đặt trong các khe thời gian từ khi giữa
các lần WDT đợc khởi tạo lạ:

6


ỏn mụn hc Ghộp Ni Mỏy Tớnh

Hình : sơ đồ điều khiển 89s52

1.4- Sơ đồ các chân và chức năng
7


ỏn mụn hc Ghộp Ni Mỏy Tớnh

1.Port 0(P0.0-P0.7

hay từ chân 32 đến chân 39): Gồm 8 chân, ngoài
chức năng xuất nhập ra, Port 0 còn là Bus đa hợp dữ liệu và địa
chỉ( AD0-AD7), chức năng này sẽ đợc sử dụng khi AT89S52 giao
tiếp với thiết bị ngoài có kiến trúc Bus

8


ỏn mụn hc Ghộp Ni Mỏy Tớnh


2.Port 1( P1.0-P1,7 hay từ chân 1 đến chân 8) : Có chức năng xuất

nhập theo bit và byte. Ngoài ra, 3 chân P1.5, P1.6, P1.7 đợc dùng
để nạp ROM theo chuẩn ISP, 2 chân P1.0 và P1.1 đợc dùng cho
bộ Timer 2

3.Port 2( P2.0- P2.7 hay từ chân 21 đến chân 28): Là một port có

công dụng kép: là đờng xuất nhập hoặc là byte cao của bus địa
chỉ đối với các thiết kế dùng bộ nhớ mở rộng.

9


ỏn mụn hc Ghộp Ni Mỏy Tớnh

4.Port 3( P3.0- P3.7 hay từ chân 10 đến chân 17): Mỗi chân trên port

3 ngoài chức năng xuất nhập ra còn có một chức năng riêng:
Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
ngoài
P3.7
ngoài


Tên
RXD
TXD
INT0
INT1
T0
T1
WR
RD

Chức năng
Dữ liệu nhận cho port nối tiếp
Dữ liệu phát cho port nối tiếp
Ngắt 0 bên ngoài
Ngắt 1 bên ngoài
Ngõ vào của Timer/Counter 0
Ngõ vào của Timer/Counter 1
Xung ghi bộ nhớ dữ liệu bên
Xung đọc bộ nhớ dữ liệu bên

10


ỏn mụn hc Ghộp Ni Mỏy Tớnh

5.

RST( Reset- chân 9):


Mức tích cực của chân này là mức 1, để reset ta phải đa mức
1(5V) đến chân này với thời gian tối thiểu 2 chu kỳ máy( tơng đơng
2uS đối với thạch anh 12MHz.
Trạng thái của các thanh ghi khi reset, khi reset thì trạng thái
của các thanh ghi không thay đổi

6.XTAL1, XTAL2:

AT89S52 có một bộ dao động trên chip, nó thờng đợc nồi
với một bộ dao động thạch anh có tần số lớn nhất là 33MHz,
thông thờng là 12MHz.
11


ỏn mụn hc Ghộp Ni Mỏy Tớnh

7. EA( External Access):
EA thờng đợc mắc lên mức cao(+5V) hoặc mức
thấp( GND). Nếu ở mức cao, bộ vi điều khiển thi hành chơng
trình từ ROM nội. Nếu ở mức thấp, chơng trinh chỉ đợc thi hành
từ bộ nhớ mở rộng.
8.ALE( Address Latch Enable):

ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên
ngoài trong nửa đầu của chu kỳ bộ nhớ. Sau đó các đờng port 0
dùng để xuất hoặc nhập dữ liệu trong nửa chu kỳ sau của bộ
nhớ.
9.PSEN( Program Store Enable):
PSEN là điều khiển để cho phép bộ nhớ chơng trình mở
rộng và trờng đợc nối đến chân /OE ( Output Enable) của một

EPROM để cho phép đọc các bytes mã lệnh.
PSEN sẽ ở mức thấp trong thừi gian đọc lệnh. Các mã
nhị phân của chơng trình đợc đọc từ EPROM qua Bus và đợc
chốt vào thanh ghi lệnh của bộ vi điều khiển để giải mã lệnh. Khi
thi hành chơng trình trong ROM nội, PSEN sẽ ở mức thụ
động( mức cao)
10.Vcc, GND:
AT89S52 dùng nguồn một chiều có dải điện áp từ 4V5.5V đợc cấp qua chân 40(+) và chân 20(-).

1.5-Tổ chức bộ nhớ của AT89S52
1.Bộ nhớ chơng trình

AT89S5289S52
có 8Kb Flash Rom trên chip, khi chân EA( Chân
31)
đFlash
EPRROM
ợc đặt ở mức logic cao(+5V), bộ vi điều khiển sẽ thực hiện
chơng
A15:8
trình trong ROM
nội bắt đầu từ địa chỉ 0000H. Số lần ghi cho bộ
P2
nhớ này khoảng 1000 lần( trên lý thuyết).
Khi chân EA đợc đặt ở mức thấp, bộ vi điều khiển sẽ thực hiên
chơng trình ALE
ở bộ nhớ chơng trình ngoài (EPROM ngoài),
A7:0 tuy
nhiên
để có ợc điều này thì Latch

phải có một mạch phối ghép
AT89S52 với EPROM đợc lựa chọn.
P0

Hình dới là một vi mach chốt (Latch) sẽ tách riêng bus đa hợp
địa chỉ và dữ liệu AD0- AD7; Tuỳ theo dung lợng của EPROM sẽ
D7:0
có số đờng địa chỉ tơng ứng đợc dung; EPROM đợc đọc
nhờ tín
hiệu PSEN
OE

PSEN #
12


ỏn mụn hc Ghộp Ni Mỏy Tớnh

2.Bộ nhớ dữ liệu

AT89S52 có 256 bytes RAM nội đợc phân chia nh sau:
Các bank thanh ghi có địa chỉ từ 00H đến 1FH:
32 byte thấp của bộ nhớ nội đợc dành cho các bank thanh ghi. Bộ
lệnh AT89S52 hỗ trợ 8 thanh ghi có tên là R0-R7 và theo mặc định
sau khi reset hệ thống, các thanh ghi này có các địa chỉ từ 00H đến
07H.
Các lệnh dùng các thanh ghi R0-R7 sẽ ngắn hơn và nhanh hơn so
với các lệnh có chức năng tơng ứng dùng kiểu địa chỉ trực tiếp. Các
dữ liệu đợc dung thờng xuyên nên dùng một trong các thanh ghi này.
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank

thanh ghi đợc truy xuất bởi các thanh ghi R0-R7, để chuyển đổi việc
truy xuất thanh ghi ta phải thay đổi các bit chọn bank trong thanh
ghi trạng thái.
RAM địa chỉ hoá từng bit có địe chỉ từ 20H đến 2FH:
AT89S52 có 128 bits có chứa các byte định địa chỉ theo bit từ 20H
đến 2FH. ý tởng truy xuất từng bit bằng phần mềm là các đặc tính
mạnh của các bộ vi điều khiển nói chung. Các bit có thể đợc đặt
xoá, AND, OR..., với một lệnh đơn.
RAM đa dụng từ 30H đến FFH.
Các thanh ghi chức năng đặc biệt từ 80H đến FFH

13


Đồ án môn học Ghép Nối Máy Tính

3. Bé nhí d÷ liÖu ngoµi:

14


ỏn mụn hc Ghộp Ni Mỏy Tớnh
Port 0
EA
ALE
Port 2

D0-D7
74HC373
O

D

A0-A7

G

RAM
A8-A15

89S52
RD

OE
WE

WR

Sơ đồ ghép nối AT89S52 với RAM
Bộ nhớ dữ liệu ngoài là bộ nhớ RAM đợc đọc hoặc ghi bởi tín hiệu
/RD và WR. Các RAM có thể giao tiếp với AT89S52 tơng tự cách thức
nh EPROM
ngoại trừ chân /RD của AT89S52 nối với chân /OE của RAM và
chân /WR của AT89S52 nối với chân /WE của RAM.
Nếu có nhiều vi mạch RAM hoặc ROM sùng đợc ghép nối với
AT89S52 thì có thể dùng thêm vi mạch giải mã 74LS138.

4.Các thanh ghi chức năng
Từ trạng thái chơng trình( PSW: Program Status Word).
Thanh ghi B.
Con trỏ ngăn xếp SP( Stack pointer).

Con trỏ dữ liệu DPTR( Data poiner)
Các thanh ghi Port( Port register)
Các thanh ghi của các bộ Timer( Timer register)
Các thanh ghi Port nối tiếp(Serial Port register)
Các thanh ghi ngắt( Interrupt register)
Thanh ghi điều khiển nguồn( Power Control register)

5. Mạch tạo dao động và Reset
* Mạch tạo dao động:

15


ỏn mụn hc Ghộp Ni Mỏy Tớnh

AT89S52 có một bộ chia tần số trong chip, bộ này sẽ cấp xung
clock cho các khối bên trong chip từ nguồn dao động bên ngoài qua 2
chân XTAL1 và XTAL2

* Mạch Reset:
Có 4 cách để reset AT89S52 lần lợt là: Reset khi cấp nguồn,
Reset bởi WDT, Reset bằng phần mềm và Reset bằng mạch ngoài qua
chân RST.
HI

Vcc

R 1
10K


1
2
3
4
5
6
7
8
19
18
31
9
40

0 .0
0 .1
0 .2
0 .3
0 .4
0 .5
0 .6
0 .7

/A
/A
/A
/A
/A
/A
/A

/A

P
P
P
P
P
P
P
P

1 .0
1 .1
1 .2
1 .3
1 .4
1 .5
1 .6
1 .7

/T 2
/T 2 E X
/S
/M
/M
/S

D
D
D

D
D
D
D
D

0
1
2
3
4
5
6
7

P
P
P2
P2
P2
P2
P2
P2

S
O SI
IS O
C K

XTA L1

XTA L2

2 .0 /A
2 .1 /A
.2 /A 1
.3 /A 1
.4 /A 1
.5 /A 1
.6 /A 1
.7 /A 1

8
9
0
1
2
3
4
5

P 3 .0 /R XD
P 3 .1 /T XD
P 3 .2 /IN T 0
P 3 .3 /IN T 1
P 3 .4 /T 0
P 3 .5 /T 1
P 3 .6 /W R
P 3 .7 /R D
PSEN
A L E /P R O G


2
2
2
2
2
2
2
2

1
2
3
4
5
6
7
8

1
1
1
1
1
1
1
1

0
1

2
3
4
5
6
7

29
30

E A /V P P
R ST
VC C

G N D

C

P
P
P
P
P
P
P
P

20

SW 2

C 2

Reset

AT89S52
39
38
37
36
35
34
33
32

16


ỏn mụn hc Ghộp Ni Mỏy Tớnh

1.6-POrt nối tiếp

AT89S52 có một port nối tiếp trong chip có thể hoạt động ở
nhiều chế độ khác nhau, nhiều tốc độ khác nhau. Chức năng chủ yếu
của một 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 ra và chuyển đổi nói tiếp sang song song với dữ liệu
nhập để có thể giao tiếp với máy tinh qua cổng nối tiếp hoặc các thiết
bị tơng tự

AT89S52


Máy
tính

Bộ chuyển đổi
mức

Cổng
COM

Mô tả hoạt động của Port nối tiếp
Port nối tiếp có thể hoạt động song công( full duplex: thu và phát
đồng thời) và đệm lúc thu( receiver buffering) cho phép một kí tự sẽ
đợc thu và đợc giữ trong khi kí tự thứ 2 đợc nhận. Nếu CPU đọc kí tự
thứ nhất trớckhi kí tự thứ 2 đợc thu đầy đủ thì dữ liệu sẽ không mất.
1.Các thanh ghi của port nối tiếp
Có 2 thanh ghi chức năng đặc biệt cho phép phần mềm
truy xuất đến Port nối tiếp: SBUF và SCON.
Thanh ghi điều khiển Port nối tiếp( SCON- Serial Controller).
Thanh ghi điều khiển Port nối tiếp SCON ở địa chỉ 98H
là thanh ghi có điịnh địa chỉ bit, chứa các bit trạng thái và các bit để
đièu khiển liên quan tới port nối tiếp. Các bit điều khiển đặt chế độ
hoạt động cho Port nối tiếp, các bit trạng thái báo cáo kết thúc việc
phát hoặc thu một ký tự. Các bit trạng thai có thể đợc kiểm tra bằng
ophần mềm hoặc có thể đợc lập trình để tạo ngắt.
Bit
Ký hiệu Địa chỉ
SCON.7
SM0
9FH
SCON.6

SM1
9EH

Mô tả
Mode 1-Bit 0 chọn chế độ cho Port nối tiếp
Mode 1-Bit 1 chọn chế độ hoạt động cho Port
nối tiếp
SM0SM1=00: Port nối tiếp hoạt động ở chế độ 0
SM0SM1=01: Port nối tiếp hoạt động ở chế độ1
17


ỏn mụn hc Ghộp Ni Mỏy Tớnh

SCON.5

SM2

9DH

SCON.4

REN

9CH

SCON.3

TB8


9BH

SCON.2

RB8

9AH

SCON.1

TI

99H

SCON.0

RI

98H

SM0SM1=10: Port nối tiếp hoạt động ở chế độ2
SM0SM1=11: Port nối tiếp hoạt động ở chế độ3
Mode 2-Bit 2 chọn chế độ cho Port nối tiếp
Bit này cho phép truyền thông đa xử lý
Receiver Enable-Bit cho phép thu, REN phải
đợc đặt bằng 1 để cho phép nhận các ký tự
Transmitted bit 8-Bit truyền thứ 9 sử dụng trong
chế độ UART 9 bit
Receiver bit 8- Bit nhận thứ 9 trong sử dụng
trong chế độ UART 9 bit

Transmitted Interupt- Cờ ngắt truyền, TI đợc
đặt bằng 1 khi kết thúc việc truyền 1 ký tự, TI
đợc xoá bằng phần mềm
Receiver Interupt-Cờ ngắt nhận, RI đợc dặt
bằng 1 khi kết thúc việc nhận 1 ký tự,RI đợc
xoá bằng phần mềm

Trớc khi sử dụng cổng nối tiếp, phải khởi động thanh ghi SCON để
chọn chế độ
2.Trao đổi dữ liệu qua Port nối tiếp
Thao tác trao đổi dữ liệu qua port nối tiếp không đơn thuần chỉ là
việc ghi/đọc dữ liệu nh trao đổi dữ liệu trực tiếp qua các port(chẳng
hạn P1, P2,4...) mà nó bao gồm 3 thao tác cính nh sau:
- Khởi tạo cổng nối tiếp: Thao tác này bao gồm các việc nh sau:
+ 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 xoá 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ộ Timer 1 và Timer 2
để đặt tốc độ baud cho port nối tiếp( Chỉ với chế độ 1 và 3).
- Kiểm tra cờ TI( Khi truyền) và RI( Khi nhận).
-Ghi/ đọc byte dữ liệu ở SBUF
S MCH NGUYấN Lí

18


Đồ án môn học Ghép Nối Máy Tính

19



Đồ án môn học Ghép Nối Máy Tính

20


Đồ án môn học Ghép Nối Máy Tính

SƠ ĐỒ MẠCH IN

21


Đồ án môn học Ghép Nối Máy Tính

CHƯƠNG TRÌNH PHẦN MỀM
Phần lập trình trên CHIP 89S52
#include<reg52.h>
#include<stdio.h>
#include<math.h>
sbit led4=P3^0;
sbit led3=P3^1;
sbit led2=P3^4;
sbit led1=P3^5;
sbit cp2=P3^6;
sbit kcp2=P3^7;
sbit xung=P3^3;
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;
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;
void delay (unsigned long n)
{
unsigned long l;
for(l=1;l<= n;++l);
}
void main()
{
IE=0x81;
IT0=1;
while(1)
{
if(P0==0xfe)
{
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
22



Đồ án môn học Ghép Nối Máy Tính

c0=(30-dem)/10;
dv0 =(30-dem)%10;
c1=(25-dem)/10;
dv1 =(25-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);
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);

}
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;
23


Đồ án môn học Ghép Nối Máy Tính

P2=M[c0];
delay(100);
}
// Giai doan 3-------------4------------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];
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);
}
if(dem>55 &&dem<= 60)
{
d1=0;v2=0;cp1=0;kcp2=0;//led sang

x1=1;v1=1;kcp1=1;x2=1;d2=1;cp2=1;//led toi
c1=(60-dem)/10;
dv1=(60-dem)%10;
led1=0;
led2=0;
led3=0;
led4=1;
24


Đồ án môn học Ghép Nối Máy Tính

P2=M[dv1];
delay(100);
led1=0;
led2=0;
led4=0;
led3=1;
P2=M[c1];
delay(100);
}
if(dem>60)
dem=1;

}
else if(P0==0xfd)
{
dem=0;
led4=0;led1=0;led2=0;led3=0;
v1=0;v2=0;//led sang

x1=1;d1=1;cp1=1;kcp1=1;x2=1;d2=1;cp2=1;kcp2=1;//led toi
delay(2000);
led4=0;led1=0;led2=0;led3=0;
v1=1;v2=1;//led sang
x1=1;d1=1;cp1=1;kcp1=1;x2=1;d2=1;cp2=1;kcp2=1;//led toi
delay(2000);
}
else
{
dem=0;
led4=0;led1=0;led2=0;led3=0;
v1=1;v2=1;//led sang
x1=1;d1=1;cp1=1;kcp1=1;x2=1;d2=1;cp2=1;kcp2=1;//led toi
}
}
}
void ngat0(void) interrupt 0
{
dem++;
}

Phần lập trình và thiết kế giao diện trên VB6

25


×