Разработка цифрового спидометра для ГИБДД

–PAGE_BREAK–
5  Разработка управляющей программы
5.1 Схема алгоритма
       Схема алгоритма работы управляющей программы изображена на рисунке 5.1. После подачи сигнала сброса SR производится настройка портов P1 и P2 на вывод информации, осуществляется загрузка регистров R1-R0 первого банка регистров общего назначения микроконтроллера (РОН) инверсным двоично-десятичным числом максимально допустимой скорости, набранным на портах P6,P5,P4. После сброса на линии P7.0 (фотосъёмка) окажется неактивный единичный уровень.

Рисунок 5.1 — Схема алгоритма управляющей программы
Затем микроконтроллер переходит в состояние ожидания импульса на своём входе T0 (см. рисунок 5.1). После его появления осуществляется подготовка РОНов используемого нулевого банка. Далее, дождавшись нулевого уровня импульса, микроконтроллер осуществляет измерение Fдоп, то есть определение числа импульсов “генератора” тактовых импульсов с фиксированным периодом следования. ”Генератор” тактов основан на использовании временной задержки на время t = 0.27 мс. Подсчёт количества таких импульсов проводится в течении всей длительности нулевого уровня T0. Далее, в соответствии с подсчитанным числом N определяется скорость, при этом деление выполняется методом подсчёта количества сложений числа N до превышения суммой (S) числа . Затем найденная скорость выводится на индикаторы.
Вычисленная на предыдущем этапе работы программы скорость сравнивается с максимально допустимой скоростью. В случае превышения скорости микроконтроллер ждёт появления на входе T1 импульса (нулевого уровня при срабатывании фотодатчика) и коммутирует его на линию P7.0, при этом производится фотосъёмка автомашины.
Если скорость не превышена (или после фотосъёмки), работа программы повторяется с момента ожидания микроконтроллером импульсов на входе T0.
5.2 Пояснения к программе
       Листинг управляющей программы приведён в приложении А. Программа организована в виде нескольких подпрограмм как законченных функциональных модулей, это существенно улучшает восприятие текста программы при чтении. Основная программа осуществляет инициализацию, подготовку РОНов, вывод скорости в порты P4,P5,P6 для индикации, сравнение найденной скорости с максимальной путём побайтного сложения значения скорости с инверсным значением максимальной скорости и отслеживания признака переноса. Подпрограмма N осуществляет подсчёт числа N по нулевому уровню. Подпрограмма Y подсчитывает по заданному N число Y на протяжении единичного уровня импульса. Подпрограмме PHOTO передаётся управление, если полученная скорость больше максимально допустимой. Все вычисления производятся с использованием двоично-десятичного представления N(R1,R0) и Y(R6,R5). При этом переменные N и Y имеют двухбайтовый формат, то есть хранятся в двух РОНах. Накопитель S, использующийся при выполнении операции деления, имеет трёхбайтовый формат и хранится в РОНах R4,R3,R2. Сложение числа N в накопителе идёт до тех пор, пока в пятом бите старшего регистра S (R4) не появится 1, что соответствует числу (если все остальные биты — 0).
Определим значение константы Z, которая загружается в регистр R7 для реализации фиксированной временной задержки t = 0.27 мс: мс,
2.5 мкс — время одного машинного цикла при подключении кварца частоты 6 МГц;
14 — число машинных циклов выполнения команд подпрограммы N, которые надо учесть наряду с основной задержкой в счётчике R7.
Отсюда Z=47=2Fh.
Отметим, что для реализации вычислений задействованы десять РОНов, аккумулятор и одна ячейка стека микроконтроллера. Основные преобразования реализуются в аккумуляторе с использованием команд сложения и десятичной коррекции. Многобайтовые переменные формируются путём последовательного преобразования отдельных байтов.

6  Заключение
         Микропроцессоры и микропроцессорные системы являются основой построения электронных устройств с заданными функциональными свойствами. Решающими факторами при проектировании таких устройств являются удобство практической эксплуатации и новый набор      — качественных характеристик (более высокое быстродействие, точность, новые функциональные возможности) по сравнению с домикропроцессорным вариантом реализации подобного устройства.
Реализация электронного устройства в данном курсовом проекте — цифрового радара ГИБДД — на однокристальном микроконтроллере серии МК48 К1830ВЕ35 оказалась самым экономичным вариантом.
Такого типа радары широко используются органами ГАИ для измерения и контроля скорости движущихся автомобилей. Полезной возможностью является выбор варианта исполнения цифрового радара. В передвижном варианте необходимыми частями устройства являются РЛУ и микропроцессорная часть. В стационарном варианте в комплект, кроме того, входят фотодатчик и фотосъёмочная аппаратура. В таком варианте изделие функционирует автономно и не требует постоянного вмешательства человека.
Данный курсовой проект позволил сделать серьёзные упражнения в применении знаний, полученных в процессе изучения дисциплины “Микропроцессорные устройства и системы”.

Список литературы
1     ОС ТАСУР 6.1-97. Работы студенческие учебные и выпускные квалификационные. Общие требования и правила оформления.
2     Шарапов А. В. Микропроцессорные устройства и системы. Методические указания к выполнению курсового проекта. — Томск: ТУСУР, 1998. — 39 с.
3     Шарапов А. В. Примеры решения схемотехнических задач. Учебное пособие. — Томск: ТИАСУР, 1994. — 141 с.
4     Шарапов А. В. Цифровая и микропроцессорная техника: Учебное пособие. 2-е изд., перер. и доп. — Томск: Изд-во Том. Ун-та, 1997. — 108 с.
5     Токхайм Р. Микропроцессоры: Курс и упражнения/ Пер. С англ., под ред. В. Н. Грасевича. — М.: Энергоатомиздат, 1988. — 336 с.
6     Белоцерковский Г. Б. Основы радиолокации и радиолокационные устройства. М.: Сов. Радио, 1975. — 336 с.

Приложение А
Листинг управляющей программы
Основная программа:
1       0000           99 00          MAIN:  ANL           P1,#00H       ;           üПогасить индикаторы и
2       0002           9A 0F                       ANL           P2,#0FH      ;           þподготовить порты к выводу.
3       0004           D5                            SEL            RB1 ;           ü
4       0005           0E              MOVD A,P6          ; ½
5       0006           03 F0                        ADD          A,#0F0H      ;           ½
6       0008           A9                            MOV          R1,A            ;           ½Считать в регистры R0-R1
7       0009           0D                            MOVD       A,P5 ;           ýпервого банка РОНов инверсное
8       000A          47              SWAP   A                  ;  ½двоично-десятичное значение
9       000B          A8                            MOV          R0,A            ;           ½максимальной скорости.
10     000C          0C                            MOVD       A,P4 ;           ½
11     000D          68              ADD     A,R0             ;  ½
12     000E           A8                            MOV          R0,A            ;           ½
13     000F           C5                            SEL            RB0; þ
14     0010           26 10          M1:        JNT0          $      ; Ожидание появления импульса.
15     0012           27              CLR      A                  ;      ü
16     0013           A8                            MOV          R0,A            ;           ú
17     0014           A9                            MOV          R1,A            ;           úПодготовка регистров
18     0015           AA                           MOV          R2,A            ;           ý к вычислениям.
19     0016           AB                           MOV          R3,A            ;           ú
20     0017           AC                           MOV          R4,A            ;           ú
21     0018           AE                            MOV          R6,A            ;           ú
22     0019           BD 05                      MOV          R5,#05H      ;           þ
23     001B          36 1B                       JT0             $      ; Ожидание нулевого уровня T0.
24     001D          14 42                        CALL        N     ; Вычисление числа N=(R1,R0).
25     001F           14 53                        CALL        Y     ; Вычисление Y»10×Vа=(R6,R5).
26     0021           FD                            MOV          A,R5            ;           ü
27     0022           47              SWAP   A                  ;      ýПоместить в R5 младшую 
28     0023           53 0F                        ANL           A,#0FH        ;           úцифру значения скорости.
29     0025           AD                           MOV          R5,A            ;           þ
30     0026           FE                            MOV          A,R6            ;           ü
31     0027           47              SWAP   A                  ;      úВ R5 две младшие цифры
32     0028           53 F0                        ANL           A,#0F0H     ; ýзначения скорости.
33     002A          6D                            ADD          A,R5            ;           þ         
34     002B          AD                           MOV          R5,A            ;           Вывести младшие цифры
35     002C          39              OUTL   P1,A            ; скорости на индикаторы.
36     002D          FE                            MOV          A,R6            ;           üВыделить в старшем полубайте 
37     002E           53 F0                        ANL           A,#0F0H      ;           þR6 старшую цифру скорости.
38     0030           3A                            OUTL        P2,A; Старшую цифру на индикатор.
39     0031           47               SWAP   A                  ;      üВ R6 старшая цифра
40     0032           AE                            MOV          R6,A           ; þзначения скорости.
41     0033           D5                            SEL            RB1 ;           üСравнить старшие цифры
42     0034           69              ADD     A,R1             ;      ýVа и Vа.max и перейти на M0,
43     0035           C5                            SEL            RB0 ;           úесли Vа>Vа.max.
44     0036           F6 3E                       JC               M0   ;           þ
45     0038           FD                            MOV          A,R5            ;           ü
46     0039           D5                            SEL            RB1 ;           ú Сравнить младшие цифры47             003A   68              ADD          A,R0                       ; ý Vа и Vа.max и перейти на N0,
48     003B          C5                            SEL            RB0 ;           ú если Vа
49     003C          E6 40                        JNC            N0    ;           þ
50     003E           14 6F          M0:        CALL        PHOTO       ;           Фотосъёмка.
51     0040           04 10          N0:        JMP            M1  ; Повторить основную программу.
Подпрограмма измерения Tдоп(вычисления N):
52     0042           28               N:          XCH          A,R0           ; ü
53     0043           03 01                        ADD          A,#01H       ; ú
54     0045           57              DA        A                 ; ú
55     0046           28              XCH     A,R0            ; ýИнкрементирование накопителя
56     0047           29              XCH     A,R1            ; úN=(R1,R0).
57     0048           13 00                        ADDC       A,#00H       ; ú
58     004A          57              DA        A                 ; ú
59     004B          29              XCH     A,R1            ; þ
60     004C          BF 2F                       MOV          R7,#2FH     ; üВременная задержка 0.17 мс.
61     004E           EF 4E                       DJNZ         R7,$; þ
62     0050           26 42                        JNT0          N     ; Пока на T0 нулевой уровень.
63     0052           83              RET                           ; Выход из подпрограммы.
Подпрограмма вычисления Y»10×Vа=(R6,R5).
64     0053           2A              Y:          XCH          A,R2            ;           ü
65     0054           68              ADD     A,R0             ;      ú          
66     0055           57              DA        A                  ;      ú
67     0056           2A                            XCH          A,R2            ;           úФормирование S в двоично-
68     0057           2B                            XCH          A,R3            ;           ýдесятичном накопителе
69     0058           79              ADDC A,R1             ;      ú(R4,R3,R2).
70     0059           57              DA        A                  ;      ú
71     005A          2B                            XCH          A,R3            ;           ú
72     005B          2C                            XCH          A,R4            ;           ú
73     005C          13 00                        ADDC       A,#00H        ;           ú
74     005E           57              DA        A                  ;      ú
75     005F           B2 6E                       JB5             M2  ; úЗакончить сложение N c S,
76     0061           2C                            XCH          A,R4           ; þесли S>=200000.
77     0062           2D                            XCH          A,R5           ; ü
78     0063           03 01                        ADD          A,#01H       ; ú
79     0065           57              DA        A                 ; ú
80     0066           2D                            XCH          A,R5           ; úФормирование Y в двоично-
81     0067           2E              XCH     A,R6         ; ýдесятичном накопителе
82     0068           13 00                        ADDC       A,#00H       ; ú(R6,R5)
83     006A          57              DA        A                 ; ú
84     006B          2E              XCH     A,R6         ; þ
85     006C          04 53                        JMP            Y     ; Продолжить вычисление Y.
86     006E           83               M2:        RET             ; Выход из подпрограммы.
Подпрограмма управления фотосъёмкой:
87     006F           56 6F          PHOTO:                   JT1   $         ; Ожидание импульса фотодатчика.
88     0071           23 FE                       MOV          A,#FEH      ; üВывод 0 в линию P7.0.
89     0073           9F              ANLD   P7,A            ; þ
90     0074           46 74                        JNT1          $      ; Ожидание конца импульса.          
91     0076           23 01                        MOV          A,#01H       ; üВывод 1 в линию P7.0.
92     0078           8F              ORLD   P7,A            ; þ
93     0079           83              RET                           ; Выход из подпрограммы.

Приложение Б
Карта прошивки памяти программ
                            0:    1:    2:    3:    4:    5:    6:    7:    8:    9:    A:   B:   C:    D:   E:      F:
              0000:     99   00   9A 0F   D5 0E   03   F0   A9 0D 47   A8 0C   68   A8     C5
              0010:     26   10   27   A8 A9 AA        AB AC         AE BD 05   36   1B     14        42             14
              0020:     53   FD 47   53   0F   AD        FE   47   53   F0   6D  AD 39   FE     53        F0
              0030:     3A  47   AE  D5 69   C5 F6   3E   FD D5 68   C5 E6   40   14      6F
              0040:     04   10   28   03   01   57   28   29   13   00   57   29   BF 2F   EF     4E
              0050:     26   42   83   2A 68   57   2A 2B   79   57   2B 2C 13   00   57      B2
    продолжение
–PAGE_BREAK–