PIC16F886 + HD44780 display [Done]

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

PIC16F886 + HD44780 display [Done]

Inlägg av Scorpiion »

Hejsan, håller och försöker få min lcd display att fungera men det går inte riktigt som jag hade tänkt... Jag använder en PIC16F886 och började med att titta igenom Sodjans kod för lcd'n, efter att jag hade tittat igenom den började jag skriva en egen version av den med lite egna namn och lite annorlunda mest för att det var skoj. Men när jag skulle testa det få fungerade det förstås inte... Vad jag gjorde då var helt enkelt att kopiera koden rakt av, copy paste och sen kompilera det och programmera in det i PICen. Men.... det fungerar fortfarande inte! Displayen jag använder mig av är en sån här från sureelectronics: http://www.sure-electronics.net/mcu,dis ... -LM003.pdf

Antar att det kanske är flera här som har en sån och med den så får jag inte upp någonting alls på displayen... Var och letade efter en LMC 7660 om det var så att den skulle ha negativ spänning på kontrasten men hittade ingen ikväll. Jag hittade en annan display som jag testade med istället och men den så får jag upp en rad fylls med svarta tecken (se bild nedan).

För om jag förstått det hela rätt så ska det ju funka "out of the box" den koden, speciellt när jag använder samma processor som koden ursprungligen var skriven för, man som borde inte kunna göra fel... :P

Bild
Senast redigerad av Scorpiion 15 maj 2009, 15:14:16, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43245
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F886 + HD44780 display

Inlägg av sodjan »

> speciellt när jag använder samma processor som koden ursprungligen var skriven för,...

...och kopplar allt rätt, vilket ju bara du vet och kan kolla... :-) :-)
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

Re: PIC16F886 + HD44780 display

Inlägg av Scorpiion »

Yes... Nu funkar det! :D Så skönt... Hade precis suttit och skrivit ner hur jag kopplat och kanske dubbelkollat det för 20 gången eller nått... Och så tittade jag igenom listan på vad portarna gör, dubbelkollade att E och RS var rätt och så kom jag att tänka på R/W..... :P Som jag då kom ihåg ska vara jordad! Men det var den ju förstås inte... Så med det fixat så löste det sig.. :)
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

Re: PIC16F886 + HD44780 display

Inlägg av Scorpiion »

Jag har baserat min kod på det exemplet som finns på sodjans sida, men nu vill jag använda portb istället för porta till lcdn... Jag har ändrat i define delen så att:

#define LCD_E PORTA, 0
#define LCD_RS PORTA, 1
#define LCD_PORT PORTA

blir:

#define LCD_E PORTB, 0
#define LCD_RS PORTB, 1
#define LCD_PORT PORTB

Jag har testat att ändra på lite andra ställen i koden också men inte fått det att fungera.. bla innan man anropar lcd_init så har jag bytt porta till portb som jag tycker borde bytas...

Men misstänkte att det inte skulle vara riktigt så enkelt.. :P När jag kör den nu (har bytt sladdar från motsvarande porta till motsvarande portb) så ser jag en rad "fylld" och så är det några tecken som liksom syns "igenom" i bakgrunden...

Jag antar att jag måste ändra nått mer då förstås men vet inte riktigt vad... Jag har funderat på om jag måste göra någon mer inställning för PORTB för att den ska funka som jag vill..?
sodjan
EF Sponsor
Inlägg: 43245
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F886 + HD44780 display

Inlägg av sodjan »

Spontant så ser det ut som att den ändring du gjorde på de tre raderna
med #define borde vara tillräckligt.

> ...och så är det några tecken som liksom syns "igenom" i bakgrunden...

Är det rätt (d.v.s förväntade) tecken ? Eller "skräp" ?

> bla innan man anropar lcd_init så har jag bytt porta till portb som jag tycker borde bytas...

Menar du "banksel porta" -> "banksel portb" ?
Gör ju ingen skillnad eftersom båda ligger i bank0 i alla fall.
(Varför inte tala om vilken ändring det är så vi slipper gissa ??)

RB6 och RB7 är programmeringspinnarna, jag vet inte hur du hanterar det.
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

Re: PIC16F886 + HD44780 display

Inlägg av Scorpiion »

Jo jag tycker också att det "borde" funka att ändra rakt av... och ja jag menade banksel porta till banksel portb men jag kom på det också jag tittade upp det efter jag hade skrivit... Det är skräp som syns.

Att RB6 och RB7 är programmeringspinnar har jag också noterat, men jag vet inte hur jag ska hantera det så att säga....?
sodjan
EF Sponsor
Inlägg: 43245
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F886 + HD44780 display

Inlägg av sodjan »

> Det är skräp som syns.

OK. Inte osannolikt att det är själva programmeringen som "skriver" det.
Gör i princip ingenting, koden ska ju fixa till det efteråt. Kan du prova med
att bryta strömmen till allt *efter* programmeringen ? Eller bara bryta
strömmen till LCD'n och göra en reset på processorn ? Men allt sådan
har du väl redan provat, antar jag... :-)

> Att RB6 och RB7 är programmeringspinnar har jag också noterat, men jag vet inte hur jag ska hantera det så att säga....?

Normalt är det bara att se till att inget "farligt" händer. D.v.s att det som sitter på RB6/7
tål att det kommer lite signaler på dom. Eller att det inte laster ner pinnarna så att
programmeringen inte fungerar alls. I ditt fall har du ju R/W på LCD'n fast lagt till jord
så LCD's pinnar kommer alltid att vara ingångar. Man kan tänka sig ett fall då man har
R/W kopplat till processorn, och under programmeringen, då alla pinnar går till hög-imp
läge, så kan LCD'n börja driva dessa pinnar vilket naturligstvis inte är bra. Man får helt
enkelt tänka till lite...
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

Re: PIC16F886 + HD44780 display

Inlägg av Scorpiion »

Jo "allt sådant" har jag testat en 10 gånger innan jag skrev här... Får väl fortsätta titta på koden också försöka komma på nått som är fel.. :P

> Att RB6 och RB7 är programmeringspinnar har jag också noterat, men jag vet inte hur jag ska hantera det så att säga....?

Normalt är det bara att se till att inget "farligt" händer. D.v.s att det som sitter på RB6/7
tål att det kommer lite signaler på dom. Eller att det inte laster ner pinnarna så att
programmeringen inte fungerar alls. I ditt fall har du ju R/W på LCD'n fast lagt till jord
så LCD's pinnar kommer alltid att vara ingångar. Man kan tänka sig ett fall då man har
R/W kopplat till processorn, och under programmeringen, då alla pinnar går till hög-imp
läge, så kan LCD'n börja driva dessa pinnar vilket naturligstvis inte är bra. Man får helt
enkelt tänka till lite...[/quote]

Okey, det är ingen inställning som behöver göras med dom? (RB6/RB7 eftersom dom har "specialfunktioner") Jo LCD borde ju inte påverka, kopplade ur den helt nu och programmerade om PICen... Satt tillbaks den och det fungerade inte.. :/ Hm...
sodjan
EF Sponsor
Inlägg: 43245
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F886 + HD44780 display

Inlägg av sodjan »

> Okey, det är ingen inställning som behöver göras med dom? (RB6/RB7 eftersom dom har "specialfunktioner")

Nje, de har ju inga "specialfunkionen" om inte processorn går över i
"programing mode" (genom Vpp på MCLR pinnen). Det är inget som
man genom kod eller CONFIG kan göra något åt (som tur är).

Jag har inga andra förslag, än att felsöka. Jag skulle köra det i
MPLAB SIM och kolla att alla register sätts som förväntat.

Sen så hade du ju kopplat fel tidigare, så vem vet... :roll:
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

Re: PIC16F886 + HD44780 display

Inlägg av Scorpiion »

Haha jag skulle inte kalla det för att koppla fel utan mer att jag glömde koppla en pin... :P ;)
TotteBasicPic
Inlägg: 36
Blev medlem: 30 december 2008, 11:38:08
Ort: Halmstad

Re: PIC16F886 + HD44780 display

Inlägg av TotteBasicPic »

Vad jag kan se på bilden.
Har du inte jordat ner alla pinar som inte används på displayen.
H/Thomas
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

Re: PIC16F886 + HD44780 display

Inlägg av Scorpiion »

Ja alltså den bilden är ju gammal också... Dom har vart jordade hela tiden sen dess...

Men nu har jag suttit och debuggat i mplab med två identiska program bortset från att jag ändrat i define på ett av dom... Och det som jag upptäckte var att det som är "standard" sätter ett värde på TM0... Dvs pinne 26 som också är T1G (med ett streck över)... Jag tror det är här det händer nånting, eller inte händer nånting som förstör för mig när jag försöker använda portb.

Jag "tror" att det var efter jag kom in i "lcd_send_data" som sedan gick in i "lcd_send_byte", dvs i lcd_send_byte som det kom ett värde på TMR0 som inte kom på versionen som var inställd för portb...

Av någon anledning så slutade mpsim funka för mig nu, eller det beter sig väldigt konstigt... Oavset om jag använder "Step Into" "Steg Over" "Step Out" så som hoppar den bara över den rad den är på och fortsätter... Jag kan som inte komma in i någon sub...

Men kanske den här informationen räcker för att lista ut vad det är som är fel?
bearing
Inlägg: 11670
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: PIC16F886 + HD44780 display

Inlägg av bearing »

Högerklicka och välj "remove all breakpoints". Om inte det hjälper - starta om MPLAB.

Jag hittar för övrigt varken TM0, T1G eller TMR0 i sodjans exempelkod.
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

Re: PIC16F886 + HD44780 display

Inlägg av Scorpiion »

Tack "remove all breakpoints" hjälpte... Hade bara testat att starta om och det funkade ena men inte andra gången....

Jag kan inte hitta det heller! Men så här ser det ut:

Bild

Det där som händer där händer aldrig i koden som ändrad för portb...

EDIT: Den vart lite liten.. :P
Scorpiion
Inlägg: 380
Blev medlem: 24 januari 2008, 20:56:06
Ort: Umeå

Re: PIC16F886 + HD44780 display

Inlägg av Scorpiion »

Länk till stor bild:

http://i40.tinypic.com/5do6c8.jpg
Skriv svar