Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 05.11.2008, 00:46  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию 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, после - вывод текста.
Может у кого-то есть рабочие исходники бля записи символов на асме.
Реклама:
ua_gruzin вне форума  
Непрочитано 05.11.2008, 00:49  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Да, и...
Код:
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
и
Код:
.equ CHR_ANZ = 10
ua_gruzin вне форума  
Непрочитано 05.11.2008, 02:10  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Мда, я в шоке.
... делают ЛСД да 30 у.е. и без поддержки прямой заливки всей таблици кодовой.... ужос прям.

Я тупо в шоке.

Ладно, сверху код рабочий.... кому нада - юзайте.


Постал другой вопрос.

АСКИ не совпадает по символам с таблицей в ЛСД. А в аврстудио нету желания прописывать все символы по их кодировке... ибе это извращенство.
Долго и кумарно.
Какие кто находил решения?
Кроме тупой замены символов аски на гругие в процессе вывода.
Типо:
Код:
cpi TEMP_A, $xx
brne ne_ravno_A
ldi TEMP_A, $YY
ne_ravno_A:
где, хх - кодировка в АСКИ, а YY - кодировка в таблице 44780.
ua_gruzin вне форума  
Непрочитано 05.11.2008, 02:45  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Да ужас.
Прям монолог одного меня

Нашел прогу.
Перекодит все и вся в нечитабельный код типа 123,12,3,12
и то в не в хеке.
Читать конечно анриал, но зато типо экономия времени на обработку "на лету".
Но.. не прет меня. Я думаю стоит пойти в сторону уменьшения производительности (за счет того, что будем делать перебор).
Да и... перебирать нада не все, а только некоторые символы, скорее всю таблицу русского языка, ну ... от силы 40*3=120 тактов... хотя для обной буквы... у.. много будет в куче, ести выводить все 40 символов.
На 16Мгц, я думаю будет не слишком критично.
Кому нада - прога ниже.
Цитата:
HD44780 Перекодировщик Win-текста сообщений для ЖКИ-контроллера HD44780 Позволяет решить трудности с несоответствием кодов русских букв, зашитых в контроллер HD44780 с ANSI-кодировкой Windows и одновременно избавиться от программного перекодирования "на лету", мгновенно создав Си-код на основе набранного текста.
http://affon.narod.ru/AVR.html
ua_gruzin вне форума  
Непрочитано 05.11.2008, 02:52  
delamoure
Прописка
 
Аватар для delamoure
 
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
delamoure на пути к лучшему
По умолчанию

Думал сразу эту прогу посоветовать, но подумал, что цель - залить свой знакогенератор
delamoure вне форума  
Непрочитано 05.11.2008, 04:56  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от ua_gruzin
Читать конечно анриал, но зато типо экономия времени на обработку "на лету".
А в чём проблем со временем? Я пишу сообщения в Виндовой кодировке а при выводе перекодирую по таблице. Зато удобно кодить и смотеть в программаторе ссобщения. А времени дополнительно на один символ 2-3 микросекунды. Писано и для AVR и для PIC. Обычно паралельно обрабатывается ещё несколько задачь.
picavr вне форума  
Непрочитано 05.11.2008, 17:01  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Кодим "на лету"

Код:
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
ua_gruzin вне форума  
Непрочитано 05.11.2008, 17:09  
Churchill
Прописка
 
Регистрация: 23.03.2008
Сообщений: 121
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Churchill на пути к лучшему
По умолчанию

самый долгий и неоптимальный алгоритм. Хинт: используй массив unsigned char[128], где будешь хранить коды в кодировке дисплея. Ессно, char[i-128], i - аски-код в виндовой кодировке.
Churchill вне форума  
Непрочитано 05.11.2008, 21:49  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Да, ты прав.
нада именно так и делать.
ПРосто сижу пишу прогу.. башка не варит.
ua_gruzin вне форума  
Непрочитано 05.11.2008, 23:16  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Честно сказать индикаторы эти уже не котируются.
И видок у них еще тот , и управление аж 6 выводов .
Лучше уж дисплеи от тел , и информативность лучше и управление и меньше размером и стоят дешевле и т.д , тот же нокиа 3310 - 30 / 40 руб , вместо 250 за 16/2 .
Сча моторолы 550/350 доделаю . Кстати появилась поддержка в LCD_HYPE- их и нокиа 3510.
__________________
Осторожно , злой кот
dosikus вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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, время: 19:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot