• RU
  • icon На проверке: 4
Меню

Микропроцессорная система с терморезистором и АЦП

  • Добавлен: 26.04.2026
  • Размер: 5 MB
  • Закачек: 0

Описание

Микропроцессорная система с терморезистором и АЦП

Состав проекта

icon
icon Графическая часть (2).dwg
icon Графическая часть.dwg
icon plot.log
icon Графическая часть.bak
icon Пояснительная записка МПС.doc
icon DATCHIK.c
icon Графическая часть (2).bak
icon zapiska MPSDorabotannay.doc
Материал представляет собой zip архив с файлами, которые открываются в программах:
  • AutoCAD или DWG TrueView
  • Microsoft Word

Дополнительная информация

Контент чертежей

icon Графическая часть (2).dwg

Графическая часть (2).dwg
Белорусско-Российский nуниверситет гр. АЭП-092
Алгоритм работы системы
Функциональная схема микропроцессорной системы
Микропроцессорная система.nСхема электрическая принципиальная
Микропроцессорная система.nДокументы прочие
Начало прерывания от Т1
Установить таймер Т0
Конец прерывания от Т1
Начало прерывания от INT1
Конец прерывания от INT1
Алгоритмы обработки прерываний
Начало прерывания от INT0
Конец прерывания от INT0
Записьnимпульсов в минуту
ИнициализацияnУстанавливаем нужное состояние портов
Настройка таймера 1 счетчика 0 прерываний и преорететов прерываний
Перевод курсора в верхнюю строку нуливое состояние
Вывод надписи : Kirienko S4et4ik
Подсчет общего колличества импульсов
Перевод курсора в строку 2 поз. 8 для вывода значений импульсов или скорости
VAR==1?nПроверка кнопок
Расчет колличество импульсов
Расчет импульсов в минуту
Обработка вывода на МЖКИ

icon Графическая часть.dwg

Графическая часть.dwg
Белорусско-Российский nуниверситет гр. АЭП-091
Алгоритм выполнения программы
Функциональная схема микропроцессорной системы
Микропроцессорная система.nСхема электрическая принципиальная
Микропроцессорная система.nДокументы прочие
Начало прерывания от Т0
Установить таймер Т0
Конец прерывания от Т0
Начало прерывания от INT1
Конец прерывания от INT1
Алгоритмы обработки прерываний
Начало прерывания от INT0
Конец прерывания от INT0
ИнициализацияnУстанавливаем порты в исходное состаяние
Настройка таймераnна режим 1 устанавливаем время 50 мс разрешаем прерывания.
Проверка нажатых кнопокn60H=1?
Расчет мгновенного значения температуры
Превышает граничные значения ?
Обработка данных для вывода на ССИ
Формирование слова ЕPP
Расчет среднесуточного значения температуры
Микропроцессорная системаnПеречень элементов
Белорусско-Российскийnуниверситет гр.АЭП-091
Конденсатор К73-9-10В-30пФ±5%
Микросхема микроконтроллер AT89C51
Индикотор семисегментный ALS-318
Резонатор кварцевый HC-49U
Резисторы ОЖО.467.180ТУ
Конденсатор К73-9-10В-0.1мкФ±5%
Микросхема АЦП АD 1674
Микротумблер MTS-101-F1

icon Пояснительная записка МПС.doc

Разработка функциональной схемы системы 5
1 Описание принципа работы объекта 5
2 Функциональная схема микропроцессорной системы 7
Разработка аппаратной части системы 9
1 Краткое описание микропроцессорного комплекта 9
2 Организация памяти микропроцессорной системы 21
3 Расчет и выбор элементов сопряжения 23
3.1 Выбор терморезистора и элементов схемы сопряжения его с АЦП. 23
3.3 Выбор индикатора и элементов сопряжения с ним 24
3.5 Выбор конденсаторов 25
4 Описание схемы электрической принципиальной 26
Разработка программного обеспечения системы 27
1 Краткое описание системы команд микроконтроллера 27
2 Описание общего алгоритма работы системы 32
3 Описание алгоритма решения задачи 33
Список использованной литературы 36
В связи с ростом вычислительной мощности микропроцессоров появилась
возможность использовать эти универсальные устройства в различных областях
Согласно заданию необходимо разработать датчик температуры на основе
микропроцессорного комплекта MCS-51 был выбран контроллер этого семейства
AT89C51. Тип датчика – терморезистор.
Данный датчик должен снимать мгновенные значения температуры а так
же на основе полученных значений высчитывать среднесуточные значения
температуры также должен выводить предупреждение при превышении диапазона
температуры. Данное устройство должно выводить числовую информацию на
семисегментный индикатор (ССИ). В устройстве будет три кнопки: кнопка
включенияотключения кнопка показаний среднесуточной температуры кнопка
показаний мгновенных значений. После включения устройство будет работать в
режиме показания мгновенного значения температуры. Диапазон температур: -50
÷ 100 С . Точность устройства будет ± 2 С . Точность можно увеличить
если усовершенствовать программный код.
Разработка функциональной схемы системы
Описание принципа работы объекта
В данном курсовом проекте необходимо использовать в качестве
датчика температуры терморезистор по-другому его называют
термопреобразователь сопротивления. Принцип действия их основан на том
что все проводники и полупроводники имеют температурный коэффициент
сопротивления сокращенно ТКС. Это примерно то - же что и известный всем
коэффициент температурного расширения: при нагревании тела расширяются.
Следует заметить что все металлы обладают положительным ТКС.
Другими словами электрическое сопротивление проводника увеличивается при
возрастании температуры. Здесь можно вспомнить тот факт что лампы
накаливания перегорают чаще всего в момент включения пока спираль холодная
и сопротивление ее невелико. Отсюда и повышенный ток при включении.
Полупроводники имеют отрицательный ТКС при увеличении температуры их
сопротивление уменьшается в отличии от проводников.
То есть в качестве датчика будет использоваться резистор с переменным
в зависимости от температуры сопротивлением. Каждому терморезистору будет
соответствовать своя таблица сопротивлений. Таблица сопротивлений – таблица
значений сопротивления терморезистора в зависимости от его температуры.
Для измерения изменяющегося сопротивления терморезисторов
используется большое количество схемотехнических решений. В данном проекте
будет использоваться делитель напряжения представленный на рисунке 1
Рисунок 1 – делитель напряжения
Для снятия значений напряжения используют специальные устройства
для преобразования аналогового сигнала в цифровой код. Такие устройства
называются АЦП(Аналогово-цифровой преобразователь).
2 Функциональная схема микропроцессорной системы
Функциональная схема системы приведена на рисунке 2 и в графической
В данной схеме можно выделить следующие блоки:
датчик температуры (ДТ) – изменяет значения сопротивления в зависимости от
блок согласования (БС) – служит для связи датчика температуры с
микропроцессорным устройством;
блок ввода аналогового сигнала (БВА) – преобразует аналоговые значения
поступающие с датчика в цифровые;
блок расчета температуры (БРТ) – служит для расчета температуры в
соответствии с таблицей сопротивления датчика;
блок расчета среднесуточной температуры (БРСТ) –служит для расчета
среднесуточной температуры;
блок обработки индикации (БОИ) – служит для подготовки вывода информации на
индикатор (ИНД) – служит для визуализации информвции ;
таймер (Т) – служит для отсчетов промежутков времени;
блок обработки клавиатуры (БОК) – служит для подготовки ввода информации с
клавиатура (К) – служит для ввода информации в микропроцессорную систему.
Рисунок 2 – функциональная схема микропроцессорной системы
Разработка аппаратной части системы
1 Краткое описание микропроцессорного комплекта
В данном проекте используется 8-разрядный КМОП микроконтроллер с
- Совместимость с приборами семейства MCS-51TM
- Емкость перепрограммируемой Flash памяти: 4 Кбайт 1000 циклов
- Напряжение питания 5±20% B
- Полностью статический прибор - диапазон рабочих частот от 0 Гц до 24
- Группы по частотам: 12 МГц 16 МГц 20 Мгц и 24 Мгц
- Трехуровневая блокировка памяти программ
СОЗУ емкостью 128 байтов
- 32 программируемых линий вводавывода
- Два 16-разрядных таймерасчетчика событий
- Шесть источников сигналов прерывания
- Программируемый последовательный канал UART
- Пассивний (idle) и стоповый (power down) режимы
- Промышленный (-40°С 85°C) коммерческий (0°C 70°C) диапазоны
КМОП микроконтроллер АТ89С51 оснащенный Flash программируемым и
стираемым ПЗУ совместим по системе команд и по выводам со стандартными
приборами семейства MCS-51TM. Микроконтроллер содержит 4 Кбайта Flash ПЗУ
8 байтов ОЗУ 32 программируемых линий вводавывода два 16-разрядных
таймерасчетчика событий полнодуплексный последовательный порт (UART)
пять векторных двухуровневых прерывания встроенный генератор и схему
формирования тактовой последовательности.
Существуют два варианта микроконтроллеров АТ89С51: с возможностью
внутрисистемного программирования с использованием при программировании
напряжения 5 В и программирование с использованием напряжения 12 В
применяемого в большинстве программаторов.
Содержимое Flash памяти программ может быть защищено от
несанкционированной записисчитывания. Имеется возможность очистки Flash
памяти за одну операцию возможность считывания встроенного кода
Потребление в активном режиме на частоте 12 Мгц не превышает 20
мА и в пассивном режиме при котором остановлено ЦПУ но система
прерываний ОЗУ таймерысчетчики событий и последовательный порт остаются
активными потребление не превышает 5 мА. В стоповом режиме потребление не
превышает 100 мкА и 20 мкА при напряжении питания 6 В и 3 В
Микроконтроллер АТ89С51 ориентирован на использование в качестве
встроенного управляющего контроллера.
Структурная схема контроллера приведена на рисунке 3.
Рисунок 3 – структурная схема контроллера AT89C51
В данной схеме представлены следующие блоки:
PORT 0123 – соответственно четыре 8-разрядных порта МК;
DPTRPSW - регистры специальных функций;
PC INCREMENTER – счетчик команд;
PROGRAM ADDRESS REGISTER – регистр адреса программ;
STACK – стек служит для временного хранения данных;
B – регистр служащий расширителем аккумулятора;
RAM – память стираемая после выключения устройства(ОЗУ);
Flash – память программ из которой контроллер считывает программу
после включения (ПЗУ);
ALU – арифметическо-логическое устройство осуществляет
арифметические и логические операции;
INTERRUPT PORT – блол отвечающий за работу прерываний от пяти
источников(входы int0 int1 таймеры-счетчики СТ0 СТ1 и от
последовательного интерфейса).
Распишем более подробно работу некоторых блоков используемых в
Упрощенная схема прерываний показана на рисунке 4:
Рисунок 4 – упрощенная схема прерываний.
Внешние прерывания INT0 и INT1 могут быть вызваны либо уровнем
либо переходом сигнала из 1 в 0 на входах МК51 в зависимости от значений
управляющих бит IT0 и IT1 в регистре TCON. От внешних прерываний
устанавливаются флаги IE0 и IE1 в регистре TCON которые инициируют вызов
соответствующей подпрограммы обслуживания прерывания. Сброс этих флагов
выполняется аппаратурно только в том случае если прерывание было вызвано
по переходу (срезу) сигнала. Если же прерывание вызвано уровнем входного
сигнала то сбросом флага IE управляет соответствующая подпрограмма
обслуживания прерывания путем воздействия на источник прерывания с целью
Флаги запросов прерывания от таймеров TF0 и TF1 сбрасываются
автоматически при передаче управления подпрограмме обслуживания. Флаги
запросов прерывания RI и ТI устанавливаются блоком управления УАПП
аппаратурно но сбрасываться должны программой.
Прерывания могут быть вызваны или отменены программой так как все
перечисленные флаги программно-доступны и могут быть установленысброшены
программой с тем же результатом как если бы они были установленысброшены
аппаратурными средствами
В блоке регистров специальных функций есть два регистра
предназначенных для управления режимом прерываний и уровнями приоритета.
Возможность программной установкисброса любого управляющего бита в этих
двух регистрах делает систему прерываний МК51 исключительно гибкой.
Флаги прерываний опрашиваются в момент S5P2 каждого машинного
цикла. Ранжирование прерываний по уровню приоритета выполняется в течение
следующего машинного цикла. Система прерываний сформирует аппаратурно вызов
(LCALL) соответствующей подпрограммы обслуживания если она не
заблокирована одним из следующих условий:
) в данный момент обслуживается запрос прерывания равного или более
высокого уровня приоритета;
) текущий машинный цикл – не последний в цикле выполняемой команды;
) выполняется команда RETI или любая команда связанная с обращением к
регистрам IE или IP.
Отметим что если флаг прерывания был установлен но по одному из
перечисленных выше условий не получил обслуживания и к моменту окончания
блокировки уже был сброшен то запрос прерывания теряется и нигде не
По аппаратурно-сформированному коду LCALL система прерывания помещает в
стек только содержимое счетчика команд (PC) и загружает в счетчик команд
адрес вектора соответствующей подпрограммы обслуживания. По адресу вектора
должна быть расположена команда безусловной передачи управления (JMP) к
начальному адресу подпрограммы обслуживания прерывания. Подпрограмма
обслуживания в случае необходимости должна начинаться командами записи в
стек (PUSH) спора состояния программы (PSW) аккумулятора расширителя
указателя данных и т.д. и заканчиваться командами восстановления из стека
(POP). Подпрограммы обслуживания прерывания обязательно завершаются
командой RETI по которой в счетчик команд перезагружается из стека
сохраненный адрес возврата в основную программу. Команда RET также
возвращает управление прерванной основной программе но при этом не снимает
блокировку прерываний что приводит к необходимости иметь программный
механизм анализа окончания процедуры обслуживания данного прерывания.
Также можно рассмотреть таймеры контроллера:
Два программируемых 16-битных таймерасчетчика (TC0 и TC1) могут
быть использованы в качестве таймеров или счетчиков внешних событий. При
работе в качестве таймера содержимое TC инкрементируется в каждом машинном
цикле т.е. через каждые 12 периодов резонатора. При работе в качестве
счетчика содержимое ТС инкрементируется под воздействием перехода из 1 в 0
внешнего входного сигнал; подаваемого на соответствующий (T0 T1) вывод
МК51. Опрос значения внешнего входного сигнала выполняется в момент времени
S5P2 каждого машинного цикла. Содержимое счетчика будет увеличено на 1 в
том случае если в предыдущем цикле был считан входной сигнал высокого
уровня (1) а в следующем – сигнал низкого уровня (0). Новое
(инкрементированное) значение счетчика будет сформировано в момент S3P1 в
цикле следующем за тем в котором был обнаружен переход сигнала из 1 в 0.
Так как на распознавание перехода требуется два машинных цикла то
максимальная частота подсчета входных сигналов равна 124 частоты
резонатора. На длительность периода входных сигналов ограничений сверху
нет. Для гарантированного прочтения входного считаемого сигнала он должен
удерживать значение 1 как минимум течение одного машинного цикла МК51.
Для управления режимами работы TC и для организации взаимодействия
таймеров с системой прерывания используются два регистра специальных
функций (TCON и TMOD) описание которых приводите в табл.1 и табл. 2
соответственно. Как следует из описания управляющих бит TCON для обоих TC
режимы работы 0 1 и 2 одинаковы. Режимы для TC0 и TC1 различны.
Рассмотрим кратко работу TC во всех четырех режимах.
Режим 0. Перевод любого ТС в режим 0 делает его похожим на таймер
МК48 (8-битный счетчик) на вход которого подключен 5-битный предделитель
частоты на 32. Работу ТC в режиме 0 на примере ТC1 иллюстрирует. В этом
режиме таймерный регистр имеет разрядность 13 бит. При переходе из
состояния "все единицы" в состояние "все нули" устанавливается флаг
прерывания от таймера TF1. Входной синхросигнал таймера 1 разрешен
(поступает на вход TC) когда управляющий бит TR1 установлен в 1 и либо
управляющий бит GATE (блокировка) равен 0 либо на внешний вывод запроса
прерывания INT1 поступает уровень 1.
Отметим попутно что установка бита GATE в 1 позволяет использовать
таймер для измерения длительности импульсного сигнала подаваемого на вход
Режим 1. Работа любого ТС в режиме 1 такая же как и в режиме 0
за исключением того что таймерный регистр имеет разрядность 16 бит.
Режим 2. В режиме 2 работа организована таким образом что
переполнение (переход из состояния "все единицы" в состояние "все нули") 8-
битного счетчика TL1 приводит не только к установке флага TF1но и
автоматически перезагружает в TL1 содержимое старшего байта (TH1)
таймерного регистра которое предварительно было задано программным путем.
Перезагрузка оставляет содержимое ТН1 неизменным. В режиме 2 ТС0 и ТС1
работают совершенно одинаково.
Режим 3. В режиме 3 ТC0 и ТC1 работают по- разному. ТC1 сохраняет
неизменным свое текущее содержимое. Иными словами эффект такой же как и
при сбросе управляющего бита TRI в нуль.
Работу TC0 в режиме 3 иллюстрирует. В режиме 3 TL0 и ТН0
функционируют как два независимых 8-битных счетчика. Работу TL0 определяют
управляющие биты TC0 (C T GATE TR0) входной сигнал INT0 и флаг
переполнения TF0 Работу TH0 который может выполнять только функции
таймера (подсчет машинных циклов МК) определяет управляющий бит TR1. При
этом ТН0 использует флаг переполнения TF1.
Режим 3 используется в тех случаях применения МК51 когда
требуется наличие дополнительного 8-битного таймера или счетчика событий.
Можно считать что в режиме 3 МК51 имеет в своем составе три
таймерасчетчика. В том случае если ТС0 используется в режиме 3 ТС1
может быть или включен или выключен или переведен в свой собственный
режим 3 или может быть использован последовательным портом в качестве
генератора частоты передачи или наконец может быть использован в любом
применении не требующем прерывания.
Более подробное описание AT89C51 приведено в литературе [1].
2 Организация памяти микропроцессорной системы
Распределение памяти контроллера приведено на рисунке 5.
Рисунок 5 – распределение памяти микроконтроллера
МК семейства MCS51 имеют внешний вывод EA# с помощью которого можно
запретить работу внутренней памяти программ для чего необходимо подать на
вывод EA# “0”. При этом внутренняя память программ отключается и начиная с
нулевого адреса все обращения происходят к внешней памяти программ с
формированием сигнала PSEN#. В случае если EA#=1 работают и внутренняя и
внешняя память программ. Для МК не имеющих внутренней памяти программ для
нормальной работы всегда необходимо задавать EA#=0.
Таким образом доступ к внешней памяти программ осуществляется в двух
при действии сигнала EA#=0 независимо от адреса обращения
в любом случае если программный счетчик (PC) содержит число большее чем
Если центральный процессор осуществляет доступ к внешней памяти
программ сигнал PSEN# вырабатывается дважды во время каждого машинного
цикла (исключение составляет команда MOVC) независимо от того необходим
или нет выбираемый байт для текущей команды. При выборке из внешней памяти
программ всегда используется 16-разрядный адрес младший байт которого
выдается через порт Р0 а старший байт - через порт Р2 МК. Байт из внешней
памяти программ вводится в МК через порт Р0 который в этом случае
используется как шина адресаданных в режиме мультиплексирования.
Память данных состоит из внешней памяти данных и внутренней памяти
данных. Каждая из них имеет свое пространство адресов так как доступ к ним
осуществляется с помощью разных команд.
Внешняя память данных: для работы с внешней памятью данных существуют
специальные команды MOVX которые не влияют на внутреннюю память данных МК.
Таким образом в системе могут одновременно присутствовать внутренняя
память данных с адресами 00h-0FFh и внешняя память данных с адресами 0000h-
FFFFh. Обращение к ячейкам внешней памяти данных осуществляется только с
использованием косвенной адресации по регистрам R0 и R1 активного банка
регистров внутреннего ОЗУ (команды типа MOVX Ri) или по регистру
специальных функций DPTR (команды типа MOVX DPTR). Соответственно в первом
случае будет формироваться 8-разрядный а во втором случае 16-разрядный
адреса внешней памяти данных.
При обращениях к внешней памяти данных адрес выводится через порт Р0
(младший байт) и порт Р2 (старший байт) МК. Обмен байтом данных (запись и
чтение) производится через порт Р0 МК т. е. порт Р0 используется как шина
адресаданных в режиме мультиплексирования.
Считывание данных из внешней памяти данных в МК производится с помощью
выходного сигнала МК RD# а запись данных из МК во внешнюю память данных с
помощью выходного сигнала МК WR#.
Внутренняя память данных: в архитектуре MCS-51 пространство адресов
внутренней памяти данных объединяет все внутренние программно доступные
ресурсы. Это пространство размером 256 байт в свою очередь делится на:
пространство адресов внутреннего ОЗУ с адресами 00h-7Fh (размером
пространство адресов регистров специальных функций занимающее
Физически внутреннее ОЗУ данных и область регистров специальных функций
являются отдельными устройствами.
Все ячейки внутреннего ОЗУ данных могут адресоваться с использованием
прямой и косвенной адресации.
Область внутреннего ОЗУ. В этой области памяти выделяются два особых
младшие 32 адреса занимают четыре регистровых банка (Банк0-БанкЗ на
рис.6) каждый из которых содержит по восемь регистров общего
назначения R0-R7. Текущий банк определяется значением разрядов RS0
RS1 регистра PSW. Команды программы могут обращаться к регистрам
используя их имена R0-R7. Таким образом младшие 32 ячейки этой
части ОЗУ кроме адресов имеют имена. Наличие такого механизма
работы с ячейками ОЗУ позволяет экономить память программ т. к.
команды работающие с регистрами R0-R7 короче команд использующих
следующие после банков регистров внутреннего ОЗУ данных 16 ячеек
(адреса 20h-2Fh) образуют область ячеек к которым возможна
поразрядная адресация. Набор команд МК семейства MCS-51 содержит
значительное количество инструкций (команд) позволяющих работать с
отдельными разрядами (битами) используя при этом прямую адресацию.
8 разрядов (бит) составляющих рассматриваемую область внутреннего
ОЗУ данных имеют адреса 00h-7Fh и предназначены для работы с такими
инструкциями. Разрядная (битовая) адресация ОЗУ показана на рис. 6
где в квадратах символизирующих разряды (биты) указаны их адреса.
Рис. 6 - Разрядная (битовая) адресация ОЗУ
Обращение к внутреннему ОЗУ данных всегда осуществляется с
использованием 8-разядного адреса.
На рис. 7 изображена область регистров специальных функций. В нее
включены все программно доступные регистры (управления и данных): регистры-
фиксаторы портов регистры таймеровсчетчиков регистры управления и т.п.
Эти регистры допускают только прямую адресацию.
АСС Аккумулятор основной операционный регистр
В Дополнительный регистр для операций умножения и деления; в
других командах может рассматриваться как обычный РОН
PSW Регистр хранящий слово состояния программы
IP Регистр приоритетов прерываний
РЗ Регистр порта РЗ
IE Регистр разрешения прерываний
Р2 Регистр порта Р2
SBUF Регистр данных последовательного порта
SCON Регистр управления последовательного порта
Р1 Регистр порта Р1
ТН1 Старший регистр таймерасчетчика 1
ТН0 Старший регистр таймерасчетчика 0
TL1 Младший регистр таймерасчетчика 1
TL0 Младший регистр таймерасчетчика 0
TMOD Регистр режима таймеровсчетчиков
TCON Регистр управления таймеровсчетчиков
PCON Регистр управления энергопотреблением
SP Регистр указателя стека
DPH DPL Указатель данных DPTR состоит из регистра старшего байта
DPH и регистра младшего байта DPL содержит 16-разрядный
адрес для обращения к внешней памяти данных
Р0 Регистр порта Р0
Таблица 3 - назначение регистров специальных функций.
3 Расчет и выбор элементов сопряжения
3.1 Выбор терморезистора и элементов схемы сопряжения его с АЦП.
Наибольшее распространение получили терморезисторы серии pt100.
Выберем терморезистор pt100-2 он имеет только 2 вывода.
Данный резистор представлен на рисунке 7.
Рисунок 7 – терморезистор pt100-2
Таблица сопротивлений терморезистора представлена на рисунке 8.
Рисунок 8 - таблица сопротивлений терморезистора pt100-2.
Терморезистор при температуре 0 С будет иметь сопротивление
0 Ом то есть в схеме делителя напряжения второй резистор будет иметь
сопротивления тоже 100 Ом. Выберем обычный резистор МЛТ – 0.25 – 100 Ом.
АЦП в основном различаются на два вида: последовательные
параллельные. Последовательные характеризуются тем что для их работы
необходимо всего 3-5 выводов микроконтроллера но зато они обладают более
низкой скоростью преобразования относительно АЦП параллельного действия.
Что касается АЦП параллельного действия то все разряды преобразованного
сигнала снимаются одновременно с ножек АЦП соответственно это увеличивает
скорость но при этом необходимо использовать большее количество выводов
контроллера. Так же АЦП характеризуются разрядностью. Разрядность АЦП
влияет на точность преобразования.
В данном проекте не важно количество выводов (их более чем
достаточно у АТ89С51) цена нам тоже не важна поэтому выбираем 12
разрядный АЦП параллельного действия AD1674. Данный преобразователь
представлен на рисунке 8. Его характеристики:
- Монолитный 12 битный 10 мс АЦП со схемой выборки
- Встроенное устройство выборки-хранения
- Цоколевка соответствующая промышленному стандарту
- 8 и 16 битный микропроцессорный интерфейс
- Определенные и проверенные статические и динамические
- Униполярный и биполярный входы
- Диапазоны входного сигнала ±5 В ±10 В 0 В - 10 В и 0 В - 20
- Коммерческий индустриальный и военный температурные диапазоны
- MIL-STD-883 и SMD корпусные исполнения
Рисунок 8 - АЦП параллельного действия AD1674
Распишем используемые выводы:
Vcc – +12 V+15 V вывод питания.
Vee - -12 V-15 V вывод питания.
REF OUT – выход внутреннего генератора опорного напряжения (10В);
REF IN – вход для подачи опорного напряжения;
VIN – вход аналогового сигнала(преобразуемого);
8 – вывод отвечающий за вывод данных из АЦП если подаем на
вход высокий уровень сигнала то 12 разрядный выход с портов DB0-DB11 если
низкий уровень то формируется два восьмиразрядных слова;
CS - Выбор микросхемы. Выбор микросхемы имеет низкий активный
RC – вывод чтенияпреобразования. При режиме преобразовании имеет
низкий уровень в режиме чтения высокий.
СE – сигнал разрешения используется для инициирования
преобразования или операции чтения.
Более подробное описание AD1674 его характеристики диаграммы работы и
назначение выводов представлены в литературе [2].
3.3 Выбор индикатора и элементов сопряжения с ним
Для данного устройства достаточно четырехразрядного
семисегментного индикатора. В первый разряд будет заносится знак в три
последующих трехзначное число значения температуры. Выберем индикатор типа
MPX4-CA. Данный индикатор представлен на рисунке 9.
Рисунок 9 - индикатор типа MPX4-CA.
ABCDEFGDP- выводы анодов разрядов индикатора в зависимости
от подключенных катодов;
34 – выводы катодов индикатора.
Это индикатор с общим катодом. Номинальный ток диодов(Id): 12мА.
Напряжение питания(Uп) соответственно 5 В. Найдем нужное нам сопротивления
для обеспечения нормального свечения диодов по следующей формуле:
R=UпId=50.0012=4.2кОм
Из ряда Е24 выбираем резистор сопротивлением 4.3кОм. Выбираем
резистор МЛТ- 0.25 – 4.3 кОм.
Для построения систем с использованием многоразрядных ССИ в
целях экономии выходов контроллера используются сдвиговые регистры. Но так
как у нас всего четырехразрядный ССИ то сдвиговый регистор использоваться
3.4 Расчет и выбор кнопок
Кнопки выбираем исходя из напряжения равного 5 вольт. Выбираем кнопки
фирмы Omron серии B3F-60_. Внешний вид кнопок схема и характеристики
представлены на рисунке 10.
Рисунок 10 - внешний вид кнопок B3F-60_ схема и характеристики.
Для включения микропроцессорного устройства нужно использовать
контакт с фиксированным положением используем микротумблер MTS-101-F1.
Его схема и его характеристики представлены на рисунке 11.
Рисунок 11 - схема и характеристики MTS-101-F1.
3.5 Выбор конденсаторов
Для более стабильного запуска микроконтроллера к выходом
кварцевого резонатора подключаются конденсаторы емкостью 30пФ.
Для того чтобы сработал сброс(reset) всех параметров контроллера
необходимо после подачи питания на контроллер удерживать сигнал на входе
reset некоторое время для этих целей используется конденсатор емкостью
7мкФ. Для устранения помех используются конденсаторы емкостью 0.1 мкФ.
Выбираем конденсаторы типа:
K73-9-10B-30 пФ±10% ОЖО.461.087 ТУ
K73-9-10B-47 мкФ±10% ОЖО.461.087 ТУ
K73-9-10B-01 мкФ±10% ОЖО.461.087 ТУ
4 Описание схемы электрической принципиальной
Схема электрическая принципиальная приведена в графической части.
На схеме электрической принципиальной(СЭП) представлено устройство
измерения температуры на базе терморезистора pt100-2.
Центральным узлом СЭП является микросхема микроконтроллера AT89C51 с
внешним кварцевым резонатором QZ1. Для отображения информации в
микропроцессорной системе предусмотрен CCИ MPX4-CA. Катоды данного
индикатора подключены к выводам контроллера Р3.6 Р3.7 P3.0 P3.3 аноды -
к порту P1. К терморезистору подключен второй резистор вместе они
образуют делитель напряжения.
В схеме присутствует АЦП служащий для преобразования сигналов с
делителя напряжения в цифровой код.
Входы порта P0.0-P0.7 P2.4-P2.7 микроконтроллера подключены на прием
обработанной информации АЦП. Порт P2.3 подключен к входу 128 АЦП. Порт
P2.2 подключен к входу СЕАЦП. Порт P2.1 подключен к входу RC АЦП. Порт
P2.3 подключен к входу CS АЦП.
Кнопка SB1 служит для включения или отключения устройства подключена
на вход контроллера Vcc.
Кнопка SB2 служит для переключения режима отображения среднесуточной
температуры подключена к порту P3.2.
Кнопка SB3 служит для переключения режима отображения температуры в
реальный момент времени подключена к порту P3.3.
Разработка программного обеспечения системы
1 Краткое описание системы команд микроконтроллера
Система команд АТ89С51 содержит 111 базовых команд которые удобно
разделить по функциональному признаку на пять групп: команды передачи
данных арифметических операций логических операций передачи управления и
Первый байт команды любого типа и формата всегда содержит код
операции (КОП). Второй и третий байты содержат либо адреса операндов либо
непосредственные операнды.
Группа команд пересылки данных:
Большую часть команд данной группы составляют команды передачи и
обмена байтов. Команды пересылки бит представлены в группе команд битовых
операций. Все команды данной группы не модифицируют флаги результата за
исключением команд загрузки PSW и аккумулятора (флаг паритета).
Обращение к внешней памяти данных. Режим косвенной адресации ВПД
реализован в АТ89С51. При использовании команд MOVX Ri обеспечивается
доступ к 256 байтам внешней памяти данных.
Существует также режим обращения к расширенной ВПД когда для
доступа используется 16-битный адрес хранящийся в ретистре-указателе
данных (DPTR). Команды MOVX DPTR обеспечивают доступ к 65 536 байтам ВПД.
Некоторые из команд этой группы представлены на рисунке 13.
Рисунок 13- группа команд пересылки данных
Группа команд арифметических операций:
Данную группу образуют 24 команды (рис.14) выполняющие операции
сложения десятичной коррекции инкрементадекремента байтов.
Рисунок 14 - группа команд арифметических операций
Группа команд логических операций:
Данную группу образуют 25 команд (рис.15) реализующих логические
операции над байтами.
Рисунок 15 - группа команд логических операций
Группа команд операций с битами:
Отличительной особенностью данной группы команд (рис.16) является то
что они оперируют с однобитными операндами. В качестве таких операндов
могут выступать отдельные биты некоторых регистров специальных функций
(РСФ) и портов а также 128 программных флагов пользователя. Существуют
команды сброса (CLR) установки (SETB) и инверсии (CPL) бит а также
конъюнкции и дизъюнкции бита и флага переноса. Для адресации бит
используется прямой восьмиразрядный адрес (bit). Косвенная адресация бит
Рисунок 16 – группа команд операций с битами
Группа команд передачи управления:
К данной группе команд (рис.17) относятся команды обеспечивающие
условное и безусловное ветвление вызов подпрограмм и возврат из них а
также команда пустой операции NOP. В большинстве команд используется прямая
адресация т.е. адрес перехода целиком (или его часть) содержится в самой
команде передачи управления. Можно выделить три разновидности команд
ветвления по разрядности указываемого адреса перехода.
Длинный переход. Переход по всему адресному пространству ПП. В команде
содержится полный 16-битный адрес перехода (ad 16). Трех байтные команды
длинного перехода содержат в мнемокоде букву L (Long). Всего существует две
такие команды: LJMP - длинный переход и LCALL - длинный вызов подпрограммы.
На практике редко возникает необходимость перехода в пределах всего
адресного пространства и чаще используются укороченные команды перехода
занимающее меньше места в памяти.
Абсолютный переход. Переход в пределах одной страницы памяти программ
размером 2048 байт. Такие команды содержат только 11 младших бит адреса
перехода (ad 11). Команды абсолютного перехода имеют формат 2 байта.
Начальная буква мнемокода - A (Absolute). При выполнении команды в
вычисленном адресе следующей по порядку команды ((РС)= (PC) + 2) 11 младших
бит заменяются на ad11 из тела команды абсолютного перехода.
Относительный переход. Короткий относительный переход позволяет
передать управление в пределах -128 - +127 байт относительно адреса
следующей команды (команды следующей по порядку за командой относительного
перехода). Существует одна команда безусловного короткого перехода SJMP
(Short). Все команды условного перехода используют данный метод адресации.
Относительный адрес перехода (rel) содержится во втором байте команды.
Косвенный переход. Команда JMP A + DPTR позволяет передавать
управление по косвенному адресу. Эта команда удобна тем что предоставляет
возможность организации перехода по адресу вычисляемому самой программой и
неизвестному при написании исходного текста программы.
Условные переходы. Развитая система условных переходов предоставляет
возможность осуществлять ветвление по следующим условиям: аккумулятор
содержит нуль (JZ); содержимое аккумулятора не равно нулю (JNZ); перенос
равен единице (JC); перенос равен нулю (JNC); адресуемый бит равен единице
(JB); адресуемый бит равен нулю (JNB).
Для организации программных циклов удобно пользоваться командой DJNZ
которая работает аналогично соответствующей команде МК48. Однако в качестве
счетчика циклов в МК51 может использоваться не только регистр но и
прямоадресуемый байт (например ячейка РПД).
Команда CJNE эффективно используется в процедурах ожидания какого-либо
события. Например команда
будет выполняться до тех пор пока на линиях порта 0 не установится
информация совпадающая с содержимым аккумулятора.
Все команды данной группы за исключением CJNE и JBC не оказывают
воздействия на флаги. Команда CJNE устанавливает флаг C если первый
операнд оказывается меньше второго. Команда JBC сбрасывает флаг C в случае
Подпрограммы. Для обращения к подпрограммам необходимо использовать
команды вызова подпрограмм (LCALL ACALL). Эти команды в отличие от команд
перехода (LJMP AJMP) сохраняют в стеке адрес возврата в основную
программу. Для возврата из подпрограммы необходимо выполнить команду RET.
Команда RETI отличается от команды RET тем что разрешает прерывания
обслуженного уровня.
Рисунок 17 - группа команд передачи управления
Более подробное описание команд представлено в [4].
2 Описание общего алгоритма работы системы
Данная программа работает в замкнутом цикле который называется
рабочий цикл устройства.
После нажатия кнопки «Start» происходит настройка таймера на режим 1
установка времени 50 мс разрешение прерываний от таймера T0 источников
int0 и int1. Затем происходит инициализация она включает в себя настройку
портов в исходное состояние. Затем идет подпрограмма работы с АЦП то есть
снимаются значения приходящие с АЦП. После того эти значения обрабатываются
в соответствии с таблицей сопротивлений терморезистора PT100-2
обработанные данные записываются в память контроллера. Дальше
рассчитываются мгновенные значения температуры путем сравнения данных с
АЦП с значениями сохраненных в специальную строковую константу. Потом
проверяются нажатые кнопки если swittch=0 то проверяются данные по
граничным условиям если полученные значения не превышают
номинальных(запланированных программно) то вызывается подпрограмма
подготовки вывода этих данных на ССИ и соответственно затем значения
температуры выводятся на ССИ. Если же значения превысили или получились
меньше запланированных то выводится сообщение об ошибке erro( по
ирландски ошибка). Если же была нажата кнопка SB3(switch=5) то вызывается
подпрограмма расчета среднесуточной температуры затем происходит
подготовка значений для вывода на ССИ и соответственно вывод на ССИ. После
вывода на ССИ программа возвращается в подпрограмму работы с АЦП и начинает
работать дальше по циклу описанному выше. То есть происходит зацикливание
программы. Алгоритмы системы и обработки прерываний представлены на рисунке
и в графической части проекта.
Рисунок 18 – алгоритмы работы системы и обработки прерываний
3 Разработка текста программы
Программа написана на языке С и отлажена в среде PV32. Программа
написанная на языке С меньше по объему но зато обладает и меньшим
быстродействием по сравнению с ассемблером. Для данного устройства
быстродействие не принципиально важно.
В начале программы нужно объявить порты и регистры специальных
функций они объявляются с помощью следующий записи:
sfr P1=0x90 где P1 – присваемое имя регистра с адресом 0x90.
Объявляются порты P1 P2 P0P3 регистры таймера T0 (TH0TL0)
регистры прерываний и приоритета прерываний IE IP регистры управления
таймером TMOD TCON и отдельные биты всех портов для управления
устройствами подключенных к контроллеру через отдельные входы портов.
Далее определяются глобальные переменные задействованные у нас в
программе о их функциях можно прочитать в строке комментария программы в
Теперь непосредственно по алгоритму программы(главная функция
По алгоритму первым шагом является инициализация. Она включает
выставление P30 P31 P36 P37 – эти порты подсоедины к катодом ССИ и будут
задействованы в подпрограмме вывода на ССИ методом динамической индикации.
Также настраивается таймер Т0 в режим 1 устанавливается приоритет
прерываний от int1 и int0 и разрешаются все виды прерываний.
Далее идет подпрограмма обработки данных из АЦП ее можно разбить
на две части: подача нужной последовательности сигналов для того чтобы
произошло преобразование и подача нужной последовательности сигналов чтобы
считать информацию хранящуюся в регистре АЦП. Рабочие диаграммы
представлены в [2]. Так как данные преобразованные в АЦП сохраняются в
два порта то мы выполняем преобразование двух восьмиразрядных слов в одно
двенадцатиразрядное. Данные считываются и сохраняются в переменную типа
После вызывается подпрограмма расчета температуры. Смысл ее
заключается в следующем: рассчитывается число образующееся на выходах АЦП
D0- D11 (соответственно через напряжение поступающие на вход АЦП) для
каждого значения сопротивления Pt-100 соответствующего определенной
температуре и заносится в строковую константу BufferAcp[51] а значения
соответствующей ему температуры заносится в BufferTemper[51]. За тем
происходит сравнение получаемого после преобразования с АЦП значения (res)
с BufferAcp и при совпадении этих чисел переменной nado присваивается
соответствующее значение температуры из BufferTemper. Так же в данной
подпрограмме проверяется диапазон поступающего напряжения с АЦП если число
больше или меньше предусмотренного программой диапазона то вызывается
подпрограмма vivod3 которая выводит сообщение об ошибке на ССИ.
Что касается расчета среднесуточной температуры то он
организован с помощью таймера и подпрограммы srednesutochnoe. С помощью
таймера отсчитывается интервал времени равный 12 часов после в перемеменну
res2 заносится значение переменной nado а в res3 сохраняется предыдущее
значение res2. Также сохраняются знаки с помощью переменных znak и znak2.
В подпрограмме srednesutochnoe рассчитывается среднесуточное значение в
зависимости от знака после вызывается программа подготовки вывода на ССИ
и подпрограмма vivod1 или vivod2 взависимости от того есть ли минус или
Подпрограмма подготовки вывода числа на ССИ предусматривает
разбиение числа на 100 101 и сохранение этих разрядов в inbuf[] с
помощью константы chartable[] в которой хранятся значения чисел выводимых
Что касается подпрограмм vivod1 vivod2vivod3 то они служат
для вывода значений на ССИ методом динамической индикации то есть
поочередно на катоды ССИ подается напряжение и выставляется на порт Р1
нужное число с помощью которого загораются нужные сегменты индикатора
образующие цифру символ. Таким образом vivod1 выводит без знаковое
трехразрядное число vivod2 – знаковое трехразрядное число vivod3 -
сообщение об ошибке erro.
Таким образом работает программа. Она может быть легко
переделана под любой терморезистор с его таблицей сопротивлений путем
замены значений в BufferAcp и BuffferTemper и растановки новых приделов
В результате выполнения курсовой работы было разработано
микропроцессорное устройство измерения мгновенного значения температуры с
датчика температуры типа терморезистор pt100-2. Устройство может также
измерять среднесуточное значение температуры а если значения превысит
номинальное или будит слишком мало то на экран ССИ выводится
предупреждение в виде (erro).
Данное устройство было собрано и проверено в программе позволяющей
моделировать микропроцессорные системы Proteus(ISIS 7).
Данное устройство и .hex файл к нему можете скачать с моей странице
Список использованной литературы
Москатов Е. А. Справочник по полупроводниковым приборам. — М.:
Журнал "Радио" 2005.- 208 с.: ил.
Справочная книга радиолюбителя-конструктора. Под редакцией Н.И.
Честякова. – М.: «Радио и связь»1990. - 617с.: ил.
unsigned char data charteibl[12]=
BufferACP[52]=0x8CB0x8C10x8B70x8AD0x8A40x89A0x8910x8870x87E0x8750
x8620x8590x8500x8480x83F0x8360x82E0x8250x81D0x8080x80C0x8040x7F
B0x7F30x7EB0x7E30x7DB
x7D40x7CC0x7C40x7BC0x7B50x7AD0x7A60x79F0x7970x7900x7890x7810x77
BufferTemper[52]=504846444240383634323028262422201816141
void delay10mkc (void)
void delay1mkc (void)
void temperatura(void)
if((res=BufferACP[i])&&(res>BufferACP[i+1]))
if((res>=0x8CB)(res0x736))
void ssi(unsigned char xxx)
void vivod() interrupt 3 using 3
void srednesutochnoe(void)
if((znak>=25)&&(znak2>=25))
if((znak25)&&(znak2>=25))
if((znak>=25)&&(znak225))
if((znak25)&&(znak225))
void int1() interrupt 0
void int3() interrupt 2 using 3

icon zapiska MPSDorabotannay.doc

Разработка функциональной схемы системы 5
1 Описание принципа работы объекта 5
2 Функциональная схема микропроцессорной системы 7
Разработка аппаратной части системы 9
1 Краткое описание микропроцессорного комплекта 9
2 Организация памяти микропроцессорной системы 21
3 Расчет и выбор элементов сопряжения 23
3.1 Выбор терморезистора и элементов схемы сопряжения его с АЦП. 23
3.2 Выбор индикатора и элементов сопряжения с ним 24
3.4 Выбор конденсаторов 25
4 Описание схемы электрической принципиальной 26
Разработка программного обеспечения системы 27
1 Краткое описание системы команд микроконтроллера 27
2 Описание общего алгоритма работы системы 32
3 Описание алгоритма решения задачи 33
Список использованной литературы 36
В связи с ростом вычислительной мощности микропроцессоров появилась
возможность использовать эти универсальные устройства в различных областях
Для реализации законов управления преобразователем раннее
использовалось большое количество элементов. Сейчас эти законы проще решить
используя микроконтроллер. При этом отпадает необходимость в большом
количестве элементов потому что все законы реализуются программно. Однако
при этом основная задача разработки смещается из схемотехнической области
т.к. принципы соединения между элементами микропроцессорной системы
определены разработчиком в область программирования.
Применение микроконтроллеров в системах управления автоматизированным
электроприводом позволяет существенно расширить функциональные возможности
привода путем реализации сложных законов управления.
Согласно заданию необходимо разработать устройство счета импульсов с
возможностью работы в двух режимах: счет импульсов счет импульсов в
минуту. Также необходимо реализовать возможность сохранения данных за три
смены и последующей возможностью выдачи информации через интерфейс i2c на
Разработка функциональной схемы системы
1Описание принципа работы объекта
В данном курсовом проекте источник импульсов нам не важен. Импульсы
будут приходить на вход счетчика таймера Т0. То есть нужно настроить СТ0
в режим счетчика. В результате число импульсов будет храниться в регистрах
TH0 и TL0. Максимальное число импульсов 65025. По заданию необходимо чтобы
программа могла рассчитать количество приходящих импульсов в минуту. Для
этого необходимо задействовать второй таймер T1 который будет производить
непосредственно отсчет времени(минуты). Так же нам необходимо выводить
значения на МЖКИ для этого к контроллеру подключим МЖКИ. Для того чтобы
выбрать нужный режим отображения на МЖКИ: количество импульсов или число
импульсов в минуту - введем кнопки при нажатии которых будет задаваться
2 Функциональная схема микропроцессорной системы
Функциональная схема системы приведена на рисунке 2 и в графической
В данной схеме можно выделить следующие блоки:
блок обработки индикации (БОИ) – служит для подготовки вывода информации на
индикатор (ИНД) - служит для визуализации информации ;
таймер (Т) - служит для отсчетов промежутков времени;
блок обработки клавиатуры (БОК) - служит для подготовки ввода информации
клавиатура (К) - служит для ввода информации в микропроцессорную систему.
блок счета импульсов (БСИ) - служит для подсчета импульсов
блок счета импульсов в минуту (БСИМ)
Рисунок 2 – функциональная схема микропроцессорной системы
Разработка аппаратной части системы
1 Краткое описание микропроцессорного комплекта
Микроконтроллер AT89C51 фирмы ATMEL представляет
высокопроизводительный 8-разрядный КМОП микрокомпьютер с Flash ПЗУ.
- Совместимость с приборами семейства MCS-51TM
- Емкость перепрограммируемой Flash памяти: 4 Кбайт 1000 циклов
- Напряжение питания 5±20% B
- Полностью статический прибор - диапазон рабочих частот от 0 Гц до 24 МГц.
- Группы по частотам: 12 МГц 16 МГц 20 Мгц и 24 Мгц
- Трехуровневая блокировка памяти программ
- СОЗУ емкостью 128 байтов
- 32 программируемых линий вводавывода
- Два 16-разрядных таймерасчетчика событий
- Шесть источников сигналов прерывания
- Программируемый последовательный канал UART
- Пассивний (idle) и стоповый (power down) режимы
- Промышленный (-40°С 85°C) коммерческий (0°C 70°C) диапазоны
- режимы пониженного потребления питания
Условное обозначение приведено на рисунке 3.
Рисунок 3 – Условное обозначение микросхемы AT89C51
Микросхема конструктивно оформлена в 40-контактном пластиковом корпусе
КМОП микроконтроллер АТ89С51 оснащенный Flash программируемым и
стираемым ПЗУ совместим по системе команд и по выводам со стандартными
приборами семейства MCS-51TM. Микроконтроллер содержит 4 Кбайта Flash ПЗУ
8 байтов ОЗУ 32 программируемых линий вводавывода два 16-разрядных
таймерасчетчика событий полнодуплексный последовательный порт (UART)
пять векторных двухуровневых прерывания встроенный генератор и схему
формирования тактовой последовательности.
Существуют два варианта микроконтроллеров АТ89С51: с возможностью
внутрисистемного программирования с использованием при программировании
напряжения 5 В и программирование с использованием напряжения 12 В
применяемого в большинстве программаторов. Содержимое Flash памяти программ
может быть защищено от несанкционированной записисчитывания. Имеется
возможность очистки Flash памяти за одну операцию возможность считывания
встроенного кода индентификации.
Потребление в активном режиме на частоте 12 Мгц не превышает 20 мА и в
пассивном режиме при котором остановлено ЦПУ но система прерываний ОЗУ
таймерысчетчики событий и последовательный порт остаются активными
потребление не превышает 5 мА. В стоповом режиме потребление не превышает
0 мкА и 20 мкА при напряжении питания 6 В и 3 В соответственно.
Микроконтроллер АТ89С51 ориентирован на использование в качестве
встроенного управляющего контроллера.
Назначение выводов приведено в таблице 1.
Таблица 1 – Назначение выводов микросхемы AT89C51
Структурная схема контроллера приведена на рисунке 4.
Рисунок 4 - структурная схема контроллера AT89C51
Рассмотрим таймеры контроллера.
Два программируемых 16-битных таймерасчетчика (TC0 и TC1) могут
быть использованы в качестве таймеров или счетчиков внешних событий. При
работе в качестве таймера содержимое TC инкрементируется в каждом машинном
цикле т.е. через каждые 12 периодов резонатора. При работе в качестве
счетчика содержимое ТС инкрементируется под воздействием перехода из 1 в 0
внешнего входного сигнал; подаваемого на соответствующий (T0 T1) вывод
МК51. Опрос значения внешнего входного сигнала выполняется в момент времени
S5P2 каждого машинного цикла. Содержимое счетчика будет увеличено на 1 в
том случае если в предыдущем цикле был считан входной сигнал высокого
уровня (1) а в следующем – сигнал низкого уровня (0). Новое
(инкрементированное) значение счетчика будет сформировано в момент S3P1 в
цикле следующем за тем в котором был обнаружен переход сигнала из 1 в 0.
Так как на распознавание перехода требуется два машинных цикла то
максимальная частота подсчета входных сигналов равна 124 частоты
резонатора. На длительность периода входных сигналов ограничений сверху
нет. Для гарантированного прочтения входного считаемого сигнала он должен
удерживать значение 1 как минимум течение одного машинного цикла МК51.
Для управления режимами работы TC и для организации взаимодействия
таймеров с системой прерывания используются два регистра специальных
функций (TCON и TMOD) описание которых приводится в таблице 2 и таблице 3
соответственно. Как следует из описания управляющих бит TCON для обоих TC
режимы работы 0 1 и 2 одинаковы. Режимы для TC0 и TC1 различны.
Рассмотрим кратко работу TC во всех четырех режимах.
Таблица 2 - Регистр режима работы таймера счетчика
Таблица 3 - Регистр управления статуса таймера
Режим 0. Перевод любого ТС в режим 0 делает его похожим на таймер
МК48 (8-битный счетчик) на вход которого подключен 5-битный предделитель
частоты на 32. Работу ТC в режиме 0 на примере ТC1 иллюстрирует. В этом
режиме таймерный регистр имеет разрядность 13 бит. При переходе из
состояния "все единицы" в состояние "все нули" устанавливается флаг
прерывания от таймера TF1. Входной синхросигнал таймера 1 разрешен
(поступает на вход TC) когда управляющий бит TR1 установлен в 1 и либо
управляющий бит GATE (блокировка) равен 0 либо на внешний вывод запроса
прерывания INT1 поступает уровень 1.
Отметим попутно что установка бита GATE в 1 позволяет использовать
таймер для измерения длительности импульсного сигнала подаваемого на вход
Режим 1. Работа любого ТС в режиме 1 такая же как и в режиме 0 за
исключением того что таймерный регистр имеет разрядность 16 бит.
Режим 2. В режиме 2 работа организована таким образом что
переполнение (переход из состояния "все единицы" в состояние "все нули") 8-
битного счетчика TL1 приводит не только к установке флага TF1но и
автоматически перезагружает в TL1 содержимое старшего байта (TH1)
таймерного регистра которое предварительно было задано программным путем.
Перезагрузка оставляет содержимое ТН1 неизменным. В режиме 2 ТС0 и ТС1
работают совершенно одинаково.
Режим 3. В режиме 3 ТC0 и ТC1 работают по- разному. ТC1 сохраняет
неизменным свое текущее содержимое. Иными словами эффект такой же как и
при сбросе управляющего бита TRI в нуль.
Работу TC0 в режиме 3 иллюстрирует. В режиме 3 TL0 и ТН0
функционируют как два независимых 8-битных счетчика. Работу TL0 определяют
управляющие биты TC0 (C T GATE TR0) входной сигнал INT0 и флаг
переполнения TF0 Работу TH0 который может выполнять только функции
таймера (подсчет машинных циклов МК) определяет управляющий бит TR1. При
этом ТН0 использует флаг переполнения TF1.
Режим 3 используется в тех случаях применения МК51 когда требуется
наличие дополнительного 8-битного таймера или счетчика событий. Можно
считать что в режиме 3 МК51 имеет в своем составе три таймерасчетчика. В
том случае если ТС0 используется в режиме 3 ТС1 может быть или включен
или выключен или переведен в свой собственный режим 3 или может быть
использован последовательным портом в качестве генератора частоты передачи
или наконец может быть использован в любом применении не требующем
2 Организация памяти микропроцессорной системы
Распределение памяти контроллера приведено на рисунке 5.
Рисунок 5 - Распределение памяти микроконтроллера
МК семейства MCS51 имеют внешний вывод EA# с помощью которого можно
запретить работу внутренней памяти программ для чего необходимо подать на
вывод EA# “0”. При этом внутренняя память программ отключается и начиная с
нулевого адреса все обращения происходят к внешней памяти программ с
формированием сигнала PSEN#. В случае если EA#=1 работают и внутренняя и
внешняя память программ. Для МК не имеющих внутренней памяти программ для
нормальной работы всегда необходимо задавать EA#=0.
Таким образом доступ к внешней памяти программ осуществляется в двух
при действии сигнала EA#=0 независимо от адреса обращения
в любом случае если программный счетчик (PC) содержит число большее чем
Если центральный процессор осуществляет доступ к внешней памяти
программ сигнал PSEN# вырабатывается дважды во время каждого машинного
цикла (исключение составляет команда MOVC) независимо от того необходим
или нет выбираемый байт для текущей команды. При выборке из внешней памяти
программ всегда используется 16-разрядный адрес младший байт которого
выдается через порт Р0 а старший байт - через порт Р2 МК. Байт из внешней
памяти программ вводится в МК через порт Р0 который в этом случае
используется как шина адресаданных в режиме мультиплексирования.
Память данных состоит из внешней памяти данных и внутренней памяти
данных. Каждая из них имеет свое пространство адресов так как доступ к ним
осуществляется с помощью разных команд.
Внешняя память данных: для работы с внешней памятью данных существуют
специальные команды MOVX которые не влияют на внутреннюю память данных МК.
Таким образом в системе могут одновременно присутствовать внутренняя
память данных с адресами 00h-0FFh и внешняя память данных с адресами 0000h-
FFFFh. Обращение к ячейкам внешней памяти данных осуществляется только с
использованием косвенной адресации по регистрам R0 и R1 активного банка
регистров внутреннего ОЗУ (команды типа MOVX Ri) или по регистру
специальных функций DPTR (команды типа MOVX DPTR). Соответственно в первом
случае будет формироваться 8-разрядный а во втором случае 16-разрядный
адреса внешней памяти данных.
При обращениях к внешней памяти данных адрес выводится через порт Р0
(младший байт) и порт Р2 (старший байт) МК. Обмен байтом данных (запись и
чтение) производится через порт Р0 МК т. е. порт Р0 используется как шина
адресаданных в режиме мультиплексирования.
Считывание данных из внешней памяти данных в МК производится с помощью
выходного сигнала МК RD# а запись данных из МК во внешнюю память данных с
помощью выходного сигнала МК WR#.
Внутренняя память данных: в архитектуре MCS-51 пространство адресов
внутренней памяти данных объединяет все внутренние программно доступные
ресурсы. Это пространство размером 256 байт в свою очередь делится на:
пространство адресов внутреннего ОЗУ с адресами 00h-7Fh (размером
пространство адресов регистров специальных функций занимающее
Физически внутреннее ОЗУ данных и область регистров специальных
функций являются отдельными устройствами.
Все ячейки внутреннего ОЗУ данных могут адресоваться с использованием
прямой и косвенной адресации.
Область внутреннего ОЗУ. В этой области памяти выделяются два особых
младшие 32 адреса занимают четыре регистровых банка (Банк0-БанкЗ на
рис.6) каждый из которых содержит по восемь регистров общего
назначения R0-R7. Текущий банк определяется значением разрядов RS0
RS1 регистра PSW. Команды программы могут обращаться к регистрам
используя их имена R0-R7. Таким образом младшие 32 ячейки этой
части ОЗУ кроме адресов имеют имена. Наличие такого механизма
работы с ячейками ОЗУ позволяет экономить память программ т. к.
команды работающие с регистрами R0-R7 короче команд использующих
следующие после банков регистров внутреннего ОЗУ данных 16 ячеек
(адреса 20h-2Fh) образуют область ячеек к которым возможна
поразрядная адресация. Набор команд МК семейства MCS-51 содержит
значительное количество инструкций (команд) позволяющих работать с
отдельными разрядами (битами) используя при этом прямую адресацию.
8 разрядов (бит) составляющих рассматриваемую область внутреннего
ОЗУ данных имеют адреса 00h-7Fh и предназначены для работы с такими
инструкциями. Разрядная (битовая) адресация ОЗУ показана на рис. 6
где в квадратах символизирующих разряды (биты) указаны их адреса.
Рисунок 6 - Карта адресуемых битов в резидентной памяти данных
Обращение к внутреннему ОЗУ данных всегда осуществляется с
использованием 8-разядного адреса.
На рисунке 7 изображена область регистров специальных функций. В нее
включены все программно доступные регистры (управления и данных): регистры-
фиксаторы портов регистры таймеровсчетчиков регистры управления и т.п.
Эти регистры допускают только прямую адресацию.
Рисунок 7 - Регистры специальных функций
Эта область формально занимает старшие 128 байт внутренней памяти
данных но обращение должно осуществляться по определенным адресам ячеек
или отдельных разрядов. Обращение по промежуточным адресам приведет к
ошибочному результату.
Видно что все регистры имеют как символические имена так и адреса в
качестве ячеек внутренней памяти. Часть регистров содержит прямо адресуемые
разряды. Адреса разрядов находятся в диапазоне 80Н - 0F7H.
Таблица 4 - Блок регистров специальных функций
Регистры со знаком (*) допускают адресацию отдельных битов.
3 Расчет и выбор элементов сопряжения
3.1 Выбор конденсаторов
Для более стабильного запуска микроконтроллера к выходом
кварцевого резонатора подключаются конденсаторы емкостью 30пФ.
Для того чтобы сработал сброс(reset) всех параметров контроллера
необходимо после подачи питания на контроллер удерживать сигнал на входе
reset некоторое время для этих целей используется конденсатор емкостью
7мкФ. Для устранения помех используются конденсаторы емкостью 0.1 мкФ.
Выбираем конденсаторы типа:
K73-9-10B-4.7 пФ±10% ОЖО.461.087 ТУ
K73-9-10B-01 мкФ±10% ОЖО.461.087 ТУ
3.2 Расчет и выбор кнопок
Кнопки выбираем исходя из напряжения равного 5 вольт. Выбираем кнопки
фирмы Omron серии B3F-3150.
Миниатюрные тактильные переключатели имеют длительный срок службы и
просты в монтаже. Механическийэлектрический срок службы переключателей
размера 12х12 мм составляет 10х106 циклов нажатия а для типа 6х6 мм не
менее 10х106. B3F-3150 имеют позолоченные контакты для надежной работы
даже в условиях агрессивной среды. Переключатели рассчитаны на токи 1мА при
V и 50mA при 24V постоянного тока. В серию так же входят модели с высокой
Номенклатурный номер B3F-3150
Производитель Omron Electronics Inc-EMC Div
Номенклатурный номер производителя B3Fб-3150
Краткое описание SWITCH TACT 6MM RT ANG 100GF
Соответствие директиве RoHS Да
Количество в упаковке 100
Категория Переключатели
Семейство Тактильные и ступенчатые переключатели
Схема контактов SPST-NO
Функции переключения Off-Mom
Номинальный ток 50mA
Номинальное напряжение 24V
Максимальная мощность вклвыкл 1mA при 5V 50mA при 24V
Число циклов нажатия 1000000
Покрытие контакта Золото
Температурный диапазон -25°C ~ +70°C
Размер корпуса 6.25 мм Lx7.3 мм Wx7.4 мм H
Тип монтажа Через отверстия
Другие названия B3F3150 SW409
Для включения микропроцессорного устройства нужно использовать контакт
с фиксированным положением используем микротумблер MTS-112-C3.
3.4 Выбор индикатора
Выбираем индикатор LM016L со следующими параметрами:
+5 V одного источника питания
отображения серого цвета
Абсолютные максимальные
питания для логики (VDD-VSS) 0 65 В
питания для ЖК (VDD-Vo) 0 85 В
входного напряжения (VI) Vdd Vss В
рабочая температура (Ta) 0 40 50 °C
Температура хранения (Tstg) -20 70 60 °C
Электрические характеристики:
Входное напряжение высокого уровня (Vih) 2.2Vmin
Входное напряжение низкого уровня (Вил) 06 Vmax
выходное напряжение высокого уровня (Вох) 24 Vmin
Выходное напряжение низкого уровня (объема) 0.4Vmax
- Ток потребления 10 мА 30 макс
- питания для ЖК (рекомендуется) (Vdd-V0)
- диапазон Vdd-V0 15 ~ 5.25 V
Назначение выводов приведены в таблице 5:
Таблица 5 – назначение выводов LM016L
4 Описание схемы электрической принципиальной
Схема электрическая принципиальная приведена в графической части.
На схеме электрической принципиальной (СЭП) представлено устройство
измерения количества импульсов.
Центральным узлом СЭП является микросхема микроконтроллера AT89C51 с
внешним кварцевым резонатором QZ1. Для отображения информации в
микропроцессорной системе предусмотрен МЖКИ выводы которого подключены
RS RWE подключены соответственно к выводам контроллера P1.0 P1.1
D0-D7 подключены к порту контроллера P2.
Кнопка SB2 подключена к порту контроллера P3.2.
Кнопка SB3 подключена к порту контроллера P3.3.
Разработка программного обеспечения системы
1 Краткое описание системы команд микроконтроллера
Система команд АТ89С51 содержит 111 базовых команд которые удобно
разделить по функциональному признаку на пять групп: команды передачи
данных арифметических операций логических операций передачи управления и
Первый байт команды любого типа и формата всегда содержит код
операции (КОП). Второй и третий байты содержат либо адреса операндов либо
непосредственные операнды.
Команды передачи данных:
Большую часть команд данной группы составляют команды передачи и
обмена байтов. Команды пересылки битов представлены в группе команд битовых
операций. Все команды данной группы не модифицируют флаги результата за
исключением команд загрузки PSW и аккумулятора (флаг паритета).
Таблица 6 – Команды передачи данных
Арифметические операции:
Данную группу образуют 24 команды выполняющие сложения десятичной
коррекции инкрементадекремента байтов. Имеются команды вычитания
умножения и деления байтов.
Команды ADD и ADDC допускают сложение аккумулятора с большим числом
операндов. Аналогично командам ADDC существуют четыре команды SUBB что
позволяет достаточно просто производить вычитание байтов и многобайтных
В микроконтроллере реализуется расширенный список команд
инкрементадекремента байтов команда инкремента 16-битного регистра
Таблица 7 – Группа арифметических команд
Группа команд логических операций:
Данную группу образуют 25 команд реализующих функционально полную
систему логических операций над байтами. В микроконтроллере расширено число
типов операндов учавствующих в операциях.
Имеется возможность производить операции. “исключающее ИЛИ” с содержимым
портов. Команда XRL может быть эффективно использована для инверсии
отдельных битов портов.
Таблица 8 – Команды логических операций
Команды передачи управления:
К данной группе команд относятся команды условного и безусловного
ветвления вызова подпрограмм и возврата из них а также команда пустой
операции NOP. В большинстве команд используется прямая адресация т.е.
адрес перехода целиком (или его часть) содержится в самой команде передачи
управления. Можно выделить три разновидности команд ветвления по
разрядности указываемого адреса перехода.
Таблица 9 – Команды передачи управления
Команды операций с битами:
Отличительной особенностью данной группы команд является то что они
оперируют с однобитными операндами. В качестве таких операндов могут
выступать отдельные биты некоторых регистров специальных функций и портов
а также 128 программных флагов пользователя.
Существуют также конъюнкции сброса (CLR) установки (SETB) и инверсии
(CPL) битов а также конъюнкции и дизъюнкции бита флага переноса. Для
адресации битов используется прямой восьмиразрядный адрес (bit). Косвенная
адресация битов невозможна.
Таблица 10 – Команды операций с битами
2 Описание общего алгоритма работы системы
В начале происходит инициализация портов установка режимов таймеров
счетчиков разрешение прерываний выставление приоритетов прерываний.
Затем инициализируем МЖКИ. То есть подготавливаем его к работе.
Переводим курсор в верхнюю строку крайнее левое положение выводим
надпись Kireenko s4et4ik.
Производится подсчет импульсов счетчиком С0.
Переводится курсор во вторую строку позицию восьмую для вывода туда
Далее проверяется условие то есть нажатые кнопки если кнопка SB2 не
нажималась то есть VAR==1 то дальше производится подготовка вывода на
МЖКИ и непосредственно вывод. Если нажата то расчет значения количества
импульсов в минуту и вывод этого значения на МЖКИ.
После программа возвращается в подпрограмму подсчета импульсов и
продолжает работать по алгоритму описанному выше.
3 Разработка текста программы
В самом начале программы производится настройка таймеров счетчиков
прерываний приоритетов прерываний.
Далее вызывается подпрограмма инициализации МЖКИ. При запуске МЖКИ
настраивается в четырехразрядный режим поэтому первым шагом мы настраиваем
его в восьмиразрядный режим ввода информации. Затем производим все
необходимые нам настройки индикатора расписанные непосредственно в
комментариях самой программы в Приложении А.
Далее организуется подпрограмма положения курсора адрес курсора
хранится в области CGRAM МЖКИ одна строка в области начиная с 0x192
За тем выводится надпись с помощью подпрограммы вывода Data_MJKI. То
есть подается нужная последовательность импльсов на входы МЖКИ для передачи
данных( не команд) и происходит ввод в МЖКИ данных из name[].
Далее вызывается подпрограмма подсчета общего числа импульсов она
включает в себя чтения счетчика С0 формирование числа импульсов.
Подпрограмма вывода на МЖКИ выделяет 10000 1000 100101
части числа и выводит его с помощью рассмотренной выше подпрограммы
Ввод команд осуществляется с помощью подпрограммы Comand_MJKI.
Расчет количества импульсов в минуту с помощью таймера Т1. Таймер
отсчитывает минуту и после чего в переменную min заносится значения
импульсов хранящиеся в счетчике деленное на количество всех прошедших
Таким образом работает программа счетчика импульсов.
В результате выполнения курсовой работы было разработано
микропроцессорное устройство счета импульсов на баз микроконтроллера MCS-
Спроектированная система полностью удовлетворяет требованиям
изложенным в техническом задании. Система спроектирована на стандартных
элементах и типовых структурах и серийных блоках выпускаемых
Список использованной литературы
Москатов Е. А. Справочник по полупроводниковым приборам. — М.:
Журнал "Радио" 2005.- 208 с.: ил.
Справочная книга радиолюбителя-конструктора. Под редакцией Н.И.
Честякова. – М.: «Радио и связь»1990. - 617с.: ил.
sfr P0=0 инициализируем порнт P0
sfr P1=0 инициализируем порнт P1
sfr P2=0 инициализируем порнт P2
sfr P3=0 инициализируем порнт P3
sfr IE=0 инициализируем регистор прерываний
sfr TMOD=0 инициализируем регистор таймера
sfr TCON=0 инициализируем регистор таймера
sfr TH0=0 инициализируем регистор таймера
sfr TL0=0 инициализируем регистор таймера
sfr IP=0 инициализируем регистор парететов
sfr TH1=0 инициализируем регистор таймера
sfr TL1=0 инициализируем регистор таймера
uns Эта переменная будет соответствовать
количеству импульсов
name[16]=0x4B0x490x520x490x450x4E0x4B0x4F0x200x530x340x650x740
uns эта переменная будет определять нажатые
кнопки(отображать МИН или кол. импульсов)
uns эта переменная соотв. кол. минут
void vivod() interrupt 1 using 3 прерывания от таймера 0
void vivod_min() interrupt 3 using 3 прерывания от таймера 1
if(c1==60000) соответствует 1 мин
m расчет импульсов в минуту
void int1() interrupt 0 прерывание от кнопки 1
void int3() interrupt 2 using 3прерывание от кнопки 2
void Comand_MJKI (unsigned char command)Обработка команд на МЖКИ
начале мжки работает в 8-разрядном режиме
for (temp_ temp_ temp_ задержка 2
void Data_MJKI (unsigned char data_mgki)Вывод данных на МЖКИ
записанных в сам генератор символов
for (temp_ temp_ temp_задержка 2
void impulsi_vsego (void) расчитываем количество импульсов
спомощью счетчика CT0
void Go_to_XY(unsigned char x unsigned char y) установка курсора
в нужную нам строку и сегмент
if ( Коррекция возможной ошибки входных
установка курсора в нужную нам строку 1
if(y==0) установка курсора в нужную нам строку 2
void MJKI(unsigned short mjki) выделение числа и вывод его на
мжки макс число : 65000 импульсов
if((d==0)&&(digit==0))Data_MJKI(0
if((d==0)&&(digit==0)&&(n==0))Data_MJKI(0
if((d==0)&&(digit==0)&&(n==0)&&(k==0))Data_MJKI(0
Data_MJKI(0 выдуление 1
void Init_MJKI (void) Вначале мжки работает в 4-разрядном режиме
for (temp_ temp_ temp_ Пауза 15
мс ждем пока выставятся начальные настройки.
P2=52; Настраиваем на 8-битную передачу командданных(отправляем
старшую тетраду данных)
P12=1; Мигнал eneibl в высокий уровень
P12=0; Мигнал eneibl в низкий уровень что соответствует записи
P2=255; Настраиваем на 8-битную передачу
командданных(отправляем младшую тетраду данных)
for (temp_ temp_ temp_
Comand_MJKI(0очистка экрана
Comand_MJKI(0 режим отображения задаем параметры курсора
Comand_MJKI(0 присваение адреса СА в области СGRAM
Comand_MJKI(0 разрешение сдвига влево курсора
Comand_MJKI(0 установка 2 строки
IE=255; разрешение всех видов прерываний
IP=5; пререоретет от 1 и 2 инта
TMOD=29; Настройка таймера Т0 в режим счетчика с режимом работы 1
TCON=80; Запуск счетчика;
TH1=0; заполнение таймера
TL1=0; заполнение таймера
Go_to_XY(01); Выводим в верхнюю строку (KIRIENKO s4ey4ik)
Go_to_XY(80);В эту область (верхняя строка 8 сегмент) будет
выводится число импульсов.
up Наверх