Реализация передачи данных на LCD –дисплей — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Реализация передачи данных на LCD –дисплей

2021-12-07 16
Реализация передачи данных на LCD –дисплей 0.00 из 5.00 0 оценок
Заказать работу

 

Работа с функцией sprintf, позволяющей в частности, отображать значения переменных вперемешку с выводом других символов. Все ниже написанное вытекло из изучения содержимого проектов в папке C:\cvavr\examples. Я объясню основу, то что удалось накопать так же в просторах сети.

Для начала немного описания функции sprintf:

Функция sprintf() (прототип содержится в файле stdio.h) обеспечивает форматированный вывод в строку. Ее можно записать в следующем формальном виде:

sрrintf ("управляющая строка", аргумент _1, аргумент _2,...);

Управляющая строка содержит компоненты трех типов: обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея); спецификации преобразования, каждая из которых вызывает вывод на экран очередного аргумента из последующего списка; управляющие символьные константы.

Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразование. Между знаком % и символом преобразования могут встречаться другие знаки в соответствии со следующим форматом:

% [признаки] [ширина_поля] [точность] [F|N|h|l|L] c_n

Все параметры в квадратных скобках не являются обязательными.

На месте параметра c_n (символ преобразования) могут быть записаны:

с - значением аргумента является символ;

d или i - значением аргумента является десятичное целое число;

е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23e+2;

Е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23E+2;

f - значением аргумента является вещественное десятичное число с плавающей точкой;

g (или G) - используется, как е или f, и исключает вывод незначащих нулей;

о - значением аргумента является восьмеричное целое число;

s - значением аргумента является строка символов (символы строки выводятся до тех пор, пока не встретится символ конца строки или же не будет, выведено число символов, заданное точностью);

u - значением аргумента является беззнаковое целое число;

х - значением аргумента является шестнадцатеричное целое число с цифрами 0,...,

9, а, b, с, d, е, f;

X - значением аргумента является шестнадцатеричное целое число с цифрами 0,...,

9, А, В, С, О, Е, F;

р - значением аргумента является указатель;

n - применяется в операциях форматирования.

Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции строки (отображаемой на экране), в которой записана спецификация %n.

 

Необязательные параметры в спецификации преобразования:

признак минус (-) указывает, что преобразованный параметр должен быть выровнен влево в своем поле;

признак плюс (+) требует вывода результата со знаком;

строка цифр, задающая минимальный размер поля (ширина поля). Здесь может так же использоваться символ *, который тоже позволяет задать минимальную ширину поля и точность представления выводимого числа;

точка (.), отделяющая размер поля от последующей строки цифр;

строка цифр, задающая максимальное число выводимых символов, или же количество цифр, выводимых справа от десятичной точки в значениях типов float или double (точность);

символ F, определяющий указатель типа far;

символ N, определяющий указатель типа near;

символ h, определяющий аргумент типа short int (используется вместе с символами преобразования d, i, о, u, х, Х);

символ l, указывающий, что соответствующий аргумент имеет тип long (в случае символов преобразования d, i, о, u, х, X) или double (в случае символов преобразования е, Е, f, g, G);

символ L, указывающий, что соответствующий аргумент имеет тип long double (используется вместе с символами преобразований е, Е, f, g, G);

символ #, который может встречаться перед символами преобразования g, f, е и перед символом х. В первом случае всегда будет выводиться десятичная точка, а во втором - префикс 0x перед соответствующим шестнадцатеричным числом.

Если после знака % записан не символ преобразования, то он выводится на экран. Таким образом, строка %% приводит к выводу на экран знака %.

Функция sprintf() использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы. Аргументами могут быть переменные, константы, выражения, вызовы функций; главное, чтобы их значения соответствовали заданной

спецификации.

При наличии ошибок, например, в числе аргументов или типе преобразования, результаты будут неверными.

Среди управляющих символьных констант наиболее часто используются следующие:

\а - для кратковременной подачи звукового сигнала;

\b - для перевода курсора влево на одну позицию;

\f - для подачи формата;

\n - для перехода на новую строку;

\r - для возврата каретки;

\t - горизонтальная табуляция;

\v - вертикальная табуляция;

\\ - вывод символа \;

\' - вывод символа ';

\" - вывод символа ";

\? - вывод символа?.

Например, в результате вызова функции:

sprintf("\tComputer\n%d\n", i);

сначала выполняется горизонтальная табуляция (\t), т.е. курсор сместится от края экрана, затем на экран будет выведено слово Computer, после этого курсор переместится в начало следующей строки (\n), затем будет выведено целое число i по формату %d (десятичное целое), и,окончательно, курсор перейдет в начало новой строки (\n).

Напечатать строку символов можно и так: sprintf("Это строка символов");

Спецификатор формата Тип данных

%d, %i целое десятичное число

%s текстовая строка

%c один символ

%e, %E число с плавающей точкой в экспоненциальной форме

%f число с плавающей точкой в десятичной записи

%u целое десятичное число без знака

%o целое восьмеричное число без знака

%x, %X целое шестнадцатиричное число без знака

%g, %G либо %e, либо %f в зависимости от того, запись в каком формате короче

%p значение указателя

%n число символов

 

Главный цикл системы

Главный цикл служит точкой входа в программу для дальнейшего его выполнения, далее приводится код главной функции и главного цикла программы, в комментариях объяснено что за что отвечает.

Далее приведен код основного файла main__.c, который содержит главную функцию и основной цикл программы:

 

 

 /*****************************************************

This program was produced by the

CodeWizardAVR V1.25.9 Professional

Automatic Program Generator

© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Author: test                       

Company: test                           

Chip type     : ATmega8

Clock frequency: 4,000000 MHz

External SRAM size: 0

Data Stack size: 256

*****************************************************/

#include <mega8.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x12;PORTD

#endasm

#include <lcd.h>  

 #include <delay.h>  

 unsigned char i;                        

int n_sim=1,m_end=500; //m_end - общее количество символов в исходной строке;

 char ish_str[] = " Dannaya textovaya stroka operiruyet na microkontrollere AVR Atmega8. Cod scompilirovan na CodeVision AVR. ";

 void beg_str(void)

{

     for(i=0;i<15;i++)lcd_write_byte(0xC0+i,lcd_read_byte(0xC1+i));

     lcd_gotoxy(15,1); // указали место курсору во второй строке

          lcd_putchar(ish_str[n_sim]);

         if(++n_sim>m_end)

         {n_sim=1;};

          delay_ms(100);

               

  }

void main(void)

{

 

PORTB=0x04;

DDRB=0x00;

 

PORTC=0x00;

DDRC=0x00;

 

PORTD=0x00;

DDRD=0x00;

 

 

ACSR=0x80;

SFIOR=0x00;

 

// LCD module initialization

lcd_init(16);

 

while (1)

{

beg_str();

lcd_gotoxy(0,0,);

lcd_putsf("Stroka Texta");

 

// Place your code here

};

}

 

 


Поделиться с друзьями:

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.03 с.