Курсовая работа: Проект электронных весов с микропроцессорным управлением

После завершения преобразования сработает прерывание от АЦП и контроллер выйдет из режима холостого хода, и нужно будет переписать преобразованное число из регистров 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.

К-во Просмотров: 639
Бесплатно скачать Курсовая работа: Проект электронных весов с микропроцессорным управлением