Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Как записать переменную

Непрочитано 19.02.2012, 20:56  
st__1
Заблокирован
 
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
st__1 на пути к лучшему
По умолчанию Re: Как записать переменную

http://elm-chan.org/fsw/strf/xprintf.html
Реклама:
st__1 вне форума  
Непрочитано 19.02.2012, 21:02  
XoDoK11
Гражданин KAZUS.RUN
 
Аватар для XoDoK11
 
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
XoDoK11 на пути к лучшему
По умолчанию Re: Как записать переменную

Сообщение от neox-neox Посмотреть сообщение
но я хочу выводить температуру с датчика ds18b20 на экран и тут проблема!
PHP код:
itoa(temp, char s[33],10);
LCD_writeString_F(s); 

Последний раз редактировалось XoDoK11; 19.02.2012 в 21:06.
XoDoK11 вне форума  
Непрочитано 19.02.2012, 21:10  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Как записать переменную

Проект выложите.
CodeNameHawk вне форума  
Непрочитано 19.02.2012, 21:17  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Как записать переменную

Сообщение от neox-neox Посмотреть сообщение
подскажите какую нибудь функцию чтобы lcd_buffer разложить на отдельные символы так я их запишу по отдельности через for!
Так LCD_writeChar( *string++ ); этим и занимается.
Если так не нравиться, то используйте lcd_buffer[i], где i номер выбранного символа.
CodeNameHawk вне форума  
Непрочитано 19.02.2012, 21:20  
neox-neox
Прописка
 
Аватар для neox-neox
 
Регистрация: 27.10.2010
Сообщений: 133
Сказал спасибо: 24
Сказали Спасибо 53 раз(а) в 41 сообщении(ях)
neox-neox на пути к лучшему
По умолчанию Re: Как записать переменную

Сообщение от CodeNameHawk Посмотреть сообщение
Проект выложите
PHP код:
#include ‹mega8.h›
#include ‹delay.h›   
#include ‹1wire.h›               //áèáëèîòåêà ðàáîòû ñ 1Wire 
 #include ‹ds18b20.h›             //áèáëèîòåêà äëÿ ðàáîòû ñ äàò÷èêîì ds18b20 
 #include ‹stdio.h›               //íåíàþ ÷òî çà áèáëèîòåêà, íî áåç íå¸ íåïîëó÷àåòñÿ
#include ‹stdlib.h› 
#asm                             
         .equ __w1_port=0x15; PORTC 
         .equ __w1_bit=3 
 #endasm 


#define SET_DC_PIN                 PORTB |= 0x01  
#define CLEAR_DC_PIN               PORTB &= ~0x01 
#define SET_SCE_PIN                PORTB |= 0x04
#define CLEAR_SCE_PIN              PORTB &= ~0x04
#define SET_RST_PIN                PORTB |= 0x10
#define CLEAR_RST_PIN              PORTB |= 0x10

char lcd_buffer[33]; 
char s[33]; 
/*--------------------------------------------------------------------------------------------------
                                 Public function prototypes
--------------------------------------------------------------------------------------------------*/
void LCD_init ( void );
void LCD_clear ( void );
void LCD_gotoXY ( unsigned char x, unsigned char );
void LCD_writeChar ( unsigned char );
void LCD_writeData ( unsigned char );
void LCD_writeCommand ( unsigned char );
void LCD_writeString ( flash unsigned char*);
void LCD_drawBorder (void );

//#endif  //  _3310_ROUTINES_H_
flash unsigned char smallFont[] =
{
     0x00, 0x00, 0x00, 0x00, 0x00,   // sp
     0x00, 0x00, 0x2f, 0x00, 0x00,    // !
     0x00, 0x07, 0x00, 0x07, 0x00,   // "
     0x14, 0x7f, 0x14, 0x7f, 0x14,   // #
     0x24, 0x2a, 0x7f, 0x2a, 0x12,   // $
     0xc4, 0xc8, 0x10, 0x26, 0x46,   // %
     0x36, 0x49, 0x55, 0x22, 0x50,   // &
     0x00, 0x05, 0x03, 0x00, 0x00,   // '
     0x00, 0x1c, 0x22, 0x41, 0x00,   // (
     0x00, 0x41, 0x22, 0x1c, 0x00,   // )
     0x14, 0x08, 0x3E, 0x08, 0x14,   // *
     0x08, 0x08, 0x3E, 0x08, 0x08,   // +
     0x00, 0x00, 0x50, 0x30, 0x00,   // ,
     0x10, 0x10, 0x10, 0x10, 0x10,   // -
     0x00, 0x60, 0x60, 0x00, 0x00,   // .
     0x20, 0x10, 0x08, 0x04, 0x02,   // /
     0x3E, 0x51, 0x49, 0x45, 0x3E,   // 0
     0x00, 0x42, 0x7F, 0x40, 0x00,   // 1
     0x42, 0x61, 0x51, 0x49, 0x46,   // 2
     0x21, 0x41, 0x45, 0x4B, 0x31,   // 3
     0x18, 0x14, 0x12, 0x7F, 0x10,   // 4
     0x27, 0x45, 0x45, 0x45, 0x39,   // 5
     0x3C, 0x4A, 0x49, 0x49, 0x30,   // 6
     0x01, 0x71, 0x09, 0x05, 0x03,   // 7
     0x36, 0x49, 0x49, 0x49, 0x36,   // 8
     0x06, 0x49, 0x49, 0x29, 0x1E,   // 9
     0x00, 0x36, 0x36, 0x00, 0x00,   // :
     0x00, 0x56, 0x36, 0x00, 0x00,   // ;
     0x08, 0x14, 0x22, 0x41, 0x00,   // ‹
     0x14, 0x14, 0x14, 0x14, 0x14,   // =
     0x00, 0x41, 0x22, 0x14, 0x08,   // ›
     0x02, 0x01, 0x51, 0x09, 0x06,   // ?
     0x32, 0x49, 0x59, 0x51, 0x3E,   // @
     0x7E, 0x11, 0x11, 0x11, 0x7E,   // A
     0x7F, 0x49, 0x49, 0x49, 0x36,   // B
     0x3E, 0x41, 0x41, 0x41, 0x22,   // C
     0x7F, 0x41, 0x41, 0x22, 0x1C,   // D
     0x7F, 0x49, 0x49, 0x49, 0x41,   // E
     0x7F, 0x09, 0x09, 0x09, 0x01,   // F
     0x3E, 0x41, 0x49, 0x49, 0x7A,   // G
     0x7F, 0x08, 0x08, 0x08, 0x7F,   // H
     0x00, 0x41, 0x7F, 0x41, 0x00,   // I
     0x20, 0x40, 0x41, 0x3F, 0x01,   // J
     0x7F, 0x08, 0x14, 0x22, 0x41,   // K
     0x7F, 0x40, 0x40, 0x40, 0x40,   // L
     0x7F, 0x02, 0x0C, 0x02, 0x7F,   // M
     0x7F, 0x04, 0x08, 0x10, 0x7F,   // N
     0x3E, 0x41, 0x41, 0x41, 0x3E,   // O
     0x7F, 0x09, 0x09, 0x09, 0x06,   // P
     0x3E, 0x41, 0x51, 0x21, 0x5E,   // Q
     0x7F, 0x09, 0x19, 0x29, 0x46,   // R
     0x46, 0x49, 0x49, 0x49, 0x31,   // S
     0x01, 0x01, 0x7F, 0x01, 0x01,   // T
     0x3F, 0x40, 0x40, 0x40, 0x3F,   // U
     0x1F, 0x20, 0x40, 0x20, 0x1F,   // V
     0x3F, 0x40, 0x38, 0x40, 0x3F,   // W
     0x63, 0x14, 0x08, 0x14, 0x63,   // X
     0x07, 0x08, 0x70, 0x08, 0x07,   // Y
     0x61, 0x51, 0x49, 0x45, 0x43,   // Z
     0x00, 0x7F, 0x41, 0x41, 0x00,   // [
     0x55, 0x2A, 0x55, 0x2A, 0x55,   // 55
     0x00, 0x41, 0x41, 0x7F, 0x00,   // ]
     0x04, 0x02, 0x01, 0x02, 0x04,   // ^
     0x40, 0x40, 0x40, 0x40, 0x40,   // _
     0x00, 0x01, 0x02, 0x04, 0x00,   // '
     0x20, 0x54, 0x54, 0x54, 0x78,   // a
     0x7F, 0x48, 0x44, 0x44, 0x38,    // b
     0x38, 0x44, 0x44, 0x44, 0x20,   // c
     0x38, 0x44, 0x44, 0x48, 0x7F,   // d
     0x38, 0x54, 0x54, 0x54, 0x18,   // e
     0x08, 0x7E, 0x09, 0x01, 0x02,   // f
     0x0C, 0x52, 0x52, 0x52, 0x3E,   // g
     0x7F, 0x08, 0x04, 0x04, 0x78,   // h
     0x00, 0x44, 0x7D, 0x40, 0x00,   // i
     0x20, 0x40, 0x44, 0x3D, 0x00,   // j
     0x7F, 0x10, 0x28, 0x44, 0x00,   // k
     0x00, 0x41, 0x7F, 0x40, 0x00,   // l
     0x7C, 0x04, 0x18, 0x04, 0x78,   // m
     0x7C, 0x08, 0x04, 0x04, 0x78,   // n
     0x38, 0x44, 0x44, 0x44, 0x38,   // o
     0x7C, 0x14, 0x14, 0x14, 0x08,   // p
     0x08, 0x14, 0x14, 0x18, 0x7C,   // q
     0x7C, 0x08, 0x04, 0x04, 0x08,   // r
     0x48, 0x54, 0x54, 0x54, 0x20,   // s
     0x04, 0x3F, 0x44, 0x40, 0x20,   // t
     0x3C, 0x40, 0x40, 0x20, 0x7C,   // u
     0x1C, 0x20, 0x40, 0x20, 0x1C,   // v
     0x3C, 0x40, 0x30, 0x40, 0x3C,   // w
     0x44, 0x28, 0x10, 0x28, 0x44,   // x
     0x0C, 0x50, 0x50, 0x50, 0x3C,   // y
     0x44, 0x64, 0x54, 0x4C, 0x44,   // z
     0x00, 0x06, 0x09, 0x09, 0x06    // ?
};

/*--------------------------------------------------------------------------------------------------
  Name         :  LCD_init
  Description  :  LCD controller initialization.
  Argument(s)  :  None.
  Return value :  None.
--------------------------------------------------------------------------------------------------*/
void LCD_init ( void )
{
    
    delay_ms(100);
    
    CLEAR_SCE_PIN;    //Enable LCD
    
    CLEAR_RST_PIN;    //reset LCD
    delay_ms(100);
    SET_RST_PIN;
    
    SET_SCE_PIN;    //disable LCD

    LCD_writeCommand( 0x21 );  // LCD Extended Commands.
    LCD_writeCommand( 0xE0 );  // Set LCD Vop (Contrast).
    LCD_writeCommand( 0x04 );  // Set Temp coefficent.
    LCD_writeCommand( 0x13 );  // LCD bias mode 1:48.
    LCD_writeCommand( 0x20 );  // LCD Standard Commands, Horizontal addressing mode.
    LCD_writeCommand( 0x0c );  // LCD in normal mode.

    LCD_clear();
}

/*--------------------------------------------------------------------------------------------------
  Name         :  LCD_writeCommand
  Description  :  Sends command to display controller.
  Argument(s)  :  command -› command to be sent
  Return value :  None.
--------------------------------------------------------------------------------------------------*/
void LCD_writeCommand ( unsigned char command )
{
    CLEAR_SCE_PIN;      //enable LCD
    
    CLEAR_DC_PIN;      //set LCD in command mode
    
    //  Send data to display controller.
    SPDR = command;

    //  Wait until Tx register empty.
    while ( !(SPSR & 0x80) );

    SET_SCE_PIN;        //disable LCD
}

/*--------------------------------------------------------------------------------------------------
  Name         :  LCD_writeData
  Description  :  Sends Data to display controller.
  Argument(s)  :  Data -› Data to be sent
  Return value :  None.
--------------------------------------------------------------------------------------------------*/
void LCD_writeData ( unsigned char Data )
{
    CLEAR_SCE_PIN;      //enable LCD
    
    SET_DC_PIN;      //set LCD in Data mode
    
    //  Send data to display controller.
    SPDR = Data;

    //  Wait until Tx register empty.
    while ( !(SPSR & 0x80) );

    SET_SCE_PIN;        //disable LCD
}

/*--------------------------------------------------------------------------------------------------
  Name         :  LCD_clear
  Description  :  Clears the display
  Argument(s)  :  None.
  Return value :  None.
--------------------------------------------------------------------------------------------------*/
void LCD_clear ( void )
{
    int i,j;
    
    LCD_gotoXY (0,0);      //start with (0,0) position

    for(i=0; i‹8; i++){
      for(j=0; j‹90; j++){
         LCD_writeData( 0x00 ); 
      }
 }
   
    LCD_gotoXY (0,0);    //bring the XY position back to (0,0)
   // LcdSend( 0x40, LCD_CMD );
   // LcdSend( 0x80, LCD_CMD ); 
     
}

/*--------------------------------------------------------------------------------------------------
  Name         :  LCD_gotoXY
  Description  :  Sets cursor location to xy location corresponding to basic font size.
  Argument(s)  :  x - range: 0 to 84
                       y -› range: 0 to 5
  Return value :  None.
--------------------------------------------------------------------------------------------------*/
void LCD_gotoXY ( unsigned char x, unsigned char y )
{
    LCD_writeCommand (0x80 | x);   //column
    LCD_writeCommand (0x40 | y);   //row
}

/*--------------------------------------------------------------------------------------------------
  Name         :  LCD_writeChar
  Description  :  Displays a character at current cursor location and increment cursor location.
  Argument(s)  :  ch   -› Character to write.
  Return value :  None.
--------------------------------------------------------------------------------------------------*/
void LCD_writeChar ( unsigned char ch)
{
unsigned char j;
LCD_writeData(0x00);
for(j=0; j‹5; j++){
LCD_writeData( smallFont[(unsigned int)(ch-32)*5 + j]);
} 
LCD_writeData( 0x00 ); 
} 

/*--------------------------------------------------------------------------------------------------
  Name         :  LCD_writeString_F
  Description  :  Displays a character at current cursor location
  Argument(s)  :  string -› Pointer to ASCII string (stored in FLASH)
  Return value :  None.
--------------------------------------------------------------------------------------------------*/
void LCD_writeString(flash unsigned char *string){
    while ( *string ){
        LCD_writeChar( *string++);
   }
}

/*--------------------------------------------------------------------------------------------------
  Name         :  LCD_drawBorder
  Description  :  Draws rectangle border on the display
  Argument(s)  :  None
  Return value :  None
--------------------------------------------------------------------------------------------------*/
void LCD_drawBorder(void)
{
  unsigned char i, j;  
    
  for(i=0; i‹7; i++)
  {
    LCD_gotoXY (0,i);
    
    for(j=0; j‹84; j++)
    {
      if(j == 0 || j == 83)
        LCD_writeData (0xff);        // first and last column solid fill to make line
      else if(i == 0)
        LCD_writeData (0x08);        // row 0 is having only 5 bits (not 8)
      else if(i == 6)
        LCD_writeData (0x04);        // row 6 is having only 3 bits (not 8)
      else
        LCD_writeData (0x00);
    }
  }
}    


/*--------------------------------------------------------------------------------------------------
                                         End of file.
--------------------------------------------------------------------------------------------------*/

void port_init(void)
{
 PORTB = 0xFF;
 DDRB  = 0xFF;
 PORTC = 0x00; 
 DDRC  = 0x00;
 PORTD = 0x00;
 DDRD  = 0xFF;
}

//SPI initialize
//clock rate: 250000hz
void spi_init(void)
{
 SPCR = 0x58; //setup SPI
}

//TWI initialize
// bit rate:2 (freq: 50Khz)
void twi_init(void)
{
 TWCR= 0x00; //disable twi
 TWBR= 0x02; //set bit rate
 TWSR= 0x00; //set prescale
 TWAR= 0x00; //set slave address
 TWCR= 0x44; //enable twi
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 port_init();
 spi_init();
 twi_init();
 
 MCUCR = 0x00;
 GICR  = 0x00;
 TIMSK = 0x00; //timer interrupt sources
}

//
void main(void)
{
 int temp;  
 int i; 
 w1_init();
 init_devices();
 LCD_init();
 delay_ms(100);       
 LCD_drawBorder();
  
 while(1){  
 temp=ds18b20_temperature(0);
 sprintf(lcd_buffer,"%i",temp);
 LCD_clear ();  
 LCD_gotoXY (0,2);
 LCD_writeString(lcd_buffer);// çäåñü 
 delay_ms(500);
 }    
} 
__________________
- Слово на "б" знаешь ? - ??? - "Береги себя"...
neox-neox вне форума  
Непрочитано 19.02.2012, 21:21  
neox-neox
Прописка
 
Аватар для neox-neox
 
Регистрация: 27.10.2010
Сообщений: 133
Сказал спасибо: 24
Сказали Спасибо 53 раз(а) в 41 сообщении(ях)
neox-neox на пути к лучшему
По умолчанию Re: Как записать переменную

как мне строку lcd_buffer разложить на отдельные символы?
__________________
- Слово на "б" знаешь ? - ??? - "Береги себя"...
neox-neox вне форума  
Непрочитано 19.02.2012, 21:26  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Как записать переменную

Запакуйте ВСЕ файлы проекта и сюда выложите.
CodeNameHawk вне форума  
Непрочитано 19.02.2012, 21:37  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Как записать переменную

На экран копировать умеете, а с экрана?
Я вам написал
Код:
void LCD_writeString(unsigned char *string)
а у вас
Цитата:
void LCD_writeString(flash unsigned char *string)
Поправьте у себя в двух местах.

Я так понимаю вы хотели получить
Код:
sprintf(lcd_buffer,"t=%-i.%-u\xf8C\n\r",temp/10,abs(temp%10));
Читайте help.

Последний раз редактировалось CodeNameHawk; 19.02.2012 в 23:28.
CodeNameHawk вне форума  
Непрочитано 19.02.2012, 23:39  
XoDoK11
Гражданин KAZUS.RUN
 
Аватар для XoDoK11
 
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
XoDoK11 на пути к лучшему
По умолчанию Re: Как записать переменную

// int temp;
// temp=ds18b20_temperature(0);
// sprintf(lcd_buffer,"%i",temp);
Сообщение от dosikus Посмотреть сообщение
Курите на тему ITOA .
PHP код:
itoa(temp, char s[33],10);
LCD_writeString_F(s); 
Уже дважды сказали.

ds18b20_temperature(0); - в каком виде дает температуру?

Последний раз редактировалось XoDoK11; 19.02.2012 в 23:44.
XoDoK11 вне форума  
Непрочитано 19.02.2012, 23:54  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Как записать переменную

Сообщение от XoDoK11 Посмотреть сообщение
LCD_writeString_F(s);
Уже дважды сказали.
Прочитайте вопрос автора, к чему относится ваш совет?

А ваш совет не будет работать, так как void LCD_writeString_F( flash unsigned char*);
CodeNameHawk вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RFID - как прочитать и записать? victor1956 Микроконтроллеры, АЦП, память и т.д 456 10.02.2016 22:25
Как разместить глобальную переменную CodeNameHawk Микроконтроллеры, АЦП, память и т.д 3 19.03.2011 20:08
Как изменять глобальную переменную? sdsrem Микроконтроллеры, АЦП, память и т.д 5 19.01.2011 23:52
Три условия, как записать на си? Mitrar Микроконтроллеры, АЦП, память и т.д 4 23.09.2009 13:36
CVAVR передача в функцию PORTА.X как переменную woroba Микроконтроллеры, АЦП, память и т.д 5 10.12.2007 12:49


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.