kdorkoli znanje kako morem Prikaz podatkov na mojem LCD?

O

ooicheesan

Guest
Trenutno delam serijske komunikacije med moje VB na comm 1 in 2 PICDEM BOARD .. ne samo jaz sprašujem, zakaj jaz vekanje spodbuda moje podatke prižigati LCD na moji ladji? Pomočjo MPLAB ICD2? Here i predložiti na trske efor vi imeti pogledati, ali sem dobil zamudite kaj ali ne? hvala ...

# include <p18f452.h>
# include <xlcd.h>
# include <delays.h>
# include <usart.h>char podatkov [2];

void Initialise_Serial_Port_Pin (void)
(
/ / Serial TX & Rx zatiči konfiguracijo.
/ / TX - pristanišče C pin 6
TRISCbits.TRISC6 = 0;

/ / Rx - pristanišče C pin 7
TRISCbits.TRISC7 = 1;
)

void Process_Information (void)
(

stikalo (Data [0]) (
primeru "":
PORTA = Data [1];
break;

primeru "B":

PORTB = Data [1];
break;

primer 'C':
PORTC = Data [1];
break;

default:
putrsUSART ( "Napaka!");
return;

);

putrsUSART ( "Ok");

)

char getcharusart ()
(
while (! PIR1bits.RCIF)
nadaljuje;

PIR1bits.RCIF = 0;

vrnitev RCREG;
)

void DelayFor18TCY (void)
(
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
)
void DelayPORXLCD (void)
(
Delay1KTCYx (60) / / Delay of 15ms
return;
)
void DelayXLCD (void)
(
Delay1KTCYx (20) / / Delay of 5ms
return;
)
void main ()
(
unsigned char count = 0;
char temp;/ / Serial TX & Rx zatiči konfiguracijo.
Initialise_Serial_Port_Pin ();/ / Configure zunanji LCD
OpenXLCD (EIGHT_BIT & LINES_5X7);/ / Configure USART
OpenUSART (USART_TX_INT_OFF &
USART_RX_INT_OFF & / / USART konfiguracija
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH, 25);while (1)
(
temp = getcharusart ();
Data [count ] = temp;
if (count == 2)
(
Process_Information ();
putsXLCD (temp);
count = 0;
)
)(
CloseUSART ();
)
)

 
Najprej moram reči, da sem ne uporabljate Microchip C 18 ...

Ko gledam na svojo kodo v glavnem nisem prepričan, da razumem, kaj želite narediti tukaj:

while (1)
(
temp = getcharusart ();
Data [count ] = temp;
if (count == 2)
(
Process_Information ();
putsXLCD (temp);
count = 0;
)
)

Mislim, da putsXLCD natisne niz LCD, če želite natisniti temp na LCD v decimalni boste morali spremeniti to v tiskanje prvi niz.

Nekaj takega bi bilo to delo:

# include <stdlib.h>
char buffer [10];
putsXLCD (btoa (temp, & buffer));

Lahko uporabite tudi:
putcXLCD (temp);

Vendar bi to binarne vrednosti temp vašemu LCD, ki ne bi bila zelo koristna.

Prav tako jasno zaslona vsakič pred tiskanjem svojo vrednost ...

upanje to pomaga in najboljše zvezi

 
Hvala za vašo pomoč tam ... samo želim, da ti povem, kako program dela tukaj ..
temp = getcharusart (); / / dobiti podatke in ga shranite na temp
Data [count ] = temp; / / dobili drugi podatki, in shranite v temp
if (count == 2) / / 2, če so podatki, prejeti nato primerjati je pristanišče, B ali C
(
Process_Information primerjati (), / / nato prikaže [02] ali etc
putsXLCD (btoa (temp, & buffer));
count = 0;

Torej .. si se potrudil za uvedbo putsXLCD (btoa (temp, & buffer)), in vključuje <stdlib.h> in tudi razglasi char temp, pufer [10], v mojem projektu in še to doesnt delo, ki ga dont show vrednost na mojem lcd .. upanje, da boste lahko ogledate moj program spet tu .. i submitt je enkrat več po spremembi .. hvala ..

# include <p18f452.h>
# include <xlcd.h>
# include <delays.h>
# include <usart.h>
# include <stdlib.h>

char podatkov [2];

void Initialise_Serial_Port_Pin (void)
(
/ / Serial TX & Rx zatiči konfiguracijo.
/ / TX - pristanišče C pin 6
TRISCbits.TRISC6 = 0;

/ / Rx - pristanišče C pin 7
TRISCbits.TRISC7 = 1;
)

void Process_Information (void)
(

stikalo (Data [0]) (
primeru "":
PORTA = Data [1];
break;

primeru "B":

PORTB = Data [1];
break;

primer 'C':
PORTC = Data [1];
break;

default:
putrsUSART ( "Napaka!");
return;

);

putrsUSART ( "Ok");

)

char getcharusart ()
(
while (! PIR1bits.RCIF)
nadaljuje;

PIR1bits.RCIF = 0;

vrnitev RCREG;
)

void DelayFor18TCY (void)
(
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
)
void DelayPORXLCD (void)
(
Delay1KTCYx (60) / / Delay of 15ms
return;
)
void DelayXLCD (void)
(
Delay1KTCYx (20) / / Delay of 5ms
return;
)
void main ()
(
unsigned char count = 0;
char temp, pufer [10];/ / Serial TX & Rx zatiči konfiguracijo.
Initialise_Serial_Port_Pin ();/ / Configure zunanji LCD
OpenXLCD (EIGHT_BIT & LINES_5X7);/ / Configure USART
OpenUSART (USART_TX_INT_OFF &
USART_RX_INT_OFF & / / USART konfiguracija
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH, 25);while (1)
(
temp = getcharusart ();
Data [count ] = temp;
if (count == 2)
(
Process_Information ();
putsXLCD (btoa (temp, & buffer));
count = 0;
)

)(
CloseUSART ();
)
)

 
Žal ne vidim nobenih težav v trenutku.

Ali ste prepričani, da boste prejeli vse, od računalnika?

Ali je hitrost prenosa pravilno?

Ena dobra stvar je, da preveri, za prekoračitev, saj bo to pogoj onesposobiti vaš USART sprejem.

char getcharusart ()
(
while (! PIR1bits.RCIF)
nadaljuje;

if (RCSTAbits.OERR)
(
RCSTAbits.CREN = FALSE;
RCSTAbits.CREN = TRUE;
)

PIR1bits.RCIF = 0;
vrnitev RCREG;
)

Mogoče nekdo, ki uporablja Microchip C18 lahko ogledali vaš program?
: do you really nead to open another thread with exactly the same question?

Edit:
ali si res nead za odpiranje drugega niti z natanko isto vprašanje?
http://www.edaboard.com/viewtopic.php?t=93893&highlight =

s spoštovanjem

 
C Ya ... moški .. jaz lahko prejmejo podatke pošljete iz mojega Vb na krovu, ker jaz raba hyperterminal za preverjanje DTA poslan iz VB, tako šele začuden kako moram jaz tekoč za prikaz podatkov za primere [02] na moj LCD na tej PICDEM 2 PLUS krovu? ali da je zvok res čudno za tebe .. rad bi vas eno vprašanje v zvezi putsUSART () in putrsUSART () funkcije v MPLAB ICD 2 ... jaz razumem, da ta funkcija napišite strune vključno null lik iz pravice ..? nato pa še za primere, če sem hotel poslati "ok", ki v svoj hyperterminal ali Vb na comm 1 kako morem napisati kodo? si se potrudil writitng jih putc ( "ok") , nato pa so navedle, da prevajalnik
Napaka - ne bi mogla najti opredelitve simbola "putc" v datoteki "C: \ mcc18 \ Myproj \ Code.o '.

Torej .. kako moram jaz tekoč pošiljati "ok", ki potem? Upanje lahko pomagate ..

 
Najbolj enostaven način bi bila uporaba zgrajena v putcUSART () funkcijo:
putcUSART ( 'o');
putcUSART ( 'k');

Lahko tudi napišete svoje string -> USART funkcijo ...

s spoštovanjem

 
Hvala človek veliko C ... sem dobil za prikaz "ok" za moj Vb tam že .. potem lahko jaz omogoči čas, da se za zamudo zaradi česar iz sporočila o napakah .. tako da problem je, kako prikazati podatke vnesem ki jih je treba prikazati na mojem LCD ... jaz jih predložili že kodo, potem pa, ko sem prost in njihovo zbiranje ... zaslona LCD ne prižgejo, potem pa to didnt show nič ... tako da upanje vi moči pomoč ... hvala ..

 
Jaz še vedno ne more najti problem, razen če jih vnesete, na primer B1 vaše rutinsko piše PORTB, ampak LCD je priključen na PORTB, da to pristanišče ni mogoče uporabiti za karkoli drugega, bi se izognili pisno PORTB, če uporabljate LCD.

Prav tako ne nastavite podatke za smer PORTA in PORTC, ali ta vrata so privzeto vložkov, temveč si jih želijo uporabljati kot real!

Lahko preizkusite vaše LCD z enim od programov primer iz dokumentacije knjižnice C18.

# include <p18C452.h>
# include <xlcd.h>
# include <delays.h>
# include <usart.h>
void DelayFor18TCY (void)
(
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
Nov ();
)
void DelayPORXLCD (void)
(
Delay1KTCYx (60) / / Delay of 15ms
return;
)
void DelayXLCD (void)
(
Delay1KTCYx (20) / / Delay of 5ms
return;
)
void main (void)
(
char data;
/ / Configure zunanji LCD
OpenXLCD (EIGHT_BIT & LINES_5X7);
/ / Configure USART
OpenUSART (USART_TX_INT_OFF & & USART_RX_INT_OFF
USART_ASYNCH_MODE & & USART_EIGHT_BIT
USART_CONT_RX,
25);
while (1)
(
while (! DataRdyUSART ()); / / čakati na podatke
data = ReadUSART (); / / branje podatkov
WriteDataXLCD (data); / / pišite na LCD
if (podatki == 'Q')
break;
)
CloseUSART ();
)

s spoštovanjem

 
Hello there ...glede na to, kar si napisal zame podatkov, ki jih nisem pošiljanje ni pristanišče B je le, da je to, da primerjati, ali je "B" le in pomembna stvar, hočem narediti je, da prikaže iz B02 na moj znak LCD .. tako, da ne jaz sem pošiljanje podatkov je v pristanišče B. .., ker podatkov o pristaniščih je pristanišče D.. tudi jaz preizkušen na spremembo nastavitev vrat in nožice nastavitev na Xlcd.h in skušajo to prevedem. .. program, ki ste mi poslali tisti, ki je vključena v MCS 18 primerov .. tako si se potrudil to spredaj, ampak mislim, da sem dobil prevedem in so vsi I / o igle v. h datoteke, najprej pred xlcd. h bi funkcijo .. torej slišati od tebe ..

 
OK, tako kako si povežete vaš LCD z pic in kaj je povezan kontrast pin (mislim, da je pin3) od LCD?

In kot jaz ne uporabljajo Microchip C18 moči vi PM mi potrebno izvorno kodo XLCD. C in.
H, ki jo uporabljate, tako da lahko vzamem pogled na to?

s spoštovanjem

 
ya .. zdaj sem jaz vas pošiljam xlcd.h kodo in tudi moj lcd.c kodo, kaj moram storiti sedaj je opredeliti
# ifndef __XLCD_H
# define __XLCD_H
Za vašo informacijo jaz so spremenili kodo v kodo DATA_PORT in CTRL_PORT.I sem z uporabo del __18CXX samo tako da vam ni treba skrb za druge ....
druga stvar je, da rabim imeti prevesti p18f452.lib datoteko nato
najti makeonep.bat datoteko v vašem mcc18/src dir nato začne se s tem parametrom:
makeonep.bat 18f452
i spodbuda p18f452.lib datoteko tebe .. tako da lahko neposreden mi kako opredeliti # ifndef __XLCD_H
# define __XLCD_H
pa tudi odškodnina p18f452.lib datoteko nato našli makeonep.bat datoteke, ker si se potrudil in je še vedno tam napaka ... tako da hvala veliko ....

TO JE XLCD.H files ......

# ifndef __XLCD_H
# define __XLCD_H

/ * PIC 17Cxxx in 18Cxxx XLCD periferne rutino.
*
* Opombe:
* - Te knjižnice so napisane postopke za podporo
* Hitachi HD44780 LCD krmilnik.
* - Mora uporabnik določiti naslednje točke:
* - Tip vmesnik LCD (4 - ali 8-bitov)
* - Če je 4-bitni način
* - Ali uporabljate zgornji ali spodnji Košček
* - Podatkov o pristaniščih
* - Tris register podatkov o pristaniščih
* - Pristanišča signal za nadzor in zatiči
* - Nadzor tris signal pristanišče in zatiči
* - Mora uporabnik zagotoviti tri zamudo rutino:
* - DelayFor18TCY () zagotavlja 18 zamuda TCY
* - DelayPORXLCD () zagotavlja vsaj 15ms zamude
* - DelayXLCD () zagotavlja vsaj 5ms zamudo
* /

/ * Interface tip 8-bitno ali 4-bitni
* Za 8-bitno operacijo Odstranite # define BIT8
* /
/ * # Define BIT8 * /

/ * Ko se je v 4-bitni vmesnika določite, če se podatki v zgornji
* Ali manj Košček.Za nižje Košček, komentar # define UPPER
* /
/ * # Define UPPER * /

/ * DATA_PORT opredeljuje pristanišča, do katerih so podatki, LCD priključkov * /
# if __18CXX
# define DATA_PORT PORTD
# define TRIS_DATA_PORT TRISD
# else / * 17CXX * /
# define DATA_PORT PORTC
# define TRIS_DATA_PORT DDRC
# endif

/ * CTRL_PORT določa pristanišča, kjer so povezane kontrolne črte.
* To so le vzorce, spremembe se ujemajo z vašo vlogo.
* /
# if __18CXX
# define RW_PIN PORTBbits.RA2 / * PORT za RW * /
# define TRIS_RW DDRAbits.RA2 / * za TRIS RW * /
# define RS_PIN PORTAbits.RA3 / * PORT za RS * /
# define TRIS_RS DDRAbits.RA3 / * TRIS za RS * /
# define E_PIN PORTAbits.RA1 / * PORT za E * /
# define TRIS_E DDRAbits.RA1 / * TRIS za E * /
# else / * 17CXX * /
# define RW_PIN PORTCbits.RC5 / * Port za RW * /
# define TRIS_RW DDRCbits.RC5 / * TRIS za RW * /
# define RS_PIN PORTCbits.RC4 / * Port za RS * /
# define TRIS_RS DDRCbits.RC4 / * TRIS za RS * /
# define E_PIN PORTCbits.RC6 / * PORT za E * /
# define TRIS_E DDRCbits.RC6 / * TRIS za E * /
# endif

/ * Display ON / OFF Control opredeljuje * /
# define DON 0b00001111 / * Zaslon na * /
# define Snamete 0b00001011 / * Display off * /
# define CURSOR_ON 0b00001111 / * Cursor o * /
# define CURSOR_OFF 0b00001101 / * Cursor off * /
# define BLINK_ON 0b00001111 / * Cursor Blink * /
# define BLINK_OFF 0b00001110 / * No Cursor Blink * /

/ * Cursor ali Display Shift opredeljuje * /
# define SHIFT_CUR_LEFT 0b00010011 / * Cursor premik v levo * /
# define SHIFT_CUR_RIGHT 0b00010111 / * Cursor premik v desno * /
# define SHIFT_DISP_LEFT 0b00011011 / * Display premik v levo * /
# define SHIFT_DISP_RIGHT 0b00011111 / * Display premik v desno * /

/ * Funkcija Set opredeljuje * /
# define FOUR_BIT 0b00101111 / * 4-bitni vmesnik * /
# define EIGHT_BIT 0b00111111 / * 8-bitni vmesnik * /
# define LINE_5X7 0b00110011 / * 5x7 znakov, ena vrstica * /
# define LINE_5X10 0b00110111 / * 5x10 znakov * /
# define LINES_5X7 0b00111011 / * 5x7 znakov, multiple line * /

# if __18CXX
# define PARAM_SCLASS auto
# define MEM_MODEL daleč / * Change to skoraj za majhnega pomnilnika model * /
# else / * 17CXX * /
# define PARAM_SCLASS statično
# define MEM_MODEL
# endif

/ * OpenXLCD
* Konfigurira I / O zatiči za zunanje LCD
* /
void OpenXLCD (PARAM_SCLASS unsigned char);

/ * SetCGRamAddr
* Sets znak generator naslov
* /
void SetCGRamAddr (PARAM_SCLASS unsigned char);

/ * SetDDRamAddr
* Sets naslov prikaz podatkov
* /
void SetDDRamAddr (PARAM_SCLASS unsigned char);

/ * BusyXLCD
* Vrne zaseden status LCD
* /
unsigned char BusyXLCD (void);

/ * ReadAddrXLCD
* Bere trenutni naslov
* /
unsigned char ReadAddrXLCD (void);

/ * ReadDataXLCD
* Bere bajt podatkov
* /
char ReadDataXLCD (ničen);

/ * WriteCmdXLCD
* Piše ukaz za LCD
* /
void WriteCmdXLCD (PARAM_SCLASS unsigned char);

/ * WriteDataXLCD
* Piše podatkov bajti LCD
* /
void WriteDataXLCD (PARAM_SCLASS char);

/ * PutcXLCD
* Putc je napisati
* /
# define putcXLCD WriteDataXLCD

/ * PutsXLCD
* Piše niz znakov za LCD
* /
void putsXLCD (PARAM_SCLASS char *);

/ * PutrsXLCD
* Piše niz znakov v ROM za LCD
* /
void putrsXLCD (PARAM_SCLASS const MEM_MODEL rom char *);

/ * User opredeljuje te postopke v skladu s frekvenco oscilatorja * /
# if __18CXX
extern void DelayFor18TCY (void);
extern void DelayPORXLCD (void);
extern void DelayXLCD (void);
# else / * 17CXX * /
extern void daleč DelayFor18TCY (void);
extern void daleč DelayPORXLCD (void);
extern void daleč DelayXLCD (void);
# endif

# endif

jaz vekanje spodbuda p18f452.lib za vas .... tako da imate pogled na prvi strani opredelitvi potem mi povej mi postopek za opredelitev in korak k odškodnina p18f452.lib datoteko nato
najti makeonep.bat datoteke ...

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Žalosten" border="0" />
 
OK, kot ga uporabljate PORTA vozijo linije vašega zaslona nadzor morate vedeti, da je moč do porta je konfiguriran kot vsi analogni in ga ne more uporabljati kot digitalni I / O (glej priloženo stran iz priročnika)

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Žalosten" border="0" />Kot sem že rekel sem, ne uporabljajo (in imajo) Microchip C18 tako da ni smisla, da mi pošljete serijo fotografij ...

Vse kar delam je, brati C18 knjižnice priročnik (prenesete s spletne strani mikročip), in poskusite, da vam pomaga.

Morda lahko uporabite OpenADC (ADC_0ANA_0REF, ADC_INT_OFF) nastaviti PORTA vse digitalne in še naprej poskušajo dobiti svoj program teče.

s spoštovanjem
Oprostite, toda morate prijavo na ogled te priloge

 
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Hladen" border="0" />

...Najlepša hvala za vašo pomoč res .. čeprav jih ne uporabljate mcc18 .. potem pa zdaj ..Razumem, da obstaja kodeks, je treba spremeniti DATA_PORT tam .. potem pa sedaj LCD teče .. in to kaže Aktivno besede na prvo vrstico in podatke o drugi vrsti ... potem pa čudno je to .. sem poslal podatke, da je B02 je prikazan kot 2 le .. in jaz se sprašujem, kako moram jaz tekoč prikaz "B" značaj Infront iz bajt poslala .... ker ko jaz debug skozi program v ICD2 kaže da podatki, B zajemanje in jaz izgubila nekje prikazati ven .. tako sem jaz predloži del kode za vas, da si ... hvala ..void Process_Information (void)
(

stikalo (Data [0]) (

primeru "":
PORTA = Data [1];

break;

primeru "B":

PORTB = Data [1];

break;

primer 'C':
PORTC = Data [1];

break;

default:

putrsUSART ((const rom char *) "Napaka!");
return;

);
putcUSART ( 'o');
putcUSART ( 'k');

)

char getcharusart (void)
(
while (! PIR1bits.RCIF)
nadaljuje;

PIR1bits.RCIF = 0;

vrnitev RCREG;
)void main ()
(
unsigned char count = 0;
char temp, pufer [10];

char start_msg [] = "Aktivno";/ / Serial TX & Rx zatiči konfiguracijo.
Initialise_Serial_Port_Pin ();/ / Configure zunanji LCD

ADCON1 = 0b00001110; / / set PORTA pin 0 za analogne počitek DIGITAL I / O
LCD_init (); / / configure LCD/ / Configure USART
OpenUSART (USART_TX_INT_OFF &
USART_RX_INT_OFF & / / USART konfiguracija
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH, 25);

LCD_display (1, 1, start_msg);while (1)
(
temp = getcharusart ();
Data [count ] = temp;

if (count == 2)
(

Process_Information ();
btoa (temp, buffer);

/ / LCD_display (2, 1, port_A);
LCD_display (2, 2, pasovi); / / izpis na drugi vrstici LCD
count = 0;
)

)(
CloseUSART ();
)
)

 
Kaj pa to:
if (count == 2)
(
Process_Information ();
buffer [0] = Data [0]
btoa (temp, & buffer [1]);
LCD_display (2, 2, pasovi); / / izpis na drugi vrstici LCD
count = 0;
)

Vi bi prav tako morala gledati svojega Process_Information () rutinsko, kot to PORTA in PORTB in PORTC kot destinacijo in zaslona je rutinska uporabo priključen na PORTA bi to lahko povzročilo nepravilno delovanje dsiplay.

s spoštovanjem

 
<img src="http://www.edaboard.com/images/smiles/icon_surprised.gif" alt="Surprised" border="0" />

...Hej C človek ... hvala veliko zakaj vaš kodo tam .. potem pa sem odkril, kako lahko jaz prikazati B2 na LCD .. tako da zdaj je tu težave, .. da je kako morem prikazati podatke i pošljite na LCD in nenehno, kot A2B2C etc ter dont biti, da je to prepisati .. tako upanje slišati od vas takrat ...

 
ooicheesan wrote:

<img src="http://www.edaboard.com/images/smiles/icon_surprised.gif" alt="Surprised" border="0" /> ...
Hej C človek ... hvala veliko zakaj vaš kodo tam .. potem pa sem odkril, kako lahko jaz prikazati B2 na LCD .. tako da zdaj je tu težave, .. da je kako morem prikazati podatke i pošljite na LCD in nenehno, kot A2B2C etc ter dont biti, da je to prepisati .. tako upanje slišati od vas takrat ...
 
<img src="http://www.edaboard.com/images/smiles/icon_eek.gif" alt="Shocked" border="0" />

..Hvala torej .. bom poskusil, da bodite pozorni na kodo in preizkusite delajo to jasno o pošiljanju podatkov in prikazovanje je zaporedij ... potem druga stvar je, da ko bom poslal podatke B64 potem po tem ko sem poskušal poslati B4 potem bo izpis prepiše podatke, drugi, tretji in levo od tam ..za primere, da bo prikazoval B44 in ne takrat, ko B4 i poslati B64 ..zato je torej nekako za odpis tretji podatkov ..... tako upanje slišati od vas takrat ...

 

Welcome to EDABoard.com

Sponsor

Back
Top