Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Program2.c
- *
- * Created: 2019-05-19 11:49:13
- * Author : oem1
- */
- #define F_CPU 16000000L
- #include <avr/io.h>
- #include <util/delay.h>
- void InicjalizacjaLCD();
- void InicjalizacjaADC();
- void PomiarADC(void);
- void WyswietlanieLCD(char*, int8_t);
- void ZapisLCD(int8_t);
- void Wyswietlanie_nizej(char*, int8_t);
- void przesuwanie(int8_t);
- void Znak(const char*, int8_t);
- char napiecie[4] = "U = ";
- int8_t napjedascii = 0x30;
- char kropka[1] = ".";
- int8_t napdziesascii = 0x30;
- int8_t napsetascii = 0x30;
- char napieciee[4] = " [V]";
- const char kod[8] = {0b11111,
- 0b10101,
- 0b11111,
- 0b11011,
- 0b11011,
- 0b01110,
- 0b10001,
- 0b11111};
- int main(void)
- {
- InicjalizacjaLCD();
- InicjalizacjaADC();
- PomiarADC();
- WyswietlanieLCD(napiecie, 4);
- ZapisLCD(napjedascii);
- WyswietlanieLCD(kropka, 1);
- ZapisLCD(napdziesascii);
- ZapisLCD(napsetascii);
- WyswietlanieLCD(napieciee, 4);
- for(;;);
- }
- void InicjalizacjaLCD()
- {
- DDRB = 0xff;
- DDRA |= (1<<PA4)|(1<<PA6);
- PORTB = (PORTB & 0x0F);
- PORTA &= ~(1<<PA4);
- PORTA &= ~(1<<PA6);
- _delay_ms(40);
- PORTA |= (1<<PA6);
- PORTB = 0b00110000;
- PORTA &= ~(1<<PA6);
- _delay_ms(4.1);
- PORTA |= (1<<PA6);
- PORTA &= ~(1<<PA6);
- _delay_us(100);
- PORTA |= (1<<PA6);
- PORTA &= ~(1<<PA6);
- _delay_us(100);
- PORTA |= (1<<PA6);
- PORTB &= ~(1<<PB4);
- PORTA &= ~(1<<PA6);
- ZapisLCD(0b00101000);
- ZapisLCD(0b00001111);
- ZapisLCD(1);
- _delay_ms(1.64);
- ZapisLCD(0b00000110);
- }
- void WyswietlanieLCD(char* co, int8_t ile)
- {
- int8_t k=0;
- PORTA |= (1<<PA4);
- while(k<ile)
- {
- ZapisLCD(co[k]);
- k++;
- }
- }
- /*void Wyswietlanie_nizej(char* co,int8_t ile)
- {
- int8_t k=0;
- PORTA &= ~(1<<PA4);
- ZapisLCD(0b11000000);
- PORTA |= (1<<PA4);
- while(k<ile)
- {
- ZapisLCD(napiss[k]);
- k++;
- }
- } */
- void ZapisLCD(int8_t bajt)
- {
- PORTA |= (1<<PA6);
- PORTB = (bajt& 0xf0)|(PORTB & 0x0f);
- PORTA &= ~(1<<PA6);
- asm volatile("nop");
- PORTA |= (1<<PA6);
- PORTB = ((bajt& 0x0f)<<4)|(PORTB & 0x0f);
- PORTA &= ~(1<<PA6);
- _delay_us(40);
- }
- void przesuwanie(int8_t ile)
- {
- int8_t i=0;
- int8_t k=0;
- PORTA &= ~(1<<PA4);
- while(i<ile)
- {
- ZapisLCD(0b00011100);
- _delay_ms(250);
- i++;
- }
- while (k<ile)
- {
- ZapisLCD(0b00011000);
- _delay_ms(250);
- k++;
- }
- PORTA |= (1<<PA4);
- }
- void Znak(const char *kod, int8_t AAA)
- {
- int8_t k;
- PORTA &= ~(1<<PA4);
- ZapisLCD((0x40)|(AAA<<3));
- PORTA |= (1<<PA4);
- _delay_us(40);
- for (k=0; k<8; k++) ZapisLCD(kod[k]);
- PORTA &= ~(1<<PA4);
- ZapisLCD (0x80);
- PORTA |= (1<<PA4);
- _delay_us(40);
- }
- void InicjalizacjaADC()
- {
- DDRA &= ~(1<<PA0);
- ADMUX = (1<<REFS1) | (1<<REFS0);
- ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0);
- }
- void PomiarADC()
- {
- int16_t nap = 0;
- int8_t napjed = 0;
- int8_t napdzies = 0;
- int8_t napset = 0;
- ADCSRA |= (1<<ADSC);
- while(bit_is_set(ADCSRA, ADSC));
- nap=ADC/4;
- napjed= nap/100;
- napjedascii = napjed + 0x30;
- napdzies = (nap - napjed*100)/10;
- napdziesascii = napdzies + 0x30;
- napset = nap - napjed*100 - napdzies*10;
- napsetascii = napset + 0x30;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement