Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 15.11.2017, 19:50  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

да там смотреть не на что) просто сделал вот так
Код:
char CREG_result[3] = "";
вместо
Код:
char CREG_result[] = "";
Реклама:
supercelt вне форума  
Непрочитано 15.11.2017, 20:50  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

Что за этим стояло). Зацените пожалуйста следующую реализацию. Есть дисплей 16х2. Задумалось сделать выравнивание. То есть если строка, которую надо вывести меньше или равно 16 символам, то она просто выводится, если больше, то следующее слово (как бы лишнее) уходит на 2 строку. Причем переносить надо не по слогам. А слово целиком. Например: "звук клавиш" выведется на 1 строке. А "установить время оператора" выведется так: установить время - на 1 стр, а оператора - на 2. Или "Настроить звук оператора" = настроить звук - 1 стр, а оператора - 2 строка.

Как вам код?

Код:
void lcd_send_large_string(char *str){
	uint8_t i = 0, j = 0, k = 0;
	char *start = str;
	while(*start){
		if(*start == ' '){
			j++;
			if(i ›= 16){
				k = j;
				break;
			}
		}
		start++;
		i++;
	}
	i = 0;
	lcd_send_command(0x80);
	while(*str){
		lcd_send_data(*str);
		if(*str == ' '){
			i++;
			if(i == k){
				lcd_send_command(0xC0);
			}
		}
		str++;
	}
}
supercelt вне форума  
Непрочитано 16.11.2017, 19:27  
AlexWonder
Частый гость
 
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
AlexWonder на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

Всмысле "Зацените пожалуйста следующую реализацию"?
Нам надо указать где ошибка или похлопать в ладошки?
Если тебя результат работы этой процедуры полностью устраивает - молодец!!

А что будет если в строке нет пробелов или если строка займет больше 32 символов?

Последний раз редактировалось AlexWonder; 16.11.2017 в 19:35.
AlexWonder вне форума  
Непрочитано 16.11.2017, 20:10  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

Какой смысл для stm дисплей 16*2, это не прошлый век? Возмите графический и допилите под себя.
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 16.11.2017, 21:05  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,901
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

Сообщение от supercelt Посмотреть сообщение
Задумалось сделать выравнивание.
Это называется "перенос", а не "выравнивание".

За реализацию ничего не скажу, ибо не вникал, но выводить на 1602 что-то длинное - порочная практика. В крайнем случае, если уж не обойтись - лучше использовать "бегущую строку". Например, название изменяемой уставки бегущей строкой вверху, и значение (неподвижное) внизу.

Последний раз редактировалось AR_Favorit; 16.11.2017 в 21:08.
AR_Favorit вне форума  
Непрочитано 16.11.2017, 21:19  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

Сообщение от AlexWonder Посмотреть сообщение
Всмысле "Зацените пожалуйста следующую реализацию"?
Нам надо указать где ошибка или похлопать в ладошки?
Если тебя результат работы этой процедуры полностью устраивает - молодец!!

А что будет если в строке нет пробелов или если строка займет больше 32 символов?
Можно и то и другое))
А если будет 32, и более, то она не перенесётся))) Но этого не будет так как это заранее известные фиксированные пункты меню
supercelt вне форума  
Непрочитано 16.11.2017, 21:19  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

Сообщение от CERGEI1982 Посмотреть сообщение
Какой смысл для stm дисплей 16*2, это не прошлый век? Возмите графический и допилите под себя.
Чисто для практики)
supercelt вне форума  
Непрочитано 16.11.2017, 21:53  
AlexWonder
Частый гость
 
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
AlexWonder на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

Сообщение от CERGEI1982 Посмотреть сообщение
Какой смысл для stm дисплей 16*2, это не прошлый век? Возмите графический и допилите под себя.
ну случаи бывают разные, почему бы и нет?

Сообщение от supercelt
Чисто для практики) .
Ну раз такие танцы, попробуй сделать ее универсальную.
В одном модуле разные варианты вывода: Бегущая строка, перенос на 2 и более строк, разная длина строки.

Тогда сможешь этот модуль внедрять в другие проекты.

ЗЫ
Название переменных старайся делать более понятными, чтоб потом голову не ломать
AlexWonder вне форума  
Непрочитано 16.11.2017, 23:13  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: Функция вывода на lcd и глобальные переменные

Сообщение от AlexWonder Посмотреть сообщение
ну случаи бывают разные, почему бы и нет?


Ну раз такие танцы, попробуй сделать ее универсальную.
В одном модуле разные варианты вывода: Бегущая строка, перенос на 2 и более строк, разная длина строки.

Тогда сможешь этот модуль внедрять в другие проекты.

ЗЫ
Название переменных старайся делать более понятными, чтоб потом голову не ломать
Ваще дело говоришь! Я так и стараюсь всё сделать)
supercelt вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27
PIC16F876a+Nokia 5110 LCD+PICKit2 AndGrig PIC 31 02.11.2016 09:18
ЖКИ и CodeVision: 8-ми битный режим vikpol Микроконтроллеры, АЦП, память и т.д 33 09.03.2009 21:55
На чём написано ??? Koka Proteus, KiCAD и другие ECAD 18 08.10.2006 15:50
Не могу разобраться с LCD init_sub Информация по радиокомпонентам 6 02.04.2004 04:40


Часовой пояс GMT +4, время: 15:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot