Tải bản đầy đủ (.pdf) (25 trang)

đồ án vi điều khiểnthiết kế bộ đếm sản phẩm bằng cảm biến hồng ngoại gửi lên 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 (1.54 MB, 25 trang )

Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
1

ĐỒ ÁN MÔN HỌC VI ĐIỀU KHIỂN
Số: 10
STT Họ và tên sinh viên Lớp/Khóa Khoa
1
Nguyễn Đức Cường
Điện tử 2_k2 Điện tử
2
Trương Đình Hà
Điện tử 2_k2 Điện tử
Giáo viên hướng dẫn
: Nguyễn Anh Dũng


NỘI DUNG

1. Thiết kế bộ đếm sản phẩm bằng cảm biến hồng ngoại.
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ố sản phẩm đếm được gửi lên máy tính và hiển thị bằng phần mềm tiện ích
Hyper Terminal.
- Số sản phẩm tối đa mà hệ thống có thể đếm được là một số thập phân bao gồm
12 chữ số.


2. Viết báo cáo về nội dung bài tập lớn.
Yêu cầu:
- Số trang: Từ 10 đến 20 trang giấy khổ A4.
- Nội dung báo cáo gồm 3 phần:
+ Phần 1: Cơ sở lý thuyết: Trình bày các cơ sở lý thuyết liên quan đến nội dung đồ án.
+ Phần 2: Nội dung: Trình bày trình tự và nội dung thiết kế.
+ Phần 3: Kết luận: Đánh giá các ưu, nhược điểm, tính thực tế của sản phẩm đã thiết kế
và hướng cải tiến, phát triển.

TT

Tªn b¶n vÏ (nÕu cã) Khæ giÊy Sè l−îng
1
Sơ đồ mạch nguyên lý
1
2
Sơ đồ mạch in
1

PhÇn thuyÕt minh
- Đại diện nhóm vận hành và thuyết minh sản phẩm.
- 02 giảng viên chuyên môn chất vấn và chấm điểm từng sinh viên trong nhóm.
Thời gian tối đa (dành cho hỏi và trả lời): 10 phút/1 sinh viên.
Ngày giao đề :
………………………………….
Ngày hoàn thành :
………………………………….




TRƯỞNG KHOA GIÁO VIÊN HƯỚNG DẪN

BỘ CÔNG THƯƠNG
TRƯỜNG ĐH CÔNG NGHIỆP HÀ NỘI

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc

Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
2

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.
Qua đây, xin cám ơn thầy giáo
Nguyễn Anh Dũng
đã giúp chúng em thực hiện
đồ án này.
Xin cảm ơn !

Nhóm sinh viên ĐT2K2

Dcn_105
Nguyễn Đức Cường – Trương Đình Hà

Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
3


PHẦN I :
MẠCH ĐẾM SẢN PHẨM VÀ CÁC LINH KIỆN SỬ DỤNG

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ựckhoa 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à chúng em đượ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 chúng em chọn mạch đếm sản phẩm dùng 89s52 một
trong những dòng vi xử lý mà chúng em đã đượ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).
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
4


II. Giới thiệu linh kiện sử dụng.

1. Giới thiệu về 89s52.

89S52 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.
* 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.
Ha noi university of industry


ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
5

Sơ đồ khối :






Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
6

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
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ều
khiể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)
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
7

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.

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.

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 thêm
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 đượ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 16bit 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 3 2 1 0




TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
GATE1 C/T1# M1 M0 GATE0 C/T0# M1 M0
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
8


Để 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.

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.
Bít Tên Timer Mô tả
7 GATE1 1 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.
6 C/T1# 1 Bit chọn chế độ counter/timer của timer 1.
1=bộ đếm sự kiện.
0=bộ định khoảng thời gian
5 M1 1 Bit 1 chọn chế độ (mode) của timer 1
4 M0 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
3 GATE0 0 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.
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
Ha noi university of industry


ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
9


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).
- 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 8bit 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 hàon toàn phân biệt
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105

10

đượ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).









Bit SM0,SM1,SM2 quy định chế độ hoạt động của cổng nối tiếp.Thông
thườ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).
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0 SM1 Chế độ Khung dữ liệu Baud rate
0 0 0 - đồng bộ 8bit SBUF Fosc/12
0 1 1 - dị bộ 8bit SBUF Thay đổi được
1 0 2 - dị bộ 8bit SBUF + RB8/TB8 Fosc/32 hoặc Fosc/64
1 1 3 - dị bộ 8bit SBUF + RB8/TB8 Thay đổi được
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________

Đồ án môn học vi điều khiển dcn105
11


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.

Để 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 Mô tả Cờ ngắt Thanh ghi
chứa cờ
Vector ngắt
1 INT0 Ngắt ngoài 0 khi
có tín hiệu tích cực
thao kiểu đã chọn
ở chân P3.2 .
IE0 TCON 0x0003
2 Timer 0 Ngắt tràn timer 0
khi giá trị timer 0
tràn từ giá trị max
về min.
TF0 TCON 0x000B
3 INT1 Ngắt ngoài 1 khi
có tín hiệu tích cực
IE1 TCON 0x0013
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________

____________________________________________________________
Đồ án môn học vi điều khiển dcn105
12

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

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):

EA - ET2 ES ET1 EX1 ET0 EX0

Để 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ó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.

- - PT2 PS PT1 PX1 PT0 PX0
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2


_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
13

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
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

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 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.
Ha noi university of industry


ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
14


2. Max 232


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 ic
89s52 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.
3. Thu phát hồng ngoại và mạch so sánh điện áp dùng LM393
- 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).
- LM393 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
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
15

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.
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
16



sơ đồ mạch hồng ngoại và bộ so sánh dùng OPAM Lm393
Ha noi university of industry


ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
17

Phần II :

MẠCH ĐIỆN VÀ CHƯƠNG TRÌNH
I. MẠCH ĐỒ ÁN
1. Mạch nguyên lý :
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
18


2. Mạch in :



Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2


_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
19

4. Hình ảnh đồ án :
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
20


II. CHƯƠNG TRÌNH ĐỒ ÁN
1. Lưu đồ khởi tạo chương trình :

Bắt đầu
Lựa chọn chế độ SCON
Đặt tần số baud rate (timer1 mode 2)
Cho phép ngắt nối tiếp và ngắt ngoài
Ưu tiên ngắt nối tiếp
Chờ ngắt ngoài INT0
Gửi kết quả
Thoát
Chọn kiểu ngắt sườn
Ha noi university of industry


ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
21

2. Lưu đồ ngắt ngoài :



3. Lưu đồ truyền nối tiếp :



vào ngắt
tăng biến đếm
Biến đếm= biến đếm max ?
biến đếm = 0
Thoát
vào
thoát
Xóa cờ TI
nếu RI=1?
Xóa cờ RI
nhận dữ liệu
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2


_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
22


4. Chương trình :

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Truong dai hoc cong nghiep ha noi //
// DH Dien Tu 2 - k2 //
// //
// chuong trinh thiet ke mach diem san pham bang hong ngoai gui ket qua len may tinh //
// //
// nhom sinh vien thuc hien : //
// NGUYEN DUC CUONG - TRUONG DINH HA //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


//======================================================
// khai bao thu vien

#include <AT89X52.h>
#include<stdio.h>

//======================================================

// khai bao hang so va hàm con

unsigned int count,i,j;

void delay(unsigned int);

//=====================================================
//chuong trinh chinh

void main ()

{

SCON = 0x52; // cong noi tiep hoat dong o che do 1
TMOD = 0x21; // timer1 hoat dong o che do 2-8 bit tu nap lai,timer 0
hoat dong che do 1,16 bit nap lai bang phan mem.
TH1=TL1 = -3; // tao toc do duong truyen cho cong noi tiep baud=9600
TR1 = 1 ; // de timer 1 bat dau hoat dong
IT0 = 1; // cho phep ngat suon am

IE = 0x91; // cho phep ngat toan bo va cho phep ngat port
noi tiep,cho phep ngat ngoai 0,
IP = 0x10; // uu tien ngat cong noi tiep
count=0; // ban dau so san pham la 0
putchar(0x0c);
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
23


puts(" DAI HOC CONG NGHIEP HA NOI 11/2009 ");
puts(" DO AN VI DIEU KHIEN LOP DH DIEN TU2_K2 ");
puts(" THIET KE DEM SAN PHAM BANG HONG NGOAI GUI KET
QUA LEN MAY TINH " );
puts(" THUC HIEN : NGUYEN DUC CUONG - TRUONG DINH HA ");

delay(5);
puts (" THIET BI SAN SANG ");
delay(2);
while(1)

{
putchar(0x0c);
printf("SO SAN PHAM DEM DUOC LA:%d\n", count);
delay(2);
}
}

//=============================================
// ham ngat ngoai 0

void ngatngoai0( ) interrupt 0
{

count++;

}
//=============================================
//ham delay(tre)


void delay(unsigned int n)
{
for(j=0;j<(n*10);j++)
{
TH0=-50000/256;
TL0=-50000%256;
TR0=1;
while(!TF0);
{
TF0=0;
TR0=0;
}
}
}
//=============================================
Ha noi university of industry

ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
24

PHẦN III : KẾT LUẬN
Ưu nhược điểm, tính thực tế của sản phẩm và hướng cải tiến sản phẩm

I. Ưu nhược điểm của sản phẩm :
1. Ưu điểm :
- Mạch nhỏ gọn, phù hợp với việc học tập nghiên cứu về vi điều khiển và ứng

dụng của nó vào đời sống hằng ngày.
- Linh kiện phổ biến, dễ dàng có thể thực hiện việc mô phỏng.
- Tiết kiệm nguồn điện bằng cách sử dụng nguồn máy tính, nguồn chuẩn 5v cho
mạch hoạt động.
- Thiết kế bằng phần mềm ORCAD thông dụng trong nghành điện tử.
2. Nhược điểm :
- Mạch đồ án thực hiện mô phỏng hệ thống đếm sản phẩm nên dùng thu phát
hồng ngoại tích hợp làm khoảng thu phát ngắn, không phù hợp với việc đếm
sp thực tế.
II. Tính thực tế và hướng cải tiến sản phẩm :
1. Tính thực tế của sản phẩm :
- Thích hợp trong các phòng thí nghiệm, dạy và học vi điều khiển. Đó là một
dẫn chứng cụ thể cho việc sử dụng vi điều khiển áp dụng vào đời sống.
- Làm rõ bản chất của ngắt ngoài và ngắt nối tiếp trong vi điều khiển.
- Phát triển thêm ta có đc một hệ thống phù hợp với môi trường làm việc, nâng
cao năng suất lao động, tiết kiệm nhân công.
2. Hướng cải tiến sản phẩm :
Mạch có thể phát triển thêm nhiều chức năng để có thể thành một hệ thống cho dây
truyền công nghiệp.
- Dùng thu phát hông ngoại riêng biệt để có khoảng cách xa hơn.
- Với dung lượng bộ nhớ của AT89S52 chúng ta có thể lập trình thếm việc đếm
một số lượng sản phẩm hay thùng hàng vào một lô một cách chính xác.
- Việc giao tiếp của mạch với máy tính có thể dùng máy tính để điều khiển số
lượng sản phẩm cần đếm. Lưu lại tiến trình làm việc trong một ca làm việc
hay lưu lại lịch sử làm việc của từng ca làm việc trên máy tính.
- Quản lý xưởng chính xác mà không cần phải xuống tận nơi.

Với những cải tiến như trên, chúng ta có một hệ thống đế sản phẩm chính xác, tiện lợi mà giá
thành phù hợp với dây truyền vừa và nhỏ cũng như các hệ thống dây truyền lớn.
Ha noi university of industry


ĐH ĐIỆN TỬ 2_K2

_________________________________________________________________
____________________________________________________________
Đồ án môn học vi điều khiển dcn105
25

TÀI LIỆU THAM KHẢO
1. Giáo trình : vi điều khiển, cấu trúc – lập trinh và ứng dụng
đại học công nghiệp hà nội.
2. Vi điều khiển 8051 _ tài liệu trung tâm etech
3. Tài liệu trên internet.
và nhiều nguồn thong tin từ thầy cô và bạn bè…


×