Курсовая работа: Проект электронных весов с микропроцессорным управлением
Рис. 11. Схема электрическая принципиальная
Теперь рассмотрим индикатор:
Табл. 3. Распиновка индикатора
Описание | Вывод |
4A | 21 |
4B | 20 |
4C | 19 |
4D | 18 |
4E | 17 |
4F | 22 |
4G | 23 |
3A | 25 |
3B | 24 |
3C | 15 |
3D | 14 |
3E | 13 |
3F | 26 |
3G | 27 |
2A | 30 |
2B | 29 |
2C | 11 |
2D | 10 |
2E | 9 |
2F | 31 |
2G | 32 |
DP3 | 16 |
1A | 35 |
1B | 34 |
1C | 7 |
1D | 6 |
1E | 5 |
1F | 36 |
1G | 37 |
4. Разработка алгоритма
Алгоритм работы электронных весов должен быть следующим:
Подготовка АЦП – настройка АЦП (номер канала AN1..AN7, режим работы: стандартный или точный, прерывания), старт преобразования.
Считывание данных с АЦП. Преобразованное число хранится в регистрах ADDH и ADDL (старший и младший байты соответственно)
Преобразование кода младшего разряда в код семисегментного индикатора. Так как по техническому заданию необходимо обеспечить точность 0,5 кг., младший разряд (десятые) будет принимать значения “0” или “5”. Код, который нужно преобразовать находится в двух младших разрядах ADDL.
Вывод младшего разряда. Выводим преобразованное число на порт P3, т.е. на -1-й разряд индикатора.
Преобразование кода остальных разрядов в двоично-десятичный код. То есть преобразование двоичного восьмиразрядного числа в двоично-десятичное (число, в котором каждая десятичная цифра представлена четырьмя битами).
Преобразование кода остальных разрядов в код семисегментного индикатора. Каждая цифра двоично-десятичного должна быть представлена семиразрядным эквивалентом, для последующего вывода на индикатор.
Вывод остальных разрядов. Вывод 2-го, 1-го и 0-го разрядов на индикатор.
Переход на пункт 4.2 и повторение алгоритма.
Блок-схема алгоритма имеет следующий вид:
Рис. 12. Блок-схема алгоритма
5. Построение программы
Настройка АЦП заключается в записи данных в соответствующие регистры (согласно [11]). Регистр ADCF (конфигурация АЦП):
Табл. 4. Регистр ADCF
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CH7 | CH6 | CH5 | CH4 | CH3 | CH2 | CH1 | СH0 |
Номер бита | Название бита | Описание | |||||
7-0 | CH 0:7 | При установленном бите P1.x используется в качестве входа АЦП, при сброшенном бите P1.x используется в качестве стандартного порта ввода/вывода. |
В данном регистре установим бит 7, т.к. будем использовать P1.7 в качестве входа АЦП.
Регистр IEN0 (регистр прерываний):
Табл.5 Регистр IEN0
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
EA | EC | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
Номер бита | Название бита | Описание | |||||
7 | EA | Разрешение всех прерываний | |||||
6 | EC | Разрешение прерывания от PCA | |||||
5 | ET2 | Разрешение прерывания от таймера 2 | |||||
4 | ES | Разрешение прерывания от UART | |||||
3 | ET1 | Разрешение прерывания от таймера 1 | |||||
2 | EX1 | Разрешение внешнего прерывания INT1 | |||||
1 | ET0 | Разрешение прерывания от таймера 2 | |||||
0 | EX0 | Разрешение внешнего прерывания INT2 |
В данном регистре установим бит 7, разрешив этим самым все прерывания.
Регистр IEN1 (регистр прерываний):
Табл.6 Регистр IEN1
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | - | - | - | - | EADC | - |
Номер бита | Название бита | Описание | |||||
7-2 | - | Зарезервировано. Эти биты нельзя устанавливать | |||||
1 | EADC | Разрешение прерывания от АЦП | |||||
0 | - | Зарезервировано. Этот бит нельзя устанавливать |
В данном регистре установим бит 1, разрешив этим самым прерывание от АЦП.
Регистр ADCON (регистр управления АЦП):
Табл.6 Регистр ADCON
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | PSIDLE | ADEN | ADEOC | ADSST | SCH2 | SCH1 | SCH0 |
Номер бита | Название бита | Описание | |||||
6 | PSIDLE | Режим псевдо холостого хода | |||||
5 | ADEN | Включение АЦП | |||||
4 | ADEOC | Преобразование завершено | |||||
3 | ADSST | Старт преобразования | |||||
2 | SCH2 | Выбор аналогового входа | |||||
1 | SCH1 | ||||||
0 | SCH0 |