#include <mega8.h> #include <delay.h> #include <stdio.h> #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> #define ADC_VREF_TYPE 0x40// Опорна напруга АЦП з ножки AVCC // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } // global variables float adc_code, voltage; unsigned char string[4];//масив знаків для виводу на дисплей void main(void) { // ADC initialization // ADC Clock frequency: 250,000 kHz // ADC Voltage Reference: AVCC pin ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x85; // LCD module initialization lcd_init(16);// Дисплей на 16 символів lcd_clear();// Очищаємо дисплей lcd_gotoxy(0,0);// Ставим курсор на 0 знак та 0 стрічку lcd_putsf(" LCD voltmeter ");//Вивод повідомлення на нульову стрічку (першу) lcd_gotoxy(0,1);// Ставим курсор на 0 знак та 0 стрічку lcd_putsf(" Voltage: V ");//Вивод повідомлення на нульову стрічку (першу) delay_ms(100); while (1) { adc_code=read_adc(0);// Зчитуємо результат АЦП voltage=(adc_code*5)/1024;// Перетворення в напругу sprintf(string, "%.2f",voltage);//формуємо стрінг із змінної "voltage" //типу float з двома знаками після коми lcd_gotoxy(9,1); lcd_puts(string);// Виводимо значення напруги delay_ms(100); }; }
пʼятницю, 16 січня 2015 р.
Аналого-цифровий перетворювач, вольтметр на базі мікроконтролера ADC Atmega8 CodeVision AVR
Підписатися на:
Дописати коментарі
(
Atom
)
Немає коментарів :
Дописати коментар