Get the Flash Player to see this player.

time2online Joomla Extensions: Simple Video Flash Player Module
Wyświetlacz 7-segmentowy

Lcd.h z filmu:

#include <avr/io.h>
#include <stdlib.h>
#define LCD_PORT PORTD  //tu konfigurujemy PORT wyswietlacza
#define TRANZYSTOR_PORT  PORTB //tu konfigurujemy PORT tranzystorów
 
#define LCD_DDR DDR(LCD_PORT)
#define TRANZYSTOR_DDR DDR(TRANZYSTOR_PORT)
#define DDR(x)  _SFR_IO8(_SFR_IO_ADDR(x) - 1)
 
void start_7ser ();
int print_7seg(int liczba, int tranzystor);

lcd.c z filmu:

void start_7ser (){
LCD_DDR = 255;
LCD_PORT = 255;
TRANZYSTOR_DDR = 255;
TRANZYSTOR_PORT = 0;
}
int print_7seg(int liczba, int tranzystor){
TRANZYSTOR_PORT=255;
switch (liczba)
{
case 0: LCD_PORT=0b11000000;break;
case 1: LCD_PORT=0b11111001;break;
case 2: LCD_PORT=0b10100100;break;
case 3: LCD_PORT=0b10110000;break;
case 4: LCD_PORT=0b10011001;break;
case 5: LCD_PORT=0b10010010;break;
case 6: LCD_PORT=0b10000010;break;
case 7: LCD_PORT=0b11111000;break;
case 8: LCD_PORT=0b10000000;break;
case 9: LCD_PORT=0b10010000;break;
default: LCD_PORT=255;break;
}
TRANZYSTOR_PORT=~(0b00000001<<tranzystor);
return 0;
}

Program główny main:

#include <avr/io.h>
#include <stdlib.h>
#include <util/delay_basic.h>
 
#include "LCD7seg.h"
 
int main(void)
{
start_7ser();
while(1)
{
 print_7seg(1,1);
 print_7seg(2,0);
}
}

Sposób działania wyświetlacza 7-segmentowego jest taki, że chcemy używać jak najmniej pinów do sterowania nim. Dlatego używa się 7 pinów do przesłania danych oraz tyle pinów ile mamy wyświetlaczy. W jednej chwili na wyświetlacz może iść tylko jedna liczba i trzeba załączyć tylko ten wyświetlacz na którym ta liczba ma się znajdować. Jeśli będziemy przełączać wyświetlacz bardzo szybko, to nie zauważymy, że wyświetlacze gasną.

Kod można pobrać.