do nhiet do lm35

39
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 :[email protected] -Đ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ừ 0-128 độ 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

Upload: nhkhanh12081989

Post on 24-Jun-2015

5.952 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Do Nhiet Do Lm35

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 :[email protected]ĐT :09565826212.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ạn3.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ừ 0-128 độ C, tiêu tán côngsuấ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ọnvà 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ìmhiể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ý

Page 2: Do Nhiet Do Lm35
Page 3: Do Nhiet Do Lm35
Page 4: Do Nhiet Do Lm35

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

Page 5: Do Nhiet Do Lm35

-Code chương Trình:ale bit p1.5start bit p1.6eoc bit p1.7

org 000htd: lcall cdoilcall hex_bcdlcall bcd_7doanlcall hienthi

Page 6: Do Nhiet Do Lm35

sjmp td

cdoi: setb aleclr ale

setb startjb eoc,$clr start

mov r7,#250de: lcall hienthidjnz r7,demov a,p3ret

hex_bcd: mov b,#10div abmov 10h,bmov 11h,aret

bcd_7doan:mov dptr,#900hmov a,10hmovc a,@a + dptrmov 21h,a

mov a,11hmovc a,@a + dptrmov 22h,amov 20h,#086hret

hienthi:

mov r6,20repeat2:mov r5,100 repeat1:mov r0,#20hmov a,#0fehdjnz r5,repeat1djnz r6,repeat2

Page 7: Do Nhiet Do Lm35

ht: mov p0,@r0mov p2,alcall delaymov p2,#0ffhinc r0rl acjne a,#0f7h,htret

delay: mov 7fh,#100djnz 7fh,$ret

ORG 900Hdb 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hEND6. Hình ảnh mô tả mô hình đã thi công khi đang hoạt động

7. -Kết quả đạt đượcHiển thì chính xác nhiệt độ trên led 7 đoạn, không bị nhiễu.-Hạn chế của đề tàiKhông hiển thị được nhiệt độ lẻ( ví dụ như 25.5) nên khi nhiệt độ môi trương dao động khoảngtừ( 0.5-0.6) thì sẽ hiển thị dao động tăng hay giảm một độ.-Hướng phát triển+SỬ DỤNG CÁC LOẠI VI ĐIỀU KHIỂN MỚI HƠN NHƯ AVR, PIC. DÙNG NGÔN NGỮ LẬP TRÌNH TRỰC QUAN HƠN NHƯ C.+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Ả.+HIỂN THỊ VÀ ĐIỀU KHIỂN NHIỆT ĐỘ TRONG LÒ NHIỆT, DỤNG CỤ BẾP(như lò nướng...)

Page 8: Do Nhiet Do Lm35

bai moiA - Lý thuyết về ADC1. 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. Các máy tính số sử dụng các giá trị nhị phân, nhưng trong thế giới vật lý thì mọi đại lượng ở dạng tương tự(liên tục). Nhiệt độ áp suất (khí hoặc chất lỏng), độ ẩ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. 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. các bộ biến đổi cũng có thể được coi như các bộ cảm biến. Mặc dù chỉ có các bộ cảm biến nhiệt, tốc độ, áp suất, ánh sáng và nhiều đại lượng tự nhiên khác.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. Do vậy, 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. Một chip ADC được sử dụng rộng rãi là ADC 804.2. 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. Nó cũng được nhiều hang khác sản xuất, nó làm việc với +5v và có độ phân giải là 8 bít. 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. 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.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. Các chân của ADC 804 được mô tả như sau:a). 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. Để truy cập ADC 804 thì chân này phải ở mức thấp.b). Chân (đọc): Đây là một tín hiệu đầu vào được tích cực mức thấp. 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. được sử dụng để nhận dữ liệu được chuyển đổi ở đầu ra của ADC 804. 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. Chân cũng được coi như cho phép đầu ra. c) Chân ghi (thực ra tên chính xác là “Bắt đầu chuyển đổi”). Đâ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. 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. 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. 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.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. Tuy nhiên ADC 804 cũng có một máy tạo xung đồng hồ. Để 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.5. Trong trường hợp này tần số đồng hồ được xác định bằng biểu thức :

Page 9: Do Nhiet Do Lm35

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.

Kiểm tra ADC 804 ở chế độ chạy tự doe) Chân ngắt (ngắt hay gọi chính xác hơn là “kết thúc chuyển đổi”).Đây là chân đầu ra tích cực mức thấp. 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. Sau khi xuống thấp, 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.f) Chân V¬in (+) và V¬in(-).Đây là các đầu vào tương tự vi sai mà V¬in = V¬in (+) - V¬in(-). 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ố .g) Chân Vcc.Đây là chân nguồn nối + 5v, nó cũng được dùng như điện áp tham chiếu khi đầu vào Vref/2(chân 9) để hở.h) Chân Vref/2Chân 9 là một điện áp đầu vào được dùng cho điện áp tham chiếu. 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. 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

Page 10: Do Nhiet Do Lm35

Ghi chú: - - Khi hở thì đo được ở đó khoảng 2,5 V- 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.i) Các chân dữ liệu D0 – D7Cá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ố. Đâ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. Để 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). 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.k) Chân đất tương tự và chân đất số.Đây là những chân đầu vào cấp đất chung cho cả tín hiệu số và tương tự. Đấ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 . 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. 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. Tuy nhiên, trong thực tế thu đo dữ liệu các chân đất này được nối tách biệt.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à:- 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.- Duy trì hiển thị chân . 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. Nếu cao tiếp tục thăm dò cho đến khi nó xuống thấp.- Sau khi chân xuống thấp, ta bật CS=0 và gửi một xung cao - xuống - 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.

Page 11: Do Nhiet Do Lm35

Phân chia thời gian đọc và ghi của ADC 804 .3. Kiểm tra ADC 804Chú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. 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.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ố. 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. 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”.

Hình: Nối ghép ADC 804 với nguồn đồng hồ riêng.Ví dụ:Hãy thử nối ghép ADC 804 với 8051 theo sơ đồ 12.7. 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. 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. Thực hiện điều này liên tục.Lời giảiĐặt P2.6 = WR (bắt đầu chuyển đổi cần một xung thấp lên cao)Đặt chân P2.7 = 0 khi kết thúc chuyển đổiĐặt P2.5 = RD (xung cao - xuống - thấp sẽ đọc dữ liệu từ ADC)P1.0 – P1.7 của ADC 804

Page 12: Do Nhiet Do Lm35

MOV P1, # 0FFH chọn P1 là cổng đầu vàoBACK: CLR P2.6 Đặt WR = 0 SETB P2.6 Đặt WR = 1 để bắt đầu chuyển đổiHERE: JB P2.7, HERE Chờ cho P2.7 to để kết thúc chuyểnđổi CLR P2.5 Kết thúc chuyển đổi, cho phép đọc RD MOV A, 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.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 8051Trê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. 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. Một mạch lật chia tần số cho 2 nếu ta nối đầu tới đầu vào D. Đối với tần số cao hơn thì ta cần sử dụng nhiều mạch Flip – Plop hơn.4. Phối ghép với một cảm biến nhiệt của 8051Các bộ biến đổi chuyển đổi các đại lượng vật lý ví dụ nhhư cường độ ánh sáng, nhiệt độ, 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, dòng, trở kháng, hay dung kháng. 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, 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. 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

Page 13: Do Nhiet Do Lm35

Hướng dẫn chọn các loại cảm biến họ LM35

5. 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. 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. 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, ADC 808/809 có đầu ra dữ liệu 8 bít như ADC 804.8 kênh đầu vào tương tự được dồn kênh và được chọn theo bảng 12.10 sử dụng ba chân địa chỉ A, 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.53 mV. Do vậy để có độ phân dải 10mV ta cần đặt Vref(+) = 2.56 V và Vref(-) = Gnd. Từ hình ( bộ biến đổi ADC 808/809 ta thấy có chân ALE. Ta sử dụng các địa chỉ A, B và C để chọn kênh đầu vào INO- IN7 và kích hoạt chân ALE để chốt địa chỉ. Chân Setcomplete để bắt đầu chuyển đổi (Start conversion). 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)

Page 14: Do Nhiet Do Lm35

6. 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ư saua. Chọn một kênh tương tự bằng cách tạo địa chỉ A,B và C b. Kích hoạt chân ALE ( cho phép chốt điậ chỉ Address Latch Enable). Nó cần xung thấp lên cao để chốt địa chỉ c. Kích hoạt chân SC bằng xung cao xung thấp để bẳt đầu chuyển đổid. 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 đif. Kích hoạt OE cho phép đọc dữ liệu ra của ADC. 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 0000HMOVT MOD,01H khởi động time 0 ở chế độ 1LOOP MOV P3,#00H Chọn kênh INO MOV A,#01H MOV DPTR,#6000H MOVX@DPTR,A tạo xung START/ALE MOV R3,#60DJZN R3,$ Delay 0,12ms MOVXA,@DPTR Đọc data từ 8051 về MOVB,#5 MUL AB Nhân A với 5 MOV R7,B Cất 8 bit cao vào R7 MOV R6,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,R6 Load chục _đơn vị ANLA,#0FH Xóa digit cao ORLA,#70H Chọn LED hàng đơn vị ACALL DELAY 3ms Xuất ra và tạo trễ 3ms

MOV A.R6 Load chục_đơn vị SWAP A Đảo 2 digit

Page 15: Do Nhiet Do Lm35

ANAL,#0FH Xóa digit cao ORL A,#0B0H Chon led hàng chục ACALL DELAY 3ms Xuất ra và tạo trễ 3ms

MOV A,R7 Load nghin/trăm ANLA ,#0FH Xóa dgit cao ORL A,0D0H Chọn LED hàng trăm ACALL DELAY 3m Xuất ra và tạo trễ 3ms

MOV A,R7 Load nghin_trăm SWAP A Đảo 2 digit ANLA ,#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 ,#2000H Chon/CS1 MOVX@DPTR,A Xuất ra MOV R1.#6 Tạo trễ 3ms

LAP: MOV R2,#250 DJNZ R2,$ DJNZ R1,LAPRET

Chương trình con đổi số nhị phân 16bit<_9999 trong R7,R6 thành BCD nén R7;R6 BIN 16 TOBCD PUSH ACC Cất A vào Stack PUSH B Cất B vào Stack MOV B,#10 ACALLL DIV _16_8 Chia R7,R6 cho 10 PUSH B Cất hàng đơn vị vào Stack MOV A,R6 MOVB ,#10 ACALL DIV_16_8 Chia tiếp cho 10 PUSH B Cất hàng chục vào StackMOV A,R6

Page 16: Do Nhiet Do Lm35

MOV B,#10 DIV AB Chia tiếp cho 10 PUSH B Cất hàng trăm vào Stack SWAP A Đảo hàng nghìn lên digit cao POP B Lấy hàng trăm ra B ORL A,B Kết hợp nghìn/trăm

MOV R7,A Đưa vào R7 POP ACC Lấy hàng chục ra A SWAP A Đảo hàng chục lên digit cao POP B Lấy hàng đơn vị ra B ORL A,B Kết hợp chục/đơn vị MOV R6,A Đưa vào R6 POP B Lấy lại B POP ACC Lấy lại ARET

DIV_16_8PUSH 02H Cất R2 vào stackPSH ACC Cât A vào stack MOV R2,#16 Cho dịch 16 lần CLR ADIVEDE XCHA,R6CLRC Dịch bit7 của R6 vàoRLCA Carry :bit 0 của R6

XCHA,R6 Bằng 0 XCHA,R7 Dịch bit carry vàoCLR A Bit 0 của R7XCHA,R7 CLR A Dịch bit 7 của R7 CJNE A,B,NOT_EQSJMPA_GREA TEA_EQ_BNOT_EQ JC BELOWA_GRE A TER_EQ_BSUBB A,B Cất số dư vào AXCH A,R6ORL A,#1 Thương số băng 1XCH A,R6 Thương số tiến đến R6BELOW DJNZ,R2,DIVIDE Dịch 16 lần XCH A,B Cất số dư vào B POP ACC Lấy lại A

Page 17: Do Nhiet Do Lm35

POP 02H Lấy lại R2RET

Khối cảm biến nhiệt:

Khối led 7 đoạn ;

Khối MCU ROM RAM ADC:

Page 18: Do Nhiet Do Lm35

Mạch hiển thị nhiệt độ đo trên led 7 đoạn:

Read more: http://www.ant7.com/forum/forum_posts.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ếuMSSV : 0608055Lớp : ĐHĐT2A1

TIỂU LUẬN VI XỬ LÝ

Đề Tài Chọn 42 : Tìm Hiểu Ví Dụ C51 ADC Program

Page 19: Do Nhiet Do Lm35

Đề 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 động3) Chương trình lệnh AssemblerB) 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, ADC0809 , Sensor LM35 , IC 74LS14 , 8 Led 7 đoạn Anot chung , và một vài linh kiện khác.a) Chíp AT89C51 *AT89C51 là một Microcomputer 8 bit loại CMOS, có tốc độ cao và công suất thấp với bộ nhớ Flash có thể lập trình được. 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, 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 đó, 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. Mỗi chân có chức năng như các đường I/O (Xuất/Nhập), 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. Chức năng của từng chân và 4 port của AT89C51 tương tự như chip 8051. *Sơ đồ chân của chip AT89C51:

Page 20: Do Nhiet Do Lm35

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 , bộ chọn 8 kênh và một bộ logic điều khiển tương thích .Bộ chuyển đổi AD 8 bit này dùng phương pháp chuyển đổi xấp xỉ tiếp. 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ý. *Sơ đồ chân ADC0809:

Page 21: Do Nhiet Do Lm35

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

Page 22: Do Nhiet Do Lm35

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ính năng cảm biến nhiệt độ rất nhạy, ở nhiệt độ 25(0C) nó có sai số không quá 1%. Với tầm đo từ 0(0C) đến 128(0C) , 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. * Thông số kỹ thuật: - Tiêu tán công suất thấp . - Dòng làm việc từ 400µA đến 5mA. - Dòng ngược 15mA. - Dòng thuận 10mA. - Độ 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,94V đến 3,04V. * Đặc tính điện: - Theo thông số của nhà sản xuất LM35, quan hệ giữa điện áp và ngõ ra như sau: Vout =0.01*T(0K)=2,73+0,01*T(0C).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,73V Ở 5(0C) thì điện áp ngõ ra Vout = 2,78V ………………………………………. Ở 100(0C) thì điện áp ngõ ra Vout = 3,71VTầ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 Độnga) 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. Tín hiệu điện này được đưa vào bộ chuyển đổi ADC0809 (Analog Digital Conversion) . 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,1.Để cho ADC hoạt động thì IC

Page 23: Do Nhiet Do Lm35

74LS14 có nhiệm vụ cấp xung vào chân START của ADC. 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. Tín hiệu 8 bit này được đưa vào port 3 của AT89C51. Vi xử lý sẽ xử lý tín hiệu này và hiển thị kết quả qua led 7 đoạn.3) Lệnh Viết Cho Vi Xử Lý Bằng Assembler:

;*********************************************************** ************; 89C51 + ADC0809 + LED 7SEG - ANOD COMM;*********************************************************** ************;R0 : DEM 10S HTHI GIO- 3 S HIEN THI TEMPRATURE ;R1;R2 : BIEN DEM 0--100 <=> 1S;R3;R4;R5 : BIEN CAP NHAT TEM VALUE AFTER 100 TIMES ;R6;R7 : DELAY;-----------------------------;12H--13H--14H--15H--16H--17H;CH DCH CP DVP CG DVG ;-----------------------------;20H-------21H--22H--23H---24H; HUNDER 2 7 * C;-----------------------------;--CO CHO BIET BAO GIO HOAC NHIET DO;FL_HOR_TEM =0 : BAO GIO;FL_HOR_TEM =1 : BAO NHIET DO;-----------------------------------FL_HOR_TEM BIT 24H.0;-----------------------------------

ORG 0000HSJMP MAIN;-------------NGAT DO TIMERORG 0BHLJMP NGAT_TIMER0

;-------------VAO PRO MAINMAIN:MOV SP,#30H ; NHAP DIA CHI BAT DAU CHUONG TRINH ;KHOI DONG SAU KHI BAT NGUON "TURN ON POWER";------------------------------------------------------; vung Ram luu tru: hh:mm:ss

Page 24: Do Nhiet Do Lm35

;------------------------------------------------------ MOV 12H,#00HMOV 13H,#00HMOV 14H,#00HMOV 15H,#00HMOV 16H,#00HMOV 17H,#00H;------------------------------------------------------; vung Ram luu tru Temprature :27*C;------------------------------------------------------MOV 20h,#00hMOV 21h,#00hMOV 22h,#00hMOV 23h,#00h

;------------------------------------------------------; THIET LAP MAC DINH FL_HOR_TEM=0 LA HIEN THI GIO;------------------------------------------------------CLR FL_HOR_TEM ;FL_HOR_TEM=0;--------LAY TEM LAN DAU TIEN-------------------------CALL CON_ADCMOV R5,#0

MOV IE,#10000010B ;KHOI TAO NGAT CHO PHEP;--- INT1_T0_INT0

MOV TMOD,#11HMOV TL0,#LOW(-9216) ;XTAL11.0592 =>Tclk = 12/11.0592 = 1,08507uSMOV TH0,#HIGH(-9216) ; 9216x(100lan)x[Thoigianmay(12/11.0592)]=1s OK!chinh xac 99.99%SETB TR0

LAP:CALL HIEN_THICALL TEST_PHIMCALL KIEM_TRA1SSJMP LAP;**********************************************HIEN_THI:JNB FL_HOR_TEM,HIEN_THI_GIO ;IF FL_HOR_TEM=0 THEN "HIEN THI GIO"LJMP HIEN_THI_TEM ;ELSE FL_HOR_TEM=1 THEN "HIEN THI NHIET DO"HIEN_THI_GIO:;----HIEN THI DATA LEN CAC LED-----------

Page 25: Do Nhiet Do Lm35

MOV DPTR,#BANG_MA_LED;LED1MOV P0,#11111110BMOV A,17HMOVC A,@A+DPTR MOV P2,A LCALL DELAY1mov p2,#0ffh; Chong nhieu;LED2MOV P0,#11111101BMOV A,16HMOVC A,@A+DPTR MOV P2,A LCALL DELAY1mov p2,#0ffh ; Chong Nhieu;LED3MOV P0,#11111011BMOV A,15HMOVC A,@A+DPTR

ANL A,#10111111B

MOV P2,A LCALL DELAY1mov p2,#0ffh ;Chong Nhieu;LED4MOV P0,#11110111BMOV A,14HMOVC A,@A+DPTR MOV P2,A LCALL DELAY1mov p2,#0ffh ;Chong Nhieu;LED5MOV P0,#11101111BMOV A,13HMOVC A,@A+DPTR

ANL A,#10111111BMOV P2,A LCALL DELAY1mov p2,#0ffh ;Chong Nhieu;LED6MOV P0,#11011111B MOV A,12H;KIEM TRA -DE TAT MO LED CH

Page 26: Do Nhiet Do Lm35

CJNE A,#0,MOLED_CH ; Neu CH khac 0 thi Nhay den MOLED_CH; Neu CH la 0 thi tat led CHMOV P2,#0ffh ; Xoa Led CH khi no la so:"0" LCALL DELAY1MOV P2,#0ffh ;Chong NhieuLJMP THOAT_HIENTHI

;---- MOLED_CH-------- MOLED_CH:MOVC A,@A+DPTRMOV P2,ALCALL DELAY1MOV P2,#0FFH ;Chong NhieuLJMP THOAT_HIENTHI

;=========================================================== ==HIEN_THI_TEM:;-------------------------HIEN THI NHIET DO----------------------------------;---BEFOR DISPLAY VALUE TEMPRATURE WE MUST CONVECTER ANALOG TO DISGITAL------

INC R5PUSH ACCMOV A,R5CJNE A,#100,CHUA_CAP_NHAT;----CAP NHAT LAI TEM VALUE------CALL CON_ADCMOV R5,#0 CHUA_CAP_NHAT:POP ACC;--------------------------------; ghcbaFed; : 10000000B; : 11110000B ;CHU C; : 01100011B ;SO 0 NHO

MOV P0,#11111110BMOV P2,#11110000B ;CHU C LCALL DELAY1mov p2,#0ffh; Chong nhieuLCALL DELAY1

MOV P0,#11111101BMOV P2,#01100011B ;SO 0 NHO

Page 27: Do Nhiet Do Lm35

LCALL DELAY1mov p2,#0ffh; Chong nhieuLCALL DELAY1

;--------HIENTHI GIA TRIN TEM-----------MOV P0,#11111011BMOV A,22HMOVC A,@A+DPTR MOV P2,A LCALL DELAY1

mov p2,#0ffh ; Chong NhieuLCALL DELAY1MOV P0,#11110111BMOV A,21HMOVC A,@A+DPTR MOV P2,A LCALL DELAY1

mov p2,#0ffh ;Chong NhieuLCALL DELAY1MOV P0,#11101111BMOV A,20HCJNE A,#00,HIENTHI_TEM_100LJMP THOAT_HIENTHIHIENTHI_TEM_100:MOVC A,@A+DPTRMOV P2,A LCALL DELAY1mov p2,#0ffh ;Chong NhieuLCALL DELAY1

THOAT_HIENTHI:

RET;****************************************************

KIEM_TRA1S:;-----KIEM TRA XEM DU 1s CHUA ?------------- CJNE R2,#100,KET_THUC

MOV R2,#00H;------------------------PROCESS TEMPRATURE-------------------------------------------------INC R0

Page 28: Do Nhiet Do Lm35

CJNE R0,#10,R0_BY_13 ; IF R010 THEN JUMPER TO TEST IT BY 13 ?SETB FL_HOR_TEM ; ELSE R0=10 THEN SET FLAG=1 FOR HTHI TEMPRATURELJMP CONT_UPDATE_NO_HT ; TIEP TUC CAP NHAT NHUNG KHONG HIEN THI GIA TRI GIO

R0_BY_13:CJNE R0,#13,CONT_UPDATE_NO_HT ; IF R0=13 THAT MEAN IS "TEMPRATURE DISPLAY IN 3S"CLR FL_HOR_TEM ; AFTER 3S IT WILL RE_DISPLAY VALUE OF HOUR; SO WE MUST RESET VALUE OF FLAG = 0 MOV R0,#0;----------------------------------------------------------- ----------------------------

CONT_UPDATE_NO_HT:

INC 17HMOV A,17H CJNE A,#10,KET_THUC MOV 17H,#00INC 16HMOV A,16H CJNE A,#6,KET_THUC MOV 16H,#00INC 15HMOV A,15H CJNE A,#10,KET_THUCMOV 15H,#00INC 14HMOV A,14H CJNE A,#6,KET_THUC

MOV 14H,#00INC 13HMOV A,13H CJNE A,#03,TANG_DVH_LEN_10;--NEU LA 3 THI KTRA TIEP----MOV A,12HCJNE A,#01,KET_THUC ; DUNG DVH LA 3 VA CH KHONG LA 1 THI NHAY TOI CP DE CP=0MOV 12H,#00HMOV 13H,#01HLJMP KET_THUC

;----TANG DVH LEN 10 KHI NO KHONG PHAI LA S0 3----------

Page 29: Do Nhiet Do Lm35

TANG_DVH_LEN_10:CJNE A,#10,KET_THUCMOV 13H,#00INC 12H

KET_THUC:RET;*********************************************************** ****

;----- DELAY----------DELAY1:MOV R7,#10HDJNZ R7,$

RET;*********************************************************** ****;CHUONG TRINH CON NGAT TIMER0NGAT_TIMER0:INC R2 ;tre 1usMOV TL0,#LOW(-9216) ;XTAL11.0592 =>Tclk = 12/11.0592 = 1,08507uSMOV TH0,#HIGH(-9216) ; 9216x(100lan)x[Thoigianmay(12/11.0592)]=1s OK!chinh xac 99.99%SETB TR0

RETI;*******************************************************;TEST_PHIM:JB P3.3,PHIM2CALL NGAT_PHUTLJMP THOAT_PHIM1;*******************************************************

PHIM2:JB P3.2,THOAT_TEST_PHIMCALL NGAT_GIOLJMP THOAT_PHIM2;--------------------------------------

THOAT_PHIM1:TT_KT1:JNB P3.3,HIEN_THI_T1LJMP THOAT_TEST_PHIMHIEN_THI_T1:CALL HIEN_THI

Page 30: Do Nhiet Do Lm35

LJMP TT_KT1

THOAT_PHIM2:TT_KT2:JNB P3.2,HIEN_THI_T2LJMP THOAT_TEST_PHIMHIEN_THI_T2:CALL HIEN_THILJMP TT_KT2

THOAT_TEST_PHIM:RET

;*********************************************************** ****;CHUONG TRINH CON NGAT INTONGAT_PHUT:;---CAM BAO NHIETCLR FL_HOR_TEMMOV R0,#0

INC 15HMOV A,15HCJNE A,#10,THOAT1MOV 15H,#0HINC 14HMOV A,14HCJNE A,#6,THOAT1 MOV 14H,#0HTHOAT1:RET

;CHUONG TRINH CON NGAT INT1NGAT_GIO:CLR FL_HOR_TEM;---CAM BAO NHIETCLR FL_HOR_TEMMOV R0,#0

INC 13HMOV A,13H

CJNE A,#03,NGAT_11MOV A,12HCJNE A,#1,THOAT2 MOV 12H,#0H

Page 31: Do Nhiet Do Lm35

MOV 13H,#1LJMP THOAT2NGAT_11:CJNE A,#10,THOAT2MOV 13H,#0MOV 12H,#1SJMP THOAT2

THOAT2:

RET

;*********************************************CON_ADC:

;***********************CHON_NGO_VAO:CLR P3.4CLR P3.5CLR P3.6

BATDAU_ADC:ACALL STARTACALL LAYDATAACALL CHUYEN_DOIRET;=========================================================== ===;QUA TRINH BIEN DOI BAT DAU KHI CO CANH XUONG O TREN CHAN STARTSTART:SETB P3.7NOPNOPNOPCLR P3.7;DOI 100US DE QUA TRINH BIEN DOI XONGCALL DELA::24Ỷ22::SRET;=========================================================== ===LAYDATA:MOV A,P1RET;===========================================================

Page 32: Do Nhiet Do Lm35

===CHUYEN_DOI:

MOV B,#51DIV AB; ------LUU HANG TRAM-------MOV 20H,AMOV A,B;CHIA TIEPMOV B,#10DIV AB;-------LUU CHUC-------------MOV 21H,A;-------LUU TRAM--------------MOV 22H,B;;20H = SE GIU GIA TRI HANG TRAM;21H = SE GIU GIA TRI HANG CHUC;22H = GIU GIA TRI HANG DON VI;==========================

RET

;*********************************************************** ********DELA::24Ỷ22::S:MOV TH1,#HIGH(-120)MOV TL1,#LOW(-120)SETB TR1JNB TF1,$CLR TR1CLR TF1

RET

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

BANG_MA_LED:DB 11000000B;0DB 11001111BDB 01100100BDB 01000110BDB 01001011BDB 01010010BDB 01010000BDB 11000111B

Page 33: Do Nhiet Do Lm35

DB 01000000BDB 01000010B;9

END

Read more: http://www.ant7.com/forum/forum_post.asp?TID=3953#ixzz0vPKgAQ16