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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> ATTINY2313 и ЖКИ 16х2, Есть ли возможность отключить пин RW в библиотеке CVAVR
aerobus
сообщение Jan 20 2013, 20:45
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 19-05-06
Пользователь №: 17 256



Цитата(ILYAUL @ Jan 20 2013, 23:17) *
Какой ? Где?
Всё что скрыто под этим убрать

вот сюда
static void _lcd_delay(void) - только задержку согласно DS на Ваш дисплей

Не въехал. sad.gif
Что под чем скрыто и куды его убрать?

Ну вот такая схемка пока.
Прикрепленное изображение


Т.е. ЖКИ сидит на порту В
Кнопки на D
Ежели забрать компаратор, то пины освободятся на D а управление экраном надо буит осуществлять из двух портов.
RS, RW, E повесить на порт D
а данные гнать через порт B.

Может конечно єто все не сильно грамотно, с точки зрения профи, ну да я и не претендую. Это так, для дома для себя изредка заглядываю в МК.
laughing.gif
Ну а сие кусок говнокода который это должон оживлять.

CODE
#include <tiny2313.h>
#include <string.h>
#include <delay.h>
#include <lcd.h>


#asm
.equ __lcd_port=0x18 ;PORTB //Подключаем дисплей к порту B
#endasm

int c;
unsigned char numdigchar(int x)
{
unsigned char temp;
if ((x>=1000)||(x<=-1000)) return 1;
if (x<0) {
lcd_putchar('-');
x=-x;
}

temp=x/1000; //вычисляем тысячи
lcd_putchar(0x30+temp); //выводим на ЖКИ
x=x-temp*1000; //вычитаем тысячи

temp=x/100; //вычисляем сотни
lcd_putchar(0x30+temp); //выводим
x=x-temp*100; //вычитаем сотни

temp=x/10; //вычисляем десятки
lcd_putchar(0x30+temp); //выводим
x=x-temp*10; //вычитаем десятки

temp=x/1; //вычисляем единицы
lcd_putchar(0x30+temp); //выводим
x=x-temp; //вычитаем единицы

return 0;

}
//Главная функция программы
void main(void)
{
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB=0x00;
DDRB=0xDF;

PORTD=0x00;
DDRD=0x20;

TCNT0=0xFF;
TCCR0A=0xF3;
TCCR0B=0x01;


OCR0B=0x05;
OCR0A=0xF0;

//Инициализируем дисплей
lcd_init(16);


#asm("cli")
c=5;


lcd_clear(); //функция очистки дисплея

while(1){
delay_ms(1000); //задержка 1 секунда
if (PIND.6==0) {
if (OCR0A<0xFF)
OCR0A++;
}
if (PIND.2==0) {
if (OCR0A>0)
OCR0A--;
}
if (PIND.4==0) {
if (OCR0B<0xFF)
OCR0B++;
}
if (PIND.1==0) {
if (OCR0B>0)
OCR0B--;
}
lcd_gotoxy(7,0);
numdigchar(OCR0A);
lcd_gotoxy(7,1);
numdigchar(OCR0B);


}
}

Т.е. Гдето так.
Приношу извинения, не умею код засовывать в отдельный блок. Может подскажете как?

Сообщение отредактировал IgorKossak - Jan 20 2013, 21:33
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
hd44780
сообщение Jan 21 2013, 07:26
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(ILYAUL @ Jan 20 2013, 17:07) *
Вы просто не умеете его готовить


Пожалуйста не говорите того, чего не знаете. Схема одна и та же, прошивка одна и та же. Меняю только дисплеи, как перчатки - один работает, другой - нет. Такую картину наблюдал и на CvAVR-овской либе, и на avrlib под winAVR. И вне зависимости от RW и чего либо ещё.

И на других форумах другие люди говорят то же самое.

И у меня лично есть 2 дисплея, прекрасно работающие по 4-бит, и 3 дисплея (2 из них 20x4), которые не работают. Может шаманить надо и подгонять - не знаю. Хотя, если это схема под один экземпляр дисплея и лично для себя, то можно и с 4-бит помучиться.

aerobus, вообще дисплей не микросхема в противно-мелком SMD корпусе, можно одну ногу перепаять.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
aerobus
сообщение Jan 21 2013, 09:43
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 19-05-06
Пользователь №: 17 256



Цитата(hd44780 @ Jan 21 2013, 11:26) *
aerobus, вообще дисплей не микросхема в противно-мелком SMD корпусе, можно одну ногу перепаять.

Угу. Ежели б не шилд, то и резюки б с кнопок выпаял, а оне(резюки) под ЖКИ. И нога к земле прикручена...

Сообщение отредактировал aerobus - Jan 21 2013, 09:59
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 21 2013, 09:55
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
Такую картину наблюдал и на CvAVR-овской либе, и на avrlib под winAVR. И вне зависимости от RW и чего либо ещё.
Мможет в выше перечисленном что-то поменять.
Поработайте с дисплеями по сигналу готовности , глядишь и рабочие окажутся.

aerobus
Проверяйте , может я что-то и упустил, но направление Вам задал.
Прикрепленные файлы
Прикрепленный файл  LCD_driver_routines.rar ( 15.03 килобайт ) Кол-во скачиваний: 304
 


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
aerobus
сообщение Jan 21 2013, 11:59
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 19-05-06
Пользователь №: 17 256



Цитата(ILYAUL @ Jan 21 2013, 13:55) *
Поработайте с дисплеями по сигналу готовности , глядишь и рабочие окажутся.

aerobus
Проверяйте , может я что-то и упустил, но направление Вам задал.

Пасиб. rolleyes.gif
Я именно с этого примера и начинал.
Тут как раз и прикручена нога RW к библиотеке Т.е. работа по готовности.
Ну да в прочем ежели отпаять таки ногу от "земли", то вроде как все должно работать.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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