Работа с графическими ЖКИ на контроллере KS0108 и аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Пожиратель AVR
Встал на лапы
Сообщения: 117
Зарегистрирован: Чт янв 11, 2007 12:14:33
Контактная информация:

Работа с графическими ЖКИ на контроллере KS0108 и аналогах

Сообщение Пожиратель AVR »

Тут на сайте я нашел интересную статью о подключении графического LCD дисплея WG12864A и захотел тоже попробать .Для начала я взял самую простейшию програму .

#include <iom8v>
#include <macros>
#include <stdlib>

#define SetBit(x,y) (x|=y)
#define ClrBit(x,y) (x&=~y)
#define TestBit(x,y) (x&y)

#define LCD_RST 0b00000001
#define LCD_E 0b00000010
#define LCD_RW 0b00000100
#define LCD_RS 0b00001000
#define LCD_CS2 0b00010000
#define LCD_CS1 0b00100000

#define LCD_DB PORTD
#define LCD_COM PORTC

#include "delay.h"
#include "ks0108.h"

void main()
{
DDRC=0xFF;
DDRD=0xFF;
init_lcd();
Delay_ms(10);
clear();
Delay_ms(1);

WriteXY(6,2,LCD_CS1);
Delay_ms(1);
WriteData(0b01000100,LCD_CS1);
WriteData(0b01001000,LCD_CS1);
WriteData(0b11110000,LCD_CS1);
WriteData(0b00001000,LCD_CS1);
WriteData(0b00000100,LCD_CS1);
WriteData(0b01100010,LCD_CS1);
WriteData(0b01100001,LCD_CS1);
WriteData(0b00000010,LCD_CS1);
WriteData(0b00000100,LCD_CS1);
WriteData(0b00001000,LCD_CS1);
WriteData(0b10010000,LCD_CS1);
WriteData(0b01010000,LCD_CS1);
WriteData(0b10010000,LCD_CS1);
WriteData(0b00001000,LCD_CS1);
WriteData(0b00000100,LCD_CS1);
WriteData(0b01100010,LCD_CS1);
WriteData(0b01100001,LCD_CS1);
WriteData(0b00000010,LCD_CS1);
WriteData(0b00000100,LCD_CS1);
WriteData(0b00001000,LCD_CS1);
WriteData(0b11110000,LCD_CS1);
WriteData(0b01001000,LCD_CS1);
WriteData(0b01000100,LCD_CS1);

WriteXY(6,3,LCD_CS1);
WriteData(0b00001000,LCD_CS1);
WriteData(0b00000100,LCD_CS1);
WriteData(0b00000011,LCD_CS1);
WriteData(0b00000100,LCD_CS1);
WriteData(0b00001000,LCD_CS1);
WriteData(0b00010000,LCD_CS1);
WriteData(0b00100000,LCD_CS1);
WriteData(0b01000100,LCD_CS1);
WriteData(0b10001000,LCD_CS1);
WriteData(0b10010000,LCD_CS1);
WriteData(0b10010101,LCD_CS1);
WriteData(0b10010010,LCD_CS1);
WriteData(0b10010101,LCD_CS1);
WriteData(0b10010000,LCD_CS1);
WriteData(0b10001000,LCD_CS1);
WriteData(0b01000100,LCD_CS1);
WriteData(0b00100000,LCD_CS1);
WriteData(0b00010000,LCD_CS1);
WriteData(0b00001000,LCD_CS1);
WriteData(0b00000100,LCD_CS1);
WriteData(0b00000011,LCD_CS1);
WriteData(0b00000100,LCD_CS1);
WriteData(0b00001000,LCD_CS1);

while(1);
}
Нувот я еёвставил в компилятор CVAVR и он мне выдал вот 3 ошибки
Смотрите ниже скришоты
Аватара пользователя
Пожиратель AVR
Встал на лапы
Сообщения: 117
Зарегистрирован: Чт янв 11, 2007 12:14:33
Контактная информация:

Сообщение Пожиратель AVR »

Ошибка
Вложения
ошибка.GIF
(1.9 КБ) 3681 скачивание
Аватара пользователя
Пожиратель AVR
Встал на лапы
Сообщения: 117
Зарегистрирован: Чт янв 11, 2007 12:14:33
Контактная информация:

Сообщение Пожиратель AVR »

и еше компилятор выдал
Вложения
ошибка2.GIF
(1.94 КБ) 2471 скачивание
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Нет.

Я полагаю что исходник у вас под компилятор imagecraft.com - узнайте там где вы его взяли.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

Иван.паяльшик виноват, что не оперативно ответил, дела замотали. Моя статья. Начнём по порядку #include <iom8v> выдаёт ошибку по тому что видимо у вашего компилятора другое название заголовочного файла для кристалла какое именно надо уточнить в документации на компилятор собственно поэтому ругается на DDRD, про init_lsd не знаю пока, возможно после устранения первых двух ошибок остальное нормализуется. Компилятор ICC for AVR могу скинуть вместе с лекарством и описанием на русском для этого надо написать мне в личку или аську. tych ярый поклонник вашего компилятора пусть напишет какие праильные названия заголовков для кристаллов. Кстати функции putc и puts немного уточнены символы 10 и 13 отображаются , и . Могу выложить. Скажу честно у меня претензий к работе не было, активно пользую фукции текста. С курсором пока не работал, только пока статью писал функцию сделал думал пригодиться.

У вас в компиляторе надо объявить вместо <iom8v> <mega8> если не поможет скачайте файл который прикреплён и положите его в папку с кодом, тогда надо объявить <m8_128>
Вложения
m8_128.h
(54 КБ) 2013 скачиваний
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

именно с .h
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

tych прав с .h я так и писал тока отображается без него, просьба адм. принять меры.
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
Пожиратель AVR
Встал на лапы
Сообщения: 117
Зарегистрирован: Чт янв 11, 2007 12:14:33
Контактная информация:

Сообщение Пожиратель AVR »

Ну я сделал все возможное и вложил Файл который мне выложили в папку INC менял имя и нечего как выдавало 2 ошибки так и выдает:))
У меня в компиляторе в паке INC есть файл MEGA8 как я понел это и есть заголовочный файл , я попробал также написать и в програме
#include <MEGA8>
#include <macros>
#include <stdlib>
И он мне выдает ошибки
Вложения
ошибка.GIF
(4.95 КБ) 2078 скачиваний
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

Файл должен лежать в той же папке где код программы и файл ks0108.h тоже поэтому я подозреваю init_lcd ругает, объявляете правильно надо так
#include <полное название файла>
Если совсем ничего не помогает создайте пустой проект мастером кода по контроллер mega8 и посмотрите какие мастер делает заголовки для этого контроллера.

Попробуйте сначала просто сделать какой нибудь простенький проект чтоб разобраться с компилятором
Вложения
delay.h
Вот файл задержек они правда под 16МГц, но меня это ничуть не смущает в данном коде это не критично
(446 байт) 1746 скачиваний
iom8v.h
Вот заголовочный файл моего компилятора
(11.12 КБ) 1603 скачивания
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
Пожиратель AVR
Встал на лапы
Сообщения: 117
Зарегистрирован: Чт янв 11, 2007 12:14:33
Контактная информация:

Сообщение Пожиратель AVR »

А что мы делаем вот этими двумя командами
#include <macros>
#include <stdlib>
что ими открываем и у меня компилятор ругается на файл файл ks0108.h у меня его тоже нет!!!
Аватара пользователя
Пожиратель AVR
Встал на лапы
Сообщения: 117
Зарегистрирован: Чт янв 11, 2007 12:14:33
Контактная информация:

Сообщение Пожиратель AVR »

Ну вот я закинул эти два файла которые вы мне дали и теперь компилятор выдает вот такую ошибку
Вложения
Ошибочка.GIF
(14.65 КБ) 1995 скачиваний
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

Я понимаю что вы ещё начинающий но учитесь думать сами, код написан под другой компилятор соответственно при переносе надо смотреть чтоб соответстволи команды. Си тоже знать надо хотя бы азы. Вы похоже сразу схватились за куш, не разобравших в азах тем не менее объясняю оператор #include включает указанный файл в код программы, это делается для того чтоб не захлямлять основной код. При этом файл должен находится в той же директории что исполняемый файл, т.е. тот в котором мы включаем, исключения составляют служебные файлы с функциями они находятся в специально отведённой директории как правило include, в настройках можно его изменить, но не стоит. системные файлы включаются в знаки <>, обычные которые повторюсь должны лежать в той же дирректории или вложенной папке (тогда надо указать полный путь) пишутся в кавычках
#include <macros>
это объявление специфичное для данного компилятора необходимое для того чтоб работали Си макросы т.е. #define
#include <stdlib>
включает строковые и часть символьных функций, является типовым для языка Си в целом, возможно спецефичен для вашего компилятора
NOP();
это пустая команда в вашем компиляторе она может быть отличной
в асемблере она так и обозначается
nop
Файл ks0108.h должен обязательно быть в дирректории с файлом ks.c(или какой у вас исполняемый) без него ничего работать никогда не будет т.к. функции для работы с индикатором я включил туда для удобства пользования см. статью.
Разберитесь со своим компилятором. Почитайте докуметацию
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
Пожиратель AVR
Встал на лапы
Сообщения: 117
Зарегистрирован: Чт янв 11, 2007 12:14:33
Контактная информация:

Сообщение Пожиратель AVR »

Помогите компилятор выдает вот такие ошибки

C:\iccv7avr\bin\imakew -f LCD.mak
iccavr -c -e -D__ICC_VERSION="7.03C" -DATMega8 -l -g -Mavr_enhanced_small -Wa-W C:\iccv7avr\LCD\ks_c.c
!W C:\iccv7avr\LCD\ks0108.h(129):[warning] calling function without prototype may cause errors
!E C:\iccv7avr\LCD\ks0108.h(142): undeclared identifier `LCD_IO'
!E C:\iccv7avr\LCD\ks0108.h(151): undeclared identifier `LCD_DBI'
C:\iccv7avr\bin\imakew.exe: Error code 1
Done: there are error(s). Exit code: 1
что надо делать?
делал проэкт в ImageCraft Development Tools
Аватара пользователя
nerozero
Родился
Сообщения: 12
Зарегистрирован: Вс окт 28, 2007 08:55:25

Сообщение nerozero »

Здравствуйте, переписал ваш пример под winavr, появилось много вопросов, из Даташита, ks0108 имеет инвертированный reset на приведенной вами картинке с "котом" rst - имеет высокий уровень, в коде не обнаружил никаких ссылок на это.

не могли-б вы вы выложить рабочий hex файл?
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

На индикаторе reset снабжён системмой сброса кондёр-резистор. поэтому я его вообще не подключаю. когда писалась статья про это я не знал и чесно уже не помню, что там и как в той версии. Прошивку сегодня выложу в течении дня. Тока мне надо знать под железку компилировать или под Протеус есть разница про которую писал в статье
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Сообщение Denis-d20 »

Hарод драсте если вместо WG12864A с контроллером ks0108 взять НBG128128AGPL с контроллером LC7981 особые изменения кроме того что он 128*128 прийдется делать?
lexmulya
Встал на лапы
Сообщения: 124
Зарегистрирован: Ср авг 29, 2007 10:42:31
Контактная информация:

Сообщение lexmulya »

Придеться конечно, контроллеры то разные и команды у них разные....
По поводу 0108 дла cvavr я писал под мт-12864 в нем, написал статью для кота но пока видимо у админов нету время(сам админ знаю)...
Если надо пиши в личку, скину. У меня там несколько по другому нежели в представленной статье:во первых с опросом статуса во вторых с графикой быстрой
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

lexmulya
С бысторой графикой это как?
быстрее чем ks0108 читает все равно не получится :) Я вроде под максимум писал с небольшим запасом.
А про статус я тоже сначало было заморочился, но вспомнил про принцип разумной достаточности. Работал с данным ЖК много. пока нареканий не выявленно, тока библиотеки немного обновил :)
на LC7981 где то дока была ... могу поискать если надо. Он вроде даже в протеусе есть.
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Сообщение Denis-d20 »

lexmulya писал(а):Придеться конечно, контроллеры то разные и команды у них разные....
По поводу 0108 дла cvavr я писал под мт-12864 в нем, написал статью для кота но пока видимо у админов нету время(сам админ знаю)...
Если надо пиши в личку, скину. У меня там несколько по другому нежели в представленной статье:во первых с опросом статуса во вторых с графикой быстрой


Если не трудно то скинь.
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

Файл ks0108.h в статье имеетсясмотрите внимательнее
Настоящий кот всегда либо голоден,
либо невыспался ...
Ответить

Вернуться в «Периферия»