-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
From: "janek" <t...@w...pl>
Newsgroups: pl.misc.elektronika
Subject: pierwsze początki z winavr
Date: Sat, 31 Mar 2012 10:08:10 +0200
Organization: ICM, Uniwersytet Warszawski
Lines: 150
Message-ID: <jl6e18$301$1@news.icm.edu.pl>
NNTP-Posting-Host: 89-79-195-142.dynamic.chello.pl
Mime-Version: 1.0
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=original
Content-Transfer-Encoding: 8bit
X-Trace: news.icm.edu.pl 1333181288 3073 89.79.195.142 (31 Mar 2012 08:08:08 GMT)
X-Complaints-To: u...@n...icm.edu.pl
NNTP-Posting-Date: Sat, 31 Mar 2012 08:08:08 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
Xref: news-archive.icm.edu.pl pl.misc.elektronika:628538
[ ukryj 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
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
Najnowsze wątki
- 2024-11-25 Karty przedpłacone (podarunkowe) Google Play - pytanie do korzystających
- 2024-11-26 wina Tóska
- 2024-11-26 Rewolucja/Rewelacja!
- 2024-11-25 grupa ożyła ;)
- 2024-11-24 Być jak Clint
- 2024-11-24 Rura kanalizacja konceptu Franke = problem
- 2024-11-25 Wrocław => Lead Java EE Developer <=
- 2024-11-25 Warszawa => Business Development Manager - Network and Network Securit
- 2024-11-25 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-25 Lublin => Senior PHP Developer <=
- 2024-11-25 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-25 Warszawa => ECM Specialist / Consultant <=
- 2024-11-25 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-11-25 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-25 Lublin => Inżynier Serwisu Sprzętu Medycznego <=