Scopul lucrării: efectuarea unui program ce ar efectua operatii matematice simple cu ajutorul unei matrici de butoane 4x4 si a dispozitivului alfanumeric LCD 16x2 .
Mersul lucrarii :
1. Vom efectua calculele conform variantei personale.
2. Construim schema electrica de simulare in mediul Proteus.
Fig. 1. Schema de simulare in Proteus
3. Initializarea unui proiect nou intrun mediu de programare conform specificatiilor pentru placa de dezvoltare EasyAVR 6. Vom efectua programarea in mediul de programare CodeVision.
Microcontroler ATmega16
Frecvența de lucru 8MHz
4. Scriem programul in limbajul de programare C.
Listingul programului :
#include <mega16.h>
#include <alcd.h>
#include <delay.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main(void)
{
char caracter[13],rez[100]; double a,b,c;
lcd_init(16);
lcd_clear();
while(1)
{m:DDRA=0x0F; PORTA=0xF0;
if(PINA==0b01110000) //Prima coloana - in jos
{DDRA=0xF0; PORTA=0x0F;
if(PINA==0b00001110) //Prima coloana, Primul buton
{lcd_puts("0");
strcat(caracter,"0");
delay_ms(250);}
if(PINA==0b00001101) //Prima coloana, Al doilea buton - lipseste
{delay_ms(250);}
if(PINA==0b00001011) // Prima coloana, Al treilea buton
{lcd_puts("1");
strcat(caracter,"1");
delay_ms(250);
}
if(PINA==0b00000111) // Prima coloana, Al patrulea buton
{lcd_puts("=");
goto rezultat;
delay_ms(250);
}
}
//Trecem la coloana a doua
if(PINA==0b10110000) //A doua coloana - in jos
{DDRA=0xF0; PORTA=0x0F;
if(PINA==0b00001110) //A doua coloana, Primul buton
{lcd_puts("8");
strcat(caracter,"8");
delay_ms(250);}
if(PINA==0b00001101) //A doua coloana, Al doilea buton
{lcd_puts("0");
strcat(caracter,"0");
delay_ms(250);}
if(PINA==0b00001011) //A doua coloana, Al treilea buton
{lcd_puts("9");
strcat(caracter,"9");
delay_ms(250);}
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.