|
Кодирующее устройство для кода ФайераДля синхронного каскадирования микросхема имеет два входа разрешения СЕР и СЕТ, а также выход ТС (окончания счета). Счетчик считает тактовые импульсы если на входах СЕТ и СЕР напряжения высокого уровня. Вход СЕТ последующего счетчика соединяется с выходом ТС предыдущего. На выходе ТС появится напряжение высокого уровня, если выходной код счетчика 1111=15, а на входе СЕТ присутствует напряжение высокого уровня. Состояния счетчика приведены в таблице 1. Таблица 1. |Режим работы |Входы |Выходы | | |R |C |CЕР |СЕТ |РЕ |Dn |Qn |ТС | |Сброс |0 |Х |Х |Х |Х |Х |0 |0 | |Параллельная |1 |( |Х |Х |0 |0 |0 |0 | |загрузка | | | | | | | | | | |1 |( |Х |Х |0 |1 |1 |1 | |Счет |1 |( |1 |1 |1 |Х |Счет |1 | |Хранение |1 |Х |Х |0 |1 |Х |Qn |1 | | |1 |Х |0 |Х |1 |Х |Qn |1 | 5.3. Триггер К555 ТВ6 Микросхема К555 ТВ6 содержит два J-K триггера с общим входом питания и изображена на Рис .5.3 . Вход синхронизации С у всех триггеров инверсный динамический, поэтому данные со входов J и K переносятся на выход Q по отрицательному перепаду импульса С. Когда импульс переходит от высокого уровня к низкому сигналы на входах J и K не должны меняться. Состояния для триггера приведены в таблице 2 . Таблица 2. Состояния триггера К555 ТВ6. |Режим работы |Входы |Выходы | | | R | J |K |C |[pic] |[pic] | |Асинхронный сброс |0 |Х |Х |Х |0 |1 | |Переключение |1 |1 |1 | |[pic]=1|[pic]=0| |Хранение |1 |0 |0 | |1 |0 | |Загрузка 1 |1 |1 |0 | |1 |0 | |Загрузка 0 |1 |0 |1 | |0 |1 | 5.4. Регистр К155ИР13. Микросхема К155ИР13 является универсальным восьмиразрядным регистром сдвига с большими функциональными возможностями. Регистр может работать в следующих режимах: последовательного ввода информации с о сдвигом вправо; последовательного ввода информации с о сдвигом влево; параллельного ввода; хранение; установка нулей (очистка, сброс). Микросхема имеет следующие выводы (рис. 5.4): информационные входы последовательного ввода информации – DR при сдвиге вправо и DL при сдвиге влево; восемь входов D0-D7 для параллельного ввода; тактовый вход С; управляющие входы S0 и S1 для выбора режима; вход R для установки триггеров в нулевое состояние и восемь выходов от разрядов Q0-Q7. Рис. 5.4. Регистр К155ИР13. Работа регистра в режиме последовательного ввода со сдвигом вправо происходит при S1=0 и S0=1. Информация в последовательном коде подается на вход, начиная с младших разрядов. Ввод и сдвиг всего числа на один разряд происходит с каждым перепадом 0,1 тактовых импульсов. Последовательный ввод со сдвигом влево осуществляется при S1=1 и S0=0. Входная информация должна поступать на вход DL со старших разрядов. Для параллельного ввода со входов D0-D7 на обоих управляющих входах должно быть S1=S0=1. Информация со входов D0-D7 будет записана в триггеры и появится на выходах Q0-Q7 по перепаду 0,1 тактового импульса. Во избежание сбоев, смена состояний управляющих входов S1 и S0 должна происходить при С=1. Когда на обоих управляющих входах S1= S0=0, триггеры не переключаются, т. е. имеет место режим хранения. Установка нулей (очистка регистра ) осуществляется импульсом U0 на входе R. Очистка регистра происходит независимо от состояния остальных входов. Во время действия импульса R=0 регистр бездействует. При выполнении всех остальных операций необходимо поддерживать R=1. Работа регистра приведена в таблице 3. Таблица 3. |Входы |Выходы |Режим работы | |R|C |S0 |S1 |DR |DL |Di |Q0 |Q1-Q6 |Q7 | | |1|( |1 |1 |1 |X |Dni |Dn0 |Dn1... |Dn7 |Параллельный | | | | | | | | | |Dn6 | |ввод. | | | | | | | | | | | |Хранение | |1|( |0 |0 |X |X |X |Qn0 |Qn1... |Qn7 | | | | | | | | | | |Qn6 | | | |1|( |1 |0 |X |0 |X |Qn1 |Qn2... |0 |Сдвиг влево | | | | | | | | | |Qn7 | | | |1|( |1 |0 |X |1 |X |Qn1 |Qn2... |1 | | | | | | | | | | |Qn7 | | | |1|( |0 |1 |0 |X |X |0 |Qn0... |Qn6 |Сдвиг вправо | | | | | | | | | |Qn5 | | | |1|( |0 |1 |1 |X |X |1 |Qn0... |Qn6 | | | | | | | | | | |Qn5 | | | |0|x |x |x |X |x |X |0 |0 ... 0 |0 |Сброс | ВЫВОДЫ. В данной главе были описаны основные элементы, применяемые при реализации принципиальной схемы кодера. Также была дана их краткая характеристика и способы включения элементов. Все используемые элементы -ТТЛ. В следующих главах будет рассмотрена программная реализация кодирующего устройства (его математическая модель). 6. Описание разработки системы. 6.1. Модульная структура системы. Как уже говорилось во второй главе программа состоит из пяти модулей: - Основная программа. - Модуль ввода. - Модуль вывода. - Интерфейс. - Модуль обработки ошибок. Модульная структура программы представлена на рисунке 6.1 Рис 6.1 Модульная структура программы. Пользователь ведёт диалог с программой через интерфейс. От интерфейса управление передаётся в Основную программу, где анализируются команды пользователя и выполняется передача управления соответствующим модулям. Если пользователь выбрал пункт меню и пункт подменю , то управление от Основной программы передаётся в Модуль ввода и дальше пользователь ведет диалог с этим модулем. Как только нажата клавиша , то управление берёт Модуль обработки ошибок. Данный модуль проверяет выполнение ограничений и выявляет ошибки при вводе. Если ошибок нет, то управление передаётся в Основную программу и дальше в Модуль вывода. А иначе пользователю предоставляется шанс ещё раз ввести данные. 6.2. Описание пользовательского интерфейса. 6.2.1. Меню системы. Интерфейс системы выполнен в графическом режиме с соблюдением всех установленных ГОСТОВ. Экран разбит на три части: верхняя часть - горизонтальное меню с выпадающими окнами; нижняя часть - строка состояния; средняя часть - окно диалога. Горизонтальное меню состоит из трёх пунктов: V Работа. В этом пункте предусмотрено выпадающее меню для облегчения поиска соответствующего пункта. В подменю находятся следующие пункты: V Ввод. V Вывод V Выход. V О программе. V Помощь. Передвижение по меню осуществляется с помощью клавиш управления курсором. Каждый пункт меню активизируется при нажатии клавиши . Обработку пунктов меню осуществляет Основная программа. В неё передаётся управление и соответствующие координаты пунктов на выполнение. В пункте меню , в подпункте осуществляется ввод данных, необходимых для работы программы. При этом в Модуле ввода предусмотрено редактирование вводимого результата. В подпункте происходит выполнение алгоритма и вывод образующей матрицы на экран в удобном для визуализации виде. В подпункте происходит предупреждение пользователя о выходе из программы с соответствующими запросами. В пункте дана краткая аннотация программы. В пункте представлена помощь по обработке пунктов меню и по соответствующим клавишам. 6.2.2. Обработка ошибочных ситуаций. В программе предусмотрена защита от ввода нестандартных данных, а также защита от нажатия различных клавиш. Для обработки этих ситуаций предусмотрен Модуль обработки ошибок. Пользователь может вводить только 0 или 1. Если пользователь ввел по ошибке неправильные данные, то у него есть возможность исправиться на стадии ввода. Для этих целей в программе предусмотрен повторный ввод с предыдущими данными. 6.3. Спецификация на программные модули. Процедура initgrf. Входные параметры:Нет. Выходные параметры:Нет. Выполняемые функции:Инициализация графики. Особенностей:Нет. Функция Sum(F,P : Byte) : Byte; Входные параметры: F,P : Byte Выходные параметры: Sum Выполняемые функции: Суммирование по модулю 2 Особенностей:Нет. Процедура Dopoln(Var F : Mass1); Входные параметры: F : Mass1 Выходные параметры: F : Mass1 Выполняемые функции: Умножение на старшую степень образующего многочлена . Особенностей: НЕТ . Процедура Delenye(F : Mass1;P : Mass2); Входные параметры: F : Mass1;P : Mass2 Выходные параметры: нет. Выполняемые функции: Деление многочлен на многочлен Особенностей:Имеет свои особенности. Процедура Ed_Matrix(Var A : Two_Matrix); Входные парамеры: Var A : Two_Matrix Выходные параметры: Var A : Two_Matrix Выполняемые функции: Составление единичной матрицы. Особенности: нет. Процедура Obr_Matrix(Var A : Two_Matrix); Входные параметры A : Two_Matrix Выходные параметры: A : Two_Matrix Выполняемые функции: Получение образующей матрицы Особенностей: нет. Процедура Visual(Var sa:mass); Входные параметры: Var sa:mass Выходные параметры: Var sa:mass Выполняемые функции: Ввод информационных символов. Особенностей: нет Процедура OutPutObr_Matrix(x,y : Integer;Obr_Matr : Two_Matrix ); Входные параметры: x,y : Integer;Obr_Matr : Two_Matrix ); Выходные параметры:Нет. Выполняемые функции: Вывод образующей матрицы. Особенностей:Является универсальной. Процедура OutPut(x,y : Integer;F,A : Mass1); Входные параметры: x,y : Integer;F,A : Mass1. Выходные параметры:Нет. Выполняемые функции: Вывод полученной кодовой комбинации. Особенностей: нет. Функция _Exit(Fon,Color : Integer;Col_Simv : Byte) : integer; Входные параметры Fon,Color : Integer;Col_Simv : Byte Выходные параметры: _Exit : integer. Выполняемые функции: выход из программы Особенностей: нет Основная программа Входные параметры:нет. Выходные параметры:Нет. Выполняемые функции:Обьединяет в себя все процедуры и управляет работой. Особенностей:Нет. ВЫВОДЫ. В данной главе были описаны принципы разработки программы и интерфейса. Дана модульная структура программы и межмодульные связи. Описан принцип работы программы и дана спецификация на программные модули. Если это всё объединить, то нетрудно будет разобраться в отдельных деталях программы. Дальше будет рассмотрено одно из основных мероприятий при программировании - тестирование. 7. Тестирование. 7.1. Выбор методики тестирования. Без тестирования программ невозможно создать правильно работающую программу, так как всегда существуют какие-то граничные условия, за пределами которых программа даёт ошибки. При этом не следует путать отладку программ и тестирование. Отладка программ - используется при неправильной работе программы. Тестирование - ищет ошибки. Существует много методов тестирования: 1) Статическое тестирование является наиболее формализованным и автоматизируемым методом проверки программ. В качестве эталонов применяются правила структурного построения программных модулей и обработки данных. Проверка степени этих правил проводится без использования объектного кода программы путем формального анализа текста программы на языке программирования. Операторы и операнды текста программ при этом анализируется в символьном виде, поэтому такой метод называют символьным тестированием. 2) Детерминированное тестирование является наиболее трудоёмким и детализирующим. При детерминированном тестировании контролиру- естся каждая комбинация исходных эталонных данных и соответствующая ей комбинация результатов функционирования программы. Это позволяет выявлять отклонение результатов от эталона и реализующих данных, при которых это отклонение произошло. 3) Стохастическое тестирование применяется в тех случаях, когда невозможно в сложных задачах перебрать все комбинации исходных данных и проконтролировать результаты функционирования программы на каждом из них. При этом исходные тестовые данные задаются множеством случайных величин с соответствующими распределениями и для сравнения полученных результатов используются также распределения случайных величин. Стохастическое тестирование применяется в основном для обнаружения ошибок. 4) Тестирование в реальном масштабе времени. В процессе такого тестирования проверяется исполнение программ и обработка исходных данных с учетом времени их поступления , длительности и приоритетности обработки , динамика использования памяти и т.д. 5) При восходящем тестировании прежде всего проверяются модули нижних иерархических уровней, к которым постепенно подключаются вызывающие их модули. При этом обеспечивается работоспособность вызываемых компонент и функции группы программ проверяются в их естественном исполнении. Основные трудности состоят в необходимости полного обновления тестовых наборов при подключении каждой новой программы более высокого уровня. 6) При нисходящем тестировании проверки начинаются с программ управления и организации вычислительного процесса. Первоначально тестируется управляющее ядро комплекса программ и программы решения функциональных задач, размещенных на высших иерархических уровнях. К ним постепенно подключаются для тестирования программы последующих более низких иерархических уровней. Преимуществом такого метода является возможность сохранения и развития наборов тестовых данных по мере подключения программ нижних уровней. На практике обычно используются три стратегии тестирования: 1) Тестирование программ как "Чёрного ящика ". Имеет цель выяснения обстоятельств, в которых поведение программ не соответствует спецификации. Тестовые данные составляются и используются без учета знаний о внутренней структуре программы. 2) Тестирование программ как "Белого ящика ". Тестовые наборы данных проектируются на основе внутренней логики программы. Цель тестирования - проверить каждую ветвь, каждый путь и каждый оператор. Спецификация программы при этом не используется. 3) Реальная стратегия обычно сочетает оба метода. При помощи метода "чёрного ящика" делается: V Проверка в нормальных условиях. V Анализ граничных значений. V Проверка в исключительных ситуациях. V Предположение об ошибке. При помощи метода "Белого ящика" делается: V Покрытие операторов. V Покрытие решений. V Покрытие условий. 7.2. Результаты тестирования При тестировании программы был использован восходящий метод тестирования. С помощью этого метода сначала были протестированы отдельные модули программы, а затем и вся программа. Результаты тестирования показаны на рисунке Приложения. Тестирование системы включало в себя: - тестирование ввода различных набора данных; - получение комбинаций для кода с любым образующим многочленом; Тестирование ввода различных наборов кодовых комбинаций не показало ни одной исключающей ситуации. ВЫВОДЫ. В данной главе был выбран метод тестирования системы. В результате тестирования были обнаружены ошибки, которые впоследствии были устранены. В результате тестирования было получено, что программа является работоспособной. Программа правильно находит образующую матрицу и строит код Файра.. 8. Ограничения на разработку. Для выполнения программы необходимо соблюдать некоторые требования, а именно: 1) Программа может работать на персональных компьютерах с процессором не ниже 80486 . 2) Для реализации интерфейса необходимо иметь цветной монитор с адаптером не ниже VGA. 3) RAM не ниже 8MB. 4) Windows 95/98/NT 8.1. Инструкция пользователю. В программе разработан интерфейс, подходящий под стандарты. Интерфейс реализован в графическом режиме. Меню горизонтальное, с выпадающими окнами. Главное окно программы изображено на рис.. Приложения 2. Главное меню программы содержит следующие пункты: 1. О программе - дана краткая аннотация выполненной программы. 2. Работа - содержит подменю с пунктами: 1. Ввод - позволяет пользователю ввод соответствующих данных. Здесь предусмотрена защита от некорректного ввода. В этом пункте можно ввести любую информационную комбинацию. 2. Вывод - выполняется алгоритм построения образующей матрицы, с последующем выводом ее на экран. 3. Выход - обеспечивает выход из программы. Используется защита от случайного выхода. Пункты меню активизируются нажатием клавиши . При появления каждого окна в строке статуса появляется сообщение о возможных действиях. Передвижение по меню осуществляется клавишами перемещения курсора на клавиатуре. Также используется "горячая клавиша" Esc. При нажатии на неё происходит автоматический выход из программы. Заключение В данной работе был рассмотрен один из множества методов кодирования. Достоинство данного метода в том, что он может находить исправлять пачки ошибок. Также все циклические коды легко поддаются схемной реализации. Все элементы принципиальной схемы имеют серии К155 или К55. Это одни из самых распространенных и довольно не дорогих отечественных микросхем, легко доступная любому пользователю. Программа реализована на языке Turbo Pascal 7.0. Это наиболее распространенный на сегодняшний день язык программирования. Поэтому в программе разобраться трудностей не будет. Кодирование информации наиболее актуальна в наши дни в связи с развитием компьютерных сетей. Необходимо передавать информацию быстро и точную. Программа тестировалась восходящим методом. С помощью этого метода сначала были протестированы отдельные модули программы, а затем и вся программа. Проведено тестирование программы необходимое для проверки работоспособности программы, которое показало, что программа устойчиво работает на все режимах работы и выполняет поставленную задачу. Программа является универсальной и может быть усовершенствована любым пользователем, разбирающимся в языке программирования Pascal 7.0 . Дана общая модульная структура программа, которая может помочь ползо- вателю разобраться в общей структуре программы и усовершенствовать программу. Список литературы. 1. Тёмников Ф. Е.. Теоретические основы информационной техники: Учеб.пособие для вузов-2-е изд., перераб. и доп.-М.:Энергия, 1979.- 512 с., ил. 2. Липаев В.В. Тестирование программ.- М.: Радио и связь,1986. - 296 с.: ил. 3. Тутевич В. Н. Телемеханика: Учеб.пособие для студентов вузов спец. “Автоматика и телемеханика”-2-е изд., перераб. и доп.-М.: Высш. Шк., 1985.- 423 с., ил. 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_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(i2)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(' АКТИВАЦИЯ ПУНКТА МЕНЮ.'); 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. Экранные формы. | ----------------------- M2 M2 M2 M2 1 2 К1 Вход Выход К2 g0 g1 gn-k-1 g2 Обработка ошибок Модуль вывода Рис. 5.3 . Триггер К555 ТВ6. [pic] Рис.5.2 Счетчик К555 ИЕ10. [pic] Рис. 5.1. Принципиальная схема генератора. [pic] [pic] Г Кодер Счетчик =H0 + H1X + ... + HkXk H(X)= G(X) xn+1 Основная программа Модуль ввода Интерфейс Страницы: 1, 2 |
|
|||||||||||||||||||||||||||||
|
Рефераты бесплатно, реферат бесплатно, сочинения, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |