Tôi muốn đo nhiệt độ dùng LM35 giao tiếp với bộ ADC của ATmega16L.Tuy nhiên tôi đang gặp khó khăn về lắp mạch và lập trình.Xin mọi người giúp đỡ.Cám ơn nhiều.
Thông báo
Collapse
No announcement yet.
LM35 và AVR
Collapse
X
-
Tôi đưa chân OUT của LM35 vào kênh 0 (chân AD0) của ADC.
Chương trình như sau:
//real_time_hut@yahoo.com
//khai bao thu vien
#include<mega16.h>
#include<stdio.h>
#include <delay.h>
//khai bao bien toan cuc
unsigned int temp;
//mau ham
void khoi_tao_serial(void);
void khoi_tao_ports(void);
void khoi_tao_ADC(void);
unsigned int doc_ADC(void);
void main(void)
{
khoi_tao_ports();
khoi_tao_serial();
khoi_tao_ADC();
while(1) //vong lap chinh
{
temp=~doc_ADC();
temp=380*(temp/1024); //Vref=3.8V
//10mV ung voi 1 do C
printf("%i\n\r",temp);
delay_ms(100); //cap nhat du lieu sau 100ms
}
}
unsigned int doc_ADC(void)
{
unsigned int value;
ADCSRA = ADCSRA | 0x40; // bat dau chuyen doi
while( (ADCSRA & 0x10) == 0 ); // cho cho den khi chuyen doi //thanh cong
value = ADCW; //lay gia tri ADC
ADCSRA = ADCSRA | 0x10; // xoa co
return value;
}
void khoi_tao_serial(void) //9600/8/N/1
{
UCSRA=0x02;
UCSRB=0xD8;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;
}
void khoi_tao_ports(void)
{
DDRC = 0xFF; // PortC lam cong ra
PORTC = 0x00;
}
void khoi_tao_ADC(void)
{
ADMUX = 0x00; // chon kenh 0
ADMUX = ADMUX | 0x40; // chon dien ap nguong
ADMUX = ADMUX | 0x20;
ADCSRA = 0x07; // chon tan so thach anh
ADCSRA = ADCSRA | 0x80; // cho phep ADC hoat dong
}Last edited by digi_pow; 13-10-2006, 22:07.
Comment
-
tôi gửi bạn đoạn code
;=====================
;last edition 28/9/06;
;=====================
.include "m16def.inc"
.org 0x000
rjmp main
.org 0x01C
rjmp ADC_Complete
main:
;Dat con tro ngan xep
ldi temp,HIGH(RAMEND)
out SPH,temp
ldi temp,LOW(RAMEND)
out SPL,temp
ldi temp,0xFF
out DDRB,temp ;ra led 7 thanh
out DDRC,temp ;dk nhiet do
out DDRD,temp ;ra led 7 thanh
ldi temp,0b11111100 ;chi dung 2 bit 0,1 de lam dau vao co`n lai la` da^`u ra
out DDRA,temp
;Dat clk cho ADC
ldi temp,0b11011110 ;tan so 125 KHz 110
out ADCSRA,temp
;===================
;Chon MUX va Vref
;AREF Internal Vref turn of; Mux 0:00000
ldi temp,0b01100000 ;
out ADMUX,temp
sei ;Cho phep ngat
;wait interrupt
loop:
rjmp loop
;============
; ISR ;
;============
ADC_Complete:
;dk nhiet do
;Calling: convert; display, control
clr rdivL
clr rdivH
in rdivL,ADCL
in rdivH,ADCH
rcall Convert
rcall Display
rcall Control
reti
còn lại bạn làm tiếp nhé
Bạn phải viết chương trình đổi số 10bit sang BCD để hiển thị|
Comment
-
Nguyên văn bởi digi_pow Xem bài viếtTôi đưa chân OUT của LM35 vào kênh 0 (chân AD0) của ADC.
Chương trình như sau:
//real_time_hut@yahoo.com
//khai bao thu vien
#include<mega16.h>
#include<stdio.h>
#include <delay.h>
//khai bao bien toan cuc
unsigned int temp;
//mau ham
void khoi_tao_serial(void);
void khoi_tao_ports(void);
void khoi_tao_ADC(void);
unsigned int doc_ADC(void);
void main(void)
{
khoi_tao_ports();
khoi_tao_serial();
khoi_tao_ADC();
while(1) //vong lap chinh
{
temp=~doc_ADC();
temp=380*(temp/1024); //Vref=3.8V
//10mV ung voi 1 do C
printf("%i\n\r",temp);
delay_ms(100); //cap nhat du lieu sau 100ms
}
}
unsigned int doc_ADC(void)
{
unsigned int value;
ADCSRA = ADCSRA | 0x40; // bat dau chuyen doi
while( (ADCSRA & 0x10) == 0 ); // cho cho den khi chuyen doi //thanh cong
value = ADCW; //lay gia tri ADC
ADCSRA = ADCSRA | 0x10; // xoa co
return value;
}
void khoi_tao_serial(void) //9600/8/N/1
{
UCSRA=0x02;
UCSRB=0xD8;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;
}
void khoi_tao_ports(void)
{
DDRC = 0xFF; // PortC lam cong ra
PORTC = 0x00;
}
void khoi_tao_ADC(void)
{
ADMUX = 0x00; // chon kenh 0
ADMUX = ADMUX | 0x40; // chon dien ap nguong
ADMUX = ADMUX | 0x20;
ADCSRA = 0x07; // chon tan so thach anh
ADCSRA = ADCSRA | 0x80; // cho phep ADC hoat dong
}
cảm ơn nhiều.Never forget who you are!
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Con mẹ mày! Thằng bố mày!
Ngủ với nhau rồi đẻ ra mày!
Với bao nhiêu hy vọng, niềm tin....
Giờ mày ngu thế thì bố mẹ mày nghĩ thế nào???
Ít nhất thì phải biết lo thân chứ, hả con...
Bố...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 23:42 -
-
bởi nhathung1101Vì những sản phẩm loại này, tôi vứt đầy dưới gầm bàn.
Bạn đăng lên để bán hay gián tiếp quảng cáo cho họ???...-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 23:29 -
-
bởi nhathung1101Bạn thử kiểm nghiệm với thiết bị nào???
Tôi xưa nay ghét hàng TQ. Nhưng phải có bằng chứng.
Và tôi đang nghi ngờ bạn bán hàng TQ thì phải???
Nếu vậy là xong luôn!-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 23:20 -
-
bởi nhathung1101Còn không hiểu, đổ tội cho "CÔNG NHÂN LÀM ẨU", thì bạn tự xem bản thân nhé.
Nói láo là không được. Bằng chứng đâu?
Cho bạn 3 ngày để chứng minh. Nếu không khóa luồng để tránh thị phi.-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 23:13 -
-
bởi nhathung1101Nếu bạn làm việc nghiêm chỉnh với Bô Inh hay E Bớt, họ có công thức toàn diện cho cánh quạt của bạn.
Họ có công thức, còn bạn tìm ra hay không thì do bạn.
Còn ở VN, vẫn rất tự hào vì có em đang học lớp 10 đã tính...-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 23:10 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Đêm nay về, háo hức xem ae cãi chửi nhau thế nào?
Nhưng vắng hơn chùa Bà Đanh!!!
Thiếu tôi mất vui hay là các vị đang định làm gì???
Cảnh báo luôn: Những luồng vô bổ tôi sẽ xóa trong phút mốt, nếu không đáp...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:56 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Lại hạ cánh. Nhâm nhi chén rượu, đọc vài bài cho nó hài....
Nhưng chẳng thấy lão Phàm. Chắc lão lại bị bà í bắt ngủ chung rồi!!!
Thành thật chia buồn.-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:40 -
-
bởi dinhthuong80Video thô (vì chưa ghép lời và chữ phụ đề) test bô MPPT SR-DM120-W ( dùng cho pin LiPO4 24.6V/24Ah, công suất ra Led 120W max) : https://youtu.be/RbFzK_Za_r4?si=-ztHM755BncBVnx_
-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 17:00 -
-
bởi dinhthuong80Một số bộ/model Điều khiển sạc NLMT (MPPT) dùng cho đèn Led của Hãng SRNE không có chức năng bảo vệ nhiệt độ (bị lỗi không ngắt quá nhiệt: SR-EH120-W, SR-EH120-ES, SR-DM120-W, ...), do đó pin LiPO4 dùng nó có thể sạc hoặc xả bất kể nhiệt độ cao đến đâu, 75-200 độ C!
dinht...-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 16:53 -
Comment