1. Trang chủ
  2. » Luận Văn - Báo Cáo

đò án thiết kế hệ thống điều khiển nhiệt độ cho lò điện trở

18 574 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 261 KB

Nội dung

Nếu có tính hiệu RD xung cao xuống thấp thì dữ liệu số dạng 8 bit được đưa tới các chân dữ liệu từ D0 – D7.. WR Write – Ghi Đây là chân vào tích cực mức thấp được dùng để báo cho ADC0804

Trang 1

Nhận Xét của giáo viên Hướng Dẫn

Ngày…….Tháng…… Năm………

Trang 2

Nhận xét của giáo viên phản biện

Ngày…… Tháng…… Năm………

Trang 3

Lời nói đầu

Với khoa học và kĩ thuật phát triển như hiện nay thì việc đo nhiệt độ của môi trường có thể thực hiện được dẽ dàng bằng nhiệt kế thủy ngân, hoặc cũng có thể là mạch đo nhiệt độ được trình bày ở đồ án này, tuy nhiên chúng em muốn nói đến kĩ thuật lập trình 8051 giao tiếp với ADC0804 Với một con cảm biến LM35, ADC0804, 89C51, LCD và một số phụ kiện khác là ta có thể dễ dàng ráp 1 mạch đo nhiệt độ có thể hiển thị chính xác và rõ ràng trên màn hình tinh thể lỏng Một điều đáng nói đến nữa là mạch có thể dễ dàng nâng cấp để đo được nhiệt độ cao hơn bằng cách thay cảm biến nhiệt và điều chỉnh một ít mã của chương trình

Do chưa có nhiều kinh nghiệm và điều kiện có hạn nên đề tài của chúng em còn nhiều sai sót Rất mong sự đóng góp ý kiến chân tình của thầy cô và các bạn để đề tài được hoàn chỉnh hơn

Trang 4

Mục lục

o0o 1 Giới thiệu và mô tả chức năng ……… … Trang 5

2 Hoạt động của ADC0804……….Trang 5

3 Cảm biến LM35D……… Trang 6

4 Hoạt động của LCD……… Trang 6

5 Lưu đồ giải thuật………Trang 10

6 Chương trình……… Trang 12

Trang 5

1 Giới thiệu và mô tả chức năng

C 2

V R 1

1K

V C C + 5V

S W 1

8951

29 30

31 19 18

9

39 38 37

36 35 34 33 32

1 2 3

4 5 6 7 8

21 22 23 24 25 26 27 28

10 11 12 13 14 15 16 17

P S E N

A LE

E A

X 1

X 2

R S T

P 0.0/A D 0

P 0.1/A D 1

P 0.2/A D 2

P 0.3/A D 3

P 0.4/A D 4

P 0.5/A D 5

P 0.6/A D 6

P 0.7/A D 7

P 1.0

P 1.1

P 1.2

P 1.3

P 1.4

P 1.5

P 1.6

P 1.7

P 2.0/A 8

P 2.1/A 9

P 2.2/A 10

P 2.3/A 11

P 2.4/A 12

P 2.5/A 13

P 2.6/A 14

P 2.7/A 15

P 3.0/R X D

P 3.1/T X D

P 3.2/IN T 0

P 3.3/IN T 1

P 3.4/T 0

P 3.5/T 1

P 3.6/W R

P 3.7/R D

A D C 0804

6

9

11 12 13 14 15 16 17 18

19

4

5

2 3

+ IN

V R E F /2

D B 7

D B 6

D B 5

D B 4

D B 3

D B 2

D B 1

D B 0

C LK R V

C LK IN

IN T R

R D

W R

R 1 10K

C 1 150p\

C 5

100u

LC D

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

R 3

R

V R 2

Y 1

T her

1 2 3

V + out

G nd

Do đặc tính của LM35D nên mạch có đo đuợc khoảng nhiệt độ từ 0 ->100oC, có thể ứng dụng mạch để đo nhiệt độ phòng

Mạch hoạt động dựa trên nguyên tắc chung như sau: cảm biến đo nhiệt độ biến thiên theo tỉ lệ 10mV/1oC , sau đó được đưa vào bộ biến đổi ADC để biến đổi thành mã nhị phân 8 bit, sau đó dữ liệu được đưa vào 89C51 Vi xử lý kiểm tra xem nếu quá

100oC thì hiển thị thông báo “OVER TEMP”, nếu không thì sẽ hiển thị trị số nhiệt độ đo được

RD (Read) – đọc

Đây là chân tín hiệu vào, tích cực mức thấp, đây là tín hiệu điều khiển cho phép đọc Khi bộ ADC đã chuyển đổi xong tín hiệu tương tự sang số và giữ nó ở một thanh ghi trong Nếu có tính hiệu RD (xung cao xuống thấp) thì dữ liệu số dạng

8 bit được đưa tới các chân dữ liệu từ D0 – D7

WR (Write) – Ghi

Đây là chân vào tích cực mức thấp được dùng để báo cho ADC0804 bắt đầu quá trình chuyển đổi tín hiệu tương tự sang số Lượng thời gian cần thiết cho quá trình chuển đổi phụ thuộc vào tần số đưa vào chân CLK IN và CLK R Khi việc chuyển đổi hoàn tất thì thì chân INTR được ADC0804 hạ xuống mức thấp INTR (Interrupt) – Ngắt

Đây là chân xuất, tích cực mức thấp Bình thường chân này ở mức thấp khi việc chuyển đổi dữ liệu được hoàn tất thì nó hạ xuống thấp để báo cho VDK đã kết thúc quá trình chuyển đổi, và sẵn sàng để đọc dữ liệu (RD)

Trang 6

D0 – D7

Đây là các chân dữ liệu số ra (D7 là bit có trọng số cao nhất MSB) Giá trị số đầu ra được tính theo công thức:

Vref/2

Đây là chân điện áp đầu vào dùng làm điện áp tham chiếu.Nếu chân này hở thì dãy điện áp đầu vào Vin nằm trong dãy 0 -> 5V (giá trị đo được tại Vref/2 là 2.5V) Nếu cấp áp cho Vref thì dãy điện áp đầu vào Vin nằm trong khoảng 0 -> 2Vref/2

Ở mạch này do cảm biến LM35 biến thiên 10mV/1oC nên độ phân giải R (R=2Vref / 256) phải bằng 10mV Vì vậy dãy điện áp Vin nằm trong khoảng 0 -> 2,56V, đó là lý do ta cấp cho Vref/2 một điện áp là 1,28V Chiết áp VR1 dùng để thay đổi trị số R (10 ± α), Vì vậy ta có thể dùng VR1 chỉnh lại trị số nhiệt độ của mạch sao cho hiển thị chính xác nhiệt độ thực tế của môi trường

Chương trình con đọc dữ liệu từ ADC0804

READ_ADC:

CLR WRITE ;Xung Tạo xung từ cao xuống thấp tại chân P1.1 (WRITE)

NOP

SETB WRITE ;Cho phép ADC bắt đầu chuyển đổi

JB INTR,$ ;Chờ ADC chuyển đổi xong (Khoảng 110us)

CLR READ ;Cho phép đọc ADC

MOV A,ADC ;Đọc giá trị đã chuyển đổi vào thanh ghi A

MOV TEMP,A ;Lưu chỉ số nhiệt độ vào ô nhớ TEMP

SETB READ

RET

Đây là cảm biến nhiệt, mạch tích hợp, chính xác cao, có điện áp đầu ra tỉ lệ tuyến tính với nhiệt độ theo thang độ Celsius (độ C) Cảm biến nhiệt này không yêu cầu cân chỉnh bên ngoài vì nó đã được căn chỉnh rồi Cảm biến này cho ra điện áp 10mV/1oC, và dãi nhiệt độ của nó từ 0 -> 100oC

Chức năng của từng chân LCD

3 Chỉnh độ sáng

4 “R/S” Chọn thanh ghi

Trang 7

5 “R/W” Đọc/Ghi

6 “EN” xung clock

7 - 14 “DATA” Các chân xuất nhập dữ liệu

Chân 3: là chân điều khiển VEE dùng để thay đổi độ tương phản của màn hiển thị Lý tưởng thì chân này nên nối nguồn điện áp thay đổi được, người ta thực hiện bằng cách gắn mạch chia áp dùng biến trở có đầu ra thay đổi đưa vào chân này; tuy nhiên nên chú ý là một số module cần nguồn điện DC – 7V Đơn giản nhất là người ta nối chân này với 0V (xuống đất )

Chân 4: là đường RS (Register Select=chọn thanh ghi ) đây là 1 trong 3 ngõ vào điều

khiển lệnh.Khi chân này để mức thấp thì các dữ liệu được truyền đến LCD được xử lí như các mệnh lệnh và các dữ liệu đọc ra chỉ trạng thái của nó Bằng cách đưa đường

RS này lên mức cao thì dữ liệu ký tự có thể xuất /nhập trên module này

Chân 5: là đường R/W (read / wile ) Chân này được kéo xuống mức thấp để ghi các

lệnh hay dữ liệu ký tự vào module hoặc được léo lên mức cao để đọc dữ liệu ký tự hay thông tin trạnh thái từ các thanh ghi của nó

Chân 6: là đường E (enable), ngõ vào này dùng để khởi động việc chuyển các lệnh

hay dữ liệu ký tự giữa module và các đường dữ liệu Khi ghi ra màn hình hiển thị LCD,

dữ liệu chỉ được chuyển khi có cạnh xuống ở tín hiệu E này Tuy nhiên khi đọc ra từ LCD thì dữ liệu khã dụng sau khi có chuyển tiếp từ thấp lên cao và duy trì dữ liệu khã dụng cho đến khi tín hiệu xuống thấp một lần nữa

 Gửi lệnh đến LCD

Dựa trên các chân điều khiển RS, RW, EN ta có thể viết đoạn lệnh thực hiện gởi lệnh đến LCD như sau:

SEND_COM:

CLR RS ; RS = 0 : D li u đ c truy n x lý nhữ ệ ượ ề ử ư

; m nh l nhệ ệ

CLR RW ; RW = 0 : Ghi l nhệ

MOV DATABUS,A ; Mã l nh ch a trong Aệ ứ

NOP

SETB EN

LCALL WAIT_LCD ; Ki m tra tr ng thái b n c a LCDể ạ ậ ủ

RET

Bảng mã lệnh của LCD 16xx, 20xx

R/S R/W D7 D6 D5 D4 D3 D2 D1 D0 Instruction/Description

Trang 8

4 5 14 13 12 11 10 9 8 7 Chân

0 0 0 0 0 0 0 0 1 * Trả con trỏ về vị trí đầu tiên

0 0 0 0 0 0 0 1 ID S Chế độ nhập kí tự

0 0 0 0 0 0 1 D C B Hiển thị tắt/mở & cursor

0 0 0 0 0 1 SC RL * * Dịch hiển thị/cursor

0 0 0 0 1 DL N F * * Đặt chức năng

0 1 BF * * * * * * * Cờ bận & bộ đếm địa chỉ

1 0 D D D D D D D D Ghi dữ liệu ra màn hình LCD

1 1 D D D D D D D D Đọc dữ liệu từ LCD

 Sơ đồ Timing

Trang 9

 Kiểm tra trạng thái bận của LCD

LCD thực thi mỗi lệnh mất một khoảng thời gian, nên ta phải luôn kiểm tra xem LCD

có bận không trước khi gởi lệnh hay dữ liệu đến nó bằng đoạn lệnh sau:

WAIT_LCD:

SETB RW ; Ch đ đ cế ộ ọ

MOV DATABUS,#0FFH

NOP

SETB EN

MOV A,DATABUS

JB ACC.7,WAIT_LCD ; Ki m tra c b n b ng cách liên đ c nóể ờ ậ ằ ọ

RET

 Khởi động LCD.

Trước khi sử dụng LCD thì ta phải khởi động và đặt cấu hình cho nó Việc này được thực hiện bằng cách gởi một số lệnh khởi động đến LCD

INIT_LCD:

MOV A,#30H ;MODE 8 BIT,1 LINE

LCALL SEND_COM

MOV A,#0CH ;Cho phép LCD hi n thể ị

LCALL SEND_COM

RET

Trang 10

 Hiển thị kí tự

Giống đoạn mã gửi lệnh chỉ khác ở chổ thay RS = 1 WRITE_TEXT:

SETB RS ; Ch đ g i d li uế ộ ử ữ ệ

CLR RW

MOV DATABUS,A

NOP

SETB EN

LCALL WAIT_LCD

RET

Trang 11

Khởi động LCD Đặt cờ cho phép hiển thị lên mức 1

Cho phép chuyển đổi dữ liệu

(WR = 0)

Chờ chuyển đổi dữ liệu xong

Chuyển dữ liệu sang

mã ASII

Cho phép đọc dữ liệu

số (RD = 0)

Lưu mã ASCII đã chuyển được vào R3, R2

Read ADC

Hex->ASCII

TEST_TEMP

t >= 100

Xóa cờ cho phép hiển thị DISP_FLAG

Yes

No

t = 100 Yes

No

Hiển thị text: “TEMP 100 O C”

t > 100 “TEMP OVER”

1

No

Trang 12

6 Chương trình

$MOD51

;LCD

DATABUS EQU P2

RS BIT P0.0

RW BIT P0.1

EN BIT P0.2

;ADC

ADC_BUS EQU P3

READ BIT P1.0

WRITE BIT P1.1

INTR BIT P1.2

;DATA

COUNT EQU 22H ;Byte ch a mã ASCII (tăng t 0->9) ứ ừ

DISP_FLAG BIT 00H ;C cho phép hi n th ờ ể ị

ORG 000H

LJMP MAIN

ORG 030H

; **********************************************************

; MAIN

; **********************************************************

MAIN:

MOV SP ,#2FH ;V trí c a Stack t 30H ị ủ ừ

MOV COUNT,#30H ;Bit đ m hi n th tr ng thái làm vi c ế ể ị ạ ệ

SETB DISP_FLAG ;Cho phép hi n th ho c không ể ị ặ

ACALL INIT_LCD ;Kh i đông LCD ở

LCALL CLEAR_LCD ;Xóa LCD

SAMPLE:

ACALL READ_ADC ;L y m u ấ ẫ

ACALL HEX_ASCII ;Chuy n t mã Hex->ASCII ể ừ

ACALL TEST_TEMP ;Ki m tra xem có quá 100 ể o C hay không

ACALL DISPLAY ;Hi n th trên LCD ể ị

SETB DISP_FLAG ;Đ t c cho phép hi n th ặ ờ ể ị

SJMP SAMPLE

; **********************************************************

; **********************************************************

READ_ADC:

MOV ADC_BUS,#0FFH

CLR WRITE ;T o xung t cao xu ng th p t i chân WR (P1.1) ạ ừ ố ấ ạ

NOP

SETB WRITE ;Cho phép ADC b t đ u chuy n đ i t ng t -> s ắ ầ ể ổ ươ ự ố

JB INTR,$ ;Ch chuy n đ i d li u xong ờ ể ổ ữ ệ

MOV TEMP,ADC_BUS ;L u mã Hex c a nhi t đ vào byte nh TEMP ư ủ ệ ộ ớ

Trang 13

; **********************************************************

; HEX -> BCD -> ASCII (R3,R2)

; **********************************************************

HEX_ASCII:

MOV A ,TEMP ;Đ a giá tr Hex vào thanh ghi A đ x lý ư ị ế ư

MOV B ,#10

ADD A ,#30H ;Mã ASCII c a nhi t đ (ch s hàng ch c) ủ ệ ộ ỉ ố ụ

MOV A B

ADD A ,#30H ;Mã ASCII c a nhi t đ (ch s hàng đ n v ) ủ ệ ộ ỉ ố ơ ị

RET

; **********************************************************

; HIEN THI LCD

; **********************************************************

DISPLAY: ;HIEN THI "TEMP" & t

JNB DISP_FLAG,EXIT ;N u c DISP_FLAG=0 thì không hi n th ế ờ ể ị

LCALL CLEAR_LCD

MOV ,#' '

LCALL WRITE_TEXT

MOV ,#'T' ;Hi n th chu i text “TEMP” ể ị ổ

LCALL WRITE_TEXT

MOV ,#'E'

LCALL WRITE_TEXT

MOV ,#'M'

LCALL WRITE_TEXT

MOV ,#'P'

LCALL WRITE_TEXT

MOV ,#' ' ;Kho ng tr ng ả ắ

LCALL WRITE_TEXT

MOV ,#' '

LCALL WRITE_TEXT

LCALL WRITE_TEXT

MOV , R2

LCALL WRITE_TEXT

MOV ,#0DFH ;Kí t ự o C

LCALL WRITE_TEXT

MOV ,#'C'

LCALL WRITE_TEXT

SPACE: ;T o kho ng tr ng ạ ả ẳ

MOV ,#' '

LCALL WRITE_TEXT

MOV ,#' '

LCALL WRITE_TEXT

MOV ,#' '

LCALL WRITE_TEXT

MOV ,#' '

LCALL WRITE_TEXT

STATUS: ;Hi n th tr ng thái th c thi ể ị ạ ự

MOV ,COUNT ;B t đ u t s 0 ắ ầ ừ ố

LCALL WRITE_TEXT

INC COUNT ;Tăng t 1->9 ừ

Trang 14

MOV A ,COUNT

CJNE A ,#3AH,NEXT ;Đ n s 9 thì Reset ế ố

MOV COUNT,#30H ;RESET v s 0 ề ố

NEXT:

; *********************************************************

; DELAY 0.5s

; *********************************************************

DELAY_500M:

LOOP:

MOV TH0 ,#HIGH(-50000)

MOV TL0 ,#LOW(-50000)

ACALL DELAY

DJNZ R4 ,LOOP

EXIT:

RET

; **********************************************************

; **********************************************************

TEST_TEMP:

MOV A R3

SUBB A ,#30H ;ASCII -> HEX

MOV B ,#10

JNZ TEST2 ;Nh y khi T >= 100 ả

RET

TEST2:

CLR DISP_FLAG ;Không cho hi n th khi g i DISPLAY ể ị ọ

MOV A R2

SUBB A ,#30H ;ASCII -> HEX

JNZ OVER_TEMP ;Nh y khi T > 100 ả

ACALL T100

RET

; **********************************************************

; Thông báo "OVER TEMP"

; **********************************************************

OVER_TEMP:

LCALL CLEAR_LCD

MOV ,#' '

LCALL WRITE_TEXT

MOV ,#'O' ;Chu i text “OVER TEMP” ổ

LCALL WRITE_TEXT

MOV ,#'V'

LCALL WRITE_TEXT

MOV ,#'E'

LCALL WRITE_TEXT

MOV ,#'R'

LCALL WRITE_TEXT

MOV ,#' '

LCALL WRITE_TEXT

MOV ,#'T'

LCALL WRITE_TEXT

MOV ,#'E'

LCALL WRITE_TEXT

MOV ,#'M'

LCALL WRITE_TEXT

MOV ,#'P'

LCALL WRITE_TEXT

ACALL DELAY_500M

Trang 15

; **********************************************************

; **********************************************************

T100:

LCALL CLEAR_LCD

MOV ,#' '

LCALL WRITE_TEXT

MOV ,#'T' ;Chu i text “TEMP 100 ồ o C”

LCALL WRITE_TEXT

MOV ,#'E'

LCALL WRITE_TEXT

MOV ,#'M'

LCALL WRITE_TEXT

MOV ,#'P'

LCALL WRITE_TEXT

MOV ,#' '

LCALL WRITE_TEXT

MOV ,#'1'

LCALL WRITE_TEXT

MOV ,#'0'

LCALL WRITE_TEXT

MOV ,#'0'

LCALL WRITE_TEXT

MOV ,#0DFH

LCALL WRITE_TEXT

MOV ,#'C'

LCALL WRITE_TEXT

ACALL SPACE

RET

; **********************************************************

; LCD DISPLAY

; **********************************************************

INIT_LCD:

MOV ,#30H ;Ch đ 8 BIT,1 dòng ế ộ

LCALL SEND_COM

MOV ,#0CH ;Cho phép LCD hi n th ể ị

LCALL SEND_COM

RET

CLEAR_LCD:

MOV ,#01H ;Mã l nh xóa màn hình LCD ệ

LCALL SEND_COM

RET

SEND_COM:

MOV DATABUS, A ;Mã l nh ch a trong thanh A ệ ứ

NOP

SETB EN

LCALL WAIT_LCD ;Đ i cho l nh đ c th c thi hoàn toàn b i LCD ợ ệ ượ ự ờ

RET

WRITE_TEXT:

MOV DATABUS, A ;Mã ASCII c a text ch a trong thanh ghi A ủ ứ

NOP

Trang 16

SETB EN

LCALL WAIT_LCD ;Đ i cho l nh đ c th c thi hoàn toàn b i LCD ợ ệ ượ ự ờ

RET

WAIT_LCD:

MOV DATABUS,#0FFH ;C u hình P2 làm port nh p ấ ậ

NOP

SETB EN

MOV ,DATABUS ;Đ c d li u t LCD ọ ữ ệ ừ

RET

;***************************************************

DELAY: ;Delay theo giá tr trong TH0 & TL0 ị

MOV TMOD ,#01H

SETB TR0

JNB TF0 ,$

CLR TR0

CLR TF0

RET

END

Trang 17

Tài liệu tham khảo

1) Vi xử lý của Hồ Trung Mỹ

2) Datasheet of ADC0804, LM35D

3) Cấu trúc và lập trình họ VDK 8051 của Nguyễn Tăng Cường 4) Tài liệu lý thuyết & TH Vi Điều khiển của thầy Phạm Quang Trí

Ngày đăng: 03/01/2016, 16:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w