Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Делимся исходными кодами

Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Сообщение Radioded » 04 янв 2009, 03:49

Начнём-с, для затравки библиотека функций для работы с дисплеем 16x2 на контроллере HD44780. Изначально код писался под WinAVR.
Вот сам код, или качайте прикреплённый файл lcd.h:

Код: Выделить всё
#define cbi(reg, bit) (reg&=~(1<<bit))
#define sbi(reg, bit) (reg|= (1<<bit))

#define LCDPORT PORTC
#define LCDDDR DDRC
#define RS 0
#define E 1


#define RS_0 cbi(LCDPORT,RS)
#define RS_1 sbi(LCDPORT,RS)
#define E_0 cbi(LCDPORT,E)
#define E_1 sbi(LCDPORT,E)

void clearlcd(void);
void lcddata(unsigned char temp);
void lcdcmd(unsigned char temp);
void showstr(unsigned char *s);
void shiftleft(void);
void shiftright(void);
void home(void);

const unsigned char lcdaddr[4] = {0X80, 0XC0, 0X94, 0XD4};

void setlcdposition(unsigned char row, unsigned char col){

   lcdcmd(lcdaddr[row-1] + col);
   
}

void lcdcmd(unsigned char temp){
   
   LCDPORT = (temp & 0xF0);
   RS_0;      // command
   E_1;
   _delay_us(2);
   E_0;

   LCDPORT = ((temp & 0x0F) << 4);
   RS_0;      // command
   E_1;
   _delay_us(2);
   E_0;
   
   _delay_ms(1);
}

void lcddata(unsigned char temp){
   
   LCDPORT = (temp & 0xF0);
   RS_1;      // data
   E_1;
   _delay_us(2);
   E_0;
   
   LCDPORT = ((temp & 0x0F) << 4);
   RS_1;      // data
   E_1;
   _delay_us(2);
   E_0;
   
   _delay_us(50);
}

void lcdinit(void){

   PORTC = 0x00;
   DDRC = 0b11110011;    // output
   _delay_ms(60);

   lcdcmd(0x30);      
   _delay_ms(5);
   
   lcdcmd(0x30);      
   _delay_us(200);

   lcdcmd(0x30);      
   _delay_us(200);
   
   lcdcmd(0x02);      // 4bit mode

   lcdcmd(0x02);      // 4bit mode

   lcdcmd(0x28);       // 4 bit, 2 lines, 5*7 font
   
   lcdcmd(0x0C);      // cursor OFF, display ON

   lcdcmd(0x06);      // -> inc
   
   clearlcd();
}

void clearlcd(void){
   lcdcmd(0x01);    // clear LCD
   _delay_ms(3);   // max 1.53mS
}

void home(void){
   lcdcmd(0x02);    
   _delay_ms(3);   // max 1.53mS
}

void secondline(void){

   lcdcmd(0xC0);
   _delay_ms(3);

}
void shiftleft(void){
   lcdcmd(0x04);
}

void shiftright(void){
   lcdcmd(0x06);
}

void showstr(unsigned char *s){
  while(*s != 0) lcddata(*s++);
  _delay_ms(1);
}


Пример использования функций из библиотеки:
Код: Выделить всё
#include <avr/io.h>
#define F_CPU 1000000
#include <util/delay.h>
#include <avr/interrupt.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#include <lcd.h>

char word[]="Hello";
char banner[]="radioded.ru";
int main (void) {

   lcdinit();
   clearlcd();
   showstr(word);
   secondline();
   showstr(banner);

}
Аватара пользователя
Radioded
Site Admin
 
Сообщения: 180
Зарегистрирован: 07 ноя 2008, 02:47
Откуда: Москва

Re: Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Сообщение sanekerfort » 30 мар 2009, 07:31

Спасибо, очень пригодилось. Простенько и понятно. То что надо для простых проектов, где надо только выводить на экран, без излишних заморочек.
sanekerfort
 
Сообщения: 1
Зарегистрирован: 30 мар 2009, 06:50

Re: Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Сообщение gr_JAVA » 06 мар 2010, 19:23

Это исходники для подключения дисплея по 4-проводной или 8-проводной линии?
gr_JAVA
 
Сообщения: 1
Зарегистрирован: 06 мар 2010, 19:20

Re: Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Сообщение Radioded » 14 мар 2010, 18:14

Исходники для подключения дисплея HD44780 по 4-проводной линии.
Аватара пользователя
Radioded
Site Admin
 
Сообщения: 180
Зарегистрирован: 07 ноя 2008, 02:47
Откуда: Москва

Re: Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Сообщение begun » 11 апр 2010, 13:34

Здравствуйте!
Можки у кого нибудь есть то же самое на CVAVR ?
у меня проблема подключения LCD на разные пины разных портов.
begun
 
Сообщения: 1
Зарегистрирован: 11 апр 2010, 13:30

Re: Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Сообщение asad » 05 окт 2014, 00:12

А где скачать LCD.h судя по демке все просто но в студии6 исходник выдает ошибки.
asad
 
Сообщения: 1
Зарегистрирован: 04 окт 2014, 23:38

Re: Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Сообщение SuperVnuk » 07 окт 2014, 20:00

А где скачать LCD.h судя по демке все просто но в студии6 исходник выдает ошибки.

под WinAvr

Этот код писался только для него.
SuperVnuk
 
Сообщения: 1
Зарегистрирован: 07 окт 2014, 19:41

Re: Библиотека для работы с дисплеем 16*2 на Си под WinAVR

Сообщение Radioded » 15 ноя 2016, 22:27

Прикрепляю сам файл библиотеки lcd.h
Вложения
lcd.rar
Библиотека на СИ для работы с дисплеями на контроллере HD44780
(668 байт) Скачиваний: 10
Аватара пользователя
Radioded
Site Admin
 
Сообщения: 180
Зарегистрирован: 07 ноя 2008, 02:47
Откуда: Москва


Вернуться в Исходники



Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot]