roboforum.ru

Технический форум по робототехнике.
Текущее время: 01 мар 2025, 08:59

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Бегущая строка
СообщениеДобавлено: 08 фев 2010, 11:49 
Не в сети

Зарегистрирован: 23 ноя 2009, 17:28
Сообщения: 6
Откуда: Kyiv
Привет! Подскажите пожалуйста, как лучше реализовать бегущую строку на языке Си для мк Silabs c8051F120

я сделал следующим образом: в main продублировал выводимую строку с определенным интервалом, а в обработчике прерываний-сдвиг курсора. Работает, но двигаются обе строки, а мне нужно, чтобы двигалась только верхняя. Как это сделать?? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бегущая строка
СообщениеДобавлено: 08 фев 2010, 11:52 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Телепаты в отпуске, придется хотя-бы исходник опубликовать. :pardon:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бегущая строка
СообщениеДобавлено: 08 фев 2010, 12:15 
Не в сети

Зарегистрирован: 23 ноя 2009, 17:28
Сообщения: 6
Откуда: Kyiv
Конечно :) :)
Код:
#include "c8051F120.h"

sbit LCD_rs = P0^0;
sbit LCD_rw = P0^2;
sbit LCD_en = P0^4;
sfr16 RCAP2=0xca;
sfr16 TMR2=0xcc;
sfr16 RCAP3=202;
sfr16 TMR3=204;
sfr16 ADC0=0xbe;
sfr16 RCAP4=0xe4;
sfr16 TMR4=0xcc;
#define LCD_data P3
#define SYSCLK 3062500
void LCD_init();
void LCD_sendstring(unsigned char *var);
void LCD_build();
void LCD_command(unsigned char var);
void LCD_senddata(unsigned char var);
void delay (unsigned int time);
void Timer1_Init();


void main(void)

   WDTCN   = 0xDE;
    WDTCN   = 0xAD;
    SFRPAGE   = CONFIG_PAGE;
    P0MDOUT   = 0x15;
    P3MDOUT   = 0xFF;
    XBR2      = 0xC0;
    LCD_init();
        LCD_command(0x80);//положение курсора, откуда начинать
   LCD_sendstring("TEMPERATURE IS:");//строка
   LCD_command(0x93);
   LCD_sendstring("TEMPERATURE IS:");//строка
   EA=0;
   Timer1_Init();
    EA=1;
   while (1);{}
}
void LCD_init()
{
   delay (45000);
   LCD_command (0x38);
   delay (12300);
   LCD_command (0x38);
   delay (3000);
   LCD_command (0x38);
   delay (65535);
   LCD_command (0x38);
   delay (65535);
   LCD_command (0x0C);
   delay (65535);
   LCD_command (0x06);
   delay (65535);
   LCD_command (0x01);

}


void delay (unsigned int time)
{
   unsigned int i;
   for (i=0; i<time; i++) {};
}

void LCD_senddata(unsigned char var)
{
LCD_rs = 1; //Selected data register
LCD_rw = 0; //We are writing
LCD_en = 1; //Enable H->L
LCD_data = var;
LCD_en = 0;
delay(3000);
}

void LCD_command(unsigned char var)
{
   LCD_rs = 0;       //Selected command register
   LCD_rw = 0;       //We are writing in instruction register
   LCD_en = 1;       //Enable H->L
   LCD_data = var;    //Function set: 2 Line, 8-bit, 5x7 dots
   LCD_en = 0;
   delay(3000);
}
void LCD_sendstring(unsigned char *var)
{ while(*var) //till string ends
LCD_senddata(*var++); //send characters one by one
}

void Timer1_Init()
{
    SFRPAGE   = TIMER01_PAGE;
    TCON      = 0x10;
    TMOD      = 0x02;
    CKCON     = 0x02;
    IE        = 0x02;
}


void Timer0_ISR (void) interrupt 1

{
delay(100000);
LCD_command(0x1b); // команда сдвига курсора влево
}


Последний раз редактировалось goodking 08 фев 2010, 12:29, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бегущая строка
СообщениеДобавлено: 08 фев 2010, 12:23 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
А где определение LCD_command ?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бегущая строка
СообщениеДобавлено: 08 фев 2010, 12:27 
Не в сети

Зарегистрирован: 23 ноя 2009, 17:28
Сообщения: 6
Откуда: Kyiv
Уже добавил, просто удалял из кода все, что не имеет отношения к вопросу :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO