| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| 16x2 LCD Display + pic 16F84A http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=8944 |
Страница 1 от 1 |
| Автор: | lifenergy [ Вто Юни 14, 2011 4:55 pm ] | ||
| Заглавие: | 16x2 LCD Display + pic 16F84A | ||
Здравейте, форумъри нямам много опит с микроконтролерите, още по-малко с програмирането, но пък съм ентусиаст и колкото и да ми се опъват няма да им се дам. и този път точно това става - от няколко източника едновременно чета как се прави настройката на 16x2 LCD , управлявано с 16F84A микроконтролер и не мога да разбера доста неща. например : как се достига до CGROM клетка и след това как от там да пренеса символа в DDRAM и изобщо така ли се визуализира нещо на дисплея ? целта ми като цяло е да изкарам нещо на дисплея, дори една буква с мигащия курсор .. правя симулациите на Proteus, кода отделно си го проверявам и с MPLAB. към поуста съм прикачил rar-че с всички файловете, а тук ще покажа кода: ;this program is example for 16x2 lcd controlling ;version 1.0 Date:13.6.2011 MCU:PIC16F84A LCD: YB1602A PROCESSOR 16F84A #include "p16f84a.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;Declaring variables Cblock 0x0C WCYCLE PRESCwait endc ; *** START *** org 0x00 goto Main org 0x04 goto Main #include "bank.inc" #include "WAIT.inc" #include "NA_PORTx.inc" Main clrf WCYCLE clrf PRESCwait BANK0 clrf PORTA clrf PORTB BANK1 clrf TRISA clrf TRISB WAIT .20 ;wait for 20 ms call LCD_init BANK0 NA_PORTA b'00111' ;read data - DD/CGRAM->DR WAIT .50 NA_PORTB b'01000111' ;read letter G from CGROM WAIT .50 NA_PORTA b'00101' ;write data to DD/CGRAM WAIT .50 NA_PORTB b'00100000' ;read letter 'space' from CGROM WAIT .50 NA_PORTA b'00101' ;write data to DD/CGRAM WAIT .50 NA_PORTB b'01001010' ;read letter J from CGROM WAIT .50 Loop goto Loop ;__Subprograms LCD_init BANK0 NA_PORTB b'00110000' WAIT .10 ;waiting more than 5msec NA_PORTB 0x030 WAIT .5 ;waiting more than 160usec NA_PORTB 0x030 WAIT .5 ;waiting more than 160msec NA_PORTB b'00111000' ;choosing 8 bit mode, 2 lines, ;5x8 dots WAIT .5 ;waiting more than ;(39u x 4000/250) sec (=624u) NA_PORTB 0x010 ;display off (b'00001000') WAIT .5 NA_PORTB 0x001 ;display clear WAIT .50 ;waiting more than ;(1.53m x 4000/250) sec (=24.5m) NA_PORTB b'00000110' ;right cursor moving, ;no display moving WAIT .5 NA_PORTB b'00001111' ;display ON, cursor on, ;cursor blink on WAIT .5 ;all waintings are instead of ;checking busy flag on RB7 END ___ всякаква информация ще ми е полезна, благодаря предварително на който реши да се занимава
|
|||
| Автор: | Бай Ставри [ Вто Юни 14, 2011 6:45 pm ] |
| Заглавие: | |
http://www.piclist.com/techref/piclist/cheapic/worktime.htm тук е много просто описано и работещо....успех |
|
| Автор: | lifenergy [ Вто Юни 14, 2011 10:51 pm ] | |||||||||
| Заглавие: | ||||||||||
благодаря много за помощта, но се обезсърчих изведнъж. вързах проста схемича да размигам едно диодче и осъзнах, че съм си изгорил контролера :S при подадено захранване схемата не работи, а когато махна масата има някакво напрежение на абсолютно всички пинове. това напрежение е достатъчно да ми захрани диодчето, но пък схемата не изпълнява записания код. самата програма пък си записва и си чете от контролера, но .. така или иначе той не работи... оставам си само на Proteus |
||||||||||
| Автор: | raven_feather [ Вто Юни 14, 2011 11:01 pm ] |
| Заглавие: | |
Едва ли е изгорял , те са доста яки |
|
| Автор: | Cekins [ Вто Юни 14, 2011 11:41 pm ] |
| Заглавие: | |
То тва да не е телевизор да го включиш и да светне - иска си поне малко туйкиц онуикиц. |
|
| Автор: | CarBeta [ Сря Юни 15, 2011 9:54 am ] |
| Заглавие: | |
Провери си кода! Не знам за диода, но това, което си пуснал не изглежда добре. От подпрограма се излиза с RETURN. Ако програмата стигне до END тръгва пак от ORG 0x000. В твоя случай се получава една безкрайна инициализация. |
|
| Автор: | didofen [ Чет Юни 16, 2011 11:00 am ] |
| Заглавие: | |
на първо време нямаш връщане от подпрограмата за инициализация |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|