PIC 16f876A ar LCD problēma (steidzami)

A

Am_Da_One

Guest
i wrote kodu 16f876A un imitētas to ar PIC simuliator un simuilated fine,,, bet par aparatūras LCD tikai parāda tukšos blokus bez izejas dati un šeit ir kods:pIEZĪME: i jāpārbauda arī aparatūras no citām novietnēm un tas ir pareizs.; LCD teksts demo -8 bit mode; Nigel Goodwin 2.002
LIST p = 16F876A; pateikt montētājs ko mikroshēmu mēs izmantojaminclude "P16F876A.inc", arī par mikroshēmu noklusējumuscount equ 0x20count1 equ 0x21COUNTA equ 0x22countb equ 0x23tmp1 equ 0x24tmp2 equ 0x25templcd equ 0x26templcd2 equ 0x27

org 0x00NOPorg 0x05

InicializētuBCF STATUS, RP0; izvēlieties banka 0clrf countclrf PORTAclrf PORTBclrf PORTC

SetPorts BSF STATUS, RP0; izvēlieties banka 1movlw 0x00; darīt visu pins outputsmovwf TRISBmovwf TRISAmovwf TRISCBCF STATUS, RP0; izvēlieties banka 0
zvans Delay5, tad pagaidīt LCD nokārtot

zvans LCD_Init; setup LCD

sākums clrf skaits; kas counter reģistrēties uz nulliMessagemovf skaits, w; izvirzīti counter vērtību Wzvans Text; iegūtu rakstzīmi no teksta tabulasxorlw 0x00, tā ir nulle?btfsc STATUSS, ZGoto NextMessagezvans LCD_Charzvans Delay5incf skaits, fGoto Message
NextMessage zvans LCD_Line2; pāriet uz 2 rindas pirmajā ailē
clrf skaits; kas counter reģistrēties uz nulliMessage2movf skaits, w; izvirzīti counter vērtību Wzvans teksts2; iegūtu rakstzīmi no teksta tabulasxorlw 0x00, tā ir nulle?btfsc STATUSS, ZGoto EndMessagezvans LCD_Charzvans Delay5incf skaits, fGoto Message2
EndMessage
zvans LCD_Line1Stop Goto sākums; Subroutines un tekstu tabulām
; LCD routines
; Inicializētu LCDLCD_Initmovlw 0x38, Set 4 bitu režīmāzvans LCD_Cmd
movlw 0x1f; Set displeja maiņazvans LCD_Cmd
movlw 0x06; Set displejs rakstzīmju režīmszvans LCD_Cmd
movlw 0x08; Set displeja ieslēgšana / izslēgšana un kursors komandazvans LCD_Cmd
zvans LCD_Clr, skaidri displejs
retlw 0x00
; Komanda, kas regulāriLCD_Cmdmovwf templcd; Swapf templcd, w; sūtīt augšējais skrubināt; Andlw 0x0f, skaidri augšējo 4 bitiem W; Movwf PORTB; BCF PORTB, 4; RS līnija 0; Aicināt Pulse_e, Pulse E līnija augsts
movf templcd, w; sūtīt zemāks skrubināt; Andlw 0x0f, skaidri augšējo 4 bitiem Wmovwf PORTBBCF PORTC, 0; RS līnija 0zvans Pulse_e; Pulse E līnija augstszvans Delay5retlw 0x00
LCD_CharD addlw 0x30LCD_Charmovwf templcd; Swapf templcd, w; sūtīt augšējais skrubināt; Andlw 0x0f, skaidri augšējo 4 bitiem W; Movwf PORTB; BSF PORTB, 4; RS līnija 1; Aicināt Pulse_e, Pulse E līnija augsts
movf templcd, w; sūtīt zemāks skrubināt; Andlw 0x0f, skaidri augšējo 4 bitiem Wmovwf PORTBBSF PORTC, 0; RS līnija 1zvans Pulse_e; Pulse E līnija augstszvans Delay5retlw 0x00
LCD_Line1 movlw 0x80; pārvietoties līdz 1 rindas pirmajā ailēzvans LCD_Cmdretlw 0x00
LCD_Line2 movlw 0xc0; pāriet uz 2 rindas pirmajā ailēzvans LCD_Cmdretlw 0x00
LCD_Line1W addlw 0x80; pārvietoties līdz 1 rinda, kolonna Wzvans LCD_Cmdretlw 0x00
LCD_Line2W addlw 0xc0; pāriet uz 2 rinda, kolonna Wzvans LCD_Cmdretlw 0x00
LCD_CurOn movlw 0x0d; Set displeja ieslēgšana / izslēgšana un kursors komandazvans LCD_Cmdretlw 0x00
LCD_CurOff movlw 0x0c; Set displeja ieslēgšana / izslēgšana un kursors komandazvans LCD_Cmdretlw 0x00
LCD_Clr movlw 0x01; Clear displejszvans LCD_Cmdretlw 0x00
LCD_HEX movwf tmp1; Swapf tmp1, w; Andlw 0x0f; Aicināt HEX_Table; Aicināt LCD_Charmovf tmp1, w; Andlw 0x0fzvans HEX_Tablezvans LCD_Charretlw 0x00
Delay255movlw 0xff; kavēšanās 255 mSGoto d0
Delay100movlw d'100 '; kavēšanās 100msGoto d0
Delay50
movlw d'50 "kavēšanās 50msGoto d0
Delay20movlw d'20 "; kavēšanās 20mSGoto d0
Delay5movlw 0x01; kavēšanās 5,000 ms (4 MHz clock)d0 movwf count1d1 movlw 0xC7; kavēšanās 1msmovwf COUNTAmovlw 0x01movwf countbDelay_0decfsz COUNTA, fGoto $ 2decfsz countb, fGoto Delay_0
decfsz count1, fGoto d1retlw 0x00
Pulse_eBSF PORTC, 1NOPBCF PORTC, 1retlw 0x00
; beigās LCD routines
HEX_Table ADDWF PCL, fRETLW 0x30RETLW 0x31RETLW 0x32RETLW 0x33RETLW 0x34RETLW 0x35RETLW 0x36RETLW 0x37RETLW 0x38RETLW 0x39RETLW 0x41RETLW 0x42RETLW 0x43RETLW 0x44RETLW 0x45RETLW 0x46

Teksts addwf PCL, fretlw "H"retlw "e"retlw "l"retlw "l"retlw "o"retlw 0x00
Teksts2 ADDWF PCL, fRETLW "R"RETLW "e"RETLW ""RETLW "d"RETLW "y"RETLW "."RETLW "."RETLW "."RETLW 0x00

beigas

 
Zalewani spamem, wśród którego znajduje się korespondencja biznesowa, często nie potrafimy odróżnić fałszywki od realnej korespondencji. Zagrożenia cechują się często kilkoma elementami.

Read more...
 
Es domāju, ka LCD nav inicializēts pareizi.Veikt apskatīt manu kodu, tā darbojas.Lai gan es neesmu, norādot visas ikdienas, jūs saņemsiet ideja.

Kods:L2_START EQU H'40 "; adrese sākumu LCD 2 line

INIT_CMD EQU B'00110000 "LCD inicializācijas komanda, nosūtiet augšējā just tikai

F_SET_I4_CMD EQU B'00101000 "LCD funkcija, kas komandu interfeisa 4 biti, 2 rindas

CLR_CMD EQU H'01 "; Notīrīt visu LCD displejs komanda

HOME_CMD EQU H'02 "LCD atgriešanās kursors mājās komanda

DISP_OFF_CMD EQU B'00001000 "LCD displejs off komanda

DISP_ON_CMD EQU B'00001100 "LCD displeja, no kursora redzams, nav mirgo

MODE_CMD EQU B'00000110 "LCD ievades režīms, kas komandu

CRLF_CMD EQU H'C0 "LCD komandu, lai risinātu sākuma, 2 līnija

LINE_LENGTH EQU D'24 '; garums LCD displejs līnijas burtiem

;================================================= ===================================

; Šajā sadaļā initializes LCD pēc varas upLCD_INIT: movlw D'160 '; LCD vajadzībām 15ms pēc varas izveidota pirms init.
Padariet to 16ms

zvans Long_dly;

movlw INIT_CMD; produkcija init komanda

movwf PORTC;

BSF _LCD_E; pulss Ieslēgt

BCF _LCD_E;

movlw D'50 "gaidīt citam 5ms; LCD prasa 4.1ms

zvans Long_dly;

BSF _LCD_E; sūtīt init.
komanda vēlreiz

BCF _LCD_E;

movlw D'2 "; pagaidīt vēl 200us; LCD vajadzībām 100us

zvans Long_dly;

BSF _LCD_E; sūtīt init.
komanda vēlreiz

BCF _LCD_E;

DELAY_100us, tad pagaidīt 100us starp komandas; LCD vajadzībām 40us

movlw F_SET_I4_CMD; noteikti interfeisa tipa 4-bit

andlw 0xF0; maska no pēdējiem 4 biti

movwf PORTC; izejas dati

BSF _LCD_E; pulss Ieslēgt

BCF _LCD_E;

DELAY_100us; no šo punktu mēs varam izmantot SEND_CMD, SEND_DATA

; routines

movlw F_SET_I4_CMD; precizēt 4 bitu saskarni, 2 rindas, 5x7 dot zīmes

zvans SEND_CMD;

DELAY_100us;

movlw DISP_OFF_CMD; displejs off, kursors off, ne mirgot

zvans SEND_CMD;

DELAY_100us;

movlw CLR_CMD, skaidri parādītu, kas DD RAM adresi 0

zvans SEND_CMD;

movlw D'20 ", ir jāgaida vismaz 1.64ms, mēs jāgaida 2ms

zvans Long_dly;

movlw MODE_CMD, kas režīma auto pieauguma, no displeja maiņa

zvans SEND_CMD;

DELAY_100us; pēc šī kavēšanās displejs ir inicializēts

movlw DISP_ON_CMD;

zvans SEND_CMD; ieslēgtu displeja

DELAY_100us;

 
Es neredzēju, ko veicat Porta digitālo ...Jums atslēgt uz porta salīdzinājuma.Pārbaude datu lapā.

 

Welcome to EDABoard.com

Sponsor

Back
Top