реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вывод на LCD., Если можно, на пальцах.
Коляй
сообщение Jul 5 2006, 14:09
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 27-04-06
Пользователь №: 16 558



Ребята, расскажите вы "на пальцах" как на символьный ЖКИ что то вывести? Какие команды, библиотеки, хидеры нужны? Сегодня попробовал на КодеВизион сразу вся строка вывелась без проблем (правда на эмуляторе и на английском), на русском только первые две буквы удались, а дальше иероглифы.
Работал бы и на Визио, да только жалко. Программа уже почти написана в ИАРе, всё работает в железе, осталось меню писать, но для этого надо экран запускать.
И на Визио там по 4-м линиям ЖК висит, а я специально проц покупал большой, что бы как следует подключить по 8-ми.

Сообщение отредактировал Коляй - Jul 5 2006, 14:11
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 5 2006, 14:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Коляй, начните отсюда http://www.gaw.ru/html.cgi/txt/lcd/chips/index.htm
Go to the top of the page
 
+Quote Post
Черчилль
сообщение Jul 5 2006, 14:22
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 1-12-05
Пользователь №: 11 642



Цитата(Коляй @ Jul 5 2006, 17:09) *
Ребята, расскажите вы "на пальцах" как на символьный ЖКИ что то вывести? Какие команды, библиотеки, хидеры нужны? Сегодня попробовал на КодеВизион сразу вся строка вывелась без проблем (правда на эмуляторе и на английском), на русском только первые две буквы удались, а дальше иероглифы.

Тебе перекодировать символы надо. Скачай с платана даташит (2,2мБ) , там есть кодовая таблица.
Ессно, если у тебя в индикаторе вшит русский знакогенератор. В кодевижине без проблем работает на ура, библиотек в инете море
Go to the top of the page
 
+Quote Post
ab1000
сообщение Jul 6 2006, 03:05
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 26-05-05
Из: г. Челябинск
Пользователь №: 5 387



Вот один замечательный документ про символьные ЖКИ индикаторы. Что примечательно - на русском. Очень подробно и толково ве расписано. Сам по нему разбирался. smile.gif
Удачи!
Прикрепленные файлы
Прикрепленный файл  lcd.pdf ( 393.48 килобайт ) Кол-во скачиваний: 320
 
Go to the top of the page
 
+Quote Post
upc2
сообщение Jul 6 2006, 04:19
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



В Протеусе все примеры управления LCD написаны на ИАРе.И там их много,и для
большинства МК.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Jul 6 2006, 16:56
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Коляй @ Jul 5 2006, 17:09) *


Привет Коляй !!!
Говориш иероглифы выводятся.
У меня такая проблема была с МТ-16S2H: один раз выводились нормальные русские буквы, а в другой раз иероглифы. Проблема была в странице знакогенератора. В старых индикаторах она была одна, а сейчас их встраивают две. И желательно следить за тем которая из них подключена. Я в своей подпрограмме работы с индикатором всегда вставляю такую строчку:

;установка страницы знакогенератора и разрядности интерфейса
ldi displey_buffer,0b00101010
rcall WriteCode

Попробуй у себя ввести что-то подобное. Думаю, иероглифы у тебя пропадут.
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jul 6 2006, 17:36
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Кстати, в кодвижне есть один глюк в выводе, он ждет в бесконечном цикле сигнал ready (функция lcd_ready).
если есть помехи в кабеле или по питанию жки, то программа может повисать в этом месте. я переделал под опрос по времени.

такая же лажа там и с функцией getghar - когда используется программный буфер uart-a.
Go to the top of the page
 
+Quote Post
Коляй
сообщение Jul 6 2006, 18:00
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 27-04-06
Пользователь №: 16 558



Цитата(mempfis_ @ Jul 6 2006, 20:56) *
Цитата(Коляй @ Jul 5 2006, 17:09) *

Говориш иероглифы выводятся.
У меня такая проблема была....


Спаибо всем. К сожалению проблема не в иероглифах, а в выводе на LCD(44780) вобще. Можно и самому драйвер написать(в документации понятно всё в основном), да только не умею я ещё большие проги писать.
В КодеВиджн тоже не буду переделывать, а то совсем запутаюсь, пусть в ИАРе пока как есть.
Буду программиста-корешка ждать.
Спасибо.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jul 7 2006, 05:43
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(Коляй @ Jul 6 2006, 21:00) *
Спаибо всем. К сожалению проблема не в иероглифах, а в выводе на LCD(44780) вобще. Можно и самому драйвер написать(в документации понятно всё в основном), да только не умею я ещё большие проги писать.
В КодеВиджн тоже не буду переделывать, а то совсем запутаюсь, пусть в ИАРе пока как есть.
Буду программиста-корешка ждать.
Спасибо.


В IAR что-то типа вот этого надо использовать:
Код
__flash unsigned char codepage[256]=
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
  48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,
  64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
  80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,
  96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,
  112,113,114,115,116,117,118,119,120,121,122,123,124,125,0xE9,127,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xCA,0xCB,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0xA2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xB5,0,0,0,0,0,0,0,
  0x41,0xA0,0x42,0xA1,0xE0,0x45,0xA3,0xA4,
  0xA5,0xA6,0x4B,0xA7,0x4D,0x48,0x4F,0xA8,
  0x50,0x43,0x54,0xA9,0xAA,0x58,0xE1,0xAB,
  0xAC,0xE2,0xAD,0xAE,0x62,0xAF,0xB0,0xB1,
  0x61,0xB2,0xB3,0xB4,0xE3,0x65,0xB6,0xB7,
  0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0x6F,0xBE,
  0x70,0x63,0xBF,0x79,0xE4,0x78,0xE5,0xC0,
  0xC1,0xE6,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7
};
Go to the top of the page
 
+Quote Post
upc2
сообщение Jul 7 2006, 05:48
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



На пальцах.

Подключается библиотека LCD.C


#include<pic1687x.h>
#include <stdio.h>
#include "lcd.h"
#include "delay.h"

Смотрите , что там есть.
Для символов достаточно.
<<
#define lcd_cursor(x) lcd_cmd(((x)&0x7F)|0x80) курсор в любое место
#define lcd_clear() lcd_cmd(0x1)
#define lcd_putch(x) lcd_data(x)
#define lcd_goto(x) lcd_cmd(0x80+(x));
#define lcd_cursor_right() lcd_cmd(0x14)
#define lcd_cursor_left() lcd_cmd(0x10)
#define lcd_display_shift() lcd_cmd(0x1C)
#define lcd_home() lcd_cmd(0x2) начало первой строки
#define lcd_home2() lcd_cmd(0xC0) начало второй строки

extern void lcd_cmd(unsigned char); -> команда диснлею
extern void lcd_data(unsigned char); -> один байт в дисплей
extern void lcd_puts(const char * s); -> строку в дисплей
extern void lcd_init(unsigned char); -> нач. установка >>

! Главная функция

void main(void){
unsigned char last_value;
unsigned char volts;
unsigned char decivolts;
unsigned char outString[20];

init();
lcd_puts("Adust the"); после сброса в 1 строке
lcd_home2(); // select line 2
lcd_puts("potentiometer on"); на второй строке
}

! Вывод преобразованного значения.
lcd_clear();
sprintf(outString,"U = %d.%d Volts",volts,decivolts);
lcd_puts(outString);

! Вывод с любого адреса.
sprintf(outString,"%d,",T_SEC);
lcd_cursor(0x06);
lcd_puts(outString);


Возьмите готовые библиотеки для ИАР.
Go to the top of the page
 
+Quote Post
Коляй
сообщение Jul 7 2006, 20:48
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 27-04-06
Пользователь №: 16 558



Спасибо всем огромное! Заработало, ура! Правда пока на эмуляторе. Только пока через строку выводит и по моему через знакоместо. Как будто LCD не 4х20, а 2х16. Драйвер чей то скачал отсюда LCD44780.h и .с Но это уже дело техники.
Go to the top of the page
 
+Quote Post
Коляй
сообщение Jul 7 2006, 22:13
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 27-04-06
Пользователь №: 16 558



Со строками разобрался, а вот с буквами... пока через букву пишет.
Go to the top of the page
 
+Quote Post
Коляй
сообщение Jul 15 2006, 14:20
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 27-04-06
Пользователь №: 16 558



Ребята, как текст во флеше оставить? Пишу вначале. __flash unsignerd char *txt1[]={"xxxxxxx...."};
Всё нормально проходит, но как только появляется обращение на *тхт1, нпример LCD_PRINT(*txt1);
Он перед компиляцией пытается тянуть из флеша в ОЗУ и если *тхт1 побольше, вылезает всякая муть, типа надо стек уменьшить или внешнее ОЗУ прилепить и т.д.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 18 2006, 15:01
Сообщение #14


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Коляй @ Jul 15 2006, 17:20) *
Ребята, как текст во флеше оставить? Пишу вначале. __flash unsignerd char *txt1[]={"xxxxxxx...."};
Всё нормально проходит, но как только появляется обращение на *тхт1, нпример LCD_PRINT(*txt1);
Он перед компиляцией пытается тянуть из флеша в ОЗУ и если *тхт1 побольше, вылезает всякая муть, типа надо стек уменьшить или внешнее ОЗУ прилепить и т.д.

Функцию LCD_PRINT(char *txt1) надо переписать как LCD_PRINT(char __flash*txt1)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 13:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016