-
Data: 2012-03-31 10:08:10
Temat: pierwsze początki z winavr
Od: "janek" <t...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Witam,
zaczynam zabawę z avrstudio4 , znalazlem na elektrodzie program obsługi lcd
i mam kłopot.
Potrafię wyświetlić tekst, ale jak wyświetlić zmienną a ?
Listing poniżej:
----------------------------------------------------
---------------------------------
#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
//Tu należy zdefiniować piny , używane do sterowania wyśw. LCD
//Sygnał R/W podpięty na stałe do GND
#define RSPIN PC1 //numer bitu dla linii RS
#define EPIN PC0
#define D4PIN PB0
#define D5PIN PD7
#define D6PIN PD6
#define D7PIN PD5
#define RSPORT PORTC //port do którego podłączono linię RS
#define EPORT PORTC
#define D4PORT PORTB
#define D5PORT PORTD
#define D6PORT PORTD
#define D7PORT PORTD
#define RSDDR DDRC //port konfiguracyjny linii RS
#define EDDR DDRC
#define D4DDR DDRB
#define D5DDR DDRD
#define D6DDR DDRD
#define D7DDR DDRD
//koniec definicji pinów LCD
//Takie sobie uproszczenia ;)
#define SET_D4 D4PORT|=(1<<D4PIN)
#define SET_D5 D5PORT|=(1<<D5PIN)
#define SET_D6 D6PORT|=(1<<D6PIN)
#define SET_D7 D7PORT|=(1<<D7PIN)
#define CLR_D4 D4PORT&=~(1<<D4PIN)
#define CLR_D5 D5PORT&=~(1<<D5PIN)
#define CLR_D6 D6PORT&=~(1<<D6PIN)
#define CLR_D7 D7PORT&=~(1<<D7PIN)
#define SET_E EPORT|=(1<<EPIN)
#define CLR_E EPORT&=~(1<<EPIN)
#define SET_RS RSPORT|=(1<<RSPIN)
#define CLR_RS RSPORT&=~(1<<RSPIN)
#define CLRDISP 0x01
#define HOMEDISP 0x02
//koniec uproszczeń
void LCDresetdata(void) //wyzeruj szynę danych LCD
{
CLR_D4;
CLR_D5;
CLR_D6;
CLR_D7;
}
void LCDwrite(char d) //zapis bajtu do LCD
{
LCDresetdata();
if(d & 0x10){SET_D4;}
if(d & 0x20){SET_D5;}
if(d & 0x40){SET_D6;}
if(d & 0x80){SET_D7;}
SET_E;CLR_E;
LCDresetdata();
if(d & 0x01){SET_D4;}
if(d & 0x02){SET_D5;}
if(d & 0x04){SET_D6;}
if(d & 0x08){SET_D7;}
SET_E;CLR_E;
_delay_ms(2);
}
void LCDconfigIO(void) //wszystkie piny do których podłączony jest LCD jako
wyjście
{
RSDDR|=(1<<RSPIN);EDDR|=(1<<EPIN);D4DDR|=(1<<D4PIN);
D5DDR|=(1<<D5PIN);D6DDR|=(1<<D6PIN);D7DDR|=(1<<D7PIN
);
}
void LCDcmd(char d) //Wyślij komendę do LCD
{
CLR_RS;
LCDwrite(d);
}
void LCDchr(char d) //Wyślij 1 znak do LCD
{
SET_RS;
LCDwrite(d);
}
void LCDinit(void) //inicjalizacja LCD
{
LCDconfigIO();
CLR_RS;
CLR_E;
_delay_ms(20);
CLR_D7;
CLR_D6;
SET_D4;
SET_D5;
unsigned char i;
for(i=0;i<3;i++) {SET_E;CLR_E;_delay_ms(5);}
CLR_D4;
SET_E;
CLR_E;
_delay_ms(5);
LCDcmd(0x28); //function set - interface=4 bit,line=2,font=5x7
LCDcmd(0x0c); //display ctrl - display on
LCDcmd(0x06); //entry mode set - increment
LCDcmd(0x01); //clear display
}
//wyczyść wyśw.
void LCDcls(void) {LCDcmd(CLRDISP);}
//ustaw kursor na pozycji 0,0
void LCDhome(void) {LCDcmd(HOMEDISP);}
//wyślij tekst z RAM na wyśw.
void LCDtext(char *txt) {while(*txt) {LCDchr(*txt++);}}
//umieść kursor na pozycji x,y - brak kontroli dla x i y
void LCDxy(char x,char y)
{
unsigned char com=0x80;
com|=(x|(y<<6));
LCDcmd(com);
}
// program główny
int main(void)
{
LCDinit();
while(1)
{
unsigned char a=4;
_delay_ms(300);
LCDxy(0,0);
LCDtext("ff");
_delay_ms(300);
LCDcls();
}
return 0;
}
Następne wpisy z tego wątku
- 31.03.12 10:35 Piotrek_P
- 31.03.12 12:55 Grzegorz Niemirowski
- 31.03.12 15:16 Mario
- 31.03.12 15:30 Waldemar Krzok
- 31.03.12 15:36 Piotrek_P
- 31.03.12 16:37 Mario
- 31.03.12 16:40 Mario
- 31.03.12 16:43 Mario
- 31.03.12 17:09 Waldemar Krzok
- 03.04.12 10:14 Adam Wysocki
Najnowsze wątki z tej grupy
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
- jak szybko plynie prad
- Płytki Milkv-Duo
- Światłowód między budynkami
- POtrzebny bufor 3.3<>5V, jedonkieruowy, trójstanowy, wąski
- retro
- Bezprzewodowe polączenie Windows z projektorem
- rozklejanie obudowy
- Prośba o identyfikację komponentu
- Smart gniazdko straciło na zasięgu wifi?
- Smart gniazdko straciło zasięg wifi?
- nurtuje mnie
- dziwna sprawa...
Najnowsze wątki
- 2024-11-08 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Szczecin => Key Account Manager (ERP) <=
- 2024-11-08 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-08 Wrocław => Senior PHP Symfony Developer <=
- 2024-11-08 Warszawa => QA Engineer <=
- 2024-11-08 Warszawa => QA Inżynier <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Gdańsk => Software .Net Developer <=
- 2024-11-08 Akumulator Hyundai
- 2024-11-08 Warszawa => Manager/Specialist e-commerce (B2C) <=
- 2024-11-08 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-08 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-08 znaj podstawe
- 2024-11-08 Chrzanów => Specjalista ds. public relations <=