7seg med AtMega48, Nybörjare

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Zajber
Inlägg: 451
Blev medlem: 19 oktober 2009, 22:07:16
Skype: Andreas.fridh85
Ort: Rödön
Kontakt:

7seg med AtMega48, Nybörjare

Inlägg av Zajber »

Hallo.

Håller precis på att lära mig lite enkel AVR-programmering.
Har kommit så långt att jag kan få en lysdiod att blinka med en ATmega48 och AVR Studio 4.

Nu tänkte jag ta detta ett steg till och skriva lite värden till en 7 segments LED-display.
Jag köpte ett paket random displayer på Kjell och när jag kom hem såg jag att databladen var på tyska och förmodligen från nån gång på 80-talet.
Har suttit och testat och mätt på pinnarna och kommit fram till att det är negativ ingång på alla pinnarna och att alla går till positiv retur, om man nu kan skriva så.. Vi har testat lite på skolan men en motorola HC12 i assembler att driva en liknande display och då är det tvärtom där returen går på minus sidan.

Jag vet inte riktigt hur jag ska ändra mitt blinkade led-program så att den istället för att sätta en etta (+5v) sätter jord på utpinnarna. Som det är nu kan jag ju endast ändra "returen" på displayen.

Jag bifogar ett luddigt kooood-exempel för mitt blinkade led-program.

Kod: Markera allt

#include <avr/io.h>
#include <util/delay.h>

void delayms( uint16_t millis ) {
	while ( millis ) {
		_delay_ms( 1 );
		millis--;
	}
}

int main( void ) {
	DDRD |= 1 << PD1;			// set LED pin PD1 to output
	while ( 1 ) {
		PORTD &= ~( 0 << PD1 );	// LED off
		delayms( 900 );			// delay 900 ms

		PORTD |= 0 << PD1; 		// LED on

		delayms( 100 );			// delay 100 ms
	}
	return 0;
}
Användarvisningsbild
Zajber
Inlägg: 451
Blev medlem: 19 oktober 2009, 22:07:16
Skype: Andreas.fridh85
Ort: Rödön
Kontakt:

Re: 7seg med AtMega48, Nybörjare

Inlägg av Zajber »

Oj oj. nu ser jag redan ett fel.
Jag har ändrat lite i koden för att testa att skicka 0 (testat) det ska givet vis vara en 1:a istället för 0 här:

Kod: Markera allt

 PORTD |= 1 << PD1;       // LED on
och här:

Kod: Markera allt

 PORTD &= ~( 1 << PD1 );   // LED off
Användarvisningsbild
Zajber
Inlägg: 451
Blev medlem: 19 oktober 2009, 22:07:16
Skype: Andreas.fridh85
Ort: Rödön
Kontakt:

Re: 7seg med AtMega48, Nybörjare

Inlägg av Zajber »

Jaja, det tog en stund men jag har lyckats lösa det hela nu inte så svårt som jag trodde.

http://www.youtube.com/watch?v=oWUd1vbs5sA
Spket
Inlägg: 81
Blev medlem: 22 mars 2009, 02:19:50

Re: 7seg med AtMega48, Nybörjare

Inlägg av Spket »

Kul! Jag gjorde ungefärr samma sak fast med en PIC16F877a. Har du hela koden för din 7-segment display? Jag använder själv ASM men är sugen att börja så smått med C snart.
Skriv svar