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

khảo sát và ứng dụng vi điều khiển vào mạch đo và khống chế nhiệ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 (660.01 KB, 28 trang )

Mục lục
Nhận xét của giáo viên hớng dẫn 1
Mục luc 3
Phần I: Giới thiệu đề tài
1. Đặt vấn đề 4
2. Mục đích thực hiện đề tài 4
3. Phơng hớng giaỉ quyết 5
Phần II: Nội dung 6
1.Cơ sở lý thuyết chung 6
2.Quy trình thiết kế bài toán thực tế 8
Phần III:Ưu nhợc điểm,ứng dụng và hớng phát triển 26
Phần i: giới thiệu đề tài
1.Đặt Vấn Đề:
Ngày nay với sự phát triển của nghành vi điện tử, kỹ thuật số các hệ thống
điều khiển dần đợc tự động hóa, Với những kỹ thuật tiến tiến nh vi xử lý, vi
mạch số đợc ứng dụng vào lĩnh vực điều khiển, thì các hệ thống điều khiển cơ
khí thô sơ , với tốc độ xử lú chậm chạm ít chính xác đợc thay thế bằng các hệ
thống điều khiển tự động với các lệnh chơng trình đã đợc thiết lập trớc.
Trong quá trình sản xuất ở các nhà máy, xí nghiệp hiện nay . vệc đo và
khống chế nhiệt tự động là một yêu cầu ht sức cần thiết và quan trọng. Vì nếu
nắm bắt đợc yêu cầu đo và khống chế nhiệt độ tự động, thì có nhiều phơng pháp
để nghiên cứu khỏa sát vi điều khiênt 8051 nhóm thực hiện nhận thấy rằng : ứng
dụng vi điều khiênt 8051 vào việc đo và khống chế nhiệt độ tự động là phơng
pháp tối u nhất. Vì vậy nhóm chúng em tiến hành thực hiện việc khảo sát và
ứng dụng vi điều khiển vào mạch đo và khống chế nhiệt độ.
2.Mục đích thực hiện đề tài:
Nếu nh những kiến thức ký thuyết là điều kiện cần thì thực hành lắp ráp
mạch thật là điều kiện đủ. Nó đem lại rất nhiều lợi ích cho chúng em:
-Chúng em có thẻ đa những kiến thức lý thuyết khô khan vào thực tế để có
thể đánh giá một cách khách quan cơ sở lý thuyết.
-Từ những gì chúng ta đã làm đợc t đó rút ra những kinh nghiệm cho quá


trình làm lần sau và xa hơn là các quá trình sản xuất công nghiệp sau này.
-Để làm đợc một mạch thật hoàn chỉnh chúng em phảI trảI qua rất nhiều
khâu. Qua đây chúng em có một cách nhìn tổng quát cho một dây chuyền sản
xuất các ứng dụng của ngành điện tử.
Chính những lợi ích đó cũng là những mục đích mà nhóm sinh viên chúng
em mong muốn đặt đợc.
2
3.Ph ơng H ớng Giải Quyết:
Để thực hiện đợc các chức năng trên hệ thống đợc chia thành hai phần là
cứng và phần mềm với các giải pháp giải quyết nh sau:
a)Giải pháp phần cứng:
Phần cứng đợc xây dựng trên cơ sở giao tiếp với máy tính qua cổng COM
nên tốc độ truyền dữ liệu cũng rất cao. Tuy nhiên, có một khó khăn 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. Để khắc phục điều nay chúng ta sử dụng vi mạch MAX232
nhằm chuyển đổi mức điện áp giữa hai chuẩn.
Do vậy chức năng chính của phần cứng bao gồm các khối sau:
-Bộ phận lấy tín hiệu cần khảo sát đó là nhiệt độ môi trờng thông qua
cảm biến LM35.
-Bộ phận chuyển đối tơng tự sang số, đa vào vi xử lý.
-Bộ phận xử lý tín hiệu số và xuất ra cổng nối tiếp.
-Bộ phận truyền thông với máy tính.
-Ngoài ra còn có một khối điều khiển và hiển thị nh Nút Nhấn và LED.
b).Giải Pháp Phần Mềm:
Phần mềm đo và điều khiển nhiệt độ hiển thị bằng tiện ích của Windows
dựa trên phần cứng hệ thống và cấu trúc máy tính.
Chơng trình phần mềm thực hiện giao tiếp với ngời dùng và giao tiếp với
phần cứng
3
Phần II. Nội dung

I.Cơ sở lý thuyết chung :
Để thực hiện phép đo của một đại lợng đại lợng nào đó thì tùy thuộc vào
dặc tính của đại lợng cần đo, điều kiện đo cũng nh độ chính xác theo yêu cầu cơ
sỏ của hệ thống đo lờng khác nhau .
1.Sơ đồ của một hệ thống đo lờng tổng quát
1. 1 Cm bin nhit: Dựng o nhit
1.2.Khối chuyển đổi:
Làm nhiệm vụ nhận trực tiếp các đại lợng vất lý đặc trng cần đo và biến đổi
thành các đại lợng vật lý thống nhất (dòng điện hay điện áp) để tính toán cho
thuận lợi.
1. 3.Vi iu khin : có nhiệm vụ tính toán biến đổi tín hiệu nhận đợc từ bộ
chuyển đổi sao cho phù hợp với các yêu cầu cụ thể hiện kết quả đo của bộ chỉ
thị.
1.4.Khối hiển thị: Nhn tớn hiu t vdk va hin th kt qu o
2.Hệ thống đo l ờng số:
Đối tợng cần đo là các đại lợng vật lý dựa vào các đặc tính của đối tợng cần
đo mà ta chọn loại cảm biến cho phù hợp để biến đổi thông số đại lợng
vật lý cần đo thành đại lợng điện, sau đó đa vào các mạch chế biến tín hiệu
( gồm: cảm biến, hệ thống khuêch đại, xử lý tín hiệu)
Khối
chuyển
đổi
A/D
Vi iu
khin
Hiển thị
Cm
bin
nhit
4

Bộ chuyển đồi sang số ADC làm nhiệm vụ biến đổi tín hiệu tợng tự sang số
và kết nối với vi x lý.
Bộ vi xử lý có nhiệm vụ thực hiện những phép tính và xuất ra những lệnh
trên cơ sở trình tự những lệnh chấp hành đã thực hiện trớc đó.
Bộ dồn kênh tơng tự và bộ chuyển ADC đợc dùng chung cho tất cả các
kênh. Dữ liệu nhập vào bọ vi sử lý sẽ có tín hiệu chọn đúng của nó qua quá trình
tính toán để só kết quả của đại lợng cần đo.
3.Các ph ơng pháp đo nhiệt độ:
Đo nhiệt độ là phơng thức đo lờng điện, đo nhiệt độ đợc chia thành nhiều
dải:
+Đo nhiệt độ thấp
+ Đo nhiệt độ trung bình
+ Đo nhiệt độ cao
Việc đo nhiệt độ đợc tiến hành nhờ các dụng cụ hỗ trợ chuyên biệt nh:
+ Cặp nhiệt điện
+ Nhiệt kế điện ké lim loại
+ Nhiệt điện trở kim loại
+ Nhiệt điện trở bán dẫn
+ Cảm biến thạch anh
Việc sử dụng cảm biến IC cảm biến nhiệt để đo nhiệt độl là một phơng
pháp thông dụng đợc nhóm trong bài này, nên ở đây chỉ giới thiệu về IC cảm
biến nhiệt độ.
3.1. Nguyên lý hoạt động của IC cảm biến nhiệt độ :
IC đo nhiệt là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển tín hiệu
điện dới dạng dòng điện hay điện áp. Dah vào đặc tính rất nhạy cảm của các bán
dẫn với nhiệt độ , tạo ra điện áp hoặc dòng điện tỉ lệ thuận với nhiệt độ tuyệt
đối . Đo tín hiệu điện ta biết đợc giá trị của nhiệt độ cần đo. Sự tác động của
nhiệt độ tạo ra điện tích tự do và các lỗ trống trong các chất bán dẫn . Bằng sự
phá vỡ các phân tử, bứt các electron thành dạng tự do di chuyển qua vùng cấu
5

trúc mạng tinh thể tạo ra sự xuất hiện các lỗ trống. Làm cho tỷ leej điện tử tự do
va lỗ trống tăng lên theo qui luật hàm mũ với nhiệt độ.
II.Quy trình thiết kế bài toán thực tế
1 .Phân tích bài toán :
Bài toán đặt ra là thiết kế mạch đo và khống chế nhiệt độ . Để thực hiện đợc
điều này thì hệ thống phảI đảm bảo các yêu cầu sau:
-Số lợng đầu vào/ra số:
-Số đàu vào/ ra tợng tự:
-Số lợng bộ đếm /định thời:
-Dung lợng bộ nhớ chơng trình:
-Bộ nhớ dữ liệu cần thiết :
-Giao tiếp với máy tính do đó phải sử dụng truyền thông RS232
2. các khối chức năng :
Cảm biến nhiệt dộ : dùng để đo nhiệt độ hiện tại trong lò nhiệt.
Khối biến đổi A/D: có nhiệm vụ số hóa tín hiệu của cảm biến nhiệt để da
vào bộ vi điều khiển là nơi cài đặt thuật toán điều khiển và khống chế nhiệt
độ.
Khối vi điều khiển (MCU): có nhiệm vụ thực hiện các chức năng mã hóa
hợp thành và giải mã.
3.Nhiệm vụ của từng khối:
3.1. Cảm biến nhiệt:
Với nhiệt độ khống chế từ 30 độ đến 130 độ, ta chon sử dụng cảm biến nhiệt dộ
bán dẫn thông dụng là vi mạch LM35 của hãng National Semiconductor.
Vi mạch cảm biến nhiệt LM35có đặc điểm sau:
- chuẩn hóa theo thang đo nhiệt độ Cesius;
- đầu ra tuyến tính 10mV/C;
- Dải điện áp làm việc t 4V đến 30V;
6
- Dòng tiêu thụ nhỏ cỡ 60 microampe, nên nhiệt tự tỏa rất nhỏ hầu nh không
ảnh hởng đến kết quả đo.

Sai số nhỏ, chỉ khoảng 0.5 độ C.
Sơ đò mạch cảm biến đợc cho hình dới.
Sơ đò cảm biến nhiệt độ LM35.


7
3.2. Mạch biến đổi A/D: Có nhiệm vụ biến đổi điện áp tơng tự t cảm biến
nhiệt thành tín hiệu số để gửi đến vi điều khiển. Để lựa chọn sử dụng các vi
mạch A/D ngời ta thờng căn cứ vào 2 thông số chính là :
- Độ phân giải hay số bít đầu ra, số bít ra của ADC quyết định đến độ chính xác
của pháp biến đổi, số bít càng lớn càng lớn sai số lợng tử càng nhỏ.
- Tốc độ biến đổi đợc tính bằng số mẫu hoàn thành trong một giây( samples/s),
nó tỉ lệ nghịch với thời gian hon thiện việc biến đỏi một mẫu.
- Trong ứng dụng điều khin nhiệt độ, nhiệt độ là một đại lợng biến đổi chậm
nên ta chọn vi mạch biến đổi A/D thông dụng trên thị trờng là ADC0804.

ADC0804 là bộ A/d 8 bít đủ đáp ứng đợc yêu cầu về độ chính xác đặt ra.
ADC0804 có các đặc điểm sau:
- Đầu ra đợc đếm bằng các cổng 3 trạng thái nên có thể ghép trực tiếp vào bus
dữ liệu mà không cần mạch đệ dữ kiệu ở ben ngoài ;
- Thời gian biến đổi cõ 100 micro/mẫu;
- Không cần hiệu hcinhr điểm 0;
- Khi điện áp nguồn nuôi là 5V thì tín hiệu đàu vào cực đại là 5V;
- tất cả các tín hiệu đều tơng thích mứcTTL;
- Dòng tiêu thụ nhỏ, cỡ 1.9ma.
8
Hình dois mô tả mạch A/D ứng dụng vi mạch ADC0804 để đo nhiệt độ từ
LM35.
Sơ đồ mạch biến đổi A/D
Mạch này gồm hai phần chính :

-phần tơng tự : Với dải nhiệt độ từ 0 độ đên 128 độ thì điện áp ra của LM35laf
từ 0 đến 1.28V, điện áp này đợc đa đến lối vào IN+, cong lối vào IN- đợc nối đất
. Với điện áp vào cực đại là 1.28V thì điện áp chuẩn Vref đợc đặt là 0.64V, việc
điều chinht Vref đợc thực hiện bởi biến trở vi chỉnh VR. Khi đó nếu nhiệt dộ là
0 độ C thì điện áp IN+ là 0V, đầu ra Dout là 00000000, vi điều khiển nhận đợc
giá trị là 0; Khi nhiệt độ là 128 độ C thì điện áp IN+là 1.28V, đầu ra Dout là
11111111, vi điều khiển nhạn đợc giá trị tơng ứng là 255.
-Phần giao tiếp với vi điều khiển: Để thực hiện giao tiếp với vi điềukhiển cần
các tín hiệu sau :
9
+Tín hiệu chọn vi mạch biến đổi tơng tự số CS_ADC, tích cực thấp., đợc da từ
mạch giả mã địa chỉ tới. Khi CS_ADC=0 thì ADC0804 đợc chọn, chuẩn bị cho
việc đọc só liệu từ ADC .
+ Tín hiệu ra lệnh cho ADC0804 bắt đầu biến dổi WR_ADC, tích cực mức thấp ,
đợc điều khiển trực tiếp bởi vi điều khieenr, khi WR_ADC chuyển từ 1 xuống 0
thì ADC bắt đầu quá trình biến dổi.
+ Tín hiệu báo kết thúc biến đổi ADC_OK , tích cực thấp , đợc nối với chân
INTR(interrup) của ADC0804, mỗi khi ADC0804 hoàn thành việc biến đổi cho
một mẫu nó báo hiệu cho bên ngoài bằng một mức logics 0 ở chân này . Tín hiêu
này đợc gửi tới vi điều khiển để váo cho vi điều khiển biết ADC đã biến đổi song
; để không phải hỏi vòng thì tín hiệu này đợc đa tới một đầu vào ngắt ngoài của
vi điều khiển , mỗi khi ADC biến đổi xong sẽ gây ra một ngắt vi điều khiển , vi
điều khiển sẽ chuyển sang chơng trình con phục vụ ngắt để đọc số liệu từ ADC.
+ Tín hiệu đọc số liệu RD_ADC, tích cực thấp , sau khi nhận biết ADC đã biến
đổi xong bởi mức logics 0 ở ADC_OK, vi điều khiển thực hiện việc lấy số liệu
bằng cach chuyển tín hiệu RD_ADC cuống mức thấp, tín hiệu này đợc nối với
chân RD của ADC, lúc này các cổng đem 3 trạng thái ở đầu ra Dout của
ADC0804 mở , kết quả biến đổi đợc đa kên bus dữ liệu .
10
3.2 Khèi vi ®iÒu khiÓn:

IC AT89S52:
So đồ chân :
Cấu tạo IC có:
•CPU( CPU centra lprocessing unit):
8- bit data bus; 16- bit address bus; không gian địa chỉ 64Kbyte
Thanh ghi tích lũy A;
Thanh ghi tích lũy phụ B;
Đơn vị logic học (ALU);
Thanh ghi từ trạng thái chương trình;
Bốn băng thanh ghi;
Con trỏ ngăn xếp
•Bộ nhớ (Memory):
Bộ nhớ chương trình( ROM) gồm 8Kbyte Flash, ghi xóa hàng nghìn lần.
Bộ nhớ dữ liệu( dạng SRAM) gồm 256 byte (chứa ngăn xếp – Stack)
Vùng thanh ghi có chức năng đặc biệt SFR (Special Funtion Register).
Bộ UART, có chức năng truyền nhận nối tiếp.
11
3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện.
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 các chương trình cho chíp mà không cần các bộ nạp chuyên dụng.
4 cổng xuất nhập song song 2 chiều 8- bit với 32 chân.
 Port 0( P0.0=>P0.7)
Port 0 gồm 8 chân, 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ỉ( AD0-AD7), chức năng này sẽ được sử dụng khi AT89S52 giao
tiếp với các thiết bị ngoài có kiến trúc Bus như các vi mạch nhớ, mạch PIO…
 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 cũng như các Port
khác. Port1 có thể xuất nhập theo bit và theo byte.
 Port 2( P2.0=>P2.7)

Port 2 ngoài chức năng là cổng vào/ra như Port 0 và Port 1, Port 2 còn là
byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài.
 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ể 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 truyền cho Port nối tiếp
P3.2 INT0 Ngắt ngoài 0
P3.3 INT1 Ngắt ngoài 1
P3.4 T0 Ngõ vào của Timer/counter0
P3.5 T1 Ngõ vào của Timer/counter1
P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài.
P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài.
 Chân /PSEN (pin 29): là chân điều khiển đọc chương trình ở bộ
nhớ ngoài.
12
 Chân ALE (pin 30): 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ư 7473.
 Chân /EA (pin 31): Tín hiệu /EA cho phép chọn bộ nhớ chương
trình là bộ nhớ trong hay ngoài. EA=1 thì thực hiện chương trình trong RAM
nội. EA=0 thực hiện ở RAM ngoài.
 RST( Reset: pin 9): Ngõ vào reset trên chân số 9. khi RST=1 thì bộ vi
điều khiển sẽ được khởi động lại thiết lập ban đầu.
 XTAL1, XTAL2 (pin 18, 19): Hai chân này được nối song song với
thạch anh tần số max=33 Mhz. Để tạo dao động cho bộ vi điều khiển.
 Vcc,GND: cung cấp nguồn nuôi cho bộ vi điều khiển cấp qua chân 20 và
40.
Cổng Vào Ra Nối Tiếp(Serial Port)

Tổng quan:
8051 có 1 cổng vào ra nối tiếp(UART)
Tín hiệu liên quan:RxD(P3.0, chân số 10) va TxD(P3.1, chân số 11)
Dữ liệu đi và về hoàn toàn độc lập với nhau, do đó có thể truyền nhận đồng
thời, và cổng nối tiếp có đặc tính như vâyj được gọi là song công(Full duplex)
Các thanh ghi liên quan:
13
Dữ liệu nhận về thong qua RxD, tới 1 thanh ghi chức năng đặc biệt(8-bit)
tên là SBUF
Dữ liệu truyền thong qua TxD, từ 1 thanh ghi chức năng đặc biệt(8-bit)
cũng tên là SBUF
Thanh ghi điều khiển SCON:
SM0-SM1
0-0=mode0:chế độ đồng bộ 8 bit,clock =1/12 Fosc
0-1=mode1:chế độ dị bộ 8-bit, clock thay đổi được tùy ý
1-0=mode2:chế độ dị bộ 9-bit,clock= 1/64 Fosc hoặc 1/32 Fosc
1-1=mode3:chế độ dị bộ 9-bit,clock thay đổi được tùy ý
SM2:bit cho phép chế độ gioa tiếp đa vi xử lý(multimicroprocessor),mode
2 hoặc mode3.Trong các chế độ thong thường,SM2=0.
REN:bit cho phép nhận dữ liệu nếu ghi vào đó giá trị logic 1.Giá trị logic 0
tại bit này sẽ”khóa cổng “ với các dự lieuj gửi đến.
TB8:bit dữ liệu thứ 9 phát đi trong các chế độ truyền nhận 9-bit(mode 2 và
3)
RB8: bit dữ liệu thứ 9 nhận về trong các chế độ truyền nhận 9-bit(mode 2
và 3)
TI:cờ báo ngắt truyền ,khi =1 báo hiệu rằng 1 khung dữ liệu (8 hay 9 bit
tùy chế độ) đã được truyền xong. Cờ này không tự động xóa về 0 khi chương
trình phục vụ ngắt thực hiện.User phải xóa bằng lệnh.
RI:cờ báo ngắt nhận,khi =1 báo hiệu rằng 1 khung dữ liệu (8 hay 9-bit tùy
chế độ) đã được nhận về đầy đủ,Cờ này không tự động xóa về 0 khi chương

trình phục vụ ngắt thực hiện.User phải xóa bằng lệnh
Với cổng nối tiếp các bit dữ liệu được truyền lần lượt trên cùng 1 đường tín
hiệu thay vì truyền cùng một lúc trên các đường tín hiệu khác nhau.Thông
14
thường thì việc truyền dữ liệu bằng cổng nối tiếp phải tuân theo một cơ chế, một
giao thức hay một nguyen tắc nhất định .Có thể kể ra một số giao thức như
SPI,I2C,SCI
Cổng nối tiếp có 2 kiểu truyền dữ liệu chính:
Truyền đồng bộ(synchronous):thiết bị truyền và nhận đều dung chung một
xung nhịp (clock)
Truyền dị bộ(asynchronous):thiết bị truyền và thiết bị nhận sử dụng hai
nguồn xung nhịp riêng .Tuy nhiên hai nguồn xung này không đươc khác nhau
quá nhiều
Xung nhịp là yếu tố không thể thiếu trong truyền dữ liệu nối tiếp và nó có
vai trò xác định giá trị của bit dữ liệu
Cổng nối tiếp có thể có một trong các tính năng sau:
Đơn công:thiết bị chỉ có thể hoặc truyền hoặc nhận dữ liệu
Bán song công:thiết bị có thể truyền và nhận dữ liệu nhưng tại một thời
điểm có thể làm 1 trong 2 việc đó
Song công:thiết bị có thể truyền và nhận dữ liệu đồng thời
Thanh ghi điều khiển TMOD(Sử dụng cho timer/counter 0 và
timer/counter 1):
GATE: bit quy định yếu tố cho phép timer/counter đếm hay dừng. Nếu
GATE=0, timer/counter sẽ đếm hay dừng phụ thuộc vào trạng thái bit TRx
(thanh ghi TCON). Nếu GATE=1, timer/counter sẽ đếm nếu bit TRx=1 (thanh
ghi TCON) và tín hiệu ngắt ngoài INTx ở mức cao. Trong trường hợp này, nếu
TRx-0 hoặc tín hiệu ngắt ngoài INTx ở mức thấp, timer/counter sẽ dừng đếm.
C/T: bit lựa chọn xung nhịp đưa vào đếm. Nếu C/T = 0, xung nhịp đưa vào
đếm chính là xung nhịp của CPU (lúc này gọi là bộ định thời – timer). Nếu C/T
15

= 1, xung nhịp đưa vào đếm là xung nhịp lấy từ bên ngoài vào qua tín hiệu T0
và T1 (lúc này gọi là bộ đếm sự kiện – counter).
M1:M0 0:0 = Mode 0: timer/counter 13bit ghép bởi <5bit thấp
TL>:<thanh ghi TH>
0:1 = Mode 1: timer/counter 16bit ghép bởi <thanh ghi TH>:<thanh ghi
TL>
1:0 = Mode 2: timer/counter 8bit, đếm bằng TL,khi tràn tự động nạp TH
vào TL.
1:1 = Mode 3: TL0 là timer/counter 8bit, sử dụng các bit điều khiển của
timer0.
TH0 là timer 8bit, sử dụng các bit điều khiển của timer 1. Timer 1
không hoạt động ở chế độ này.
- Thanh ghi TCON (Sử dụng cho timer/counter 0 và timer/counter 1):
TF1: Cờ ngắt của timer/countet 1, khi =1 báo hiệu rằng timer/counter 1 đã
đếm vượt quá trị lớn nhất mà nó có thể biểu diễn (255 đối với chế độ 8bit và
65535 đối với chế độ 16bit).
TR1: bit cho phép timer/counter 1 hoạt động đếm hoặc dừng.
TF0: Cờ ngắt của timer/countet 0, khi =1 báo hiệu rằng timer/counter 0 đã
đếm vượt quá trị lớn nhất mà nó có thể biểu diễn (255 đối với chế độ 8bit và
65535 đối với chế độ 16bit).
TR0: bit cho phép timer/counter 0 hoạt động đếm hoặc dừng.
IE1: Cờ ngắt của ngắt ngoài 1.
IT1: Bit cho phép chọn loại ngắt ngoài cho INT1.
IE0: Cờ ngắt của ngắt ngoài 0.
16
IT0: Bit cho phộp chn loi ngt ngoi cho INT0.
Vi điều khiển là nơi thực hiện thuật toán điều khiển , bao gồm các chức
năng :mã hóa, hợp thành, giã . Ngoài ra để có thể giao tiếp đợc với ngời sử dụng
thì ta cần phải bổ sung:
-Hẹ thống phím bấm chức năng để ngời sử dụng só thể đặ nhiệt độ trực tiêp

-Cổng giao tiep với PC, để từ PC ngơi sử dụng có thể giám sát hoat dộng
của hệ thống .
Sơ đồ khối của vi điều khiển
Trong khối điều khiển chúng tôi sử dụng các linh kiện sau :
+Vi điều khiển 89S52.
17
+Vi mạch MAX 232 làm nhiệm vụ ghép nối vi điều khiển với PC qua cỏng
RS232.
3.3Truyền thông với máy tính qua cổng nối tiếp:
Bộ vi diều khiển AT89S52 có khả năng giao tiếp với thế giới bên ngoài qua
cổng nối tiếp. Vấn đề này duy nhất khi giao tiếp với máy tínhlaf mức logics ở bộ
vi điều khiển và cổng COM của máy tính khác với nhau, cụ thể nh sau:
So sánh điện áp ở các mức logics giữa RS232C và TTl
Đối tợng Mức logic Mức điện áp tơng ứng
Cổng COM
(Mức RS232)
1 -12 V đến -3V
0 +3V đến +12V
Vi điều khiển
(Mức TTl)
1 +5V
0 0V
Khắc phục điều này, chúng ta sử dụng vi mạch MAX232 để chuênr đổi mức
điện áp giữa hai chuẩn. Vi mạch này có chứa hai bộ chuyển mức gia vi điều
khiển với máy tính qua cổng RS232 sử dụng vi mạch đổi mức MAX232.
Hình vẽ(Truyền thông qua cổng nối tiếp)
18
Nh vậy thức chất của việc truyền thông qua cổng nối tiếp thực là việc truyền
mã ASCII của ký tự. Trong chơng lập trình cho vi điều khiển để gửi cho máy các
ký tự từ 0 đến 9 ta phảI truyền mã ASCII của chúng lầ lợt từ 0x30 đến 0x39.

Để kiểm tra xem máy tính có nhận đợc các ký tự này hay không, ta phảI
cho máy tính thi hành chơng trình nhận số liêu qua cổng nối tiếp. Chơng trình
này có thể viết bằng ngôn ngx lập trình Basis, Pascan, C, C++ Trong
Windown có cung cấp xắn cho chúng ta một công cụ truyền tin qua công nối
tiếp là Hyper Terminal.
Cách mở chơng trình nay nh sau:
Từ menu chọn Start / programs/ Acessoties /Communication / Hyper
Terminal.
19
Sau đó nhập kết nối, chọn cổng nối tiếp và thiết lập các tông số cho cổng
nối tiếp. Lu ý rằng các thông số này phải gống các thông số đã thiết lập chho
cổng nối tiêp của vi điều khiển.
20

Chn túc truyn nh ó t trc: 9600
Cuối cùng ta có ca s hin th nh hình dới đây:
Tại dấu nhắc con trỏ sẽ hiển thị các ký tự nhận từ cổng nối tiếp. Tùy các chơng
trình cụ thể mà màn hình hiển thị các thông số tơng ứng
21
MẠCH NGUYÊN LÝ:
22
MẠCH IN:
23
LËp tr×nh cho vi ®iÒu khiÓn:
Code:
#include <stdio.h>
#include <math.h>
#include <reg52.h>
void Donhiet (void);
void Truyen (void);

void Khongche (void);
void Kiemtraphiman (void);
float nhiet;
unsigned int gt_so,nhiet_thuc,nhiet_dat,j;
sbit led_xanh =P1^0;
sbit led_do =P1^1;
sbit led_vang =P1^2;
sbit nhan_tang =P1^3;
sbit nhan_giam =P1^4;
sbit intr_adc =P1^5;
sbit wr_adc =P1^6;
sbit rd_adc =P1^7;
void tre( unsigned int n)
{
unsigned int i;
for(i=0;i<=n;i++);
}
void main (void) //chuong trinh chinh
{
SCON=0x52; // Port noi tiep che do 1 REN=1,TI=1
TMOD=0x20; //time 1 che do 2 8bit
TH1=TL1=-3; //tao toc do baud la 9600
24
TR1=1;
nhiet_dat=0;
P2=0xff;
nhiet_dat=40;
while(1)
{
Kiemtraphiman();

Donhiet();
tre(100000000);
}
}
void Kiemtraphiman (void) // chuong trinh kiem tra phim an
{
nhan_tang=0;
if(nhan_tang==1)
{
++nhiet_dat;
if(nhiet_dat>=90) //khong che nhiet dat<= 90C
nhiet_dat=90;
}
nhan_giam=0;
if(nhan_giam==1)
{
nhiet_dat;
if(nhiet_dat<=5) //khong che nhiet dat >= 5C
nhiet_dat=5;
}
25

×