Преобразователь для цифровой индикации в базисе И-НЕ.
Один из способов цифровой индикации состоит в следующем.
Имеется семь элементов, расположенных так, как показано на рис. а. Каждый элемент может светиться либо не светиться, в зависимости от значения соответствующей логической переменной, управляющей его свечением. Вызывая свечение элементов в определённых комбинациях, можно получить изображение десятичных цифр 0, 1, 9 (рис.б).
Десятичные цифры, отображение которых необходимо вызвать, задаются обычно в двоичном коде. При этом возникает задача формирования логических переменных y1, y2, ..., y7 для управления отдельными элементами в устройстве индикации. Таблица истинности для этих переменных представлена ниже.
Десятичная |
Двоичный код 8421 |
Состояние элементов (z1,
..., z7) и |
|||||||||
x4 |
x3 |
x2 |
x1 |
|
|
|
|
|
|
|
|
y1 |
y2 |
y3 |
y4 |
y5 |
y6 |
y7 |
|||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
2 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
4 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
5 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
6 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
7 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
8 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
9 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
При
построении таблицы были приняты следующие условия: если элемент индикатора
светится, то это означает, что он находится в состоянии лог. 1, если погашен,
то он находится в состоянии лог. 0; управление элементом осуществляется таким
образом, что высокий уровень лог. 1 на некотором входе индикатора вызывает
гашение соответствующего элемента (т. е. чтобы i-й элемент был погашен и zi
= 0, необходимо подать на 1-й вход индикатора управляющий сигнал yi
= l). Таким образом, yi =
Реализация в Multisim:
При физической реализации в качестве источника сигнала можно воспользоваться либо мультивибратором на инверторах с делителем частоты на 2, 4 и 8 на D-триггерах, либо микроконтроллером, например, ATMega8. На схеме в Протеусе с
формированием
разнообразных последовательностей сигналов ("про запас") входам в нашу схему соответствуют выходы порта B 0-4 (пины 14-17):
Листинг прошивки в CodeVisionAVR:
#include <io.h>
#include <delay.h>
unsigned char mask=0b00001000;
void main(void)
{
DDRD = 255;
PORTD = 224;
DDRB =255;
PORTB = 0;
DDRC = 0b0111111;
PORTC = 0;
while (1) {
PORTD++;
PORTB++;
PORTC++;
if (PORTD-224>9) PORTD=224;
if (PORTB>15) PORTB=0;
if (mask == 0b10000000) mask = 0b00001000;
mask = mask<<1;
PORTB=PORTB | mask;
if (PORTC>15) PORTC=0;
delay_ms(500);
PORTB=PORTB ^ mask;
}
}
Количество просмотров: 1762. Комментариев: 1 | |