Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Дисплей Nokia 3510i и не только


Дисплей Nokia 3510i и не только

Сообщений 61 страница 90 из 266

61

Вот нашел у себя, тренировался с lcd nokia 3310 термометр на ds18b20, в железе все работает, собирал на макеткеЖ

$regfile = "m168def.dat"
$crystal = 8000000

$hwstack = 32
$swstack = 8
$framesize = 54

'$sim

Dim Lsb As Byte
Dim Msb As Byte
Dim Thermo As Integer
Dim Thermo_out As Single
Dim Thermo_lcd As String * 5
'Dim Cel As String * 5
'Cel = Data &H00 , &H07 , &H05 , &H07 , &H00

1wire_pin Alias Portb.0

Config 1wire = 1wire_pin

'-------------------------------------------------------------------------------

Config Portd.6 = Output                                     'GND
Portd.6 = 0

Config Portd.4 = Output                                     'D/C
D3310dc Alias Portd.4

Config Portd.5 = Output                                     '
D3310ce Alias Portd.5

Config Portd.7 = Output                                     'Reset
D3310re Alias Portd.7

'конфигурируем SPI в программном режиме. SCLK (pin 2) - PORTD.2; SDA (pin 3) - PORTD.3;

Config Spi = Soft , Din = Portd.1 , Dout = Portd.3 , Ss = None , Clock = Portd.2

'инициализируем SPI

Spiinit

$include "3310init.bas"

'инициализируем дисплей

Call D3310reset
Call D3310init
Call D3310clear

и дальше сама программа

0

62

Все то же самое, одни фиг - не пашет.
GND подключал к общей земле.

0

63

Выкладываю свою наработку по увеличению шрифтов в дисплеях нокия 3310 и 1100. Возможное увеличение 1х, 2х, 3х, 4х.
Из шрифтов ничего не вырезано и не убрано шрифт стандартный(русский присутствует). Увеличение шрифта происходит математически.
Единственное изменение это вывод информации:
   - для 1100
           Call Nokia_pos(1 , 1) здесь указываем координаты x,y для вывода
           Call Nokia_text( "1+1" , 1 , 0) здесь идет текст, увеличение 1-4, и инверсия (1 инвертированный)

  - для 3310

           Call D3310position(0 , 2) то же самое как и у 1100
           Call D3310print( "+12" , 4 , 0) то же самое как и у 1100

Единственное что не доработано это координата х она теперь задается по точкам от 0 до конечного значения
координата Y так и осталось от 0 до 6

билиотека

Отредактировано SyncMVGP (2012-04-25 12:27:57)

0

64

Для 1100 архив пустой...

0

65

Извиняюсь исправил
библиотека

0

66

А с китайскими дисплеями никто не работал? смещается текст вверх хоть тресни, я так понимаю при инициализации надо задать координаты....

'-------------------- процедура инициализации дисплея --------------------------
Sub D3310init
   D3310ce = 0                                              'Разрешаем ввод отображения данных
   D3310dc = 0                                              'режим команд. Выбор режима D/C(иногда называют AO) переключатель данные=1/команда=0
   D3310commandout &H21                                     'Перевод LCD в режим внешних команд.Расширенный режим команды, горизонтальное расположение
   D3310commandout &HC8                                     'Средний контраст (Contrast = 72) включить внутренний источник, Vop=0x48
   D3310commandout &H06                                     'Установить температурный коэффициент
   D3310commandout &H13                                     'наклон 1:48
   D3310commandout &H7F                                      ' пробовал вставлять эту строку первая строка на пиксель ниже и не влазиет большой шрифт
   D3310commandout &H20                                     'Перевод LCD в режим cтандартных команд, Горизонтальная адресация (внутренние команды)
   D3310commandout &H0C                                     'LCD в нормальный режим отображения (черным по белому) D=1 E=0
   D3310ce = 1                                              'Отключить ввод отображения данных дисплея
End Sub
никто не находил другого решения?

Отредактировано amv2000 (2012-05-06 17:10:40)

0

67

Вот кусок инициализации для китайского дисплея смещает на 5 точек а потом просто надо задавать координаты по Y не от 0 до 6 а от 1 до 7

  D3310ce = 0                                              'Display data input enable
   D3310dc = 0                                              'Command mode
   D3310commandout &H21                                     'Extended command mode, horizontal addressing

   D3310commandout &H45  ' смещение

   D3310commandout &HC8                                     'Middle contrast
   D3310commandout &H06                                     'Temperature setting
   D3310commandout &H13                                     'Bias 1:48
   D3310commandout &H20                                     'Normal command mode, horizontal addressing
   D3310commandout &H0C                                     'Uninverted Screen

0

68

Пробовал  D3310commandout &H45  ' смещение
и так  D3310commandout &H7F      немного лучше, но в любом случае при выводе картинки она рассыпается, т.е не картинка а набор точек, если со смещением еще как то можно смириться, то с этим просто мрак.

С отображением текста и цифр удалось,http://uploads.ru/t/9/x/O/9xObw.jpghttp://uploads.ru/t/b/O/L/bOLkE.jpg
а вот при выводе своей картинки всё так же рассыпается: http://uploads.ru/t/L/N/m/LNmk5.jpg
  Выводил не с 0 строки а с 1 по 6
И в подпрограмме очистки дисплея ввел 'For D3310pixelloop = 0 To 711 вместо For D3310pixelloop = 0 To 503 без этого был мусор либо в верхней, либо в нижней строке
Инициализация:
Код:
Sub D3310reset
D3310re = 0
Waitus 250
D3310re = 1
End Sub

Sub D3310init
D3310ce = 0 'Display data input enable
D3310dc = 0 'Command mode
D3310commandout &H21 'Перевод LCD в режим внешних команд.Расширенный режим команды, горизонтальное расположение
D3310commandout &H45 ' Для китайского
D3310commandout &HC8 'Middle contrast
D3310commandout &H06 'Temperature setting
D3310commandout &H14 'Bias 1:48 //как ни странно это контрастность по умолчанию 13
D3310commandout &H20 'Normal command mode, horizontal addressing
D3310commandout &H0C 'Uninverted Screen
D3310ce = 1 'Display data input disable
End Sub

Теперь найти бы причину не правильного вывода картинок?

Отредактировано amv2000 (2012-05-07 15:16:23)

0

69

SyncMVGP написал(а):

Вот кусок инициализации для китайского дисплея

Подскажите при выводе графики данные выводятся блоками как и строки или же попиксельно выводится картинка?

0

70

Ребята у кого есть китайский клон Nokia 3310 с двумя дугами, если есть как он графику выводит?
Я уже библиотеку искорячил вдоль и поперек, в протеусе картинка есть на деле в железе со сдвигом (все плывет)
Пытался опираться на исходники С, где якобы с клонами работает - пока безуспешно...вылаживаю архив здесь я вывожу только графику, может кто подскажет чего не так, или чего надо этой напасти... http://files.mail.ru/USM3HH

0

71

картинка выводится побайтно ак же как и  буквы и похоже что картинку нужно начинать не с 0 а со смещения

For D3310pixelloop = 0 To 503                     вместо 0 походу нужно начинать с 84 (+-1) потому что мы сдвигаем картинку вверх на 5 точек то есть           пропускаем первый ряд и начинаем со второго а вместо 503 587 (+-1)  (503+84) надо поэкспериментировать

      Read D3310column
      Call D3310dataout(d3310column)
   Next D3310pixelloop
   D3310ce = 1                                              'Display data input disable

0

72

Не получается так тоже, начинал от83-85 до 586-588 результат такой же россыпь.

0

73

Выкладываю доработанную библиотеку для дисплея 1100 и 3310 теперь можно делать увеличение до 8 крат и можно их сужать или утолщать

Call Nokia_pos(1 , 1)
Call Nokia_text( "1234" , 8 , 0 , 4) последняя цифра показывает толщину шрифта

Для уменьшения кода можно в библиотеке поотключать ненужные шрифты 3,5,6,8
В библиотеке отключен вывод картинки если нужно то можете его раскроментировать.


Библа

0

74

Всем привет!
Немного "причесал" файл 3310end, может кому интересно.
Дисплей Nokia 5110.

Код:
Sub D3310reset
   D3310re = 0
   Waitus 250
   D3310re = 1
End Sub

Sub D3310init
   D3310ce = 0                                              'Display data input enable
   D3310dc = 0                                              'Command mode
   D3310_write_byte &H21 , 0                                'Extended command mode, horizontal addressing
   D3310_write_byte &HC8 , 0                                'Middle contrast
   D3310_write_byte &H06 , 0                                'Temperature setting
   D3310_write_byte &H13 , 0                                'Bias 1:48
   D3310_write_byte &H20 , 0                                'Normal command mode, horizontal addressing
   Call D3310clear
   D3310_write_byte &H0C , 0                                'Uninverted Screen
End Sub

Sub D3310clear
Local D3310loop As Word                                     'Loop variable for the pixels

   D3310_write_byte &H20 , 0                                'Normal command mode, horizontal addressing
   D3310_write_byte &H80 , 0                                'Set RAM X address to 0
   D3310_write_byte &H40 , 0                                'Set RAM Y address to 0
   D3310dc = 1                                              'Go to data mode
   For D3310loop = 0 To 503                                 'Send 504 blank pixels
      D3310_write_byte &H00 , 1
   Next D3310loop
End Sub

Sub D3310invert
   D3310_write_byte &H0D , 0                                'Inverted screen
End Sub

Sub D3310uninvert
   D3310_write_byte &H0C , 0                                'Uninverted screen
End Sub

Sub D3310_write_byte(byval D3310value As Byte , Byval Dc As Byte)
    D3310ce = 0
    If Dc = 0 Then
      D3310dc = 0                                           'Command mode
    Else
      D3310dc = 1                                           'Data mode
    End If
    Shiftout Portd.6 , Portd.4 , D3310value , 1
    D3310ce = 1
End Sub


Sub D3310_set_xy(byval D3310x As Byte , Byval D3310y As Byte)       'Y is the row (0-5), X is the column (0-13)

   Local D3310byte As Byte                                  'Command or data output

   D3310_write_byte &H20 , 0                                'Horizontal Addressing

   Waitus 250                                               'Wait for the CE to settle

   D3310ce = 0                                              'Display data input enable
   D3310dc = 0                                              'Command mode

   D3310byte = D3310x * &H06                                'Send horizontal address
   D3310byte = D3310byte + &H80
   Shiftout Portd.6 , Portd.4 , D3310byte , 1

   D3310byte = D3310y + &H40                                'Send vertical address
   Shiftout Portd.6 , Portd.4 , D3310byte , 1

   D3310ce = 1                                              'Display data input disable

End Sub

Sub D3310bmpout                                             'You must Restore D3310bmp* before you call D3310bmpout

   Local D3310pixelloop As Word                             'Loop variable for the pixels
   Local D3310column As Byte                                'Display column output

   D3310_write_byte &H20 , 0                                'Normal command mode, horizontal addressing
   D3310_write_byte &H80 , 0                                'Set RAM X address to 0
   D3310_write_byte &H40 , 0                                'Set RAM Y address to 0

   For D3310pixelloop = 0 To 503                            'Read and print the 504 pixel columns
      Read D3310column
      Call D3310_write_byte(d3310column , 1)
   Next D3310pixelloop

End Sub

Sub D3310print(byval D3310string As String * 14)

Local D3310len As Byte                                      'Holds the length of D3310string
Local D3310char As String * 1                               'Holds each consecutive character in turn during display output
Local D3310loop As Byte                                     'Loop variable for the string
Local D3310columnloop As Byte                               'Loop variable for the columns
Local D3310column As Byte , Tmp As Byte , I As Integer      'Display column output


    D3310len = Len(d3310string)                             'Establish the number of characters

    For D3310loop = 1 To D3310len                            'Loop through the string
      D3310char = Mid(d3310string , D3310loop , 1)          'Get the current character
      Tmp = Asc(d3310char)
      If Tmp < $80 Then Tmp = Tmp - $20
      I = Tmp * 6

      For D3310columnloop = 1 To 6
        D3310column = Lookup(i , Font)
        Call D3310_write_byte(d3310column , 1)
        Incr I
      Next

    Next D3310stringloop

    D3310ce = 1                                             'Display data input disable

End Sub

Вместо D3310commandout и D3310dataout использую
D3310_write_byte(byval D3310value As Byte , Byval Dc As Byte),
Dc = 0 - команда, 1 - дата.

0

75

alex_r61 написал(а):

может кому интересно.

Конечно интересно, как говорится мелочь а приятно :cool:

0

76

В дополнение, я использовал полный знакогенератор 256*6.
http://uploads.ru/?v=FEdkZ.png
У меня Mega644, есть где развернуться, между латинским и
русским шрифтами есть свободное место для спецсимволов
или псевдографики.

0

77

А не подумывали о том как скармливать дисплею Nokia 3310 графику в формате bgf, файл выходит по объему меньше ?

0

78

Не вижу смысла. Нужна полная информация о формате, да ещё надо учесть время на
распаковку, а для этого нужен большой буфер(ОЗУ). При обработке графики небольшими
порциями получим "тормоза".  Т.е. опять те же "грабли".
Для работы с графикой нужен проц с ОЗУ от 2К, т.е. Mega64/644 и выше, а ещё лучше
с ПДП, т.е. XMEGA. У китайцев Arduino Mega 1280 уже меньше тысячи.
Сейчас пытаюсь портировать библиотеку 3310 от Arduino. И ещё купил такой дисплей
http://iteadstudio.com/store/index.php? … ucts_id=54
хочу попробовать, никто не возился с таким?

0

79

SyncMVGP написал(а):

Выкладываю доработанную библиотеку для дисплея 1100 и 3310 теперь можно делать увеличение до 8 крат и можно их сужать или утолщать

Call Nokia_pos(1 , 1)
Call Nokia_text( "1234" , 8 , 0 , 4) последняя цифра показывает толщину шрифта

Для уменьшения кода можно в библиотеке поотключать ненужные шрифты 3,5,6,8
В библиотеке отключен вывод картинки если нужно то можете его раскроментировать.

Библа

Большое спасибо за библиотеку!
Проверял на проекте  УЗ дальномера
http://avrproject.ru/publ/kak_podkljuch … 4/2-1-0-51
(отдельное спасибо автору), заменив цифровой дисплей 16*2 на оригинальный графический от Nokia3310 - работает!
На китайском дисплее пока не проверял - проверю позже.

В тексте 3310init.bas есть неточности в примерах - 
Call D3310initialisation нужно заменить на Call D3310init
В  вызовах Call D3310print нужно перечисллять ВСЕ параметры (текст, увеличение, ширина и инверсия), а не только текст.
Иначе Bascom ругается :)

При инициализации SPI убрал Din = Portb.1 так как у дисплея нет выхода данных.

0

80

Mrshilov написал(а):

http://avrproject.ru/publ/kak_podkljuch … 4/2-1-0-51

лучше наверное здесь:
http://avrproject.ru/
обсудить...

0

81

SyncMVGP написал(а):

Выкладываю свою наработку по увеличению шрифтов в дисплеях нокия 3310 и 1100. Возможное увеличение 1х, 2х, 3х, 4х.
Из шрифтов ничего не вырезано и не убрано шрифт стандартный(русский присутствует). Увеличение шрифта происходит математически.
Единственное изменение это вывод информации:
   - для 1100
           Call Nokia_pos(1 , 1) здесь указываем координаты x,y для вывода
           Call Nokia_text( "1+1" , 1 , 0) здесь идет текст, увеличение 1-4, и инверсия (1 инвертированный)
  - для 3310
           Call D3310position(0 , 2) то же самое как и у 1100
           Call D3310print( "+12" , 4 , 0) то же самое как и у 1100
Единственное что не доработано это координата х она теперь задается по точкам от 0 до конечного значения
координата Y так и осталось от 0 до 6

билиотека
Отредактировано SyncMVGP (2012-04-25 12:27:57)

Всем,Привет! Если не жалко дайте пожалуйста картинку шрифтов для 3310, хочу цифры подправить ,кое что добавить и удалить.
Заранее СПАСИБО!

0

82

Неужели нет ни у кого?

0

83

Александр.К написал(а):

Неужели нет ни у кого?

88 пост
Ну или здесь http://bascom.at.ua/publ/bolshie_simvol … 0/1-1-0-72

Отредактировано amv2000 (2012-07-02 20:19:19)

0

84

Да,но, для 3310 другое разрешение.

0

85

Александр.К Ну чем закончились Ваши эксперименты? А то я уже и волнуюсь, потеряли человека :flag:

0

86

amv2000 написал(а):

Александр.К Ну чем закончились Ваши эксперименты? А то я уже и волнуюсь, потеряли человека

Дык ни чем. у картинки разрешение не то, пробывал уменьшить получается бурда мазаная. Неужели трудно дать настоящую картинку,именно для 3310.

0

87

Всем привет
не подскажете в чем проблема, не запускается дисплей Nokia3310 в Протеусе с доработанной библиотекой (увеличение, утолщение шрифта)
модель дисплея от Отто, со стандартной библиотекой все нормально, да пробовал эту библиотеку с дисплеем Nokia1100 все нормально,
постами выше люди запускали дисплей может что подскажете?

0

88

А возможно ли сведение данных библиотек к стандартным Баскома ?
Очень заинтересовала статья http://bascom.at.ua/publ/podkljuchaem_k … 5/1-1-0-69

За сим очень интересно, возможно ли сделать библиотеки так, чтобы работали стандартные команды типа
LOCATE, CLS, PSET, LINE, CIRCLE, SHOWPIC и SHOWPICE ?
Потому что в приведенном варианте несколько неудобно выводить , например , числа из переменных- их надо переводить в строковые, или рамки- это картинку делать....

Отредактировано Skull (2012-09-29 00:40:57)

0

89

Вот, поигрался с дисплеем 1110, решил сделать часики, и столкнулся с такой проблемой- при включении софтовых часов, индикатор перестаёт показывать. Даже если просто включить асинхронный режим ASSR=10, и всё, он отказывется выводить инфрмацию на экран. камень-Мега32. В чём проблема?, подскажите плиз. Как побороть?

0

90

Ребята, кто занимался библиотеками на 1202, вот примеры библиотек на Си, может поможет с функционалом:
http://digitalchip.ru/rabotaem-s-disple … om-rezhime

Уж больно хорош экранчик, да дешев ))

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Дисплей Nokia 3510i и не только