Автор | Сообщение |
|
Отправлено: 25.10.04 23:37. Заголовок: Visual VDI (Годограф)
Привет Всем! Собрал свой вариант годографа на устаревшем микроконтроллере AT90s8535-8pc(в наличии был только этот). LCD использовано как в XLT - (128 точек по горизонтали и 64 по вертикали) Data Vision DG 12864 s2fbly(980руб). Самый дешёвый его аналог - МЕЛТ МТ12864А В данный момент программа позволяет выводить оси Х и У и рисовать годограф. Годограф не стирается и поверх него рисуется следующий. Для испытаний в место двух каналов металлодетектора(Х и У) были подключены два потенциометра. В общем всё работает как задуманно быстро и без глюков....вроде ;). Как подключу к детектору - сфотографирую что получиться. P.S. Схему, прошивку, исходный код - смотрите на сайте.
|
|
|
Ответов - 310
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
All
[только новые]
|
|
sevzirfo
|
| администратор
|
Откуда: ExFINLAND, VIIPURI
|
|
Отправлено: 10.07.06 21:12. Заголовок: Re:
Век живи - век учись! Значит я неправильно управлял LCD...а как же их выбирать то, эти половинки???В даташите на МТ12864 ничего толком не написано. Я делал так: Оба чипа вкл(запись одновременно в обе половины экрана) команда Display OFF высокий уровень в Е1(первый чип экрана) высокий уровень в Е2(второй чип экрана) команда Display ON Первый чип ВКЛ, второй ВЫКЛ команда Display OFF высокий уровень в Е1(первый чип экрана) низкий уровень в Е2(второй чип экрана) команда Display ON Второй чип ВЫКЛ,первый ВКЛ команда Display OFF низкий уровень в Е1(первый чип экрана) высокий уровень в Е2(второй чип экрана) команда Display ON Уровни удерживаются всё время. Просветите, как выбирать половинки экрана! При включеном дисплее (Display ON) подаёшь еденицу на первый или второй чип (E1 или Е2) и дергаешь строб чтения/записи???
|
|
|
Vitalik_Pi
|
| постоянный участник
|
Откуда: Росиия, Челябинск
|
|
Отправлено: 11.07.06 14:53. Заголовок: Re:
На сколько я понимаю команда включения и выключения дисплея включает и выключает развертку... нужна она лишь для торого чтоб при выводе большого количества байт на экране небло мерцания (к примеру выводим 100 байт но на 50 байте включается развертка и мы увидим только половину информации или мерцание) так что включен дисплей или выключен ему глубоко по барабану.Далее по записи и чтению байта из графиков отчетливо видно что запись сигналов R\W CS1,CS2, D/I происходит по фронту импульса Е а чтение и запись данных по спаду. Действуем так: (запись байта) опускаем линию Е выствляем сигналы CS1,CS2,D\I D0-D7 (как необходимо) ждем поднимаем линию Е ждем опускаем линию E ждем Поднимаем линию Е Я так понимаю
|
|
|
sevzirfo
|
| администратор
|
Откуда: ExFINLAND, VIIPURI
|
|
Отправлено: 12.07.06 20:40. Заголовок: Re:
Буду пробовать...некогда щас,ремонт дома...покраска,металлопластик и тд)))
|
|
|
zak
|
| постоянный участник
|
|
|
Отправлено: 13.07.06 13:12. Заголовок: Re:
Нет, нет.... не так не так Там всё просто... в мануале ничего толком не написано, но в мелтовском FAQ-е много интересного. http://www.md4u.ru/obmen/melt_faq.htm Главное понять, что дисплей состоит из 2-х одинаковых дисплеев (64х64) соединенных параллельно. Все сигналы (команды) поступают в первый, если CS1 в высоком состоянии, во второй, если CS2 в высоком состоянии. И самое интересное, можно подавать команды в оба дисплея, установив CS1 и CS2 в высокое состояние. Как работать с этим ЖКИ в AB я не знаю... На С - всё очень просто, 1-н раз разобрался, и забыл. Вот, есть Драйвер, разбирайте, ковыряйте... там всё не очень просто, но разобраться можно.
|
|
|
Vitalik_Pi
|
| постоянный участник
|
Откуда: Росиия, Челябинск
|
|
Отправлено: 15.07.06 20:19. Заголовок: Re:
По поводу двух половинок экрана спорить не буду, это действительно так !!! Но я об этом писал уже в этом форуме очень давно. К прошлому ответу добавлю что мне кажется последний цикл линии Е-лишний.Скорее всего линия Е изначально в низком состоянии, тогда все принимает нормальное значение и запись проходит за один цикл.
|
|
|
Vitalik_Pi
|
| постоянный участник
|
Откуда: Росиия, Челябинск
|
|
Отправлено: 15.07.06 20:34. Заголовок: Re:
Goodday All..... Does anybody understand the Busy Flag problem on a GLCD with KS0108 chipset? I can't get it operating, only with a small delay it works, but I need speed. Here is my ASM (for AVR micros) BF routine. pollBF: cbi PORTC, E ;E lo clr temp out DDRD, temp ;PORTD all inputs sbi PORTC, RW ;R/W hi (read mode) cbi PORTC, DI ;D/I lo (intruction mode) nop ;tAS > 140 ns nop loopBF: sbi PORTC, E ;E hi nop ;tDDR > max. 320 ns nop in temp, PIND ;read pins PORTD ldi temp, 0b00000000 ;only bit7 cbi PORTC, E ;E lo nop nop cpi temp, 0x00 ;if BF = 1, brne loopBF ; -> loop ser temp ;else -> out DDRD, temp ; PORTD all outputs ret I can't see an error in the code, can you? Thanks. Вот еще кое что по этой теме
|
|
|
Vitalik_Pi
|
| постоянный участник
|
Откуда: Росиия, Челябинск
|
|
Отправлено: 15.07.06 20:37. Заголовок: Re:
|
|
|
|
Отправлено: 18.07.06 13:25. Заголовок: Re:
в случае рисования линиями необходимы массивы для хранения копии экрана, координат X и Y. я еще храню уже посчитанный VDI. памяти нужно море. ставь атмегу32. кстати уже 13я страница. может новую тему начать ?
|
|
|
sevzirfo
|
| администратор
|
Откуда: ExFINLAND, VIIPURI
|
|
Отправлено: 19.07.06 09:19. Заголовок: Re:
Vitalik_Pi Всё заработало, как ты написал! Теперь без мерцания и на высокой скорости. Половинки экрана можно именно ВЫБИРАТЬ, а не ВКЛ/ВЫКЛ. как это было у меня
|
|
|
Vitalik_Pi
|
| постоянный участник
|
Откуда: Росиия, Челябинск
|
|
Отправлено: 20.03.07 09:06. Заголовок: Re:
С успехом перенес свою прогу на Атмегу16,для sevzifo сложности нет ни какой проги полностью переносимы есть только одна тонкость в 8535 вектора прерываний двух байтные а в Атмеге16 четырех.тоесть в самом начале на ASME нужно написать не rjmp а просто jmp и так исправить все вектора остальное в проге менять не нужно. Вот кусок для 8535 rjmp reset rjmp INT0addr ;External Interrupt0 Vector Address rjmp INT1addr ;External Interrupt1 Vector Address rjmp OC2addr ;Timer2 compare match Vector Address rjmp realtime ;OVF2addr ;Timer2 overflow Vector Address rjmp ICP1addr ;Timer1 Input Capture Vector Address rjmp OC1Aaddr ;Timer1 Output Compare A Interrupt Vector Address rjmp OC1Baddr ;Timer1 Output Compare B Interrupt Vector Address rjmp OVF1addr ;Overflow1 Interrupt Vector Address rjmp prer_ind ;OVF0addr ;Overflow0 Interrupt Vector Address rjmp SPIaddr ;SPI Interrupt Vector Address rjmp URXCaddr ;UART Receive Complete Interrupt Vector Address rjmp UDREaddr ;UART Data Register Empty Interrupt Vector Address rjmp UTXCaddr ;UART Transmit Complete Interrupt Vector Address rjmp ADCCaddr ;ADC Conversion Complete Interrupt Vector Address rjmp ERDYaddr ;EEPROM Write Complete Interrupt Vector Address rjmp ACIaddr ;Analog Comparator Interrupt Vector Address Вот кусок для Атмеги 16 jmp reset jmp INT0addr ;External Interrupt0 Vector Address jmp INT1addr ;External Interrupt1 Vector Address jmp OC2addr ;Timer2 compare match Vector Address jmp realtime ;OVF2addr ;Timer2 overflow Vector Address jmp ICP1addr ;Timer1 Input Capture Vector Address jmp OC1Aaddr ;Timer1 Output Compare A Interrupt Vector Address jmp OC1Baddr ;Timer1 Output Compare B Interrupt Vector Address jmp OVF1addr ;Overflow1 Interrupt Vector Address jmp prer_ind ;OVF0addr ;Overflow0 Interrupt Vector Address jmp SPIaddr ;SPI Interrupt Vector Address jmp URXCaddr ;UART Receive Complete Interrupt Vector Address jmp UDREaddr ;UART Data Register Empty Interrupt Vector Address jmp UTXCaddr ;UART Transmit Complete Interrupt Vector Address jmp ADCCaddr ;ADC Conversion Complete Interrupt Vector Address jmp ERDYaddr ;EEPROM Write Complete Interrupt Vector Address jmp ACIaddr ;Analog Comparator Interrupt Vector Address Остальное в программе не меняется
|
|
|
Ответов - 310
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
All
[только новые]
|
|