Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.11.2007, 20:56
|
|
Прохожий
Регистрация: 26.11.2007
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Динамическая индикация на ЖК
Помогите новичку
Хочу сделать динамическую индикацию c отображением на ЖК для компилятора CodeVision.
Нужно чтоб на ЖК отображался счет до 100 (один счет = 1секунде), а дальше обнулялся и
начинался сначала.
Вот набросал програмку, но она не работает (проверял в протеусе).
Подскажите может я что не так сделал.
#include ‹mega16.h›
#include ‹delay.h›
#include ‹stdio.h› // printf
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include ‹lcd.h›
void main(void)
{
char b=0;
lcd_init(16);
while (1)
{
lcd_gotoxy(0,0);
if (b‹=100)
printf("%b"); // должно выводить на ЖК значение переменной b
else
b=0; // обнуляем переменную
b++; // прибавляем 1
delay_ms(1000); // задержка 1с
}
}
|
|
|
|
26.11.2007, 21:19
|
|
Временная регистрация
Регистрация: 03.11.2006
Сообщений: 64
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
1. Вместо printf("%b") надо printf("%3d",b);
2. После первого прохода значение 0 на LCD не будет выведено. Можно переместить b++ в тело IF.
|
|
|
|
26.11.2007, 23:53
|
|
Прохожий
Регистрация: 26.11.2007
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
printf("%3d",b);
не помогает, экран ЖК ничего не выводит
|
|
|
|
27.11.2007, 00:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от dion310
|
printf("%3d",b); ... экран ЖК ничего не выводит
|
printf выводит не на ЖК индикатор, а в последовательный канал (USART), так как, из двух названных, только он существует в виде стандартной периферии вывода мелкоконтроллера. Чтобы вывести на индикатор, нужно сначала получить строку вывода вызовом sprintf(‹строка-буфер›,‹строка-форматирования›,‹список-величин›) а уж затем выводить на индикатор строку-буфер.
|
|
|
|
27.11.2007, 10:39
|
|
Временная регистрация
Регистрация: 03.11.2006
Сообщений: 64
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Ты используешь CodeVision, в нем есть стандартные функции для вывода на LCD
void lcd_putchar(char c)
void lcd_puts(char *str) - string str, located in SRAM.
void lcd_putsf(char flash *str) - string str, located in FLASH.
Например вывод переменной nTemp:
char ts[10];
int nTemp;
nTemp=100;
sprintf(ts,"%4d ",nTemp);
lcd_puts(ts);
PS: Если отображения нет, проверь контрастность на LCD.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:24.
|
|