|
Мультиплексор 7-сегментного дисплея на микроконтроллере 8051
Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком "Карта сайта"
Предположим, вам нужен трехзначный дисплей, подключенный к 8051. Каждый 7-сегментный дисплей имеет 8 контактов, поэтому общее количество 24 контактов подключено к микроконтроллеру, и осталось только 8 контактов с микроконтроллером для других приложений ввода-вывода , Также максимальное количество дисплеев, которые могут быть подключены к 8051, ограничено 4, потому что 8051 имеет только 4 порта. Более трех трех дисплеев всегда включается, и это потребляет значительное количество энергии. Все эти проблемы, связанные с прямым методом, могут быть решены путем мультиплексирования.
При мультиплексировании все дисплеи подключаются параллельно одному порту, и только один дисплей может включаться одновременно, в течение короткого периода времени. Этот цикл повторяется быстрыми темпами и из-за стойкости зрения человеческого глаза, все цифры, кажется, светятся. Основными преимуществами этого метода являются:
Требуется меньшее количество контактов порта. Потребляет меньше энергии. Можно подключить большее количество дисплеев (максимум 24).
Ниже показана схема для мультиплексирования 2 семисегментных дисплеев на 8051.
Мультиплексор 7-сегментный дисплей до 8051
Когда будет собрано и включено питание, схема отобразит номер «16» и посмотрим, как это делается. Первоначально первый дисплей активируется, делая P3.0 высоким, а затем цифровую схему привода для «1» загружают в порт 1. Это сделает первый дисплей отображаемым «1». В то же время P3.1 будет низким, поэтому второй дисплей будет ВЫКЛ. Это условие поддерживается примерно на 1 мс, а затем P3.0 становится низким. Теперь оба дисплея будут ВЫКЛ. Затем второй дисплей активируется, делая P3.1 высоким, а затем диск с цифрой для «6» загружается в порт 1. Это заставит второй дисплей отображать «6». В то же время P3.0 будет низким, поэтому второй дисплей будет ВЫКЛ. Это условие сохраняется в течение еще 1 мс, а затем порт 3.1 становится низким. Этот цикл повторяется, и из-за сохранения зрения вы почувствуете это как «16».Транзистор Q1 управляет первым дисплеем (D1), а транзистор Q2 управляет вторым дисплеем (D2). R11 и R12 являются опорными токоограничивающими резисторами Q1 и Q2. Назначение других компонентов объясняется в первом контуре.
Программа.
ASM | |
copy code | |
|
|
01 |
ORG000H//initial starting address |
02 |
MOVP1,#00000000B//clears port1 |
03 |
MOVR6,#1H//stores"1" |
04 |
MOVR7,#6H//stores"6" |
05 |
MOVP3,#00000000B//clears port3 |
06 |
MOVDPTR,#LABEL1//loads the adress of line29to DPTR |
07 |
MAIN:MOVA,R6//"1"is moved to accumulator |
08 |
SETBP3.0//activates 1st display |
09 |
ACALL DISPLAY//calls the displaysubroutineforgetting the patternfor"1" |
10 |
MOVP1,A//moves the patternfor"1"intoport1 |
11 |
ACALL DELAY//calls the 1ms delay |
12 |
CLR P3.0//deactivates the 1st display |
13 |
MOVA,R7//"2"is moved to accumulator |
14 |
SETBP3.1//activates 2nd display |
15 |
ACALL DISPLAY//calls the displaysubroutineforgetting the patternfor"2" |
16 |
MOVP1,A//moves the patternfor"2"intoport1 |
17 |
ACALL DELAY//calls the 1ms delay |
18 |
CLR P3.1//deactivates the 2nd display |
19 |
SJMP MAIN//jumps back to mainandcycle is repeated |
20 |
|
21 |
DELAY:MOVR3,#02H |
22 |
DEL1:MOVR2,#0FAH |
23 |
DEL2:DJNZ R2,DEL2 |
24 |
DJNZ R3,DEL1 |
25 |
RET |
26 |
DISPLAY:MOVC A,@ADPTR//adds thebyteinA to the addressinDPTRandloads A withdatapresentinthe resultant address |
27 |
RET |
28 |
|
29 |
LABEL1:DB3FH |
30 |
DB06H |
31 |
DB5BH |
32 |
DB4FH |
33 |
DB66H |
34 |
DB6DH |
35 |
DB7DH |
36 |
DB07H |
37 |
DB7FH |
38 |
DB6FH |
39 |
|
40 |
END |