|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Jul 20 2009, 16:23
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316

|
Цитата(Vishv @ Jul 20 2009, 20:17)  Очень просто: 0х30 это смещение для цифо в кодовой таблице ASCII (кажется так) например код цифры 2 соответствуеь коду 0х32. Саму таблицу можно найти либо в книгах по программированию, либо в самом РС (например WORD->Втавка->Символ (латинская кодировка)). 0x30 - это ноль в ASCII, это я в word'е посмотрел. Только там на lcd ноль не выводится
|
|
|
|
|
Jul 20 2009, 16:52
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Vishv @ Jul 20 2009, 19:45)  например lcd_putchar ( 0x32 ); - должно вывестись "2" А так lcd_putchar ( '2' ); слабо? И причем тут "заголовочники" и что по Вашему можно сделать для "вообще цифры не выводятся"??? Цитата P.S. Два деления на вывод одного символа - это, конечно, кошмар Остаток от деления обычно еще кошмарней, да и умножение до кучи имеется  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 20 2009, 17:04
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316

|
Цитата(Vishv @ Jul 20 2009, 20:54)  Так может быть у Вас вообще цифры не выводятся (не подключен соответствующий заголовочник) попробуйте прямой вывод - например lcd_putchar ( 0x32 ); - должно вывестись "2" Я так понял, что он просто прибавляет ноль к имеющемуся значению. Если я пишу +0х30, то выводится 1. А если пиши +0х31, то выводится 2. Только не очень понимаю, зачем так сделано и почему если не написать этот самый плюс, то не выводится вообще ничего
|
|
|
|
|
Jul 20 2009, 17:16
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
+0x30 - это прибавление кода символа '0', т.е. 0+0x30 даст символ '0', 1+0x30 - '1' и т.д. Если ничего не прибавлять, будут выводиться символы с кодами 0, 1 и т.д., первые 8 из них у HD44780 - это программируемые пользователем символы, в железе без инициализации будет мусор, в симуляторе могут быть нули, т.е. ничего.
Что тут можно не понимать, не представляю.
|
|
|
|
|
Jul 20 2009, 17:20
|
Местный
  
Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154

|
Цитата(zltigo @ Jul 20 2009, 22:52)  А так lcd_putchar ( '2' ); слабо? И причем тут "заголовочники" и что по Вашему можно сделать для "вообще цифры не выводятся"??? Остаток от деления обычно еще кошмарней, да и умножение до кучи имеется  . Ну в принципе можно и так.. это же не принципиально..
|
|
|
|
|
Jul 20 2009, 17:26
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316

|
Цитата(aaarrr @ Jul 20 2009, 21:16)  +0x30 - это прибавление кода символа '0', т.е. 0+0x30 даст символ '0', 1+0x30 - '1' и т.д. Если ничего не прибавлять, будут выводиться символы с кодами 0, 1 и т.д., первые 8 из них у HD44780 - это программируемые пользователем символы, в железе без инициализации будет мусор, в симуляторе могут быть нули, т.е. ничего.
Что тут можно не понимать, не представляю. Все понял, спасибо!
|
|
|
|
|
Jul 20 2009, 17:27
|
Местный
  
Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154

|
Цитата(Alf162 @ Jul 20 2009, 23:04)  Я так понял, что он просто прибавляет ноль к имеющемуся значению. Если я пишу +0х30, то выводится 1. А если пиши +0х31, то выводится 2. Только не очень понимаю, зачем так сделано и почему если не написать этот самый плюс, то не выводится вообще ничего Попробуйте посмотреть символ с кодом 0х00, апотом вывести символ с этим кодом, естественно ничего не получится- это непечатные символы. А в случаея "я пишу +0х30, то выводится 1" - это означает, что предыдущее выражение =1, а если "+0х31, то выводится 2" - также означает, что предыдущее выражение =1.
|
|
|
|
|
Jul 21 2009, 09:34
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316

|
Подключил этот LCD к mega8 как в CodeVision написано. В протеусе все нормально работало, а в железе - ничего. Программа самая простая: lcd_init(16); lcd_putsf ( "Ura, tovarishi!"); p.s. Vss=GND,Vdd=+5В - правильно? СУВ
Сообщение отредактировал Alf162 - Jul 21 2009, 09:37
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 21 2009, 10:14
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316

|
Не, нечего не засвечено. Контроллер точно mega8, фузы вообще не трогал. На контраст +5В подавал
|
|
|
|
|
Jul 21 2009, 10:16
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Сергей Борщ @ Jul 21 2009, 14:11)  Для большинства современных дисплеев его достаточно заземлить, но возможно придется подобрать напряжение от +0.5в до отрицательного (-1.5в) Первый мой экранчик DataVision (по-моему, так назывался) очень странный был. В однострочном режиме всё было видно отлично, а в двухстрочном пришлось подавать минус на вход контрастности. Пришлось на отдельной ноге развешивать инвертор напряжения
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 21 2009, 10:36
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316

|
Все, разобрался. На контраст действительно нужно землю, а не плюс 5В
|
|
|
|
|
Jul 21 2009, 13:48
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316

|
Немного лучше стало. Теперь отображается первые 8 символов, а остальные - нет. Если написать lcd_gotoxy (9,0); то вообще ничего не отображается
|
|
|
|
|
Jul 21 2009, 14:03
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316

|
Цитата(Сергей Борщ @ Jul 21 2009, 17:53)  Это вторая грабля, на которую традиционно наступают начинающие пользователи таких индикаторов  Дело в том, что этот индикатор представляет из себя индикатор из двух строк по 8 символов, у которого строки "склеены". Таким образом производители обходятся без дополнительного контроллера столбцов. Попробуйте вместо 9 адрес начала второй строки - 0x40. Спасибо большое! Заработало!!! Так это получается сразу (без gotoxy) 16 символов вывести не получится?
Сообщение отредактировал Alf162 - Jul 21 2009, 14:04
|
|
|
|
|
Jul 21 2009, 15:09
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Сергей Борщ @ Jul 21 2009, 19:53)  Это вторая грабля, на которую традиционно наступают начинающие пользователи таких индикаторов  Угу. Нужно внимательно прочитать всего один лист в даташите. А еще лучше написать свою функцию вывода на LCD.
Прикрепленные изображения
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|