2009년 12월 03일
avr128 온도센서 예제
#include <avr/io.h>
#include "delay.h"
#include <stdio.h>
void Putch(char);
int main()
{
char str[20];
char *pStr ;
int adc;
int temp;
ADMUX = 0X40; //ADC1 단극성 입력, ADC1
ADCSRA = 0XE7; //ADEN = 1, ADFR =1, ADSC =1, 128분주
delay_ms(5);
//통신
UCSR0A = 0x0;
UCSR0B = 0b00001000; //TXEN0 송신 인에이블
UCSR0C = 0b00000110; //비동기 모드 ,패리트(x),정지1비트,8비트,클럭 극성
// 0 0 00 011 0
UBRR0H = 0; //16MHz 일때 BAUD = 9600
UBRR0L = 103;
delay_ms(100);
while(1)
{
adc = (int) ADCL +((int)ADCH << 8); //ADC 변환값 읽기
temp = adc*100.0/204.8;
pStr = str;
sprintf(str, "%d\n\r" , temp);
while(*pStr)
{
Putch(*pStr++ ); //문자열 전송
}
delay_ms(5000);
}
}
void Putch(char data)
{
while(!(UCSR0A & 0x20)); //송신 버퍼 UDR0이 비어 있어 새로운 데이터를 받을
UDR0 = data; //준비가 되었을 때 set 됨.
}
#include "delay.h"
#include <stdio.h>
void Putch(char);
int main()
{
char str[20];
char *pStr ;
int adc;
int temp;
ADMUX = 0X40; //ADC1 단극성 입력, ADC1
ADCSRA = 0XE7; //ADEN = 1, ADFR =1, ADSC =1, 128분주
delay_ms(5);
//통신
UCSR0A = 0x0;
UCSR0B = 0b00001000; //TXEN0 송신 인에이블
UCSR0C = 0b00000110; //비동기 모드 ,패리트(x),정지1비트,8비트,클럭 극성
// 0 0 00 011 0
UBRR0H = 0; //16MHz 일때 BAUD = 9600
UBRR0L = 103;
delay_ms(100);
while(1)
{
adc = (int) ADCL +((int)ADCH << 8); //ADC 변환값 읽기
temp = adc*100.0/204.8;
pStr = str;
sprintf(str, "%d\n\r" , temp);
while(*pStr)
{
Putch(*pStr++ ); //문자열 전송
}
delay_ms(5000);
}
}
void Putch(char data)
{
while(!(UCSR0A & 0x20)); //송신 버퍼 UDR0이 비어 있어 새로운 데이터를 받을
UDR0 = data; //준비가 되었을 때 set 됨.
}
# by | 2009/12/03 09:48 | avr | 트랙백 | 덧글(0)




