<<<

Интерфейс с ЖКИ HT1616.

  ЖКИ представляет собой 10-разрядный индикатор, имеющий простой 2-х проводный интерфейс, а также встроенные часы и таймер.
  Вывод данных на индикатор осуществляется побитно по линии DI, последовательным четырехбитным кодом, начиная с младшего бита. Выводимый бит стробируется отрицательным перепадом на линии CLK. Выведенный символ печатается с правого разряда индикатора и сдвигается влево по приходе следующего символа.
  Далее приводится текст программы на языке С для управления индикатором PIC-контроллером.

  Схема включения:
0-бит порта В - CLK LCD
1-бит порта В - DI LCD

/*-------------начало примера-------------*/
.
.
.
#define zero 10
#define blank 0

char lcd_code [10] = {zero, 1, 2, 3, 4, 5, 6, 7, 8 ,9 };
char display [10];
char tmp;
char temp;

void outDigit (char data) {
 for (tmp=0; tmp<4; tmp++) {
  asm bsf PORTB, 0;         // CLK - up
  if (data&8 == 8)
   asm bsf PORTB, 1;        // бит данных - 1
  else 
  asm bcf PORTB, 1;         // бит данных - 0
  data = data << 1;
  asm bcf PORTB, 0;         // CLK - down
 }

char convert(long value, long mod, long div) {
 return ((value % mod) / div);
}

outString( long value, char pos) {  // вывод числа value с позиции pos
char temp;
 for ( temp = 1; temp < 11; temp++) 
  display [temp] = blank;
  
 display [pos + 3] = lcd_code[ convert(value, 10, 1) ]; 
 display [pos + 2] = lcd_code[ convert(value, 100, 10) ]; 
 display [pos + 1] = lcd_code[ convert(value, 1000, 100) ];
 display [pos ] = lcd_code[ convert(value, 10000, 1000) ];
 
 for ( temp = 1; temp < 11; temp++) {  
  outDigit( display[temp]);
 }
}
.
.
.
/* пример использования - вывод чисел от 0000 до 9999 на индикатор с 5-й позиции */
for (i=0; i<10000; i++) {
 outString(i, 5);
 delay_ms(250);
}

/*-------------окончание примера-------------*/