
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]