-
Path: news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!
news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.gigane
ws.com!nntp.giganews.com!postnews.google.com!w30g2000yqw.googlegroups.com!not-f
or-mail
From: Jan Górski <g...@o...pl>
Newsgroups: pl.misc.elektronika
Subject: Obsługa LCD na HD44780 w C (WinAVR)
Date: Mon, 19 Jul 2010 06:13:18 -0700 (PDT)
Organization: http://groups.google.com
Lines: 122
Message-ID: <e...@w...googlegroups.com>
NNTP-Posting-Host: 91.189.0.210
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1279545198 13082 127.0.0.1 (19 Jul 2010 13:13:18 GMT)
X-Complaints-To: g...@g...com
NNTP-Posting-Date: Mon, 19 Jul 2010 13:13:18 +0000 (UTC)
Complaints-To: g...@g...com
Injection-Info: w30g2000yqw.googlegroups.com; posting-host=91.189.0.210;
posting-account=BcK0kQoAAAClcQzNiDPwy7W9dMNJ4-fa
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR
1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR
3.5.30729; InfoPath.2),gzip(gfe)
Xref: news-archive.icm.edu.pl pl.misc.elektronika:592303
[ ukryj nagłówki ]Witam. Napisałem sterownik wyświetlacza wspomagając się jakąś
zagramaniczną książką w C, używając kombajnu WinAVR + AVR Studio.
Kompiluje się bez błędów. Natomiast nie działa jak powinno, w
symulacji wyświetla bzdury, w "realu" za to nic.
Obsługa jest 4 bitowa. Schemat wyprowadzeń w/g płytki testowej and-
tech (R/W zwarte do masy w tym schemacie, a pin0 - podświetlenie) :
http://www.and-tech.pl/EvB4.3/Instrukcja_EvB_4.3.pdf
Symulowałem w Hapsim z ustawieniem 4 bitowym (dobrym?):
Data : PORTA, HighNibble:4-7, LowNibble:4-7
EN : PORTA3
Read/Write : PORTA0
Select Pin: PORTA2
KOD : -----------------------------
#include <avr/io.h>
#include <util/delay.h>
// F_CPU zdefiniowane w opcjach projektu na 16MHz
#define LCD_DataPort PORTA
#define LCD_DataDR DDRA
#define LCD_DataPin PINA
#define LCD_RS 2
#define LCD_RW 0
#define LCD_EN 3
void delay_us(int d) {
_delay_us(d);
}
void delay_ms(int d) {
_delay_ms(d);
}
void lcdCommand(unsigned char cmnd) {
LCD_DataPort = (LCD_DataPort & 0x0F) | (cmnd & 0xF0);
LCD_DataPort &= ~ (1<<LCD_RS); // 0 -> command
LCD_DataPort &= ~ (1<<LCD_RW);
//
LCD_DataPort |= ~ (1<<LCD_EN);
delay_us(1);
LCD_DataPort &= ~ (1<<LCD_EN);
delay_us(20);
LCD_DataPort = (LCD_DataPort & 0x0F) | (cmnd << 4);
//
LCD_DataPort |= ~ (1<<LCD_EN);
delay_us(1);
LCD_DataPort &= ~ (1<<LCD_EN);
}
void lcdData(unsigned char data) {
LCD_DataPort = (LCD_DataPort & 0x0F) | (data & 0xF0);
LCD_DataPort |= (1<<LCD_RS); // 1 -> data
LCD_DataPort &= ~ (1<<LCD_RW); // 0 -> write
LCD_DataPort |= (1<<LCD_EN); // H to L pulse
delay_us(1);
LCD_DataPort &= ~ (1<<LCD_EN);
LCD_DataPort = (LCD_DataPort & 0x0F) | (data << 4);
LCD_DataPort |= (1<<LCD_EN); // H to L pulse
delay_us(1);
LCD_DataPort &= ~ (1<<LCD_EN);
}
void lcd_init() {
LCD_DataDR = 0xFF;
LCD_DataPort &= ~(1<<LCD_EN);
delay_us(2000);
lcdCommand(0x33);
delay_us(100);
lcdCommand(0x32);
delay_us(100);
lcdCommand(0x28);
delay_us(100);
lcdCommand(0x0e);
delay_us(100);
lcdCommand(0x01);
delay_us(2000);
lcdCommand(0x06);
delay_us(100);
}
void lcd_print( char *str) {
unsigned char i=0;
while(str[i]!=0) {
lcdData(str[i]);
i++;
}
}
int main(void) {
lcd_init();
while(1) {
lcd_print("a");
delay_ms(10);
}
return 0;
}
----------------------------------------
Co zrobiłem źle ? Co powinienem poprawić ? Dopiero zaczynam z tym
zabawę i przyjemniej się uczyć "z nauczycielem", niż bez, bo szybciej.
Patrzyłem na ten kod i sam chyba za łatwo nie znajdę błędu. Dzięki za
pomoc.
Następne wpisy z tego wątku
- 20.07.10 06:38 Jan Górski
Najnowsze wątki z tej grupy
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
- jaki zasilacz laboratoryjny
- jaki zasilacz laboratoryjny
Najnowsze wątki
- 2025-02-27 potwierdzenie notarialne dokumentow tozsamosci ze zdjeciem
- 2025-02-27 Warszawa => Account Manager - Sprzedaż Usług Rekrutacyjnych <=
- 2025-02-27 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-27 Warszawa => Mid IT Recruiter <=
- 2025-02-27 Warszawa => Expert Recruiter 360 <=
- 2025-02-27 Warszawa => Junior Rekruter <=
- 2025-02-27 China-Kraków => Key Account Manager IT <=
- 2025-02-27 Warszawa => Sales Assistant <=
- 2025-02-27 Kraków => Frontend Vue Developer <=
- 2025-02-27 Re: Zwolniony z IKEA za "wąty" przeciw firmowej promocji LGBT-IQ+ przywrócony do pracy - SN odrzucił kasacje (sygn. akt I PSK 62/24)
- 2025-02-27 Częstochowa => Manager ds. produktu <=
- 2025-02-27 Warszawa => Business Systems Analyst <=
- 2025-02-27 Nagranie poglądowe
- 2025-02-26 Zasilacz USB na ścianę.
- 2025-02-26 Błonie => Specjalista ds. public relations <=