Курсовая работа: Электронный секундомер
Входную тактовую частоту зададим при помощи внутреннего генератора в режиме ХТ малого энергопотребления, настроенного на частоту 4 МГц. Для этого используем резонатор с параллельным резонансом. Резистор RS использовать не будем, считаем что резонатор не будет самовозбуждаться. Конденсаторы С1 и С2 возьмем по 20 пФ (пределы 15..33пФ), т.к. более высокая емкость, увеличивая стабильность частоты генератора, увеличивает и время запуска, что не желательно. Схем подключения резонатора приведена на рис.3.3.
Рис.3.3 Схем подключения резонатора в режиме ХТ
Кнопку S1 «старт/стоп/сброс» подключаем непосредственно ко входу PIC контроллера. При помощи кнопки S2 подаем питание на микроконтроллер. Кнопка S1 подключена через резистор R1 = 10кОм, к порту RB7 (резистор задает уровень логической единицы на входе микроконтроллера).
Чтобы обеспечить хорошее питание схемы, применим сглаживающие фильтры С3=100мкФ, С4=1пФ, которые сглаживают пульсацию напряжения на входе микроконтроллера.
Звуковая индикация происходит при помощи динамика, подключаемого к порту RA4. Резистор R1=5кОм стабилизирует ток через динамик.
При подаче напряжения на микроконтроллер, начинает выполняться программа, записанная в микроконтроллере. Вначале производится инициализация всех портов микроконтроллера (порт RB7 настраивается на ввод, а остальные порты настраиваются на вывод), обнуление рабочих регистров, занесение необходимых констант в соответствующие регистры, а затем программа ожидает нажатия кнопки. Т.к. подсчет секунд не производился, то на индикаторы выводятся нули.
При нажатии кнопки, происходит звуковая индикация, программа формирует нужные задержки, инкрементируя при этом значения регистров в соответствии с необходимой отображаемой информацией. Через ограничительные резисторы R4-R10 подаются сигналы для управления сегментами индикатора.
При очередном нажатии клавиши происходит остановка выполнения программы, секундомер ожидает обнуления, а на индикатор выводится последняя подсчитанная последовательность цифр.
Электрическая принципиальная схема, спецификация элементов секундомера, приведены в приложении.
4.Разработка алгоритма работы управляющей программы
Для обеспечения работы проектируемого устройства с заданными техническими требованиями необходимо запрограммировать наш микроконтроллер на определенную обработку данных и выдачу определенных сигналов. Управляющая программа должна обеспечить работу секундомера. Обеспечив цикл с задержкой в 0.1 с., а затем, подсчитав количество импульсов, пришедших в конце каждого цикла, мы и производим подсчет секунд. Счёт начинается при нажатии кнопки. Для составления программы необходимо сначала составить алгоритм работы устройства, т.е. конечный набор правил для выполнения некоторых процедур.
Схема алгоритма – одна из важнейших частей задачи, она состоит из отдельных операторов. Различают четыре вида операторов, каждый из которых имеет вход и выход рис.4.1 Стрелками обозначаются направление хода вычислений.
(1) (2) (3) (4) (5)
(1) – оператор описание процесса обработки;
(2) – оператор проверки условий;
(3) – оператор начала (конца);
(4) – оператор разрыва схемы;
(5) – оператор ввода/вывода данных.
Рис.4.1 Виды операторов
Применим в нашем случае разветвленный алгоритм (см. приложение A).
Работа нашей программы начинается с инициализации используемых регистров. Затем производится настройка портов, очистка ячеек памяти, задаются временные циклы, используемые для формирования требуемых величин задержек при работе. Происходит звуковая индикация, время задержки, в течении которой подается сигнал на динамик, равно 829мкс., т.е. с частотой около 1,2кГц, слышимой человеком. Подключаются подпрограммы INDIKATOR и KOD, необходимые для вывода подсчитанных секунд на семисегментные индикаторы.
5.Разработка управляющей программы
Программа, обеспечивающая работу нашего секундомера, написана на языке Assembler и построена в виде основной программы и подпрограмм.
Основная программа выполняет начальные установки режимов работы и регистров. Порты RA0-RA3 и RB0-RB6 настроены на вывод информации, порты RB0-RB6 отвечают за соответствующие сегменты индикатора. Порт RB7 считывает значение с кнопки. Порт RA4 производит вывод логической единицы, для звуковой индикации, которая осуществляется с помощью подпрограммы ZVUK, по первому нажатию кнопки. Подпрограммы INDIKATOR и KOD, необходимы для выработки сигналов, которые управляют семисегментными индикаторами. Подпрограмма DELAY формирует основную задержку на 0,1 с., задержка формируется одним внутренним и одним внешним циклами. Подпрограмма INCTIM меняем, в соответствии с отображаемыми цифрами, значения регистров temp0- temp3, для индикации.
Работа программы осуществляется по циклу. Вначале производится инициализация портов, очистка рабочих регистров. Запуск программы осуществляется нажатием кнопки “Пуск/Стоп/Сброс”. Внутри цикла осуществляется проверка на переполнение секундомера (если оно произошло, то происходит обнуление всех регистров и программа ожидает нажатия кнопки “Пуск/Стоп/Сброс”). При нажатии кнопки “Пуск/Стоп/Сброс” происходит остановка подсчета секунд, и программа ожидает обнуления. Текст программы приведен ниже.
LIST P=16F628
#include <P16F628.INC>
temp0 EQU H'20'
temp1 EQU H'21'
temp2 EQU H'22'
temp3 EQU H'23'
temp4 EQU H'24'
temp5 EQU H'25'