Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
askarNv
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 2
1

ATmega48. Управление режимами светодиодов

27.12.2012, 21:29. Просмотров 1519. Ответов 5
Метки нет (Все метки)

Подскажите люди добрые ..... где тут прописана кнопка изменение режимов света диодов ??? Где это прописано ..... ???

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
//-----RGB контроллер для столовой--------------------------------
//-----31.05.2012-------------------------------------------------
 
//-----тестирование-----------------------------------------------
//----------------------------------------------------------------
//#define TEST
//**************************************************************** 
 
//-----пользовательские типы--------------------------------------
//----------------------------------------------------------------
typedef unsigned char UCHAR;
typedef unsigned int  UINT;
//****************************************************************
 
//-----подключение библиотек--------------------------------------
//----------------------------------------------------------------
#include <mega48.h>          //описание памяти микроконтроллера
#include <delay.h>          //задержки времени
 
#ifdef TEST
#include <stdio.h>
#endif
//****************************************************************
 
//-----макроопределения-------------------------------------------
//----------------------------------------------------------------
#ifdef  TEST                //порт для подключения светодиодов
#define LED PORTB           
#else
#define LED PORTD           
#endif
 
#define R   2               //сигнал красного
#define G   1               //сигнал зеленого
#define B   0               //сигнал синего
//****************************************************************
 
//-----прототипы функций------------------------------------------
//----------------------------------------------------------------
void RGB_PWM(UCHAR _R,UCHAR _G,UCHAR _B);//один ШИМ период
void RGB(UCHAR,UCHAR,UCHAR,UCHAR,UCHAR,UCHAR,UCHAR);//изменение яркости
//****************************************************************
 
//-----глобальные переменные--------------------------------------
//----------------------------------------------------------------
const UCHAR MAX=20;         //количество шагов
flash UCHAR color[MAX][7]={//Rmin Rmax|Gmin Gmax|Bmin Bmax|\Step
                            {255,   0, 255,   0, 255, 255, 255},
                            {  0,   0,   0, 255, 255,   0, 255},
                            {  0, 255, 255,   0,   0,   0, 255},
                            {255,   0,   0,   0,   0, 255, 255},
                            {255, 100,   0, 100, 255,   0, 255},
                            {100, 100, 100, 100,   0, 100, 255},
                            {100, 100, 100, 255, 100, 100, 255},
                            {100, 255, 255, 100, 100, 100, 255},
                            {255, 100, 100, 100, 100, 255, 255},
                            
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255},
                            {255, 255, 255, 255, 255, 255, 255}
                            };
//****************************************************************
 
//=====главная функция проекта====================================
//================================================================
void main(void){
//-----локальные переменные---------------------------------------
UCHAR i;               //счетчики     
 
//-----настройка портов-------------------------------------------
DDRB=0xff;
DDRD=0xff;
DDRC=0xff;
 
//-----настройка USORT--------------------------------------------
#ifdef TEST
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
#endif
 
//-----плавный розжиг при включении-------------------------------
RGB(0,  0,  0,  0,  0,255,25);
RGB(0,  0,  0,255,255,255,25);
RGB(0,255,255,255,255,255,25);
 
//-----супер цикл-------------------------------------------------
for(;;){
for(i=0;i<MAX;i++)               //выполняем сценарий из ПЗУ
    RGB(color[i][0],color[i][1], //красный
        color[i][2],color[i][3], //зеленый
        color[i][4],color[i][5], //синий
        color[i][6]);            //кол-во шагов
}//for(;;)
}//end main()
//================================================================
 
//-----один период шим сигнала------------------------------------
//----------------------------------------------------------------
void RGB_PWM(UCHAR _R,UCHAR _G,UCHAR _B){
//-----локльные переменные----------------------------------------
UCHAR count;              //счетчик периода ШИМ
 
//-----генерация одного периода ШИМ сигнала-----------------------
for(count=0;count!=255;count++){
    if(count<_R)LED.R=1;
    else        LED.R=0;
    
    if(count<_G)LED.G=1;
    else        LED.G=0;
    
    if(count<_B)LED.B=1;
    else        LED.B=0;
    
    delay_us(35);#asm("nop");
    #asm("nop"); #asm("nop");
    #asm("nop"); #asm("nop");
    #asm("nop"); #asm("nop");
    }
}//void RGB_PWM(byte R,byte G,byte B)
//****************************************************************
 
//-----изменение яркости свечения---------------------------------
//----------------------------------------------------------------
void RGB(UCHAR rmin,UCHAR rmax,
         UCHAR gmin,UCHAR gmax,
         UCHAR bmin,UCHAR bmax,
         UCHAR step){
//-----локальные переменные---------------------------------------
UINT r,g,b;             //текущее значение яркости
UINT dR,dG,dB;          //приращение
UCHAR i;
 
//-----расчет приращений------------------------------------------
if(rmin<=rmax)dR=(rmax-rmin)*(UINT)10/(UINT)step;//приращение
else          dR=(rmin-rmax)*(UINT)10/(UINT)step;//приращение
r=rmin*(UINT)10;                      //расчетное значение яркости
 
if(gmin<=gmax)dG=(gmax-gmin)*(UINT)10/(UINT)step;//приращение
else          dG=(gmin-gmax)*(UINT)10/(UINT)step;//приращение
g=gmin*(UINT)10;                      //расчетное значение яркости
 
if(bmin<=bmax)dB=(bmax-bmin)*(UINT)10/(UINT)step;//приращение
else          dB=(bmin-bmax)*(UINT)10/(UINT)step;//приращение
b=bmin*(UINT)10;                      //расчетное значение яркости
 
//-----формирование ШИМ сигнала-----------------------------------
for(i=0;i!=step;i++){              //заданное кол-во шагов
    RGB_PWM(r/10,g/10,b/10); 
    
    #ifdef TEST
    printf("%d %d %d\r",r/(UINT)10,g/(UINT)10,b/(UINT)10);
    delay_ms(100);
    #endif
    
    if(rmin<=rmax)r+=dR;
    else          r-=dR;
    
    if(gmin<=gmax)g+=dG;
    else          g-=dG;
    
    if(bmin<=bmax)b+=dB;
    else          b-=dB;
    }//for(i=0;i<step;i++)
}//PWM()
//****************************************************************
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 21:29
Ответы с готовыми решениями:

Управление светодиодами на Atmega48
Нужно написать код на СИ для Atmega 48. Вот для этого задания. Первоначально включены светодиоды с...

Последовательное плавное управление яркостью светодиодов
Нужно написать программку на Atmega48 в CodevisionAVR Используя PORTD 0 1 2 С начало загорается...

Управление блоком светодиодов (Code Vision AVR)
Имеется следующее задание: Запрограммировать мигание блоков светодиодов с портом B в Code Vision...

BAM. Управление яркостью светодиодов.
Подкиньте, пожалуйста идей, как лучше сделать. Хочу чтобы параллельно обрабатывалось какое-то...

Управление яркостью светодиодов бинарной модуляцией [AVR studio]
Здравствуйте, нужно реализовать эффект на светодиодах с изменением их яркости. Эффект такой:самый...

5
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
27.12.2012, 22:32 2
Какая еще кнопка?

//-----настройка портов-------------------------------------------
DDRB=0xff;
DDRD=0xff;
DDRC=0xff;

Все порты настроены на выход.
1
askarNv
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 2
28.12.2012, 04:31 3
Да вот именно это выход на управления транзисторами .....а где сама кнопка ???? вот глянь - удалено -

Добавлено через 22 минуты
ВОТ - удалено -

 Комментарий модератора 
Правила форума:

4.12. Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах.
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
28.12.2012, 05:28 4
На рисунке протеуса тини13 (8 ногая), причем тут мега 48 ?
0
raxp
10190 / 6573 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
28.12.2012, 13:37 5
TC, вы неоднократно нарушаете правила форума. Настоятельно рекомендую снова ознакомиться с ними перед написанием постов и созданием тем.
0
Grey
Тутошний я
1716 / 879 / 156
Регистрация: 03.11.2009
Сообщений: 2,712
Записей в блоге: 1
28.12.2012, 17:33 6
Цитата Сообщение от askarNv Посмотреть сообщение
где тут прописана кнопка изменение режимов света диодов ???
Ни где не прописана. Яркость в цикле изменяется
C
1
2
3
4
5
6
7
//-----супер цикл-------------------------------------------------
for(;;){
for(i=0;i<MAX;i++)               //выполняем сценарий из ПЗУ
    RGB(color[i][0],color[i][1], //красный
        color[i][2],color[i][3], //зеленый
        color[i][4],color[i][5], //синий
        color[i][6]);            //кол-во шагов
1
28.12.2012, 17:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2012, 17:33

Проблема с Atmega48
Проблема вот в чем: Имеется программатор WyzardProk 77USB хттп://wyzordprog.com Шью им мегу48....

Часы на МК ATMega48
Задача запилить часы с будильником, с регуляцией 2мя кнопками: выбор и модификация(увеличение...

UART на ATmega48
Добрый вечер люди добрые! Дайте рабочий пример приёма и передачи 1 байта данных по UART для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru