Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <lcd.h>
- #ifndef __PGMSPACE_H_
- # include <avr/pgmspace.h>
- #endif
- // Zerowanie wyświetlacza
- void
- lcd_clear(void);
- // Przesunięcie kursora
- void
- lcd_home(void);
- // Inicjalizacja wyświetlacza 5x7, 2 wiersze
- void
- init_lcd(void);
- // Przepisanie tekstu (koniec = 0xFF) z pamięci programu na wyświetlacz
- // Funkcja dopuszcza wykorzystanie znaku o kodzie 0x00
- // _adres - adres tekstu w pam. FLASH
- void
- disp_txt_P(const char* _adres);
- // Przepisanie tekstu (koniec = 0x00) z pamięci danych na wyświetlacz
- // _adres - adres tekstu w pam. RAM
- void
- disp_txt_D(char* _adres);
- //Implementacja
- void
- lcd_clear(void)
- {
- pisz_com(0x01);
- }
- void
- lcd_home(void)
- {
- pisz_com(0x02);
- }
- void
- init_lcd(void)
- {
- MCUCR = _BV(SRE) |_BV(SRW10);
- XMCRA = _BV(SRW00) |_BV(SRW01) |_BV(SRW11);
- MMnet104_CONF = 0b00010011;
- _delay_ms(15);
- COMM_LCD = 0x30;
- _delay_ms(5);
- COMM_LCD = 0x30;
- _delay_ms(0.2);
- COMM_LCD = 0x30;
- _delay_ms(30);
- COMM_LCD = 0x38; //Słowo danych 8-bitów, dwa wiersze, znak 7x5
- //pikseli
- test_bf();
- pisz_com(0x0C); //Włączenie wyświetlacza, bez kursora, bez
- //migotania
- lcd_clear();
- pisz_com(0x06); //Wpisywanie znaków od lewej, autoinkrementacja
- lcd_home();
- }
- void
- disp_txt_P(const char* _adres)
- {
- volatile uint8_t al;
- for (int i = 0; i<16; i++)
- {
- al = pgm_read_byte(&_adres[i]);
- if (al == 0xFF) break;
- pisz_ws(al);
- }
- }
- void
- disp_txt_D(char* _adres)
- {
- volatile uint8_t al;
- for (int i = 0; i<16; i++)
- {
- al = _adres[i];
- if (al == 0x00) break;
- pisz_ws(al);
- }
- }
- uint16_t read_adc(){
- ADCSRA |= _BV(ADIF);
- ADCSRA |= _BV(ADSC);
- while(!(ADCSRA * _BV(ADIF)));
- volatile uint8_t c = ADCL;
- return ADCH << 8 | c;
- }
- int main(void)
- {
- init_lcd();
- lcd_home();
- ADMUX = 0b01000011;
- ADCSRA = 0b10001111;
- char w[16] = {};
- char t[16] = {};
- while(1)
- {
- lcd_clear();
- uint16_t v = read_adc();
- sprintf(w,"ADC=%x", v);
- disp_txt_D(w);
- float c = v * (float)5/ (float)1024 * 10;
- sprintf(t,"Vin=%d.%dV", (int)c/10, (int)c%10);
- pisz_com(0xc2);
- disp_txt_D(t);
- _delay_ms(200);
- //TODO:: Please write your application code
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement