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

Thiết kế bộ đo tần số hiển thị màn hình máy tính sử dụng vi điều khiển 89s52

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.11 MB, 19 trang )



1


B


CÔNG THƯƠNG

TRƯ

NG Đ

I H

C CÔNG NGHI

P HÀ N

I

KHOA
CƠ KHÍ










Đ


ÁN MÔN H

C VI
ĐI

U KHI

N


VÀ GHÉP N

I MÁY TÍNH

Đ


TÀI
:

16



THI


T K


B


ĐO T

N S



HI

N TH


B

NG MÀN HÌNH MÁY TÍNH


Gi
áo

viên hư

ng d


n:
NGUY

N
ANH DŨNG


Sinh viên thực hiện

:










L

p:
CƠ ĐI

N
T


3










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
cuộ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 cong 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 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 thong 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 xó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!



3


PHẦN 1: CƠ SỞ LÍ THUYẾT
1. 8051 VÀ PHIÊN BẢN CỦA NÓ:
a: 8051 :
Năm 1981 Intel giới thiệu bộ vi điều khiển 8051. Bộ vi điểu khiển này có 128 byte
RAM, 4 kbyte ROM, hai bộ định thời , một cổng nối tiếp, bốn cổng vào/ra song
song ( độ rộng 8 bit ) tất cả được đặt trên 1 chip. 8051 là bộ xử lý 8 bit, tức là CPU
chỉ có thể làm việc với 8 bit dữ liệu tại 1 thời điếm. Dữ liệu lớn hơn 8 bit được
chia thành các dữ liệu 8 bit để xử lý.
b: Các đặc tính của họ 8051

Đặc tính
8051
8052
8031
ROM trên chip
4 kbyte
8 kbyte
0 kbyte

RAM
128 kbyte
256 kbyte
128 kbyte
Bộ định thời
2
3
2
Chân vào ra
32
32
31
Cổng nối tiếp
1
1
1
Nguồn ngắt
6
6
1


c : Phiên bản AT 8951 từ Atmel Corporation:
AT8951 là phiên bản 8051 có ROM trên chip ở dạng bộ nhớ Flash. Phiên bản này
lý tưởng đối với những phát triển nhanh vì bộ nhớ Flash có thể được xoá trong vài
giây.
Hãng Atmel đã cho ra đời một phiên bản của AT 89C51 có thể lập trình qua cổng
truyền thông COM của máy tính IBM PC.
4


Một số phiên bản cua Atmel:
Ký hiệu
ROM
RAM
ChânI/O
Timer
Ngắt
Vcc
Đóng vỏ
AT89C51
4kbyte
128kbyte
32
2
6
5V
40chân, 2hàng
AT89C52
8kbyte
128kbyte
32
3
8
5V
40chân, 2hàng

AT89S52 la bộ vi điều khiển thông dụng, giá rẻ có khá nhiều chức năng hay , đăc
biệt là có tích hợp sẵn bộ nạp ISP trên chip giúp người sử dụng có thể dễ dàng thực
hiện các bài thí nghiệm với chi phí thấp.
Bộ VDK At89S52 gồm các khối chức năng chính :

-CPU( centralprocessing unit)
-Bộ nhớ chương trình( ROM) gồm 8kbyte Flash -Bộ
nhớ dữ liệu ( RAM) gồm 256 byte.
-Bộ UART ( Universal Asnchronous Receiver/ Transmitter),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 các chức năng định thời và đếm sự kiện.
-WDT ( wait dog timer) :dùng để phục hồi hoạt động của CPU khi nó bị treo bởi
một nguyên nhân nào đó.
-Khối điều khiển ngắt với hai 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
các chương trình cho chip mà không cần các bộ nạp chuyên dụng.
-Bộ chia tần số với hệ số là 12.
-4Cổng xuất nhập với 32 chân.


5

SƠ ĐỒ CHÂN CỦA 89C52/89S52:
U1
3938 P0.0/AD0 P2.0/A8 2122
37 P0.1/AD1 P2.1/A9 23
36 P0.2/AD2 P2.2/A10 24
35 P0.3/AD3 P2.3/A11 25
34 P0.4/AD4 P2.4/A12 26
33 P0.5/AD5 P2.5/A13 27
32 P0.6/AD6 P2.6/A14 28 P0.7/AD7
P2.7/A15
12 P1.0/T2 P3.0/RXD 1011
34 P1.2P1.1/T2-EXP3.2/P3.1/TXDINT0
1213

56 P1.4P1.3 P3.3/INT1P3.4/T01415
78 P1.6P1.5 P3.6/P3.5WR/T11617
P1.7 P3.7/RD
1918 XTAL1 ALE/PROG 3029
XTAL2 PSEN
319 EA/VPP RST
AT89C52

Sơ đồ chân /chức năng các chân của AT89S52:
Tất cả các port đều có chức năng xuất nhập ,Gồm 8 chân, ngoài ra chúng còn có
chức năng riêng như:
*port0 ( p0.0-p0.7):
Port0 còn là bus đa hợp dữ liệu và địa chỉ.
*Port1 ( P1.0-1.7):
Ba chân P1.5, P1.6,P1.7 được dùng đẻ nạp ROM theo tiêu chuẩn ISP; hai chân
P1.0 và P1.1 được dùng cho bộ timer 2 *Port 2 ( P2.0-2.7):
Nó còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài.
*Port3( P3.0-3.7):
6

Chức năng riêng như sau:
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ểtuyền cho Port nối tiếp

P3.2
INT0
Ngắt ngoài 0
P3.3
INT1
Ngắt bên ngoài 1
P3.4
T0
Ngõ vào của Timer1/counter 0
P3.5
T1
Ngõ vào của Timer1/counter 1
P3.6
/WR
Xung ghi bộ nhớ dữ liệu ngoài
P3.7
/RD
Xung đọc bộ nhớ dữ liệu ngoài


*RST ( reset ):
Ngõ vào reset trên chân 9 là ngõ reset của 8501. Khi tín hiệu này được đua lên mức
cao , 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.

*XTAL1,XTAL2:
AT89S52 có 1 bộ dao động trên chip , nó thường được nối với bộ dao động thạch
anh có tần số 12MHz.

*Vcc,GND:

7

AT89S52 dùng nguồn 1 chiều có dải điện áp từ 4V đến 5,5V được cấp qua chân 40
và 20.

TỔ CHÚC BỘ NHỚ:
BỘ nhớ chương trình:
AT89S52 có 8kbyte Flash ROM trên chip, tín hiệu điều khiển đọc ROM là tind
hiệu /PSEN.
Bộ nhớ dữ liệu :
AT89S52 có 256kbyte RAM nội :
-Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
-RAM địa chỉ hoá từng bit có địa chỉ từ 20H đến 2FH.
-RAM đa dụng từ 30H đến FFH.
-Các thanh ghi chức năng đặc biệt từ 80H đến FFH.

MẠCH TẠO DAO ĐỘNG VÀ RESET:

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

Mach RESET:
Có 4 cách để reset AT89S52 lần lượt là :
+Reset khi cấp nguồn
8

+Reset bởi WDT
+Reset bằng phần mềm
+Rsset bằng mạch ngoài qua chân RST

Trong một hệ thống gồm nhiều vi mạch khả trình thì mạch reset tích hợp cả hai
cách RESET khi bật nguồn và bởi mạch ngoài thường dược sử dụng:







9




MẠCH TẠO XUNG SỬ DỤNG LM555:



Khi ta thay đổi biến trở thi xung clock tu chan 3 tao ra xung vuông cung thay đổi
theo ( tần số thay đổi) cung cấp vao chân 14( T0) của vi điều khiển.





10



MAX232 và cổng COM:


Như ta đã biết ,bộ vi điều khiển AT89S52 có khả năng giao tiếp với thế giới bên
ngoài thông qua cổng nối tiếp. Vấn đề trở ngai duy nhất khi giao tiếp với máy tính
là mức logic ở bộ vi điều khiển và cổng COM của máy tính khác nhau, cụ thể như
sau;

Đối tượng
Mức logic

Mức điện áp tương ứng
Cổng COM (mức232C)


1


-12V đến -3V

0
+3V đến +12V
Vi điều khiển ( mức TTL)

1


+5V

0
0V



Khắc phục vấn đề này người ta sử dụng vi mạch MAX232 để chuyển đổi mức
điện áp giữa 2 chuẩn. Vi mạch này có chứa hai bộ chuyển đổi mức logic từ TTl
sang RS232 và ngược lại , tức là:
Vì tín hiệu cổng COM thường ở mức +12V, -12V nên không tương thích với điện
áp TTL nên để giao tiếp Vi điều khiển 8051 với máy tính qua cổng COM ta phải
qua một vi mạch biến đổi điện áp cho phù hợp với mức TTL, ta chọn vi mạch
MAX232 để thực hiện việc tương thích điện áp.


11

Hình sau la vd về mạch giao tiếp giữa vdk với máy tính qua cổng RS232C sử dụng
vi mạch đổi mức MAX232.





Cổng nối tiếp RS232 là một giao diện phổ biến rộng rãi nhất. Người ta còn gọi
cổng này là cổng COM1, còn cổng COM2 để tự do cho các ứng dụng khác.

Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiếp. Nghĩa là các
bit dữ liệu được truyền đi nối tiếp nhau trên một đường dẫn.

12

Cổng COM không phải là một hệ thống bus nó cho phép dễ dàng tạo ra liên kết
dưới hình thức điểm với điểm giữa hai máy cần trao đổi thông tin với nhau, một
thành viên thứ ba không thể tham gia vào cuộc trao đổi thông tin này.

* Các chân và đường dẫn được mô tả như sau:




Chân
Ký hiệu
Ý nghĩa
1
DCD
Tín hiệu phát hiện mang dữ liệu
2
RcD
Nhận dữ liệu
3
TxD
truyền dữ iệu
4
DTR
Dữ liệu đầu cuối sẵn sàng
5
GND
Nối đất
6
DSR
Dữ liệu sẵn sàng được gửi
7
RTS
Tín hiệu yêu cầu gửi
8

CTS
Tín hiệu yêu cầu xoá để gửi tiếp
9
RI
Ring indicatior

Trên thực tế có hai loại phích cắm, một loại 9 chân và một loại 25 chân.
Việc truyền dữ liệu xảy ra ở trên hai đường dẫn. Qua chân cắm ra TXD máy tính
gởi dữ liệu của nó đến Vi điều khiển. Trong khi đó các dữ liệu mà máy tính nhận
được, lại được dẫn đến chân RXD các tín hiệu khác đóng vai trò như là tín hiệu hổ
13

trợ khi trao đổi thông tin, và vì thế không phải trong mọi trường hợp ứng dụng đều
dùng hết.
Điện áp quy định với mưc logic 1 nẳm trong khoảng từ -3V đến -12V ; mức logic 0
là +3V đến +12V.
-Tốc độ truyền dữ liệu đươc quy định chuẩn gồm các tốc độ sau; 300, 600, 1200,
2400, 4800, 9600,19200, 28800, và 56600 baud.
-Độ dài cực đại của cáp kết nối là 15m(trong trường hợp không có các bộ đệm bộ
lặp)
-Trên máy tính có the có 4 cổng nối tiếp. Nhưng thường chỉ có 2 cổng gọi là cổng
Com1 và Com2.
Địa chỉ của các cổng nối tiếp như sau:
-Cổng Com1: địa chỉ cơ bản 3F8H
-Cổng Com2: địa chỉ cơ bản 2F8H.
Ở máy tính PC thường có một bộ phát/nhận không đồng bộ vạn năng (gọi tắt là -
UART: Universal Asnchronous Receiver/ Transmitter) để điều khiển sự trao đổi
thông tin giữa máy tính và các thiết bị ngoại vi.







Hình ảnh của MAX232:
14



CÁC THANH GHI CỦA CỔNG NỐI TIẾP:
-Có hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến cổng nối
tiếp là SBUF và SCON.
*SCON: thanh ghi điều khiển cổng nối tiếp
chứa các bit điều khiển và trang thái. Các bit điều khiển đặt chế độ hoạt động cho
cổng nối tiếp, các bit trạng thái báo cáo kết thúc phát hoặc thu 1 ký tự.
*SBUF:thanh ghi đệm truyền nhận ở cổng nối tiếp
chức nang đệm các ký tự khi chúng nhận về từ cổng nối tiếp hoặc được truyền từ
cổng nối tiếp.


CÁC THANH GHI CỦA BỘ ĐỊNH THỜI:
15

*Thanh ghi của timer 0,1:
-TMOD: Thanh ghi chế độ định thời ,chứa hai nhóm bốn bit dùng để đặt chế độ
làm việc cho Timer0và1
-TCON: Thanh ghi điều khiển Timer,chứa các bit trạng thái và các bit điều khiển
cho
Timer0và1.
*Thanh ghi của timer 2:

-T2CON : chứa các bit điều khiển cho Timer2
-T2MOD:chúa 2 bit DCEN vàT2OE cho phép Timer2 hoạt động nhu1 bộ đếm lùi
hoặc để tạo xung.
Thanh ghi TH2 và TL2 , RCAP2L, RCAP2H:chứa giá trị đếm của timer2.


NGUỒN XUNG CLOCK:
-Nguồn xung clock cấp cho các bộ định thời có thể lấy từ ngoài qua các chân T0,
T1, T2 lần lượt cho các bộ Timer0, Timer1, Timer2 hoặc lấy từ bộ chia tần
trên chip với tần số là 1/12 tần số của bộ dao động thạch anh tuỳ vào bit
C/#T. đối với bài này chúng ta lấy nguồn xung từ con LM555cung cấp vào
chân T0.

TỔ CHỨC NGẮT Ở AT89S52:
AT89S52 có 6 nguồn ngắt :
-Ngắt ngoài từ chân #INT0
-Ngắt ngoài từ chân #INT1
16

-Ngắt do bộ Timer 0 -Ngắt
do bộ Timer 1 -Ngắt do bộ
Timer 2
-Ngắt do Port nối tiếp
Các nguồn ngắt này được xoá khi reset và được đặt riêng bằng phần mềm bởi các
bit trong các thanh ghi cho phép ngắt (IE), thanh ghi ưu tiên ngắt (IP)


CHƯƠNG TRÌNH CHÍNH:

#include <REGX52.H>

#include <STDIO.H> //tao thu vien unsigned
int xung,dem,ts;
void ngatngoai_0 (void) interrupt 0
{ xung++;
}
void ngat_timer_0 (void) interrupt 1 //ngat timer 0 che do 1
{
TR0=0;
TH0=(65536-46082)/256;
TL0=(65536-46082)%256; dem++;
if(dem==20) //dem tan so trong 1s
17

{ ts=xung;
dem=0;
xung=0;
printf("tanso = %d\n",ts); //in ra man hinh
}
TR0=1;
} void main
(void)
{
SCON=0x52; //port noi tiep
IE=0x83; //ngat cho timer 1 va 0
IT0=1;
TMOD=0x21;
TH1=TL1=256-3; //toc do baud 9600
TH0=(65536-46082)/256;
TL0=(65536-46082)%256;
TR1=1; TR0=1;

while(1) //vong lap
{ }
}
II.
M

18

C
H
M
Ô
P
H

N
G
19









×