Разработка и изготовление автомата подачи звонков
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
автомата подачи звонков.
При испытании автомата были выявлены некоторые недостатки, которые были устранены.
Цель дипломной работы была достигнута: разработан и создан автомат подачи звонков (фото см. в приложении 4). Он будет использоваться в учебных заведениях. Также он может использоваться в других целях, т.е. там, где нужно подавать напряжение на различные источники питания в соответствии со временем, но при этом нужно будет задавать соответствующие временные интервалы.
Данный автомат подачи звонков может программно дорабатываться и совершенствоваться.
Список информационных источников
1. PCAD.
. MPLAB IDE.
. ICPROG.
. Microsoft Excel.
5. Microsoft Word.
.Китайгородский М.Д. Основы автоматизированного проектирования принципиальных электрических схем и печатных плат. Сыктывкар, 2001.
7.Китайгородский М.Д. Программирование микроконтроллеров. Лабораторный практикум. Сыктывкар, 2006.
.Яценков В.С. Микроконтроллеры Microchip. Практическое руководство. - М.: Горячая линия - Телеком, 2002. - 296 с.: ил.
.Белов А.В. Самоучитель по микропроцессорной технике. - СПб.: Наука и техника, 2003 - 224 с: ил.
10.
11.
12.
13.
Приложение 1
Принципиальная электрическая схема.
Приложение 2
Спецификация радиоэлементов.
Позиционное обозначениеНаименованиеКоличество R1 R2- R11 С1 С2 С3 С4 VD2 Z1 Z2 CPU DS1307 KR514ID2 GB MOC3041 VD1 HLEC-F512 SB1, SB2Резисторы: ОМЛТ-0,125 -330 Ом ОМЛТ-0,125 -360 Ом Конденсаторы: К10-7В 10 нФ К10-7В 10 нФ К10-7В 33 пФ К10-7В 33 пФ Симмистор ТС106-10-6 Кварцевый резонатор 3.2768 кГц Кварцевый резонатор 4 МГц Микросхемы PIC16F84 DS1307 KR514ID2 Гальванический элемент на 3В Опто-симмистор Светодиод Индикатор Кнопки 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
Приложение 3
Рисунки печатной платы.
Приложение 4
Фото автомата подачи звонков.
Приложение 5
Программа
#include
#include
//#include // See Notes
__CONFIG(XT & WDTDIS & PWRTEN & UNPROTECT);
// common i2c routineschar d;char i2c_in_byte(void);i2c_out_byte(unsigned char o_byte);i2c_nack(void);i2c_ack(void);i2c_start(void);i2c_stop(void);i2c_high_sda(void);i2c_low_sda(void);i2c_high_scl(void);i2c_low_scl(void);delay_ms(long t);delay_10us(unsigned char t);char eeprom_rd(unsigned char adr);_wr(unsigned char adr, unsigned char dat);_DS1307();char read_DS1307 (unsigned char adr);_DS1307 (unsigned char adr, unsigned char dat);(unsigned char ch, unsigned char m);(unsigned char ch, unsigned char m);(unsigned char ch, unsigned char m);(unsigned char ch, unsigned char m);
#define SDA_PIN RB4 // RB.4
#define SCL_PIN RB5 // RB.5
#define SDA_DIR TRISB4
#define SCL_DIR TRISB5
// -------------------------------------main(void)
{char ch,m,s,x,ch0,m0,i;
// unsigned char zvon[56];= 0;= 0;
TRISA = 0b00000000;= 0b11000000;= 0;
d=0;_wr(0,0x08); eeprom_wr(1,0x15);_wr(2,0x09); eeprom_wr(3,0x00);_wr(4,0x09); eeprom_wr(5,0x05);_wr(6,0x09); eeprom_wr(7,0x50);_wr(8,0x10); eeprom_wr(9,0x00);_wr(10,0x10); eeprom_wr(11,0x45);_wr(12,0x10); eeprom_wr(13,0x50);_wr(14,0x11); eeprom_wr(15,0x35);_wr(16,0x12); eeprom_wr(17,0x15);_wr(18,0x13); eeprom_wr(19,0x00);_wr(20,0x13); eeprom_wr(21,0x05);_wr(22,0x13); eeprom_wr(23,0x50);_wr(24,0x14); eeprom_wr(25,0x00);_wr(26,0x14); eeprom_wr(27,0x45);_wr(28,0x14); eeprom_wr(29,0x50);_wr(30,0x15); eeprom_wr(31,0x35);
// zao4niki_wr(32,0x16); eeprom_wr(33,0x00);_wr(34,0x16); eeprom_wr(35,0x45);_wr(36,0x16); eeprom_wr(37,0x50);_wr(18,0x17); eeprom_wr(19,0x35);_wr(18,0x17); eeprom_wr(19,0x45);_wr(18,0x18); eeprom_wr(19,0x30);_wr(18,0x18); eeprom_wr(19,0x35);_wr(18,0x19); eeprom_wr(19,0x20);_wr(18,0x19); eeprom_wr(19,0x30);_wr(18,0x20); eeprom_wr(19,0x15);_wr(18,0x20); eeprom_wr(19,0x20);_wr(18,0x21); eeprom_wr(19,0x05);
//for (i=0,i++,i<56)
//{zvon[i]=eeprom_rd(i)};
// Определение пропадания питания
s = read_DS1307(0);
if ((s & 128)==128) init_DS1307();_DS1307(7,128);(1)
{= read_DS1307(0);(ch,m);= read_DS1307(1);(ch,m);= read_DS1307(2);(ch,m);(RB7 == 0) knopka7(ch,m);(RB6 == 0) knopka6(ch,m);(s==0)
{(i=0;i<56;i=i+2)
{= eeprom_rd(i);= eeprom_rd(i+1);((ch == ch0)&&(m==m0)) zvonok(ch,m);
}
}(ch,m);
}
}
//------------------------------------(unsigned char ch, unsigned char m)
{int z;(z=0;z<700;z++)
{= m & 0b00001111;;=1;_ms(20);=(m >> 4) & 0b0111;=2;_ms(20);= ch & 0b00001111;;=4;_ms(20);=(ch >> 4) & 0b0011;=8;_ms(20);=0;
//PORTB=15;
//write_DS1307(7,0);
//PORTA=8;
//delay_ms(20);
//write_DS1307(7,128);
}
}(unsigned char ch, unsigned char m)
{((d>9) && (ch >= 0x23))
{ch=0;_DS1307(2,ch);=0;
}((d>9) && ((ch & 15)< 9))
{ch++;_DS1307(2,ch);=0;
}((d>9) && ((ch & 15)>=9))
{ ch = (ch & 0xf0)+16;_DS1307(2,ch);=0;
}++;
}(unsigned char ch, unsigned char m)
{((d>9) && (m >= 0x59))
{m=0;_DS1307(1,m);=0;
}((d>9) && ((m & 15)< 9))
{m++;_DS1307(1,m);=0;
}((d>9) && ((m & 15)>=9))
{ m = (m & 0xf0)+16;_DS1307(1,m);=0;
}++;
}(unsigned char ch, unsigned char m)
{= m & 0b00001111;;=17;_ms(20);=(m >> 4) & 0b0111;=18;_ms(20);= ch & 0b00001111;;=20;_ms(20);=(ch >> 4) & 0b0011;=24;_ms(20);=16;
//PORTB=15;
//write_DS1307(7,0);
//PORTA=20;
//delay_ms(20);
//write_DS1307(7,128);
}char read_DS1307 (unsigned char adr)
{char dat;c_start();2c_out_byte(0xD0); // адрес микросхемы DS1307 для записи
i2c_nack();
i2c_out_byte(adr); // адрес регистра часов в микросхеме DS1307
i2c_nack();c_start();c_out_byte(0xD1); // адрес микросхемы DS1307 для чтенияc_nack();=i2c_in_byte();c_nack();c_stop();(dat);
}_DS1307(unsigned char adr, unsigned char dat)
{c_start();c_out_byte(0xD0); // адрес микросхемы DS1307 для записи2c_nack();
i2c_out_byte(adr); // адрес регистра часов в микросхеме DS1307
i2c_nack();c_out_byte(dat);c_nack();c_stop();
}
//------------------------------------------------------------
// Инициализация DS1307_DS1307()
{ i2c_start();c_out_byte(0xD0); // адрес микросхемы DS1307 для записи2c_nack();
i2c_out_byte(0); // адрес регистра секунд в микросхеме DS1307
i2c_nack();
i2c_out_byte(0); // инициализация часов и бита CH (вкл кварца)
i2c_nack();c_start();c_out_byte(0xD0); // адрес микросхемы DS1307 для записи2c_nack();
i2c_out_byte(1); // адрес регистра минут в микросхеме DS1307
i2c_nack();c_out_byte(0); // инициализация минутc_nack();c_start();c_out_byte(0xD0); // адрес микросхемы DS1307 для записиc_nack();2c_out_byte(2); // адрес регистра часов в микросхеме DS1307
i2c_nack();c_out_byte(0); // инициализация часовc_nack();c_stop();
}char eeprom_rd(unsigned char adr)
{= adr;= 1;(EEDATA);
}_wr(unsigned char adr, unsigned char dat)
{= adr;= dat;= 0;
WREN = 1;
#asm0x550x890xAA0x89
#endasm= 1;(WR);= 0;= 1;
}
// Common I2C Routineschar i2c_in_byte(void)
{char i_byte, n;c_high_sda();(n=0; n<8; n++)
{c_high_scl();(SDA_PIN)
{_byte = (i_byte << 1) | 0x01; // msbit first
}
{_byte = i_byte << 1;
}c_low_scl();
}(i_byte);
}i2c_out_byte(unsigned char o_byte)
{ch