|
|
|
Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience |
|
|
Предположим, вам нужен трехзначный дисплей, подключенный к 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 |
