180 likes | 295 Views
Elektronski Fakultet u Nišu Katedra za elektroniku Predmet: Embeded sistemi. Ispis tekstualnih poruka na LED displeju. Mentor: prof.Dr. Mile Stojčev Studentni:Igor Stojanović 12777 Miloš Lazić 13166. Hardverska realizacija.
E N D
Elektronski Fakultet u Nišu Katedra za elektroniku Predmet: Embeded sistemi Ispis tekstualnih poruka na LED displeju Mentor: prof.Dr. Mile Stojčev Studentni:Igor Stojanović 12777 Miloš Lazić 13166
Hardverska realizacija • Princip kontrole jedne LED diode
Hardverska realizacija • 8x8 LED matrica
Hardverska realizacija • Primer ispisivanja slova
Hardverska realizacija • Talasnioblicisignalanaportovima PORTB i PORTD
Softverska realizacija • Algoritam glavnog koda
Softverska realizacija • Glavni program #include "funkcija.h" // uključvanjebibliotekefunkcija #include "slovo.h"// uključivanjebibliotekeslovo void main(){ short intstr[9];//definisanjebaferazasmeštanjeslova char prenos; short int *pr;//pokazivačnabaferstr short intust;//promenljivakoja se koristikaopokazivač //trenutnepozicija u baferustr short intind,mar;//markerikojidefinišiprogramskitok unsigned intwr[8]={0,0,0,0,0,0,0,0};// vektorzapamćenje //podatakakoji se prikazujenadispleju TRISB=0x00;//definisanjeporta b kaoizlazni TRISD=0x00;//definsanjeporta d kaoizlazni PORTB=0x00;//postavljanjeporta b nanulu PORTD=0x00;//postavljanjeporta d nanulu ANSELH=0;//definisanjeporta b kaodigitalni
Softverska realizacija ust= str; pr=wr; mar=0;//postavljanjemarkerana 0 kako bi se omogućila UART //komunikacijapriprvomprelaskukoda while(1) {//beskonačnapetlja ust=0; if(mar==0){ Usart_Init(19200);//inicijalizacija UART komunikacijena //brzinu 19200bps while((str[ust])!=46) {// ispitivanjedali je karakter //poslatpreko UART-a ‘.’ if(Usart_Data_Ready()) {//ispitivanjedali je primljen //karakter ust++;//inkrementiranjemarkerapozicije str[ust]=Usart_Read();//smeštanjeprihvaćenogpodatka u bafer Usart_Write(str[ust]);// slanjeprihvaćenogpodatkanatrag//na HyperTerminal
Softverska realizacija }}} ind=1;// postavljanjemarkeraindna 1 jercitanje //popunjenogbaferatrebapočetiod 1 pozicije mar=1;// postavljanjemarkera mar na 1 radionemogućavanja //ponovnogstartovanja UART komunikacijepriponovnom //izvršavanjuglavnogprograma u while petlji while(str[ind]!=46) {//čitanjekarakteraizbaferasvedok //se ne naidnjena ‘.’ prenos=str[ind];//nakončitanjasvakogpojedinačnog //karakterapoziva se funkcijazaprepoznavanjeslova slovo(prenos,pr);//funkcijazaprepoznavanjeslova ind++;//inkrementiranjemarkerapozicijezačitanjeiz //bafera }} }
Softverska realizacija • Algoritam funkcje za ispitivanje slova
Softverska realizacija • Kod funkcije za ispitivanje slova void slovo(char prenos,int pr) {//funkcija prihvata //pokazivač na promenljivu za pamćenje prikaza za displej, //pr,i pročitano slovo iz glavne funkcije switch(prenos) {//ispitivanje pročitanog slova i //pozivanje odgovarajuće funkcije za ispis slova case 'a': as(pr);break; case 'b': bs(pr);break; case 'c': cs(pr);break; case 'd': ds(pr);break; case 'e': es(pr);break; case 'f': fs(pr);break; case 'g': gs(pr);break; case 'h': hs(pr);break; case 'i': is(pr);break; case 'j': js(pr);break;
Softverska realizacija case 'k': ks(pr);break; case 'l': ls(pr);break; case 'm': ms(pr);break; case 'n': ns(pr);break; case 'o': os(pr);break; case 'p': ps(pr);break; case 'r': rs(pr);break; case 's': ss(pr);break; case 't': ts(pr);break; case 'u': us(pr);break; case 'v': vs(pr);break; case 'z': zs(pr);break; case ' ': space(pr);break; }}
Softverska realizacija • Algoritam funkcije za ispisivanje slova
Softverska realizacija • Kod funkcije za ispisivanje jednog slova //slovo a void as(int *pr){//funkcija koja ispisuje slovo na displeju unsigned int c[8];//definisanje konstante u kojoj se pamte //vektori slova unsigned int pom[8];//pomoćna promenljiva koja se koristi //za pomeranje karaktera na displeju short int i,j,k,l;//promenljive brojača //inicijalne vrednosti vektora slova c[0]=0x003C; c[1]=0x0042; c[2]=0x0042; c[3]=0x0042; c[4]=0x007E; c[5]=0x0042; c[6]=0x0042; c[7]=0x0042;
Softverska realizacija for(i=0;i<=7;i++) {//brojačpozicijapomerajakaraktera //nadispleju for(j=0;j<=7;j++) {//pomeranjesvakogkarakterazajedno //mestoulevo pom[j]=c[j] & 0x0100;//maskiranjepromenljiveradi //izdvajanjaprvogbita pom[j]= pom[j] >> 8;//pomeranjeza 8 mestaudesno *(pr+j)= *(pr+j) << 1; *(pr+j)= *(pr+j) | pom[j]; c[j]= c[j] << 1; } for(j=0;j<=100;j++) {//brojačkapetljazaosvežavanje //displeja l=0x01; for(k=0;k<=7;k++){ PORTD=0x00; PORTB=*(pr+k); PORTD=l; Delay_us(300); l= l << 1; }}//procedura je indetična zasvaslova, kaoizaslovo “A” PORTD=0x00; } return; }
Dodatne aplikacije • Aplikacija “Trougao” void main() { short int i,k; TRISB=0x00;// definisanje porta B kao izlazni TRISD=0x00;// definisanje porta D kao izlazni PORTB=0x00;//postavljanje inicijalnih vrednosti na port B PORTD=0x00;//postavljanje inicijalnih vrednosti na port D while(1) {// beskonačna petlja k=0x01; //promenljiva za izbor vrste PORTB=0x01; Delay_us(300); for(i=0;i<=7;i++){//petlja za osvežavanje vrsta PORTD=k; Delay_us(300); );// funkcija za kašnjenj radi izbegavanje //flicker efekta PORTD=0x00; PORTB=PORTB << 1;//pomeranje vrednsti porta B za jedno //mesto PORTB=PORTB | 0x01;//maskiranje bitova k=k << 1; }}}
Dodatne aplikacije • Aplikacija “Dijagonala” void main() { short int i,k; TRISB=0x00; //definisanje porta B kao izlazni TRISD=0x00; // definisanje porta D kao izlazni PORTB=0x00;//postavljanje inicijalnih vrednosti na port B PORTD=0x00;//postavljanje inicijalnih vrednosti na port D while(1){ //beskonačna petlja PORTB=0x01;//dodela početne vrednosti za port B k=0x01; //promenljiva za izbor vrste for(i=0;i<=7;i++){//petlja za osvežavanje vrsta PORTD=k; // dodela promenljive portu Delay_us(300);// funkcija za kašnjenj radi izbegavanje //flicker efekta PORTD=0x00; PORTB= PORTB << 1;// pomeranje vrednsti porta B za jedno //mesto k=k << 1;// pomeranje vrednosti k za jedno mesto }}}
Korišćena literatura • Dogan Ibrahim-Microcontroller Projects in C for the 8051 • Muhammad Ali Mazidi, Rolan D. Mckinlay, Danny Causey-PIC microcontroller and Embedded Systems • Barnet Cox & O.Cull- Embedded C Programming and the Microchip PIC • Mikroelektronika-UNI-DS3 razvojnisisitem,Korisničkouputstvo • Milan Verle-PIC kontroleri • PIC16F887, Datasheet- Dostupnonawww.microchip.com • ULN2308,Datasheet-Dostupno nawww.alldatasheet.com