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 Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi nguyendinhvanTheo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
Cách đơn giản...-
Channel: Điện thanh
hôm nay, 00:04 -
-
bởi Ng.Phuong.5Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
Mấy con...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 22:44 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
-
Channel: Điện tử công suất
Hôm qua, 19:02 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi tuyennhanChủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
-
Channel: Điện tử công suất
Hôm qua, 15:43 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi tuyennhanLoa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
-
Channel: Điện thanh
Hôm qua, 15:28 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi mèomướpDạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
-
Channel: Điện thanh
Hôm qua, 11:44 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi viettinhNó không phải cái loa rời. Chả nhẽ đèo thêm 2 con loa tép ngoài thì kỳ lắm....
-
Channel: Điện thanh
Hôm qua, 09:45 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi mèomướpDạ chú mua thêm loa tép nối tiếp qua con tụ rồi mắc vào cùng loa trung là được ạ...
-
Channel: Điện thanh
07-01-2025, 19:53 -
-
Trả lời cho Tìm datasheet linh kiện điện tử.bởi mèomướpDạ cháu hỏi bạn cháu thì bạn ấy trả lời như thế này ạ. Cháu cũng hông bít có đúng hông nữa ạ
Linh kiện điện tử với mã "943BA" và "W58BAL" là một loại cầu chì tự động (circuit breaker) do TE Connectivity sản...-
Channel: Điện tử dành cho người mới bắt đầu
07-01-2025, 19:50 -
-
bởi viettinhChuyện là mình mới đập hộp con loa kéo Sony SRS-XV900. Do khu vực mình k có sẵn hàng để trải nghiệm thực tế nên chỉ tham khảo các kênh revew online.
Mua về sử dụng thì thấy hơi buồn về chất âm, Mở max k to bằng cái loa kéo china, bass...-
Channel: Điện thanh
07-01-2025, 17:18 -
Comment