реклама на сайте
подробности

 
 
> Дисплей МЭЛТ MT-16S2D, проблема с чтением информации
svamoscow
сообщение Jan 26 2009, 19:32
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 26-01-09
Пользователь №: 43 982



Вобщем ситуация такая, записываю я по адресу $00 какой то символ (число) в DDRAM, он появляется на дисплее, работает как следует вобщем; затем я устанавливаю курсор по этому адресу $00 считываю в регистр temp с помощью "rcall Read" и записываю в DDRAM по другому адресу $01. В итоге всех этих замысловатых манипуляций получаю крокозябру (вывел в порт регистр temp посмотреть, увидел что в нём всегда независимо от выводимого в DDRAM символа (числа) всегда 0b0000111, посмотрел по таблице знакогенератора, этому соответствует x, то есть не задействовано, понятно откуда крокозябра. Только вот остаётся непонятным почему считывать не хочет правильные значения... Я заморочился вставил в те места где "rcall Delay4us" задержку по кнопочке, то есть пока я не нажму на кнопку атмега в этом месте зацикливается, сделал две кнопочки для каждой половины байта, и мультиметром измерил на выходах напряжения. Получилось напряжения правильные (нули и единички), то есть они соответствуют записанному в DDRAM дисплея числу, то есть модуль дисплея выдаёт правильные значения, микроконтроллер не хочет их понять. И вот у меня совсем уже ступор, непонятно почему атмега считывает непонятно что с выходов DB4..DB7. Вобщем нужна ваша помощь.

Вот кусок кода, используемый для чтения
в DB7_PIN адрес DB7 пина дисплея (соответственно в DB6_PIN - 6го и т.д.)
в DB7_BN номер бита куда подключен дисплей, так же и для остальных DB
(в Delay4us используется другой регистр temp1)
CODE
ReadC:
sbi E_PORT,E_BN
rcall Delay4us
clr temp
sbic DB7_PIN,DB7_BN
sbr temp,7
sbic DB6_PIN,DB6_BN
sbr temp,6
sbic DB5_PIN,DB5_BN
sbr temp,5
sbic DB4_PIN,DB4_BN
sbr temp,4
cbi E_PORT,E_BN
nop

sbi E_PORT,E_BN
rcall Delay4us
sbic DB7_PIN,DB7_BN
sbr temp,3
sbic DB6_PIN,DB6_BN
sbr temp,2
sbic DB5_PIN,DB5_BN
sbr temp,1
sbic DB4_PIN,DB4_BN
sbr temp,0
cbi E_PORT,E_BN
ret

;Чтение данных из активной области
Read:
;Пины дисплея - входы Z-состояние
cbi DB4_DDR,DB4_BN
cbi DB5_DDR,DB5_BN
cbi DB6_DDR,DB6_BN
cbi DB7_DDR,DB7_BN
cbi DB4_PORT,DB4_BN
cbi DB5_PORT,DB5_BN
cbi DB6_PORT,DB6_BN
cbi DB7_PORT,DB7_BN

;Переводим дисплей в режим чтения данных
;из активной области
sbi A0_PORT,A0_BN
sbi RW_PORT,RW_BN

rcall ReadC

;Переводим дисплей в режим записи команды
cbi A0_PORT,A0_BN
cbi RW_PORT,RW_BN

;Пины дисплея - выходы, на них еденицы
sbi DB4_DDR,DB4_BN
sbi DB5_DDR,DB5_BN
sbi DB6_DDR,DB6_BN
sbi DB7_DDR,DB7_BN
sbi DB4_PORT,DB4_BN
sbi DB5_PORT,DB5_BN
sbi DB6_PORT,DB6_BN
sbi DB7_PORT,DB7_BN

rcall Delay40us
ret
Go to the top of the page
 
+Quote Post



Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01338 секунд с 7
ELECTRONIX ©2004-2016