Микропроцессорная техника

Автор: Пользователь скрыл имя, 05 Января 2012 в 11:35, курсовая работа

Краткое описание

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

Оглавление

Введение 5

1 Описание контроллера КР580ВВ79 6

1.1 Структура контроллера КР580ВВ79. 7

1.2 Связь с системной шиной 9

1.3 Программирование 10

1.4 Работа БИС КР580ВВ79 11

1.5 Интерфейс клавиатуры 15

1.6 Интерфейс дисплея. 17

2 Описание параллельного интерфейса ввода-вывода ЭВМ. 20

3 Описание разрабатываемого устройства 22

4 Разработка программного обеспечения 23

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

вывод 27

ЛИТЕРАТУРА. 28

ПРИЛОЖЕНИЕ А. СХЕМА ЭЛЕКТРИЧЕСКАЯ ПРИНЦИПИАЛЬНАЯ

ПРИЛОДЕНИЕ б. СХЕМА ЭЛЕКТРИЧЕСКАЯ СТРУКТУРНАЯ

Приложение В. программА УПРАВЛЕНИЯ СХЕМОЙ

ПРИЛОЖЕНИЕ Г. АЛГОРИТМ РАБОТЫ УСТРОЙСТВА

Файлы: 1 файл

Курсовая по МПТ.docx

— 210.20 Кб (Скачать)
 

        ЛИТЕРАТУРА.

    

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

    

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

    

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

 

    Приложение  б. программА УПРАВЛЕНИЯ СХЕМОЙ.

{программа управления  устройством ввода и отображения  информации на базе БИС КР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;

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;

 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

   0..13: begin

           Display[k] := i;

           OutToDisplay(i);

          end;  {цифры}

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

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

     end(*case*);

 end;

until k=16;

for i:=0 to 16 do

end.

Информация о работе Микропроцессорная техника