LCD display och PIC *med bilder på sidan 2*

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Men jag vill köra med intosc men eriikh's kod är för kristall,

Justera delay rutinerna, om du vill ha samma fördröjningar vid 4 Mhz
som vid 20 Mhz.

> Movlw 0x45
> movlw a'E'

Samma sak (om nu ascii koden för "E" = "45" i hex, jag har inte kollat...)

> Och vad menas med "ISR Equ 0x004 " ?

Bara för att kunna skriva "Org isr".
"ORG h'004' " går lika bra. Lite onödigt med en symbol där igentligen...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Jag hadde tänkt använda en "look up tabel" och då ska man ju ändra värdet i program counter, Men när jag kollar i data bladet för PIC16F628A så finns där ett register som heter "PCL" är det den som jag ska ändra? Och desutom så finns det en i varje bank, en på 02h en på 82h en på 102h och en på 182h, vilken av dem är det i så fall? och värdet jag lägger till i PC ska det vara i hex?

Så här tänkte jag göra:

Kod: Markera allt

PC   equ  02h ; är det 02h????


movlw  03 (h ? )  ;Ska det vara 'h' är eller är det 'd'????
call       table

:
table     addwf   PC
retlw     d'10'
retlw     d'20'
retlw     d'30'
retlw     d'2'
retlw     d'1'
retlw     d'40'
retlw     d'60'

return
//Daniel A
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

PCL är "un-banked", d.v.s det är tillgängligt från alla banker.
Precis som t.ex STATUS t.ex.

PCL finns definierat i INC filen, så plocka bort din EQU.

> och värdet jag lägger till i PC ska det vara i hex?

Förstår inte frågan. Ett värde är ett värde är ett värde.
Hur du väljer att representera värdet (dec/hex/oct) i din kod
spelar ingen roll.

Dessutom har ju '03' samma "värde" oavsett om det är hex eller decimalt.

Notera också att tabellen inte får passera en 256 bytes gräns med den
enkla lösningen du har. Antingen tvingar man tabellen till en "säker"
plats, eller så får man lägga till kod för att hantera PCLATH. Det finns
en del info om detta i databladet samt i en app-note (minns inte numret,
men leta efter "table lookup").
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

>Förstår inte frågan. Ett värde är ett värde är ett värde.
Hur du väljer att representera värdet (dec/hex/oct) i din kod
spelar ingen roll.

>Dessutom har ju '03' samma "värde" oavsett om det är hex eller decimalt.

Aha! Så blir det ju!Jag tänkte bara lite fel. :oops:

Jag får kolla upp det med 256 bytes, så jag förstår det också.

//Daniel A
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

sodjan skrev:> Men jag vill köra med intosc men eriikh's kod är för kristall,

Justera delay rutinerna, om du vill ha samma fördröjningar vid 4 Mhz
som vid 20 Mhz.

> Movlw 0x45
> movlw a'E'

Samma sak (om nu ascii koden för "E" = "45" i hex, jag har inte kollat...)

> Och vad menas med "ISR Equ 0x004 " ?

Bara för att kunna skriva "Org isr".
"ORG h'004' " går lika bra. Lite onödigt med en symbol där igentligen...
Okej,Tack så myket! Då kan jag nog börja labba lite med den :)

//Daniel A
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Hur ändrar jag om MPLAB ska reagera på stor och liten bokstav? Eriikh's kod funkar inte på min, det är säkert 100 fel pga. storbokstav...

Tacksam för snabb hjälp!
//Daniel A
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Kryssa i "case usensitive" i konfigurationen för MPLAB.

Projekt -> Build Options -> Projekts. MPASM fliken...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Tack så mycket! då va det fixat, fasst innan jag fick svaret tog jag mig tiden att rätta tillalla till stor eller liten bokstav. :)

När jag kör programmet kommer det upp svarta rutor i alla "matriser" på översta raden men inte mera sen... Vad kan det bero på?

Och min BKL funkar inte heller. När jag kollade hur banorna gick på den, gick det till tomma "rutor" för ytmonterade komponenter. Eftersom dem komponenterna inte finns där kan jag inte se att dem tvåpinnarna (BKL 0v och BKL +4,2V) skulle kunna gå någonstans... Det är ju rätt vanligt att det är tumma såna "rutor" men dem här pinnarna värkar inte junna gå någonstans utan dem... :? dem kan väll inte glömt att sätta på dem? Det är bla. en som det står R7 på o sen är det J1, J2, J4 och J4. minus sidan kommer bara till två av "rutorna" J3 och J2. Och + sidan kommer bara till ena sidan av den tomma motståndsrutan(R7)...

//Daniel A
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

*ÄR* det någon BL överhuvudtaget på modulen ??

> När jag kör programmet kommer det upp svarta rutor i alla "matriser"
> på översta raden men inte mera sen... Vad kan det bero på?

Felkoppling ?? Fel i programmet ??
Ärligt talat, hur fasen ska någon kunna veta det... :-)
Översta raden blir väl så efter power-on har jag för mig...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Ja, det ska vara BL på den...konstigta att programmet funkade för han men inte för mig :( Jag får ta olabba vidare lite...

Eriikh: Vad var det för problem du hadde med din ibörjan?

Tack!
//Daniel A
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Eriikh: Jag fick inte ditt program att fungera så jag gjorde ett eget med hjälp av PDF'erna som sodjan länkade till.

Det är bara min första version, men den funkar för att skriva text med :) , Jag ska lägga det som subrotiner m.m. och se om jag kan få det till 4-bit mode.

Kod: Markera allt


;*****************  LCD-writer 1.0 ***************
;This program write "Hallo!" on a 16 x 2 LCD with 5x7 dots,
;in 8-bit mode, from at PIC16F628A. 
;
;Pinnout:
;RS = PORTA,3
;EN = PORTA,2
;Data 1-8 = PORTB,0-7
;
;*******
;Writen by Daniel Andersson, Daniel(at)crazycasemod(dot)se
;for www.crazycasemod.se.
;*******

;********* Start off program **********

; Assign your microcontroller
        LIST P=16F628A


; This include file makes programming more understandeble
        include <P16F628A.INC>
        
        
    __CONFIG _CP_OFF & _DATA_CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _LVP_OFF

; save on free ram in bank0

delay_var1		equ		20h
delay_var2		equ		21h  
delay_var3		equ		22h 

pause1			equ		23h	 



;define pinouts

#define		EN	PORTA,2  
#define		RS	PORTA,3
#define		LCD	PORTB


;startadres of the controller
	 org 0x0000


; For using A0-A3 as digital I/O 
    	movlw	D'7' 		; 
        movwf	CMCON		; Comparators off, all pins digital I/O 

; Reset Port values
        clrf	PORTA	
        clrf	PORTB
        
; define your pin direction (input/output)

    bsf	STATUS, RP0	          ; Switch to bank 1
		movlw	b'00000000'	  ;
		movwf	TRISA		  ; PORTA = 1,2,3,4,5 & 7 out, 6 in

        movlw	b'00000000'	  ; 
        movwf	TRISB	      ; PORTB = all outputs
	bcf	STATUS, RP0	          ; Switch to bank 0


; main loop

main
	call	delay			;*************
	call	delay			;Wait for display to start
	call	delay			;*************

						;*************
	movlw	b'00001111'		;display on, blinkin krusor
	movwf	LCD				;*************
	call	delay			;*************
	bsf		EN				;press enable
	call	pause			;
	bcf		EN				;
	call	pause			;**************

	call	delay
							;*************
	movlw	b'00111000'		;8-bit 5x7 dots, 2 lines
	movwf	LCD				;*************
	call	delay			;*************
	bsf		EN				;press enable
	call	pause			;
	bcf		EN				;
	call	pause			;**************

	bsf		RS				;switch to character mode

	call	delay

	movlw	a'H'			;**************
	movwf	LCD				;Send "A" to LCD
	call	delay			;
	bsf		EN				;press enable
	call	pause			;
	bcf		EN				;
	call	pause			;**************

	movlw	a'a'			;**************
	movwf	LCD				;Send "A" to LCD
	call	delay			;
	bsf		EN				;press enable
	call	pause			;
	bcf		EN				;
	call	pause			;**************

	movlw	a'l'			;**************
	movwf	LCD				;Send "A" to LCD
	call	delay			;
	bsf		EN				;press enable
	call	pause			;
	bcf		EN				;
	call	pause			;**************

	movlw	a'l'			;**************
	movwf	LCD				;Send "A" to LCD
	call	delay			;
	bsf		EN				;press enable
	call	pause			;
	bcf		EN				;
	call	pause			;**************

	movlw	a'o'			;**************
	movwf	LCD				;Send "A" to LCD
	call	delay			;
	bsf		EN				;press enable
	call	pause			;
	bcf		EN				;
	call	pause			;**************

	movlw	a'!'			;**************
	movwf	LCD				;Send "A" to LCD
	call	delay			;
	bsf		EN				;press enable
	call	pause			;
	bcf		EN				;
	call	pause			;**************

stop	
	goto	stop

; Delay routine 


delay   movlw	D'10'
	    movwf	delay_var3
delay1  movlw	0x82
	    movwf	delay_var2
delay2  movlw	0xFF
	    movwf	delay_var1
delay3	decfsz	delay_var1, f 
	    goto	delay3
	    decfsz	delay_var2, f
        goto	delay2
     	decfsz	delay_var3, f
        goto	delay1
    	return

pause   movlw	D'100'
	    movwf	pause1
pause2	decfsz	pause1, 1 
	    goto	pause2
		return

        END
//Daniel A
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Har nu suttit i många många timmar för att få igång backlight, jag har läst på alla sidor som herr google visade mig. På allaställen står det att man bara ska koppla plus via antingen en 100Ω pot eller en 1Ω resistor. Men hur jag än gör lyser det inte... Jag har mätt med en multimeter(eller vad det nu heter) och det var ingen kontakt mellan dem två.
Och desutom, härär bilden som var på dems hemsida:
Bild

Men min har inte vita bokstäver utan det är en grön-grå bakrund med svart-gråa bokstäver... o det kan väll inte ändras om man lyser med bakrunsbelysningen?

Tack!
//Daniel A
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Här kommer några bilder på min:

så här står det på påsen jag fick den i.
Bild

framsidan
Bild

baksidan
Bild

här sitter LED'n på bilden, men här är inte ens en öppning till glaset...
Bild

men på denna sidan är det hål i metalen in till glaset, och det sitter någon "klutt" där, som skulle kunna va lim.
Bild

så här ser den ut när den är igång
Bild


Kan det vara så illa så att dem tog en utan BL till mig o la i en påse som det stog med BL på..

//Daniel A
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Inlägg av BEEP »

Det kanske är så att du måste löda dit ett motstånd till anoden på backlighten :?:
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

BEEP: Har funderat på det, men då är frågan om det överhuvodtaget finns någon LED, och om jag löder på ett motstånd där så kommer det inte längre än till dem tumma lödpungterna för J1 -> J4...

//Daniel A
Skriv svar