Курсовая работа: Проект электронных весов с микропроцессорным управлением
После завершения преобразования сработает прерывание от АЦП и контроллер выйдет из режима холостого хода, и нужно будет переписать преобразованное число из регистров ADDH и ADDL в регистры R2 и R1.
Теперь необходимо преобразовать -1-й разряд числа в семисегментный код и вывести на P3 (-1-й разряд хранится в двух младших битах младшего байта числа)
Табл. 7. Таблица преобразования -1-го разряда.
Двоичный код | Семисегментный код |
00 | 01101101 (5) |
01 | 01101101 (5) |
10 | 01111110 (0) |
11 | 01111110 (0) |
Необходимо сдвинуть 2 старших разряда числа (находящихся в R2) в R1, а два младших разряда убрать, т.к. они уже выведены на индикатор. Это можно сделать два раза сдвинув вправо через флаг переноса регистры R2 и R1, т.к. операцию сдвига можно осуществлять только над аккумулятором, предварительно запишем в него содержимое регистров R2 и R1. Весь алгоритм будет выглядеть следующим образом:
Записать содержимое R2 в аккумулятор,
Сдвинуть аккумулятор на один бит вправо,
Записать содержимое аккумулятора в R2,
Записать содержимое R1 в аккумулятор,
Сдвинуть аккумулятор на один бит вправо,
Записать содержимое аккумулятора в R1,
Записать содержимое R2 в аккумулятор,
Сдвинуть аккумулятор на один бит вправо,
Записать содержимое аккумулятора в R2,
Записать содержимое R1 в аккумулятор,
Сдвинуть аккумулятор на один бит вправо,
Записать содержимое аккумулятора в R1;
Теперь необходимо преобразовать код остальных разрядов в двоично-десятичный код, что согласно [12] делается следующим образом:
Делим исходное число на 10, остатком от деления будет двоично-десятичный код 0-го разряда.
Результат деления снова делим на 10, остатком от деления будет двоично-десятичный код 1-го разряда.
Результат деления снова делим на 10, остатком от деления будет двоично-десятичный код 2-го разряда.
Двоично-десятичный код запомним в регистрах R4, R3, R2, теперь его нужно преобразовать в код семисегментного индикатора, для этого будем использовать подпрограмму PR, предварительно записав преобразуемое число в стек, после вызова PR в стеке будет содержаться уже преобразованное число. Преобразование будет осуществляться методом простого перебора всех вариантов.
Табл. 8. Таблица преобразования в семисегментный код
Десятичный код | Двоично-десятичный код | Код семисегментного индикатора |
0 | 0000 | 01111110 |
1 | 0001 | 00000110 |
2 | 0010 | 01011011 |
3 | 0011 | 01001111 |
4 | 0100 | 01100110 |
5 | 0101 | 01101101 |
6 | 0110 | 01111101 |
7 | 0111 | 00000111 |
8 | 1000 | 01111111 |
9 | 1001 | 01101111 |
После вызова подпрограммы PR, считываем данные из стека и выводим их на соответствующий порт, также необходимо вывести десятичную точку P2.7.
Заключение
В результате проделанной работы были разработаны электронные весы с диапазоном измерения от 0 до 250 килограмм, с точностью измерения 500 грамм, с микропроцессорным управлением. Точность измерения не зависит от положения объекта на весах. Габаритные размеры весов 5000x5000 мм. Электронные весы работают от источника напряжения 5 В. Потребляемая мощность – 1,05 Вт. Потребляемый ток – 210 мА
Список использованных источников
1 www.gaw.ru/html/cgi/txt/pub/sensor/index.html
2 dmp330h.pdf – Техническая документация к датчику давления DMP330H.
3 dmp331.pdf – Техническая документация к датчику давления DMP331.