Система регистрации уровня со сбором информации и клапаном управления

Анализ однокристальных микроконтроллеров MCS-51, основное назначение. Рассмотрение особенностей системы регистрации уровня со сбором информации и клапаном управления. Микросхема 80С554 как 8-разрядный микроконтроллер, изготовленный по КМОП-технологии.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 23.12.2012
Размер файла 316,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

клапан микросхема однокристальный

Целью данной курсовой работы является разработка схемы устройства - «Система регистрации уровня со сбором информации и клапаном управления» с использованием микроконтроллеров.

Среди последних доминирующее положение занимают однокристальные микро-контроллеры, иногда называемые в отечественной технической литературе однокристальными микроЭВМ. Они представляют собой большие интегральные микросхемы, в состав которых входят все необходимые для построения микропроцессорной системы функциональные узлы: процессор, память данных, память программ (который может отсутствовать), программируемые интерфейсные узлы для связи с внешней средой и вспомогательные узлы для обеспечения высокоэффективной работы микропроцессорной системы. Использование микроконтроллеров в вычислительно-измерительных устройствах позволяет обеспечить исключительно высокие технические характеристики, в том числе и метрологические, при сравнительно низкой стоимости.

Краткий обзор семейства однокристальных микроконтроллеров MCS-51

Несмотря на непрерывное совершенствование ранее созданных и разработку новых моделей 16- и 32-разрядных микроконтроллеров и микропроцессоров, наибольшая доля мирового микропроцессорного рынка остается за 8-разрядными устройствами. Среди 8-разрядных однокристальных микроконтроллеров (ОМК) ведущие позиции, бесспорно, занимает семейство MCS-51, родоначальницей которого является фирма INTEL. На сегодняшний день известно свыше 200 модификаций ОМК семейства MSC-51, выпускаемых примерно 20 фирмами. В состав ряда модификаций MCS-51 входят как относительно простые ОМК, выпускаемые в виде 20-выводных микросхем с одним таймером и ЗУ программ емкостью до 1 Kбайт, так и 100-выводные микросхемы с набором таймеров-счетчиков, с ЗУ программ емкостью 64 Kбайт, аппаратными 16-разрядными умножителями и встроенными системами сбора данных с 10-разрядными АЦП. Ежегодно появляются новые модификации этого семейства.

Краткое описание микроконтроллера 80С554. Общее описание контроллера

Микросхема 80С554 представляет собой 8-разрядный микроконтроллер, изготовленный по КМОП-технологии, и входит в состав непрерывно совершенствуемого семейства MCS-51. Микроконтроллер 80С554 предполагает использование внешней памяти программ и содержит память данных с организацией 512х8; четыре 8-разрядных порта ввода-вывода; два 16-разрядных таймера/счетчика. Кроме того, содержит встроенные контроллер шины I2C, и 10 разрядный Аналого-Цифровой преобразователь (АЦП).

Рис.

Таблица

Название

Вывод

Тип

Назначение

VSS1

22

I

Земля.

VCC

44

I

Питание +5V

P0.0-P0.7

54-61

I/O

Порт P0. Двунаправленный порт с открытым стоком.

P1.0-P1.7

23-30

I/O

Порт P1. Двунаправленный порт с внутренними подтягивающими резисторами.

Альтернативные функции:

SCL (P1.6) - Вход тактирования шины I2C.

SDA (P1.7) - Вход\выход данных шины I2C.

I/O

I/O

P2.0-P2.7

43-50

I/O

Порт P2. Двунаправленный порт с внутренними подтягивающими резисторами.

P3.0-P3.7

31-38

I/O

Порт P3. Двунаправленный порт с внутренними подтягивающими резисторами.

P4.0-P4.7

14-21

I/O

Порт P4. Двунаправленный порт с внутренними подтягивающими резисторами.

P5.0-P5.7

2-8

I/O

Порт P4. Двунаправленный порт с внутренними подтягивающими резисторами. Альтернативная функция - 8 мультиплексированных входов АЦП.

RST

10

I

Сигнал сброса микроконтроллера

Uref-

62

I

Низкий уровень опорного напряжения

Uref+

63

I

Высокий уровень опорного напряжения

XTAL1

21

I

Вход тактового генератора

XTAL2

20

O

Выход тактового генератора

AVSS

64

I

Аналоговое питание

AVDD

1

I

Аналоговая земля

Структура внутреннего ОЗУ

Внутреннее ОЗУ ОМК состоит из резидентной памяти данных (РПД) и регистров специальных функций (РСФ). РПД емкостью 512 байт разделена на три секции; первая занимает адресное пространство 00...7FH, вторая - 80H…FFH. Эти секции различаются способами адресации и возможным использованием расположенных в них ячеек РПД.

Рассмотрим эти различия

1-я секция РПД: адресация всех ячеек может быть как прямой, так и косвенной; ячейки с адресами 00...1FH могут быть использованы как регистры общего назначения, сгруппированные в 4 банка; для ячеек с адресами 20H…2FH допускается побитовая адресация; адреса битов - от 0 (младший бит ячейки с адресом 20Н) до 7FH (старший бит ячейки с адресом 2FH).

2-я секция РПД:

для всех ячеек этой секции (адреса 80H…FFH) допускается только косвенная адресация.

3-я секция РПД.

Расположена во внешнем сегменте данных (XSEG). Доступ к ней возможен командой MOVX, в том случае если бит EXTRAM равен 0.

Помимо указанных трех секций РПД в состав ОМК входит секция РСФ, значения которых расположены в области 80H...FFH, причем для них, в отличие от ячеек РПД, допускается лишь прямая адресация.

Порты ввода-вывода

Для обеспечения обмена информацией с внешними устройствами ОМК 80С554 имеет 6 8-разрядных портов Р0-Р5. Каждый из портов содержит фиксатор-защёлку, который представляет собой 8-разрядный регистр, допускающий как байтовую, так и битовую адресацию. Порты P0, P2, P3, P4 и P5 схемотехнически и алгоритмически полностью повторяют одноимённые порты ОМК 80С51. Отличие порта 1 ОМК 80С554 от одноимённого порта 80С51 определяется тем, что его выводы могут выполнять альтернативные функции.

Повторяя схемотехническую организацию одноимённого порта 80С51, выходные каскады каждого разряда порта Р0 ОМК 80С554 не содержат «подтягивающих резисторов» и, следовательно, порт Р0 является двунаправленным и имеет выходы с тремя состояниями. В портах Р1 (за исключением выводов Р1.6 и Р1.7), Р2 и Р3 ОМК 80С554 выходные каскады имеют «подтягивающие резисторы». Поэтому эти порты являются квазидвунаправленными и в состоянии «оборванный вход» их выводы имеют уровень логической «1». Выводы же Р1.6 и Р1.7 в режиме альтернативных функций являются линиями сигналов синхронизации SCL (Р1.6) и сигналов последовательно передаваемых данных SDA (Р1.7) шины I2C. Последняя для своего управления требует выходных каскадов с открытым коллектором или открытым стоком. В соответствии с этим требованием выходные каскады выводов Р1.6 и Р1.7 построены по схеме «открытый сток» и, естественно, не могут иметь «подтягивающих резисторов». Очевидно, что при работе в режиме обмена данными с внешними устройствами выводы Р1.6 и Р1.7 должны быть подсоединены к источнику питания ОМК через резисторы, рекомендуемое значение сопротивления которых равно 10 кОм.

Аналого-Цифровой преобразователь

Восьмиканальный АЦП состоит из коммутатора аналоговых сигналов, подаваемых на входы порта 5, и 10-разрядного АЦП последовательных приближений без внутреннего источника опорного напряжения.

Основные параметры АЦП

* Напряжение питания аналоговой части AVDD = VDD ± 0,2 В, где VDD - напряжение питания цифровой части.

* Ток потребления от источника AVDD - не более 1,0/1,2 мА (при частоте кварцевого резонатора 16/24 МГц).

* Диапазон входных напряжений AVIN - от AVSS - 0,2 В до AVDD + 0,2 В, где AVSS - потенциал низкого уровня источника AVDD.

* Потенциал высокого уровня источника опорного напряжения AVREF+ - не более AVDD + 0,2 В.

* Потенциал низкого уровня источника опорного напряжения AVREF- - не менее AVSS - 0,2 В.

* Выходной код N = 1024(AVIN - AVREF-)/( AVREF+ - AVREF-).

* Сопротивление входа для подключения источника опорного напряжения RREF - от 10 до 50 кОм.

* Емкость аналогового входа CIA - не более 15 пФ.

* Время выборки входного сигнала tADS - 8 машинных циклов.

* Рекомендуемое выходное сопротивление источника входного аналогового сигнала - не более 0,9 кОм.

* Максимальная скорость изменения входного сигнала VU,max - 10 В/мс.

* Время преобразования (включая время выборки) tADC - 50 машинных циклов.

* Погрешность дифференциальной линейности - не более ±1единицы младшего разряда (е.м.р.).

* Погрешность интегральной линейности - не более ±2 е.м.р.

* Смещение нулевого уровня (аддитивная погрешность) - не более ±2 е.м.р.

* Мультипликативная погрешность - не более ±0,4 %.

* Максимальное значение суммы аддитивной и мультипликативной погрешностей - не более ±3 е.м.р.

* Погрешность от взаимовлияния каналов - не более ±3 е.м.р.

Примечание. Все параметры указаны для рабочих условий эксплуатации ОМК.

Управление работой АЦП

Для управления работой АЦП предусмотрено два восьмиразрядных РСФ. РСФ ADCH (адрес - C6H, побитовая адресация не разрешена) содержит 8 старших разрядов результата аналого-цифрового преобразования (ADC9…ADC2).

РСФ ADCON (адрес - C5H, побитовая адресация не разрешена):

ADCON.7 (ADC.1) - 1-й бит результата аналого-цифрового преобразования;

ADCON.6 (ADC.0) - 0-й бит результата аналого-цифрового преобразования;

ADCON.5 (ADEX) - логическая 1 дает разрешение аппаратурного запуска АЦП;

ADCON.4 (ADCI) - флаг прерывания АЦП (устанавливается аппаратно, сбрасывается программно);

ADCON.3 (ADCS) - флаг состояния АЦП (логическая 1 - идет преобразование; может быть установлен программно, сбрасывается всегда аппаратно);

ADCON.2 (AADR2) - 2-й бит кода номера выбранного входа порта 5;

ADCON.1 (AADR1) - 1-й бит кода номера выбранного входа порта 5;

ADCON.0 (AADR0) - 0-й бит кода номера выбранного входа порта 5.

Запуск аналого-цифрового преобразователя может осуществляться как программным, так и аппаратурным способом. Программный запуск (состояние бита ADEX - любое). Преобразование начинается в начале машинного цикла, следующего за командой установки бита ADCS.

Аппаратурный запуск (состояние бита ADEX - логическая 1). Преобразование начинается в начале машинного цикла, следующего за машинным циклом, во время которого происходит перепад из "0" в "1" на входе STADC. Длительности импульса и паузы запускающего сигнала ограничены снизу длительностью одного машинного цикла. По завершении преобразования (при любом виде запуска) бит ADCS автоматически сбрасывается аппаратурными средствами ОМК; при этом устанавливается бит ADCI - вырабатывается запрос прерывания. Адрес вектора прерывания АЦП - 53H. До окончания начавшегося преобразования и программного сброса бита ADCI новый запуск АЦП блокируется.

Предварительно необходимо инициализировать прерывание, связанное с АЦП:

* разрешить прерывание - установить бит IEN0.6 (EAD, адрес - AEH) РСФ IEN0 (адрес - A8H, побитовая адресация разрешена);

* задать уровень приоритета прерывания битом IP0.6 (PAD, адрес BEH) РСФ IP0 (адрес - B8H, побитовая адресация разрешена).

При одновременном поступлении запроса прерывания от АЦП и какого-либо другого запроса прерывания во всех случаях, кроме внешнего прерывания INT0 и прерывания последовательного порта SIO1, первым будет обработано прерывание АЦП.

Разработка структурно-функциональной схемы

Устройство состоит из следующих функциональных блоков:

· Блок микроконтроллера

Осуществляет функционирование микроконтроллера. Состоит из следующих элементов:

o С1, С2, X1 - схема тактового генератора. Осуществляет выработку внешнего сигнала тактирования микроконтроллера частотой 12МГц.

o С3, R1 - схема первоначального сброса микроконтроллера. Обеспечивает корректный запуск.

o D1 - сам микроконтроллер.

· Блок клавиатуры

Клавиатура состоит из 8 кнопок. Выбор уровня осуществляется нажатием одной из кнопок.

· Блок индикации текущего уровня

Состоит из дешифратора кода символа для индикатора D2 и семисегментного индикатора D3.

Выбор элементной базы

При разработке устройства были использованы следующие электронные компоненты:

· Микроконтроллер 80С554. Этот микроконтроллер был выбран по причине хорошего соответствия поставленной задаче и низкой стоимости.

· Микросхема 514ИД1, представляющая собой дешифратор кодов символов для семисегментного индикатора.

· Семисегментный индикатор АЛС224.

Схема устройства

Таблица. Спецификация

Номер

Название

Обозн.

Назначение

1

80С554

D1

Микроконтроллер

3

514ИД1

D2

Дешифратор символов индикатора

6

АЛС224

D3

Семисегментный индикатор

7

1K

R9

Резистор в цепи сброса

8-15

R1-R8

Ограничивающие резисторы клавиатуры

16

10pf

C1-C2

Времязадающие конденсаторы

17

1мF

С3

Конденсатор цепи сброса

Разработка программной части устройства

Программа состоит из следующих частей:

· Блок объявления переменных

В этом блоке регистрам и специальным битам системных регистров присваиваются символьные значения для более удобного обращения к ним.

· Блок инициализации программы

В этом блоке осуществляется первоначальная настройка микроконтроллера. Установка битов управления и направления передачи данных в портах ввода вывода.

· Блок обработки прерывания от таймера

Осуществляет подсчет счетных импульсов таймера и установку соответствующих флагов: о прошествии 1 минуты и 5 минут.

· Основной цикл программы

Осуществляется ожидание нажатия клавиши пользователем и передача управления соответствующему блоку программы. А так же постоянное сравнение текущего уровня с заданным и включением соответствующего устройства для коррекции в случае расхождения. Так же происходит опрос подключенного к последовательному порту приемника и в случае его обнаружения выдается текущий уровень. Если приемник не обнаружен - данные сохраняются в памяти.

· Блок выдачи данных

Выдает накопленные данные в последовательный порт в случае его обнаружения.

Листинг программной части

kurs:do;

$include(reg51.dcl)

declare data(384) byte auxiliary; /* Массив данных */

/* Объявление переменных */

declare AUXR1 register at (0a2h);

declare ADCON register at (0c5h);

declare ADCH register at (0c6);

declare PUMP bit at (085h) register; /* p0.5 */

declare DRAIN bit at (086h) register; /* p0.6 */

declare P20 bit at (0a0h) register;

declare P21 bit at (0a1h) register;

declare P22 bit at (0a2h) register;

declare P23 bit at (0a3h) register;

declare P24 bit at (0a4h) register;

declare P25 bit at (0a5h) register;

declare P26 bit at (0a6h) register;

declare P27 bit at (0a7h) register;

declare t word; /* Счетчик 20х долей секунды */

declare sec word; /* Счетчик секунд */

declare sf byte; /* Флаг секунды */

declare sf5 byte; /* Флаг 5х минутного интервала */

declare ptr word; /* Указатель на конец блока данных */

declare lvl byte; /* Заданный уровень */

declare status word; /* Значение битов PUMP и DRAIN */

declare lastlvl byte; /* Последний зафиксированный уровень */

declare connected byte; /* Флаг подключенного устройства */

declare i word;

declare key byte;

/* Обработка прерывания таймера */

timer:procedure interrupt 1;

ea=0;

t = t-1;

if t=0 then /* Прошла 1 минута */

do;

t = 1200;

sf = 1;

sec = sec-1;

if sec=0 then /* Прошел интервал в 5 мин */

do;

sec = 5;

sf5 = 1;

end;

end;

th0=03ch;

tl0=0b0h;

tf0=0;

et0=1;

ea=1;

end timer;

/* Ининциализация */

PUMP = 0;

DRAIN = 0;

P2 = 255; /* P2 на вход */

sf = 0; /* Обнуление флагов */

sf3 = 0;

t = 1200; /* 20интервалов по 50000мкс = 1сек */

sec = 5;

tf0=0; /* сбрасываем флаг переполнения */

ea=1;

et0=1;

Th0=03ch; /* 15536 - счет до 65536 -> 50000 тактов таймера по 1мкс */

Tl0=0b0h;

tmod=00000001b; /* 1ый режим таймера 0 */

scon=00000001b;

ptr = 0;

status = 0;

lastlvl = 0;

connected = 0; /* Если 0 -> устройство не подключено */

/* Ининциализация АЦП */

AUXR1 = 1; /* Установка 8битного преобразования */

ADCON =

enable;

/* ------------------------------- */

do while 1; /* Главный цикл */

/* Определение нажатой клавиши */

key = -1;

if p20 = 0 then key=0;

if p21 = 0 then key=1;

if p22 = 0 then key=2;

if p23 = 0 then key=3;

if p24 = 0 then key=4;

if p25 = 0 then key=5;

if p26 = 0 then key=6;

if p27 = 0 then key=7;

/* Если кнопка была нажата - фиксируем новый уровень */

if (key > 0) lvl = key;

P0 = lastlvl + status; /* Выводим уровень на индикатор */

if sf = 1 then /* Если прошла одна секунда */

do;

/* Ожидание преобразования */

ADCON = 01000b; /* Начало преобразования */

/* Ожидание окончания преобразования */

do while (ADCON AND 010000b) = 0; end;

/* Выделяем старшие три бита результата */

lastlvl = ADCH / 32;

/* Включение насоса или клапана в зависимости от результатов */

if lastlvl > lvl then do; DRAIN = 1; PUMP = 0; end;

if lastlvl < lvl then do; DRAIN = 0; PUMP = 1; end;

if lastlvl = lvl then do; DRAIN = 0; PUMP = 0; end;

/* Установка значения для записи в P0 */

status = DRAIN * 128 + PUMP * 64;

/* Обработка флага подключенного устройства */

connected = 0; /* Устанавливаем что устройство не подключено */

ti = 0;

sbuf = lastlvl; /* Отправляем данные */

do while ti = 0; end; /* Ожидание завершения передачи */

ri=0;

/* Ждем 100 мс. Если устройство подключено, то за это время придет подтверждение */

call time(100);

/* Если RI=1 значит пришел ответ от устройства */

if ri = 1 then connected = 1;

sf = 0;

end;

if sf5 = 1 then /* Если прошло 5 минут */

do;

/* Сохраняем в массиве последний измеренный уровень */

data(ptr) = lastlvl;

ptr = ptr + 1;

/* Если уже прошли сутки - начинаем сохранять заново */

if ptr = 288 then ptr = 0;

if connected = 1 then /* Если устройство подключено */

do;

/* Последний байт не выводим т.к. уже его вывели раньше */

do i=0 to ptr-1;

/* Сброс флага переданного байта */

ti = 0;

sbuf = data(i);

/* Ожидание завершения передачи */

do while ti = 0; end;

end;

/* Обнуляем счетчик сохраненных данных */

ptr = 0;

end;

sf3 = 0;

end;

end;

end kurs;

Заключение

В ходе выполнения курсовой работы было выполнено проектирования микропроцессорного устройства «Система регистрации уровня с блоком сбора информации и клапаном управления».

Была разработана принципиальная схема устройства и программа для микроконтроллера, осуществляющая все функции устройства.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.