chào các bạn!

Đây là mạch đo nhiệt độ của mình lúc đầu bị nhảy độ, tưởng tiêu rồi may mà máy tính
của thầy bị virut,
nên bữa sau sửa được bây giờ chạy ngon rồi
1. Thông tin cá nhân
-Họ Tên: Huỳnh Anh Tuấn
-MSSV : 05111110
-Email :sauthegian@yahoo.com
-ĐT :0956582621
2.Tên Đề Tài
-Ứng dụng vi điều khiển 89S52 để hiện thị nhiệt độ lên led 7 đoạn thông qua cảm biến
nhiệt LM35
-Các yêu cầu cần giải quyết:
+ Đo lường được nhiệt độ
+ Chuyển kết quả đo lường từ tương tự sang tín hiệu số.
+ chuyển đổi và hiển thi kết quả lên led 7 đoạn
3.Các phương án có thể lựa chọn, ưu khuyết điểm của từng phương án.
+ Để đo lường nhiệt độ thì có thể dùng nhiều loại cảm biến nhiệt khác, mỗi loại có một
ưu điểm riêng
phù hợp với từng nhu cầu riêng. Ở đây nhu cầu của mình là đo nhiệt độ môi trường bình
thường nên sử dụng LM35
là tối ưu nhất vì: đây là loại cảm biến có độ chính xác cao, tầm hoạt động tuyến tính từ 0128 độ C, tiêu tán công
suất thấp..
+ Tương tự vậy chuyển đổi từ tương tự sang số cũng có nhiều loại ic nói chung al2 giống
nhau như , adc0808
,adc0809,adc0804c,adc08041... ở đây tôi dùng adc 0809 chỉ đơn giàn là nó có sẵng ở nhà.
+ Còn vấn đề hiển thị thì có thể hiển thị trên led 7 đoạn hay LCD, với qui mô của đề tài
thì 7 đoạn là hợp lí, vừa rẻ
vừa đẹp.
Trên là những hướng chi tiết. Còn tổng quát mà nói thì có thể dùng nhiều cách để đo
nhiệt độ hiển thị kết quả
và điều khiển thì có thể dùng nhưng loại VDK hiện đại hơn như AVR, pic những loại này
có tích hợp sẵng ADC nên sẽ gọn
và tối ưu hơn,cũng có thể sử dụng các ngôn ngữ lập trình tốt hơn như C. Tuy nhiên tôi chỉ
mới tiếp cận VĐK nên phải tìm
hiểu từ cái cơ bản trước vừa làm giữa kì vừa có kiến thức thi cuối kì.
4.Sơ Đồ mạch nguyên lý

Lưu đồ giải thuật .đồ mạch layout5.

-Code chương Trình: ale bit p1.5 start bit p1.6 eoc bit p1.7 org 000h td: lcall cdoi lcall hex_bcd lcall bcd_7doan lcall hienthi .

a ret bcd_7doan: mov dptr.10h movc a.#10 div ab mov 10h.sjmp td cdoi: setb ale clr ale setb start jb eoc.de mov a.#900h mov a.@a + dptr mov 21h.#20h mov a.a mov a.$ clr start mov r7.20 repeat2: mov r5.100 repeat1: mov r0.11h movc a.p3 ret hex_bcd: mov b.#0feh djnz r5.repeat1 djnz r6.b mov 11h.a mov 20h.#250 de: lcall hienthi djnz r7.#086h ret hienthi: mov r6.@a + dptr mov 22h.repeat2 .

.0f9h. DÙNG NGÔN NGỮ LẬP TRÌNH TRỰC QUAN HƠN NHƯ C.$ ret ORG 900H db 0c0h.80h. -Hạn chế của đề tài Không hiển thị được nhiệt độ lẻ( ví dụ như 25.82h.#0ffh inc r0 rl a cjne a.0b0h. +HIỂN THỊ VÀ ĐIỀU KHIỂN NHIỆT ĐỘ TRONG LÒ NHIỆT. không bị nhiễu.92h. PIC. +HIỂN THỊ TRÊN LCD +GIAO TIẾP VỚI PC QUA CỔNG COM VỚI GIAO DIỆN VB HAY VS C++ ĐỂ HIỂN THỊ KẾT QUẢ. -Kết quả đạt được Hiển thì chính xác nhiệt độ trên led 7 đoạn.ht ret delay: mov 7fh.@r0 mov p2.6) thì sẽ hiển thị dao động tăng hay giảm một độ.#100 djnz 7fh.90h END 6.a lcall delay mov p2. Hình ảnh mô tả mô hình đã thi công khi đang hoạt động 7.#0f7h.5) nên khi nhiệt độ môi trương dao động khoảng từ( 0.ht: mov p0.99h.0f8h.5-0. DỤNG CỤ BẾP(như lò nướng. -Hướng phát triển +SỬ DỤNG CÁC LOẠI VI ĐIỀU KHIỂN MỚI HƠN NHƯ AVR.) ..0a4h.

nhưng chúng đều cho ra các tín hiệu dạng dòng điện hoặc điện áp ở dạng liên tục. Ngoài độ phân giải thì thời gian chuyển đổi cũng là một yếu tố quan trọng khác khi đánh giá một bộ ADC. Do vậy. độ ẩm và vận tốc và một số ít trong những đại lượng vật lý của thế giới thực tại mà ta gặp hàng ngày. Trong ADC 804 thời gian chuyển đổi thay đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK và CLK IN nhưng không thể nhanh hơn 110µs. Trong trường hợp này tần số đồng hồ được xác định bằng biểu thức : . Một đại lượng vật lý được chuyển đổi về dòng điện hoặc điện apqua một thiết bị được gọi là các bộ biến đổi. d) Chân CLK IN và CLK R: Chân CLK IN là một chân đầu vào được nối tới một nguồn đồng hồ ngoài khi đồng hồ ngoài được sử dụng để tạo ra thời gian. Các thiết bị ADC: Các bộ chuyên đổi ADC thuộc trong những thiết bị được sử dụng rộng rãi nhất để thu dữ liệu. Tuy nhiên ADC 804 cũng có một máy tạo xung đồng hồ. Khi CS = 0 nếu một xung cao – xuống – thấp được áp đến chân thì đầu ra số 8 bít được hiển diện ở các chân dữ liệu D0 – D7. Các máy tính số sử dụng các giá trị nhị phân. được sử dụng để nhận dữ liệu được chuyển đổi ở đầu ra của ADC 804. ánh sáng và nhiều đại lượng tự nhiên khác. các bộ biến đổi cũng có thể được coi như các bộ cảm biến. Nhiệt độ áp suất (khí hoặc chất lỏng).5. Nếu CS = 0 khi tạo ra xung cao – xuống – thấp thì bộ ADC 804 bắt đầu chuyển đổi giá trị đầu vào tương tự V¬¬in ¬về số nhị phân 8 bít. áp suất. Các chân của ADC 804 được mô tả như sau: a). Lượng thời gian cần thiết để chuyển đổi thay đổi phụ thuộc vào tần số đưa đến chân CLK IN và CLK R. c) Chân ghi (thực ra tên chính xác là “Bắt đầu chuyển đổi”). Nó cũng được nhiều hang khác sản xuất. Chân cũng được coi như cho phép đầu ra. Thời gian chuyển đổi được định nghĩa như là thời gian mà bộ ADC cần để chuyển một đầu vào tương tự thành một số nhị phân. 2. Một chip ADC được sử dụng rộng rãi là ADC 804. Chip ADC 804: Chip ADC 804 là bộ chuyển đổi tương tự số trong họ các loạt ADC 800 từ hang National Semiconductor. Đây là chân đầu vào tích cực mức thấp được dùng để báo cho ADC 804 bắt đầu quá trình chuyển đổi. nhưng trong thế giới vật lý thì mọi đại lượng ở dạng tương tự(liên tục). Để sử dụng máy tạo xung đồng hồ trong(cũng còn được gọi là máy tạo đồng hồ riêng ) của 804 thì các chân CLK IN và CLK R được nối tới một tụ điện và một điện trở như chỉ ra trên hình 12.bai moi A . nó làm việc với +5v và có độ phân giải là 8 bít. Mặc dù chỉ có các bộ cảm biến nhiệt.Lý thuyết về ADC 1. Chân chọn chíp: Là một đầu vào tích cực mức thấp được sử dụng để kích hoạt chíp ADC 804. Các bộ ADC chuyển đổi đầu vào tương tự thành số nhị phân tương đương với nó và giữ no trong một thanh ghi trong. Để truy cập ADC 804 thì chân này phải ở mức thấp. Chân (đọc): Đây là một tín hiệu đầu vào được tích cực mức thấp. tốc độ. Khi việc chuyển đổi dữ liệu được hoàn tất thì chân INTR được ép xuống thấp bởi ADC 804. b). ta cần một bộ chuyển đổi tương tự số sao cho bộ vi điều khiển có thể đọc được chúng.

h) Chân Vref/2 Chân 9 là một điện áp đầu vào được dùng cho điện áp tham chiếu. Đây là chân đầu ra tích cực mức thấp.Giá trị tiêu biểu của các đại lượng trên R = 10kΩ và C = 150pF và tần số nhận được là f = 606kHz và thời gian chuyển đổi sẽ mất là 110µs. Sau khi xuống thấp. Thông thường V¬in(-) được nối xuống đất và V¬in(+) được dùng như đầu vào tương tự được chuyển đổi về dạng số . Chân Vref/2 được dùng để thực thi các điện áp đầu vào khác ngoài dải 0 đến +5V Bảng điện áp Vref/2 liên hệ với dải V¬in . Nếu chân này hở thì điện áp đầu vào tương tự cho ADC 804 nằm trong dải 0 đến +5V. g) Chân Vcc. Đây là các đầu vào tương tự vi sai mà V¬in = V¬in (+) .V¬in(-). ta đặt CS = 0 và gửi xung cao 0 xuống – thấp tới chân lấy dữ liệu ra của 804. Bình thường nó ở trạng thái cao và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệu được chuyển đổi sẵn sàng để lấy đi. Kiểm tra ADC 804 ở chế độ chạy tự do e) Chân ngắt (ngắt hay gọi chính xác hơn là “kết thúc chuyển đổi”). nó cũng được dùng như điện áp tham chiếu khi đầu vào Vref/2(chân 9) để hở. f) Chân V¬in (+) và V¬in(-). Đây là chân nguồn nối + 5v.

thấp đến chân để lấy dữ liệu ra khỏi chíp ADC 804. Phân chia thời gian cho quá trình này được trình bày trên hình sau. Đất tương tự được nối tới đất của chân tương tự. còn đất số được nối tới đất của chân .Ghi chú: . trong thực tế thu đo dữ liệu các chân đất này được nối tách biệt. Tuy nhiên. Để tính điện áp đầu ra ta có thể sử dụng công thức sau: Với là đầu ra dữ liệu số(dạng thập phân).5 V . là điện áp đầu vào tương tự và độ phân dải là sự thay đổi nhỏ nhất được tính như là (2 x ) chia cho 256 đối với ADC 8 bít. Nếu cao tiếp tục thăm dò cho đến khi nó xuống thấp. . Lý do mà ta phải có hai đất là để cách ly tín hiệu tương tự từ các điện áp ký sinh tạo ra việc chuyển mạch số được chính xác.Kích thước bước (độ phân dải) là sự thay đổi nhỏ nhất mà ADC có thể phân biệt được. . Trong phần trình bày của chúng ta thì các chân này được nối chung với một đất. .Bật CS=0 và gửi một xung thấp lên cao tới chân để bắt đầu chuyển đổi. Đây là những chân đầu vào cấp đất chung cho cả tín hiệu số và tương tự.Sau khi chân xuống thấp.Khi hở thì đo được ở đó khoảng 2.xuống . Đây là những chân được đệm ba trạng thái và dữ liệu được chuyển đổi chỉ được truy cập khi chân CS=0 và chân bị đưa xuống thấp. k) Chân đất tương tự và chân đất số.Duy trì hiển thị chân . Từ những điều trên ta kết luận rằng các bước cần phải thực hiện khi chuyển đổi dữ liệu bởi ADC 804 là: . Nếu xuống thấp thì việc chuyển đổi được hoàn tất và ta có thể sang bước kế tiếp. i) Các chân dữ liệu D0 – D7 Các chân dữ liệu D0 – D7 (D7 là bít cao nhất MBS và D0 là bít thấp nhất LSB) là các chân đầu ra dữ liệu số. ta bật CS=0 và gửi một xung cao .

Hình: Nối ghép ADC 804 với nguồn đồng hồ riêng.7 của ADC 804 . Hình trên trình bày một biến trở được dùng để cắp một điện áp tương tự từ 0 đến 5V tới chân đầu vào.7. Sau đó gọi một chương trình chuyển đổi mã Hex ra ASCII và một chương trình hiển thị dữ liệu.5 = RD (xung cao . Kiểm tra ADC 804 Chúng ta có thể kiểm tra ADC 804 bằng cách sử dụng sơ đồ mạch trên hình thiết lập này được gọi là chế độ kiểm tra chạy tự do và được nhà sản xuất khuyến cáo nên sử dụng. 3. Ví dụ: Hãy thử nối ghép ADC 804 với 8051 theo sơ đồ 12.7 = 0 khi kết thúc chuyển đổi Đặt P2.thấp sẽ đọc dữ liệu từ ADC) P1.6 = WR (bắt đầu chuyển đổi cần một xung thấp lên cao) Đặt chân P2. Lời giải Đặt P2.0 – P1. Tuy nhiên theo tài liệu của hãng National Semiconductor “nút WR và INTR phải được tạm thời đưa xuống thấp kế sau chu trình cấp nguồn để bảo đảm hoạt động”. Cần phải lưu ý rằng trong chế độ kiểm tra chạy tự do thì đầu vào CS được nối tới đất và đầu vào WR được nối tới đầu ra INTR.Phân chia thời gian đọc và ghi của ADC 804 . Vin (+) của ADC 804 các đầu ra nhị phân được hiển thị trên các đèn LED của bảng huấn luyện số. Viết một chương trình để hiển thị chân INTR và lấy đầu vào tương tự vào thanh ghi A.xuống . Thực hiện điều này liên tục.

# 0FFH chọn P1 là cổng đầu vào BACK: CLR P2. một bộ cảm biến nhiệt đáp ứng sự thay đổi nhiệt độ bằng cách thay đổi trở kháng nhưng đáp ứng của nó không tuyến tính. 4. nhiệt độ. Vì tần số này quá cao nên ta sử dụng hai mạch lật Rlip – Flop kiểu D (74LS74) để chia tần số này cho 4. Nhiệt độ được biến đổi thành về các tín hiệu điện dử dụng một bộ biến đổi gọi là bộ cảm biến nhiệt.MOV P1. lưu tốc và tốc độ thành các tín hiệu điện phụ thuộc vào bộ biến đổi mà đầu ra có thể là dạng tín hiệu điện áp. Một mạch lật chia tần số cho 2 nếu ta nối đầu tới đầu vào D.6 Đặt WR = 1 để bắt đầu chuyển đổi HERE: JB P2.6 Đặt WR = 0 SETB P2.5 Đưa RD = 1 để cho lần đọc sau SJMP BACK Hình : Nối ghép ADC 804 với đồng hồ từ XTAL2 của 8051 Trên hình trên ta có thể thấy rằng tín hiệu đồng hồ đi vào ADC 804 là từ tần số thạch anh của 8051. trở kháng. Phối ghép với một cảm biến nhiệt của 8051 Các bộ biến đổi chuyển đổi các đại lượng vật lý ví dụ nhhư cường độ ánh sáng. dòng. cho phép đọc RD MOV A. hay dung kháng. Trở kháng của bộ cảm biến nhiệt theo nhiệt độ Hướng dẫn chọn các loại cảm biến họ LM34 . HERE Chờ cho P2. Đối với tần số cao hơn thì ta cần sử dụng nhiều mạch Flip – Plop hơn.7.5 Kết thúc chuyển đổi.7 to để kết thúc chuyểnđổi CLR P2. P1 Đọc dữ liệu vào thanh ghi A ACALL CONVERSION Chuyển đổi số Hex ra mã ASCII ACALL DATA-DISPLAY Hiển thị dữ liệu SETB P2.

8 kênh đầu vào tương tự được dồn kênh và được chọn theo bảng 12. Ta sử dụng các địa chỉ A. Chip ADC 808/809 với 8 kênh tương tự Một chip hữu ích của National Semiconductor là ADC 808/809. B và C để chọn kênh đầu vào INO.56 V và Vref(-) = Gnd. Trong khi ADC 804 chỉ có một đầu vào tương tự thì chip này có 8 kênh đầu vào. Từ hình ( bộ biến đổi ADC 808/809 ta thấy có chân ALE.Hướng dẫn chọn các loại cảm biến họ LM35 5. ADC 808/809 có đầu ra dữ liệu 8 bít như ADC 804.IN7 và kích hoạt chân ALE để chốt địa chỉ. Như vậy nó cho phép ta hiển thị lên 8 bộ biến đổi khác nhau chỉ qua một chip duy nhất. Lưu ý rằng.10 sử dụng ba chân địa chỉ A. Do vậy để có độ phân dải 10mV ta cần đặt Vref(+) = 2. Chân EOC được dùng để kết thúc chuyển đổi (End – Of – Conversion) và chân OE là cho phép đọc đầu ra (out put enable) . Chân Setcomplete để bắt đầu chuyển đổi (Start conversion).53 mV. B và C Bộ biến đổi ADC 808/809 Chọn kênh tương tự của ADC 808 Trong ADC 808 / 809 thì Vrer(+) và Vrer(¬-) thiết lập điện áp tham chiếu. nếu Vref(1)=Gnd và Vref(+)= 5V thì độ phân dải là 5V/256 = 19.

A Cất 8 bit thấp vào R6 ACALL BIN16TOBCD Đổi thành BCD nén ACALL OUT _LED Xuất ra 4 LED 7 đoạn SJMP LOOP Quay lại nhãn LOOP Chương trình con quét LED 4 đoạn OUT_LED MOV A.A tạo xung START/ALE MOV R3. Hiển thị OEC để báo kết thúc chuyển đổi đầu ra cao xuống thấp báo rằng dữ liệu đã được chuyển đổi và cần được lấy đi f.B Cất 8 bit cao vào R7 MOV R6.R6 Load chục _đơn vị ANLA.#0FH Xóa digit cao ORLA.6. Nó cần xung thấp lên cao để chốt địa chỉ c. Kích hoạt OE cho phép đọc dữ liệu ra của ADC. Các bước lập trình cho ADC 808/809 Các bước chuyển dữ liệu từ đầu vào của ADC 808/809 và bộ vi điều khiển như sau a. Kích hoạt chân SC bằng xung cao xung thấp để bẳt đầu chuyển đổi d.@DPTR Đọc data từ 8051 về MOVB. Chọn một kênh tương tự bằng cách tạo địa chỉ A.#6000H MOVX@DPTR.12ms MOVXA. Một xung cao xuống thấp tới chân OE sẽ đem dữ liệu ra khỏi chíp ADC Trong ADC 808/809 không có đồng hồ riêng và do vậy phải cấp xung đồng bộ ngoài đến chân CLK Tập lệnh hiển thị nhiệt độ trên led 7 đoạn : Chương trình đo và hiển thị trên LED 7 đoạn (4 led 7 đoạn) Tập lệnh: ORG 0000H MOVT MOD.#5 MUL AB Nhân A với 5 MOV R7.#01H MOV DPTR.B và C b.#60 DJZN R3.$ Delay 0.R6 SWAP A Load chục_đơn vị Đảo 2 digit .#70H Chọn LED hàng đơn vị ACALL DELAY 3ms Xuất ra và tạo trễ 3ms MOV A. Kích hoạt chân ALE ( cho phép chốt điậ chỉ Address Latch Enable).#00H Chọn kênh INO MOV A.01H khởi động time 0 ở chế độ 1 LOOP MOV P3.

R6 .$ DJNZ R1.#10 ACALLL DIV _16_8 Chia R7.R6 MOVB .R6 BIN 16 TOBCD PUSH ACC Cất A vào Stack PUSH B Cất B vào Stack MOV B.#0FH Xóa digit cao ORL A.#0E0H Chọn LED hàng nghìn ACALL DELAY3m Xuất ra và tạo trễ 3ms RET DELAY 3m MOV DPTR .#0FH Xóa dgit cao ORL A.#2000H Chon/CS1 MOVX@DPTR.ANAL.#10 ACALL DIV_16_8 Chia tiếp cho 10 PUSH B Cất hàng chục vào Stack MOV A.#0B0H Chon led hàng chục ACALL DELAY 3ms Xuất ra và tạo trễ 3ms MOV A.#0FH Xóa digit cao ORL A.R7 Load nghin_trăm SWAP A Đảo 2 digit ANLA .R6 cho 10 PUSH B Cất hàng đơn vị vào Stack MOV A.#6 Tạo trễ 3ms LAP: MOV R2.LAP RET Chương trình con đổi số nhị phân 16bit<_9999 trong R7.0D0H Chọn LED hàng trăm ACALL DELAY 3m Xuất ra và tạo trễ 3ms MOV A.#250 DJNZ R2.R6 thành BCD nén R7.A Xuất ra MOV R1.R7 Load nghin/trăm ANLA .

DIVIDE Dịch 16 lần XCH A.A POP ACC SWAP A POP B ORL A.#10 DIV AB PUSH B SWAP A POP B ORL A.B MOV R7.B.R7 Dịch bit carry vào CLR A Bit 0 của R7 XCHA.R6 Thương số tiến đến R6 BELOW DJNZ.#16 CLR A DIVEDE XCHA.R2.B MOV R6.R6 ORL A.B Cất số dư vào A XCH A.R6 Bằng 0 XCHA.A POP B POP ACC RET DIV_16_8 PUSH 02H PSH ACC MOV R2.#1 Thương số băng 1 XCH A.R6 CLRC RLCA Chia tiếp cho 10 Cất hàng trăm vào Stack Đảo hàng nghìn lên digit cao Lấy hàng trăm ra B Kết hợp nghìn/trăm Đưa vào R7 Lấy hàng chục ra A Đảo hàng chục lên digit cao Lấy hàng đơn vị ra B Kết hợp chục/đơn vị Đưa vào R6 Lấy lại B Lấy lại A Cất R2 vào stack Cât A vào stack Cho dịch 16 lần Dịch bit7 của R6 vào Carry :bit 0 của R6 XCHA.NOT_EQ SJMPA_GREA TEA_EQ_B NOT_EQ JC BELOW A_GRE A TER_EQ_B SUBB A.B Cất số dư vào B POP ACC Lấy lại A .MOV B.R7 CLR A Dịch bit 7 của R7 CJNE A.

Khối MCU ROM RAM ADC: .POP 02H RET Lấy lại R2 Khối cảm biến nhiệt: Khối led 7 đoạn .

ant7.Mạch hiển thị nhiệt độ đo trên led 7 đoạn: Read more: http://www.asp? TID=6993&get=last#ixzz0unVvYi3t Bai khac Đề Tài 42: Tìm Hiểu Ví Dụ C51 ADC Program SVTH : Bùi Quang Hiếu MSSV : 0608055 Lớp : ĐHĐT2A1 TIỂU LUẬN VI XỬ LÝ Đề Tài Chọn 42 : Tìm Hiểu Ví Dụ C51 ADC Program .com/forum/forum_posts.

Mỗi chân có chức năng như các đường I/O (Xuất/Nhập). và tương thích với chuẩn công nghiệp của 80C51 và 80C52 về chân ra và bộ lệnh. Vì lý do đó. Nó được sản xuất với công nghệ bộ nhớ không bay hơi mật độ cao của hãng Atmel. *Sơ đồ chân của chip AT89C51: . có tốc độ cao và công suất thấp với bộ nhớ Flash có thể lập trình được. và một vài linh kiện khác. trong đó 24 chân có công dụng kép: mỗi đường có thể hoạt động như một đường I/O hoặc như 1 đường điều khiển hoặc như thành phần của bus địa chỉ và bus dữ liệu. Sensor LM35 . 8 Led 7 đoạn Anot chung .Đề Tài Báo Cáo : Mạch Báo Giờ Và Nhiệt Độ A) Sơ Lược : Gồm 3 phần 1) Giới thiệu các linh kiện cần dùng 2) Sơ đồ mạch và nguyên lý hoạt động 3) Chương trình lệnh Assembler B) Nội Dung 1) Giới Thiệu Sơ Lược Các Linh Kiện Cần Dùng *Linh kiện cần dùng gồm : AT89C51. IC 74LS14 . kể từ đây về sau ta sẽ dùng thuật ngữ “80C51”(hoặc “8051”) *Những đặc trưng của AT89C51 : + Tương thích với các sản phẩm MSC-51 + 4 kByte bộ nhớ Flash có thể lập trình lại với 1000 chu kỳ đọc/xóa + Hoạt động tĩnh đầy đủ: 0Hz đến 24MHz + Khóa bộ nhớ chương trình 3 cấp + 128 Byte Ram nội + 32 đường xuất nhập lập trình được(tương ứng 4 port) + Hai Timer/Counter 16 bit + Một port nối tiếp + Mạch đồng hồ và bộ dao động trên chip *AT89C51 có tất cả 40 chân. ADC0809 . a) Chíp AT89C51 *AT89C51 là một Microcomputer 8 bit loại CMOS. Chức năng của từng chân và 4 port của AT89C51 tương tự như chip 8051.

b) Giới Thiệu ADC0809 *Bộ ADC0809 là một thiết bị CMOS tích hợp với một bộ chuyển đổi từ tương tự sang số 8 bit . *Sơ đồ chân ADC0809: . bộ chọn 8 kênh và một bộ logic điều khiển tương thích . Bộ chọn kênh có thể truy xuất bất kỳ kênh nào trong các ngõ vào tương tự một cách độc lập. *Thiết bị này loại trừ khả năng cần thiết điều chỉnh diểm 0 bên ngoài và khả năng điều chỉnh tỉ số làm tròn nên ADC0809 dễ dàng giao tiếp với các bộ vi xử lý.Bộ chuyển đổi AD 8 bit này dùng phương pháp chuyển đổi xấp xỉ tiếp.

. C : giải mã chọn một trong 8 ngõ vào.Z-1 đến Z-8 : ngõ ra song song 8 bit .Thời gian chuyển đổi : 100µs ở tần số 640kHz .Điện áp ngõ vào 0-5V .REF(-) : điện thế tham chiếu (-) .VCC : nguồn cung cấp *Các đặc điểm của ADC0809: .CLK : xung đồng hồ .Tổng sai số chưa chỉnh định(+)(-)LSB.Dễ dàng giao tiếp với vi xử lý hoặc dùng riêng .Độ phân giải 8 bit .A.IN0 đến IN7 : 8 ngõ vào tương tự. .(+)(-)1LSB .Nhiệt độ hoạt động -40(0C) đến 85(0C) .START : xung bắt đầu chuyển đổi . B.REF(+) : điện thế tham chiếu (+) .Nguồn cung cấp +5V .Không cần điều chỉnh zero hoặc đầy thang .*Ý nghĩa các chân: .ALE : cho phép chốt địa chỉ .Tần số xung clock 10kHz – 1280kHz .

01*T(0K)=2.78V ……………………………………….Theo thông số của nhà sản xuất LM35. ADC0809 có nhiệm vụ biến đổi tín hiệu điện áp thành tín hiệu số bằng các số nhị phân 0. . . * Đặc tính điện: . . Ở 100(0C) thì điện áp ngõ ra Vout = 3.1. quan hệ giữa điện áp và ngõ ra như sau: Vout =0. ở nhiệt độ 25(0C) nó có sai số không quá 1%.Để cho ADC hoạt động thì IC . Với tầm đo từ 0(0C) đến 128(0C) .c) Cảm Biến Nhiệt Độ LM35 * LM35 có độ biến thiên theo nhiệt độ : 10mV/1(0C) * Độ chính xác cao. tín hiệu ngõ ra tuyến tính liên tục với những thay đổi của tín hiệu nhõ vào. tính năng cảm biến nhiệt độ rất nhạy.73V Ở 5(0C) thì điện áp ngõ ra Vout = 2.01*T(0C).Dòng thuận 10mA.Tiêu tán công suất thấp .Dòng ngược 15mA.Dòng làm việc từ 400µA đến 5mA.Độ chính xác: khi làm việc ở nhiệt độ 25(0C) với dòng làm việc 1mA thì điện áp ngõ ra từ 2. Tín hiệu điện này được đưa vào bộ chuyển đổi ADC0809 (Analog Digital Conversion) . Vậy ứng với tầm hoạt động từ 0(0C) đến 100(0C) ta có sự biến thiên điện áp ngõ ra là : Ở 0(0C) thì điện áp ngõ ra Vout = 2.73+0.94V đến 3. * Thông số kỹ thuật: . .04V.71V Tầm biến thiên điện áp tương ứng với nhiệt độ từ 0(0C) đến 100(0C) là 1V 2) Sơ Đồ Mạch Và Nguyên Lý Hoạt Động a) Sơ Đồ Nguyên Lý : b) Nguyên Lý Hoạt Động Cảm Biến nhiệt độ LM35 có nhiệm vụ chuyển đổi tín hiệu tương tự là sự thay đổi của nhiệt độ thành tín hiệu điện ở đầu ra.

vung Ram luu tru: hh:mm:ss . Tín hiệu 8 bit này được đưa vào port 3 của AT89C51.----------------------------.20H-------21H--22H--23H---24H .*********************************************************** ************ .----------------------------------FL_HOR_TEM BIT 24H.R7 : DELAY .*********************************************************** ************ .-------------NGAT DO TIMER ORG 0BH LJMP NGAT_TIMER0 .R3 .R6 . Vi xử lý sẽ xử lý tín hiệu này và hiển thị kết quả qua led 7 đoạn.----------------------------.--CO CHO BIET BAO GIO HOAC NHIET DO .#30H . NHAP DIA CHI BAT DAU CHUONG TRINH .----------------------------------ORG 0000H SJMP MAIN . 3) Lệnh Viết Cho Vi Xử Lý Bằng Assembler: .ANOD COMM . Khi ADC đã hoạt động thì tín hiệu tương tự được chuyển đổi sang tín hiệu số 8 bit và được đưa ra ở đầu ra từ chân Q0 đến Q7 của ADC.0 .----------------------------.R5 : BIEN CAP NHAT TEM VALUE AFTER 100 TIMES .CH DCH CP DVP CG DVG .FL_HOR_TEM =1 : BAO NHIET DO . 89C51 + ADC0809 + LED 7SEG .12H--13H--14H--15H--16H--17H .-------------VAO PRO MAIN MAIN: MOV SP.R4 .3 S HIEN THI TEMPRATURE . HUNDER 2 7 * C .-----------------------------------------------------.R0 : DEM 10S HTHI GIO.R2 : BIEN DEM 0--100 <=> 1S .R1 .74LS14 có nhiệm vụ cấp xung vào chân START của ADC.KHOI DONG SAU KHI BAT NGUON "TURN ON POWER" .FL_HOR_TEM =0 : BAO GIO .

HIEN_THI_GIO . THIET LAP MAC DINH FL_HOR_TEM=0 LA HIEN THI GIO .-----------------------------------------------------.INT1_T0_INT0 MOV TMOD.IF FL_HOR_TEM=0 THEN "HIEN THI GIO" LJMP HIEN_THI_TEM . 9216x(100lan)x[Thoigianmay(12/11.#00h MOV 23h.-----------------------------------------------------MOV 12H.--.#11H MOV TL0.#00h MOV 21h.#00H MOV 16H.ELSE FL_HOR_TEM=1 THEN "HIEN THI NHIET DO" HIEN_THI_GIO: . vung Ram luu tru Temprature :27*C .#00h MOV 22h.#HIGH(-9216) .99% SETB TR0 LAP: CALL HIEN_THI CALL TEST_PHIM CALL KIEM_TRA1S SJMP LAP .XTAL11.0592 = 1.KHOI TAO NGAT CHO PHEP .----HIEN THI DATA LEN CAC LED----------- .#00H .********************************************** HIEN_THI: JNB FL_HOR_TEM..-----------------------------------------------------CLR FL_HOR_TEM .-----------------------------------------------------MOV 20h.#LOW(-9216) .-----------------------------------------------------.#00H MOV 14H.FL_HOR_TEM=0 .#10000010B .#00H MOV 13H.#00H MOV 15H.--------LAY TEM LAN DAU TIEN------------------------CALL CON_ADC MOV R5.0592)]=1s OK! chinh xac 99.#00H MOV 17H.0592 =>Tclk = 12/11.#0 MOV IE.#00h .08507uS MOV TH0.

#10111111B MOV P2.#11101111B MOV A.14H MOVC A.#11110111B MOV A.#11111110B MOV A.13H MOVC A.Chong Nhieu .LED5 MOV P0.@A+DPTR ANL A.Chong Nhieu .@A+DPTR MOV P2.A LCALL DELAY1 mov p2.A LCALL DELAY1 mov p2.17H MOVC A.#0ffh .MOV DPTR.@A+DPTR ANL A.#11011111B MOV A.12H .LED4 MOV P0.#11111011B MOV A.#11111101B MOV A.#0ffh.#0ffh . Chong nhieu .#0ffh .LED6 MOV P0.A LCALL DELAY1 mov p2.#0ffh .16H MOVC A.A LCALL DELAY1 mov p2.KIEM TRA -DE TAT MO LED CH .Chong Nhieu .LED1 MOV P0.LED3 MOV P0.@A+DPTR MOV P2.@A+DPTR MOV P2.A LCALL DELAY1 mov p2.#BANG_MA_LED .#10111111B MOV P2.LED2 MOV P0. Chong Nhieu .15H MOVC A.

Chong Nhieu LJMP THOAT_HIENTHI .A LCALL DELAY1 MOV P2.@A+DPTR MOV P2.MOLED_CH .CHU C LCALL DELAY1 mov p2.#11111110B MOV P2. : 01100011B .#0.-------------------------------. Chong nhieu LCALL DELAY1 MOV P0.#01100011B .#100.SO 0 NHO . Neu CH la 0 thi tat led CH MOV P2.MOLED_CH-------MOLED_CH: MOVC A. : 10000000B .CJNE A.-------------------------HIEN THI NHIET DO---------------------------------.=========================================================== == HIEN_THI_TEM: . Xoa Led CH khi no la so:"0" LCALL DELAY1 MOV P2.#0ffh.R5 CJNE A.#11110000B .----CAP NHAT LAI TEM VALUE-----CALL CON_ADC MOV R5.#0 CHUA_CAP_NHAT: POP ACC .#0FFH .CHUA_CAP_NHAT .#0ffh .SO 0 NHO MOV P0.CHU C . : 11110000B .---. Neu CH khac 0 thi Nhay den MOLED_CH .---BEFOR DISPLAY VALUE TEMPRATURE WE MUST CONVECTER ANALOG TO DISGITAL-----INC R5 PUSH ACC MOV A.#0ffh . ghcbaFed .Chong Nhieu LJMP THOAT_HIENTHI .#11111101B MOV P2.

--------HIENTHI GIA TRIN TEM----------MOV P0.Chong Nhieu LCALL DELAY1 THOAT_HIENTHI: RET .@A+DPTR MOV P2. Chong Nhieu LCALL DELAY1 MOV P0.@A+DPTR MOV P2.KET_THUC MOV R2.#11111011B MOV A.20H CJNE A.#0ffh .#00H .21H MOVC A. Chong nhieu LCALL DELAY1 .LCALL DELAY1 mov p2.HIENTHI_TEM_100 LJMP THOAT_HIENTHI HIENTHI_TEM_100: MOVC A.#11101111B MOV A.-----KIEM TRA XEM DU 1s CHUA ?------------CJNE R2.A LCALL DELAY1 mov p2.@A+DPTR MOV P2.------------------------PROCESS TEMPRATURE------------------------------------------------INC R0 .#0ffh .A LCALL DELAY1 mov p2.#00.A LCALL DELAY1 mov p2.#0ffh .#100.#0ffh.22H MOVC A.**************************************************** KIEM_TRA1S: .#11110111B MOV A.Chong Nhieu LCALL DELAY1 MOV P0.

IF R010 THEN JUMPER TO TEST IT BY 13 ? SETB FL_HOR_TEM .14H CJNE A. AFTER 3S IT WILL RE_DISPLAY VALUE OF HOUR .#01.17H CJNE A.CJNE R0.#6.13H CJNE A.#0 .----------------------------------------------------------. ELSE R0=10 THEN SET FLAG=1 FOR HTHI TEMPRATURE LJMP CONT_UPDATE_NO_HT .#10.CONT_UPDATE_NO_HT .15H CJNE A.12H CJNE A.--NEU LA 3 THI KTRA TIEP---MOV A.KET_THUC .#13.16H CJNE A.#00 INC 16H MOV A.TANG_DVH_LEN_10 .KET_THUC MOV 16H.#00 INC 15H MOV A.R0_BY_13 . TIEP TUC CAP NHAT NHUNG KHONG HIEN THI GIA TRI GIO R0_BY_13: CJNE R0.#6.---------------------------CONT_UPDATE_NO_HT: INC 17H MOV A.#01H LJMP KET_THUC .#00 INC 14H MOV A.KET_THUC MOV 14H. SO WE MUST RESET VALUE OF FLAG = 0 MOV R0. IF R0=13 THAT MEAN IS "TEMPRATURE DISPLAY IN 3S" CLR FL_HOR_TEM . DUNG DVH LA 3 VA CH KHONG LA 1 THI NHAY TOI CP DE CP=0 MOV 12H.#00H MOV 13H.KET_THUC MOV 17H.#03.KET_THUC MOV 15H.----TANG DVH LEN 10 KHI NO KHONG PHAI LA S0 3---------- .#00 INC 13H MOV A.#10.#10.

CHUONG TRINH CON NGAT TIMER0 NGAT_TIMER0: INC R2 . TEST_PHIM: JB P3.0592)]=1s OK! chinh xac 99.KET_THUC MOV 13H.tre 1us MOV TL0.#HIGH(-9216) .08507uS MOV TH0.#00 INC 12H KET_THUC: RET .3.99% SETB TR0 RETI . 9216x(100lan)x[Thoigianmay(12/11.0592 =>Tclk = 12/11.THOAT_TEST_PHIM CALL NGAT_GIO LJMP THOAT_PHIM2 .0592 = 1.-------------------------------------THOAT_PHIM1: TT_KT1: JNB P3.XTAL11.*********************************************************** **** .******************************************************* .$ RET .DELAY---------DELAY1: MOV R7.----.#10.#10H DJNZ R7.HIEN_THI_T1 LJMP THOAT_TEST_PHIM HIEN_THI_T1: CALL HIEN_THI .*********************************************************** **** .******************************************************* PHIM2: JB P3.TANG_DVH_LEN_10: CJNE A.PHIM2 CALL NGAT_PHUT LJMP THOAT_PHIM1 .3.2.#LOW(-9216) .

#0H .HIEN_THI_T2 LJMP THOAT_TEST_PHIM HIEN_THI_T2: CALL HIEN_THI LJMP TT_KT2 THOAT_TEST_PHIM: RET .#0H INC 14H MOV A.THOAT1 MOV 15H.#6.CHUONG TRINH CON NGAT INT1 NGAT_GIO: CLR FL_HOR_TEM .2.#0 INC 15H MOV A.#1.NGAT_11 MOV A.LJMP TT_KT1 THOAT_PHIM2: TT_KT2: JNB P3.CHUONG TRINH CON NGAT INTO NGAT_PHUT: .12H CJNE A.13H CJNE A.#10.*********************************************************** **** .THOAT2 MOV 12H.#03.THOAT1 MOV 14H.15H CJNE A.---CAM BAO NHIET CLR FL_HOR_TEM MOV R0.---CAM BAO NHIET CLR FL_HOR_TEM MOV R0.#0H THOAT1: RET .14H CJNE A.#0 INC 13H MOV A.

5 CLR P3.7 NOP NOP NOP CLR P3.QUA TRINH BIEN DOI BAT DAU KHI CO CANH XUONG O TREN CHAN START START: SETB P3.*********************** CHON_NGO_VAO: CLR P3.=========================================================== .7 .#1 SJMP THOAT2 THOAT2: RET .********************************************* CON_ADC: .#10.4 CLR P3.#1 LJMP THOAT2 NGAT_11: CJNE A.DOI 100US DE QUA TRINH BIEN DOI XONG CALL DELA::24Ỷ22::S RET .THOAT2 MOV 13H.=========================================================== === LAYDATA: MOV A.P1 RET .=========================================================== === .#0 MOV 12H.MOV 13H.6 BATDAU_ADC: ACALL START ACALL LAYDATA ACALL CHUYEN_DOI RET .

*********************************************************** ******** DELA::24Ỷ22::S: MOV TH1.20H = SE GIU GIA TRI HANG TRAM .0 DB 11001111B DB 01100100B DB 01000110B DB 01001011B DB 01010010B DB 01010000B DB 11000111B .=== CHUYEN_DOI: MOV B.-------LUU CHUC------------MOV 21H.A MOV A.A . .B .CHIA TIEP MOV B.#10 DIV AB .$ CLR TR1 CLR TF1 RET .#LOW(-120) SETB TR1 JNB TF1.#51 DIV AB .#HIGH(-120) MOV TL1. ------LUU HANG TRAM------MOV 20H.========================== RET .B .22H = GIU GIA TRI HANG DON VI .21H = SE GIU GIA TRI HANG CHUC .-------LUU TRAM-------------MOV 22H.********************************************* BANG_MA_LED: DB 11000000B.

DB 01000000B DB 01000010B.ant7.9 END Read more: http://www.asp?TID=3953#ixzz0vPKgAQ16 .com/forum/forum_post.

Sign up to vote on this title
UsefulNot useful