Расчет системы подачи звонков на основе МК AVR

Автор: Пользователь скрыл имя, 12 Января 2012 в 04:06, контрольная работа

Описание работы

Целью данного курсового проекта является создание системы, способной автоматически давать звонки по заданному расписанию.

Работа содержит 1 файл

Курсачъ.docx

— 70.73 Кб (Скачать)

Часть 1 – Теоретическая

Целью данного  курсового проекта является создание системы, способной автоматически  давать звонки по заданному расписанию. 

Часть 2 – Выбор  элементов, расчет электрических соединений, разводка платы

Предполагается  использовать:

Atmel AVR Mega48 P – 1 шт.

Кварцевый резонатор  на 32768 гц – 1 шт.

Выходной каскад – твердотельное реле КП 17Р

Резистор – 1 шт.

Рисунок 1 – схема КП17Р

Входной ток  Iвх 5-25 мА

Входное напряжение Uвх 1.1 - 1.8 В 

Параметры выходного  каскада аврки:

Ic= -20mA, VCC = 5V

     Зададимся напряжением включения в 1,5 В при токе 20 мА. Для того, чтобы не спалить оптопару последовательно к ней включим резистор номиналом

 R=(5-1,5)В/0,02 A = 175 Ом

Сделаем разводку платы в программе Sprint-Layout:

Рисунок 2 – Разводка платы в программе  SL и распиновка нашего микроконтроллера

      Размер  платы – 27x40 мм, дорожки толщиной по 0,65 мм – легко травить методом лазерного утюга. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Часть 3 – Программная

     Необходимо  изменить Fuse биты МК, отвечающие за источник тактового сигнала. Согласно даташиту - CKSEL3..0 = 0100 для кварца в 32768 гц.

Это делается из любой подходящей среды (avrdude\avrstudio\etc).

     Пин PC0 подтягивается резистором на 400 Ом к земле, так же он подключен к кнопке на корпусе устройства, которая ведет к +5В. Служит эта кнопка для сброса времени на 8 часов 00 мин 00 сек.  

Далее разработаем  прошивку для нашего микроконтроллера:

#include "m48pdef.inc"

rjmp start ; Reset Handler

rjmp start ; IRQ0 Handler

rjmp start ; IRQ1 Handler

rjmp start ; PCINT0 Handler

rjmp start ; PCINT1 Handler

rjmp start ; PCINT2 Handler

rjmp start ; Watchdog Timer Handler

rjmp start ; Timer2 Compare A Handler

rjmp endl ; Timer2 Compare B Handler

rjmp endl

rjmp endl ; Watchdog Timer Handler

rjmp endl ; PCINT0 Handler

rjmp endl ; PCINT1 Handler

rjmp endl ; PCINT2 Handler

rjmp timer_sec ; Watchdog Timer Handler

rjmp timer_sec ; A

rjmp timer_sec; B

rjmp timer_sec; OF

//rjmp endl

timer_sec: // Это обработчик прерывания таймера, вызывается раз в секунду

in r22,sreg

push r22

mov r22, r1

inc r22

mov r1,r22 

ldi r21,0xFF  //был ли начат звонок?

cp r21,r24

brne nex1

ldi r23,0x03

cp r1,r23 // Прошло 3 секунды?

brne nex1

clr r24

out pind, r24 //Отключаем звонок

out portd, r24 

nex1: 

ldi r17, 0x3c //60 секунд?

cp r1,r17

brne n11

clr r1  //0 секунд +1 минута

inc r2

n11:

ldi r17, 0x3c //60 минут?

cp r2,r17

brne n22

clr r2 //0 минут +1 час

inc r3

n22:

ldi r17, 0x18 //24 часа?

cp r3,r17

brne r33

clr r3 // 00 часов

r33: 

//Далее идет  сравнение текущего времени с временем начала звонка, в случае совпадения вызывается ф-ция zvonokbeg1

ldi r17,0x08

cp r17,r3

brne not1

clr r17

cp r17,r2

brne not1

cp r17,r1

brne not1

rcall zvonokbeg1  // 8:00

not1: 

ldi r17,0x08

cp r17,r3

brne not2

ldi r17,0x2D

cp r17,r2

brne not2

clr r17

cp r17,r1

brne not2

rcall zvonokbeg1  // 8:45

not2: 

ldi r17,0x08

cp r17,r3

brne not3

ldi r17,0x32

cp r17,r2

brne not3

clr r17

cp r17,r1

brne not3

rcall zvonokbeg1  // 8:50

not3: 

ldi r17,0x09

cp r17,r3

brne not4

ldi r17,0x23

cp r17,r2

brne not4

clr r17

cp r17,r1

brne not4

rcall zvonokbeg1  // 9:35

not4: 

ldi r17,0x09

cp r17,r3

brne not5

ldi r17,0x2D

cp r17,r2

brne not5

clr r17

cp r17,r1

brne not5

rcall zvonokbeg1 // 9:45

not5: 

ldi r17,0x0A

cp r17,r3

brne not6

ldi r17,0x1E

cp r17,r2

brne not6

clr r17

cp r17,r1

brne not6

rcall zvonokbeg1  // 10:30

not6: 

ldi r17,0x0A

cp r17,r3

brne not7

ldi r17,0x23

cp r17,r2

brne not7

clr r17

cp r17,r1

brne not7

rcall zvonokbeg1  // 10:35

not7: 

ldi r17,0x0B

cp r17,r3

brne not8

ldi r17,0x14

cp r17,r2

brne not8

clr r17

cp r17,r1

brne not8

rcall zvonokbeg1  // 11:20

not8: 

ldi r17,0x0B

cp r17,r3

brne not9

ldi r17,0x1E

cp r17,r2

brne not9

clr r17

cp r17,r1

brne not9

rcall zvonokbeg1  // 11:30

not9: 

ldi r17,0x0C

cp r17,r3

brne not10

ldi r17,0x0F

cp r17,r2

brne not10

clr r17

cp r17,r1

brne not10

rcall zvonokbeg1  // 12:15

not10: 

ldi r17,0x0C

cp r17,r3

brne not11

ldi r17,0x14

cp r17,r2

brne not11

clr r17

cp r17,r1

brne not11

rcall zvonokbeg1  // 12:20

not11: 

ldi r17,0x0D

cp r17,r3

brne not12

ldi r17,0x05

cp r17,r2

brne not12

clr r17

cp r17,r1

brne not12

rcall zvonokbeg1  // 13:05

not12: 

ldi r17,0x0D

cp r17,r3

brne not13

ldi r17,0x1E

cp r17,r2

brne not13

clr r17

cp r17,r1

brne not13

rcall zvonokbeg1  // 13:30

not13: 

ldi r17,0x0E

cp r17,r3

brne not14

ldi r17,0x0F

cp r17,r2

brne not14

clr r17

cp r17,r1

brne not14

rcall zvonokbeg1  // 14:15

not14: 

ldi r17,0x0E

cp r17,r3

brne not15

ldi r17,0x14

cp r17,r2

brne not15

clr r17

cp r17,r1

brne not15

rcall zvonokbeg1  // 14:20

not15: 

ldi r17,0x0F

cp r17,r3

brne not16

ldi r17,0x05

cp r17,r2

brne not16

clr r17

cp r17,r1

brne not16

rcall zvonokbeg1  // 15:05

not16: 

ldi r17,0x0F

cp r17,r3

brne not17

ldi r17,0x0F

cp r17,r2

brne not17

clr r17

cp r17,r1

brne not17

rcall zvonokbeg1  // 15:15

not17: 

ldi r17,0x10

cp r17,r3

brne not18

ldi r17,0x00

cp r17,r2

brne not18

clr r17

cp r17,r1

brne not18

rcall zvonokbeg1  // 16:00

not18: 

ldi r17,0x10

cp r17,r3

brne not19

ldi r17,0x05

cp r17,r2

brne not19

clr r17

cp r17,r1

brne not19

rcall zvonokbeg  // 16:05

not19: 

ldi r17,0x10

cp r17,r3

brne not151

ldi r17,0x32

cp r17,r2

brne not151

clr r17

cp r17,r1

brne not151

rcall zvonokbeg  // 16:50

not151: 

ldi r17,0x11

cp r17,r3

brne not152

ldi r17,0x00

cp r17,r2

brne not152

clr r17

cp r17,r1

brne not152

rcall zvonokbeg  // 17:00

not152: 

ldi r17,0x11

cp r17,r3

brne not153

ldi r17,0x2D

cp r17,r2

brne not153

clr r17

cp r17,r1

brne not153

rcall zvonokbeg  // 17:45

not153: 
 

ldi r17,0x11

cp r17,r3

brne not154

ldi r17,0x32

cp r17,r2

brne not154

clr r17

cp r17,r1

brne not154

rcall zvonokbeg  // 17:50

Информация о работе Расчет системы подачи звонков на основе МК AVR