Меню

Как подключить 7 сегментный индикатор в bascom

Мир микроконтроллеров

Популярное

Семисегментный индикатор

Семисегментный светодиодный индикатор

Семисегментный светодиодный индикатор
Схема подключения одноразрядного семисегментного индикатора
Схема подключения многоразрядного семисегментного индикатора

Семисегментный светодиодный индикатор — устройство отображения цифровой информации. Это — наиболее простая реализация индикатора, который может отображать арабские цифры. Для отображения букв используются более сложные многосегментные и матричные индикаторы.

Семисегментные светодиодные индикаторы бывают разных цветов, обычно это белый, красный, зеленый, желтый и голубой цвета. Кроме того, они могут быть разных размеров.

Также, светодиодный индикатор может быть одноразрядным (как на рисунке выше) и многоразрядным. В основном в практике используются одно-, двух-, трех- и четырехразрядные светодиодные индикаторы:

Кроме десяти цифр, семисегментные индикаторы способны отображать буквы. Но лишь немногие из букв имеют интуитивно понятное семисегментное представление.
В латинице : заглавные A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, строчные a, b, c, d, e, g, h, i, n, o, q, r, t, u.
В кириллице : А, Б, В, Г, г, Е, и, Н, О, о, П, п, Р, С, с, У, Ч, Ы (два разряда), Ь, Э/З.
Поэтому семисегментные индикаторы используют только для отображения простейших сообщений.

Всего семисегментный светодиодный индикатор может отобразить 128 символов:

В обычном светодиодном индикаторе девять выводов: один идёт к катодам всех сегментов, а остальные восемь — к аноду каждого из сегментов. Эта схема называется «схема с общим катодом», существуют также схемы с общим анодом (тогда все наоборот). Часто делают не один, а два общих вывода на разных концах цоколя — это упрощает разводку, не увеличивая габаритов. Есть еще, так называемые «универсальные», но я лично с такими не сталкивался. Кроме того существуют индикаторы со встроенным сдвиговым регистром, благодаря чему намного уменьшается количество задействованных выводов портов микроконтроллера, но они намного дороже и в практике применяются редко. А так как необъятное не объять, то такие индикаторы мы пока рассматривать не будем (а ведь есть еще индикаторы с гораздо большим количеством сегментов, матричные).

Многоразрядные светодиодные индикаторы часто работают по динамическому принципу: выводы одноимённых сегментов всех разрядов соединены вместе. Чтобы выводить информацию на такой индикатор, управляющая микросхема должна циклически подавать ток на общие выводы всех разрядов, в то время как на выводы сегментов ток подаётся в зависимости от того, зажжён ли данный сегмент в данном разряде.

Читайте также:  Как подключить мобильный интернет на теле2 в воронеже

Подключение одноразрядного семисегментного индикатора к микроконтроллеру

Подключение многоразрядного семисегментного индикатора к микроконтроллеру

Схема подключения многоразрядного семисегментного светодиодного индикатора в основном та-же, что и при подключении одноразрядного индикатора. Единственное, добавляются управляющие транзисторы в катодах (анодах) индикаторов:

На схеме не показано, но между базами транзисторов и выводами порта микроконтроллера необходимо включать резисторы, сопротивление которых зависит от типа транзистора (номиналы резисторов рассчитываются, но можно и попробовать применить резисторы номиналом 5-10 кОм).

(24 голосов, оценка: 4,92 из 5)

Источник

Как подключить 7 сегментный индикатор в bascom

Затем присваиваем переменной W то значение, которое собираемся вывести на индикатор:

С двумя последними разрядами практически тоже самое:

M3 = M3 Mod100
M3 = M3 / 10
N3 = Abs ( m3 )

M4 = M4 Mod 10
N4 = Abs ( m4 )

Процессор перепрыгнет на подпрограмму с меткой Led :

После того как зажгли нужные сегменты ждем 5 мс и переходим к отображению следующих чисел:

Portc = &B00000100
Select Case N2
Case 0 : Portd = &B11000000
Case 1 : Portd = &B11111001
Case 2 : Portd = &B10100100
Case 3 : Portd = &B10110000
Case 4 : Portd = &B10011001
Case 5 : Portd = &B10010010
Case 6 : Portd = &B10000010
Case 7 : Portd = &B11111000
Case 8 : Portd = &B10000000
Case 9 : Portd = &B10010000
End Select

Select Case N3
Case 0 : Portd = &B11000000
Case 1 : Portd = &B11111001
Case 2 : Portd = &B10100100
Case 3 : Portd = &B10110000
Case 4 : Portd = &B10011001
Case 5 : Portd = &B10010010
Case 6 : Portd = &B10000010
Case 7 : Portd = &B11111000
Case 8 : Portd = &B10000000
Case 9 : Portd = &B10010000
End Select

Select Case N4
Case 0 : Portd = &B11000000
Case 1 : Portd = &B11111001
Case 2 : Portd = &B10100100
Case 3 : Portd = &B10110000
Case 4 : Portd = &B10011001
Case 5 : Portd = &B10010010
Case 6 : Portd = &B10000010
Case 7 : Portd = &B11111000
Case 8 : Portd = &B10000000
Case 9 : Portd = &B10010000
End Select

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

Вот что получим в итоге:

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

Скачать исходник и проект в протеусе можно ниже:

Привет! я вот написал вот такой вот код, который по плану будет управлять синтезатором
я вот хотел сделать управление при помощи энкодера но я не понимаю как его подключить
вот программа:
$regfile «m16def.dat»
$crystal = 16000000
Config Portc = Output

Config Portb.0 = Input
Config Portb.1 = Input
Config Portb.2 = Input
config int0 = Falling

Читайте также:  Как подключить люстру к тройному проводу

Dim A As Long
Dim B As Long
Dim C As Long
Dim D As Long
dim E as long
‘***********************
Dim N1 As Byte
Dim N2 As Byte
Dim N3 As Byte
Dim N4 As Byte
Dim N5 as byte
‘***********************
Dim Q As long ‘ main variable
Dim R As Byte
Dim Dat As Byte
dim steps as byte
‘***********************
‘Freqdec Alias Portb.0
‘Freqinc Alias Portb.1
‘Save Alias Portb.2
Declare Sub Mat()
Declare Sub 1()
Q=88000
‘steps = 50

Mat:
A = Q
B = A
C = A
D = A
E = A
A = A / 10000
N1 = Abs(A)

B = B Mod 10000
B = B / 1000
N2 = Abs(B)

C = C Mod 1000
C = C / 100
N3 = Abs(C)

D = D Mod 100
D = D / 10
N4 = Abs(D)

E = E Mod 10
N5 = Abs(E)
Call 1
Return

Numbers:
Data &HEB ‘0
Data &H48 ‘1
Data &H73 ‘2
Data &H7A ‘3
Data &HD8 ‘4
Data &HBA ‘5
Data &HBB ‘6
Data &H68 ‘7
Data &HFB ‘8
Data &HFA ‘9

encode:
if Q
return

Так тоже работает но весит меньше.

$regfile = «m8def.dat»
$crystal = 8000000

Dim A As Integer
Dim N1 As Byte
Dim N2 As Byte
Dim N3 As Byte
Dim N4 As Byte
Dim M1 As Integer
Dim M2 As Integer
Dim M3 As Integer
Dim M4 As Integer
Dim W As Integer
Dim Nx As Byte

Ddrb = &B11111111
Ddrd = &B11111111

Portb = A
Portd = &B11000000
W = 4321

M1 = W
M2 = M1
M3 = M1
M4 = M1

M1 = M1 / 1000 ‘ M1 = 1234/1000 = 1,234
N1 = Abs(m1) ‘ N1 = Abs (1,234) = 1

M2 = M2 Mod 1000 ‘ M2 =1234 Mod 1000 = 234
M2 = M2 / 100 ‘ M2 = 234 / 100 = 2,34
N2 = Abs(m2) ‘ N2 = Abs (2,34) = 2

M3 = M3 Mod 100
M3 = M3 / 10
N3 = Abs(m3)

M4 = M4 Mod 10
N4 = Abs(m4)

Nx = N1
Gosub Select_n
Gosub Led

Nx = N2
Gosub Select_n
Gosub Led

Nx = N3
Gosub Select_n
Gosub Led

Nx = N4
Gosub Select_n
Gosub Led

Select_n:
Select Case Nx
Case 0 : Portd = &B11000000
Case 1 : Portd = &B11111001
Case 2 : Portd = &B10100100
Case 3 : Portd = &B10110000
Case 4 : Portd = &B10011001
Case 5 : Portd = &B10010010
Case 6 : Portd = &B10000010
Case 7 : Portd = &B11111000
Case 8 : Portd = &B10000000
Case 9 : Portd = &B10010000
End Select
Return

Источник

Урок 20. Подключение семисегментного индикатора по трём проводам (74HC595)

Чтобы понять, как управлять сдвиговым регистром с помощью МК, давайте поставим перед собой следующую задачу: Собрать устройство, которое будет поочерёдно отображать цифры от 0 до 9 на семисегментном индикаторе с помощью сдвигового регистра 74HC595, а в качестве управляющего контроллера используем МК Attiny13.

Читайте также:  Как подключить ходовые огни на кайрон

И так, «железная» часть реализации данной задачи, принципиальная схема:

Как видим всё просто, семисегментный индикатор можно использовать практически любой с общим анодом. Я использовал GNS-5612BS-21. Питание схемы от 3 до 5.5 вольт. Я думаю, вам не нужно объяснять, что такое сдвиговый регистр и как он работает.

Теперь «программная» часть задачи, откроем BASCOM-AVR и напишем следующий код:

Этот код должен отображать цифры от 0 до 9 на семисегментном индикаторе с временным интервалом в 1 секунду. Давайте разберемся, как же всё так работает и почему.

1, 2, 3, 4 и 5 строка кода: Указываем используемый микроконтроллер (Attiny13), устанавливаем тактовую частоту МК (1.2 МГц) и размеры стека и фрейма памяти.

7, 8 и 9 строки кода: Конфигурирование портов микроконтроллера PORTB.2, PORTB.1, PORTB.0 на выход.

11 и 12 строки кода: Назначение имён для определённых портов, в данном случае Ds для PORTB.2 и Sh_cp для PORTB.0.

13 строка кода: Назначение константы St_cp = 1, в данной константе прописан номер порта PORTB.1 к которому подключена нога St_cp сдвигового регистра.

15 и 16 строки кода: Назначение переменных, в которых буду храниться «промежуточные» данные.

18 и 31 строки кода: Операторные скобки (Do, Loop) бесконечного цикла, то есть код заключённый в эти скобки будет выполняться бесконечно.

20, 21, 22, 23 и 24 строки кода: Здесь постоянно увеличивается значение переменной Level, при достижении переменной значения 9 ей присваивается 0 и счёт начинается заново. Кстати значение переменной Level и выводится на семисегментный индикатор.

26 строка кода: Присваиваем переменной R1 данные массива, в котором хранятся значения цифр выводимых на семисегментный индикатор. От переменной Level зависит то, какие данные из массива мы присвоим к переменной R1.

27 строка кода: Отправка в сдвиговый регистр значения переменной R1.

28 строка кода: Защёлкиваем данные в сдвиговом регистре, то есть, отображаем их на семисегментнике.

30 строка кода: Останавливаем выполнение программы на одну секунду.

35 строка кода: Метка массива данных под названием Numbers.

36. 45 строки кода: Массивы данных для семисегментного индикатора.

Я схему собрал на макетной плате с механическими контактами, вот что получилось:

При прошивке фьюз-биты оставляйте по «заводу», вот картинка на всякий случай:

Источник