Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
01.05.2009, 13:19
|
#1
|
Временная регистрация
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
|
Вопрос к знатокам mikroC
Возможно ли используя встроенные
библиотеки mikroC отображать на lcd с контроллером HD44780 несколько собственных знаков, один у меня
получаеться отобразить, а вот несколько что-то
туплю ![Смущение](images/smilies/icon_redface.gif) .
Код:
|
const char character[] = {14,31,31,31,31,31,31,0};
const char character1[] = {14,17,31,31,31,31,31,0};
//****************** Прерывания ************************************************** **************************
void interrupt()
{
INTCON=160;
}
void CustomChar(char pos_row, char pos_char) {
char i;
LCD_Cmd(64);
for (i = 0; i‹=7; i++) LCD_Chr_Cp(character[i]);
LCD_Cmd(LCD_RETURN_HOME);
LCD_Chr(pos_row, pos_char, 0);
}
void CustomChar1(char pos_row, char pos_char) {
char i;
LCD_Cmd(64);
for (i = 0; i‹=7; i++) LCD_Chr_Cp(character1[i]);
LCD_Cmd(LCD_RETURN_HOME);
LCD_Chr(pos_row, pos_char, 0);
}
//******************** Основная программа ************************************************** ******************
void main()
{
TRISC=0; // весь порт на выход
CMCON=7; // отключаем компараторы
TRISA=3; // 0,1 входы остальные выходы
TRISB=255; // все входы
TRISD=48; // 4,5 входы остальные на выход
INTCON2=0; // подтягивающие резисторы на порте В включены
INTCON=160; // прерывания от таймера и внешнее от кнопки вкл.
PORTB=0; // сброс порта
PORTD=0; // сброс порта
PORTC=0; // сброс порта
T0CON=194; // разрешаем работу 0-го таймера в 8 битном режиме предделитель 1:8
ADCON0=0; //
ADCON1=13; // 0,1 каналы аналоговые , остальные цифровые
ADCON2=7; // ?
rejim=0; // обнулим переменную
// asm{ // засыпаем и ожидаем внешнего прерывания
// sleep
// }
Lcd_Config(&PORTC,2,3,0,7,6,5,4);
Lcd_Cmd(Lcd_CURSOR_OFF);
Lcd_Out(1, 2, "Hello!");
CustomChar(2,3 );
//------------------------------------------------------------------------------
do{
unsigned char a,b;
CustomChar1(2,4 );
}while(1);
} |
Подскажите если не сложно.
|
|
|
|
01.05.2009, 13:26
|
#2
|
Временная регистрация
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
|
Извиняюсь за коментарии.
|
|
|
|
02.05.2009, 09:19
|
#3
|
Временная регистрация
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
|
извиняюсь за свой глупый вопрос
ответ на него нашёл .Просто неправильно выводил данные на жки,да это просто проба, а функции записи
переопределяемых символов нужно оптимизировать
это позже.
Код:
|
for (i = 0; i‹=7; i++){ LCD_Chr_Cp(character[i]);
}
}
void CustomChar1() {
char i;
LCD_Cmd(72);
for (i = 0; i‹=7; i++){ LCD_Chr_Cp(character1[i]);
}
}
void CustomChar2() {
char i;
LCD_Cmd(80);
for (i = 0; i‹=7; i++){ LCD_Chr_Cp(character2[i]);
}
}
//******************** ************************************************** ******************
void main()
{
TRISC=0; //
CMCON=7; //
TRISA=3; //
TRISB=255; //
TRISD=48; //
INTCON2=0; //
INTCON=160; //
PORTB=0; //
PORTD=0; //
PORTC=0; //
T0CON=194; //
ADCON0=0; //
ADCON1=13; //
ADCON2=7; //
rejim=0; //
// asm{ //
// sleep
// }
Lcd_Config(&PORTC,2,3,0,7,6,5,4);
Lcd_Cmd(Lcd_CURSOR_OFF);
CustomChar();
Lcd_Out(1, 1, "Hello!");
CustomChar1();
CustomChar2();
//------------------------------------------------------------------------------
do{
Lcd_Chr(2,1,0 );
delay_ms(200);
Lcd_Chr(2,1,2 );
delay_ms(200);
Lcd_Chr(2,1,1 );
delay_ms(200);
}while(1);
} |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:24.
|
|