Микроконтролери и електроника
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
___
всякаква информация ще ми е полезна, благодаря предварително на който реши да се занимава :) [/img]

Прикачени файлове:
Коментар на файл: съдържа datasheets и всичките ми останали източници
display control 16f84a.rar [2.85 MiB]
126 пъти

Автор:  Бай Ставри [ Вто Юни 14, 2011 6:45 pm ]
Заглавие: 

http://www.piclist.com/techref/piclist/cheapic/worktime.htm

тук е много просто описано и работещо....успех

Автор:  lifenergy [ Вто Юни 14, 2011 10:51 pm ]
Заглавие: 

Бай Ставри написа:
http://www.piclist.com/techref/piclist/cheapic/worktime.htm

тук е много просто описано и работещо....успех


благодаря много за помощта, но се обезсърчих изведнъж. вързах проста схемича да размигам едно диодче и осъзнах, че съм си изгорил контролера :S при подадено захранване схемата не работи, а когато махна масата има някакво напрежение на абсолютно всички пинове. това напрежение е достатъчно да ми захрани диодчето, но пък схемата не изпълнява записания код. самата програма пък си записва и си чете от контролера, но .. така или иначе той не работи... оставам си само на Proteus :D за сега : )

Автор:  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/