• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO





7-сегментный дисплей и микроконтроллер 8051



Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком  "Карта сайта"







В этой статье рассказывается о том, как подключить семисегментный светодиодный дисплей к микроконтроллеру 8051. 7-сегментный светодиодный дисплей очень популярен и может отображать цифры от 0 до 9 и довольно много символов, таких как A, b, C,., H, E, e, F, n, o, t, u, y и т. Д. Знание о том, как связать семисегментный дисплей с микроконтроллером, очень важно при проектировании встроенных систем. Семисегментный дисплей состоит из семи светодиодов, расположенных в виде квадратного «8», слегка наклоненного вправо, и одного светодиода в качестве символа точки. Различные символы могут отображаться путем выборочного свечения необходимых светодиодных сегментов. Семь сегментных дисплеев имеют два типа: общий катод и общий анод. В общем катодном типе катод всех светодиодов соединен вместе с одним терминалом, который обычно обозначается как « com », а анод всех светодиодов остается отдельным, поскольку отдельные контакты, обозначенные как a, b, c, d, e, f , g & h (или точка). В обычном анодном типе анод всех светодиодов соединен вместе как один терминал, а катоды остаются отдельными в качестве отдельных контактов. На рисунке ниже показана схема выводов и изображение типичного 7-сегментного светодиодного дисплея.

 

7 LED display

7-сегментный светодиодный дисплей

Цифровой привод.

Цифровальная схема семисегментного светодиодного дисплея представляет собой просто различные логические комбинации его терминалов «от» до «h », чтобы отображать разные цифры и символы. Таблицы с общим числом дисков (от 0 до 9) семисегментного дисплея показаны в таблице ниже.

 

7 segment display to Atmel AT89S51

Интерфейс 7-сегментного дисплея до 8051

Электрическая схема, показанная выше, представляет собой счетчик 0-9 с микроконтроллером AT89S51, который имеет 7-сегментный светодиодный дисплей, сопряженный с ним, чтобы отображать счет. Эта простая схема иллюстрирует две вещи. Как настроить простой счетчик 0-9, используя 8051 и, что более важно, как подключить семисегментный светодиодный дисплей до 8051, чтобы отобразить конкретный результат. Общий 7-сегментный дисплей с диагональю катода подключается к порту 1 микроконтроллера (AT89S51), как показано на схеме. R3-R10 являются токоограничивающими резисторами. S3 является переключателем сброса, а R2, C3 формирует схему дебютации. C1, C2 и X1 связаны с тактовой схемой. Программная часть проекта должна выполнять следующие задачи.

Создайте счетчик 0-9 с заданной задержкой (около 1/2 секунды здесь). Преобразуйте текущий счет в цифровую схему диска. Поместите текущий шаблон накопителя цифр в порт для отображения.

Все вышеперечисленные задачи выполняются программой, приведенной ниже.

Программа.

ASM | 

 

 copy code |

 

 

 

01

ORG000H//initial starting address

02

START:MOVA,#00001001B//initial value of accumulator

03

MOVB,A

04

MOVR0,#0AH//Register R0 initialized as counter which counts from10to0

05

LABEL:MOVA,B

06

INCA

07

MOVB,A

08

MOVC A,@APC//adds thebyteinA to the program counters address

09

MOVP1,A

10

ACALL DELAY//calls the delay of the timer

11

DECR0//Counter R0 decremented by1

12

MOVA,R0//R0 moved to accumulator to checkifit is zeroinnext instruction.

13

JZSTART//Checks accumulatorforzeroandjumps to START.Done to checkifcounting has been finished.

14

SJMPLABEL

15

DB3FH//digit drive patternfor0

16

DB06H//digit drive patternfor1

17

DB5BH//digit drive patternfor2

18

DB4FH//digit drive patternfor3

19

DB66H//digit drive patternfor4

20

DB6DH//digit drive patternfor5

21

DB7DH//digit drive patternfor6

22

DB07H//digit drive patternfor7

23

DB7FH//digit drive patternfor8

24

DB6FH//digit drive patternfor9

25

DELAY:MOVR4,#05H//subroutinefordelay

26

WAIT1:MOVR3,#00H

27

WAIT2:MOVR2,#00H

28

WAIT3:DJNZ R2,WAIT3

29

DJNZ R3,WAIT2

30

DJNZ R4,WAIT1

31

RET

32

END

 

 

О программе.

 

Инструкция MOVC A, @ A + PC - это инструкция, которая создает требуемую цифровую схему привода для дисплея. Выполнение этой команды добавит значение в аккумуляторе A с содержимым счетчика программ (адрес следующей инструкции) и переместит данные, присутствующие в результирующем адресе, в A. После этого программа возобновится из строки после MOVC A , @ A + PC. В программе начальное значение в A равно 00001001B. Выполнение MOVC A, @ A + PC добавит oooo1001B к контенту на ПК (адрес следующей инструкции). Результатом будет адрес метки DB 3FH (строка 15) и данные, присутствующие в этом адресе, т.е. 3FH (цифровую схему привода для 0) перемещается в аккумулятор. При перемещении этого шаблона в накопитель в порт 1 будет отображаться 0, что является первым счетчиком. При следующем подсчете значение в A будет продвигаться до 00001010, а после выполнения MOVC A, @ + PC, значение в A будет 06H, которое представляет собой шаблон дискретного символа для 1, и на нем будет отображаться 1, который является следующим количеством и этот цикл повторяется для последующих подсчетов. Причина, по которой аккумулятор загружается с 00001001B (9 в десятичной форме), состоит в том, что инструкции от строки 9 до строки 15 потребляют всего 9 байтов. Строки с 15 по 24 в программе, которая начинается с метки DB, могут быть вызваны в качестве таблицы Look Up (LUT) . label DB известен как Define Byte - который определяет байт. В этой таблице определяются шаблоны цифровых дисков для 7-сегментного дисплея в виде байтов (в шестнадцатеричном формате). Оператор MOVC извлекает байт из этой таблицы на основе результата добавления ПК и содержимого в накопитель. Регистр B используется как временное хранилище начального значения аккумулятора и последующие приращения, сделанные для аккумулятора, для выборочного считывания каждого символьного шаблона диска из таблицы поиска (LUT). Примечание. - В строке 6 Аккумулятор увеличивается на 1 каждый раз (каждая итерация цикла), чтобы выбрать следующий рисунок диска. Поскольку оператор MOVC использует значение в A для извлечения шаблона дискретных данных из LUT, значение в ACC должно быть соответственно увеличено / изменено. Образцы цифровых символов последовательно расположены в LUT. Регистр R0 используется в качестве счетчика, который рассчитывается от 10 до 0. Это гарантирует, что цифры от o до 9 будут непрерывно отображаться на 7-сегментном светодиоде. Вы можете отметить строки 4, 11, 12 и 13 в вышеуказанной программе. Строка 4 инициализирует R0 до 10 (OAh). Когда счетчик программ доходит до строки 11 в первый раз, 7-сегментный светодиод уже отобразил 0. Таким образом, мы можем уменьшить один счет, и именно поэтому мы написали DEC Ro. Нам нужно постоянно проверять, достигло ли R0 полного счета (то есть 0). Для этого используются линии 12 и 13. Мы перемещаем R0 в аккумулятор, а затем используем инструкцию Jump if Zero (JZ), чтобы проверить, достиг ли аккумулятор в ноль. Если Acc = 0, то мы заставляем программу перейти к START (начальное состояние), и, следовательно, мы перезапускаем 7-сегментный светодиод для отображения от 0 до 9. Если Acc не равно нулю, мы продолжаем программу для отображения следующей цифры (контрольная строка 14).

 

 







Просмотров: 1031 | Добавил: Chinas | Рейтинг: 0.0/0








Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 380



          

Радио для всех© 2024