| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Как записать переменную
19.02.2012, 20:56
|
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Как записать переменную
|
|
|
|
19.02.2012, 21:02
|
|
|
Гражданин KAZUS.RUN
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
|
Re: Как записать переменную
Сообщение от neox-neox
|
|
но я хочу выводить температуру с датчика ds18b20 на экран и тут проблема!
|
|
PHP код:
|
itoa(temp, char s[33],10);
LCD_writeString_F(s);
|
Последний раз редактировалось XoDoK11; 19.02.2012 в 21:06.
|
|
|
|
19.02.2012, 21:10
|
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
|
Re: Как записать переменную
Проект выложите.
|
|
|
|
19.02.2012, 21:17
|
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
|
Re: Как записать переменную
Сообщение от neox-neox
|
|
подскажите какую нибудь функцию чтобы lcd_buffer разложить на отдельные символы так я их запишу по отдельности через for!
|
Так LCD_writeChar( *string++ ); этим и занимается.
Если так не нравиться, то используйте lcd_buffer[i], где i номер выбранного символа.
|
|
|
|
19.02.2012, 21:20
|
|
|
Прописка
Регистрация: 27.10.2010
Сообщений: 133
Сказал спасибо: 24
Сказали Спасибо 53 раз(а) в 41 сообщении(ях)
|
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);
}
}
|
__________________
- Слово на "б" знаешь ? - ??? - "Береги себя"...
|
|
|
|
19.02.2012, 21:21
|
|
|
Прописка
Регистрация: 27.10.2010
Сообщений: 133
Сказал спасибо: 24
Сказали Спасибо 53 раз(а) в 41 сообщении(ях)
|
Re: Как записать переменную
как мне строку lcd_buffer разложить на отдельные символы?
__________________
- Слово на "б" знаешь ? - ??? - "Береги себя"...
|
|
|
|
19.02.2012, 21:26
|
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
|
Re: Как записать переменную
Запакуйте ВСЕ файлы проекта и сюда выложите.
|
|
|
|
19.02.2012, 21:37
|
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
|
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.
|
|
|
|
19.02.2012, 23:39
|
|
|
Гражданин KAZUS.RUN
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
|
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.
|
|
|
|
19.02.2012, 23:54
|
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
|
Re: Как записать переменную
Сообщение от XoDoK11
|
LCD_writeString_F(s);
Уже дважды сказали.
|
Прочитайте вопрос автора, к чему относится ваш совет?
А ваш совет не будет работать, так как void LCD_writeString_F( flash unsigned char*);
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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.
|
|