Курсовая работа: Микропроцессорная система управления на базе интерфейсов персонального компьютера
Возможны 4 режима работы: параллельная загрузка, сдвиги вправо (от D1 к D8) и влево (от D8 к D1),блокировка.
Входы | Входы | ||||||||||
Сброс | Режим | Такт | Последовательный ввод | Параллельный ввод | Q0 | Q1 | … | Q6 | Q7 | ||
R | S1 | S2 | С | DL | DR | D0-D7 | |||||
0 | x | x | x | x | x | X | 0 | 0 | … | 0 | 0 |
1 | X | x | 0 | x | x | x | Q0п | Q1п | … | Q6п | Q7п |
1 | 1 | 1 | ↑ | x | x | D0-D7 | D0 | D1 | … | D6 | D7 |
1 | 0 | 1 | ↑ | x | 1 | x | 1 | Q0п | … | Q5п | Q6п |
1 | 0 | 1 | ↑ | x | 0 | x | 0 | Q0п | … | Q5п | Q6п |
1 | 1 | 0 | ↑ | 1 | X | X | Q1п | Q2п | … | Q7п | 1 |
1 | 1 | 0 | ↑ | 0 | x | X | Q1п | Q2п | … | Q7п | 0 |
1 | 0 | 0 | ↑ | x | x | X | Q0п | Q1п | … | Q6п | Q7п |
Примечание: 0 – низкий уровень, 1 – Высокий уровень, х - любое состояние, ↑ - положительный перепад. Qnп – предыдущее значение n выхода.
3. К155ИД3
Микросхема представляет собой дешифратор четырехзначного двоичного кода. По входам Е0 и Е1 подаются сигналы разрешения выходов, чтобы устранять текущие выбросы, которыми сопровождается дешифрация кодов, появляющихся не строго синхронно (например, поступающих от счетчика пульсации). Чтобы разрешить прохождение данных на выходы, на входы Е0 и Е1 следует дать напряжение низкого уровня. Когда на входах Е0 и Е1 присутствуют напряжения высокого уровня, то на выходах 0-15 появляются также высокие уровни.
Дешифратор К155ИДЗ потребляет ток 56 мА. Время задержки распространения сигнала для цепи "вход А – выход" составляет 36 нс. Внешний вид и обозначения контактов приведены на рис. 4.5.
1 | Номинальное напряжение питания | 5 В 5 % |
2 | Выходное напряжение низкого уровня | не более 0,4 В |
3 | Выходное напряжение высокого уровня | не менее 2,4 В |
4 | Входной ток низкого уровня | не более -1,6 мА |
5 | Входной ток высокого уровня | не более 0,04 мА |
6 | Ток потребления | не более 56 мА |
7 | Время задержки распространения при включении по входам 20 - 23 по входам 18, 19 | не более 33 нс не более 27 нс |
8 | Время задержки распространения при выключении по входам 20 - 23 по входам 18, 19 | не более 36 нс не более 30 нс |
9 | Время дешифрации | не более 35 нс |
10 | Потребляемая мощность | не более 294 мВт |
Разработка принципиальной схемы
С компьютера необходимые данные, сформированные программным путем, посылаются в порт на 8- разрядную шину данных D0-D7. Через интерфейсный кабель они попадают на микросхему DD1 – шинный формирователь, выполняющий 2 функции усиление сигнала, защиту LPT порта от высокого потенциала в случае пробоя одного из транзисторов.
С выхода DD1 усиленный по уровню сигнал подается на микросхему DD4 – регистр данных, куда они записываются по управляющему сигналу (С1) из порта и хранятся до подачи нового управляющего сигнала. С выхода DD4 данные поступают прямиком на регистры DD5-DD6 данных выбранной группы устройств.
Программа формирует следующий пакет данных, отвечающих за выбор микросхемы на платах управления, в которую будут записаны переданные ранее данные. Снова происходит посылка в порт, и данные через DD1 попадают одновременно на входы регистра данных DD4, по управляющему сигналу (С0) данные записываются в регистр. Регистр DD4 разрешает запись в один из двух регистров данных (DD5-DD6), которые идут с регистра DD4.
Информация с регистров DD5 – DD6 подается на транзисторы VT1-VT16. При подаче на эти транзисторы напряжения высокого уровня они открываются.
При контроле состояния объектов данные, сформированные компьютером, поступают через порт на DD1 - шинный формирователь, а с него на дешифраторы DD7-DD8, которые подключены к горизонтальным линейкам матрицы объектов. Вертикали подключены к шинному формирователю DD3 (через который осуществляется контроль) с одной стороны, а с другой стороны на них подается +5В (логическая 1).
Разработка программного обеспечения
Для разработки программного обеспечения для обеспечения функций управления и контроля воспользуемся средой Delphi. В среде разработки создадим форму и добавим на неё 3 объекта типа TEdit и 2 объекта типа TButton:
Для управления регистрами LPT порта будем использовать библиотеку inpout32.dll. Необходимо в заголовке программы, в секции uses поместить прототипы функций Out32 и Inp32 со специальной директивой компилятора external, говорящей откуда нужно эти функции брать:
function Inp32(PortAdr: word): byte; stdcall; external 'inpout32.dll';
function Out32(PortAdr: word; Data: byte): byte; stdcall; external 'inpout32.dll';
Создадим обработчик кнопки "Считать", код которого будет реализовывать считывание данных по адресу, указанному в поле Edit1 и вывод считанных данных в поле Edit2:
procedure TForm1.Button1Click(Sender: TObject);
var
Data: Byte;
i: integer;
begin
Out32($37A, 12); //разрешаемдешифрацию DD7
for i:=0 to 3 do
begin
out32($378,i); //записываемврегистрданных
Data:= Inp32($379); //считываем с регистра управления
Edit2.Text:=IntToStr(Data);