-
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
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- Szukam: czujnik ruchu z możliwością zaączenia na stałe
- kabelek - kynar ?
- Podnieść masę o 0.6V
- Moduł BT BLE 5.0
- Pomiar amplitudy w zegarku mechanicznym
- ale zawziętość i cierpliwość
- Chiński elektrolizer tester wody
- Dzisiaj Bentlejem czyli przybieżeli sześciu Króli do Rysia na kasie
- ciekawy układ magnetofonu
- Mikroskop 3D
- Jak być bezpiecznym z Li-Ion?
Najnowsze wątki
- 2025-01-04 Wrocław => Application Security Engineer <=
- 2025-01-04 Chrzanów => Specjalista ds. public relations <=
- 2025-01-04 Katowice => Key Account Manager (ERP) <=
- 2025-01-03 Problem z odczytem karty CF
- 2025-01-03 Jazda z Warszawy do Krakowa teslą
- 2025-01-03 Wrocław => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-01-03 Warszawa => International Freight Forwarder <=
- 2025-01-03 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-01-03 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-03 Beztłumikowcy
- 2025-01-03 Lublin => Delphi Programmer <=
- 2025-01-03 Lublin => Programista Delphi <=
- 2025-01-03 [OT] nowe osoby w grupach?
- 2025-01-03 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-01-03 Warszawa => Developer .NET (mid) <=