Разработка и изготовление автомата подачи звонков

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



автомата подачи звонков.

При испытании автомата были выявлены некоторые недостатки, которые были устранены.

Цель дипломной работы была достигнута: разработан и создан автомат подачи звонков (фото см. в приложении 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