скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Кодирующее устройство для кода Файера

4.  Зельдин Е. А.

Цифровые интегральные микросхемы в информационн-измерительной 

аппаратуре. –Л.: Энергоатомиздат. Ленингр. отд-ние, 1986.- 280 с.: ил.

Приложения.

 

Приложение 1.  Перечень элементов

Поз.

Обозн.

Наименование Кол Примечания

Конденсаторы

С3 К10-60 – 10 мКф + 10% 1
С1,С2 К10-17а – 0.1 мКф  +  0.1% 2

Микросхемы.

К555АГ3 1
К155ИР13 9
К555ТВ6 1
К555ИЕ10 2
К155ЛН1
К155ЛИ1

Резисторы

R1-R2 С2-29В 5Ком±0.1% 2
R4 МЛТ-0.125 – 30 Ком + 10% 1
R5 МЛТ-0.125 – 1.5Koм + 10% 1

Приложение 2.  Блок-схема алгоритма.


Приложение 3. Текст програмных модулей.

Uses Crt,Graph,AlexUnit;

Const

  _N = 33;

  _M = 10;

Type

  Delim_Mas = array[1 .. 100] of byte;

  Mass1 = array[1 .. _N+_M-1] of byte;

  Mass2 = array[1 .. _M] of byte;

  Mass3 = array[1 .. _M-1] of byte;

  Mas_Exit=array[1..2] of String;

  Two_Matrix=array[1 .. _N,1 .. _N+_M-1] of byte;

Const

  P : Mass2 = (1,0,1,1,0,0,1,0,1,1);

  Y_No : Mas_Exit = ('Да','Нет');

Var

   F,Cicle_Kod : Mass1; R : Mass1;

   Delimoe : Delim_Mas;

   Obraz_Matrix : Two_Matrix;

   Mas : Mass;

   grDriver,grMode,ErrCode: Integer;

   flag : boolean;

   _t,c,n,m,i,schot,N0,Code : integer;

Function Sum(F,P : Byte) : Byte;    {Суммирование по модулю 2}

  Var

    i : Byte;

  Begin

    If ((F=1) and (P=1)) or ((F=0) and (P=0)) Then Sum:=0

                                                                                                                             Else Sum:=1;

  End;

{-------------------------------}

Procedure Dopoln(Var F : Mass1); {Умножение на старшую степень образующего многочлена}

 Var

   i : Byte;

 Begin

   for i:=_N+1 to _N+_M-1 do F[i]:=0;

 End;

{--------------------------------}

Procedure Delenye(F : Mass1;P : Mass2); {Деление многочлен на многочлен}

  Var

         i,j,t : Byte; K : Mass1;

  Begin

    For i:=1 to _N do

      Begin

        IF F[i]=1 Then Begin

          t:=1;

          For j:=i to i+_M-1 do

            Begin

              K[j]:=Sum(F[j],P[t]);

              F[j]:=K[j];

              t:=t+1;

            End;

        End;

      End;

    t:=1;

    For i:=_N+1 to _N+_M-1 do

      Begin

        R[t]:=F[i];

        t:=t+1;

      End;

  End;

{----------------------------------------}

Procedure Ed_Matrix(Var A : Two_Matrix);  {Составление еденичной матрицы}

Var

  i : Integer;

  Begin

    For i:=1 to _N do

      Begin

        A[i,_N+1-i]:=1

      End;

  End;

{----------------------------------------}

Procedure Obr_Matrix(Var A : Two_Matrix); {Получение образующей матрицы}

  Var

         i,j,t,Schot,l,m : Byte; K : Mass1;

  Begin

    Delimoe[1]:=1;

    Schot:=1;

    For i:=1 to _N do

      Begin

        IF Delimoe[i]=1 Then Begin

          t:=1;

          For j:=i to i+_M-1 do

            Begin

              K[j]:=Sum(Delimoe[j],P[t]);

              Delimoe[j]:=K[j];

              t:=t+1;

            End;

          l:=1;

          For m:=i+1 to i+_M-1 do

            Begin

              A[Schot,_N+l]:=Delimoe[m];

              l:=l+1;

            End;

        End

           Else Begin

             l:=1;

             For m:=i+1 to i+_M-1 do

               Begin

                 A[Schot,_N+l]:=Delimoe[m];

                 l:=l+1;

               End;

           End;

        Schot:=Schot+1;

      End;

  End;

Procedure InitGrf;                    {Инициализация графики}

Begin

  grDriver := Detect;

  InitGraph(grDriver, grMode,'c:\sub\bp\bgi');

  if GraphResult <> grOk then  Begin

       Halt(1);

  End;

End;

Procedure Visual(Var sa:mass);  {Ввод информационных символов}

 Var i,x,y,k,Fon,Color,a:Integer;

     Code: Integer;

     ch,chi:Char;

     Stop:Boolean;

     Elm : String;

 Begin

  moveto(20,465);

  SetTextJustify(0,1);

  SetColor(0);

  outtext('Нажмите Enter');

  x:=30;

  y:=225;

  k:=17;

  Fon:=1;

  Color:=14;

  Window_(30,150,610,260,1,'Ввод нформационных символов');

  SetTextStyle(1,0,4);

  SetColor(Fon);

  For i:=1 to _N Do

   Begin

    MoveTo(x+i*k,y);

    Str(Sa[i],Elm);

    OutText(Elm);

   End;

  SetTextStyle(0,0,1);

  MoveTo(x+17,y-20);

  Str(_N,Elm);

  OutText(Elm);

  MoveTo(x+_N*17,y-20);

  Str(0,Elm);

  OutText(Elm);

  SetTextStyle(1,0,4);

   i:=1;

   MoveTo(x+i*k,y);

   Setcolor(Color);

   Str(Sa[i],Elm);

   OutText(Elm);

   Stop:=False;

   Repeat

    Begin

     ch:=ReadKey;

     Case ch Of

     #75:Begin

        Setcolor(Fon);

          MoveTo(x+i*k,y);

          Str(Sa[i],Elm);

          OutText(Elm);

          i:=i-1;

          if(i<1)then i:=_N;

          SetColor(Color);

          MoveTo(x+i*k,y);

          Str(Sa[i],Elm);

          OutText(Elm);

        Stop:=False;

        End;{влево}

     #77:Begin

          SetColor(Fon);

          MoveTo(x+i*k,y);

          Str(Sa[i],Elm);

          OutText(Elm);

          i:=i+1;

          if(i>_N)then i:=1;

          SetColor(Color);

          MoveTo(x+i*k,y);

          Str(Sa[i],Elm);

          OutText(Elm);

          Stop:=False;

         End;{вправо}

      '1':Begin

           SetColor(7);

           MoveTo(x+i*k,y);

           Str(Sa[i],Elm);

           OutText(Elm);

           SetColor(Color);

           MoveTo(x+i*k,y);

           sa[i]:=1;

           F[i]:=Sa[i];

           Str(Sa[i],Elm);

           OutText(Elm);

         Stop:=False;

        End;

      '2':Begin

           SetColor(7);

           MoveTo(x+i*k,y);

           Str(Sa[i],Elm);

           OutText(Elm);

           SetColor(Color);

           MoveTo(x+i*k,y);

           sa[i]:=0;

           F[i]:=Sa[i];

           Str(Sa[i],Elm);

           OutText(Elm);

           Stop:=False;

        End;

     #13:Begin Stop:=True; End;

     End;

    End;

   Until(Stop);

   SetTextStyle(0,0,1);

 End;

{---------------------------------------}

{Вывод образующей матрицы}

Procedure OutPutObr_Matrix(x,y : Integer;Obr_Matr : Two_Matrix  );

 Var k,i,j : Integer;

     Elm : String;

 Begin

   k:=12;

   For i:=1 to _N Do

     Begin

       For j:=1 to _N Do

         Begin

           MoveTo(x+j*k,i*10+y);

           Str(Obr_Matr[i,j],Elm);

           OutText(Elm);

         End;

    End;

   SetColor(4);

   For i:=1 to _N Do

     Begin

       For j:=_N+1 to _N+_M-1 Do

         Begin

           MoveTo(x+j*k,i*10+y);

           Str(Obr_Matr[i,j],Elm);

           OutText(Elm);

         End;

    End;

 End;

{----------------------------------}

{Вывод полученной кодовой комбинации}

Procedure OutPut(x,y : Integer;F,A : Mass1);

 Var k,s : Integer;

     Elm : String;

  Begin

    MoveTo(x+10,y-20);

    Str(_N+_M-1,Elm);

    OutText(Elm);

    MoveTo(x+(_N+_M)*12-3,y-20);

    Str(0,Elm);

    OutText(Elm);

    k:=12;

    For i:=1 to _N Do Cicle_Kod[i]:=F[i];

    s:=1;

    For i:=_N+1 To _N+_M-1 Do

     Begin

      Cicle_Kod[i]:=A[s];

      s:=s+1;

     End;

    For i:=1 to _N Do

      Begin

        MoveTo(x+i*k,y);

        Str(Cicle_Kod[i],Elm);

        OutText(Elm);

      End;

    SetColor(4);

    For i:=_N+1 to _N+_M-1 Do

      Begin

        MoveTo(10+x+i*k,y);

        Str(Cicle_Kod[i],Elm);

        OutText(Elm);

      End;

  End;

{---------------------------------}

{выход из программы}

Function _Exit(Fon,Color : Integer;Col_Simv : Byte) : integer;

 Var x,y,k : Integer;

     Stop : Boolean;

     Ch : Char;

Begin

  Window_(250,200,450,300,1,'Выход');

  x:=225;

  y:=260;

  k:=80;

  SetTextStyle(0,0,1);

  SetColor(Col_Simv);

  For i:=1 to 2 do

    Begin

      MoveTo(x+i*k,y);

      OutText(Y_No[i]);

    End;

  i:=1;

  SetFillStyle(1,Fon);

  Bar(x+i*k-30,y-15,x+i*k+30,y+15);

  MoveTo(x+i*k,y);

  Setcolor(Color);

  OutText(Y_No[i]);

  Stop:=False;

  Repeat

   ch:=ReadKey;

     Case ch Of

     #75:Begin

          SetFillStyle(1,7);

          Bar(x+i*k-30,y-15,x+i*k+30,y+15);

        Setcolor(Col_Simv);

          MoveTo(x+i*k,y);

          OutText(Y_No[i]);

          i:=i-1;

          if(i<1)then i:=1;

          SetFillStyle(1,Fon);

          Bar(x+i*k-30,y-15,x+i*k+30,y+15);

          SetColor(Color);

          MoveTo(x+i*k,y);

          OutText(Y_No[i]);

        Stop:=False;

        End;{влево}

     #77:Begin

          SetFillStyle(1,7);

          Bar(x+i*k-30,y-15,x+i*k+30,y+15);

          Setcolor(Col_Simv);

          MoveTo(x+i*k,y);

          OutText(Y_No[i]);

          i:=i+1;

          if(i>2)then i:=2;

          SetFillStyle(1,Fon);

          Bar(x+i*k-30,y-15,x+i*k+30,y+15);

          SetColor(Color);

          MoveTo(x+i*k,y);

          OutText(Y_No[i]);

          Stop:=False;

         End;{вправо}

     #13:Begin Stop:=True; _Exit:=i End;

     End;{Case}

  Until Stop;

  SetTextStyle(0,0,0);

End;

{---------------------------------}

{ОСНОВНАЯ ПРОГРАММА               }

{---------------------------------}

Begin

 InitGrf;

Repeat

  flag:=false;

  Fon(3,2,GetMaxX-3,30);

  setcolor(0);

  moveto(20,465);

  SetTextJustify(0,1);

  outtext('Esc -  Выход');

  Menu(3,'Работа','О программе','Помощь','','','');

  Case t Of

     1:Begin

         Repeat

           SetFillStyle(1,7);                     {Строка состтояния}

           Bar(3,450,getmaxx-3,getmaxy-3);

           SetColor(15);

           Line(3,450,getmaxx-3,450);

           Line(3,450,3,getmaxy-3);

           SetColor(0);

           Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

           Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

           {moveto(20,465);

           SetTextJustify(0,1);

           SetColor(0);

           outtext('Нажмите любую клавишу ...');}

           VerMenu(3,'Ввод комбинации','Образующая матрица','Выход','','','');

           Case Np Of

             1 : Begin

                   Visual(Mas);

                   Dopoln(F);

                   Delenye(F,P);

                   Window_(30,300,610,410,1,'Закодированное сообщение. Красные   

                   символы - контрольные.');

                   OutPut(40,370,F,R);

                   ReadKey;

                   SetFillStyle(1,3);

                   Bar(30,150,610,410);

                 End;

             2 : Begin

                   Window_(30,50,610,445,1,'Образующая матрица');

                   Ed_Matrix(Obraz_Matrix);

                   Obr_Matrix(Obraz_Matrix);

                   OutPutObr_Matrix(40,90,Obraz_Matrix);

                   ReadKey;

                   SetFillStyle(1,3);

                   Bar(30,50,610,450);

                 End;

             3 : Begin

                  Case _Exit(1,15,0) of

                   1 : begin

                         Np:=3;

                         flag:=true;

                       end;

                   2 : Flag:=False;

                  end

                 End;

           End;

         Until (Np=3) or (Np=4);

         Ramka_Off(x1,y1,x2,y2);

       End;

     2:Begin

         SetFillStyle(1,7);                     {Строка состтояния}

           Bar(3,450,getmaxx-3,getmaxy-3);

           SetColor(15);

           Line(3,450,getmaxx-3,450);

           Line(3,450,3,getmaxy-3);

           SetColor(0);

           Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

           Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

         Window_(100,80,510,400,1,'О программе');

         moveto(130,130);

         SetTextJustify(0,1);

         outtext('Данная программа является курсовой работой');

         moveto(300,145);

         SetTextJustify(1,1);

         outtext('по курсу :');

         moveto(300,160);

         SetTextJustify(1,1);

         outtext('" Передача информации " ');

         moveto(120,200);

         SetTextJustify(0,1);

         outtext('Задание : Построить кодирующее устройство');

         moveto(185,220);

         outtext('для кода Файра.Кодируемых сообщений 63,');

         moveto(185,240);

         outtext('число обнаруживаемых ошибок Br=4, число');

         moveto(185,260);

         outtext('исправляемых ошибок Bs=3.');

         moveto(120,290);

         outtext('Студент :        Иванов А. Е.');

         moveto(120,310);

         outtext('Группа  :        BM-1-97');

         moveto(120,330);

         outtext('Преподаватель :  Каевченко .');

         moveto(300,380);

         SetTextJustify(1,1);

         outtext('СМОЛЕНСК  1999 г.');

        moveto(20,465);

        SetTextJustify(0,1);

        SetColor(0);

        outtext('Нажмите любую клавишу ...');

        Readkey;

        Ramka_Off(x1,y1,x2,y2);

       End;

     3:Begin

         SetFillStyle(1,7);                     {Строка состтояния}

           Bar(3,450,getmaxx-3,getmaxy-3);

           SetColor(15);

           Line(3,450,getmaxx-3,450);

           Line(3,450,3,getmaxy-3);

           SetColor(0);

           Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

           Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

           Window_(100,50,500,350,1,'Помощ');

         moveto(120,110);

         SetTextJustify(0,1);

         outtext('<--  -->  ПЕРЕДВИЖЕНИЕ ПО ГОРИЗОНТАЛЬНОМУ МЕНЮ.');

         moveto(120,130);

         outtext('‑  |');

         moveto(120,135);

         outtext('|  |     ПЕРЕДВИЖЕНИЕ ПО ВЕРТИКАЛЬНОМУ МЕНЮ.');

         moveto(120,140);

         outtext('|  ­');

         moveto(114,150);

         moveto(114,155);

         outtext('<Enter>       АКТИВАЦИЯ ПУНКТА МЕНЮ.');

         moveto(140,200);

         outtext('В программе использованы соотношения :');

         moveto(120,220);

         outtext('L >= Bs       c >= Bs+Br-1');

         moveto(160,235);

         outtext('L');

                         moveto(120,240);

         outtext('e = 2 -1       m = c + L');

         moveto(120,260);

         outtext('n = НОК(e,c)');

         moveto(120,280);

         outtext('После расчетов получили образующий многочлен');

         moveto(120,300);

         outtext('Файра : P(x)=1011001011');

         moveto(20,465);

         SetTextJustify(0,1);

         SetColor(0);

         outtext('Нажмите любую клавишу ...');

         ReadKey;

         Ramka_Off(x1,y1,x2,y2);

       End;

  End; {Case}

Until flag;

closegraph;

End.

Оглавление.

Аннотация

Введение

1. Теоретическое введение

1.1. Постановка задачи.
1.2. Понятие двоичных циклических кодов.
1.2.1. Общие понятия и определения.

            1.2.2. Методы построения циклических кодов.

1.3.Технические средства кодирования для двоичных

      циклических кодов.

1.4. Коды Файра.

  2. Разработка схемы кодирующего устройства.

2.1. Построение кода Файра.
2.2. Структурная схема кодирующего устройства.

 3. Анализ технического задания.  

 4. Работа устройства

  5.Выбор узлов принципиальной схемы.

5.1. Расчет генератора тактовых импульсов
5.2. Счетчик К555 ИЕ10
5.3. Тригер К555 ТВ6
5.4. Регистр К155ИР13.

 6. Описание разработки системы.

6.1. Модульная структура системы.
6.2. Организация пользовательского интерфейса  .
6.2.1. Меню системы.
6.2.2. Обработка ошибочных ситуаций.
6.3. Спецификация на программные модули.

 7 . Тестирование.

7.1. Выбор методики тестирования.
7.2. Результаты тестирования

  8. Ограничения на разработку.

8.1.  Инструкция пользователя

 Заключение.

 

 Список литературы.

 

 Приложения

 

Приложение 1.  Перечень элементов.

 

Приложение 2. Блок схема алгоритма.

 

Приложение 3. Текст программных модулей.

 

    Приложение 4. Экранные формы.

 


Страницы: 1, 2, 3, 4


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.