Всем добрый день!
Выкладываю на всеобщее обозрение свой проект - SimpleBook на DSP dsPIC33FJ128MC706A. Сие устройство позволяет читать текстовые файлы в кодировке 1251 и юникод. Имееца возможность настройки цвета меню/текста/загрузки и тп. Да, собирать подобное устройство на микроконтроллере - полнейший бред. Однако великодушным Microchipом были предоставленны образцы, когда все остальные отмахивались. Необходимо было "что-то" создать для выставления на конкурс программистов, проходящий в моем городе. Благо под рукой был экран от старого ноутбука. Все остальное выпаивалось из того что было под рукой.
Все фото проекта можно посмотреть здесь.
Основная схема устройства:
В конечном устройстве был сделан сокет, а DSP помещен на отдельную небольшую плату для простоты изготовления и возможности замены. На печатной плате "MCU" имеются места для установки керамических конденсаторов 0.1 мкф и также на обратной стороне можно поставить керамику 10 мкф для питания ядра. Но в моем варианте он мешал и его пришлось вынести на основную ПП (C1 C2).
Весь "агрегат" состоит из разных кусочков, т.к. готовое решение собиралось постепенно.
По интерфейсу SPI подключаются SD карта и RAM память, разьем вынесен на схеме. RAM -23K256 . На ПП "RAM" 2 слота под микрохемы, т.к. были еще кое-какие идеи, но пока не реализованы. CS первой RAM идет на 64-ю ногу DSP. Будте внимательны, на схеме это не указано.
SD карта памяти подключается по томуже интерфейсу. 1-я нога DSP идет на переключатель, который замыкается на +3.3V если карта в слоте. необходим подтягивающий резистор на землю. На ПП "MMC" есть несколько контактов для установки сих. 4ю ногу сокета замкнуть на VDD и меж 5 и 8 - резистор на 10к в моем случае. У Вас может быть другой разьем под карты памяти, так что смотрите что куда. 2-я нога идет на CS карты памяти.
Также в схеме есть SPI FLASH память. У меня это была W25X40. Должна подойти любая, т.к. в основном алгоритм работы один и тот-же. В ней храняца настройки, которые считываются при запуске и записываются при каждом выходе из меню настроек.
Теперь самое главное - подключение дисплея lq9d011 (даташит в комплекте)
1 NC
2 NC
3 +5V
4 +5V
5 GND
6 GND
7 ENA начало цветопередачи(с моим дисплеем что подавать сигнал что не подавать, се равно отображает)
8 NC
9 CLK тактирование
10 GND
11 Hsync горизонтальная синхронизация
12 Vsync вертикальная
13 NC
14 R0 красный
15 R1
16 R2
17 GND
18 G0 зеленый
19 G1
20 G2
21 GND
22 B0 синий
23 B1
24 B2
25 NC
26 NC
27 NC
Также возможно подключение других дисплеев.
Также хочу отметить что проц разогнан до 50 MIPS тк немного не дотягивал до нормальной частоты обновления экрана, и экран жутко пищщал. Практиески на данной основе можно реализовать даже какую-нибуть игру(танчики например) иль еще чего необычного.
Микры U3-U5 питаются от 5ти вольт. И еще один момент: у меня после навешанья всей лапши из RAM и FLASH карта памяти перестала отвечать, тогда на линию SCK советую повесить кондер 15-30pF. В меню настроек есть выбор какой тип SD карты используется, т.к. у меня оч старая карточка работала на SPI-0 а новые отказывались и наобород.
CharGen - редактирование заков представленных в коде ассемблера. Изначально разрабатывалась под 8-ми битные ПИКи, так что для новых Symbol надо заменить на ".byte". Invert - используется при сохранении, инвертирует последовательность битов символа. А "сеточка" справа используется для ручного задавания точек. Собственно можете открыть "KOI8.asm" в файлах прокта и посмотреть как это выглядит.
ScreenDraw.ASM- тут немного сложнее, программа для рисования "экранов" (например заставка при запуске выполнена на ней)
Сначала открываем таблицу знаков (Open Char code) и вверху появятся все символы. Нажимаем -рисуем. также можно открыть проект, но только сохраненный на ассемблере. для сохранения в асм надо указать начальную позицию в памяти (по умолч. 0х1000) куда будет записываться весь экран. можно сохранить на Си, для этого нажмите "use C?" вместо 0х1000 укажите название переменной в которую будет все записываться.
Был использован модуль FatFS от Chan-а, за что ему отдельное спасибо :)
При открытии файла первым делом он конвертируеца в другой формат, для удобства работы с файлом. Вверху появится графа загрузки. Ее можно прервать и потом продолжить при повторном открытии файла. После полной загрузки файл появится в Библиотеке (на карте памяти это будет папка library).
Максимальное количество файлов в директории - 256 с длиной имени не более 120 знаков. Все это кэшируется на внешней RAM. Но сортировки нет.
Пролистывание файлов идет построчное(вверх вниз) либо страничное (вправо влево). При закрытии файла сохраняется позиция чтения, и при повторном открытии продолжите с того места где остановились.
На этом все! Если возникнут вопросы - спрашивайте, дополню статью.
Просьба тапками не бить, я не супер электрик или программист, мне всего 16 лет. это мой первый более/менее сурьезный проект.
Удачи!
Идея взята отсюда: Текстовый VGA-терминал на PIC18
Файлы:
Печатные платы (Proteus)
Софт для ПК
Прошивка МК с исходниками
Все вопросы в Форум.