Приложение 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. Экранные формы.

 


Дата добавления: 2019-07-15; просмотров: 186; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!