_WELCOMETO Radioland

Главная Схемы Документация Студентам Программы Поиск Top50  
Поиск по сайту



Навигация
Главная
Схемы
Автоэлектроника
Акустика
Аудио
Измерения
Компьютеры
Питание
Прог. устройства
Радио
Радиошпионаж
Телевидение
Телефония
Цифр. электроника
Другие
Добавить
Документация
Микросхемы
Транзисторы
Прочее
Файлы
Утилиты
Радиолюб. расчеты
Программирование
Другое
Студентам
Рефераты
Курсовые
Дипломы
Информация
Поиск по сайту
Самое популярное
Карта сайта
Обратная связь

Студентам


Студентам > Курсовые > Устройство ввода и отображения информации на базе БИС КР580ВВ79

Устройство ввода и отображения информации на базе БИС КР580ВВ79

Страница: 8/8

 

Текст программы приведен в приложении 1.

 

5. Выбор элементной базы.

 

Для создания разрабатываемого устройства были использованы ИМС микропроцессорного комплекта КР580 как наиболее совместимые с контроллером ввода-вывода КР580ВВ79. Остальные ИМС (инвертор и дешифратор) были выбраны из соображений электрической совместимости и надежности разрабатываемого устройства.

Другие полупроводниковые приборы (транзисторы и светоизлучающие диоды) были выбраны из соображения их максимальной электрической совместимости с выходными характеристиками ИМС, несмотря на их относительно большое энергопотребление по сравнению с другими светоизлучающими знакогенерирующими приборами.

Резисторы С2-23 были выбраны, исходя из соображений рационального сочетания цены и стабильности их параметров.

Переключатели малогабаритные МП10 были выбраны, исходя из таких их преимуществ, как малые габариты и большая надежность, а следовательно, и наработка на отказ.

выводы

Разработанное в данном курсовом проекте устройство ввода и отображения информации на базе контроллера КР580ВВ79 является полезным устройством при проектировании систем безопасности на базе обычных персональных ЭВМ типа IBM PC. Разработанное устройство не требует для подключения никаких дополнительных устройств и имеет достаточно гибкое, легко настраиваемое под конкретные потребности програмное обеспечение. Кроме того, возможности ввода данного устройства могут быть значительно расширены за счет неполного использования матрицы датчиков, причем добавлены могут быть не только кнопочные датчики, а например, температурные либо оптические. Это не потребует дополнения схемы устройства, а только соответствующей доработки программного обеспечения.

Исходя из выше сказанного, можно утверждать, что разработанное устройство вполне можно применять в составе различных систем, где  кроме стандартных устройств ввода и отображения (а также последующего анализа) информации необходимы дополнительные, компактные и многофункциональные устройства. Несмотря на некоторую моральную устарелость БИС КР580ВВ79, устройства на ее основе вполне можно применять в тех областях, где скорость работы и энергопотребление не играют решающей роли.

ЛИТЕРАТУРА.

 

1. Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектиро вание микропроцессорных систем., Пер. с англ. , М.: Р и С, 1987г.

2. Аналоговые и цифровые интегральные схемы. Под ред. С.В.Якубовского, Радио и связь, 1980.

3. Микропроцессорные средства и системы, журнал.

Приложение 1. Листинг управляющей программы.

{программа управления устройством ввода и отображения информации на базе

 БИС КР580ВВ79

 Разработка: Кузин Е.А.}

program KR580;

uses crt,dos;

const Recode: array[1..16] of byte = ($01,$02,$04,$08,$10,$20,$40,$80,$03,$05,

                                      $09,$0B,$12,$22,$42,$82);

{код}

      Code: array[1..16] of integer = (1,2,3,3,3,4,4,5,6,6,0,0,0,0,0,0);

var i,k:integer;

    Display:array[1..16] of integer;

    tmp:byte;

    OK : boolean;

label NEW,AGAIN;

procedure OutByte(portN,bte:byte);{вывод байта в порт}

begin

 case portN of

    $378:  asm

            mov al,bte

            out $378,al

           end;

    $37A:  asm

            mov al,bte

            out $37A,al

           end;

 end(*case*);

 Delay(10);

end;

 

function InByte(portN:byte):byte;{чтение байта из порта}

begin

 case portN of

    $378:  asm

            in al,$378

           end;

    $379:  asm

            in al,$379

           end;

    $37A:  asm

            in al,$37A

           end;

 end(*case*);

 asm

  mov InByte,al

 end;

Delay(10);

end;

procedure Init; {первичная инициализация устройства}

begin

 OutByte($37A,$03); {aппаратный сброс}

 OutByte($37A,$19); {программирование режима  }

 OutByte($378,$19); {работы                   }

end;

procedure Wait; {ожидание прерывания от устройства}

begin

 repeat until InByte($379) <> 0;

end;

procedure OutToDisplay(Symbol:integer); {вывод символа на дисплей}

{таблица перекодировки выводимых символов}

const Recode:array[1..15] of byte = ($60,$da,$f2,$66,$b6,$be,$e0,$fe,$f6,$fc,$ee,$3e,$9c,$9e,$8c);

begin

 OutByte($37A,$09);

 OutByte($378,Recode[Symbol]);

end;

function StatusWord:boolean;{чтение слова состояния}

var SW:byte;

begin

 StatusWord := false;

 OutByte($37A,$15);

 SW := InByte($378);

 if SW <> 0 then StatusWord := TRUE;

end;

procedure ResetINT; {сброс INT}

begin

 OutByte($37A,$19);

 OutByte($378,$F0);

end;

procedure ResetDSPL;{сброс после вывода на дисплей}

begin

 OutByte($37A,$19);

 OutByte($378,$D2);

end;

procedure Bell;{подача звукового сигнала}

begin

 Sound(1200);

 Delay(1000);

 NoSound;

end;

function GetChar:byte; {чтение символа с клавиатуры}

begin

 If not StatusWord then

   begin

     OutByte($37A,$19);

     OutByte($378,$40);

     OutByte($37A,$05);

     GetChar := Inbyte($378);

     if GetChar = 0 then

      begin

       OutByte($37A,$19);

       OutByte($378,$41);

       OutByte($37A,$05);

       GetChar := Inbyte($378)+2;

      end

     else

      begin

       Bell;Bell;

       WriteLN('аппаратная ошибка !!!');

   end;

 ResetINT;

end;

 

begin

AGAIN:

 Init;

 k := 0;

repeat

 begin

  Wait;

  tmp := GetChar;

  i := 0;

  repeat

  inc(i);

  until Recode[i] = tmp;

  inc(k);

  case i of

   1..13: begin

           Display[k] := i;

           OutToDisplay(i);

          end;  {цифры}

   14: k:=16;   {ВВОД}

   15: goto AGAIN;{СБРОС}

   16: Bell;      {ЗВОНОК}

  end(*case*);

 end;

until k=16;

for i:=0 to 16 do

 if Display[i] <> Code[i] then OK := true; {ПРОВЕРКА ПАРОЛЯ}

if OK then Exec('proc.exe,''); {пароль проверен, запуск другой программы}

 goto AGAIN;

end.



Copyright © Radioland. Все права защищены.
Дата публикации: 2004-09-01 (0 Прочтено)