Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [114]
Наш опрос
Оцените мой сайт
Всего ответов: 1166
Главная » Статьи » Мои статьи

Двухканальный термометр на дисплее от Nokia3310
Домашний экономичный термометр, показывающий температуру в комнате и на улице. 
Запоминает и показывает максимум и минимум за период измерения.
Элементы графики на дисплее оживляют конструкцию.

Изначально разместил на Радиокоте.


Измерение температуры делается раз в 15 секунд, по таймерному прерыванию.
После измерения информация выводится на дисплей, и микроконтроллер уходит в режим Idle.
В любой момент времени можно нажать кнопку S1 для просмотра зафиксированных
максимумов и минимумов для внутреннего и наружного датчиков.
При нажатии S2 максимумы и минимумы будут сброшены на текущие показания температуры.
В исходном состоянии на дисплей слева от показаний могут выводиться стрелки,
которые указывают на изменение температуры в сравнении с предыдущим измерением.



Появление смайлика в правом верхнем углу указывает на то, что сейчас идет процесс
снятия показаний с датчиков температур и вывод обновленной информации на дисплей.



Левая кнопка - показать максимумы и минимумы,
правая - сбросить максимумы и минимумы на текущие показания.
Под  дисплей  я  подложил  отрезок  листа  белой бумаги - так картинка
смотрится лучше. Справа виден датчик, который должен висеть на улице.

Программа разрабатывалась на Bascom AVR, использовалась немного доработанная
библиотека для дисплея Nokia3310:

 1. в файле 3310end.bas были закомментированы строки с неиспользованными символами,
 что сильно экономит память;
 2. были нарисованы новые символы (знак градуса, смайлик, стрелки);
 3. были внесены изменения в прорисовку самих символов (чтобы сама картинка
 не портилась при выводе информации).

Картинки рисовались в программе FastLCD.

Символы делались в экселевском генераторе символов.

Схема питается от трех вольт.

В режиме Idle схема употребляет 0.4мА с микроконтроллером Atmega8a-pu (au),
и 0,6 мА с микроконтроллером Atmega8-16PU (но работа его от трех вольт не гарантирована).

При измерении температуры ток возрастает до 2,5 мА.

Фьюзы - по умолчанию (1 мгц от внцутренней RC-цепочки).

Повышать питание выше трех вольт не рекомендуется, ибо чревато для дисплея.
Я запитал схему от элемента питания CR123A (от фотоаппаратов).



В  комплекте две прошивки - с паузой между измерениями в 15 секунд и в
67  секунд  (вторая  в  четыре  раза лучше экономит батарейку, так как
датчики включаются реже).

Разбирая текст программы, несложно понять  принцип вывода информации на дисплей:

Файлы из библиотеки должны быть в одной папке с вашей программой.
Дисплей Nokia 3310 состоит из 14 столбцов (с 0 по 13) и 6 строк (с 0 по 5).
Выводить можно только строковую переменную или нужный текст в кавычках:
 
      $include "3310init.bas"             
      Call D3310reset                            ‘сброс и инициализация дисплея
      Call D3310init
      Call D3310clear                            ‘очистка дисплея 
      Dim a as integer
      Dim b As String * 10
 
‘Программа, в результате чего считаем переменную "a”

    b = str (a)
    Call D3310position(4 , 1)     ‘ здесь задаем позицию для вывода, X и Y
    Call D3310print(b)               ‘ и выводим значение "b”
    Call D3310position(4 , 3)
    Call D3310print("Hello world !!!”)   ‘ здесь выводим текст

$include "3310end.bas"   ‘в самом конце программы !
 
Картинку готовим в программе FastLCD – выбираем размер экрана 84х48 точек, и сетку 6х8 – так мы будем видеть экран,  поделенный на знакоместа. 
Рисуем точками, потом нажимаем кнопку BAS и сохраняем полученный файл в виде файла "имя.bas”.    
Открываем полученный файл и приводим его к такому виду:

bmp:
data &hFC,&h02,&h01,&h01,&h01,&h01,&h01,&h01,&h81,&h41,&h21,&h11,&hC9,&h11
data &hF9,&hF9,&h01,&h01,&h01,&h01,&h01,&h01,&h01,&h01,&h01,&h01,&h01,&h01
   
А выводим так:
Restore Bmp                                             
Call D3310bmpout
   *   *   *   *   *  
Текст программы
   *   *   *   *   *
$include "имя.bas"    ‘в самом конце программы !

Нужные символы рисуем так: открываем генератор символов, ставим единички там, где нужно закрасить точку. Потом копируем строку Data и вставляем ее в файл 3310end.bas в блок "ASCII data” вместо нужного символа. Например, нам не нужен символ "b", вместо него мы хотим нарисовать символ градуса. Находим строку:
    B1:
    Data &H7F , &H48 , &H44 , &H44 , &H38

    И вставляем свою:
    B1:
    Data &H00 , &H00 , &H06 , &H06 , &H00

    Теперь если написать: 
         Call D3310position(4 , 3)
         Call D3310print(b)
    то выведется символ градуса.
 
Символы рисуются размером 5x7 точек, нижняя шестая строка и правый восьмой столбец забиваются автоматически нулями, чтобы был межсимвольный и межстроковой интервал.
Это делает сама библиотека.



Автор - Gordon Shumway aka Alexey.
Категория: Мои статьи | Добавил: bascom (25.11.2011)
Просмотров: 15315 | Комментарии: 7
Всего комментариев: 7
7  
Вообще-то моя самая хорошая публикация

6  
а если добавить еще часы ??? не ??

3  
Дисплей спокойно держит 5 Вольт. Проверено.
Вот пример: http://radioparty.ru/index.php/device-pic/209-pic18f2520nokia3310lcd

2  
Вопрос первый: нигде не могу найти китайский дисплей, нокиевских ведро.... :-(
Вопрос второй: насколько далеко можно вынести датчик с сечением проводов 0.5 кв.?

4  
Доброго времени суток ! У нас эти дисплеи продаются по 65 руб. в комплекте с подложкой клавиатуры и динамиком (Москва, митинский радиорынок, интернет-магазин siriust.ru.)
Про длину кабеля с датчиком - делал примерно метра четыре - работало нормально.

Про питание дисплея 5 вольтами - есть даташит. Я убил один дисплей именно так.

5  
Вот даташит http://www.myplace.nu/mp3/files/pcd8544.pdf страница 17. Держит до 7 вольт.
Если мало примеров, то вот еще:
http://www.instructables.com/id/Connecting-Nokia-3310-LCD-to-USB-using-AVR/step3/Soldering-it-together/
http://fandigunawan.wordpress.com/2008/06/18/lcd-nokia-3310-pcd8544-driver-in-winavravr-gcc/
http://www.vsi.ru/~sva/comp/nokialcd.htm

1  
Хороший девайс.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Radan Studio © 2017