Алгоритм работы программы

lab2.cсодержит программу, состоящую из функций, описанных в lcd_func.

Алгоритм lab2.c:

1. Установить порт А на вывод информации;

Установку выполняет функция init_port_a_out.

2. Инициализировать дисплей;

Инициализацию выполняет функция lcd_init. Функция построена по следующему алгоритму:

а. Выполнить действия, указанные в datasheet, для установки жки в рабочий режим;

б. Установить 4-х битный режим, инициализировать две строки и установить размер матрицы символа 5х8;

в. Включить дисплей.

г. Выбор направления ввода данных.

Все перечисленные шаги алгоритма выполняются при помощи функции lcd_put_byte, алгоритм которой подробно рассмотрен в п.3.

3. Вывести строку на дисплей;

Функция lcd_put_str:

а. Присвоить переменной i-й элемент строки;

б. Установить курсор на необходимую позицию при помощи функции lcd_gotoxy;

в. Вывести на экран i-й элемент строки при помощи функции lcd_put_byte;

г. Выполнить увеличение счетчика адреса курсора.

До тех пор, пока не будет достигнут конец строки.

Функция lcd_gotoxy:

a. Выполнить преобразование номера столбца и строки ячейки в адрес;

б. При помощи функции lcd_put_byte записать адрес в регистр комманд.

Функция lcd_put_byte:

a. Если дисплей в рабочем режиме, выполнить проверку флага занятости при помощи lcd_check. До сброса флага занятости переход к следующим действиям алгоритма не осуществляется;

б. Установить порт C на вывод информации при помощи init_port_c_out.

в. Выбрать, в какой из регистров(комманд, данных) будет производиться запись;

г. Записать старшую тетраду при помощи функции lcd_put_tetr;

д. Записать младшую тетраду при помощи функции lcd_put_tetr.

Функция lcd_put_tetr:

a. Установить Е в "1";

б. Установить тетраду на ножки порта C;

в. Установить Е в "0".

Функция lcd_check:

а. Установить порт С на вход с включением подтягивающих резисторов при помощи init_port_c_in;

б. Установить RW в "1";

в. Установить RS в "0";

г. Установить Е в "1";

д. Считать старшую тетраду;

е. Установить Е в "0";

ж. Установить Е в "1";

з. Установить Е в "0";

и. Если старший байт старшей тетрады не равен 0, вернуть "1", в противном случае - "0"

4. Выполнять цикл сдвига дисплея слева направо и справа налево.

a. При помощи lcd_put_byte сдвинуть экран направо;

б. При помощи lcd_put_byte сдвинуть экран налево;

Исходный код

Lab2.c

//Библиотека, содержащая функции для работы с жки

#include "lcd_func.h"

 

void main(void) {

//Установка порта а на вывод ифнормации

init_port_a_out();

//Инициализация дисплея

lcd_init();

//Запись строки

lcd_put_str("Pastushak Vasiliy KIP-S09");

//Сдвиг экрана справа налево и слева направо

lcd_repeat();

}