Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Результаты моделирования работы схемы






Данная принципиальная схема была собрана в программе Proteus Professional 8.0. Схема собиралась в соответствии с элементной базой, элементы которые использовались при сборке (микросхемы PCF8583, 7805, АОТ101А 4 шт., микроконтроллер AT90S1200, конденсаторы 5 шт., резисторы 7 шт., соединитель, резонаторы кварцевые 2 шт., элемент питания, ключ, выпрямительный диод, использовалось заземление). Сборка осуществлялась в режиме Component Mode при помощи которого происходило соединение между компонентами схемы. После сборки схемы в свойствах микроконтроллера был указан путь к файлу с программой. После загрузки файла с программой схема была переключена в режим симуляции работы после запуска открылось окно микросхемы PCF8583 с текущим временем и датой, места соединения схемы подсвечивались специальным цветом

 


 

Заключение

Данный курсовой проект разрабатывает автоматический корректор часов. Корректор предназначен для отслеживания пропадания электроэнергии и восстановления показаний реального времени на любых электронных часах, имеющих органы ручной коррекции часов. Данное устройство содержит Элемент питания (CR2032), Держатель элемента питания (ВН-6), резонаторы кварцевые (BQ1, BQ2), Конденсаторы типа К10-176 (С1—СЗ, С4, С5, С6, СР1, СТ1), микросхемы: (D1, D2, D3, U1, U2.), Резисторы типа МЛТ-0, 125 (R1--R4, R5—R8, SB1, VD1—VD4, J1).В ходе проектирования были разработаны структурная, принципиальная схемы.


 

Список используемых источников

1. Справочник. под ред.О.Д.Вальпа, 2-е издание, М.: «Полезные схемы с применением микроконтроллеров и Плис», 2006.


 

Приложение А. Листинг программы

; ******************************************************************************

; Название: ak1200

; Версия: 1.0

; Автор: О.Д. Вальпа

;

; Описание: Программа атоматической коррекции электронных часов после сбоя сети

;

; Алгоритм работы:

; сброс

; |

; да__кнопка УСТ нажата? _нет

; | |

; установить часы и CMOS установить часы из CMOS

; |_____________________|

; |

; спать

; ******************************************************************************

.include " 1200def.inc"; Включить файл описания регистров

.LIST; Включить листинг программы

;.LISTMAC; Включить листинг макросов

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; Константы и определения переменных

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; Выводы порта B

.equ PB_U0 =0; Выход

.equ PB_U1 =1; Выход

.equ PB_U2 =2; Выход

.equ PB_U3 =3; Выход

 

; Выводы порта D

.equ PD_SB1 =2; Вход

.equ PD_INT1 =3; Вход

.equ PD_SDA =5; Вход-Выход

.equ PD_SCL =6; Вход-Выход

 

; Переменные в регистрах

; Регистры не поддерживающие команды CPI, ANDI, SUBI, ORI, SBCI, LDI.

.def TEMPCODE = r0; Регистр для команды LPM НЕ ИЗМЕНЯТЬ r0!!!

.def TEMPSREG = r15; Временный регистр для хранения состояния

; Регистры поддерживающие команды CPI, ANDI, SUBI, ORI, SBCI, LDI.

.def TEMP = r16; Регистр временных данных

.def TEMP2 = r17; Регистр временных данных 2

.def TEMP3 = r18; Регистр временных данных 3

.def TEMPPP = r19; Регистр временных данных подпрограмм

.def TEMPDEL = r20; Переменная цикла задержки

.def TBin = r21; Регистр данных бинарного байта

.def TBCDH = r22; Регистр данных BCD (старший байт)

.def CtMin = r23; Счетчик минут (формат BCD)

.def CtChs = r24; Счетчик часов (формат BCD)

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; Макросы

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; ===================================================================

.macro I2C00; Передача комбинации SCL=0 SDA=0 по интерфейсу I2C

cbi PORTD, PD_SCL; SCL=0

cbi PORTD, PD_SDA; SDA=0

rcall del5mks

.endm

; ===================================================================

.macro I2C01; Передача комбинации SCL=0 SDA=1 по интерфейсу I2C

cbi PORTD, PD_SCL; SCL=0

sbi PORTD, PD_SDA; SDA=1

rcall del5mks

.endm

; ===================================================================

.macro I2C10; Передача комбинации SCL=1 SDA=0 по интерфейсу I2C

sbi PORTD, PD_SCL; SCL=1

cbi PORTD, PD_SDA; SDA=0

rcall del5mks

.endm

; ===================================================================

.macro I2C11; Передача комбинации SCL=1 SDA=1 по интерфейсу I2C

sbi PORTD, PD_SCL; SCL=1

sbi PORTD, PD_SDA; SDA=1

rcall del5mks

.endm

; ===================================================================

.macro I2CSTART; Передача СТАРТ условия по интерфейсу I2C

sbi DDRD, PD_SDA; SDA=выход

; I2C11; {SCL=1 SDA=1}

sbi PORTD, PD_SCL; SCL=1

sbi PORTD, PD_SDA; SDA=1

rcall del5mks

; I2C10; {SCL=1 SDA=0}

sbi PORTD, PD_SCL; SCL=1

cbi PORTD, PD_SDA; SDA=0

rcall del5mks

; I2C00; {SCL=0 SDA=0}

cbi PORTD, PD_SCL; SCL=0

cbi PORTD, PD_SDA; SDA=0

rcall del5mks

.endm

; ===================================================================

.macro I2CSTOP; Передача СТОП условия по интерфейсу I2C

sbi DDRD, PD_SDA; SDA=выход

; I2C00; {SCL=0 SDA=0}

cbi PORTD, PD_SCL; SCL=0

cbi PORTD, PD_SDA; SDA=0

rcall del5mks

; I2C10; {SCL=1 SDA=0}

sbi PORTD, PD_SCL; SCL=1

cbi PORTD, PD_SDA; SDA=0

rcall del5mks

; I2C11; {SCL=1 SDA=1}

sbi PORTD, PD_SCL; SCL=1

sbi PORTD, PD_SDA; SDA=1

rcall del5mks

.endm

; ===================================================================

.macro I2CRDBIT; Прием бита I2C-> TEMP2 мл.бит

cbi DDRD, PD_SDA; SDA=вход

; I2C01; {SCL=0 SDA=1}

cbi PORTD, PD_SCL; SCL=0

sbi PORTD, PD_SDA; SDA=1

rcall del5mks

; I2C11; {SCL=1 SDA=1}

sbi PORTD, PD_SCL; SCL=1

sbi PORTD, PD_SDA; SDA=1

rcall del5mks

 

sbic PIND, PD_SDA

ldi TEMP2, 1

sbis PIND, PD_SDA

clr TEMP2

; I2C01; {SCL=0 SDA=1}

cbi PORTD, PD_SCL; SCL=0

sbi PORTD, PD_SDA; SDA=1

rcall del5mks

.endm

; ===================================================================

.macro I2CWRBIT; Передача бита TEMP2 мл.бит-> I2C

sbi DDRD, PD_SDA; SDA=выход

cbi PORTD, PD_SCL; SCL=0

 

sbrc TEMP2, 0

sbi PORTD, PD_SDA; SDA=1

sbrs TEMP2, 0

cbi PORTD, PD_SDA; SDA=0

rcall del5mks

 

sbi PORTD, PD_SCL; SCL=1 SDA=d

rcall del5mks

 

cbi PORTD, PD_SCL; SCL=0 SDA=d

rcall del5mks

.endm

; ===================================================================

 

.CSEG; Код программы

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; Вектора прерываний

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

.org 0

rjmp OP_RESET; Переход по сбросу

.org INT0addr

rjmp OP_INT0; Переход по прерыванию INT0

.org OVF0addr

rjmp OP_OVF0; Переход по переполнению ТС0

.org ACIaddr

rjmp OP_ACI; Переход по компаратору

 

.org $10; Выровнять по границе 16 байт

NAME:; Название программы и версия

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; 0123456789abcdef

.DB " ak1200e v1.0 "

.DB " O.D.Valpa (C) "

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; Подпрограмма обработки прерывания INT0

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

OP_INT0: in TEMPSREG, SREG; Сохранить рег. SREG

nop

out SREG, TEMPSREG; Восстановить рег. SREG

reti

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; Подпрограмма обработки прерывания OVF0

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

OP_OVF0: in TEMPSREG, SREG; Сохранить рег. SREG

nop

out SREG, TEMPSREG; Восстановить рег. SREG

reti

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

; Подпрограмма обработки прерывания ACI

; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

OP_ACI: in TEMPSREG, SREG; Сохранить рег. SREG

nop

out SREG, TEMPSREG; Восстановить рег. SREG

reti

 

; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

OP_RESET:; Переход по сбросу

; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

INIT:; Инициализация

; ===================================================================

; Инициализация сторожевого таймера

ldi TEMP, 0b00000111

;

Mc ; +-WDP0 0 1 0 1 0 1 0 1 ; ||+--WDP0 0 0 1 1 0 0 1 1 ; |+---WDP0 0 0 0 0 1 1 1 1 ; +----WDE Разр.раб.ст.тайм. 1=разр. 0=запр. out WDTCR, TEMP wdr; Сброс сторожевого таймера ; =================================================================== ; Инициализация таймера0 ; Период тиков = (Fclk = 8 МГц)/CS/N ldi TEMP, 0b00000101 ; CS STOP 1 8 64 256 1024 T0/ T0\ ; ||+- CS0 0 1 0 1 0 1 0 1 ; |+-- CS1 0 0 1 1 0 0 1 1 ; +--- CS2 0 0 0 0 1 1 1 1 out TCCR0, TEMP; Делитель = CS ldi TEMP, 0xFF-240; Предустановка таймера out TCNT0, TEMP ; ===========================ПОМОЩЬ================================ ; Инициализация портов ; PORTn 0 1 0 1 (0-земля 1-питание) ; DDRn 0 0 1 1 (0-вход 1-выход) ;!!!! ;!!! +-Выход 1 ;!! +---Выход 0 ;! +-----Вход источник тока ; +-------Вход 3-е состояние ; ===========================Порт B================================== ldi TEMP, 0b11111111; Порт B в исходное состояние out PORTB, TEMP ldi TEMP, 0b00001111; Порт B назначить вход=0/выход=1 ;

|| ;

U0 ;

U1 ;

U2 ;

U3 ; +----- -SS ; ||+------ MOSI ; |+------- MISO ; +-------- SCK out DDRB, TEMP ; ===========================Порт D================================== ldi TEMP, 0b11111111; Порт D в исходное состояние out PORTD, TEMP ldi TEMP, 0b01100000; Порт D назначить вход=0/выход=1 ;

|| ;

|+- ;

+-- ;

SB1 ;

INT1 ; +----- ; ||+------ SDA ; |+------- SCL ; +-------- out DDRD, TEMP ; ===========================Регистр режима=========================== ldi TEMP, 0b00110000; Установка режима работы контроллера ;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.