align="justify"> Заключним етапом є монтаж радіоелементів. Перед монтажем на плату потемнілі висновки радіоелементів слід зачищати до блиску, лудити їх не обов'язково. Як флюс краще користуватися каніфольним лаком, а не твердої каніфоллю. Схема друкованої плати зображена на рис 7.
Рис. 7. Схема друкованої плати пристрої
Розробка програми для мікроконтролера
Розробка блок схеми програми
За скидання програма стартує з адреси 0000h.
Далі відбувається наступне:
Відбувається настройка портів вводу-виводу.
Включаються вбудовані підтягує резистори
Виводиться вітання
Починається індикація поточного часу і дати.
Після ініціалізації програма працює циклічно. Постійно опитується стан кнопок, обслуговується дисплей, перевіряється не подавати чи дзвінок, після чого цикл повторюється.
Код програми автомат дзвінок мікроконтролер
/** Програма для автомата подачі дзвінків в навчальному закладі
Розробники: Гудков Владислав, Соленов Андрій
Могк 2012 Група 4АСУ/09 */
# include lt; avr/io.h gt;
# include lt; util/delay.h gt;
# include lcd.h
# include ds1307.h
# define MENU (PINC amp; (1 lt; lt; PC2)) == 0 amp; amp; PINC amp; (1 lt; lt; PC0) amp; amp; PINC amp; (1 lt; lt; PC1) amp; amp; PINC amp; (1 lt; lt; PC3)
# define OK (PINC amp; (1 lt; lt; PC3)) == 0 amp; amp; PINC amp; (1 lt; lt; PC0) amp; amp; PINC amp; (1 lt; lt; PC1) amp; amp; PINC amp; (1 lt; lt; PC2)
# define HOUR (PINC amp; (1 lt; lt; PC0)) == 0 amp; amp; PINC amp; (1 lt; lt; PC1) amp; amp; PINC amp; (1 lt; lt; PC2) amp; amp; PINC amp; (1 lt; lt; PC3)
# define MIN (PINC amp; (1 lt; lt; PC1)) == 0 amp; amp; PINC amp; (1 lt; lt; PC0) amp; amp; PINC amp; (1 lt; lt; PC2) amp; amp; PINC amp; (1 lt; lt; PC3)
int main (void)
{
//Ініціалізація портів
_ delay_ms (100);
DDRC=0x00;=0xFF; |=(1 lt; lt; PB2); |=(0 lt; lt; PB2); _ init ();// Ініціалізація LCD
I2CInit ();// Ініціалізація шини I2C
//Запускаємо хід годинника
uint8_t temp; Read (0x00, amp; temp); amp;=~ (1 lt; lt; 7);// Обнуляем 7 бітWrite (0x00, temp);
//Іні?? іалізація і оголошення переменнихchar hour_za, minute_za, second_start, second_stop; char hour_zb, minute_zb; char hour_zc, minute_zc; char hour_zd, minute_zd; char hour_ze, minute_ze; char hour_zf, minute_zf; char hour_zj, minute_zj; char hour_zh, minute_zh; char hour_zi , minute_zi; char hour_zg, minute_zg; char hour_zk, minute_zk; char hour_zl, minute_zl; char hour_zm, minute_zm; char hour_zn, minute_zn; char hour_zo, minute_zo; char hour_zp, minute_zp; char v, i, menu, ok, k, a , c, e, zvon_vkl, f;=0;=0;=0;=0;=0;=0;=1;=1; _vkl=1;=1; _start=0; _stop=3; _za= 8; _za=15; _zb=9; _zb=00; _zc=9; _zc=5; _zd=9; _zd=50; _ze=10; _ze=5; _zf=10; _zf=50; _zj=10; _zj=55; _zh=11; _zh=40; _zi=12; _zi=15; _zg=13; _zg=0; _zk=13; _zk=5; _zl=13; _zl=50; _zm=14; _zm= 00; _zn=14; _zn=45; _zo=14; _zo=50; _zp=15; _zp=35;
//Ввивод привітання (i=0; i lt; 1; i ++)
{_ com (0x01);
_ delay_ms (100); _ string (0x85, SolGud );
_ delay_ms (1500); _ com (0x01);
_ delay_ms (100); _ string (0x86, 2012 );
_ delay_ms (1500); _ com (0x01);
_ delay_ms (100); _ string (0x86, MOЎK );
_ delay_ms (1500); _ com (0x01);
_ delay_ms (100);
} (1)
{char hour, minute, second, day, date, month, years, temp;
//Читаємо дані і перетворимо з BCD в двійкову сістемуRead (0x00, amp; temp);// Читання регістра секунд
second=(((temp amp; 0xF0) gt; gt; 4) * 10) + (temp amp; 0x0F);
DS1307Read (0x01, amp; temp);// Читання регістра хвилин
minute=(((temp amp; 0xF0) gt; gt; 4) * 10) + (temp amp; 0x0F);
DS1307Read (0x02, amp; temp);// Читання регістра годин
hour=(((temp amp; 0xF0) gt; gt; 4) * 10) + (temp amp; 0x0F);
DS1307Read (0x03, amp; temp);// Чи...