Добавлено: Вс янв 24, 2010 18:07:12
берете подпрограмму задержки, считаете за сколько тактов она выполняется, умножаете на время одного такта и получаете задержку... еще вопросы?
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
перезалей в личку. Только залей на файлообменник, например, на депозит, одним файлом. А то что то не получается эти 2 архива привратить в 1...GP1 писал(а):Итак статейка о LCD на HD44780, оч.давно нарыл где-то на просторах инета, мне помогло освоиться, надеюсь поможет кому-то еще
(главное все по нашенски и доходчиво).
Всем удачи.
Спасибо Aheir, сам бы точно до такого не додумался, нормальные герои всегда идут в обход
Вот pdf файл, который выкладывал GP1 в архивах на 8 странице.Stalker46 писал(а):на 8 чтоли странице был пост...
это не и2с индикатор! сам контроллер представляет собой 80-ти битный сдвиговый регистр, у меня такойже дисплей есть, у меня правда микросхемы подписаны KS0061, но это аналог! Соответственно скачайте на них даташит. Там управление простейшее по 3-м проводам (данные, клок данных и клок говорящий о том что все 80 битов переданы!) Выводы по порядкуsa-ta писал(а):может кто то поможет опознать индикатор:
после подачи питания 5В. (первые 2 ноги) поджигаются 10 восьмерок с точками. потом гаснут.
на плате распаяна еще 14pin soic - первая строчка - 14011B ( ла7 )
вторая строчка XAA734.
может это что то I2C ?
Код: Выделить всё
#include <mega8>
#include <delay>
#define DAT PORTC.0
#define Clock2 PORTC.1
#define Clock1 PORTC.2
#define M PORTC.3
// Declare your global variables here
flash const unsigned char zero=0b00111111;
flash const unsigned char one=0b00000110;
flash const unsigned char two=0b01011011;
flash const unsigned char three=0b01001111;
flash const unsigned char four=0b01100110;
flash const unsigned char five=0b01101101;
flash const unsigned char six=0b01111101;
flash const unsigned char seven=0b00000111;
flash const unsigned char eight=0b01111111;
flash const unsigned char nine=0b01101111;
/*flash const unsigned char ;
flash const unsigned char ;
flash const unsigned char ;
flash const unsigned char ;
flash const unsigned char ;
flash const unsigned char ;
flash const unsigned char ;*/
void main(void)
{
// Declare your local variables here
register unsigned char i,x;
unsigned char data[10];//Масив для хранения всех десяти разрядов индикатора
register unsigned char bufer=0;
data[0]=zero;
data[1]=one;
data[2]=two;
data[3]=three;
data[4]=four;
data[5]=five;
data[6]=six;
data[7]=seven;
data[8]=eight;
data[9]=nine;
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0x7F;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
//бесконечный цыкл
//delay_ms(1);
while (1)
{
for (x=10;x>0;x--)//Всего 10 разрядов индикатора
{
bufer=data[x];//Ложим в буфер х-тый элемент масива
//и выводим этот элемент в индикатор
for (i=0;i<8;i++) //Всего 8 сегментов индикатора
{
if(bufer&(1<<0)) //Если надо вывести 1 - выводим и защелкиваем сигналом клок
{
DAT=1;
Clock2=1;
delay_us(10);
Clock2=0;
}
if(!(bufer&(1<<0>>1;//Сдвиг вправо
}
//M=1;
//delay_us(10);
M=1;
}
Clock1=1;
delay_us(10);
Clock1=0;
};
} //bst reg,bit
//brtc brts
Код: Выделить всё
for (x=10;x>0;x--)//Всего 10 разрядов индикатора
{
bufer=data[x];//Ложим в буфер х-тый элемент масива
//и выводим этот элемент в индикатор
for (i=0;i<8;i++) //Всего 8 сегментов индикатора
{
if(bufer&(1<<0)) //Если надо вывести 1 - выводим и защелкиваем сигналом клок
{
DAT=1;
Clock2=1;
delay_us(10);
Clock2=0;
}
if(!(bufer&(1<<0>>1;//Сдвиг вправо
}
//M=1;
//delay_us(10);
M=1;
}
Clock1=1;
delay_us(10);
Clock1=0;мир не без добрых людей...спасибоГуня писал(а): это не и2с индикатор! сам контроллер представляет собой 80-ти битный сдвиговый регистр, у меня такойже дисплей есть, у меня правда микросхемы подписаны KS0061, но это аналог! Соответственно скачайте на них даташит. Там управление простейшее по 3-м проводам (данные, клок данных и клок говорящий о том что все 80 битов переданы!)
