![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Результаты моделирования работы схемы
Данная принципиальная схема была собрана в программе 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; Установка режима работы контроллера ;
|