1. История появления микроконтроллеров

advertisement
Министерство образования Республики Коми
Коми республиканский лицей при Сыктывкарском государственном университете
Разработка автоматического
измерителя АЧХ на четырех
микроконтроллерах
Выполнил: Данильченко Кирилл
Научный руководитель: Есева В.Ю.
Сыктывкар 2013
1
Содержание
стр
.
Введение…………………………………………………………….…….3
1. История появления микроконтроллеров………..……………………....5
2. Ядро AVR
2.1 Краткое описание …………………………………...……………......6
2.2 История микроконтроллеров AVR ….………………………………7
2.3 Устройство ввода/вывода МК ……………………………………….8
2.4 Семейства микроконтроллеров AVR ………………………….…….9
3. Ядро PIC
3.1 8-битные микроконтроллеры ………………………………………10
3.2 16-битные микроконтроллеры ……………………………………..12
3.3 32-битные микроконтроллеры ……………………………………..13
4. Функции SPI …………………..…………………………………………14
5. LCD – функции ………………………………………………………….18
6. Схема прибора ……………..………………………………………...….24
7. Принцип действия прибора и методы решения……………………….25
Заключение ………………..…………………………….........................27
Список литература …………..……………………………………...…..28
Приложения ………………………………………………………..…....30
2
Введение
Микроконтроллер (англ. Micro Controller Unit, MCU) — микросхема,
предназначенная для управления электронными устройствами. Типичный
микроконтроллер сочетает на одном кристалле функции процессора и
периферийных устройств, содержит ОЗУ или ПЗУ. По сути, это
однокристальный компьютер, способный выполнять простые задачи.
Частотная характеристика УНЧ (АЧХ) – зависимость напряжения на выходе
усилителя от частоты при условии, что на всех частотах на вход усилителя
подаётся одинаковое напряжение .
Тема исследования очень актуальна, поэтому было решено создать проект
измерителя амплитудно частотной характеристики усилителя низких частот.
Для этого будет необходимо разработать: принципиальную схему прибора
по новому принципу действия, программное обеспечение четырех для
микроконтроллеров, ввести дополнительные подключения к компьютеру.
Гипотеза: Возможно разработать автоматический измеритель амплитудночастотной
характеристики,
превосходящий
по
всем
техническим
характеристикам предшественников.
Цель исследования: разработать автоматический измеритель АЧХ на
микроконтроллерах AVR и PIC по новому принципу работы.
В данном исследовании поставлены задачи:
1) Изучить структурные схемы микроконтроллеров PIC, AVR и ARM.
2) Изучить программирование данных микроконтроллеров на языках:
ассемблер, Basic и C++.
3) Разработать принципиальную электрическую схему более скоростного
автоматического измерителя АЧХ.
4) Создать программное обеспечение для четырёх микроконтроллеров.
5)Сравнить АИАЧХ по-стандартному и усовершенствованному принципу
работы.
Неполный список периферии, которая может присутствовать в
микроконтроллерах, включает в себя:
-универсальные цифровые порты, которые можно настраивать как на ввод, так
и на вывод;
-различные интерфейсы ввода-вывода, такие как UART, I²C, SPI, CAN, USB,
IEEE 1394, Ethernet;
3
-аналого-цифровые и цифро-аналоговые преобразователи;
-компараторы;
-широтно-импульсные модуляторы;
-таймеры;
-контроллеры бесколлекторных двигателей;
-контроллеры дисплеев и клавиатур;
-радиочастотные приемники и передатчики;
-массивы встроенной флеш-памяти;
-встроенный тактовый генератор и сторожевой таймер;
Использование в современном микроконтроллере достаточного мощного
вычислительного устройства с широкими возможностями, построенного на
одной микросхеме вместо целого набора, значительно снижает размеры,
энергопотребление и стоимость построенных на его базе устройств.
Используются в управлении различными устройствами и их отдельными
блоками:
-в вычислительной технике: материнские платы, контроллеры дисководов
жестких и гибких дисков, CD и DVD;
-электронике и разнообразных устройствах бытовой техники, в которой
используется электронные системы управления — стиральных машинах,
микроволновых печах, посудомоечных машинах, телефонах и современных
приборах;
В промышленности:
-устройств промышленной автоматики — от программируемого реле и
встраиваемых систем до ПЛК,
-систем управления станками
4
1. История появления микроконтроллеров
С появлением однокристальных микро-ЭВМ связывают начало эры массового
применения компьютерной автоматизации в области управления. По-видимому,
это обстоятельство и определило термин «контроллер» (англ. controller —
регулятор, управляющее устройство).
В связи со спадом отечественного производства и возросшим импортом
техники, в том числе вычислительной, термин «микроконтроллер» (МК)
вытеснил из употребления ранее использовавшийся термин «однокристальная
микро-ЭВМ».
Первый патент на однокристальную микро-ЭВМ был выдан в 1971 году
инженерам М. Кочрену и Г. Буну, сотрудникам американской Texas Instruments.
Именно они предложили на одном кристалле разместить не только процессор,
но и память с устройствами ввода-вывода.
В 1976 году американская фирма Intel выпускает микроконтроллер i8048. В
1978 году фирма Motorola выпустила свой первый микроконтроллер MC6801,
совместимый по системе команд с выпущенным ранее микропроцессором
MC6800. Через 4 года, в 1980 году, Intel выпускает следующий
микроконтроллер: i8051. Удачный набор периферийных устройств, возможность
гибкого выбора внешней или внутренней программной памяти и приемлемая
цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения
технологии микроконтроллер i8051 являлся для своего времени очень сложным
изделием — в кристалле было использовано 128 тыс. транзисторов, что в 4 раза
превышало количество транзисторов в 16-разрядном микропроцессоре i8086.
На
сегодняшний
день
существует
более
200
модификаций
микроконтроллеров, совместимых с i8051, выпускаемых двумя десятками
компаний, и большое количество микроконтроллеров других типов.
Популярностью у разработчиков пользуются 8-битные микроконтроллеры PIC
фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы
TI, а также 32-битные микроконтроллеры, архитектуры ARM, которую
разрабатывает фирма ARM Limited и продаёт лицензии другим фирмам для их
производства. Несмотря на популярность в России микроконтроллеров
упомянутых выше, по данным Gartner Grup от 2009 года мировой рейтинг по
объёму продаж выглядит иначе: первое место с большим отрывом занимает
Renesas Electronics на втором Freescale, на третьем Samsung, затем идут
Microchip и TI, далее все остальные[25].
5
2. Ядро AVR
2.1.Краткое описание :
AVR — семейство восьмибитных микроконтроллеров фирмы Atmel. Год
разработки — 1996.
Микроконтроллеры AVR имеют гарвардскую архитектуру (программа и
данные находятся в разных адресных пространствах) и систему команд, близкую
к идеологии RISC. Процессор AVR имеет 32 8-битных регистра общего
назначения, объединённых в регистровый файл.
Система команд микроконтроллеров AVR весьма развита и насчитывает в
различных моделях от 90 до 133 различных инструкций.
Большинство команд занимает только 1 ячейку памяти (16 бит).
Большинство команд выполняется за 1 такт.
Всё множество команд микроконтроллеров AVR можно разбить на несколько
групп:
1) команды логических операций;
2) команды арифметических операций и команды сдвига;
3) команды операции с битами;
4) команды пересылки данных;
5) команды передачи управления;
6) команды управления системой.
Управление периферийными устройствами осуществляется через адресное
пространство данных. Для удобства существуют «сокращённые команды»
IN/OUT[26].
6
2.2.История микроконтроллеров AVR :
Идея разработки нового RISC-ядра принадлежит двум студентам Norwegian
University of Science and Technology (NTNU) из норвежского города Тронхейма
(Trondheim) — Альфу Богену (Alf-Egil Bogen) и Вегарду Воллену (Vegard
Wollen). В 1995 году Боген и Воллен решили предложить американской
корпорации Atmel, которая была известна своими чипами с Flash-памятью,
выпускать новый 8-битный RISC-микроконтроллер и снабдить его Flashпамятью для программ на одном кристалле с вычислительным ядром.
Идея была одобрена Atmel Corp., и было принято решение незамедлительно
инвестировать в данную разработку. В конце 1996 года был выпущен опытный
микроконтроллер AT90S1200, а во второй половине 1997-го корпорация Atmel
приступила к серийному производству нового семейства микроконтроллеров, к
их рекламной и технической поддержке.
Новое ядро было запатентовано и получило название AVR. Существует
несколько трактовок данной аббревиатуры. Кто-то утверждает, что это Advanced
Virtual RISC, другие полагают, что не обошлось здесь без Alf Egil Bogen Vegard
Wollan RISC[23].
7
2.3.Устройства ввода/вывода МК :
МК AVR имеют развитую периферию:
1) Многофункциональные, двунаправленные GPIO порты ввода/вывода со
встроенными подтягивающими резисторами. Конфигурация портов в/в
задаётся программно.
2) В качестве источника тактовых импульсов может быть выбран:
2.1) кварцевый резонатор;
2.2) внешний тактовый сигнал;
2.3) внутренний RC-генератор (частота 1, 2, 4, 8 МГц).
3) Внутренняя Флеш-память команд до 256 KБ (не менее 10 000 циклов
перезаписи).
4) Отладка программ осуществляется с помощью интерфейсов JTAG или
debugWIRE:
4.1) сигналы JTAG (TMS, TDI, TDO, и TCK) мультиплексированы на
порт ввода/вывода. Режим работы — JTAG или порт — задаётся
соответствующим битом в регистре fuses. МК AVR поставляются с
включённым интерфейсом JTAG.
5) Внутреннее EEPROM данных до 4 КБ (100 000 циклов).
6) Внутренняя SRAM до 8 KБ время доступа 1 такт.
7) Внешняя память объёмом до 64 КБ (Mega8515 и Mega162).
8) Таймеры c разрядностью 8, 16 бит.
9) ШИМ-модулятор (PWM) 8-, 9-, 10-, 16-битный.
10) Аналоговые компараторы.
11) АЦП (ADC) с дифференциальными входами, разрядность 10 бит (12 для
XMEGA AVR):
11.1) программируемый коэффициент усиления перед АЦП 1, 10 и 200;
11.2) опорное напряжение 2,56 В.
Различные последовательные интерфейсы, включая:
двухпроводной интерфейс TWI, совместимый с I²C;
универсальный синхронно/асинхронный приёмопередатчик UART/USART;
синхронный последовательный порт Serial Peripheral Interface (SPI).
USB серия AT90USBxxxx.
CAN серия AT90CANxxx.
LCD серии ATmega169 и ATmega329.
Датчики температуры ATtiny25, ATtiny45, ATtiny85.
Примечание: не все периферийные устройства могут быть включены
программно. Бит в регистре fuses может быть изменён только
программатором[26].
8
2.4.Семейства микроконтроллеров AVR :
Стандартные семейства:
- tinyAVR (ATtinyxxx):
- Флеш-память до 16 Кб; SRAM до 512 б; EEPROM до 512 б;
- Число линий ввод-вывода 4-18 (общее количество выводов 6-32);
- Ограниченный набор периферийных устройств.
- megaAVR (ATmegaxxx):
- Флеш-память до 256 Кб; SRAM до 8 Кб; EEPROM до 4 Кб;
- Число линий ввода-вывода 23-86 (количество выводов 28-100);
- Аппаратный умножитель;
- Расширенная система команд и периферийных устройств.
- XMEGA AVR (ATxmegaxxx):
- Флеш-память до 384 Кб; SRAM до 32 Кб; EEPROM до 4 Кб;
- Четырёхканальный DMA-контроллер;
- Инновационная система обработки событий.
На основе стандартных семейств выпускаются микроконтроллеры,
адаптированные под конкретные задачи:
- со встроенными интерфейсами USB, CAN, контроллером LCD;
- со встроенным радиоприёмопередатчиком — серии ATAхxxx, ATAMxxx;
- для управления электродвигателями — серия AT90PWMxxxx;
- для автомобильной электроники;
Версии контроллеров
- AT(mega/tiny)xxx — базовая версия.
- ATxxxL — версии контроллеров, работающих на пониженном (Low)
напряжении питания (2,7 В).
- ATxxxV — версии контроллеров, работающих на низком напряжении
питания (1,8 В).
- ATxxxP — малопотребляющие версии (до 100 нА в режиме Power-down),
применена технология picoPower (анонсированы в июле 2007)[1], повыводно и
функционально совместимы с предыдущими версиями.
- ATxxxA — уменьшен ток потребления, перекрывается весь диапазон
тактовых частот и напряжений питания двух предыдущих версий (также, в
некоторых моделях, добавлены новые возможности и новые регистры, но
сохранена полная совместимость с предыдущими версиями).
- АТxxx-PI — корпус DIP
- АТxxx-PU — корпус DIP, бессвинцовый припой
- АТxxx-AI — корпус TQFP
- АТxxx-AU — корпус TQFP, бессвинцовый припой
(цифры 8/10/16/20/.. перед индексом означают максимальную частоту, на
которой микроконтроллер может стабильно работать при нормальном для него
напряжении питания) [27].
9
3.Ядро PIC
3.1. 8-битные микроконтроллеры :
PIC — микроконтроллеры Гарвардской архитектуры,
американской компанией Microchip Technology Inc.
производимые
8-битные микроконтроллеры имеют модифицированную Гарвардскую
архитектуру и делятся на 2 больших семейства: PIC10/12/16 и PIC18.
8-битные микроконтроллеры PIC10/12/16
8-битные микроконтроллеры PIC10/12/16 представлены двумя базовыми
архитектурами ядра: BASELINE и MID-RANGE.
Архитектура базового (BASELINE) семейства
Базовая архитектура (BASELINE) состоит из контроллеров семейства PIC10 и
части контроллеров семейств PIC12 и PIC16. Основываются они на 12-и
разрядной архитектуре слова программ и представлены контроллерами в
корпусах от 6 до 28-и выводов. Упрощенная архитектура базового семейства
предоставляет наиболее дешевое решение из предлагаемых Microchip. Широкий
диапазон напряжений питания, возможность работы при низких напряжениях
преследует целью возможность применения микроконтроллеров в батарейных
устройствах.
-маловыводные и миниатюрные корпуса
-Flash память программ
-низкое потребление тока
-низкая цена
-легкое освоение, всего 35 команд
Архитектура среднего (MID-RANGE) семейства
Архитектура среднего семейства (Mid-Range) нашла применение в
микроконтроллерах серий PIC12 и PIC16, и имеет ширину слова памяти
программ 14 бит. Эти микроконтроллеры выпускаются в корпусах от 8 до 64
выводов. Микроконтроллеры с Flash памятью работают в диапазоне напряжений
питания от 2.0 до 5.5В, имеют систему прерываний, аппаратный стек и
энергонезависимую память данных EEPROM, а также богатый набор периферии,
такой как USB, SPI, I²C, USART, LCD, компараторы, АЦП и т. п.
-различные корпуса: 6 — 64 выводов
-Flash память программ
-малый ток потребления
10
-богатая периферия
-производительность 5 MIPS
-легкое освоение, всего 35 команд
Расширенное ядро микроконтроллеров среднего семейства
В более новых микроконтроллерах Microchip применяет улучшенную
архитектуру 8-битных PIC микроконтроллеров среднего семейства PIC12 и
PIC16:
-увеличенный объем памяти программ и данных
-более глубокий и улучшенный аппаратный стек
-дополнительные источники сброса
-расширенная периферия, периферия включает модуль mTouch ™ для
создания сенсорных пользовательских интерфейсов
-уменьшенное время входа в прерывание
-производительность увеличена на 50 %, а размер кода снижен на 40 %
-14 дополнительных инструкций, оптимизированных под С-компилятор —
итого, 49 инструкций[24].
8-битные микроконтроллеры PIC18
Высокопроизводительное семейство 8-битных микроконтроллеров PIC18F
представлено широкой гаммой микроконтроллеров, включающих большой
набор периферийных модулей: 10бит АЦП, компараторы, ШИМ,
захват/сравнение, драйвер ЖКИ; интерфейсы связи USB, CAN, I2C, SPI, USART,
Ethernet и т. д.
-быстродействия до 16 MIPS
-объем памяти программ до 128Кб
-корпуса от 18 до 100 выводов.
-эффективное кодирование на C
-NanoWatt технологии
-встроенный программируемый генератор
-3В и 5В семейства
-продвинутая архитектура (16-и разрядные слова программ)
-гибкость самопрограммирования
-поддержка широко распространенных протоколов связи (CAN, USB,
ZigBee™, TCP/IP)
-программная совместимость и совместимость по выводам и периферийным
модулям внутри семейства, а также со старшими (16-битными) семействами,
предоставляют возможность расширения и увеличения функциональности при
развитии разработок[21].
11
3.2.16-битные микроконтроллеры :
Компания Microchip Technology Inc. производит два семейства 16-и
разрядных микроконтроллеров (MCU) и два семейства 16-и разрядных
цифровых сигнальных контроллеров (DSC), которые дают разработчикам
совместимые платформы с обширным выбором типов корпусов, периферийных
модулей и быстродействия. Общие атрибуты всех 16-и разрядных семейств —
это совместимость по выводам, общая система команд и, соответственно, общие
компиляторы Си и средства разработки. Широкая линейка 16-битных
контроллеров включает контроллеры от 18 до 100 выводов с объемом flash
памяти от 6 Кб до 536 Кб.
16-битные микроконтроллеры PIC24F и PIC24H
Основные особенности:
-выполнение команды за 2 такта генератора
-гарантированное время отклика на прерывание — 5 командных тактов
-доступ к памяти (в том числе инструкции чтения-модификации-записи) за 1
командный такт
-аппаратный умножитель (за 1 такт)
-аппаратный делитель 32/16 и 16/16 чисел (17 командных тактов)
-диапазон питающих напряжений 1.8…3.6В, один источник питания.
-внутрисхемное и само- программирование
-встроенный генератор с PLL
-расширенная периферия (до 3-х SPI, до 3-х I2C, до 4-х UART (с поддержкой
IrDA, LIN), CAN (и расширенный ECAN), USB OTG)
-модуль измерения времени заряда (CTMU), основное применение —
управление емкостными сенсорами
-ток портов ввода/вывода общего назначения — 18 мА
-порты толерантны к устройствам с 5 В питанием
-до девяти 16-битных таймеров общего назначения
-до восьми модулей захвата
-ряд энергосберегающих режимов
-до двух АЦП (32 канала) с конфигурируемой разрядностью
-до восьми 16-битных модулей сравнения / генерации ШИМ
-программное переназначение выводов (PPS)
-прямой доступ к памяти DMA(у PIC24H)
-расширенный набор инструкций, 16 ортогональных регистров общего
назначения, векторная приоритетная система прерываний, и другие особенности
(методы адресации, аппаратные циклы) [13].
12
3.3.32-битные микроконтроллеры :
Старшим семейством контроллеров от Microchip Technology является 32разрядное семейство микроконтроллеров PIC32:
-ядро MIPS32 M4K, частота тактирования 80 МГц, большинство команд
выполняются за 1 такт генератора, производительность 1.53 Dhrystone
MIPS/МГц
-порты ввода/вывода относятся к основному частотному диапазону, т.о., к
примеру, можно дергать портами с тактовой частотой.
-дополнительный частотный диапазон организуется для периферии из
основного посредством программно настраиваемого делитель, т.о. частота
тактирования периферии может быть снижена для снижения энергопотребления.
-28-, 44-, 64- и 100-выводные корпуса, до 128 кБ SRAM и 512 кБ Flash с кэшем
предвыборки
-совместимость по выводам и отладочным средствам с 16-битными
контроллерами Microchip
-аппаратный умножитель-делитель с независимым от основного ядра
конвейером, оптимизированным по скорости выполнения
-набор расширенных инструкций MIPS16e™ — набор 16-битных инструкций,
позволяющий на некоторых приложениях снизить объем кода на 40 %
-независимый от основного ядра контроллер USB
Семейство 32-разрядных микроконтроллеров PIC32 выделяется значительно
увеличенной производительностью и объемом памяти на кристалле по
сравнению с 16-разрядными микроконтроллерами и контроллерами цифровой
обработки сигналов PIC24/dsPIC. Контроллеры PIC32 также оснащены большим
количеством периферийных модулей, включая различные коммуникационные
интерфейсы — те же, что у PIC24, и 16-битный параллельный порт, который
может использоваться, например, для обслуживания внешних микросхем памяти
и жидко-кристаллических TFT-индикаторов. Семейство PIC32 построено на ядре
MIPS32®, с конкурентоспособной комбинацией низкого потребления энергии,
быстрой реакции на прерывание, функциональностью средств разработки и
лидирующем в своем классе быстродействием 1.53 Dhrystone MIPS/МГц. Такое
быстродействие достигнуто благодаря эффективному набору инструкций, 5ступенчатому конвейеру, аппаратному умножителю с накоплением и
несколькими (до 8) наборами 32-разрядных регистров ядра[21].
13
4.Функции SРI
Эти функции предназначены для облегчения пользователю сопряжения
между программами Си и различными периферийными устройствами,
использующими шину SPI.
Интерфейс SPI использует три линии для последовательной связи.
Дополнительно к многочисленным устройствам памяти все хорошо
известные производители предлагают совместимые с SPI аналого-цифровые
(АЦП) и цифро-аналоговые (ЦАП) преобразователи, часы реального
времени (RТС) и другие устройства.
Связи, требующиеся в типовом SРI-интерфейсе, показаны на Рис. 1. Микроконтроллер (МСU) посылает последовательные данные через свою МОSI
(Master Out Slаvе In — Выход ведущего/Вход ведомого) линию на вход
SI( S1аvе In — Вход ведомого) периферийного устройства. Периферийное
устройство посылает свои данные через выход SО (S1аvе Out — Выход
ведомого) на линию МISО. Обмен данных синхронизируется сигналом
тактовой частоты SСК, который генерирует микроконтроллер.
Сигналы Chip Select (Выбор чипа) SS0. . .SS3 активизируют
периферийное устройство для доступа.
Рис. 1 Последовательный SРI-интерфейс.
Пример синхронизации для обмена данных между микроконтроллером
(master) и периферийным (slave) устройством по интерфейсу SPI показан на
Рис. 2
14
Рис. 2 Синхронизация SPI.
Функции, которыми требуется управлять через SPI, зависят от используемого
периферийного устройства.
Интерфейс SPI работает подобно 8-битовому регистру сдвига. Байт, который
требуется послать, сохраняется в регистре и будет перемещаться бит за битом на
вывод МОSI. Освобождающиеся позиции заполняются битами, полученными
с вывода МISО. Для передачи байта в регистр потребуется 8 тактов.
Некоторые микроконтроллеры AVR имеют встроенный SPI. Если должно
быть использовано это внутреннее периферийное устройство, то следует
соответствующим образом сконфигурировать выводы микроконтроллера.
Микроконтроллеры с внутренними аппаратными средствами SPI допускают
конфигурацию полярности и фазы тактовой частоты SСК. При отсутствии
аппаратного SPI правильность синхронизации сигналов должна быть
запрограммирована.
Весь обмен данными SPI организовывает SPI Control Register (Регистр управ
ления SPI) - SРСR (Рис. 3) [25].
Рис. 3 Биты регистра SРСR.
Биты управляющего регистра SPI устанавливаются следующим образом.

Установка бита SPE (SPI Enable — Разрешение SPI) в 1 разрешает SPI. Этот
15






бит должен быть установлен для разрешения любой SPI-операции.
Если бит DORD (Data Огdег — Порядок данных) установлен в 1, то первым
будет передаваться младший байт (LSB). Если этот бит сброшен в 0, то первым будет передаваться старший байт (MSB).
Бит MSTR (Master/S1аvе Select — Выбор Маster/Slave) выбирает режим SPI,
в котором работает микроконтроллер: 1 — режим Master, 0 — режим Slave.
Бит CPOL (C1ock Ро1агitу - Полярность тактовых импульсов) определяет
полярность тактовых импульсов: 1 — по высокому уровню, 0 — по низкому
уровню.
Бит СРНА (C1ock Рhаsе — Фаза тактовых импульсов) определяет фазу тактовых импульсов: 1 — по началу цикла, О — по половине цикла.
Биты SPR1 и SPR0 (SPI Сlосk Rate Select 1 и 2 — Выбор показателя тактовой
частоты SPI) определяют показатель тактовой частоты SPI, когда
микроконтроллер в режиме master. Соотношение между тактовой частотой
микроконтроллера и SCK, в зависимости от значения этих битов, приведено
в Табл. 1.
Установка бита SPIE (SPI Interrupt Enable - Разрешение прерывания SPI)
в 1 разрешает прерывание SPI.
Таблица 1 Соотношение между тактовой частотой
микроконтроллера и SСК
Перечень функций SPI и их действия приведены в Табл. 2
Таблица 2 Перечень функций SРI
Прототипы этих функций размещаются в файле spi.h, расположенном в
поддиректории ..\INC. Перед использованием этих функций директивой
#include должен быть подключён файл spi.h [12].
16
5.LCD – функции
LCD-функции предназначены для облегчения пользователю сопряжения
между программами Си и алфавитно-цифровыми LCD-модулями со встроенным
чипом HD44780 от Hitachi или эквивалентным.
Контроллер HD44780 потенциально может управлять двумя строками по 40
символов в каждой (для модулей четырьмя строками по 40 символов
используются два однотипных контроллера).
Название и описание выводов рассматриваемых LCD приведено в Табл. 3
Таблица 3 Описание выводов LCD на базе HD44780
При помощи этих выводов LCD обменивается информацией с управляющим
микроконтроллером (в нашем случае - с AVR). Микроконтроллер AVR
посылает в LCD команды, управляющие режимами его работы, и коды
выводимых символов. В свою очередь LCD может посылать
микроконтроллеру AVR по его запросу информацию о своём состоянии и
данные из своих внутренних блоков памяти.
Три вывода LCD предназначены для подачи питающего напряжения
(VSS, VDD) и напряжения смещения (V0), которое управляет контрастностью
дисплея. На Рис. 4 показана схема питания этих выводов.
Рис. 4 Cхема питания LCD.
Выводы DВ0...DВ7 используются для организации мультиплексированной
шины «Команды/данные». На выводы RS, R/W, Е (или Е1, Е2 для LCD 4х40)
микроконтроллер AVR выставляет управляющие сигналы.
17
При помощи сигнала на линии RS микроконтроллер сообщает контроллеру
LCD о том, что именно передаётся по шине: команда или данные. Если RS = 0,
адресуется регистр команд, если RS = 1 - регистр данных.
Данные через регистр данных, в зависимости от текущего режима, могут помещаться (или прочитываться) в видеопамять (DDRAM) или в ОЗУ
знакогенератора (CGRAM) по текущему адресу.
Информация, попадающая в регистр команд, интерпретируется устройством
выполнения команд как управляющая последовательность. Прочтение регистра
команд возвращает в семи младших битах текущее значение счётчика адреса
(АС), а в старшем разряде - флаг занятости (ВЕ).
Сигнал на линии Е (или Е1, Е2) является стробом, сопровождающим сигналы на
шине «Команды/данные». Запись информации в LCD происходит по спаду этого
сигнала.
Потенциал на управляющем выводе R/W задаёт направление передачи данных: запись в RAM LCD (R/W = 0) или считывание оттуда (R/W = 1).
Для случая, когда микроконтроллер имеет ограниченное количество линий
ввода/вывода, предусмотрен второй вариант подключения LCD с
использованием 4-битной шины «Команды/данные». При этом каждый байт
данных передаётся по линиям 0В4...ВВ7 последовательно двумя тетрадами,
начиная со старшей.
Контроллер LCD после приёма байта команды или байта данных требует
некоторого времени для обработки полученной информации, в течение
которого микроконтроллер AVR не должен выполнять новые передачи.
Для того чтобы определить, когда контроллер LCD закончит свои внутренние
операции, микроконтроллер AVR может опрашивать BUSY-флаг (флаг занятости
- ВЕ), который сбросится только тогда, когда контроллер LCD освободится.
Второй, более простой способ заключается в том, что управляющий
микроконтроллер, зная, сколько времени требуется LCD на обработку той или
иной команды, просто выполняет временную задержку после каждой передачи
информации.
Видеопамять (DDRAM), имеющая общий объём 80 Б, предназначена для хранения кодов символов, отображаемых на LCD. Видеопамять организована в две
строки по 40 символов в каждой. Эта привязка является жесткой и не подлежит
изменению, другими словами, независимо от того, сколько реальных строк будет
иметь каждый конкретный LCD-модуль скажем, 80х1 или 20х4, адресация
видеопамяти всегда производится как к двум строкам по 40 символов.
При записи или считывании буфера данных обращение осуществляется к
ячейке, на которую в данный момент указывает курсор. У двустрочных LCD
первые 40 ячеек буфера данных обычно отображаются на верхней строке
дисплея, а вторые 40 ячеек - на нижней.
Кроме DDRAM, контроллер LCD содержит ещё один блок памяти - знакогенератор. Его «прошивка», т. е. соответствие кодов начертанию символов, обычно
имеется в описании LCD. Пример такой «прошивки» представлен в Табл. 4.
Из допустимых для размещения в DDRAM кодов символы с кодами
0х00...0х07 (и их дубликаты с кодами 0х08...0х0F) имеют специальное
18
назначение - это переопределяемые символы, графическое изображение которых может назначить сам пользователь, поместив соответствующую информацию в области CGRAM. Для программирования доступны 8 переопределяемых
символов в режиме с матрицей 5х7 точек. Для каждого из восьми перепрограммируемых символов в CGRAM отводится по 8 ячеек памяти, каждая из которых со
ответствует одной строке точек в изображении символа. Для символа 0 (код
сим вола 0х00) адреса ячеек памяти - 0х00...0х07, для символа 1 (код символа 0х01)
адреса ячеек памяти - 0х08...0х0F и т. д. Таким образом, перепрограммируемая
часть знакогенератора содержит 64 байта памяти (8х8).
Для кодирования матрицы используются горизонтально «уложенные» байты,
пять младших битов которых несут информацию о рисунке (причём 1
означает, что сегмент будет включён), 4-й бит каждого из 8 байтов матрицы
определяет ле вую колонку символа, а 0-й - правую. Старшие три бита не
используются и могут иметь любые значения[12].
Таблица 4. Пример прошивки знакогенератора LCD-модуля на базе
HD44780
Пример кодирования CGRAM для одного символа приведён на Рис. 5
(символ 2, код символа 0х02).
19
Рис. 5. Пример кодирования символа (незначащие биты показаны светлым
шрифтом).
У контроллера HD44780 существует набор внутренних флагов (Табл. 5), определяющих режимы работы различных элементов контроллера.
Таблица 5. Флаги, управляющие работой контроллера HD44780
В Табл. 6 приведены значения управляющих флагов непосредственно после
подачи на LCD напряжения питания. Переопределение значений флагов
производится специальными командами, записываемыми в регистр команд,
при этом комбинации старших битов определяют группу флагов или команду,
а младшие содержат собственно флаги.
питания
Таблица 6. Значения управляющих флагов после подачи напряжения
20
Список управляющих комбинаций битов регистра команд и выполняемые
команды приведены в Табл. 7[32].
Таблица 7. Управляющие комбинации битов регистра команд
Так как на момент включения LCD ничего не отображает (флаг В = О), то, для того
чтобы вывести какой-либо текст, необходимо, как минимум, включить отображение,
установив флаг В = 1. Вот пример широко распространённой последовательности
команд (см. Табл. 7) для инициализации LCD: 0х38, 0х0С, 0х06 (знак «0х» перед
числом указывает на шестнадцатеричное основание). 0х38 устанавливает
режим отображения 2 строк с матрицей 5х8 точек и работу с 8-битной шиной
данных; 0х0С включает отображение на экране LCD без отображения курсора,
0х06 устанавливает режим автоматического перемещения курсора слева
направо после вывода каждого символа.
Вывод на экран символа производится записью его кода в регистр
данных. При этом символ размещается в DDRAM по текущему адресу,
указываемому счётчиком адреса (АС) контроллера LCD, а значение АС
увеличивается или уменьшается на 1. Чтобы произвести переустановку
курсора на нужную позицию, необходимо присвоить АС соответствующее
21
значение (см. Табл. 7). Здесь есть одна тонкость. Когда производится
последовательная запись символов и в результате заполняется вся строка,
курсор автоматически переходит на вторую строку; но если необходимо
принудительно установить курсор, скажем, на начало второй строки, то
будет неверным присвоить АС, казалось бы, логичное значение 0х28
(40), правильным является значение 0х40 (64). Значения адресов DDRAM в
диапазоне 0х28...0х3F (а равно и 0х68...0х7F) являются неопределёнными, и
результаты работы с ними могут быть непредсказуемыми.
Следует также отметить особенность вывода на LCD русского текста.
Прежде всего знакогенератор LCD должен иметь русские буквы (см.Табл.4).
Кроме того, строку, предназначенную для вывода на LCD, содержащую
английский текст и цифры, в программе Си можно записать несколькими
способами, т. к. их коды Windows и коды английского знакогенератора LCDдисплея совпадают.
Пример:
/* Эквивалентная запись определения строки «Text», содержащей
английские буквы (см. Табл. 4)*/
char string[] = «Техt»;
char string [] = {‘T’,’e’,’x’,’t’,’\0’ };
char string [] = {0х54, 0х65, 0х78, Ох74, 0х00};
С русским текстом дело обстоит иначе. Дело в том, что сходные с
английскими русские буквы берутся из английского знакогенератора, а
остальное — из усечённого русского (см. Табл. 4). Кроме того, коды
Windows русских букв НЕ СОВПАДАЮТ с их кодами знакогенератора
LCD-дисплея. Поэтому строку, предназначенную для вывода на LCD,
содержащую русский текст, в программе Си можно записать только одним
способом, а именно перечислив коды знакогенератора соответствующих
букв.
Пример:
/* Запись определения строки "Текст" , содержащей русские буквы
(см. Табл. 4) */
char string [] = {0х54, 0х65, 0хВА, 0х63, 0хВF, 0х00};
Напомним, что каждая строка должна заканчиваться нулевым символом, т.
е. последнее значение 0х00 является символом конца строки, а не кодом
выводимо го символа[31].
22
6.Схема прибора
Принципиальная электрическая схема автоматического измерителя амплитудночастотной характеристики (базовой, неусовершенствованный вариант).
23
7. Принцип действия прибора и методы решения
Для того, чтобы измерить амплитудно-частотную характеристику усилителя
низкой частоты, необходимо выполнить следующие действия :
1. Подключить на вход исследуемого усилителя и первого АЦП вольтметра
два провода: первый, выходящий из вывода RB0 микросхемы DD3, второй
– с общей шиной.
2. Подключить
на
выход
исследуемого
усилителя
динамик,
соответствующей мощности и сопротивления, и второй АЦП вольтметр .
3. Далее, подсоединим через провода датчики температуры к порту D
микросхемы DD1, а сами датчики закрепим к нагревательным элементам
усилителя (при использовании ATmega8 можно подключить до 8
датчиков)
4. После выполнения пунктов 1-3 можно нажать кнопку start выходящую от
микроконтроллера DD2 для того чтобы начать измерение АЧХ .
5. Прибор автоматически построит график АЧХ на экране LCD3 и выведет
более точные данные на компьютер через COM порт.
6. Переместив данные с COM порта компьютера в программу EXCEL можно
построить точный график АЧХ и провести экстраполяцию.
Методы решения:
Для создания проекта в части его программного обеспечения было
использованы следующие среды разработки:Code Vision AVR, PicBasic pro,
mikroC PRO for AVR, mikroBasic PRO for Pic. А в части его реализации были
использованы микроконтроллеры: ATmega8, ATmega169, PIC16f877a.
Проверка работы 3-х первых микроконтроллеров:
1) Перед программированием 3-го микроконтроллера мы поставили
функцию паузы, равную 0,1 секунде;
2)
Подключили данный прибор к стабилизированному блоку питания
через кабель USB;
3) Подсоединили два вольтметра на выход и вход усилителя низких частот
и частотометр – на вход;
4) Установили на место 4-ого микроконтроллера кнопку, позволяющую
управлять третьим микроконтроллером;
24
5) Подключили УНЧ к АиАЧХ;
6) Далее мы нажали кнопку старт (привели прибор в действие), повышали
частоту генератора 10*118Гц, путем удерживания управляющей кнопки по 1
секунде (для каждого повышения), и при этом снимали показания с вольтметров;
7) Занесли данные в программу Excel и поделили значения второго
вольтметра на первый, и построили график коэффициента усиления;
8) Анализируя полученный экспериментально график мы установили
убеждение о том, что прибор работает правильно. Для большей надежности
провели эксперимент с обычным генератором низких частот, который так же
подтвердил правильность работы прибора;
25
Заключение
Итак, в ходе исследования нами была проделана следующая работа:
1) Разработан прибор с новым :
1.1) программным кодом,
1.2) принципом работы,
2) Прибор имеет дополнительные функции :
2.1) измерение температуры усилителя в 8-ми местах на и отображение
LCD экране (контроль за температурой)
2.2) автоматическая защита УНЧ от перегрева (перерыв 10мин)
2.3) ручное управление контролирует отдельный микроконтроллер
2.4) отображение измеряемой частоты на втором LCD экране (контроль
за временем в зависимости от частоты )
3) Прибор в отличие от предшественников полностью автоматизирован
4) АиАЧХ способен одновременно выводить
4.1)
готовый график АЧХ на третий LCD размером 320х64 (или TFT
размером 480x800)
4.2) данные на COM порт компьютера
4.3) данные на CF, MMC, SD карты.
4.4) данные в малую сеть LAN ETHERNET
5)
Прибором можно управлять на расстоянии используя систему
дистанционного управления(например Олимп 005-ду)
26
Список литературы
1) Бабич Н.П., Жуков И.А. Основы цифровой схемотехники: Учебное
пособие: М. Издательство «Додэка-XXI». 2007 .
2) М. Издательство «Додэка-XXI». 2006 .
3) Болл
Ст.Р.
Аналоговые
интерфейсы
микроконтроллеров:
М.
Издательство «Додэка-XXI». 2007 .
4) Волович Г.И. Схемотехника аналоговых и аналого-цифровых
электронных устройств 3-е издание: М. Издательство «Додэка-XXI».
2011 .
5) Евстифеев
А.В.
МИКРОКОНТРОЛЛЕРЫ
AVR
семейства
Mega.
Руководство пользователя: М. Издательство «Додэка-XXI». 2007 .
6) Евстифеев А.В. Микроконтроллеры AVR семейства Tiny. Руководство
пользователя: М. Издательство «Додэка-XXI». 2007 .
7) Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы
"ATMEL". 6-е издание: М. Издательство «Додэка-XXI». 2008 .
8) Сид Катцен. PIC-микроконтроллеры. Все, что вам необходимо знать:
М. Издательство «Додэка-XXI». 2008 .
9) Сид
Катцен.
PIC-микроконтроллеры.
Полное
руководство:
М.
Издательство «Додэка-XXI». 2010 .
10) Лебедев М. Б. CodeVisionAVR: пособие для начинающих. 2-е издание,
исправленное: М. Издательство «Додэка-XXI». 2009 г.
11) Магда
Ю.С.
Микроконтроллеры
PIC
24:
архитектура
и
программирование: М. Издательство «Додэка-XXI». 2008 .
12) Мортон Дж. Микроконтроллеры AVR. Вводный курс: М. Издательство
«Додэка-XXI». 2006 .
13) Предко М. справочник по PIC-микроконтроллерам: М. Издательство
«Додэка-XXI». 2004 .
14) Рюмик С.М. 1000 и ОДНА микроконтроллерная СХЕМА. Выпуск 1: М.
Издательство «Додэка-XXI». 2010 .
15) Рюмик С.М. 1000 и ОДНА микроконтроллерная СХЕМА. Выпуск 2: М.
Издательство «Додэка-XXI». 2011 .
27
16) СУЭМАЦУ Ё. Микрокомпьютерные системы управления. Первое
знакомство 2-е издание: М. Издательство «Додэка-XXI».2009 .
17) Тяпичев А.Г. Персональный компьютер в радиолюбительской практике:
М. Издательство «Додэка-XXI». 2006 .
18) Фрунзе А.В. Микроконтроллеры? Это же просто! Том 4: М.
Издательство «Додэка-XXI». 2008 .
19) Хелибайк Ч. Программирование PIC м/к на PICBASIC: М. Издательство
«Додэка-XXI». 2007 .
20) Сато
Юкио.
Без
паники!
Цифровая
обработка
сигналов:
М.
Издательство «Додэка-XXI». 2010 .
21) Сайт электронной энциклопедии Википедия: AVR [электронный ресурс].
Режим доступа: http://ru.wikipedia.org/wiki/AVR
22) Сайт
Википедия:
[электронный
PIC
ресурс].
Режим
доступа:
http://ru.wikipedia.org/wiki/PIC
23) Сайт
Википедия:
Микроконтроллер
[электронный
ресурс].
Режим
доступа:
http://ru.wikipedia.org/wiki/%CC%E8%EA%F0%EE%EA%EE%ED%F2%F0
%EE%EB%EB%E5%F0
24) Сайт разработчика программы CodeVision AVR [электронный ресурс].
Режим доступа: http://www.hpinfotech.ro.
25) Сайт производителя микроконтроллеров AVR [электронный ресурс].
Режим доступа: http://www.atmel.com.
26) Русскоязычный сайт компании Atmel [электронный ресурс]. Режим
доступа: http://www.atmel.ru.
27) Сайт, посвященный протоколу 1-Wire [электронный ресурс]. Режим
доступа: http://www.elin.ru/1-Wire/m_lan.htm.
28) Сайт
производителя
переферийных
электронных
компонентов
[электронный ресурс]. Режим доступа: http://www.national.com.
29) Сайт производителя электронных компонентов [электронный ресурс].
Режим доступа: http://www.maxim-ic.com.
28
30) Сайт производителя LCD-дисплеев [электронный ресурс]. Режим доступа:
http://www.melt.com.ru
31) Сайт производителя LCD-дисплеев [электронный ресурс]. Режим доступа:
http://www.datavision.com.tw/.
29
Приложения
Приложение №1
Фотографии модулей микроконтроллеров, использованных для создания
АиАЧХ:
Модуль ATmega169
Модуль ATmega8
PIC16f84a
30
Модуль PIC16f877a/ PIC18f452
Плата к программатору pickit3 PIC16f877a/ PIC18f452
31
Приложение №2
Фото собранного программатора №1.
Фото собранного программатора №1 в модуле atmega8.
32
Фото собранного программатора №2.
33
Приложение №3
Фотографии, показывающие работу первого модуля ( усовершенствованный
вариант )
Первые 5 секунд ждем полную инициализацию всех частей прибора:
34
Далее прибор становится в начальное положение:
35
Включаем прибор с помощью кнопки старт ( -провод с порта RC7 к плюсу ):
36
Микросхема DD2 переводит прибор в режим ожидания ( -провод с порта RC6 к
плюсу ):
37
Приложение №4
Фотография, показывающая работу третьего модуля ( усовершенствованный
вариант ):
38
Download