Отговори на тема  [ 7 мнения ] 
16x2 LCD Display + pic 16F84A 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Юни 27, 2010 1:23 pm
Мнения: 25
Мнение 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]
124 пъти

_________________
Има ли желание има и начин !
Вто Юни 14, 2011 4:55 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Май 27, 2011 8:25 am
Мнения: 134
Местоположение: Силистра
Мнение 
http://www.piclist.com/techref/piclist/cheapic/worktime.htm

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


Вто Юни 14, 2011 6:45 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Юни 27, 2010 1:23 pm
Мнения: 25
Мнение 
Бай Ставри написа:
http://www.piclist.com/techref/piclist/cheapic/worktime.htm

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


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

_________________
Има ли желание има и начин !


Вто Юни 14, 2011 10:51 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Чет Сеп 28, 2006 4:24 pm
Мнения: 320
Местоположение: Варна
Мнение 
Едва ли е изгорял , те са доста яки :).Разменял съм + и - , отмествал съм + с някой друг пин (бредборд :)) и не изгарят.


Вто Юни 14, 2011 11:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
То тва да не е телевизор да го включиш и да светне - иска си поне малко туйкиц онуикиц.


Вто Юни 14, 2011 11:41 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 4:01 pm
Мнения: 1438
Мнение 
Провери си кода! Не знам за диода, но това, което си пуснал не изглежда добре. От подпрограма се излиза с RETURN. Ако програмата стигне до END тръгва пак от ORG 0x000. В твоя случай се получава една безкрайна инициализация.


Сря Юни 15, 2011 9:54 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение 
на първо време нямаш връщане от подпрограмата за инициализация


Чет Юни 16, 2011 11:00 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни