|
Миниатюрный вольтметр, ATtiny24 + АЛС314 кто мельче предложит? |
|
|
|
 |
Ответов
(1 - 79)
|
Nov 9 2015, 06:50
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
АЛС314 судя по предложениям в Сети в продаже есть и не дефицит. Хотя модуль SPI 0.96" 128X64 Blue OLED LED LCDВесьма привлекательный и займет свою нишу. Габарит привлекательный, но в мелкие БП не пойдет. Ок. Если совсем мелкие индикаторы дефицит, как компромисс можно собрать светодиодную шкалу, скажем из 7 светодиодов. Для 5-вольтового блока питания, например центральный (4-й) светодиод будет светится при 5.0В, остальные в + и -, скажем по 50мВ. Такое решение дешевле, наглядно и можно сделать совсем мелким. Какой в этом случае порекомендуете контроллер?
|
|
|
|
|
Nov 9 2015, 10:17
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(adnega @ Nov 9 2015, 13:13)  Для любителей миниатюризации можно напаивать прямо на ПП. ?? Там вроде гибкий шлейф с напылением. Он не паяется.
|
|
|
|
|
Nov 9 2015, 10:34
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Димон Безпарольный @ Nov 9 2015, 13:20)  Как бы узнать габариты этого чуда? Цитата Dimensions: 31*21mm(L* W) А на картинке вообще 31 х 12 мм (что более похоже на правду) Вот фото
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 9 2015, 11:11
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Тоже вариант, кстати. Да, а что до миниатюрных вольтметров - есть такая забавная разработка на Atmega8, управляет сегментным LCD от медицинского термометра и монтируется туда же (в корпус термометра). Индикаторы у таких термометров, правда, обычно плохочитаемы - слишком глубоко утоплены в корпус (хотя бывают, в более дорогих моделях, и вполне даже ничего - крупнее и удачнее расположены). А шансов найти мелкий LED (мельче 0.2") невелики - разве что и в самом деле поискать изделия советских времен. На мой взгляд, всякие АЛС314 - недопустимо мелкие. Ну, может быть, с линзованным светофильтром что-то и получится, но удобство сомнительное. Вот АЛС304 - вполне даже сносно (у меня в логическом пробнике такой, удобно).
|
|
|
|
|
Nov 9 2015, 11:12
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Serhiy_UA @ Nov 9 2015, 14:01)  Зачем эти индикаторы, сделайте речевой, получится совсем малым... Или один RGB-светодиод (типа WS2812B) + малоногий МК с АЦП: зеленый - все Ок (5 В +- 50мв), красный - >(5В + 50 мв) (с увеличивающейся яркостью или изменяющейся частотой мигания), синий - <(5В - 50 мв) (с увеличивающейся яркостью или изменяющейся частотой мигания). ??
|
|
|
|
|
Nov 9 2015, 14:24
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Димон Безпарольный @ Nov 9 2015, 15:54)  Великоват для встраивания в мелкие БП. А насколько мелкие эти БП? если что, имеется модулек 25.4*15.24 - 5 gpio + 4swim не вольтметр, просто gp цоколевка не dip
|
|
|
|
|
Nov 9 2015, 14:27
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(_Pasha @ Nov 9 2015, 17:24)  А насколько мелкие эти БП? если что, имеется модулек 25.4*15.24 - 5 gpio + 4swim не вольтметр, просто gp цоколевка не dip Например автомобильная зарядка. И даже если в корпус не влазит, есть идея паять на проходящий кабель.
|
|
|
|
|
Nov 9 2015, 14:37
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Димон Безпарольный @ Nov 9 2015, 15:33)  Они не цифровые. И для шкалы не годятся. Видео тут. При <4.90B - горит синий; при 4.90В .. 4.95В - синий и зеленый мигают; при 4.95В .. 5.05В - горит зеленый; при 5.05В .. 5.10В - красный и зеленый мигают; при >5.10В - горит красный. Типа шкалы на 5 состояний. Себестоимость и габариты минимальные. Разумеется, алгоритм работы можно изменить на большее число градаций.
|
|
|
|
|
Nov 9 2015, 14:54
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(adnega @ Nov 9 2015, 17:37)  Видео тут. Типа шкалы на 5 состояний. Себестоимость и габариты минимальные. Разумеется, алгоритм работы можно изменить на большее число градаций. Тоже годится. Не вкурил поначалу... Надо подумать. Как меняется алгоритм?
Сообщение отредактировал Димон Безпарольный - Nov 9 2015, 14:55
|
|
|
|
|
Nov 9 2015, 15:08
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Димон Безпарольный @ Nov 9 2015, 18:03)  Алгоритм как - то прошивается в чип? Да. CODE cpi XL, (V_POROG - 10) brlo ml_low cpi XL, (V_POROG + 10) brge ml_high // normal ldi dataR, 0x00 ldi dataG, 0x40 ldi dataB, 0x00 rjmp ml_send
ml_low: ldi dataR, 0x00 ldi dataG, 0x10 ldi dataB, 0x80 rjmp ml_send
ml_high: ldi dataR, 0x80 ldi dataG, 0x10 ldi dataB, 0x00 rjmp ml_send
|
|
|
|
|
Nov 10 2015, 05:33
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(adnega @ Nov 9 2015, 18:08)  Да. CODE cpi XL, (V_POROG - 10) brlo ml_low cpi XL, (V_POROG + 10) brge ml_high // normal ldi dataR, 0x00 ldi dataG, 0x40 ldi dataB, 0x00 rjmp ml_send
ml_low: ldi dataR, 0x00 ldi dataG, 0x10 ldi dataB, 0x80 rjmp ml_send
ml_high: ldi dataR, 0x80 ldi dataG, 0x10 ldi dataB, 0x00 rjmp ml_send
Возможно я чего - то не понял. Я думал светодиод уже с чипом.
Сообщение отредактировал Димон Безпарольный - Nov 10 2015, 05:33
|
|
|
|
|
Nov 10 2015, 06:20
|

Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474

|
Все OLED дисплеи питаются от 3.3V. В них имеется схема накачки заряда (потому, 7.5V получаются прямо на плате). В инструкции к контроллеру всё описано (SSD1306/SH1106).  Гребёнка паяется отлично. Нужно только прихватывать ближе к краю - так проще будет отпаять обратно. Готовые платы, естественно, продаются. Как и отдельные собственно, дисплеи:
|
|
|
|
|
Nov 10 2015, 21:24
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Сваял схему на Attiny26. Идея такая - плата процессора и съемные платы индикаторов. Навеяла эта картинка:  Варианты - 5 светодиодов, три АЛС314 и ER-OLED0.91
С ER-OLED0.91 возникли проблемы. Запутался в трех питаниях. Если у кого есть вариант питания от 5В - помогите. Если кто покритикует схему - скажу спасибо.
Сообщение отредактировал Димон Безпарольный - Nov 10 2015, 22:08
|
|
|
|
|
Nov 11 2015, 08:21
|

Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474

|
Цитата(Димон Безпарольный @ Nov 11 2015, 03:24)  С ER-OLED0.91 возникли проблемы. Запутался в трех питаниях. Если у кого есть вариант питания от 5В - помогите. Если кто покритикует схему - скажу спасибо. Мда. Я с пол года назад сваял себе схему и плату под него. На плате - 6 конденсаторов (из них 2 питание, 2 - помпа, 2 - накопители "помпы"), 2 резистора и 1 разъём на 7 контактов. Прилагаю схему и рисунок платы.
Питается от 3.3V, отлично работал совместно с ATMega1284p (отладочная плата, 11 и 8 МГц тактовая), с STM32. С питанием в 5V не проверялся. Скорее всего, потребуется понижающий стабилизатор. Дисплей крепится к обратной стороне платы. Стрелка указывает на направление "стекла".
Сообщение отредактировал AlanDrakes - Nov 11 2015, 08:23
|
|
|
|
|
Nov 11 2015, 11:03
|

Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474

|
Цитата(Димон Безпарольный @ Nov 11 2015, 15:22)  Спасибо. Схему начинаю ваять. Питание процессора будет конечно же 3.3В. Это я в попыхах не исправил на схеме. Насколько я понял, ширина контактных площадок 0.35мм, расстояние между контактными площадками 0.65мм. Можете подтвердить? не хотелось бы ошибится. Всё верно. Ширина - 0.35мм, шаг (не расстояние!) 0,65мм. Прилагаю Datasheet на дисплей:
ER_OLED0.91_1_Series_Datasheet.pdf ( 964.8 килобайт )
Кол-во скачиваний: 4135-я страница (№2 по нумерации) содержит все необходимые размеры. PS: Я бы рекомендовал экономно выставлять яркость дисплея - продлит время жизни до начала деградации.
|
|
|
|
|
Nov 11 2015, 11:58
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Спасибо. Вот такая получилась схема:
Платы разведены. Пару дней на проверку и в изготовление. Соберу - отпишусь.
Сообщение отредактировал IgorKossak - Nov 11 2015, 18:14
Причина редактирования: бездумное цитирование
|
|
|
|
|
Nov 12 2015, 08:54
|
Знающий
   
Группа: Свой
Сообщений: 708
Регистрация: 8-05-11
Из: Чг
Пользователь №: 64 861

|
Цитата(Serhiy_UA @ Nov 9 2015, 14:01)  Зачем Вам эти индикаторы, сделайте речевой, получится совсем малым... о, навеяло из молодости - я в околостуденческие годы сделал гун - при изменении напряжения от 0,1 до 1 в он менял тон от 100 гц до 1 кГц, офигенно удобно - юстируешь, например, монохроматор, такой дивайс там даже дыхнуть нельзя, строго в наморднике, двумя руками что - то крутишь- а индикатор тоном сообщает, растет сигнал или падает. Цитата(adnega @ Nov 9 2015, 14:12)  Или один RGB-светодиод (типа WS2812B) + малоногий МК с АЦП: зеленый - все Ок (5 В +- 50мв), красный - >(5В + 50 мв) (с увеличивающейся яркостью или изменяющейся частотой мигания), синий - <(5В - 50 мв) (с увеличивающейся яркостью или изменяющейся частотой мигания).
?? 2812 частота 800 кГц, даже на 16 МГц атмегах приходится ассемблерные вставки делать, мелкие вроде тиньки не успеют. Есть какие-то более медленные аналоги 2812, видел на науке0+, чуть ли не с дс работают, Но не помню наименование.
|
|
|
|
|
Nov 12 2015, 08:56
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(Onkel @ Nov 12 2015, 11:54)  о, навеяло из молодости - я в околостуденческие годы сделал гун - при изменении напряжения от 0,1 до 1 в он менял тон от 100 гц до 1 кГц, офигенно удобно - юстируешь, например, монохроматор, такой дивайс там даже дыхнуть нельзя, строго в наморднике, двумя руками что - то крутишь- а индикатор тоном сообщает, растет сигнал или падает.
2812 частота 800 кГц, даже на 16 МГц атмегах приходится ассемблерные вставки делать, мелкие вроде тиньки не успеют. Есть какие-то более медленные аналоги 2812, видел на науке0+, чуть ли не с дс работают, Но не помню наименование. А теперь представим автомобильный адаптер в котором постоянно что - то пищит...
|
|
|
|
|
Nov 12 2015, 09:24
|

Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474

|
Цитата(Димон Безпарольный @ Nov 12 2015, 13:26)  Не нахожу где в Москве купить ER-OLED0.91. Ну так... Из кЕтая заказываются обычно. Даже в столице с этим сложно. Сейчас самый дешёвый вариант - около 500 рублей за штуку. Это после скачка курса енотов. Раньше были дешевле вдвое.
Сообщение отредактировал AlanDrakes - Nov 12 2015, 09:24
|
|
|
|
|
Nov 12 2015, 09:31
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(AlanDrakes @ Nov 12 2015, 12:24)  Ну так... Из кЕтая заказываются обычно. Даже в столице с этим сложно. Сейчас самый дешёвый вариант - около 500 рублей за штуку. Это после скачка курса енотов. Раньше были дешевле вдвое. Мне кажется светит поездка в Индию. Интересно, можно ли их там найти? И как искать...
|
|
|
|
|
Nov 12 2015, 17:22
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(rx3apf @ Nov 12 2015, 16:44)  ... на ali есть предложения по DL1414 и существенно дешевле. По полтора бакса хотите ? А с русскими буквами есть?
|
|
|
|
|
Nov 12 2015, 18:06
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(rx3apf @ Nov 12 2015, 20:41)  И цифровое значение на таком смотрится плохо - целое знакоместо на разделительную точку портит вид. Вот это точно! Изделие достаточно древнее, я думал сейчас что-то получше есть... Но использовать АЛС314- это вообще не выход.
|
|
|
|
|
Nov 12 2015, 18:43
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Из того что доступно, дешево и эргономично это АЛС314. Думаю расширить функциональность применив схему измерения тока:
Эта схема проверена десятками изделий. Линейность лучше 1%. Усиление позволяет применить низкоомные шунты. Стабилизатор может быть удален в случае питания от 5В. Взята из статьи на Терраэлектроника. Измерение тока в широком динамическом диапазоне: три схемных решения
Сообщение отредактировал Димон Безпарольный - Nov 13 2015, 15:38
|
|
|
|
|
Nov 14 2015, 05:31
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(Димон Безпарольный @ Nov 12 2015, 21:43)  Из того что доступно, дешево и эргономично это АЛС314. Ну если не пожалеть денег и поставить, к примеру, одну ATmegу8 чисто на индикацию (и возможно на клавиатуру)... При цене 2 АЛС314= 1 ATmega - это вполне приемлимый вариант. Зато удобств -масса. И в габариты весьма небольшие удастся уложиться. 4 разряда будут не больше DL1414.
|
|
|
|
|
Nov 14 2015, 10:52
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(Димон Безпарольный @ Nov 14 2015, 10:31)  В таком миниатюрном решении клавиатура не нужна. Думаю что и ATTINY26 вполне хватит на три разряда - для вольтметра блока питания этого вполне достаточно. А почему без клавиатуры? Хотя бы 7 кнопок - на расширение... Мало ли где ещё придётся этот индикатор применить! Три разряда - это хорошо, а знак??? Предположим, ты в компьютерный блок питания вольтметр ставишь --> +-5V +-12, 3.3V - 3 цифры+знак, как минимум. Расширение на клавиатуру - это ж тебя ни к чему не обязывает... Оставишь разъём не использованный. Опять же, если делать из того же стандартного компьютерного блока питания перестраиваемый БП, то не помешает ещё и ЦАП для Uref.
|
|
|
|
|
Nov 16 2015, 05:08
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(muravei @ Nov 15 2015, 12:40)  Примерно с 16-ногий ДИП не подойдет? Лучше TQFP32. Пусть 4 разряда с точкой. (7+1)+4 (управление разрядами)=12 линий I/O уже заняты. А ещё надо входы АЦП, а для удобства еще линии для программирования оставить, возможно линии для клавиатуры и связи с другими МК. Возможно ещё понадобятся выходы для индикации аварийных режимов (больше, меньше нормы) , а это уже на компараторах надо. Так что плавно подходим к мысли о TQFP64 :-)
Снизу DL1414. Сверху - разъём аналоговый вход и 2 цифровых I/O В середине чёрный разъём - для программирования Внизу - разъем для DS18B20
Сообщение отредактировал Santik - Nov 16 2015, 05:33
|
|
|
|
|
Nov 16 2015, 10:36
|

Гуру
     
Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591

|
Цитата(Димон Безпарольный @ Nov 16 2015, 08:54)  16-ногий контроллер? Да, я намерен использовать tiny-26 но в soic варианте. Будет компактней. Судя по всему вы будете "писателем, а не читателем" Цитата Примерно С 16-ногий ДИП не подойдет? Ключевое слово С. Читайте мое предыдущее сообщение.
|
|
|
|
|
Nov 26 2015, 05:30
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(pavel-pervomaysk @ Nov 25 2015, 23:30)  Nokia 6085 lcd + ATtiny13 я делал, одно из самых мелких и дешевых решений. Или обязательно светодиодные? Конечно подойдёт если размер маленький. Если нетрудно, ткните меня в описалово LCD. Какой там интерфейс? Впрочем, уже нашёл. Габарит 24х24. И библиотеки тоже. Смущает упоминание что питание подсветки 7В. Хотелось бы питать от 5.
Сообщение отредактировал Димон Безпарольный - Nov 26 2015, 05:45
|
|
|
|
|
Nov 27 2015, 18:10
|

Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716

|
Тут все с самого начала, фотки прикреплены. http://monitor.net.ru/forum/viewtopic.php?...c&start=192Кстати, 6085 ну очень мелкий... Подсветка синяя, не понравилась. Мне понравились 1202, паять удобно, подсветка от 3,6в работает. Собственно код. CODE ; pavel-pervomaysk ; Nokia 1110i,1202,6085 ; LCD module ; Time 07.10.2015
; Lcd controller по командам частично совместимый с PCF8814 ; SET X adress lcd ; 0x10,0x00 начало строки с 0 го адреса строки ; количество столбцов ЖКИ 96 , штук адрес установки с 0 - 95 ; адрес столбца нам нужен 39 , 39 -> HEX = 0x27. ; Установка адреса будет иметь такой вид 0x12,0x07 ; 3 старших бита адреса передаются в первой команде ; 4 младших бита адреса передаются во второй команде ; SET Y adress lcd ; Всего 8 полных строк и 9й не полный ; установка адреса Y происходит подачей команд ; 0xB0 первая - 0xB8 девятая строки. ; Дополнительные команды для управления и инициализации ЖКИ ; Сдвиг всей области ЖКИ вверх на 1 0x41 ; Сдвиг всей области ЖКИ вверх на 2 0x42 ; Сдвиг всей области ЖКИ вверх на 4 0x43 ; Сдвиг всей области ЖКИ вверх на 8 0x44 ; Сдвиг всей области ЖКИ вверх на 10 0x45 ; Сдвиг всей области ЖКИ вверх на 16 0x48 ; Сдвиг всей области ЖКИ вниз на 21 0x65 ; Контрастность ЖКИ 0x90 ... 0x9F установка по дисплею в проекте ; Очистка картинки (данные соханяются) 0xA2 ; Реверсное изображение с низу к верху 0xC8 ; Позитивное изображение ЖКИ 0xA6 ; Негативное изображение ЖКИ 0xA7 ; Заполнение строки с лева на право 0xA1 ; ||||||||||||||||||||||||||||||||| ; lsb adress -> ; Заполнение строки с права на лево 0xA9 ; ||||||||||||||||||||||||||||||||| ; <- lsb adress ; Начальное значение курсора строка 0 0xAC ; ЖКИ выключен 0xAE ; ЖКИ включен 0xAF ; RESET lcd 0xE2 ; Температурная компенсация включена 0xEB
; DSEG data reserved .dseg ; RAM 867 bytes!!! .org 0xFC ; Set Ram adress begin lcd_xa: .byte 1 ; X address lcd lcd_yah: .byte 1 ; Y address lcd high byte lcd_yal: .byte 1 ; Y address lcd low byte ;display: .byte 864 ; RAM array for lcd!
; Each lcd line included 96 bytes! .equ display = 0xFC+3 ; real 0xFF value rline1: .byte 96 ; lcd_line1 rline2: .byte 96 ; lcd_line2 rline3: .byte 96 ; lcd_line3 rline4: .byte 96 ; lcd_line4 rline5: .byte 96 ; lcd_line5 rline6: .byte 96 ; lcd_line6 rline7: .byte 96 ; lcd_line7 rline8: .byte 96 ; lcd_line8 rline9: .byte 96 ; lcd_line9
.cseg ; FLASH
; LCD names pinouts .equ LCD = PORTB ; Порт ЖКИ .equ clk = PB0 ; вывод тактов в ЖКИ .equ dat = PB1 ; вывод данных в ЖКИ .equ cs = PB2 ; выбор чипа
.equ line1 = 0xB0 ; 1 .equ line2 = 0xB1 ; 2 .equ line3 = 0xB2 ; 3 .equ line4 = 0xB3 ; 4 .equ line5 = 0xB4 ; 5 .equ line6 = 0xB5 ; 6 .equ line7 = 0xB6 ; 7 .equ line8 = 0xB7 ; 8
;----- FONT 15x22 ------------; .equ plus15x22 = 10 ; + .equ minus15x22 = 11 ; - .equ celsiy15x22 = 12 ; .equ dot15x22 = 13 ;
init_lcd: ; Инициализация ЖКИ модуля ldi tmp,0xE2 ; Internal reset rcall lcd_cmd ; выводим команду на ЖКИ ldi tmp,0xEB ; температурная компенсация включена rcall lcd_cmd ; выводим команду на ЖКИ ldi tmp,0x2F ; режим питания rcall lcd_cmd ; выводим команду на ЖКИ ;ldi tmp,0xA1 ; направление LSB -> MSB Nokia 1110i lcd ldi tmp,0xA9 ; направление MSB -> LSB Nokia 1202 lcd rcall lcd_cmd ; выводим команду на ЖКИ ldi tmp,0x95 ; Контрастность ЖКИ 0х90 ... 0х9F rcall lcd_cmd ; выводим команду на ЖКИ ldi tmp,0xA4 ; очистить все пиксели жки rcall lcd_cmd ; выводим команду на ЖКИ ldi tmp,0xA6 ; позитивное изображение ;ldi tmp,0xA7 ; негативное изображение rcall lcd_cmd ; выводим команду на ЖКИ ;ldi tmp,0xC8 ; Зеркальное отображение ; NOKIA 6085 small LCD! ;rcall lcd_cmd ; выводим команду на ЖКИ ldi tmp,0xAF ; включить дисплей rcall lcd_cmd ; выводим команду на ЖКИ rcall clr_lcd ; Очищаем ЖКИ от случайного мусора ret ; на выход
clr_line: ; Очистка линии ЖКИ ldi xl,low (96) ; загружаем количество столбцов ldi xh,high(96) ; ldi tmp,0 ; загружаем данные rjmp clr_c ; очищаем их clr_lcd: ; Очистка ЖКИ rcall lcd_line1 ; выбираем начало ЖКИ ldi xl,low (864) ; количество столбцов ЖКИ = 864 ldi xh,high(864) ; ldi tmp,0 ; загружаем данные clr_c: ; цикл очистки ЖКИ rcall lcd_data ; выводим данные на ЖКИ sbiw xl,1 ; счетчик цикла - 1 brne clr_c ; если не равно 0 - то переходим к началу ret ; return
print_data: ; выводим 864 байта из RAM в ЖКИ push xl ; push xh ; push yl ; push yh ; rcall lcd_line1 ; выбираем начало ЖКИ ldi xl,low (864) ; количество байт ЖКИ = 864 ldi xh,high(864) ; ldi yl,low (display) ; загружаем адрес L начала блока RAM ldi yh,high(display) ; загружаем адрес H начала блока RAM print_c: ; цикл вывода данных в ЖКИ ld tmp,y+ ; загружаем данные в регистр из RAM с постинкрементом адреса rcall lcd_data ; выводим данные на ЖКИ sbiw xl,1 ; счетчик цикла - 1 brne print_c ; если не равно 0 - то переходим к началу pop yh ; pop yl ; pop xh ; pop xl ; ret ; выход
lcd_cmd: ; Send command to the lcd cbi lcd,dat ; DAT -> 0 rjmp _1st_clk ; 1st clock pulse lcd_data: ; Send data to the LCD sbi lcd,dat ; DAT -> 1 ;----------------------; _1st_clk: ; cbi lcd,cs ; CS -> 0 sbi lcd,clk ; CLK -> 1 cbi lcd,clk ; CLK -> 0 ;----------------------; push loop ; Store loop in STACK push tmp ; Store tmp in STACK ldi loop,8 ; bit counter out_byte: cbi lcd,dat ; DATA -> 0 sbrc tmp,7 ; Bit [7] check sbi lcd,dat ; if Bit[7]?1{DATA -> 1} sbi lcd,clk ; CLK -> 1 rol tmp ; tmp =<<1 dec loop ; bitcounter = -1 cbi lcd,clk ; CLK -> 0 brne out_byte ; ;----------------------; sbi lcd,cs ; CS -> 1 pop tmp ; Restore tmp from STACK pop loop ; Restore loop from STACK ret ; return
print_char_5x7: ; print char with font 5 х 7; Warning!, xl register in ASCII code; push loop ; Save loop in STACK push xl ; Save XL in STACK push xh ; Save XH in STACK push zl ; Save ZL in STACK push zh ; Save ZH in STACK ldi tmp,5 ; загрузить значение первого множителя muls xl,tmp ; Multiply signed xl and tmp movw xl,r0 ; Copy result back in xl:xh ldi tmp,160 ; загрузить число 160 DEC в регистр sub xl,tmp ; отнять от пары число 160 0x00 - 0x1F ненужная data 0x1F * 5 (количество байтов в символе) = 160. sbc xh,zero ; число 160 - это количество сэкономленых и ненужных байт в флэш мк ldi zh,high(font_5x7*2) ; загрузить старший адрес строки данных ldi zl,low (font_5x7*2) ; загрузить младший адрес строки данных add zl,xl ; выбираем нужный символ в строке adc zh,xh ; путем прибавления данных к адресу строки ;----------------------; ldi loop,5 ; загружаем счетчик цикла pr_ch_5: ; Чтение символа ASCII в цикле lpm tmp,Z+ ; загрузить в регистр данные по адресу Z с прибавлением 1 к Z rcall lcd_data ; вывести байт на ЖКИ dec loop ; bytecunter = (-1) brne pr_ch_5 ; если не = 0 то опять по кругу ;----------------------; eor tmp,tmp ; clear tmp rcall lcd_data ; вывести 6й байт на ЖКИ pop zh ; restore ZH from STACK pop zl ; restore ZL from STACK pop xh ; restore XH from STACK pop xl ; restore XL from STACK pop loop ; restore loop from STACK ret ; return
out_text: ; Вывод текста 5*7 из данных флэши lpm xl,z+ ; загрузить в регистр данные по адресу Z с прибавлением 1 к Z rcall print_char_5x7 ; вывести символ на ЖКИ dec loop2 ; счетчик символов - 1 brne out_text ; если не равно 0 то опять все повторяем ret ; выход
;---------------------------------------------------------------------------------- print_char_9x14: ; вывод на ЖКИ символа 9 х 14. push xl ; push xh ; push loop ; push loop2 ; clr loop2 ; loop2=0 ;----------------------; ldi tmp,18 ; загрузить значение первого множителя (EACH SYMBOL 18bytes) muls xl,tmp ; Multiply signed xl and tmp movw xl,r0 ; Copy result back in xl:xh ;----------------------; ldi loop,2 ; Cycles counter =2 char_9x14c: ; lds tmp,lcd_yah ; загружаем старший байт адреса Y rcall lcd_cmd ; выводим команду lds tmp,lcd_yal ; загружаем младший байт адреса Y rcall lcd_cmd ; выводим команду lds tmp,lcd_xa ; загружаем адрес X для следующей строки add tmp,loop2 ; Xa=[Xa+loop2] rcall lcd_cmd ; выводим команду ;----------------------; ldi zh,high(font_9x14*2) ; загрузить старший адрес строки данных ldi zl,low (font_9x14*2) ; загрузить младший адрес строки данных
;ldi zh,high(font_9x16*2) ; загрузить старший адрес строки данных ;ldi zl,low (font_9x16*2) ; загрузить младший адрес строки данных ;----------------------; add zl,xl ; выбираем нужный символ в строке adc zh,xh ; путем прибавления данных к адресу строки adiw xl,9 ; прибавляем к адресу чтения данных 16 ;----------------------; push loop2 ; store loop2 in STACK ldi loop2,9 ; загружаем счетчик цикла pr_ch_9: ; Чтение первых 9 байт в цикле lpm tmp,z+ ; загрузить в регистр данные по адресу Z с прибавлением 1 к Z rcall lcd_data ; вывести байт на ЖКИ dec loop2 ; счетчик - 1 brne pr_ch_9 ; если не = 0 то опять по кругу pop loop2 ; restore loop2 from STACK ;----------------------; inc loop2 ; loop2=+1 dec loop ; loop=-1 brne char_9x14c ; pop loop2 ; pop loop ; pop xh ; pop xl ; ret ; выход
simvol_9x14_x: ; установка адреса ; 6..4 bits - High byte; 3...0 bits Low byte; push adr ; Address pointer must be only 0...8 value!!! ldi tmp,10 ; mul adr,tmp ; range 0-86 max! mov adr,r0 ; ;----------------------; ;ldi tmp,3 ; смещение в право на 3 пикселя ;add adr,tmp ; (для негативного изображения чтобы не было краев рубленных) ;----------------------; mov tmp,adr ; swap tmp ; andi tmp,0x07 ; ori tmp,0x10 ; andi adr,0x0f ; sts lcd_yah,tmp ; sts lcd_yal,adr ; pop adr ; rcall print_char_9x14 ; вывести символ 9 х 14 на ЖКИ ret ; выход
;----------------------------------------------------------------------;
print_char_15x22: ; вывод на ЖКИ символа 15 х 22. push xl ; push xh ; push loop ; push loop2 ; clr loop2 ; loop2=0! X pointer = (X pointer + loop2) ;----------------------; ldi tmp,45 ; загрузить значение первого множителя (EACH SYMBOL 45bytes) muls xl,tmp ; Multiply signed xl and tmp movw xl,r0 ; Copy result back in xl:xh ;----------------------; ldi loop,3 ; Cycles counter =3 char_15x22c: ; lds tmp,lcd_yah ; загружаем старший байт адреса Y rcall lcd_cmd ; выводим команду lds tmp,lcd_yal ; загружаем младший байт адреса Y rcall lcd_cmd ; выводим команду lds tmp,lcd_xa ; загружаем адрес X для следующей строки add tmp,loop2 ; Xa=[Xa+loop2] rcall lcd_cmd ; выводим команду ;----------------------; ldi zh,high(font_15x22*2) ; загрузить старший адрес строки данных ldi zl,low (font_15x22*2) ; загрузить младший адрес строки данных add zl,xl ; выбираем нужный символ в строке adc zh,xh ; путем прибавления данных к адресу строки adiw xl,15 ; прибавляем к адресу чтения данных 15 ;----------------------; push loop2 ; store loop2 in STACK ldi loop2,15 ; загружаем счетчик цикла pr_ch_15: ; Чтение первых 15 байт в цикле lpm tmp,z+ ; загрузить в регистр данные по адресу Z с прибавлением 1 к Z rcall lcd_data ; вывести байт на ЖКИ dec loop2 ; счетчик - 1 brne pr_ch_15 ; если не = 0 то опять по кругу pop loop2 ; restore loop2 from STACK ;----------------------; inc loop2 ; loop2=+1 dec loop ; loop=-1 brne char_15x22c ; pop loop2 ; pop loop ; pop xh ; pop xl ; ret ; return
simvol_15x22_x: ; установка адреса символа (15х22) с переменной adr ; 6..4 bits - High byte; 3...0 bits Low byte; push adr ; Address pointer must be only 0...5 value!!! ldi tmp,16 ; mul adr,tmp ; range 0-80 max! mov adr,r0 ; ;----------------------; ;ldi tmp,3 ; смещение в право на 3 пикселя ;add adr,tmp ; (для негативного изображения чтобы не было краев рубленных) ;----------------------; mov tmp,adr ; swap tmp ; andi tmp,0x07 ; ori tmp,0x10 ; andi adr,0x0f ; sts lcd_yah,tmp ; sts lcd_yal,adr ; pop adr ; rcall print_char_15x22 ; вывести символ 15 х 22 на ЖКИ ret ; выход
;----------------------;
lcd_line1: ; 1я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB0 ; rcall lcd_cmd ; ret ; lcd_line2: ; 2я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB1 ; rcall lcd_cmd ; ret ; lcd_line3: ; 3я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB2 ; rcall lcd_cmd ; ret ; lcd_line4: ; 4я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB3 ; rcall lcd_cmd ; ret ; lcd_line5: ; 5я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB4 ; rcall lcd_cmd ; ret ; lcd_line6: ; 6я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB5 ; rcall lcd_cmd ; ret ; lcd_line7: ; 7я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB6 ; rcall lcd_cmd ; ret ; lcd_line8: ; 8я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB7 ; rcall lcd_cmd ; ret ; lcd_line9: ; 9я Линия ЖКИ для вывода информации rcall lcd_line ; ldi tmp,0xB8 ; rcall lcd_cmd ; ret lcd_line: ; ldi tmp,0x10 ; rcall lcd_cmd ; ldi tmp,0x00 ; rcall lcd_cmd ; ret ;
demonstration: ; Вывод текста из FLASH на ЖКИ rcall lcd_line2 ; выбираем строку ldi zh,high(txt5*2) ; загружаем начальный адрес строки текста ldi zl,low (txt5*2) ; умножаем указатель адреса на 2 ldi loop2,16 ; загружаем количество символов в строке rcall out_text ; выводим текст на ЖКИ
rcall lcd_line4 ; выбираем строку ldi zh,high(txt6*2) ; загружаем начальный адрес строки текста ldi zl,low (txt6*2) ; умножаем указатель адреса на 2 ldi loop2,16 ; загружаем количество символов в строке rcall out_text ; выводим текст на ЖКИ
rcall lcd_line6 ; выбираем строку ldi zh,high(txt4*2) ; загружаем начальный адрес строки текста ldi zl,low (txt4*2) ; умножаем указатель адреса на 2 ldi loop2,16 ; загружаем количество символов в строке rcall out_text ; выводим текст на ЖКИ
rcall lcd_line8 ; выбираем строку ldi zh,high(txt2*2) ; загружаем начальный адрес строки текста ldi zl,low (txt2*2) ; умножаем указатель адреса на 2 ldi loop2,16 ; загружаем количество символов в строке rcall out_text ; выводим текст на ЖКИ
rcall wait_075s ; Demonstration wait ! rcall wait_075s ; Demonstration wait ! rcall clr_lcd ; очистка ЖКИ ret ; выход
Txt1: ; Текст 1 .db "pavel-pervomaysk" Txt2: ; Текст 2 .db "Edited 08.10.15" Txt3: ; Текст 3 .db "ATmega8A-PU cpu " Txt4: ; Текст 4 .db "-Nokia 1200 LCD-" Txt5: .db "----Bathroom----" ; Txt6: .db "--Heated floor--" ; Txt7: .db "----WARNING!----" ; Txt8: .db "--NOT PRESENCE--" ; Txt9: .db " DS WIRE SHORTED" ;
font_5x7: .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00 ; 0x20 ' ' ; 0x21 '!' .db 0x00,0x07,0x00,0x07,0x00,0x14,0x7f,0x14,0x7f,0x14 ; 0x22 '"' ; 0x23 '#' .db 0x24,0x2a,0x7f,0x2a,0x12,0x23,0x13,0x08,0x64,0x62 ; 0x24 '$' ; 0x25 '%' .db 0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00 ; 0x26 '&' ; 0x27 '' .db 0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00 ; 0x28 '(' ; 0x29 ')' .db 0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08 ; 0x2A '*' ; 0x2B '+' .db 0x00,0x50,0x30,0x00,0x00,0x08,0x08,0x08,0x08,0x08 ; 0x2C ',' ; 0x2D '-' .db 0x00,0x60,0x60,0x00,0x00,0x20,0x10,0x08,0x04,0x02 ; 0x2E '.' ; 0x2F '/' .db 0x3e,0x51,0x49,0x45,0x3e,0x00,0x42,0x7f,0x40,0x00 ; 0x30 '0' ; 0x31 '1' .db 0x42,0x61,0x51,0x49,0x46,0x21,0x41,0x45,0x4b,0x31 ; 0x32 '2' ; 0x33 '3' .db 0x18,0x14,0x12,0x7f,0x10,0x27,0x45,0x45,0x45,0x39 ; 0x34 '4' ; 0x35 '5' .db 0x3c,0x4a,0x49,0x49,0x30,0x01,0x71,0x09,0x05,0x03 ; 0x36 '6' ; 0x37 '7' .db 0x36,0x49,0x49,0x49,0x36,0x06,0x49,0x49,0x29,0x1e ; 0x38 '8' ; 0x39 '9' .db 0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x00 ; 0x3A ':' ; 0x3B ';' .db 0x08,0x14,0x22,0x41,0x00,0x14,0x14,0x14,0x14,0x14 ; 0x3C '<' ; 0x3D '=' .db 0x00,0x41,0x22,0x14,0x08,0x02,0x01,0x51,0x09,0x06 ; 0x3E '>' ; 0x3F '?' .db 0x32,0x49,0x79,0x41,0x3e,0x7e,0x11,0x11,0x11,0x7e ; 0x40 '' ; 0x41 'A' .db 0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22 ; 0x42 'B' ; 0x43 'C' .db 0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41 ; 0x44 'D' ; 0x45 'E' .db 0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a ; 0x46 'F' ; 0x47 'G' .db 0x7f,0x08,0x08,0x08,0x7f,0x00,0x41,0x7f,0x41,0x00 ; 0x48 'H' ; 0x49 'I' .db 0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41 ; 0x4A 'J' ; 0x4B 'K' .db 0x7f,0x40,0x40,0x40,0x40,0x7f,0x02,0x0c,0x02,0x7f ; 0x4C 'L' ; 0x4D 'M' .db 0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e ; 0x4E 'N' ; 0x4F 'O' .db 0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e ; 0x50 'P' ; 0x51 'Q' .db 0x7f,0x09,0x19,0x29,0x46,0x46,0x49,0x49,0x49,0x31 ; 0x52 'R' ; 0x53 'S' .db 0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f ; 0x54 'T' ; 0x55 'U' .db 0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x38,0x40,0x3f ; 0x56 'V' ; 0x57 'W' .db 0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07 ; 0x58 'X' ; 0x59 'Y' .db 0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00 ; 0x5A 'Z' ; 0x5B '[' .db 0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00 ; 0x5C '' ; 0x5D ']' .db 0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40 ; 0x5E '^' ; 0x5F '_' .db 0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78 ; 0x60 '' ; 0x61 'a' .db 0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20 ; 0x62 'b' ; 0x63 'c' .db 0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18 ; 0x64 'd' ; 0x65 'e' .db 0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e ; 0x66 'f' ; 0x67 'g' .db 0x7f,0x08,0x04,0x04,0x78,0x00,0x44,0x7d,0x40,0x00 ; 0x68 'h' ; 0x69 'i' .db 0x20,0x40,0x44,0x3d,0x00,0x7f,0x10,0x28,0x44,0x00 ; 0x6A 'j' ; 0x6B 'k' .db 0x00,0x41,0x7f,0x40,0x00,0x7c,0x04,0x18,0x04,0x78 ; 0x6C 'l' ; 0x6D 'm' .db 0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38 ; 0x6E 'n' ; 0x6F 'o' .db 0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c ; 0x70 'p' ; 0x71 'q' .db 0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20 ; 0x72 'r' ; 0x73 's' .db 0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c ; 0x74 't' ; 0x75 'u' .db 0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x30,0x40,0x3c ; 0x76 'v' ; 0x77 'w' .db 0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c ; 0x78 'x' ; 0x79 'y' .db 0x44,0x64,0x54,0x4c,0x44,0x00,0x08,0x36,0x41,0x00 ; 0x7A 'z' ; 0x7B '{' .db 0x00,0x00,0x7f,0x00,0x00,0x00,0x41,0x36,0x08,0x00 ; 0x7C '|' ; 0x7D '}' .db 0x10,0x08,0x08,0x10,0x08,0x06,0x09,0x09,0x06,0x00 ; 0x7E '->'; 0x7F ' ' градус цельсия
font_9x14: ; рубленный шрифт... ; .db 0xff,0xff,0x03,0x03,0x03,0x03,0x03,0xff,0xff,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30, 0x3f,0x3f ; '0' ; .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x3f,0x3f ; '1' ; .db 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30, 0x30,0x30 ; '2' ; .db 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0x30,0x30,0x30,0x30,0x30,0x30,0x30, 0x3f,0x3f ; '3' ; .db 0xff,0xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x3f,0x3f ; '4'; ; .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x30,0x30,0x30,0x30,0x30,0x30,0x30, 0x3f,0x3f ; '5' ; .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30, 0x3f,0x3f ; '6' ; .db 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x3f,0x3f ; '7' ; .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30, 0x3f,0x3f ; '8' ; .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xff,0x30,0x30,0x30,0x30,0x30,0x30,0x30, 0x3f,0x3f ; '9'
; красивый шрифт 9*16 ;------------------------------------------------------------------------------------------------------; .db 0xFC,0xFE,0xFF,0x03,0x03,0x03,0xFF,0xFE,0xFC,0x3F,0x7F,0xFF,0xC0,0xC0,0xC0,0xFF, 0x7F,0x3F ; 0; .db 0x0C,0x0E,0x06,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xFF,0xFF,0xFF,0xC0, 0xC0,0xC0 ; 1; .db 0x06,0x07,0x03,0x03,0x03,0xC7,0xFF,0xFE,0x3C,0xF0,0xF8,0xFC,0xCE,0xC7,0xC3,0xC1, 0xC0,0xC0 ; 2; .db 0x06,0x07,0x83,0x83,0x83,0xC7,0xFF,0x7E,0x3C,0x60,0xE0,0xC1,0xC1,0xC1,0xE3,0xFF, 0x7F,0x3E ; 3; .db 0x00,0x80,0xE0,0x70,0x1C,0xFE,0xFF,0xFF,0x00,0x1E,0x1F,0x19,0x18,0x18,0xFF,0xFF, 0xFF,0x18 ; 4; .db 0xFF,0xFF,0xFF,0xC3,0xC3,0xC3,0xC3,0x83,0x03,0x60,0xE0,0xC0,0xC0,0xC0,0xE1,0xFF, 0x7F,0x3F ; 5; .db 0xF0,0xFC,0xFE,0xCE,0xC7,0xC3,0xC3,0x83,0x00,0x3F,0x7F,0xFF,0xC0,0xC0,0xC0,0xFF, 0x7F,0x3F ; 6; .db 0x03,0x03,0x03,0x03,0xC3,0xF3,0xFF,0x3F,0x0F,0x00,0x00,0xF8,0xFF,0xFF,0x07,0x00, 0x00,0x00 ; 7; .db 0x7C,0xFE,0xFF,0x83,0x83,0x83,0xFF,0xFE,0x7C,0x3E,0x7F,0xFF,0xC1,0xC1,0xC1,0xFF, 0x7F,0x3E ; 8; .db 0xFC,0xFE,0xFF,0x03,0x03,0x03,0xFF,0xFE,0xFC,0x00,0xC1,0xC3,0xC3,0xE3,0x73,0x7F, 0x3F,0x0F ; 9; ;------------------------------------------------------------------------------------------------------;
Cods: .db 0xfc,0xfe,0xc3,0xc3,0xc3,0xc3,0xc3,0xfe,0xfc,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00, 0x3f,0x3f ; 'A' .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0x3c,0x3c,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30, 0x0f,0x0f ; 'B' .db 0xfc,0xfc,0x03,0x03,0x03,0x03,0x03,0x0c,0x0c,0x0f,0x0f,0x30,0x30,0x30,0x30,0x30, 0x0c,0x0c ; 'C' .db 0xff,0xff,0x03,0x03,0x03,0x03,0x03,0xfc,0xfc,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30, 0x0f,0x0f ; 'D' .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30, 0x30,0x30 ; 'E' .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00 ; 'F' .db 0xfc,0xfe,0x03,0x03,0x83,0x83,0x83,0x8e,0x8c,0x0f,0x1f,0x30,0x30,0x31,0x31,0x31, 0x1f,0x0f ; 'G' .db 0xff,0xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xff,0xff,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00, 0x3f,0x3f ; 'H' .db 0x00,0x03,0x03,0xff,0xff,0x03,0x03,0x00,0x00,0x00,0x30,0x30,0x3f,0x3f,0x30,0x30, 0x00,0x00 ; 'I' .db 0x00,0x00,0x00,0x03,0x03,0xff,0xff,0x03,0x03,0x0c,0x1c,0x30,0x30,0x30,0x1f,0x0f, 0x00,0x00 ; 'J' .db 0xff,0xff,0xc0,0xe0,0x30,0x18,0x0c,0x07,0x03,0x3f,0x3f,0x00,0x01,0x03,0x06,0x0c, 0x38,0x30 ; 'K' .db 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x3f,0x30,0x30,0x30,0x30,0x30, 0x30,0x30 ; 'L' .db 0xff,0xff,0x06,0x0c,0x18,0x0c,0x06,0xff,0xff,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00, 0x3f,0x3f ; 'M' .db 0xff,0xff,0x30,0x60,0xc0,0x80,0x00,0xff,0xff,0x3f,0x3f,0x00,0x00,0x00,0x01,0x03, 0x3f,0x3f ; 'N' .db 0xfc,0xfe,0x03,0x03,0x03,0x03,0x03,0xfe,0xfc,0x0f,0x1f,0x30,0x30,0x30,0x30,0x30, 0x1f,0x0f ; 'O' .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0x7e,0x3c,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00 ; 'P' .db 0xfc,0xfe,0x03,0x03,0x03,0x03,0x03,0xfe,0xfc,0x0f,0x1f,0x30,0x30,0x34,0x2c,0x18, 0x37,0x2f ; 'Q' .db 0xff,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0x7e,0x3c,0x3f,0x3f,0x01,0x03,0x06,0x0c,0x18, 0x30,0x20 ; 'R' .db 0x3c,0x7e,0xc3,0xc3,0xc3,0xc3,0xc3,0x83,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x30, 0x1f,0x0f ; 'S' .db 0x03,0x03,0x03,0xff,0xff,0xff,0x03,0x03,0x03,0x00,0x00,0x00,0x3f,0x3f,0x3f,0x00, 0x00,0x00 ; 'T' .db 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0f,0x1f,0x30,0x30,0x30,0x30,0x30, 0x1f,0x0f ; 'U' .db 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x03,0x07,0x0c,0x18,0x30,0x18,0x0c, 0x07,0x03 ; 'V' .db 0xff,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xff,0x0f,0x1f,0x30,0x30,0x1f,0x30,0x30, 0x1f,0x0f ; 'W' .db 0x07,0x0f,0x18,0xf0,0xe0,0xf0,0x18,0x0f,0x07,0x38,0x3c,0x06,0x03,0x01,0x03,0x06, 0x3c,0x38 ; 'X' .db 0x3f,0x7f,0xc0,0xc0,0xc0,0xc0,0xc0,0x7f,0x3f,0x00,0x00,0x00,0x3f,0x3f,0x3f,0x00, 0x00,0x00 ; 'Y' .db 0x03,0x03,0x03,0x83,0xc3,0x63,0x33,0x1f,0x0f,0x3c,0x3e,0x33,0x31,0x30,0x30,0x30, 0x30,0x30 ; 'Z' .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00 ; ' ' space .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x3c,0x3c,0x00, 0x00,0x00 ; '.' point .db 0x00,0x00,0x00,0x3c,0x3c,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f,0x00, 0x00,0x00 ; ':' .db 0x00,0x1c,0x3e,0x63,0x63,0x63,0x3e,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00 ; 'o' градус цельсия .db 0x00,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00 ; '-' минус .db 0xc0,0xc0,0xc0,0xf8,0xf8,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00, 0x00,0x00 ; '+' плюс .db 0x80,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x01,0x01, 0x01,0x00 ; '~' переменка
; .db 0x,0x,0x,0x,0x,0x,0x,0x,0x, ; здесь добавляем свои символы 9 х 14 ; .db 0x,0x,0x,0x,0x,0x,0x,0x,0x ; ' '
font_9x16: ; Digits 0...9; 10 array 18 bytes each; (Nokia 1202 selected phone number digits) ;------------------------------------------------------------------------------------------------------; .db 0xFC,0xFE,0xFF,0x03,0x03,0x03,0xFF,0xFE,0xFC,0x3F,0x7F,0xFF,0xC0,0xC0,0xC0,0xFF, 0x7F,0x3F ; 0; .db 0x0C,0x0E,0x06,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xFF,0xFF,0xFF,0xC0, 0xC0,0xC0 ; 1; .db 0x06,0x07,0x03,0x03,0x03,0xC7,0xFF,0xFE,0x3C,0xF0,0xF8,0xFC,0xCE,0xC7,0xC3,0xC1, 0xC0,0xC0 ; 2; .db 0x06,0x07,0x83,0x83,0x83,0xC7,0xFF,0x7E,0x3C,0x60,0xE0,0xC1,0xC1,0xC1,0xE3,0xFF, 0x7F,0x3E ; 3; .db 0x00,0x80,0xE0,0x70,0x1C,0xFE,0xFF,0xFF,0x00,0x1E,0x1F,0x19,0x18,0x18,0xFF,0xFF, 0xFF,0x18 ; 4; .db 0xFF,0xFF,0xFF,0xC3,0xC3,0xC3,0xC3,0x83,0x03,0x60,0xE0,0xC0,0xC0,0xC0,0xE1,0xFF, 0x7F,0x3F ; 5; .db 0xF0,0xFC,0xFE,0xCE,0xC7,0xC3,0xC3,0x83,0x00,0x3F,0x7F,0xFF,0xC0,0xC0,0xC0,0xFF, 0x7F,0x3F ; 6; .db 0x03,0x03,0x03,0x03,0xC3,0xF3,0xFF,0x3F,0x0F,0x00,0x00,0xF8,0xFF,0xFF,0x07,0x00, 0x00,0x00 ; 7; .db 0x7C,0xFE,0xFF,0x83,0x83,0x83,0xFF,0xFE,0x7C,0x3E,0x7F,0xFF,0xC1,0xC1,0xC1,0xFF, 0x7F,0x3E ; 8; .db 0xFC,0xFE,0xFF,0x03,0x03,0x03,0xFF,0xFE,0xFC,0x00,0xC1,0xC3,0xC3,0xE3,0x73,0x7F, 0x3F,0x0F ; 9; ;------------------------------------------------------------------------------------------------------;
font_15x22: ; Digits 0...9; 5 array 90 bytes each; (Nokia 1202 time digits) ;-------------------------------------;0;1;-----------------------------------------------------------------; .db 0xF8,0xFC,0xFE,0xFE,0xFE,0x0F,0x07,0x07,0x07,0x0F,0xFE,0xFE,0xFE,0xFC,0xF8,0xFF, 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x0F, 0 x1F,0x1F,0x1F,0x3C,0x38,0x38,0x38,0x3C,0x1F,0x1F,0x1F,0x0F,0x07,0x18,0x1C,0x1C,0 x 1E,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 0 0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x38,0x38,0x38,0x3 F ,0x3F,0x3F,0x3F,0x3F,0x38,0x38,0x38,0x38,0x38 ; 0,1; .db 0x38,0x3C,0x3E,0x3E,0x3E,0x0F,0x07,0x07,0x07,0x8F,0xFF,0xFE,0xFE,0xFC,0xFC,0x00, 0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x7E,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x3E,0x3F, 0 x3F,0x3F,0x3F,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x3C,0x3E,0 x 3E,0x3E,0x0F,0x07,0x07,0x07,0x0F,0xFE,0xFE,0xFE,0xFC,0xF8,0x00,0x00,0x00,0x00,0x 0 E,0x0E,0x0E,0x0E,0x1F,0x3F,0xFF,0xFF,0xFF,0xF9,0xE0,0x07,0x0F,0x1F,0x1F,0x1F,0x3 C ,0x38,0x38,0x38,0x3C,0x1F,0x1F,0x1F,0x0F,0x07 ; 2,3; .db 0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0x00,0x00,0xF0, 0xF8,0xFE,0xFF,0xFF,0xCF,0xC7,0xC1,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xC0,0x01,0x01, 0 x01,0x01,0x01,0x01,0x01,0x01,0x3F,0x3F,0x3F,0x3F,0x3F,0x01,0x01,0xFF,0xFF,0xFF,0 x FF,0xFF,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x0F,0x0F,0x0F,0x0F,0x 0 F,0x0E,0x0E,0x0E,0x1E,0x1E,0xFE,0xFE,0xFC,0xFC,0xF0,0x07,0x0F,0x1F,0x1F,0x1F,0x3 C ,0x38,0x38,0x38,0x3C,0x1F,0x1F,0x1F,0x0F,0x07 ; 4,5; .db 0x80,0xE0,0xF0,0xF8,0xFC,0xFC,0x3E,0x1E,0x0E,0x0F,0x07,0x07,0x07,0x00,0x00,0xFF, 0xFF,0xFF,0xFF,0xFF,0x1F,0x0E,0x0E,0x0E,0x1E,0xFC,0xFC,0xFC,0xF8,0xF0,0x07,0x0F, 0 x1F,0x1F,0x1F,0x3C,0x38,0x38,0x38,0x3C,0x1F,0x1F,0x1F,0x0F,0x07,0x07,0x07,0x07,0 x 07,0x07,0x07,0x87,0xE7,0xF7,0xFF,0xFF,0x7F,0x1F,0x0F,0x07,0x00,0x00,0x00,0xC0,0x F 8,0xFE,0xFF,0xFF,0x3F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3 F ,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 6,7; .db 0xF8,0xFC,0xFE,0xFE,0xFE,0x0F,0x07,0x07,0x07,0x0F,0xFE,0xFE,0xFE,0xFC,0xF8,0xF0, 0xF9,0xFF,0xFF,0xFF,0x1F,0x0E,0x0E,0x0E,0x1F,0xFF,0xFF,0xFF,0xF9,0xF0,0x07,0x0F, 0 x1F,0x1F,0x1F,0x3C,0x38,0x38,0x38,0x3C,0x1F,0x1F,0x1F,0x0F,0x07,0xF8,0xFC,0xFE,0 x FE,0xFE,0x0F,0x07,0x07,0x07,0x0F,0xFE,0xFE,0xFE,0xFC,0xF8,0x03,0x07,0x0F,0x0F,0x 0 F,0x1E,0x1C,0x1C,0x1C,0xFE,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x38,0x38,0x38,0x3 C ,0x1C,0x1E,0x1F,0x0F,0x0F,0x07,0x03,0x01,0x00 ; 8,9; ;---------------------------------------------------------------------;8;9;------------------------------------------; .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xe0,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x1c,0x1c,0x1c,0x1c,0x1c,0xff,0xff,0xff,0x1c,0x1c,0x1c,0x1c,0x1c,0x00,0x00, 0 x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x1c,0x 1 c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x0 0 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; +,-; 10;11 .db 0x00,0x1c,0x3e,0x63,0x63,0x63,0x3e,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30, 0 x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 8 0,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x1 f ,0x1f,0x1f,0x1f,0x1f,0x00,0x00,0x00,0x00,0x00 ; ,.; 12;13 .db 0x00,0x00,0x00,0xfc,0xfe,0x03,0x03,0xfe,0xfc,0x00,0x24,0x24,0x24,0x24,0x24,0x00, 0x80,0xc0,0x7f,0x3f,0x00,0x00,0x3f,0x7f,0xc0,0x81,0x01,0x01,0x01,0x01,0x00,0x07, 0 x0f,0x18,0x10,0x10,0x10,0x10,0x18,0x0f,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; термометр
; 0x00,0xf0,0xfc,0xfe,0x0e,0x07,0x07,0x07,0x07,0x0e,0xfe,0xfc,0xf0,0x00,0x00,0x00, 0x00,0x03,0x07,0x07,0x0e,0x0e,0x0e,0x0e,0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x30, 0 x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 старый градус цельсия и точка!
Сообщение отредактировал IgorKossak - Nov 27 2015, 19:42
Причина редактирования: форматирование
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|