Jump to content
abuzhakov

Светодиодный Vu Metr На Atmega8

Recommended Posts

Привет всем! на этот раз я решил собрать 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
}

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by hd44780

Share this post


Link to post
Share on other sites

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

нет я говорю автомобильной магнитолы, тот же выход что на DVD и на телике AUDIO выход такой же

Share this post


Link to post
Share on other sites

Высокая надежность SiC! Как они этого добились?

За несколько лет кропотливых исследований и совершенствования технологии компания Infineon смогла довести показатели надежности и стабильности параметров высоковольтных и быстродействующих карбид-кремниевых транзисторов линейки CoolSiC практически до уровня их кремниевых собратьев.

Подробнее

собрал такую схему и светодиоды постоянно горят =( почему? монтаж проверял..

Share this post


Link to post
Share on other sites

Вебинар «Практическое использование TrustZone в STM32L5»(10.12.2020)

Приглашаем на вебинар, посвященный экосистеме безопасности и возможностях, которые появились у разработчиков благодаря новой технологии TrustZone в микроконтроллерах STM32L5. Программа рассчитана на технических специалистов и тех, кто уже знаком с основами защиты ПО в STM32.

Подробнее

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения


  • Набор разъемов питания (10 шт)

  • Similar Content

    • By Okawa
      Помогите, пожалуйста, разобраться в том, как работает кусок схемы, которую я выделил красным. Я так понял, что это усилитель, но как это работает не понимаю

    • By O5-14
      https://cxem.net/pitanie/5-176.php Эта конструкция. Раздобыл экран Siemens, удачно) Бесхозный трансформатор небольших размеров тоже где-то точно у меня есть, по идее.  Также досталось дохлое ЗУ, корпус которого как раз вместит в себя новую начинку.
      Как я понял, контроллер можно спокойно ставить ATmega8A-AU, вместо ATMega8L-8SU. L - версия всего лишь кушает поменьше). И в настройках программатора всего лишь выбрать мой "A" контроллер, а остальное то же самое, но... не нашел ISP режима для него( Фьюзы, как понял из написанного. При чем тут еще Lock Bit ?
      Надо будет посмотреть, все ли используемые ножки мк совпадают в DIP и SMD версиях, чтобы переразвести плату управления. Надеюсь, в эти 2 дня выкрою время на это дело.  
      Кто-нибудь повторял эту схему, каковы впечатления ? Есть некоторые вопросы по прошивкам
       
       
       




    • By Артур Измаилов
      1.Создать схему в которой два светодиоды загораются в следующей последовательности:  1 и 2, 2 и 3, 3 и 4, …, 15 и 16, 1 и 2 и т.д. (т.е. создается эффект движения двух светодиодов).
      Дано условие выше. Решение задачи нужно представить в Proteus. Код для программирования пишу в AtmelStudio 7. Схему собрал в Proteus. Вывел 16 светодиодов через 2 порта (Порт B и Порт D). МК использовал ATMEGA 8 вариации в корпусе DIP с 28 ножками (SPDIL28). 
      До этого смог написать схему, чтобы работали светодиоды в последовательности 1.2.3.4.5....16.1.2.3.4 и тд. Делал через оператор FOR. Однако с этим кодом начались проблемы. Помогите пожалуйста. 
      Нижу представил изображение кода. 
      Заранее спасибо!
       

    • Guest PaMuC
      By Guest PaMuC
      Добрый день. Подскажите номинал резистора на картинке. Ну или схему бы найти.

    • Guest Evgeni
      By Guest Evgeni
      Привет!
      Подскажите подскажите пожалуйста, можно ли подключить 2 светодиодные ленты как на схеме? Минус по 1 общему проводу.
      Вопросом задаюсь, т.к. заложен трехжильный кабель а надо подключить 2 независимые ленты.
      Блоки питания такие
×
×
  • Create New...