Перейти к содержанию

abuzhakov

Рекомендуемые сообщения

Привет всем! на этот раз я решил собрать VU METR на atmega8

В инете я нашел схему вот эту http://hawelson.blog.cz/1005/vu-metr-2x32led-s-mikrokontrolerem и решил её собрать!

У меня сейчас в машине стоит анализатор спектра на atmega8 я его переделал под VU METR но светодиодов мало всего 10 поэтому мне пришла в голову такая идея.

Кто нибудь собирал такую? и работает ли она вообще?

Вот схема:

post-143652-0-92320300-1350891692_thumb.png

Печатная плата:

post-143652-0-33512300-1350891756_thumb.png

В собранном виде:

post-143652-0-48365500-1350891844_thumb.jpg

post-143652-0-36886900-1350891888_thumb.jpg

Я переделал печатку под себя чтоб я мог соединить светодиоды там где захочу

post-143652-0-30734300-1350892242_thumb.png

И код программы:

/*
MCU: ATmega8, ATmega8L
Program pro stereo VU metr 2x32 LED
Program napsal Petr Hawliczek
Vytvořeno pro web: http://HAWELSON.blog.cz/
*/
//********************************************
#define F_CPU 1000000UL // NASTAVENÍ VNITŘNÍHO OSCILÁTORU NA 1MHz (defaultní)
#include <avr/io.h>
#include <util/delay.h>
//********************************************
void cekani(); // podprogram rychle nastavitelneho cekani (delka bliknuti LED)
unsigned char a; // proměnná do které se bude ukládat hodnota z A/D převodníku
// je typu char, tedy 256 hodnot
char b=0; // konstanta posunu pro potlační šumu
// (posun od nuly, aby neblikaly LED bez sign.)
//********************************************
void main()
{
DDRB = 0xFF; // inicializace portů
DDRC = 0b11111100;
DDRD = 0xFF;
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;

//********************************************
while (1) { // nekonečná smyška vykreslování

// Levý kanál
// Nastavení A/D převodníku -->
ADMUX = 0x00; // ozkačení z kterého kanálu chceme brát (kanál 0)
ADMUX = ADMUX | 0b11000000; // aktivace REFS0 a 1
//(Internal 2,56V reference with external capacitor at AREF pin)
ADMUX = ADMUX | 0x20; // aktovace ADLAR: ADC Left Adjust Result
ADCSRA = 0x00; // volba nejrychlejšího A/D převodu krystal/2
ADCSRA = ADCSRA | 0x80; // zapnutí A/D převodníku

//Přečtení hodnoty z A/D převodníku -->
ADCSRA = ADCSRA | 0x40; // start převodu
while( (ADCSRA & 0x10) == 0); // počká až je připravená hodnota z A/D (pak se tato hodnota dostane do 0)
a = ADCH; // převede se hodnota z A/D do proměnné a
ADCSRA = ADCSRA | 0x10; // vymaže, že je hodnota připravená - pro další nové měření

//---------------------------------------------
// podrprogram pro rozsvěcení led umístěn zde -->

if (a <= b+0 ) { // 0 LED
// spodní část LED
PORTB=0b00010000; // všechny LED zhasnuty
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00100000;
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+1 ) { // 1 LED
// spodní část LED
PORTB=0b00010010; // první LED rozsvícena ve spodní části
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00100000;
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+2) { // 2 LED
// spodní část LED
// spodní část LED
PORTB=0b00010010; // první LED rozsvícena ve spodní části
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00100010; // první LED rozsvícena ve spodní části
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}

else if (a <= b+3) { // 3 LED
// spodní část LED
PORTB=0b00010011; // celková třetí LED rozsvícena
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00100010; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+4) { // 4 LED
// spodní část LED
PORTB=0b00010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+5) { //
// spodní část LED
PORTB=0b00010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b10000000;
cekani();
// horní část LED
PORTB=0b00100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+6) { //
// spodní část LED
PORTB=0b00010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b10000000;
cekani();
// horní část LED
PORTB=0b00100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b10000000;
cekani();
}
else if (a <= b+7) { //
// spodní část LED
PORTB=0b00010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11000000;
cekani();
// horní část LED
PORTB=0b00100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b10000000;
cekani();
}
else if (a <= b+8) { //
// spodní část LED
PORTB=0b00010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11000000;
cekani();
// horní část LED
PORTB=0b00100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11000000;
cekani();
}
else if (a <= b+9) { //
// spodní část LED
PORTB=0b00010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b00100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11000000;
cekani();
}
else if (a <= b+10) { // 10 LED
// spodní část LED
PORTB=0b00010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b00100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+12) { //
// spodní část LED
PORTB=0b10010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b00100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}

else if (a <= b+14) { //
// spodní část LED
PORTB=0b10010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b10100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+16) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b10100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+18) { //
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+20) { // 15 LED
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11110000;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+23) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11110000;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11110000;
cekani();
}
else if (a <= b+26) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111000;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11110000;
cekani();
}
else if (a <= b+29) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111000;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111000;
cekani();
}
else if (a <= b+32) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111100;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111000;
cekani();
}
else if (a <= b+36) { // 20 LED
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111100;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111100;
cekani();
}
else if (a <= b+40) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111110;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111100;
cekani();
}
else if (a <= b+44) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111110;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111110;
cekani();
}
else if (a <= b+48) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111110;
cekani();
}
else if (a <= b+52) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+57) { // 25 LED
// spodní část LED
PORTB=0b11010011;
PORTC=0b00100000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+62) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00100000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00100000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+67) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00110000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00100000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+73) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00110000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00110000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+79) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00111000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00110000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+86) { // 30 LED
// spodní část LED
PORTB=0b11010011;
PORTC=0b00111000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00111000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+93) { //
// spodní část LED
PORTB=0b11010011;
PORTC=0b00111100; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00111000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else { // 32 LED (2x 16 LED)
// spodní část LED
PORTB=0b11010011;
PORTC=0b00111100; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11100011; //
PORTC=0b00111100; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
// Na konci nastavení nul, aby LED nesvítily v čase měření A/D převodníkem
PORTB=0x00; //
PORTC=0x00; // spodní část LED aktivní
PORTD=0x00;


// ---------------------------------------------------------------
// ---------------------------------------------------------------
// ****************************************************
// Pravý kanál -->
// Nastavení A/D převodníku -->
ADMUX = 0x01; // ozkačení z kterého kanálu chceme brát (kanál 1)
ADMUX = ADMUX | 0b11000000; // aktivace REFS0 a 1
//(Internal 2,56V reference with external capacitor at AREF pin)
ADMUX = ADMUX | 0x20; // aktovace ADLAR: ADC Left Adjust Result
ADCSRA = 0x00; // volba nejrychlejšího A/D převodu krystal/2
ADCSRA = ADCSRA | 0x80; // zapmutí A/D ppřevodníku

//Přečtení hodnoty z A/D převodníku -->
ADCSRA = ADCSRA | 0x40; // start převodu
while( (ADCSRA & 0x10) == 0); // počká až je připravená hodnota z A/D (pak se tato hodnota dostane do 0)
a = ADCH; // převede se hodnota z A/D do proměnné a
ADCSRA = ADCSRA | 0x10; // vymaže, že je hodnota připravená - pro další nové měření

//--------------------------------------------------------------
// podrprogram pro rozsvěcení led umístěn zde -->

if (a <= b+0) { // 0 LED
// spodní část LED
PORTB=0b00000100; // všechny LED zhasnuty
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00001000;
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+1) { // 1 LED
// spodní část LED
PORTB=0b00000110; // první LED rozsvícena ve spodní části
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00001000;
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+2) { // 2 LED
// spodní část LED
// spodní část LED
PORTB=0b00000110; // první LED rozsvícena ve spodní části
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00001010; // první LED rozsvícena ve spodní části
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}

else if (a <= b+3) { // 3 LED
// spodní část LED
PORTB=0b00000111; // celková třetí LED rozsvícena
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00001010; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+4) { // 4 LED
// spodní část LED
PORTB=0b00000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b00000000;
cekani();
// horní část LED
PORTB=0b00001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+5) { //
// spodní část LED
PORTB=0b00000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b10000000;
cekani();
// horní část LED
PORTB=0b00001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b00000000;
cekani();
}
else if (a <= b+6) { //
// spodní část LED
PORTB=0b00000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b10000000;
cekani();
// horní část LED
PORTB=0b00001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b10000000;
cekani();
}
else if (a <= b+7) { //
// spodní část LED
PORTB=0b00000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11000000;
cekani();
// horní část LED
PORTB=0b00001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b10000000;
cekani();
}
else if (a <= b+8) { //
// spodní část LED
PORTB=0b00000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11000000;
cekani();
// horní část LED
PORTB=0b00001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11000000;
cekani();
}
else if (a <= b+9) { //
// spodní část LED
PORTB=0b00000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b00001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11000000;
cekani();
}
else if (a <= b+10) { // 10 LED
// spodní část LED
PORTB=0b00000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b00001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+12) { //
// spodní část LED
PORTB=0b10000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b00001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+14) { //
// spodní část LED
PORTB=0b10000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b10001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+16) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b10001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+18) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11100000;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+20) { // 15 LED
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11110000;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11100000;
cekani();
}
else if (a <= b+23) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11110000;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11110000;
cekani();
}
else if (a <= b+26) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111000;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11110000;
cekani();
}
else if (a <= b+29) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111000;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111000;
cekani();
}
else if (a <= b+32) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111100;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111000;
cekani();
}
else if (a <= b+36) { // 20 LED
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111100;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111100;
cekani();
}
else if (a <= b+40) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111110;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111100;
cekani();
}
else if (a <= b+44) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111110;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111110;
cekani();
}
else if (a <= b+48) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111110;
cekani();
}
else if (a <= b+52) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00000000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+57) { // 25 LED
// spodní část LED
PORTB=0b11000111;
PORTC=0b00100000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00000000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+62) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00100000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00100000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+67) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00110000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00100000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+73) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00110000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00110000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+79) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00111000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00110000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+86) { // 30 LED
// spodní část LED
PORTB=0b11000111;
PORTC=0b00111000; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00111000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else if (a <= b+93) { //
// spodní část LED
PORTB=0b11000111;
PORTC=0b00111100; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00111000; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
else { // 32 LED (2x 16 LED)
// spodní část LED
PORTB=0b11000111;
PORTC=0b00111100; // spodní část LED aktivní
PORTD=0b11111111;
cekani();
// horní část LED
PORTB=0b11001011; //
PORTC=0b00111100; // horní část LED aktivní
PORTD=0b11111111;
cekani();
}
// Na konci nastavení nul, aby LED nesvítily v čase měření A/D převodníkem
PORTB=0x00; //
PORTC=0x00; // spodní část LED aktivní
PORTD=0x00;
}
}

// vypsaný podprogram cekani (dela bliknutí)
void cekani() {
_delay_us(2000); // délka čekání v mikrosekundách
}

Соединять я буду к ней выходной сигнал на усилитель магнитолы подскажите нужны ли стабилитроны? или можно их не ставить? (у меня их просто нет)

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Если с магнитолы выходной сигнал, то лучше поставить. Может там на выходе под 50 вольт напряжение шарашит ....

И не стабилитроны, а диодный ограничитель напряжения.

http://cxem.net/begi...beginner108.php, рис. 12.

Изменено пользователем hd44780
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...