РАЗРАБОТКА ЧАСОВ С МИКРОПРОЦЕССОРНЫМ УПРАВЛЕНИЕМ. Разработка часов с микропроцессорным управлением
Скачать 1.11 Mb.
|
(1 << 7); // обнуляем 7 бит(1 << PD4);(1 << EN); // EN = 0 (конец записи команды в LCD)(1 << EN); // EN = 0 (конец записи команды в LCD)(1 << TWEA); |
Для реализации схемотехнического моделирования и разработки функциональной схемы была выбрана программная среда Proteus Professional, так как имеет широкую зарекомендованную популярность в инженерном деле за счет своих функций и возможностей.
Средой разработки программного кода был выбран Atmel Studio от одноименной компании производителя микроконтроллеров. Приоритетным достоинством данной программы являются её бесплатность, количество библиотек и поддержка со стороны компании-разработчика.
Для проектировки печатной платы выбор пал на Altium Designer из-за количества и качества числа функций редактирования, а также удобности проектировки из-за возможности переключения между этапами разработки печатной платы.
Блок часов реального времени для установки данных;
Микроконтроллер для связи с RTC через шину I2C;
Дисплей для вывода информации;
Кнопки для установки данных.
#include
Дальше производим функцию инициализации шины TWI/I2C:
void I2CInit(void)
{
TWBR = 2; // Настройка частоты шины
TWSR = (1 << TWPS1)|(1 << TWPS0); // Предделитель на 64
TWCR |= (1 << TWEN); // Включение модуля TWI
}
Подключаем функции “старт” и “стоп” шины I2C:
// Функция СТАРТ
void I2CStart(void)
{
TWCR = (1 << TWINT)|(1 << TWEN)|(1 << TWSTA); // Передача условия СТАРТ
while(!(TWCR & (1 << TWINT))); // Ожидание установки флага TWINT
}
// Функция СТОП
void I2CStop(void)
{
TWCR = (1 << TWINT)|(1 << TWEN)|(1 << TWSTO); // Передача условия СТОП
while(TWCR & (1 << TWSTO)); // Ожидание завершения передачи условия СТОП
}
Дальше реализуем функции записи и чтения данных по шине I2C:
// Функция записи данных по шине
uint8_t I2CWriteByte(uint8_t data)
{
TWDR = data; // Загрузка данных в TWDR
TWCR = (1 << TWEN)|(1 << TWINT); // Сброс флага TWINT для начала передачи данных
while(!(TWCR & (1 << TWINT))); // Ожидание установки флага TWINT
// Проверка статуса
// Если адрес DS1307+R и принято "подтверждение"(0x18)
// или адрес DS1307+W и принято "подтверждение"(0x40)
// или передается байт данных и принято "подтверждение"(0x28)
if((TWSR & 0xF8) == 0x18 || (TWSR & 0xF8) == 0x40 || (TWSR & 0xF8) == 0x28) return 1; // OK
else return 0; // ОШИБКА
}
// Функция чтения данных по шине
uint8_t I2CReadByte(uint8_t *data,uint8_t ack)
{
// Возвращаем "подтверждение" после приема
if(ack) TWCR |= (1 << TWEA);
// Возвращаем "неподтверждение" после приема
// Ведомое устройство не получает больше данных
// обычно используется для распознования последнего байта
else TWCR &=
// Разрешение приема данных после сброса TWINT
TWCR |= (1 << TWINT);
while(!(TWCR & (1 << TWINT))); // Ожидание установки флага TWINT
// Проверка статуса
// Если принят байт данных и возвращается "подтверждение"(0x50)
// или принят байт данных и возвращается "ненеподтверждение"(0x58)
if((TWSR & 0xF8) == 0x50 || (TWSR & 0xF8) == 0x58)
{
*data = TWDR; // Читаем данные из TWDR
return 1; // OK
}
else return 0; // ОШИБКА
}
Производим функцию записи и чтения данных с часов реального времени DS1307:
// Функция чтения данных из DS1307
uint8_t DS1307Read(uint8_t address,uint8_t *data)
{
uint8_t res;
I2CStart(); // СТАРТ
res = I2CWriteByte(0b11010000); // адрес DS1307+W
if(!res) return 0; // ОШИБКА
// Передача адреса необходимого регистра
res = I2CWriteByte(address);
if(!res) return 0; // ОШИБКА
I2CStart(); // Повторный СТАРТ
res = I2CWriteByte(0b11010001); // адрес DS1307+R
if(!res) return 0; // ОШИБКА
// Чтение данных с "неподтверждением"
res = I2CReadByte(data,0);
if(!res) return 0; // ОШИБКА
I2CStop(); // СТОП
return 1; // OK
}
// Функция записи данных в DS1307
uint8_t DS1307Write(uint8_t address,uint8_t data)
{
uint8_t res;
I2CStart(); // СТАРТ
res = I2CWriteByte(0b11010000); // адрес DS1307+W
if(!res) return 0; // ОШИБКА
// Передача адреса необходимого регистра
res = I2CWriteByte(address);
if(!res) return 0; // ОШИБКА
res = I2CWriteByte(data); // Запись данных
if(!res) return 0; // ОШИБКА
I2CStop(); // СТОП
return 1; // OK
}
Дальше подключаем функции LCD-дисплея для работы с передачей команд и данных:
// Функции работы с LCD
#define RS PD0
#define EN PD2
// Функция передачи команды
void lcd_com(unsigned char p)
{
PORTD &=
_delay_us(100);
PORTD |= (1 << EN); // EN = 1 (начало записи команды в LCD)
PORTD &= 0x0F; PORTD |= (p << 4); // младший нибл
_delay_us(100);
PORTD &=
_delay_us(100);
PORTD |= (1 << EN); // EN = 1 (начало записи команды в LCD)
PORTD &= 0x0F; PORTD |= (p << 4); // младший ниббл
_delay_us(100);
PORTD &=
// Активизация четырехразрядного режима
PORTD |= (1 << EN);
PORTD &=
Виды работ | Трудоёмкость, днях. |
Разработка технического задания | 1 |
Сбор информации и ознакомление с предметной областью | 5 |
Выбор объектного построения программы | 1 |
Разработка общей методики создания продукта | 3 |
Разработка основного алгоритма | 2 |
Проектирование устройства | 3 |
Выполнение монтажных работ | 1 |
Сборка устройства | 1 |
Создание программы | 2 |
Подключение, тестирование и окончательная конфигурация устройства | 1 |
Подготовка технической документации | 2 |
По данным таблицы 3 трудоемкость проекта составляет 23 дня.
Расчёт затрат на материалы
Расчет стоимости основных материалов, затраченных на создание проекта, представлен в таблице 3.2.
Обозначение | Тип | Номинал | Кол-во | Цена ед., руб. | Сумма, руб. |
U1 | Микросхема | Atmega8 | 1 | 180 | 180 |
U2 | Микросхема | DS1307 | 1 | 100 | 100 |
DS | Дисплей | LM016 | 1 | 300 | 300 |
Y1 | Резонатор | HC-49S, 32,768 Мгц | 1 | 25 | 25 |
S1 | Кнопка | KLS7-TS6601 | 2 | 7 | 14 |
R1 | Резистор | MO-200, 4.7кОм | 2 | 4 | 8 |
R2 | Резистор подстроечный | 3296W-1-103LF, 10кОм | 1 | 80 | 80 |
Итого | | | | | 707 |
На основании данных представленной в таблице 3.2, общая сумма затрат на материалы составляет 707 рублей.
3) Расчёт затрат на электроэнергию и амортизацию электромонтажного оборудования.
Расчет затрат на электроэнергию и амортизацию оборудования проводим с учетом цены электроэнергии, цены и срока службы оборудования и трудоёмкости.
Затраты по электроэнергии определяем по формуле:
Зэл.эн = Рэл.эн. осв * Тэл.эн. руб.
где Тэл.эн. - тариф за 1кВт/час, электроэнергии, руб.;
Рэл.эн. осв - общий расход электроэнергии за период работы, кВт час.
Тариф на электроэнергию с 1 января 2020 г. равен 5,47 руб. за кВт/час.
Для пайки МСУЭ, требуется лишь паяльник мощностью до 100 Вт. На монтажные работы одного экземпляра, требуется около 2-х часов.
Рэл.эн. осв. = 2*100/1000 = 0,2 (кВт час)
Зэл.эн. = 0,2*5,47=1,1 руб.
Расчет затрат по амортизации оборудования, применяемого для электромонтажных работ, выполняем, исходя из первоначальной стоимости оборудования каждого вида и годовых норм амортизации.
Сумму амортизационных отчислений за месяц определяем по формуле:
Ам = Пс * Намес/100, руб.
где Пс - первоначальная стоимость оборудования, руб.
Намес - месячная норма амортизации определяется по формуле:
Намес = Нагод/12, %
Стоимость паяльника около 2-х тысяч рублей. Согласно редакции пункта 1 статьи 257 НК РФ, согласно которой основными средствами признаются средства труда первоначальной стоимостью свыше 100 тысяч рублей. Паяльник не относится с основным средствам, следовательно списывается в текущие расходы.
4) Расчёт расходов на заработную плату.
На основании данных о средней заработной платы по отрасли рассчитываем основную заработную плату инженера, технолога, проектировщика. Уровень средней зарплаты в данной сфере на 01.05.2020 составляет 54382 рубля.
Исходя из выше указанной информации, рассчитаем заработную плату сотрудника, исходя из затраченных на работу дней.
Количество рабочих дней по графику: апрель 2020 – 22 дня, май 2020 – 13 дней.
Количество отработанных дней: апрель 2020 – 3 дня, май 2020 – 15 дней.
Заработная плата инженера-технолога-проектировщика за 18 рабочих дней составляет:
54382 / 22 * 3 + 54382 / 17 * 13 = 49001,97 (рублей).
На основании полученных расчетов затрат, определяем себестоимость электронных часов на базе микроконтроллера. Статьи затрат приведены в таблице 1.10.
Таблица 1.10 – Смета всех затрат
Наименование статей затрат | Сумма, руб. |
Затрат на материалы | 707 |
Затраты на электроэнергию и амортизацию электромонтажного оборудования | 1,1 |
Расходов на заработанную плату | 49001,97 |
Общая сумма затрат на разработку и сборку электронных часов составляет 49710,07 рублей.
5)Экономический эффект:
Экономический эффект представляет собой результат использования труда человека, который может быть направлен на создание определенных материальных благ. В этом случае важно не только обеспечить результат, но и определить, с помощью чего его достигли.
Экономическая эффективность определяется по формуле разности средней стоимости объекта на рынке и затрат на материалы:
1500-707= 793 (рубля)