Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [114]
Наш опрос
Оцените мой сайт
Всего ответов: 1169
Главная » Статьи » Мои статьи

Цикл статей на тему "Исследование работы 7-Seg Led индикации в Bascom". Программная регулировка яркоси 7-seg Led индикаторов.

 В данной статье будет рассмотрен вариант программного регулирования яркости свечения 7-seg Led индикаторов, именно в среде компилятора "Bascom ".

Задействован TIMER2, потому, что нужен регистр сравнения "OCR". В МК "Atmega8" регистры сравнения есть у "TIMER1" (OCR1A и OCR1B) и "TIMER2" (OCR2).

В МК "Atmega48_88_168_328", регистры сравнения присутствуют у всех таймеров (OCR0А, OCR0B, OCR1A, OCR1B, OCR2A, OCR2B).

Ниличие регистров сравнения в других МК AVR - смотрите в тех. документации.


Внимание!

Исходник компилировался в Bascom версии 2.0.7.6

в более ранних версиях (имеет место порча выводимой переменной типа "String"), работать не будет.


Для решения проблемы следует поменять тип выводимой переменной, в тексте программы будет выделено шрифтом большего размера.


На фото не совсем хорошо видно, видимо специфика передачи цифровой камеры не позволяет увидеть все градации яркости, скачайте видео (ниже по тексту), там видно лучше.



Исходник


'*******************************************************************************
'********** Поразрядная 7-seg LED индикация с регулировкой яркости *********
'*******************************************************************************

' Контроллер: ATMEGA8A или любой другой "AVR" с небольшими переделками исходника
' Версия компилятора: BASCOM-AVR 2.0.7.6
' Автор: sasha_1973

'*******************************************************************************
'-------------------------------------------------------------------------------
'--------------- Конфигурация используемого контроллера ----------------
'-------------------------------------------------------------------------------
$regfile = "m8def.dat" : $crystal = 4000000 : $hwstack = 40 : $swstack = 16 : $framesize = 32
'-------------------------------------------------------------------------------
'******************************************************************************
'-------------------------------------------------------------------------------
'--------------- Настройка портов МК для LED индикации -----------------
'-------------------------------------------------------------------------------
' ******************************************************************************
'-------------------------------------------------------------------------------
'------------- Присваиваем собственные имена, для удобства -------------
'-------------------------------------------------------------------------------

A Alias Portb.0 ' Порт МК, к которому подключен сегмент "А" LED индикатора
B Alias Portb.1 ' Порт МК, к которому подключен сегмент "B" LED индикатора
C Alias Portb.2 ' Порт МК, к которому подключен сегмент "C" LED индикатора
D Alias Portb.3 ' Порт МК, к которому подключен сегмент "D" LED индикатора
E Alias Portb.4 ' Порт МК, к которому подключен сегмент "E" LED индикатора
F Alias Portb.5 ' Порт МК, к которому подключен сегмент "F" LED индикатора
G Alias Portb.6 ' Порт МК, к которому подключен сегмент "G" LED индикатора
H Alias Portb.7 ' Порт МК, к которому подключен сегмент "H" LED индикатора

'------------------------

Разряд_1 Alias Portd.4 ' Порт МК, к которому подключен "1 разряд" LED индикатора
Разряд_2 Alias Portd.5 ' Порт МК, к которому подключен "2 разряд" LED индикатора
Разряд_3 Alias Portd.6 ' Порт МК, к которому подключен "3 разряд" LED индикатора
Разряд_4 Alias Portd.7 ' Порт МК, к которому подключен "4 разряд" LED индикатора

'-------------------------------------------------------------------------------
'--------- Коммутация портов (вход, выход или висим в воздухе) ---------
'-------------------------------------------------------------------------------

Config Portb = Output ' Настраиваем сразу весь порт МК на выход

' можно так

Config Portb.0 = Output ' Настраиваем одну ножку порта на выход
Config Portb.1 = Output ' Настраиваем одну ножку порта на выход
Config Portb.2 = Output ' Настраиваем одну ножку порта на выход
Config Portb.3 = Output ' Настраиваем одну ножку порта на выход
Config Portb.4 = Output ' Настраиваем одну ножку порта на выход
Config Portb.5 = Output ' Настраиваем одну ножку порта на выход
Config Portb.6 = Output ' Настраиваем одну ножку порта на выход
Config Portb.7 = Output ' Настраиваем одну ножку порта на выход

' или так, кому, как больше нравится

Ddrb = &B11111111 ' Настройка каждого вывода всего порта (PORTB - сегменты), в одну строчку

'--------------------------

Config Portd.4 = Output ' Настраиваем одну ножку порта на выход
Config Portd.5 = Output ' Настраиваем одну ножку порта на выход
Config Portd.6 = Output ' Настраиваем одну ножку порта на выход
Config Portd.7 = Output ' Настраиваем одну ножку порта на выход

' или так, кому, как больше нравится

Ddrd = &B11110000 ' Настройка каждого вывода всего порта (PORTD - разряды), в одну строчку

'-------------------------------------------------------------------------------
'------------ Настройка таймера для обновления LED индикации -----------
'-------------------------------------------------------------------------------

Config Timer2 = Timer , Prescale = 64 , Clear Timer = 0

'-------------------------------------------------------------------------------
'----------- Подпрограмма выполняемая после прерывания TIMER2 ----------
'-------------------------------------------------------------------------------

On Timer2 Обработка_прерывания_timer2 ' Переход на подпрограмму после каждого прерывания

'-------------------------------------------------------------------------------
' Используется для регулировки яркости, значение яркости заносим в регистр "OCR2"
'-------------------------------------------------------------------------------

On Compare2 Регулировка_яркости_led ' Прерывание регулировки яркости индикатора

' ------------------------------------------------------------------------------

' Немного отвлечемся. Бытует мнение, что компилятор не дружит с кирилицей. Опять, таки, исходя из личного опыта могу сказать, мордобоя не наблюдалось. Единсвенное ограничение - количество символов в именах. Думаю Вам хватит с избытком.

'-------------------------------------------------------------------------------
'----------------- Определение переменных и констант -------------------
'-------------------------------------------------------------------------------
Начальные_настройки: ' Просто метка, для удобства
'-------------------------------------------------------------------------------

Dim Тип_индикатора As Byte ' Переменная, для хранения значения типа индикатора
Тип_индикатора = 1 ' Если тип_индикатора = 1 , то ОК , если Тип_индикатора = 0 , То ОA

'---------------------------------------------

Const Количество_разрядов = 4 ' Количество используемых разрядов

'---------------------------------------------

Const Частота_мигания = 200 ' Значение частоты мигания знакоместа на LED дисплее при Флаг_мигание(n) = 1
Const Длительность_горения_при_мигании = 100 ' Значение длительности свечения знакоместа на LED дисплее при Флаг_мигание(n) = 1

'---------------------------------------------

Const Минимальная_яркость_led = 1 ' Уровень минимального значения яркости (в регитре OCR2)
Const Максимальная_яркость_led = 100 ' Уровень максимального значения яркости (в регитре OCR2)
Const Скорость_изменения_яркости_led = 8 ' Значение скорости изменения яркости LED индикации

'---------------------------------------------

Const Скорость_изменения_переменной = 100 ' Переменная, для хранения значения задержки "Waitms"

'-------------------------------------------------------------------------------

Dim Цикл_led As Byte ' переменная, для хранения количества выводимых разрядов (нужна для разбивки значения на разряды)
Dim Яркость_led As Byte ' переменная, для регулировки яркости LED дисплея
Dim Флаг_яркость As Byte ' флаг для регулировки яркости LED дисплея
Dim Переменная_word As Word ' переменная, которую будем выводить
Dim Счетчик_миганий As Word ' счетчик для обработки частоты и длительности мигания
Dim Счетчик_разрядов As Byte ' счетчик перебора разрядов
Dim Выводимая_цифра_led As Byte ' переменная, для загрузки цифр в порт
Dim Счетчик_яркость_led As Byte ' переменная, для изменения яркости
Dim Разряд(количество_разрядов) As Byte ' значения разрядов для 4-х разрядов
Dim Флаг_точка(количество_разрядов) As Byte ' флаги точек для 4-х разрядов
Dim Флаг_гашение(количество_разрядов) As Byte ' флаги гашения нужного разряда для 4-х разрядов
Dim Флаг_мигание(количество_разрядов) As Byte ' флаги мигания нужного разряда для 4-х разрядов
Dim Буфер_led_string As String * Количество_разрядов
Dim Разряд_string(количество_разрядов) As String * 1 ' значения разрядов для 4-х разрядов
Dim Переменная_string As String * Количество_разрядов
Dim Дополнительный_символ(количество_разрядов) As Byte ' переменная, для хранения значения дополнительного символа при Флаг_дополнительный_символ(n) = 1
Dim Флаг_дополнительный_символ(количество_разрядов) As Byte ' флаг сигнализирующий о выводе дополнительных символов

'-------------------------------------------------------------------------------
'------------ Используются для "Bascom" более ранних версий ------------
'-------------------------------------------------------------------------------

Dim Выводимые_данные_led As Word
Dim Копия_выводимые_данные_led As Word
Dim 1_канал_выводимые_данные_led As Word


'-------------------------------------------------------------------------------
'---------------------- Определение подпрограмм ------------------------
'-------------------------------------------------------------------------------

Declare Sub Гашение_разрядов()
Declare Sub Индикация_7seg_led()
Declare Sub Обработка_прерывания_timer0()


'-------------------------------------------------------------------------------
'----------------------- Первоначальные установки -----------------------
'-------------------------------------------------------------------------------

'-------------------------------------------------------------------------------
'------------------------ Работа с прерываниями ------------------------
'-------------------------------------------------------------------------------

Enable Timer2 ' Разрешаем работу прерывания по ПЕРЕПОЛНЕНИЮ
Enable Compare2 ' Разрешаем работу прерывания по СОВПАДЕНИЮ
Enable Interrupts ' Разрешаем работу прерываний

'-------------------------------------------------------------------------------
'-------------------------- Начало программы -------------------------------
'-------------------------------------------------------------------------------
Do : Nop ' Крутимся здесь, ожидая прерывание
'-----------------------------------------

Флаг_точка(2) = 1 ' Ставим точку во 2 разряде
Флаг_мигание(1) = 1 ' Мигаем 1 разрядом
Флаг_дополнительный_символ(1) = 1 : Дополнительный_символ(1) = 12 ' Выводим символ градуса

Incr Переменная_word

If Переменная_word > 9999 Then Переменная_word = 0

1_канал_выводимые_данные_led = Переменная_word

Переменная_string = Str(переменная_word)

Select Case Переменная_word
Case Is < 10 : Переменная_string = "000" + Переменная_string
Case 10 To 100 : Переменная_string = "00" + Переменная_string
Case 100 To 1000 : Переменная_string = "0" + Переменная_string
End Select
Буфер_led_string = Переменная_string



Waitms Скорость_изменения_переменной
'-----------------------------------------
Loop
End

'-------------------------------------------------------------------------------
'*******************************************************************************
'***************** Подпрограмма обработки прерывания TIMER0 ****************
'***************** происходит каждые 2,048 ms ****************
'*******************************************************************************
'-------------------------------------------------------------------------------
Обработка_прерывания_timer2:
'-------------------------------------------------------------------------------
Call Индикация_7seg_led
'-------------------------------------------------------------------------------
Return
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Индикация_7seg_led:
'-------------------------------------------------------------------------------
'--- Занимаемся регулировкой яркости LED индикации (написано для примера, в железе, маловероятно, что будет использоваться именно этот вариант) ---
'-------------------------------------------------------------------------------
Incr Счетчик_яркость_led
If Счетчик_яркость_led = Скорость_изменения_яркости_led Then
Счетчик_яркость_led = 0
If Флаг_яркость = 0 Then Incr Яркость_led Else Decr Яркость_led
If Яркость_led = Максимальная_яркость_led Then Флаг_яркость = 1
If Яркость_led = Минимальная_яркость_led Then Флаг_яркость = 0
End If

'-------------------------------------------------------------------------------
'-------------- Устанавливаем уровень яркости LED индикации ---------------
'-------------------------------------------------------------------------------
Ocr2 = Яркость_led
'-------------------------------------------------------------------------------
'------ В цикле разбиваем сформированый "Буфер_led_string" на разряды ------
'-------------------------------------------------------------------------------
For Цикл_led = Количество_разрядов To 1 Step -1 ' Уменьшаем переменную
Разряд_string(цикл_led) = Mid(буфер_led_string , Цикл_led , 1) ' Вынимаем по 1 символу
Разряд(цикл_led) = Asc(разряд_string(цикл_led)) ' Получаем цифровой ( ASII ) код вынутого символа
Разряд(цикл_led) = Разряд(цикл_led) - &H30 ' Получаем непосредственно число для вывода из таблицы 7-seg LED индикатора
Next Цикл_led ' Повторяем в цикле
'-------------------------------------------------------------------------------
'--------------- Используется в "Bascom" более ранних версий ---------------
'-------------------------------------------------------------------------------
' Выводимые_данные_led = 1_канал_выводимые_данные_led '

' Копия_выводимые_данные_led = Выводимые_данные_led

' For Цикл_led = 4 To 1 Step -1 ' цикл в котором разбивается переменная на 4 числа
' Выводимые_данные_led = Копия_выводимые_данные_led Mod 10
' Разряд(цикл_led) = Выводимые_данные_led '
' Копия_выводимые_данные_led = Копия_выводимые_данные_led / 10 '
' Next

'-------------------------------------------------------------------------------
'---- Перебираем разряды, в каждом прерывании выводим следующий сегмент -----
'-------------------------------------------------------------------------------
'----- Выбираем разряд для загрузки в обработчик вывода на 7-seg LED -----
'-------------------------------------------------------------------------------
Incr Счетчик_разрядов

If Счетчик_разрядов > Количество_разрядов Then Счетчик_разрядов = 1

'-------------------------------------------------------------------------------
' Участок кода отвечающий за мигание разрядов, вывод точки и дополнительных символов
'-------------------------------------------------------------------------------
'---------------------------- Подготовка к миганию --------------------------
'-------------------------------------------------------------------------------
Incr Счетчик_миганий

If Счетчик_миганий > Частота_мигания Then Счетчик_миганий = 1

'-------------------------------------------------------------------------------
'------------------ Если надо, то мигаем в нужных разрядах ------------------
'-------------------------------------------------------------------------------
If Флаг_мигание(счетчик_разрядов) = 1 And Счетчик_миганий > Длительность_горения_при_мигании Or Флаг_гашение(счетчик_разрядов) = 1 Then ' Если флаг мигания этого разряда выставлен и счетчик > 200
Select Case Счетчик_разрядов
Case 1 To 4
If Тип_индикатора = 1 Then
Выводимая_цифра_led = Lookup(11 , Цифры_ok)
' Выводим пустое место в 1 - 4 разрядах
Else
Выводимая_цифра_led = Lookup(11 , Цифры_oa)
' Выводим пустое место в 1 - 4 разрядах
End If
End Select
Else

'-------------------------------------------------------------------------------
'----------------------- Выводим дополнительные симвоы ---------------------
'-------------------------------------------------------------------------------
If Флаг_дополнительный_символ(счетчик_разрядов) = 1 Then
Select Case Счетчик_разрядов
Case 1 To 4
If Тип_индикатора = 1 Then
Выводимая_цифра_led = Lookup(дополнительный_символ(счетчик_разрядов)
, Цифры_ok) ' Выводим дополнительный_символ в 1 - 4 разрядах
Else
Выводимая_цифра_led = Lookup(дополнительный_символ(счетчик_разрядов)
, Цифры_oa) ' Выводим дополнительный_символ в 1 - 4 разрядах
End If
End Select
Else

'-------------------------------------------------------------------------------
'------- Если не мигаем и ничего другого не выводим, выводим основное ------
'-------------------------------------------------------------------------------
Выводимая_цифра_led = Разряд(счетчик_разрядов)
Select Case Счетчик_разрядов
Case 1 To 4
If Тип_индикатора = 1 Then
Выводимая_цифра_led = Lookup(выводимая_цифра_led , Цифры_ok)
' Если не выводим дополнительную информацию, выводим основную в 1 - 4 разрядах
Else
Выводимая_цифра_led = Lookup(выводимая_цифра_led , Цифры_oa)
' Если не выводим дополнительную информацию, выводим основную в 1 - 4 разрядах
End If
End Select
End If

'-------------------------------------------------------------------------------
'------------- Если необходимо, выводим точку в нужном разряде -------------
'-------------------------------------------------------------------------------
If Флаг_точка(счетчик_разрядов) = 1 Then
Выводимая_цифра_led = Выводимая_цифра_led Xor &H80
'&H80 или &B10000000 добавляем к выводимой цифре точку
End If
'-------------------------------------------------------------------------------
' Выходим из "Участок кода отвечающий за мигание разрядов, вывод точки и дополнительных символов"
'-------------------------------------------------------------------------------
End If
'-------------------------------------------------------------------------------
'--------------------- Загружаем в порт код цифры ------------------------
'-------------------------------------------------------------------------------
' ТАК
' ----------------------------------------------------
A = Выводимая_цифра_led.0 ' Сегмент "А"
B = Выводимая_цифра_led.1 ' Сегмент "B"
C = Выводимая_цифра_led.2 ' Сегмент "C"
D = Выводимая_цифра_led.3 ' Сегмент "D"
E = Выводимая_цифра_led.4 ' Сегмент "E"
F = Выводимая_цифра_led.5 ' Сегмент "F"
G = Выводимая_цифра_led.6 ' Сегмент "G"
H = Выводимая_цифра_led.7 ' Сегмент "Точка"
' ----------------------------------------------------
' ИЛИ ТАК
' ----------------------------------------------------
' Portb = Выводимая_цифра_led ' загружаем в порт код цифры
'-------------------------------------------------------------------------------
Select Case Счетчик_разрядов ' и включаем соответствующий разряд индикатора
Case 1 : If Тип_индикатора = 1 Then Reset Разряд_1 Else Set Разряд_1
Case 2 : If Тип_индикатора = 1 Then Reset Разряд_2 Else Set Разряд_2
Case 3 : If Тип_индикатора = 1 Then Reset Разряд_3 Else Set Разряд_3
Case 4 : If Тип_индикатора = 1 Then Reset Разряд_4 Else Set Разряд_4
End Select

'-------------------------------------------------------------------------------
Return
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Регулировка_яркости_led:
'-------------------------------------------------------------------------------
If Тип_индикатора = 1 Then
'-------------------------------------------------------------------------------
'---------------------------- Можно написать так ---------------------------
'-------------------------------------------------------------------------------
Set Разряд_1 : Set Разряд_2 : Set Разряд_3 : Set Разряд_4 ' Гасим индикаторы ОК,
'-------------------------------------------------------------------------------
'----------------- а можно так, работать будет одинаково -------------------
'-------------------------------------------------------------------------------
' Разряд_1 = 1 ' Гасим индикаторы ОК,
' Разряд_2 = 1
' Разряд_3 = 1
' Разряд_4 = 1
'-------------------------------------------------------------------------------
'------------------------- и так будет работать ----------------------------
'-------------------------------------------------------------------------------
' Разряд_1 = 1 : Разряд_2 = 1 : Разряд_3 = 1 : Разряд_4 = 1 ' Гасим индикаторы ОК,
'-------------------------------------------------------------------------------
Else
Reset Разряд_1 : Reset Разряд_2 : Reset Разряд_3 : Reset Разряд_4 ' Гасим индикаторы ОА
End If

'-------------------------------------------------------------------------------
Return
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
'*******************************************************************************
'-------------------------------------------------------------------------------
Цифры_ok:
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'---------------------------- Можно написать так ---------------------------
'-------------------------------------------------------------------------------
' Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F '0, 1, 2, 3, 4, 5, 6, 7, 8, 9
' Data &H40 , &H00 , &H63 , &H39 , &H78 , &H5C , &H38 , &H74 , &H5E , &H77 '"-", "", "значек градуса", "С", "t", "o", "L", "h", "d", "A"
' Data &H58 , &H31 , &H76 , &H79 , &H50 , &H71 , &H1C , &H73 , &H37 , &H80 '"c", "Г", "Н", "E", "r", "F", "U", "u", "P", "П". "."
' Data &H54 ', &H , &H , &H , &H , &H , &H , &H , &H , &H '"n", "", "", "", "", "", "", "", "", "". ""
'-------------------------------------------------------------------------------
'------- а можно так, выглядит нагляднее, но работать будет одинаково ------
'-------------------------------------------------------------------------------
Data &H3F ' 0 "0"
Data &H06 ' 1 "1"
Data &H5B ' 2 "2"
Data &H4F ' 3 "3"
Data &H66 ' 4 "4"
Data &H6D ' 5 "5"
Data &H7D ' 6 "6"
Data &H07 ' 7 "7"
Data &H7F ' 8 "8"
Data &H6F ' 9 "9"
Data &H40 ' 10 "_"
Data &H00 ' 11 "Пустое место"
Data &H63 ' 12 "Значек градуса"
Data &H39 ' 13 "С"
Data &H78 ' 14 "t"
Data &H5C ' 15 "o"
Data &H38 ' 16 "L"
Data &H74 ' 17 "h"
Data &H5E ' 18 "d"
Data &H77 ' 19 "A"
Data &H58 ' 20 "c"
Data &H31 ' 21 "Г"
Data &H76 ' 22 "H"
Data &H79 ' 23 "E"
Data &H50 ' 24 "r"
Data &H71 ' 25 "F"
Data &H3E ' 26 "U"
Data &H1C ' 27 "u"
Data &H73 ' 28 "P"
Data &H37 ' 29 "П"
Data &H80 ' 30 "Точка"
Data &H54 ' 31 "n"
'-------------------------------------------------------------------------------
Цифры_oa:
'-------------------------------------------------------------------------------
' Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90 '0,1,2,3,4,5,6,7,8,9
' Data &HBF , &HFF , &H9C , &HC6 , &H87 , &HA3 , &HC7 , &H8B , &HA1 , &H88 '"-", "", "значек градуса", "С", "t", "o", "L", "h", "d", "A"
' Data &HA7 , &HCE , &H89 , &H86 , &HAF , &H8E , &HC1 , &HE3 , &H8C , &HC8 '"c", "Г", "Н", "E", "r", "F", "U", "u", "P", "П"
' Data &H7F , &HAB ', &H , &H , &H , &H , &H , &H , &H , &H , &H ' "." , "n", "", "", "", "", "", "", "", "", "". ""
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'------- а можно так, выглядит нагляднее, но работать будет одинаково ------
'-------------------------------------------------------------------------------
Data &HC0 ' 0 "0"
Data &HF9 ' 1 "1"
Data &HA4 ' 2 "2"
Data &HB0 ' 3 "3"
Data &H99 ' 4 "4"
Data &H92 ' 5 "5"
Data &H82 ' 6 "6"
Data &HF8 ' 7 "7"
Data &H80 ' 8 "8"
Data &H90 ' 9 "9"
Data &HBF ' 10 "_"
Data &HFF ' 11 "Пустое место"
Data &H9C ' 12 "Значек градуса"
Data &HC6 ' 13 "С"
Data &H87 ' 14 "t"
Data &HA3 ' 15 "o"
Data &HC7 ' 16 "L"
Data &H8B ' 17 "h"
Data &HA1 ' 18 "d"
Data &H88 ' 19 "A"
Data &HA7 ' 20 "c"
Data &HCE ' 21 "Г"
Data &H89 ' 22 "H"
Data &H86 ' 23 "E"
Data &HAF ' 24 "r"
Data &H8E ' 25 "F"
Data &HC1 ' 26 "U"
Data &HE3 ' 27 "u"
Data &H8C ' 28 "P"
Data &HC8 ' 29 "П"
Data &H7F ' 30 "Точка"
Data &HAB ' 31 "n"
'-------------------------------------------------------------------------------
'*******************************************************************************

'-------------------------------------------------------------------------------


Видео работы в железе

Видео работы "Протеус"


Исходник + готовая прошивка + эмуляция в "Протеус", Atmega8A

Исходник + готовая прошивка + эмуляция в "Протеус", Atmega88A


Документация ATmega8A    

Документация ATmega48PA/88PA/168PA/328P


Продолжение описания вариантов вывода, в процессе!


Категория: Мои статьи | Добавил: sasha_1973 (08.07.2013)
Просмотров: 3164 | Комментарии: 1
Всего комментариев: 1
1  
Здравствуйте! Скажите пожалуйста, а возможно сделать автоматическую программную регулировку яркости индикаторов например используя фоторезистор? Чем темнее на улице, тем темнее светятся индикаторы. Я понимаю, что надо использовать АЦП, но как это сделать?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Radan Studio © 2017