
- •Аннотация
- •Техническое задание
- •Содержание
- •Введение
- •Обзор аналогов
- •Описание схемы электрической структурной
- •Описание схемы электрической принципиальной
- •3.1 Выбор элементной базы устройства
- •Микросхема ds1307z.
- •3.2 Принцип работы устройства
- •3.3 Блок питания
- •Описание программной части
- •4.1 Описание языка программирования Си.
- •4.2 Описание среды программирования ImageCraft.
- •4.3 Описание работы программы
- •Заключение
- •Список литературы
3.2 Принцип работы устройства
Схема электрическая принципиальная устройства дана в приложении (КНФУ.403ХХХ.001Э3). Основой устройства является микроконтроллер DD3. Микроконтроллер тактирован кварцем ZQ3 на частоту 6 МГц по стандартной схеме подключения с конденсаторами С10, С11. Переключение режимов устройства осуществляется кнопками SB1…SB4, которые подключают соответствующие входы DD3 либо на шину +5В, либо на 0В (т.е. логические 0 и 1). Подавление дребезга контактов на входах микроконтроллера встроенное. Состояние работы микроконтроллера индицируется двумя светодиодами HL1 и HL2. Проигрывание музыкальной мелодии будильника осуществляется динамической головкой BA1, подключенной на один из выходов микроконтроллера через буфер на транзисторе VT1. Микросхема DA1 обеспечивает запуск микроконтроллера после подключения питания с некоторым запаздыванием, чтобы исключить сбой микроконтроллера из-за наводок по питанию в момент включения. Программирование микроконтроллера внутрисхемное с помощью программатора через штырьковую колодку XP1.
Подключение к персональному компьютеру осуществляется через специализированную микросхему USB-интерфейса DD2. Микросхема тактирована кварцем ZQ2 на частоту 6 МГц по обычной схеме. HS1 – это разъем USB. R1…R5,C1,C3,C4,С8,С9- обвес микросхемы DD2.Схема подключения DD2 типовая, взята из Datasheet на микросхему. Связь с микроконтроллером по интерфейсу UART.
Температура среды измеряется микросхемой цифровым датчиком температуры BK1. Время задается микросхемой часов реального времени с памятью DD1, тактируемой часовым кварцем ZQ1 на частоту 32768 Гц. Сохранение памяти микросхемы обеспечивается литиевой батарейкой G1 на напряжение +3 В. Данные с BK1 и DD1 передаются на микроконтроллер по шине интерфейса TWI.
Индикаторами управляет специализированная микросхема драйвер динамической индикации DD4. Она управляет 4 семисегментными индикаторами HG1…HG4, образующими табло часов, и маленьким вспомогательным индикатором HG5, предназначенным для отображения режимов настройки часов. Получение данных для DD4 от микроконтроллера осуществляется по интерфейсу SPI.
Напряжение питания +5В подается на устройство через розетку XS2 от внешнего стабилизированного источника питания.
3.3 Блок питания
В качестве внешнего блока питания можно применить любой стабилизированный промышленный блок питания на +5В обеспечивающий выходной ток не менее 500 мА.
Описание программной части
4.1 Описание языка программирования Си.
Си(англ. C) — стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи для использования в операционной системе UNIX. С тех пор он был перенесён на многие другие операционные системы и стал одним из самых используемых языков программирования.
Язык программирования Си отличается минимализмом. Авторы языка хотели, чтобы программы на нём легко компилировались с помощью однопроходного компилятора, чтобы каждой элементарной составляющей программы после компиляции соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже обработанному тексту. Поэтому использованию функции и переменных должно предшествовать их объявление. Компиляторы Си разрабатываются сравнительно легко благодаря простоте языка и малому размеру стандартной библиотеки. Поэтому данный язык доступен на самых различных платформах.
Си создавался с одной важной целью: сделать более простым написание больших программ с минимумом ошибок по правилам процедурного программирования, не добавляя в итоговый код программ лишних сложностей для компилятора, как это всегда делают языки высокого уровня. С этой стороны Си предлагает следующие важные особенности:
• простую языковую базу, из которой вынесены в библиотеки многие существенные возможности, вроде математических функций или функций управления файлами;
• ориентацию на процедурное программирование, обеспечивающую удобство применения структурного стиля программирования;
• систему типов, предохраняющую от бессмысленных операций;
• использование препроцессора для, например, определения макросов и включения файлов с исходным кодом;
• непосредственный доступ к памяти компьютера через использование указателей;
• минимальное число ключевых слов;
• передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке эмулируется с помощью указателей);
• указатели на функции и статические переменные;
• области действия имён;
• структуры и объединения — определяемые пользователем собирательные типы данных, которыми можно манипулировать как одним целым;
Вместе с тем, в языке Си отсутствуют некоторые полезные возможности:
• автоматическое управление памятью;
• поддержка объектно-ориентированного программирования;
• замыкание;
• вложенные функции;
• полиморфизм функций и операторов;
• поддержка многозадачности и сетевые функции;
• функции высшего порядка;
• сопрограммы;
• карринг.
Часть отсутствующих возможностей можно сымитировать встроенными средствами (например, сопрограммы можно имитировать с помощью функций setjmp и longjmp), часть добавляется с помощью сторонних библиотек (например, для поддержки многозадачности и для сетевых функций можно использовать библиотеки pthreads, sockets и т. п.), часть реализуется в некоторых компиляторах в виде расширений языка.
Язык Си позволяет писать программы на низком уровне, максимально близко к реальным устройствам, почти на уровне ассемблера. Поэтому программы на Си исполняются очень быстро, уступая лишь ассемблерному коду, оптимизированному вручную.