Giter Club home page Giter Club logo

avr_hd44780's Introduction

avr_hd44780

Данная библиотека написана для работы с LCD экранами, построенными на чипе HD44780 (или совместимого с ним).

Она позволяет работать как в 4bit режиме, так и в 8bit. Помимо этого, есть возможность не соблюдать порядок подключения контактов. Это будет полезно, если не хочется заново разводить плату, а на порту есть свободные контакты.

Библиотека была рождена в 2010 году. С того момента она лежала на диске. Придя в гости один из знакомых который занимался AVR попросил поделиться. На тот момент в коде не существовало комментариев. Что естественно вызвало у него кучу вопросов. Как пользоваться. Что это за переменная итд. В следствии этого были на скорую руку написаны комментарии. И так она лежала 7 лет.

Getting Started

Знакомый pumba88 сделал демнстрационный проект для Proteus. Он лежит в папке proteus_example.

Демо пример можно открыть в Atmel Studio. Файл проекта example.atsln (для atmega88)

Пример работы библиотеки в Proteus:

Alt text

Configuration

Настройки находятся в файле hd44780.h вверху. Настройте их под себя.

Библиотека состоит из двух файлов hd44780.h и hd44780.с

Написана так чтобы не занимать много памяти. И если какая-то возможность отключается в настройках. То код полностью убирается из памяти.

Пример работы с библиотекой находится в файле: example.c

Перед началом работы надо вызвать функцию hd44780_init(); она инициализирует LCD.

Доступные команды после инициализации:

HD44780_SEND_CHAR('a'); // Выводит символ на экран HD44780_SEND_CURSOR_POS(позиция x, позиция y); // Устанавливает курсор в указанную позицию. HD44780_SEND_CMD_CLEAR; // Очистка экрана HD44780_SEND_CMD_HOME; // Устанавливает курсор в начальную позицию. HD44780_SEND_CURSOR_LEFT; // Сдвигает курсор влево HD44780_SEND_CURSOR_RIGHT; // Сдвигает курсор вправо HD44780_SEND_DISPLAY_LEFT; // Двигает экран влево HD44780_SEND_DISPLAY_RIGHT; // Двигает экран вправо HD44780_SEND_DDRAM_ADDRESS(тут адрес); // Устанавливает DDRAM адрес (кто не знает что это, тому не нужно) HD44780_SEND_CGRAM_ADDRESS(тут адрес); // Устанавливает CGRAM адрес (кто не знает что это, тому не нужно)

// Управление экраном: // active – включен экран или нет (1 да / 0 нет) // cursor – показывать курсор или нет (1 да / 0 нет) // blink – мигать курсором или нет (1 да / 0 нет) HD44780_SEND_LCD_CTRL(active, cursor, blink);

// Позволяет отправить произвольную команду // cmd это команда которую вы отправляете // b указывает куда посылается команда. (1 - На вывод / 2 - системная ) HD44780_CMD_SEND_OPT(cmd, b);

В файле example.c есть пример, как вывести свой собственный символ.

#include <stdlib.h>
#include "hd44780.h"


// Вывод строки
void lcd_puts(const char *s)
{
    register char c;

    while ( (c = *s++) ) {
        HD44780_SEND_CHAR(c);
    }

}


int main(void)
{  

	// Инициализируем экран
	hd44780_init();

	// Устанавливаем с какой позиции будем печатать
	HD44780_SEND_CURSOR_POS(0, 0);

	// Выводим всю фразу
	lcd_puts("Counter");

	// Если нужно вывести только 1 символ то можно так:
	// HD44780_SEND_CHAR('C');

	
	// ------------------------------------------------
	// Пример как вывести произвольный символ	
	// ------------------------------------------------

	// Выбираем в CGRAM адрес 0x08
	HD44780_SEND_CGRAM_ADDRESS(0x08);

	// Далее передаем наш символ
	HD44780_CMD_SEND_OPT(0b00000001, 1); 
	HD44780_CMD_SEND_OPT(0b00000010, 1); 
	HD44780_CMD_SEND_OPT(0b00000100, 1); 
	HD44780_CMD_SEND_OPT(0b00001000, 1); 
	HD44780_CMD_SEND_OPT(0b00011111, 1); 
	HD44780_CMD_SEND_OPT(0b00000010, 1); 
	HD44780_CMD_SEND_OPT(0b00000100, 1); 
	HD44780_CMD_SEND_OPT(0b00001000, 1); 
	HD44780_CMD_SEND_OPT(0b00010000, 1); 

	// Указываем позицию в которую выводить символ
	HD44780_SEND_DDRAM_ADDRESS(7);

	// Выводим на экран символ что мы ввели
	HD44780_CMD_SEND_OPT(0b00000001, 1); 

	// ------------------------------------------------
	
	

	// Выводит счетчик
	
	unsigned int i=0;
	char buf[20];

	for( ; ; ) {

		// Устанавливаем курсор на позицию с какой печатать будем
		HD44780_SEND_CURSOR_POS(1, 0); // Вторая строчка и 0 позиция

		// Число в строку превращаем
		itoa(i, buf, 10);
	
		// Выводим строчку
		lcd_puts(buf);

		i++;
	}
	

	return 0;
}

Built With

Authors

  • Kirill Pershin - Initial work - GnumBix

See also the list of contributors who participated in this project.

License

This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details

avr_hd44780's People

Contributors

gnumbix avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.