Технические разделы

Описание исходного кода программы

Строки 1-19: подключение необходимых заголовочных файлов, конфигурирование микроконтроллера для работы с внешними устройствами.

Строки 21-39: объявление глобальных переменных с заданием начальных значений.

Строки 43-50: функция, вызываемая по прерыванию таймера. Обнуляет значение счётчика, изменяет изначально заданное число для сравнения(поскольку при инициализации на дисплей выводится информационное сообщение и во время его отображение прерывание срабатывать не должно) и вызывает функцию Display();

Строки 52-67: функция About(). Выводит на дисплей «бегущую» строку с информацией об устройстве и её авторе.

Строки 69-74: функция Delay_note(). Используется для обеспечения возможности задания «паузы» в работе с помощью переменной(встроенная функция delay_ms() способна принимать только константы). Это необходимо при проигрывании мелодии, т.к. время задержки звука задана в массиве и для каждой ноты разное значение задержки.

Строки 76-108: функция Alarm(). Вызывается, когда значение даты и времени совпадает со значением переменных, хранящих настройки будильника. Она выводит на дисплей сообщение о включении будильника и проигрывает мелодию, задавая логические уровни на входе динамика с определённой частотой, значение которых хранится в массиве.

Строки 110-222: функция Display(). Обрабатывает значением переменных времени, предотвращая ввод неверных значений времени(например, если значение hour=23, то нажимая на кнопку «+1 Hour», значение hour обнуляется, инкрементируя значение переменной day, после чего выводит информацию на дисплей. Аналогичные операции функция проделывает, если идёт работа с настройкой будильника.

Строки 224-298: функция Setting().Отвечает за обработку нажатия кнопок, соответствующим образом подстраивая часы или будильник. Также отвечает за остановку будильника.

Строки 300-354: функция main(). Производит начальную настройку портов ввода\вывода, значение регистров таймера, включает прерывания, после чего инициализирует LCD дисплей и сразу же вывод информационное сообщение с помощью функции About(). Затем инициализирует работу I2C шины и микросхемы RTC DS1307, задаёт ей начальные значения даты и времени, после чего входит в бесконечный цикл, вызывая функцию Settings() для обработки нажатия клавиш и проверяя необходимость включения будильника.

ЗАКЛЮЧЕНИЕ

В данном курсовом проекте была написана программа для микроконтроллера Atmega8 фирмы ATMEL. Программа была написана на языке С и составляет более 350 строк кода, реализующих взаимодействие со сторонними устройствами, вместе образующие устройство часов с функцией будильника. Разработка программы велась в среде программирования CodeVisionAVR 1.25.

Спроектированная принципиальная электрическая схема и созданная «прошивка» микроконтроллера проверены с помощью программного продукта Proteus 7.10 SP0, позволяющего симулировать работу электрических схем. В процессе выполнения проекта были сделаны обоснования выбора способа решения поставленной задачи, даны описания используемых компонентов.

ПРИЛОЖЕНИЕ

#include <mega8.h>

// I2C Bus functions

#asm

.equ i2c_port=0x15 ;PORTC

.equ sda_bit=4

.equ scl_bit=5

#endasm

#include <i2c.h>

#include <ds1307.h>

#asm

.equ lcd_port=0x12 ;PORTD

#endasm

#include <lcd.h>

#include <stdio.h>

#include <delay.h>

#include <bcd.h>

al_cl=0;char lcd_buffer[33];char hour=10; char min=2;char sec=30; char day=10; char month=9;char year=12; char hour_b=12;char min_b=0; char day_b=10; char month_b=9;char melody[] = {99,175,109,107,106,102,99,144,111,175,96,99,107,107,107,107,102,104,170,96,99,109,109,109,109,107,106,143,109,141,99,109,109,109,109,111,176,96,104,116,112,109,107,106,64,73,143,107,131,99,144,80,80,112,111,64,75,173,128,0};int notefreq[] = {0,4748,4480,4228,3992,3768,3556,3356,3168,2990,2822,2664,2514,2374,2240,2114,1996,1884,1778,1678,1584,1495,1411,1332,1257,1187,1120,1057,998,942,889,839,792};int pausedelay[] = {32,64,128,256,512,1024,2048,4096}; max_day[]={31,28,31,30,31,30,31,31,30,31,30,31};

Перейти на страницу: 1 2 3

Еще статьи по технике и технологиям

Расчет фидерного тракта
Целью данной курсовой работы является расчет характеристических параметров четырехполюсника, коэффициента передачи и переходных процессов. Четырёхполюсник - электрическая цепь, осуществляющая передачу сигналов от одного объекта к д ...

Автоматизация установки для получения моющего раствора
Целью данной курсовой работы является ознакомление с принципами построения современных систем автоматизации технологических процессов, реализованных на базе промышленных контроллеров и ЭВМ. Для достижения поставленной цели необходим ...

© 2019 | www.techexpose.ru