Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.06.2010, 18:20
|
#21
|
Прохожий
Регистрация: 06.06.2010
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по CCS PIC
Это я понимаю, но не понимаю, что означает BOLEAN в данном контексте.
UPD:
Это был ответ для baiderin, теперь погружаюсь в чтение ответа от CERGEI1982
|
|
|
|
06.06.2010, 18:30
|
#22
|
Прохожий
Регистрация: 06.06.2010
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по CCS PIC
В драйвере дисплея перед этой структурой есть вот такой комментарий:
// define the pinout.
// only required if port access is being used.
Насколько я понимаю, он гласит о том, что данная структура необходима при подключении дисплея способом "port access".
Означает ли это, что в таком случае бессмысленно переназначать пины посредством вот этого:
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B6
#define LCD_DATA4 PIN_B2
#define LCD_DATA5 PIN_B3
#define LCD_DATA6 PIN_B4
#define LCD_DATA7 PIN_B5
И ещё. Правильно ли я понимаю, что в структуре
struct lcd_pin_map {
BOOLEAN rs;
BOOLEAN enable;
BOOLEAN unused;
BOOLEAN unused_1;
int data : 4;
} lcd;
предполагается назначение выводов порта сверху вниз
0
1
2
3
и т.д.?
|
|
|
|
06.06.2010, 18:42
|
#23
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Вопрос по CCS PIC
А ты не заметил что драйвер переписан весь по сравнению с оригиналом?
Эти define имели влияние:
Код:
|
#ifndef LCD_ENABLE_PIN
#define lcd_output_enable(x) lcdlat.enable=x
#define lcd_enable_tris() lcdtris.enable=0
#else
#define lcd_output_enable(x) output_bit(LCD_ENABLE_PIN, x)
#define lcd_enable_tris() output_drive(LCD_ENABLE_PIN)
#endif
#ifndef LCD_RS_PIN
#define lcd_output_rs(x) lcdlat.rs=x
#define lcd_rs_tris() lcdtris.rs=0
#else
#define lcd_output_rs(x) output_bit(LCD_RS_PIN, x)
#define lcd_rs_tris() output_drive(LCD_RS_PIN)
#endif
#ifndef LCD_RW_PIN
#define lcd_output_rw(x) lcdlat.rw=x
#define lcd_rw_tris() lcdtris.rw=0
#else
#define lcd_output_rw(x) output_bit(LCD_RW_PIN, x)
#define lcd_rw_tris() output_drive(LCD_RW_PIN)
#endif |
Сейчас точно все не помню,сильно еще не погружался,но разобраться можно.Главное знать как дисплей управляется и язык Си.У меня есть тестовый готовый проект на пик16ф84,могу выложить раз так все трудно.
__________________
Глаза боятся,а руки делают.
|
|
|
|
06.06.2010, 18:58
|
#24
|
Прохожий
Регистрация: 06.06.2010
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по CCS PIC
Спасибо, но готовый проект выкладывать не нужно. Я понять хочу.
Но пока, увы, ничегошеньки не понимаю...
В частности непонятно, каким образом отправляются байты инициализации согласно даташиту?
Я ожидал увидеть что-нибудь наподобие
FCD_LCDDisplay0_RawSend(0x33, 0);
Wdt_Delay_Ms(2);
FCD_LCDDisplay0_RawSend(0x33, 0);
Wdt_Delay_Ms(2);
FCD_LCDDisplay0_RawSend(0x32, 0);
Wdt_Delay_Ms(2);
FCD_LCDDisplay0_RawSend(0x2c, 0);
Wdt_Delay_Ms(2);
FCD_LCDDisplay0_RawSend(0x06, 0);
Wdt_Delay_Ms(2);
FCD_LCDDisplay0_RawSend(0x0c, 0);
Wdt_Delay_Ms(2);
Но ничего такого в драйвере нет. Это правильно? Так и должно быть? Спрашиваю потому, что сомневаюсь в корректности установки компилятора.
|
|
|
|
06.06.2010, 19:14
|
#25
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Вопрос по CCS PIC
Приятно что хочеш разобратся ![Улыбка](images/smilies/icon_smile.gif)
Начнем тогда
Смотрим на эту функцию:
Код:
|
void lcd_init() {
BYTE i;
set_tris_lcd(LCD_WRITE);
lcd.rs = 0;
//lcd.rw = 0;
lcd.enable = 0;
delay_ms(15);
for(i=1;i‹=3;++i) {
lcd_send_nibble(3);
delay_ms(5);
}
lcd_send_nibble(2);
for(i=0;i‹=3;++i)
lcd_send_byte(0,LCD_INIT_STRING[i]);
} |
1) С помощью структуры настараиваются порты на вывод
Код:
|
struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; |
2) понятно что вывод E опускаем к нулю(да простят меня за простое описание)
3)Видим цикл
Код:
|
for(i=1;i‹=3;++i) {
lcd_send_nibble(3);
delay_ms(5);
} |
Два раза выводим на лсд 0х03
4)Ну и потом 0х02
5)Настраиваем лсд на нужные нам настройки,они находятся тут:
Код:
|
BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type ‹‹ 2), 0xc, 1, 6}; |
Их можно менять на свое усмотрение,например курсор показать или чтоб мигал,также сдвиг и т д.
Да и заметь что тут нет опроса занятости дисплея,вместо этого вставляются задержки по даташифту на HD44780 фирмы HITACHI и KS0066 фирмы SAMSUNG.
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 06.06.2010 в 19:36.
|
|
|
Сказали "Спасибо" CERGEI1982
|
|
|
06.06.2010, 19:38
|
#26
|
Прохожий
Регистрация: 06.06.2010
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по CCS PIC
Спасибо за "вкусное" сообщение! Иш ты, как хитро придумано с инициализацией!
К сожалению, пятый пункт не прошёл.
"5)Настраиваем лсд на нужные нам настройки,они находятся тут:" Ну, сейчас не это главное, надо с пинами разобраться.
В драйвере написано, что возможен доступ к дисплею двумя способами: "Port acess" или побитно. Каким из этих способов общепринято обращаться к LCD?
Где конкрентно я могу сопоставить пины контроллёра и дисплея друг другу?
Как должна выглядеть строка main.c, в которой будет прописано, что Data5 дисплея подключается к 3-му биту портаВ?
|
|
|
|
06.06.2010, 21:25
|
#27
|
Прохожий
Регистрация: 06.06.2010
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по CCS PIC
Есть! Получилось! Оттолкнулся вот отсюда ![Улыбка](images/smilies/icon_smile.gif) )
https://kazus.ru/forums/showthread.php?t=5168&page=39
Но теперь надо избавиться от пина RW
|
|
|
|
06.06.2010, 23:39
|
#28
|
Частый гость
Регистрация: 31.08.2006
Адрес: Орёл
Сообщений: 26
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по CCS PIC
Форумчане кто знает ответьте:
вопрос: в первой иконке слева когда открываешь проекты, то
в окне ( Recent Projects и Recent Files ) как удалить ненужные
проекты и не нужные файлы???
|
|
|
|
07.06.2010, 09:32
|
#29
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Вопрос по CCS PIC
AFAIK это обычно прописывается в реестре, через некоторое время сами уйдуть ![Улыбка](images/smilies/icon_smile.gif) , а вместо них будут активные рабочие проекты.
__________________
misterdi<@>i.ua
|
|
|
|
07.06.2010, 21:54
|
#30
|
Прохожий
Регистрация: 06.06.2010
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по CCS PIC
Други! Почему переменная pausa выводится на дисплей не как 300, а как 44? Как вывести число больше, чем байт? (не Float)
int pausa = 300;
int rabota = 30;
void main()
{
lcd_init();
printf (LCD_PUTC "Rabota: %d\nPausa: %d ", rabota, pausa );
delay_ms(50);
}
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
i2c+ccs pic
|
Gladkih |
Микроконтроллеры, АЦП, память и т.д |
9 |
18.04.2016 22:17 |
CCS PIC C PCWHD 4.065
|
fmssp |
Микроконтроллеры, АЦП, память и т.д |
38 |
09.06.2010 23:44 |
CCS PIC C 4.020
|
fmssp |
Микроконтроллеры, АЦП, память и т.д |
11 |
11.02.2009 12:17 |
Вопрос по CCS PICC PCWH ,,,
|
hubble |
Микроконтроллеры, АЦП, память и т.д |
1 |
04.02.2007 21:37 |
CCS PIC C v.4.020
|
mishastik |
Микроконтроллеры, АЦП, память и т.д |
0 |
23.01.2007 12:52 |
Часовой пояс GMT +4, время: 03:00.
|
|