Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 09.11.2006, 01:39  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от Calima
Для форматирования в вашем случае необходимо написать sprintf(lcd_buffer," temperature %u",g); - это для типа преобразуемой переменной usigned int (этого типа дожна быть переменная g, принимающая в данном случае значение больше 255, но меньше 65535).
Zemlyanov
Вчитайся вниматель тебе человек дело советует.
А если не понял почитай Кернигана и Ричи.
Реклама:
dosikus вне форума  
Непрочитано 09.11.2006, 01:44  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Код:
void main() {

   BYTE start;

   int_count=INTS_PER_SECOND;
   set_timer0(0);
   setup_counters( RTCC_INTERNAL, RTCC_DIV_16);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);

   do {

  If(flag.sec)
{
 printf("%u

",seconds); 
 flag.sec=0;
}


   } while (TRUE);

}
вот пример вывода числа .
dosikus вне форума  
Непрочитано 09.11.2006, 01:55  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Цитата:
7.3. Форматный вывод - функция PRINTF


Две функции: PRINTF для вывода и SCANF для ввода (следу-
ющий раздел) позволяют преобразовывать численные величины в
символьное представлEние и обратно. Они также позволяют ге-
нерировать и интерпретировать форматные строки. Мы уже всюду
в предыдущих главах неформально использовали функцию PRINTF;
здесь приводится более полное и точное описание. Функция

PRINTF(CONTROL, ARG1, ARG2, ...)



преобразует, определяет формат и печатает свои аргументы в
стандартный вывод под управлением строки CONTROL. Управляю-
щая строка содержит два типа объектов: обычные символы, ко-
торые просто копируются в выходной поток, и спецификации
преобразований, каждая из которых вызывает преобразование и
печать очередного аргумента PRINTF.
Каждая спецификация преобразования начинается с символа
% и заканчивается символом преобразования. Между % и симво-
лом преобразования могут находиться:
- знак минус, который указывает о выравнивании преобразован-
ного аргумента по левому краю его поля.
- Строка цифр, задающая минимальную ширину поля. Преобразо-
ванное число будет напечатано в поле по крайней мере этой
ширины, а если необходимо, то и в более широком. Если пре-
образованный аргумент имеет меньше символов, чем указанная
ширина поля, то он будет дополнен слева (или справа, если
было указано выравнивание по левому краю)заполняющими сим-
волами до этой ширины. Заполняющим символом обычно являет-
ся пробел, а если ширина поля указывается с лидирующим ну-
лем, то этим символом будет нуль (лидирующий нуль в данном
случае не означает восьмеричной ширины поля).
- Точка, которая отделяет ширину поля от следующей строки
цифр.
- Строка цифр (точность), которая указывает максимальное
число символов строки, которые должны быть напечатаны, или
число печатаемых справа от десятичной точки цифр для пере-
менных типа FLOAT или DOUBLE.
- Модификатор длины L, который указывает, что соответствую-
щий элемент данных имеет тип LONG, а не INT.
Ниже приводятся символы преобразования и их смысл:

D - аргумент преобразуется к десятичному виду.
O - Аргумент преобразуется в беззнаковую восьмеричную форму
(без лидирующего нуля).
X - Аргумент преобразуется в беззнаковую шестнадцатеричную
форму (без лидирующих 0X).
U - Аргумент преобразуется в беззнаковую десятичную форму.
C - Аргумент рассматривается как отдельный символ.
S - Аргумент является строкой: символы строки печатаются до
тех пор, пока не будет достигнут нулевой символ или не бу-
дет напечатано количество символов, указанное в специфика-
ции точности.
E - Аргумент, рассматриваемый как переменная типа FLOAT или
DOUBLE, преобразуется в десятичную форму в виде
[-]M.NNNNNNE[+-]XX, где длина строки из N определяется
указанной точностью. Точность по умолчанию равна 6.
F - Аргумент, рассматриваемый как переменная типа FLOAT или
DOUBLE, преобразуется в десятичную форму в виде
[-]MMM.NNNNN, где длина строки из N определяется указанной
точностью. Точность по умолчанию равна 6. отметим, что эта
точность не определяет количество печатаемых в формате F
значащих цифр.



G - Используется или формат %E или %F, какой короче; незна-
чащие нули не печатаются.
Если идущий за % символ не является символом преобразования,
то печатается сам этот символ; следовательно,символ % можно
напечатать, указав %%.
Большинство из форматных преобразований очевидно и было
проиллюстрировано в предыдущих главах. Единственным исключе-
нием является то, как точность взаимодействует со строками.
Следующая таблица демонстрирует влияние задания различных
спецификаций на печать "HELLO, WORLD" (12 символов). Мы по-
местили двоеточия вокруг каждого поля для того, чтобы вы
могли видеть его протяженность.

:%10S: :HELLO, WORLD:
:%10-S: :HELLO, WORLD:
:%20S: : HELLO, WORLD:
:%-20S: :HELLO, WORLD :
:%20.10S: : HELLO, WOR:
:%-20.10S: :HELLO, WOR :
:%.10S: :HELLO, WOR:

Предостережение: PRINTF использует свой первый аргумент
для определения числа последующих аргументов и их типов. Ес-
ли количество аргументов окажется недостаточным или они бу-
дут иметь несоответственные типы, то возникнет путаница и вы
получите бессмысленные результаты.
dosikus вне форума  
Непрочитано 10.11.2006, 13:33  
Calima
Прохожий
 
Регистрация: 28.02.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Calima на пути к лучшему
По умолчанию

Относительно printf, sprintf и stdout - почитайте хелп к используемому Вами компиллятору. Чем пользуетесь?
Относительно вывода русских символов на жки:

static const char perecod[64] = {
'A' , 0xA0, 'B' , 0xA1, 0xE0, 'E' , 0xA3, 0xA4, 0xA5, 0xA6, 'K' , 0xA7, 'M' , 'H' , 'O' , 0xA8,
'P' , 'C' , 'T' , 0xA9, 0xAA, 'X' , 0xE1, 0xAB, 0xAC, 0xE2, 0xAD, 0xAE, 'b' , 0xAF, 0xB0, 0xB1,
'a' , 0xB2, 0xB3, 0xB4, 0xE3, 'e' , 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 'o' , 0xBE,
'p' , 'c' , 0xBF, 'y' , 0xE4, 'x' , 0xE5, 0xC0, 0xC1, 0xE6, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7 };



int putchar(int char_print)
{
if(char_print ›= 0xC0)
char_print = perecod[char_print - 0xC0];
else
{
if(char_print ›= 0x80)
char_print += 0x40;
}

return char_print;
}


// формируем целую строку

void wr_lcd_string(char posit,const char *massiv_LCD)
{
pos((posit-1)*64); // вычисляем строку для вывода, 1- первая, 2 - вторая, функция pos(x) - установка начального адреса для вывода

for(char i=0;i‹16;i++)
wrdata(putchar(*massiv_LCD++));
}
Calima вне форума  
Непрочитано 11.11.2006, 11:02  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Как добавить библиотеки в Proteus
Zemlyanov вне форума  
Непрочитано 11.11.2006, 11:06  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Обычно копированием в папки LIBRARY и MODELS.
А так же добавляя пути SYSTEM-› SET PATHs.
dosikus вне форума  
Непрочитано 11.11.2006, 11:19  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Сообщение от Calima
std out почитайте хелп к используемому Вами компиллятору. Чем пользуетесь?
Пользуюсь CodeVisionAVR.В его хелпе про stdout нет ни слова.У меня есть вот такой масив(руский текст)
flash unsigned char Mes1[]={129,164,101,188,187,199,189,111,179,32,66,97,227 ,184,188,0};
Массив я могу выводить побайтно на ЛСД при помощи lcd_putchar(Mes1[0]) а как его можно вывести сразу весь чтобы было типа lcd_putchar(Mes1[])?Если я так пишу то компилятор просит указать номер байта [?]в массиве.Что делать?
Zemlyanov вне форума  
Непрочитано 11.11.2006, 11:37  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Дайте кто нибудь CVAVR 1.25 .
Не хочу старый ставить.
Уверен что в хелпе описано как строки выводить!
dosikus вне форума  
Непрочитано 11.11.2006, 12:01  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Сообщение от dosikus
Дайте кто нибудь CVAVR 1.25 .
Не хочу старый ставить.
Уверен что в хелпе описано как строки выводить!
The LCD Functions are intended for easy interfacing between C programs and alphanumeric LCD modules built with the Hitachi HD44780 chip or equivalent.
The prototypes for these functions are placed in the file lcd.h, located in the ..INC subdirectory. This file must be #include -ed before using the functions.

Prior to #include -ing the lcd.h file, you must declare which microcontroller port is used for communication with the LCD module.
The following LCD formats are supported in lcd.h: 1x8, 2x12, 3x12, 1x16, 2x16, 2x20, 4x20, 2x24 and 2x40 characters.

Example:

/* the LCD module is connected to PORTC */
#asm
.equ __lcd_port=0x15
#endasm

/* now you can include the LCD Functions */
#include ‹lcd.h›

The LCD module must be connected to the port bits as follows:


[LCD] [AVR Port]
RS (pin4) ------ bit 0
RD (pin 5) ------ bit 1
EN (pin 6) ------ bit 2
DB4 (pin 11) --- bit 4
DB5 (pin 12) --- bit 5
DB6 (pin 13) --- bit 6
DB7 (pin 14) --- bit 7

You must also connect the LCD power supply and contrast control voltage, according to the data sheet.

The low level LCD Functions are:

void _lcd_ready(void)

waits until the LCD module is ready to receive data.
This function must be called prior to writing data to the LCD with the _lcd_write_data function.

void _lcd_write_data(unsigned char data)

writes the byte data to the LCD instruction register.
This function may be used for modifying the LCD configuration.
Example:

/* enables the displaying of the cursor */
_lcd_ready();
_lcd_write_data(0xe);


void lcd_write_byte(unsigned char addr, unsigned char data);

writes a byte to the LCD character generator or display RAM.

Example:

/* LCD user defined characters

Chip: AT90S8515
Memory Model: SMALL
Data Stack Size: 128 bytes

Use an 2x16 alphanumeric LCD connected
to the STK200+ PORTC header as follows:

[LCD] [STK200+ PORTC HEADER]
1 GND- 9 GND
2 +5V- 10 VCC
3 VLC- LCD HEADER Vo
4 RS - 1 PC0
5 RD - 2 PC1

6 EN - 3 PC2
11 D4 - 5 PC4
12 D5 - 6 PC5
13 D6 - 7 PC6
14 D7 - 8 PC7 */

/* the LCD is connected to PORTC outputs */
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm

/* include the LCD driver routines */
#include ‹lcd.h›

typedef unsigned char byte;

/* table for the user defined character
arrow that points to the top right corner */
flash byte char0[8]={
0b0000000,
0b0001111,
0b0000011,
0b0000101,
0b0001001,
0b0010000,
0b0100000,

0b1000000};

/* function used to define user characters */
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code‹‹3) | 0x40;
for (i=0; i‹8; i++) lcd_write_byte(a++,*pc++);
}

void main(void)
{
/* initialize the LCD for 2 lines & 16 columns */
lcd_init(16);

/* define user character 0 */
define_char(char0,0);

/* switch to writing in Display RAM */
lcd_gotoxy(0,0);
lcd_putsf("User char 0:");

/* display used defined char 0 */
lcd_putchar(0);

while (1); /* loop forever */
}


unsigned char lcd_read_byte(unsigned char addr);

reads a byte from the LCD character generator or display RAM.

The high level LCD Functions are:


unsigned char lcd_init(unsigned char lcd_columns)

initializes the LCD module, clears the display and sets the printing character position at row 0 and column 0. The numbers of columns of the LCD must be specified (e.g. 16). No cursor is displayed.
The function returns 1 if the LCD module is detected and 0 if it is not.
This is the first function that must be called before using the other high level LCD Functions.

void lcd_clear(void)

clears the LCD and sets the printing character position at row 0 and column 0.

void lcd_gotoxy(unsigned char x, unsigned char y)

sets the current display position at column x and row y. The row and column numbering starts from 0.

void lcd_putchar(char c)

displays the character c at the current display position.

void lcd_puts(char *str)

displays at the current display position the string str, located in SRAM.

void lcd_putsf(char flash *str)

displays at the current display position the string str, located in FLASH.
Zemlyanov вне форума  
Непрочитано 11.11.2006, 12:03  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

нужна модель памяти на протеус DataFlash AT45
Zemlyanov вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Proteus общие вопросы dosikus Proteus 3366 06.09.2024 08:25
Вопросы по PROTEUS-у Advanced_LAMER Proteus 372 19.09.2021 01:20
Вопрос по работе с Proteus Slnew Proteus 16 20.11.2013 20:09
глюк Proteus при работе с ATMEL ATTINY45 igoruha727 Микроконтроллеры, АЦП, память и т.д 3 23.05.2009 01:00
загрузка CPU при работе PROTEUS dimonbest Proteus 48 25.05.2007 20:30


Часовой пояс GMT +4, время: 10:21.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot