вообщето Putstr это функция вывода в консольку - тоесть в Ком порт!
я всегда пользуюсь другой технологией - вот моя функция вывода строки
Код:
void lcd_putchar(char character)
{
int tablept, count, char_column;
if ((character<0x20>0x7f)) {return;}
tablept = ((6*character) - 192);
for (count=5;count>0;count--)
{
char_column = table[tablept];
writedata(char_column);
tablept++;
}
writedata(0x00);
}
void lcd_putstr(const char *s)
{
while(*s) {lcd_putchar(*s++);}
}
Массив table это табличка шрифтов
Код:
flash char table[546] = {
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 , // sp
0b00000000, 0b00000000, 0b01011111, 0b00000000, 0b00000000, 0b00000000 , // !
0x00, 0x07, 0x00, 0x07, 0x00 ,0x00 , // "
0x14, 0x7f, 0x14, 0x7f, 0x14 ,0x00 , // #
0x24, 0x2a, 0x7f, 0x2a, 0x12 ,0x00 , // $
0xc4, 0xc8, 0x10, 0x26, 0x46 ,0x00 , // %
0x36, 0x49, 0x55, 0x22, 0x50 ,0x00 , // &
0x00, 0x05, 0x03, 0x00, 0x00 ,0x00 , // '
0x00, 0x1c, 0x22, 0x41, 0x00 ,0x00 , // (
0x00, 0x41, 0x22, 0x1c, 0x00 ,0x00 , // )
0x14, 0x08, 0x3E, 0x08, 0x14 ,0x00 , // *
0x08, 0x08, 0x3E, 0x08, 0x08 ,0x00 , // +
0x00, 0x00, 0x50, 0x30, 0x00 ,0x00 , // ,
0x10, 0x10, 0x10, 0x10, 0x10 ,0x00 , // -
0x00, 0x60, 0x60, 0x00, 0x00 ,0x00 , // .
0x20, 0x10, 0x08, 0x04, 0x02 ,0x00 , // /
0b00110110, 0b01000001, 0b01000001, 0b01000001, 0b00110110, 0b00000000 , // 0
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00110110, 0b00000000 , // 1
0b00110000, 0b01001001, 0b01001001, 0b01001001, 0b00000110, 0b00000000 , // 2
0b00000000, 0b01001001, 0b01001001, 0b01001001, 0b00110110, 0b00000000 , // 3
0b00000110, 0b00001000, 0b00001000, 0b00001000, 0b00110110, 0b00000000 , // 4
0b00000110, 0b01001001, 0b01001001, 0b01001001, 0b00110000, 0b00000000 , // 5
0b00110110, 0b01001001, 0b01001001, 0b01001001, 0b00110000, 0b00000000 , // 6
0b00000000, 0b00000001, 0b00000001, 0b00000001, 0b00110110, 0b00000000 , // 7
0b00110110, 0b01001001, 0b01001001, 0b01001001, 0b00110110, 0b00000000 , // 8
0b00000110, 0b01001001, 0b01001001, 0b01001001, 0b00110110, 0b00000000 , // 9
0x00, 0x36, 0x36, 0x00, 0x00 ,0x00 , // :
0x00, 0x56, 0x36, 0x00, 0x00 ,0x00 , // ;
0x08, 0x14, 0x22, 0x41, 0x00 ,0x00 , // <0x14>
0x02, 0x01, 0x51, 0x09, 0x06 ,0x00 , // ?
0x32, 0x49, 0x59, 0x51, 0x3E ,0x00 , // @
0x7E, 0x11, 0x11, 0x11, 0x7E ,0x00 , // A
0x7F, 0x49, 0x49, 0x49, 0x36 ,0x00 , // B
0x3E, 0x41, 0x41, 0x41, 0x22 ,0x00 , // C
0x7F, 0x41, 0x41, 0x22, 0x1C ,0x00 , // D
0x7F, 0x49, 0x49, 0x49, 0x41 ,0x00 , // E
0x7F, 0x09, 0x09, 0x09, 0x01 ,0x00 , // F
0x3E, 0x41, 0x49, 0x49, 0x7A ,0x00 , // G
0x7F, 0x08, 0x08, 0x08, 0x7F ,0x00 , // H
0x00, 0x41, 0x7F, 0x41, 0x00 ,0x00 , // I
0x20, 0x40, 0x41, 0x3F, 0x01 ,0x00 , // J
0x7F, 0x08, 0x14, 0x22, 0x41 ,0x00 , // K
0x7F, 0x40, 0x40, 0x40, 0x40 ,0x00 , // L
0x7F, 0x02, 0x0C, 0x02, 0x7F ,0x00 , // M
0x7F, 0x04, 0x08, 0x10, 0x7F ,0x00 , // N
0x3E, 0x41, 0x41, 0x41, 0x3E ,0x00 , // O
0x7F, 0x09, 0x09, 0x09, 0x06 ,0x00 , // P
0x3E, 0x41, 0x51, 0x21, 0x5E ,0x00 , // Q
0x7F, 0x09, 0x19, 0x29, 0x46 ,0x00 , // R
0x46, 0x49, 0x49, 0x49, 0x31 ,0x00 , // S
0x01, 0x01, 0x7F, 0x01, 0x01 ,0x00 , // T
0x3F, 0x40, 0x40, 0x40, 0x3F ,0x00 , // U
0x1F, 0x20, 0x40, 0x20, 0x1F ,0x00 , // V
0x3F, 0x40, 0x38, 0x40, 0x3F ,0x00 , // W
0x63, 0x14, 0x08, 0x14, 0x63 ,0x00 , // X
0x07, 0x08, 0x70, 0x08, 0x07 ,0x00 , // Y
0x61, 0x51, 0x49, 0x45, 0x43 ,0x00 , // Z
0x00, 0x7F, 0x41, 0x41, 0x00 ,0x00 , // [
0x55, 0x2A, 0x55, 0x2A, 0x55 ,0x00 , // 55
0x00, 0x41, 0x41, 0x7F, 0x00 ,0x00 , // ]
0x04, 0x02, 0x01, 0x02, 0x04 ,0x00 , // ^
0x40, 0x40, 0x40, 0x40, 0x40 ,0x00 , // _
0x00, 0x01, 0x02, 0x04, 0x00 ,0x00 , // '
0x20, 0x54, 0x54, 0x54, 0x78 ,0x00 , // a
0x7F, 0x48, 0x44, 0x44, 0x38 ,0x00 , // b
0x38, 0x44, 0x44, 0x44, 0x20 ,0x00 , // c
0x38, 0x44, 0x44, 0x48, 0x7F ,0x00 , // d
0x38, 0x54, 0x54, 0x54, 0x18 ,0x00 , // e
0x08, 0x7E, 0x09, 0x01, 0x02 ,0x00 , // f
0x0C, 0x52, 0x52, 0x52, 0x3E ,0x00 , // g
0x7F, 0x08, 0x04, 0x04, 0x78 ,0x00 , // h
0x00, 0x44, 0x7D, 0x40, 0x00 ,0x00 , // i
0x20, 0x40, 0x44, 0x3D, 0x00 ,0x00 , // j
0x7F, 0x10, 0x28, 0x44, 0x00 ,0x00 , // k
0x00, 0x41, 0x7F, 0x40, 0x00 ,0x00 , // l
0x7C, 0x04, 0x18, 0x04, 0x78 ,0x00 , // m
0x7C, 0x08, 0x04, 0x04, 0x78 ,0x00 , // n
0x38, 0x44, 0x44, 0x44, 0x38 ,0x00 , // o
0x7C, 0x14, 0x14, 0x14, 0x08 ,0x00 , // p
0x08, 0x14, 0x14, 0x18, 0x7C ,0x00 , // q
0x7C, 0x08, 0x04, 0x04, 0x08 ,0x00 , // r
0x48, 0x54, 0x54, 0x54, 0x20 ,0x00 , // s
0x04, 0x3F, 0x44, 0x40, 0x20 ,0x00 , // t
0x3C, 0x40, 0x40, 0x20, 0x7C ,0x00 , // u
0x1C, 0x20, 0x40, 0x20, 0x1C ,0x00 , // v
0x3C, 0x40, 0x30, 0x40, 0x3C ,0x00 , // w
0x44, 0x28, 0x10, 0x28, 0x44 ,0x00 , // x
0x0C, 0x50, 0x50, 0x50, 0x3C ,0x00 , // y
0x44, 0x64, 0x54, 0x4C, 0x44 ,0x00 , // z
};
а когда я хочу чтото вывести на экран я делаю так
Код:
unsigned char a2[30]; //Временная строка для вывода на экран
lcd_gotoxy(1,5);
sprintf(a2, "%i DEV(S)DET.1",devices);
lcd_putstr(a2);
Здесь a2 временная переменная а devices - переменная которую нужно вывести как число
Код:
ds_temp=ds18b20_temperature(&rom_codes[i][0]);
ds_temp = ds_temp/8;
sprintf(a2, "t%-u=%-i.%-u\xf8C",i+1, ds_temp/10, ds_temp%10);
lcd_clear_row(2+i);
lcd_gotoxy(1,2+i);
lcd_putstr(a2);
Это функция выводит температуру с десятичной точностью через точку используя только ИНТ переменную(экономия 5 байт перед флоатом)