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

đồ án vi điều khiển bk

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 (830.91 KB, 32 trang )

ĐỒ ÁN VI ĐIỀU KHIỂN
MỤC LỤC


ĐỒ ÁN VI ĐIỀU KHIỂN
LỜI NÓI ĐẦU
Trong thời đại công nghệ phát triển mạnh mẽ, các thiết bị số đang
có vai trò quan trọng đối với công nghiệp và đời sống con người và
đang dần chiếm ưu thế về số lượng và chủng loại. Công nghệ số được
ứng dụng trong nhiều lĩnh vực trong cộc sống, chủ yếu làm các nhiêm vụ
chính như: đo lường, điều khiển cơ cấu máy, truyền thong giữa các thiết bị
…tạo sự tiện dụng cho con người khi sử dụng các thiết bị điện tử.
Với tính ưu việt của vi điều khiển đối với các hệ thống vừa và nhỏ
thực hiện một hoặc nhiều quá trình, trong đồ án này hệ thống vi điều khiển
được dùng trong một lĩnh vực thường gặp khi nói đến khi nhắc đến vi
điều khiển : đếm sự kiện. Một trong những ứng dụng của nó trong thực
tế là phần đếm sản phẩm trong các dây truyền công nghiệp ngày nay. Đồ
án này có thể cải tiến thêm nhiều chức năng nữa cho phù hợp với những
dây truyền hiện đại và mục đích sử dụng của mạch như liên kết với cơ
cấu để có thể xếp đủ sản phẩm vào một thùng, hay đếm số thùng trong
một lô hàng, nó cũng có thể lưu lại dữ liệu của một ca làm việc tiện cho
việc kiểm tra bảo mật…
Đồ án đã được thực hiện nhằm làm rõ hơn bản chất của vi điều
khiển đối với việc điều khiển một quá trình và bản chất cấu thành của
một hệ thống vi điều khiển. Từ kiến thức đã học đồng thời tham khảo
thêm thông tin từ nhiều nguồn cùng với sự trợ giúp của thầy cô và bạn bè,
tuy vậy với vốn kiến thức có hạn không tránh khỏi những thiếu sót khi
thực hiện. Mong các thầy cô và mọi người góp ý cho đề tài này thêm
hoàn chỉnh.



ĐỒ ÁN VI ĐIỀU KHIỂN

CHƯƠNG I: TỔNG QUAN ĐỀ TÀI
I. MẠCH ĐẾM SẢN PHẨM

Ngày nay, cùng với sự phát triển của khoa học kỹ thuật nói chung và
kỹ thuật điện tử nói riêng. Kỹ thuật số đóng vai trò quan trọng trong mọi
lĩnh vực khoa học kỹ thuật , quản lý, công nghiệp hóa tự động hóa. Do đó
chúng ta phải nắm bắt vận dụng nó một cách hiệu quả nhằm góp phần vào
sự phát triển của nền khoa học kỹ thuật thế giới nói chung và phát triển của
kỹ thuật điện tử nói chung.
Việc áp dụng lĩnh vực điện tử vào nghành sản xuất sản phẩm gia
dụng trong nhà và các hệ thống quản lý sản xuất đang được đưa vào ứng
dụng rộng rãi hơn và phù hợp với chức năng cụ thể của nó làm tăng năng
suất làm việc cho dây truyền làm việc. Phù hợp với tiến trình công nghiệp
hóa hiện đại hóa nền công nghiệp nước ta.
Trong thực tế các nhà máy sản xuất lớn đã ứng dụng việc đếm sản
phẩm trong khâu đóng gói sản phẩm bằng các mạch điện tử làm tăng năng
suất lao động và giảm chi phí nhân công, tự động hóa dây truyền công
nghiệp, chính xác hóa trong sản phẩm.
Mạch đếm sản phẩm mà tôi được giao làm đồ án mô phỏng một hệ
thống đếm sản phẩm của dây truyền công nghiệp. Với đề tài này tôi chọn
mạch đếm sản phẩm dùng 89s52 một trong những dòng vi xử lý mà tôi đã
được học trong môn vi điều khiển với những linh kiện nhỏ gọn thực hiện
viêc đếm sản phẩm. Linh kiện hồng ngoại được chọn trong mạch là thu
phát hồng ngoại tích hợp 2 trong 1 nhằm đảm bảo sự gọn nhẹ cho mạch
mô phỏng. Phần giao tiếp máy tính dùng Max232 để đồng bộ tín hiệu giữa
mạch với máy tính (đồng bộ điện áp).



ĐỒ ÁN VI ĐIỀU KHIỂN
II.TỔNG QUAN CẤU TRÚC HỆ THỐNG
1.

Sơ đồ khối

Hình 1
2.
-

Chức năng các khối
Mạch nguồn: cung cấp nguồn điện cho hệ thống hoạt động
Mạch Reset: Reset Vi điều khiển
Mạch tạo xung: tạo xung cho Vi điều khiển
Cảm biến hồng ngoại: phát hiện sản phẩm
Mạch so sánh: gây ngắt cho vi điều khiển khi có sản phẩm đi qua
Led đơn: báo sang khi đếm đủ sản phẩm
Led 7 đoạn: hiển thị số lượng sản phẩm
Max 232: Tương thích mức điện áp giữa máy tính với vi điều khiển
Cổng COM: truyền nhận dử liệu từ máy tính tới vi điều khiển
Giao diện: giao diện điều khiển hệ thống


ĐỒ ÁN VI ĐIỀU KHIỂN
III. GIỚI THIỆU VỀ LINH KIỆN SỬ DỤNG
1.

Giới thiệu 89S52

Hình 2

AT89S52 là một vi điều khiển thông dụng giá rẻ và có nhiều tính
năng hay,đặc biệt là có tích hợp mạch nạp ISP trên chíp giúp người sử
dụng có thể dễ dàng thực hiện các thí nghiệm với chi phí thấp.
AT89S52 gồm các chức năng chính sau:
* CPU gồm:
- Thanh ghi tích lũy A;
- Thanh ghi tích lũy phụ B,dùng cho phép nhân và phép chia;
- Đơn vị logic học (ALU: Arithmetic Logical Unit);
- Thanh ghi từ trạng thái chương trình (PSW: Programe Status
Word);
- Bốn băng thanh ghi;
- Con trỏ ngăn xếp.


ĐỒ ÁN VI ĐIỀU KHIỂN
* Bộ nhớ chương trình (bộ nhớ ROM) gồm 8kbyte Flash.
* Bộ nhớ dữ liệu (bộ nhớ RAM) gồm 256 byte.
* Bộ UART (Universal Ansynchronous Receiver and Transmitter)
có chức năng truyền nhận nối tiếp, AT89S52 có thể giao tiếp với cổng nối
tiếp của máy tính thông qua bộ UART.
* 3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm
sự kiện.
* WDM (Watch Dog Timer): WDM được dùng để phục hồi lại hoạt
động của CPU khi nó bị treo bởi nguyên nhân nào đó.
* Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt
trong.
* Bộ lập trình (ghi chương trình lên Flash ROM) cho phép người sử
dụng có thể nạp chương trình cho chíp mà không cần các bộ nạp chuyên
dụng
* Bộ chia tần số với hệ số chia la 12.

* 4 cổng xuất nhập với 32 chân.

Sơ đồ chân:


ĐỒ ÁN VI ĐIỀU KHIỂN
Hình 3
1.1. Port 0 (P0.0->P0.7)
Ngoài chức năng xuất nhập, Port 0 còn là bus đa hợp dữ liệu và địa
chỉ,chức năng này sẽ được sử dụng khi giao tiếp với các thiết bị ngoài có
kiến trúc như các vi mạch nhớ.
1.2. Port 1 (P1.0->P1.7)
Chức năng duy nhất của Port 1 là chức năng xuất nhập dữ liệu cũng
như các Port khác.
Port có thể xuất nhập dữ liệu theo bit hoặc theo byte. Có 3 chân
P1.5,P1.6,P1.7 được dùng để nạp ROM theo chuẩn ISP; hai chân P1.0,P1.1
được dùng cho bộ timer2.

1.3. Port 2 (P2.0->P2.7)
Ngoài chức năng là cổng xuất nhập còn là byte cao của bus địa chỉ
khi sử dụng bộ nhớ ngoài.
1.4.Port 3(P3.0->P3.7)
Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức
năng riêng cụ thể khác:
Bit

Tên

Chức năng


P3_0

RXD

Dữ liệu nhận cho port nối tiếp

P3_1

TXD

Dữ liệu truyền cho port nối tiếp

P3_2

INT0

Ngắt bên ngoài 0

P3_3

INT1

Ngắt bên ngoài 1

P3_4

T0

Ngõ vào của counter/timer 0



ĐỒ ÁN VI ĐIỀU KHIỂN
P3_5

T1

Ngõ vào của counter/timer 1

P3_6

WR

Xung ghi bộ nhớ dữ liệu ngoài

P3_7

RD

Xung đọc dữ liệu từ bộ nhớ ngoài hoặc thiết
bị ngoại vi

1.5 Chân /PSEN (Program Store Enable)
Là chân điều khiển đọc chương trình ở bộ nhớ ngoài, nó được nối
với chân /OE để cho phép đọc các byte mã lệnh trên ROM ngoài. /PSEN
sẽ ở mức thấp trong thời gian đọc mã lệnh. Mã lệnh được đọc từ bộ nhớ
ngoài qua bus dữ liệu (Port 0) , thanh ghi lệnh để được giải mã. Khi thực
hiện chương trình trong ROM nội thì /PSEN ở mức cao.
1.6 Chân /ALE (Adress Latch Enable)
ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số
dao động của vi điềukhiển. Tín hiêu ALE được dùng cho phép vi mạch

chốt bên ngoài như 74373,74573, chốt byte địa chỉ thấp ra khỏi bus đa
hợp địa chỉ/ dữ liệu (Port 0).
1.7 Chân /EA (External access)
Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong
hay ngoài vi điều khiển. Nếu /EA ở mức cao (đối với VCC ) thì vi điều
khiển thi hành chương trình trong ROM nội. Nếu /EA ở mức thấp (đối với
GND) thì vi điều khiển thi hành chương trình từ bộ nhớ ngoài
1.8 Chân/RST ( Reset)
Ngõ vào /RST trên chân 9 là ngõ reset của 8051. Khi tín hiệu này
ở mức cao (trong ít nhất 2 chu kỳ máy) các thanh ghi trong bộ vi điều
khiển được tải những giá trị thích hợp để khởi động hệ thống.


ĐỒ ÁN VI ĐIỀU KHIỂN
Mạch reset cho 8051
Reset bằng tay

Reset tự động khi cấp nguồn

Hình 4
1.9 Chân /XTAL1, /XTAL2
AT89S52 có một bộ dao động trên chíp,nó thường được nối với bộ
dao động thạch anh có tần số lớn nhất là 33 MHz, thông thường là
12MHz.
Sơ đồ mạch dao động:

Hình 5
1.10 Chân /VCC và /GND
89S52 dùng nguồn một chiều có dải điện áp từ 4v đến 5.5v được cấp
qua chân 40 và 20.

1.11 Bộ định thời/bộ đếm (timer/counter)
8051 có 2timer là timer0 và timer1.Các timer này đều là timer
16bit,giá trị đếm max do đó bằng 65536(đếm từ 0 đến 65335)
Hai timer có nguyên lý hoạt động hoàn toàn giống nhau và độc
lập.Sau khi cho phép chạy,mỗi khi có thêm một xung tại đầu vào đếm,giá
trị của timer sẽ tự động được tăng them 1 đơn vị,cứ như vậy cho đến khi
giá trị tăng lên vượt quá giá trị max mà thanh ghi đếm có thể biểu diễn thì
giá trị đếm lại được đưa về giá trị min(thông thường min=0).Điều này


ĐỒ ÁN VI ĐIỀU KHIỂN
được hiểu là tràn timer (overflow) và có thể gây ra ngắt nếu ngắt tràn timer
được cho phép.
Việc cho timer chạy/dừng được thực hiện bởi các bit TR trong thanh
ghi TCON 9 (đánh địa chỉ đến từng bit).
7

6

5

4

3

2

1

0


Khi bit TRx =1,timer x sẽ đếm,ngược lại khi TRx =0,timer sẽ không
đếm mặc dù vẫn có xung đưa vào.Khi dừng không đếm,giá trị của timer
được sẽ giữ nguyên.
Các bit TFx là các cờ báo tràn timer.khi sự tràn timer xảy ra,cờ sẽ
được tự động đặt lên 1 và nếu ngắt tràn timer được cho phép,ngắt sẽ xảy
ra.Khi CPU xử lý ngắt tràn timerx,cờ ngắt TFx tương ứng sẽ tự động được
xóa về 0.
Giá trị đếm 16 bit của timer được lưu trong hai thanh ghi THx (byte
cao) và TLx (byte thấp).Hai thanh ghi này có thể ghi/đọc được bất kỳ lúc
nào.Tuy nhiên nhà sản xuất khuyến cáo rằng nên dừng timer (cho bit
TRx=0) trước khi ghi/đọc các thanh ghi chứa giá trị đếm.
Các thanh ghi có thể hoạt động ở nhiều chế độ,được quy định bởi
các bit trong thanh ghi
TMOD (không đánh địa chỉ đến từng bit).
7

6

5

4

GATE1 C/T1# M1
Bít
Tên
Timer

M0


7

GATE1

1

6

C/T1#

1

3
GATE0

2

1

C/T0# M1
Mô tả

0
M0

Bit mở cổng cho timer 1,khi được đặt bằng 1
thì timer 1 chạy khi chân INT1 ở mức cao.Nếu
bit này được là 0 thì hoạt động của timer 1
không bị ảnh hưởng bởi mức logic trên chân
INT1.

Bit chọn chế độ counter/timer của timer
1. 1=bộ đếm sự kiện
1.0=bộ định khoảng thời gian


ĐỒ ÁN VI ĐIỀU KHIỂN
5

M1

1

Bit 1 chọn chế độ (mode) của timer 1
Bit 0 chọn chế độ của timer 1.
00:chế độ 0 – timer 13bit
01:chế độ 1 – timer 16bit
10:chế độ 2 – 8bit tự động nạp lại
11:chế độ 3 – tách timer
Bit mở cổng cho timer 0,khi được đặt bằng 1
timer 0 chỉ hoạt động khi chân INT0 ở mức
cao.

4

M0

1

3


GATE0

0

2

C/T0#

0

Bit chọn chế độ counter/timer của timer 0

1

M1

0

Bit 1 chọn chế độ của timer 0

0

M0

0

Bit 0 chọn chế độ của timer 0

Để xác định thời gian,người ta chọn nguồn xung nhịp (clock) đưa
vào đếm trong timer là xung nhịp bên trong (dành cho CPU).Nguồn xung

nhịp này thường rất đều đặn (có tần số ổn định),do đó từ số đếm của timer
người ta có thể nhân với chu kỳ xung nhịp để tính thời gian trôi qua.Timer
lúc này được gọi chính xác với cái tên “timer” ,tức bộ định thời.
Để đếm các sự kiện bên ngoài,người ta chọn nguồn xung nhịp đưa
vào đếm trong timer là tín hiệu từ bên ngoài (đã được chuẩn đoán về dạng
xung vuông 0V/5V).Các tín hiệu này sẽ được nối với các bit cổng có dồn
kênh thêm các tính năng T0/T1/T2.Khi có sự kiện bên ngoài gây ra thay
đổi mức xung ở đầu vào đếm,timer sẽ tự động tăng lên 1 đơn vị giống như
trường hợp đếm xung nhịp bên trong.Lúc này timer được gọi với cái tên
chính xác khác:”counter”,tức đếm (sự kiện).
Nhìn vào bảng mô tả thanh ghi TMOD bên trên,ta có thể nhận
thấy có hai bộ 4bit giống nhau (gồm GATEx,C/Tx,Mx0 và Mx1) dành
cho hai timer 0 và 1.Ý nghĩa các bit là như nhau đối với mỗi timer.
Bit GATEx quy định việc cho phép timer đếm (run timer).Nếu
GATEx=0,timer x sẽ đếm khi bit TRx bằng 1,dừng khi bit TRx = 0.Nếu
GATEx =1,timer x sẽ chỉ đếm khi bit TRx=1 và tín hiệu tại chân
INTx=1,dừng khi một trong hai điều kiện trên không còn thỏa
mãn.Thông thường người ta dùng timer với GATE =0,chỉ dùng timer
với GATE =1 khi muốn đo độ rộng xung vì lúc đó timer sẽ chỉ đếm thời
gian khi xung đưa vào chân INTx ở mức cao.


ĐỒ ÁN VI ĐIỀU KHIỂN
Bit C/Tx quy định nguồn clock đưa vào đếm trong timer .Nếu
C/Tx=0,timer sẽ được cấu hình là bộ định thời,nếu C/Tx=1,timer sẽ được
cấu hình là bộ đếm sự kiện.
Hai bit còn lại (Mx0 và Mx1) tạo ra tổ hợp 4 gía trị (00,01,10,11)
ứng với 4 chế độ hoạt động khác nhau của timer x.Trong 4 chế độ đó
thường chỉ dùng chế độ timer/counter 16bit (Mx1=0,Mx0=1) và chế độ
Auto Reload 8bit timer/couter (Mx1=1,Mx0=0).

Trong chế độ timer/couter 16 bit, gia trị đếm (chứa trong 2 thanh
ghi THx và TLx) tự động được tăng lên 1 đơn vị mỗi lần nhận được thêm
1 xung nhịp. Khi giá trị đếm vượt quá giá trị max = 65535 thì sẽ tràn về 0,
cờ ngắt TFx được tự động đặt =1. Chế độ này được dùng trong các ứng
dụng đếm thời gian và đếm sự kiện.
Trong chế độ auto reload 8 bit giá trị đếm sẽ chỉ được chứa trong
thanh ghi TRx, còn giá trị của thanh ghi THx bằng một số n (0->255) do
người lập trình đưa vào. Khi có thêm một xung nhịp, giá trị đếm trong
TLx đương nhiên cũng tăng lên 1 đơn vị như bình thường. Tuy nhiên
trong trường hợp này giá trị đếm lớn nhất = 255 chứ không phải = 65535
như trường hợp trên vì timer/counter chỉ còn 8 bit. Do vậy sự kiện tràn lúc
này xảy ra nhanh hơn, chỉ cần vượt quá 255 là giá trị đếm sẽ tràn. Cờ ngắt
TFx vẫn được đặt bằng 1 như trong trường hợp tràn 16 bit. Điểm khác biệt
là thay vì tràn về 0 giá trị THx sẽ được tự động nạp lại vào thanh ghi TLx,
do đó timer/counter sau khi tràn sẽ có giá trị bằng n và đếm từ giá trị n
trở đi. Chế độ này được dùng trong việc tạo Baud rate cho truyền thông
qua cổng nối tiếp.
Để sử dụng timer của 8051,ta thực hiện theo các bước sau:
- Quy định chế độ hoạt động cho timer bằng cách tính toán và ghi
giá trị cho các bit trong thanh ghi TMOD.
- Ghi giá trị đếm khởi đầu mong muốn vào hai thanh ghi đếm
THx và TLx. Đôi khi ta không muốn timer/counter bắt đầu đếm từ 0 mà
từ một giá trị nào đó để thời điểm tràn gần hơn,hoặc chẵn hơn trong
tính toán sau này.Ví dụ,nếu cho timer đếm từ 15535 thì sau 50000 xung
nhịp (tức 50000 micro giây với thạch anh 12MHz) timer sẽ tràn,và thời
gian 1giây có thể dễ dàng tính ra khá chính xác =20 lần tràn của timer
(đương nhiên mỗi lần tràn lại phải nạp lại giá trị 15535).
- Đặt mức ưu tiên ngắt và cho phép ngắt tràn timer (nếu muốn).



ĐỒ ÁN VI ĐIỀU KHIỂN
- Dùng bit TRx trong thanh ghi TCON để cho timer chạy hay dừng
theo ý muốn.
1.12 Cổng vào ra nối tiếp (Serial Port)
Cổng nối tiếp trong 8051 chủ yếu được dung trong các ứng
dụng có yêu cầu truyền thông với máy tính,hoặc một vi điều khiển
khác.Liên quan đến cổng nối tiếp chủ yếu có hai thanh ghi :SCON và
SBUF.Ngoài ra một thanh ghi khác là thanh ghi PCON (không đánh địa
chỉ bit) có 7bit tên là SMOD quy định tốc độ truyền của cổng nối tiếp có
gấp đôi lên (SMOD = 1) hay không (SMOD = 0).
Dữ liệu được truyền nhận nối tiếp thông qua hai chân cổng P3.0
(RXD) và P3.1 (TXD).
Thanh ghi SBUF là thanh ghi 8 bit chứa dữ liệu truyền hoặc
nhận.Về thực chất có hai thanh ghi dữ liệu khác nhau,một để chứa dữ liệu
truyền đi,một để chứa dữ liệu nhận được. Cả hai thanh ghi này đều có
chung tên SBUF,tuy nhiên CPU hoàn toàn phân biệt được một cách dễ
dàng. Khi ta muốn truyền dữ liệu đi,ta phải ghi vào thanh ghi SBUF (ví dụ
viết lệnh mov SBUF ,a) còn khi muốn đọc,kiểm tra dữ liệu nhận ta phải
ghi vào thanh ghi SBUF (ví dụ viết lệnh mov a,SBUF). CPU sẽ căn cứ vào
việc thanh ghi SBUF nằm ở vị trí toán hạng đích (toán hạng bên trái) hay
toán hạng nguồn (toán hạng bên phải) để quyết định sẽ truy nhập (đọc/ghi)
thanh ghi SBUF nào. Người lập trình không cần phải quan tâm xử lý vấn
đề này.
Thanh ghi quy định chế độ hoạt động và điểu khiển cổng nối tiếp
là thanh ghi SCON (đánh địa chỉ bit).


ĐỒ ÁN VI ĐIỀU KHIỂN
Bit SM0,SM1,SM2 quy định chế độ hoạt động của cổng nối
tiếp.Thôngthường để truyền thông giữa hai vi điều khiển hoặc giữa một vi

điều khiển và một máy tính,giá trị của bit SM2 được đặt bằng 0.Khi
truyền thông theo kiểu mạng đa vi xử lý
(multiprocessor
communication),SM2 được đặt bằng 1.Hai bit SM0 và SM1 thực sự là
các bit quy định chế độ hoạt động của cổng nối tiếp,chúng tạo ra 4 tổ
hợp (00,01,10 và11) ứng với 4 chế độ hoạt động mô tả trong bảng sau:
Chế độ 0: là chế độ truyền đồng bộ duy nhất .Chân RXD sẽ là tín
hiệu truyền nhận dữ liệu, chân TXD là tín hiệu xung nhịp.Bit LSB (bit 0)
của dữ liệu được truyền đi trước tiên.Tốc độ truyền cố định và bằng 1/12
giá trị thạch anh.
Chế độ 1: là chế độ truyền dị bộ 8bit.Dữ liệu 8bit được đóng khung
bởi 1bit Star (=0) ở đầu và bit Stop (=1) ở cuối trước khi dữ liệu được
truyền đi.Tốc độ truyền có thể thay đổi theo ý người lập trình.
Chế độ 2: là chế độ truyền dị bộ 9 bit.Dữ liệu truyền 9 bit được ghép
thành bởi 8 bit trong thanh ghi SBUF và bit RB8 (trường hợp nhận về)
hoặc TB8 (trường hợp truyền đi) trong thanh ghi SCON.Ngoài ra các bit
Star và Stop vẫn được gắn bình ở đầu và ở cuối khung truyền.Trong chế
độ này,tốc độ truyền chỉ chọn 1 trong 2 mức :1/32 hoặc 1/64 giá trị của
thạch anh.
Chế độ 3: cũng là chế độ truyền dị bộ 9bit,khác với chế độ 2 ở chỗ
tốc độ truyền có thể
thay đổi được theo ý người lập trình như chế độ 1.
Bit REN trong thanh ghi SCON là bit cho phép nhận dữ liệu.Dữ liệu
chỉ được nhận qua cổng nối tiếp khi bit này bằng 1.
Bit TB8 là bit dữ liệu thứ 9 trong trường hợp truyền đi 9bit (8 bit
kia trong thanh ghi SBUF).
Bit RB8 là bit dữ liệu thứ 9 trong trường hợp nhận về 9bit (8 bit
kia trong thanh ghi SBUF)
Bit TI là cờ ngắt truyền,báo hiệu việc truyền 1khung dữ liệu đã hoàn
tất.

Bit RI là cờ ngắt nhận,báo hiệu việc nhận 1khung dữ liệu đã hoàn
tất.


ĐỒ ÁN VI ĐIỀU KHIỂN
Để tạo ra tốc độ truyền (Baud rate) của cổng nối tiếp trong
8051,phải dùng đến timer 1 ở chế độ Auto Reload 8bit.Giá trị nạp lại
chứa trong thanh ghi TH1 được tính toán theo công thức sau (phụ thuộc
vào Baud rate mong muốn và giá trị của thạch anh).
Tóm lại để sử dụng cổng nối tiếp của 8051,ta thực hiện theo các
bước sau:
- Chọn chế độ cho cổng nối tiếp (đồng bộ/dị bộ,8bit/9bit…) từ đó
chọn được giá trị cho các bit trong thanh ghi SCON.Lưu ý xoá các bit TI
và RI.
- Chọn tốc độ truyền mong muốn,từ đó tính ra giá trị của thanh ghi
TH1.Cho timer 1 chạy ở chế độ Auto Reload 8bit (không dung ngắt tràn
timer 1).
- Đặt mức ưu tiên ngắt và cho phép ngắt cổng nối tiếp nếu muốn.
- Bắt đầu truyền dữ liệu bằng một lệnh ghi dữ liệu muốn
truyền vào thanh ghi
SBUF.Quá trình truyền kết thúc thì cờ TI tự động đặt lên 1.
- Khi một khung dữ liệu đã được nhận đầy đủ ,cờ RI sẽ tự động đặt
lên và người lập trình lúc này có thể dùng lệnh đọc thanh ghi SBUF để lấy
dữ liệu nhận được ra xử lý.
1.13 Ngắt (interrupt)
8051 chỉ có một ssó lượng ít các nguồn ngắt (interrupt source),hoặc
có thể gọi là nguyên nhân ngắt.Mỗi ngắt sẽ có một vector ngắt riêng, đó
là một địa chỉ cố định nằm trong bộ nhớ chương trình.Khi ngắt xảy
ra,CPU sẽ tự động nhảy đến thực hiện lệnh tại địa chỉ này.Bảng tóm tắt
các ngắt trong 8051 như sau:

STT

Tên ngắt

1

INT0

2

Mô tả

Cờ Thanh Vector
ngắt ghi
ngắt
Ngắt ngoài 0 khicó tín hiệu IE0 TCON 0x0003
tích cực thao kiểu đã chọn ở
chân P3.2 .

Timer 0 Ngắt tràn timer 0 khi giá trị TF0 TCON 0x000B
timer 0 tràn từ giá trị max về
min.


ĐỒ ÁN VI ĐIỀU KHIỂN
3

4
5


INT1

Ngắt ngoài 1 khi tín hiệu IE1 TCON 0x0013
tích cực theo kiểu đã chọn ở
chân P3.3.

Timer 1 Ngắt tràn timer 1 khi giá trị TF1 TCON 0x001B
timer 1 tràn từ giá trị max về
min
Serial Port Ngắt cổng nối tiếp khi vi TI,RI SCON 0x0023
điều khiển nhận hoặc truyền
xong 1byte bằng cổng nối
tiếp

Liên quan đến ngắt chủ yếu có 2 thanh ghi là thanh ghi cho phép
ngắt IE và thanh ghi ưu tiên ngắt IP.
-

Thanh ghi cho phép ngắt IE (Interrupt Enable):

Để cho phép một ngắt xảy ra,bit tương ứng với ngắt đó và bit EA
phải được dặt bằng 1.Thanh ghi IE là thanh ghi đánh địa chỉ từng bit,do
đó có thể dùng các lệnh tác động bit để tác động riêng rẽ lên từng bit mà
không ảnh hưởng đến giá trị các bit khác.Cờ ngắt hoạt động độc lập với
việc cho phép ngắt, điều đó có nghĩa là cờ ngắt sẽ tự động đặt lên bằng 1
khi có sự kiện ngắt xảy ra,bất kể sự kiện đó có được cho phép ngắt hay
không.Do vậy,trước khi cho phép một ngắt,ta nên xoá cờ của ngắt đó để
đảm bảo sau khi cho phép,các sự kiện gây ngắt trong quá khứ không thể
gây ngắt nữa.
-


Thanh ghi ưu tiên thứ tự ngắt IP(Interrupt Priority):

Các bit trong thanh ghi IP tương ứng với các ngắt đúng như
trong thanh ghi IE (bit PX0 dành cho ngắt ngoài 0,bit PT0 dành cho ngắt
timer 0…)
Một điều dễ nhận thấy là một ngắt được đặt mức ưu tiên cao (bit
tương ứng trong thanh ghi IP bằng 1) thì sẽ không có ngắt nào xen vào quá
trình xử lý nó được nữa.


ĐỒ ÁN VI ĐIỀU KHIỂN
Nói về mức ưu tiên ngắt,có thể dùng một ví dụ tổng quát sau,giả sử
hai ngắt timer 0 và ngắt cổng nối tiếp cùng được cho phép (các bit tương
ứng và bit EA trong thanh ghi IE được đặt bằng 1),bit PT0 =0,bit PS =1
thì:
- Nếu hai ngắt cùng xảy ra ,ngắt timer 0 sẽ được xử lý trước.
- Nếu ngắt cổng nối tiếp xảy ra trước và đang được xử lý thì ngắt
timer 0 nếu có xảy ra cũng không thể chen vào,làm dừng quá trình xử lý
cổng nối tiếp được.
- Nếu ngắt timer 0 xảy ra trước và đang được xử lý ngắt mà ngắt
cổng nối tiếp xảy ra thì CPU sẽ phải dừng việc xử lý ngắt timer 0
lại,chuyển sang xử lý ngắt cổng nối tiếp,xử lý xong mới quay lại xử lý tiếp
ngắt timer 0.
Như đã biết,8051 có hai ngắt ngoài là INT0 và INT1.Ngắt ngoài
được hiểu là ngắt được gây ra bởi sự kiện mức logic 0 (mức điện áp
thấp,gần 0V) hoặc sườn xuống (sự chuyển mức điện áp từ mức cao về
mức thấp) xảy ra ở chân ngắt tương ứng (P3.2 với ngắt ngoài 0 và P3.3
với ngắt ngoài 1).Việc lựa chọn kiểu ngắt được thực hiện bằng bảng các
bit IT (Interrupt type) nằm trong thanh ghi TCON. Đây là thanh ghi điều

khiển timer nhưng 4bit LSB được dung cho ngắt ngoài.
7

6

5

4

3

2

1

0

Khi bit ITx =1 thì ngắt ngoài tương ứng được chọn là kiểu ngắt
theo sườn xuống,ngược lại nếu bit ITx=0 thì ngắt ngoài tương ứng sẽ là
kiểu ngắt theo mức thấp.Các bit IE là các bit cờ ngắt ngoài,chỉ có tác dụng
trong trường hợp kiểu ngắt được chọn là ngắt theo sườn xuống.
Khi kiểu ngắt theo sườn xuống được chọn thì ngắt sẽ xảy ra duy
nhất 1lần khi có sườn xuống của tín hiệu.Sau đó khi tín hiệu ở mức
thấp,hoặc có sườn lên,hoặc ở mức cao thì cũng không có ngắt xảy ra cho
đến khi có sườn xuống tiếp theo.Cờ ngắt IE sẽ được dựng lên khi có sườn
xuống và tự động bị xoá khi CPU bắt đầu xử lý.
Khi kiểu ngắt theo mức thấp được chọn thì ngắt sẽ xảy ra bất cứ khi
nào tín hiệu tại chân ngắt ở mức thấp.Nếu khi xử lý xong ngắt mà tín hiệu
vẫn ở mức thấp thì lại ngắt tiếp,cứ như vậy cho đến khi xử lý xong ngắt
n,tín hiệu đã lên mức cao rồi thì thôi,không ngắt nữa.Cờ IE trong trường



ĐỒ ÁN VI ĐIỀU KHIỂN
hợp này không có ý nghĩa gì cả. Thông thường kiểu ngắt hay được chọn là
ngắt theo sướn xuống.

2. Giới thiệu Max 232

Hình 6

Khi giao tiếp với máy tính, bài toán đặt ra là tín hiệu của ic 89s52
không tương thích điện áp với tín hiệu điện áp trong máy tính. để giải
quyết vấn đề này ta dùng ic max232.
Cổng com trong máy tính có mức 0 ở 3 đến 12v còn mức 1 là -12
đến -3v. Tuy nhiên, đối với ic89s52 mức 1 là 2.4 đến 5v, mức âm là 0 đến
0.45 v. Max232 chính là một ic biến đổi điện áp cho chúng có thể giao tiếp
với nhau.
Khi đặt đồng bộ hóa giữ máy tính với vi điều khiển về điện áp và tần
số dao động thì chúng có thể truyền dữ liệu cho nhau.


ĐỒ ÁN VI ĐIỀU KHIỂN

3.Thu phát hồng ngoại và mạch so sánh điện áp
Mắt hồng ngoại gồm 1 led phát hồng ngoại và một transistor được
kích mở bằng hồng ngoại từ led phát. Khi đưa cấp nguồn cho led hồng
ngoại sẽ có tín hiệu hồng ngoại đến chân B của transistor thu làm transistor
thông. Mức logic trên chân C (chân 3) là bằng 0. Nếu che khuất led phát(
sản phẩm đi qua) thì mức logic là 1 ở chân C (chân 3).
LM358 là linh kiện dùng để so sánh điện áp. Nó là một OPAM làm

việc như một bộ so sánh điện áp, tạo điện áp chuẩn khi giao tiếp giữa mạch
cảm biến với ic 89s52.
Khi cảm biến hộng ngoại bị che khuất (có sản phẩm đi qua) đầu ra
của bộ khuếch đại thuật toán chuyển mức từ 1 xuông 0 gây ngắt ngoài theo
sườn âm ở chân INT0.
Hoạt động :
+ Bình thường, khi không có vật chắn transistor luôn dẫn cực E và
cực C của transistor luôn thông với nhau.mức logic trên chân C (chân 3)
cũng như trên chân 2 của OPAM là mức 0. Mức logic đầu vào 3 của
OPAM luôn ở mức 2.5v mọi lúc(vì qua cầu phân áp) cho nên đầu ra
OPAM là ở mức cao. Không gây ngắt cho chân INT0.
+ Khi có vật chắn,cực C của transistor thu có mức logic 1(bằng 5v)
lớn hơn mức logic ở chân 3 OPAM nên đầu ra OPAM có mức logic 0.Sự
thay đổi mức từ 1 sang 0 làm ngắt ngoài ở chân INT0.


ĐỒ ÁN VI ĐIỀU KHIỂN

Hình 7

OPAM LM358

Hình 8


ĐỒ ÁN VI ĐIỀU KHIỂN
Sơ đồ mạch hồng ngoại và bộ so sánh dùng OPAM Lm358

Hình 9



ĐỒ ÁN VI ĐIỀU KHIỂN

CHƯƠNG II : THỰC HIỆN ĐỀ TÀI
I. MẠCH HỆ THỐNG
1. Mạch nguyên lý:

Hình 10


ĐỒ ÁN VI ĐIỀU KHIỂN
2. Mạch in:

Hình 11

3. Hình ảnh đồ án:


ĐỒ ÁN VI ĐIỀU KHIỂN


ĐỒ ÁN VI ĐIỀU KHIỂN
II. Chương Trình:
1.Lưu đồ khởi tạo chương trình:

Hình 13


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×