Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
05.11.2008, 00:46
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
HD44780 и своя кодовая таблица
Привет.
Купил ЛСД на HD44780.
Сел, запустил, вывел текст.
Но.. вместо русских букв выводит непонятные вимволы.
Решил записать свою кодовую таблицу... но не тут то было.
Не питеш почему то
Посмотрите код, где баги в записи таблицы.
Код:
|
;************************************************* **************************
lcd_write_cmd:
rcall lcd_status
cbi LCD_C_PORT,LCD_RS ; Command RS=0
cbi LCD_C_PORT,LCD_RW ; Command RW=0
rjmp lcd_write
;************************************************* **************************
lcd_write_data:
rcall lcd_status
lcd_data:
sbi LCD_C_PORT,LCD_RS ; Daten RS=1
lcd_write:
cbi LCD_C_PORT,LCD_RW ; Write RW=0
out LCD_D_OUT,TEMP_A ; Daten raus
sbi LCD_C_PORT, LCD_E ; строб HI
nop nop nop nop nop nop nop nop ; 140ns
cbi LCD_C_PORT, LCD_E ; строб LOW
ret
;************************************************* **************************
lcd_status:
push TEMP_A
clr TEMP_A
out LCD_D_DIR,TEMP_A ; дата-порт INPUT
cbi LCD_C_PORT, LCD_RS ; комманда чтения бита состояния RS=0, RW=1
sbi LCD_C_PORT, LCD_RW
lcd_status_loop:
sbi LCD_C_PORT, LCD_E ; строб HI
nop nop nop nop nop nop nop nop ; 140ns
in TEMP_A,LCD_D_IN ; Daten lesen
cbi LCD_C_PORT, LCD_E ; строб LOW
sbrc TEMP_A,7 ; пропускаем если бит Busy равен нулю (ЛСД готов к работе)
jmp lcd_status_loop ; weiter warten
ser TEMP_A
out LCD_D_DIR,TEMP_A ; дата-порт OUTPUT
pop TEMP_A
ret
;************************************************* **************************
lcd_write_chargen:
load_p Z,(2*charset)
ldi TEMP_A, 0b01000000
rcall lcd_write_cmd
ldi TEMP_B,CHR_ANZ*8 ; 4x8Byte (11x8Byte)
lcd_write_chargen_loop:
lpm TEMP_A,Z+
rcall lcd_write_data
dec TEMP_B
brne lcd_write_chargen_loop
ldi TEMP_A,AWROFF
rcall lcd_write_cmd
ret |
После инициализации вызываю процедуру lcd_write_chargen, после - вывод текста.
Может у кого-то есть рабочие исходники бля записи символов на асме.
|
|
|
|
05.11.2008, 00:49
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Да, и...
Код:
|
charset:
.db 0b00000000,0b00000000 ;$9D -› $AB градус цельсия
.db 0b00000000,0b00111111
.db 0b00000000,0b00000000
.db 0b00000000,0b00000000
.db 0b00000000,0b00000000 ;$9D -› $AB градус цельсия
.db 0b00000000,0b00000000
.db 0b00000000,0b00001100
.db 0b00001100,0b00000000
.db 0b00001000,0b00010100 ;$9D -› $AB градус цельсия
.db 0b00001000,0b00000011
.db 0b00000100,0b00000100
.db 0b00000011,0b00000000
.db 0b00001110,0b00010001 ;$80 -› $C0 А
.db 0b00010001,0b00010001
.db 0b00011111,0b00010001
.db 0b00010001,0b00000000
.db 0b00011110,0b00010000 ;$81 -› $C1 Б
.db 0b00010000,0b00011110
.db 0b00010001,0b00010001
.db 0b00011110,0b00000000
.db 0b00011110,0b00010001 ;$81 -› $C1 В
.db 0b00010001,0b00011110
.db 0b00010001,0b00010001
.db 0b00011110,0b00000000
.db 0b00011111,0b00010001 ;$81 -› $C1 Г
.db 0b00010000,0b00010000
.db 0b00010000,0b00010000
.db 0b00010000,0b00000000
.db 0b00000110,0b00001010 ;$84 -› $C4 Д
.db 0b00001010,0b00001010
.db 0b00001010,0b00011111
.db 0b00010001,0b00000000
.db 0b00011111,0b00010000 ;$85 -› $C5 Е
.db 0b00010000,0b00011110
.db 0b00010000,0b00010000
.db 0b00011111,0b00000000
.db 0b00010101,0b00010101 ;$85 -› $C5 Ж
.db 0b00010101,0b00001110
.db 0b00010101,0b00010101
.db 0b00010101,0b00000000 |
и
|
|
|
|
05.11.2008, 02:10
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Мда, я в шоке.
... делают ЛСД да 30 у.е. и без поддержки прямой заливки всей таблици кодовой.... ужос прям.
Я тупо в шоке.
Ладно, сверху код рабочий.... кому нада - юзайте.
Постал другой вопрос.
АСКИ не совпадает по символам с таблицей в ЛСД. А в аврстудио нету желания прописывать все символы по их кодировке... ибе это извращенство.
Долго и кумарно.
Какие кто находил решения?
Кроме тупой замены символов аски на гругие в процессе вывода.
Типо:
Код:
|
cpi TEMP_A, $xx
brne ne_ravno_A
ldi TEMP_A, $YY
ne_ravno_A: |
где, хх - кодировка в АСКИ, а YY - кодировка в таблице 44780.
|
|
|
|
05.11.2008, 02:45
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Да ужас.
Прям монолог одного меня
Нашел прогу.
Перекодит все и вся в нечитабельный код типа 123,12,3,12
и то в не в хеке.
Читать конечно анриал, но зато типо экономия времени на обработку "на лету".
Но.. не прет меня. Я думаю стоит пойти в сторону уменьшения производительности (за счет того, что будем делать перебор).
Да и... перебирать нада не все, а только некоторые символы, скорее всю таблицу русского языка, ну ... от силы 40*3=120 тактов... хотя для обной буквы... у.. много будет в куче, ести выводить все 40 символов.
На 16Мгц, я думаю будет не слишком критично.
Кому нада - прога ниже.
Цитата:
|
HD44780 Перекодировщик Win-текста сообщений для ЖКИ-контроллера HD44780 Позволяет решить трудности с несоответствием кодов русских букв, зашитых в контроллер HD44780 с ANSI-кодировкой Windows и одновременно избавиться от программного перекодирования "на лету", мгновенно создав Си-код на основе набранного текста.
|
http://affon.narod.ru/AVR.html
|
|
|
|
05.11.2008, 02:52
|
|
Прописка
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Думал сразу эту прогу посоветовать, но подумал, что цель - залить свой знакогенератор
|
|
|
|
05.11.2008, 04:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от ua_gruzin
|
Читать конечно анриал, но зато типо экономия времени на обработку "на лету".
|
А в чём проблем со временем? Я пишу сообщения в Виндовой кодировке а при выводе перекодирую по таблице. Зато удобно кодить и смотеть в программаторе ссобщения. А времени дополнительно на один символ 2-3 микросекунды. Писано и для AVR и для PIC. Обычно паралельно обрабатывается ещё несколько задачь.
|
|
|
|
05.11.2008, 17:01
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Кодим "на лету"
Код:
|
shift_from_win_to_44780:
;---------------------------------
cpi TEMP_A, 224
brlo shift_from_win_to_44780_low_224
jmp shift_from_win_to_44780_more_224
shift_from_win_to_44780_low_224:
;---------------------------------
cpi TEMP_A, 192 ;A
brne go_out_ne_02
ldi TEMP_A, 65
go_out_ne_02:
cpi TEMP_A, 193 ;Б
brne go_out_ne_03
ldi TEMP_A, 160
go_out_ne_03:
cpi TEMP_A, 194 ;В
brne go_out_ne_04
ldi TEMP_A, 66
go_out_ne_04:
cpi TEMP_A, 195 ;Г
brne go_out_ne_05
ldi TEMP_A, 161
go_out_ne_05:
cpi TEMP_A, 196 ;Д
brne go_out_ne_06
ldi TEMP_A, 224
go_out_ne_06:
cpi TEMP_A, 197 ;Е
brne go_out_ne_07
ldi TEMP_A, 69
go_out_ne_07:
cpi TEMP_A, 198 ;Ж
brne go_out_ne_08
ldi TEMP_A, 163
go_out_ne_08:
cpi TEMP_A, 199 ;З
brne go_out_ne_09
ldi TEMP_A, 164
go_out_ne_09:
cpi TEMP_A, 200 ;И
brne go_out_ne_10
ldi TEMP_A, 165
go_out_ne_10:
cpi TEMP_A, 201 ;Й
brne go_out_ne_11
ldi TEMP_A, 166
go_out_ne_11:
cpi TEMP_A, 202 ;К
brne go_out_ne_12
ldi TEMP_A, 75
go_out_ne_12:
cpi TEMP_A, 203 ;Л
brne go_out_ne_13
ldi TEMP_A, 167
go_out_ne_13:
cpi TEMP_A, 204 ;М
brne go_out_ne_14
ldi TEMP_A, 77
go_out_ne_14:
cpi TEMP_A, 205 ;Н
brne go_out_ne_15
ldi TEMP_A, 72
go_out_ne_15:
cpi TEMP_A, 206 ;О
brne go_out_ne_16
ldi TEMP_A, 79
go_out_ne_16:
cpi TEMP_A, 207 ;П
brne go_out_ne_17
ldi TEMP_A, 168
go_out_ne_17:
cpi TEMP_A, 208 ;Р
brne go_out_ne_18
ldi TEMP_A, 80
go_out_ne_18:
cpi TEMP_A, 209 ;С
brne go_out_ne_19
ldi TEMP_A, 67
go_out_ne_19:
cpi TEMP_A, 210 ;Т
brne go_out_ne_20
ldi TEMP_A, 84
go_out_ne_20:
cpi TEMP_A, 211 ;У
brne go_out_ne_21
ldi TEMP_A, 169
go_out_ne_21:
cpi TEMP_A, 212 ;Ф
brne go_out_ne_22
ldi TEMP_A, 228
go_out_ne_22:
cpi TEMP_A, 213 ;Х
brne go_out_ne_23
ldi TEMP_A, 88
go_out_ne_23:
cpi TEMP_A, 214 ;Ц
brne go_out_ne_24
ldi TEMP_A, 255
go_out_ne_24:
cpi TEMP_A, 215 ;Ч
brne go_out_ne_25
ldi TEMP_A, 171
go_out_ne_25:
cpi TEMP_A, 216 ;Ш
brne go_out_ne_26
ldi TEMP_A, 172
go_out_ne_26:
cpi TEMP_A, 217 ;Щ
brne go_out_ne_27
ldi TEMP_A, 226
go_out_ne_27:
cpi TEMP_A, 218 ;Ъ
brne go_out_ne_28
ldi TEMP_A, 173
go_out_ne_28:
cpi TEMP_A, 219 ;Ы
brne go_out_ne_29
ldi TEMP_A, 174
go_out_ne_29:
cpi TEMP_A, 220 ;Ь
brne go_out_ne_30
ldi TEMP_A, 98
go_out_ne_30:
cpi TEMP_A, 221 ;Э
brne go_out_ne_31
ldi TEMP_A, 175
go_out_ne_31:
cpi TEMP_A, 222 ;Ю
brne go_out_ne_32
ldi TEMP_A, 176
go_out_ne_32:
cpi TEMP_A, 223 ;Я
brne go_out_ne_33
ldi TEMP_A, 177
go_out_ne_33:
jmp shift_from_win_to_44780_end
;---------------------------------
shift_from_win_to_44780_more_224:
cpi TEMP_A, 224 ;а
brne go_out_ne_34
ldi TEMP_A, 97
go_out_ne_34:
cpi TEMP_A, 225 ;б
brne go_out_ne_35
ldi TEMP_A, 178
go_out_ne_35:
cpi TEMP_A, 226 ;в
brne go_out_ne_36
ldi TEMP_A, 179
go_out_ne_36:
cpi TEMP_A, 227 ;г
brne go_out_ne_37
ldi TEMP_A, 180
go_out_ne_37:
cpi TEMP_A, 228 ;д
brne go_out_ne_38
ldi TEMP_A, 227
go_out_ne_38:
cpi TEMP_A, 229 ;е
brne go_out_ne_39
ldi TEMP_A, 101
go_out_ne_39:
cpi TEMP_A, 230 ;ж
brne go_out_ne_40
ldi TEMP_A, 182
go_out_ne_40:
cpi TEMP_A, 231 ;з
brne go_out_ne_41
ldi TEMP_A, 183
go_out_ne_41:
cpi TEMP_A, 232 ;и
brne go_out_ne_42
ldi TEMP_A, 184
go_out_ne_42:
cpi TEMP_A, 233 ;й
brne go_out_ne_43
ldi TEMP_A, 185
go_out_ne_43:
cpi TEMP_A, 234 ;к
brne go_out_ne_44
ldi TEMP_A, 186
go_out_ne_44:
cpi TEMP_A, 235 ;л
brne go_out_ne_45
ldi TEMP_A, 187
go_out_ne_45:
cpi TEMP_A, 236 ;м
brne go_out_ne_46
ldi TEMP_A, 188
go_out_ne_46:
cpi TEMP_A, 237 ;н
brne go_out_ne_47
ldi TEMP_A, 189
go_out_ne_47:
cpi TEMP_A, 238 ;о
brne go_out_ne_48
ldi TEMP_A, 111
go_out_ne_48:
cpi TEMP_A, 239 ;п
brne go_out_ne_49
ldi TEMP_A, 190
go_out_ne_49:
cpi TEMP_A, 240 ;р
brne go_out_ne_50
ldi TEMP_A, 112
go_out_ne_50:
cpi TEMP_A, 241 ;с
brne go_out_ne_51
ldi TEMP_A, 99
go_out_ne_51:
cpi TEMP_A, 242 ;т
brne go_out_ne_52
ldi TEMP_A, 191
go_out_ne_52:
cpi TEMP_A, 243 ;у
brne go_out_ne_53
ldi TEMP_A, 121
go_out_ne_53:
cpi TEMP_A, 244 ;ф
brne go_out_ne_54
ldi TEMP_A, 228
go_out_ne_54:
cpi TEMP_A, 245 ;х
brne go_out_ne_55
ldi TEMP_A, 120
go_out_ne_55:
cpi TEMP_A, 246 ;ц
brne go_out_ne_56
ldi TEMP_A, 229
go_out_ne_56:
cpi TEMP_A, 247 ;ч
brne go_out_ne_57
ldi TEMP_A, 192
go_out_ne_57:
cpi TEMP_A, 248 ;ш
brne go_out_ne_58
ldi TEMP_A, 193
go_out_ne_58:
cpi TEMP_A, 249 ;щ
brne go_out_ne_59
ldi TEMP_A, 230
go_out_ne_59:
cpi TEMP_A, 250 ;ъ
brne go_out_ne_60
ldi TEMP_A, 194
go_out_ne_60:
cpi TEMP_A, 251 ;ы
brne go_out_ne_61
ldi TEMP_A, 195
go_out_ne_61:
cpi TEMP_A, 252 ;ь
brne go_out_ne_62
ldi TEMP_A, 196
go_out_ne_62:
cpi TEMP_A, 253 ;э
brne go_out_ne_63
ldi TEMP_A, 197
go_out_ne_63:
cpi TEMP_A, 254 ;ю
brne go_out_ne_64
ldi TEMP_A, 198
go_out_ne_64:
cpi TEMP_A, 255 ;я
brne go_out_ne_65
ldi TEMP_A, 199
go_out_ne_65:
;----------------------------------
shift_from_win_to_44780_end:
ret |
|
|
|
|
05.11.2008, 17:09
|
|
Прописка
Регистрация: 23.03.2008
Сообщений: 121
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
самый долгий и неоптимальный алгоритм. Хинт: используй массив unsigned char[128], где будешь хранить коды в кодировке дисплея. Ессно, char[i-128], i - аски-код в виндовой кодировке.
|
|
|
|
05.11.2008, 21:49
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Да, ты прав.
нада именно так и делать.
ПРосто сижу пишу прогу.. башка не варит.
|
|
|
|
05.11.2008, 23:16
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
|
Честно сказать индикаторы эти уже не котируются.
И видок у них еще тот , и управление аж 6 выводов .
Лучше уж дисплеи от тел , и информативность лучше и управление и меньше размером и стоят дешевле и т.д , тот же нокиа 3310 - 30 / 40 руб , вместо 250 за 16/2 .
Сча моторолы 550/350 доделаю . Кстати появилась поддержка в LCD_HYPE- их и нокиа 3510.
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Нужна сводная таблица PICов
|
tim18 |
Микроконтроллеры, АЦП, память и т.д |
4 |
25.03.2008 05:39 |
LCD на контроллере HD44780
|
yga |
Микроконтроллеры, АЦП, память и т.д |
8 |
03.12.2007 16:50 |
PIC16F84A и LCD HD44780
|
I_0 |
Микроконтроллеры, АЦП, память и т.д |
16 |
20.09.2006 12:06 |
вОПРРОС ПРО HD44780
|
sergunrussia |
Микроконтроллеры, АЦП, память и т.д |
7 |
26.08.2006 00:25 |
инициализация KS0066U (или HD44780).
|
xelos |
Микроконтроллеры, АЦП, память и т.д |
9 |
21.11.2004 13:06 |
Часовой пояс GMT +4, время: 10:17.
|
|