Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Djangirov1 / Vfrc5

.doc
Скачиваний:
14
Добавлен:
15.02.2015
Размер:
113.15 Кб
Скачать

Тема: Работа с периферийными узлами микроконтроллеров ATMEL. Последовательный периферийный интерфейс TWI.

Цель работы: научиться осуществлять обмен информации между различными устройствами с использованием интерфейса TWI микроконтроллера.

Задание №1: Реализовать на микроконтроллере программу взаимодействия с другими устройствами по интерфейсу TWI. Проверить работу программы в Proteus VSM.

Сверхточные часы реального времени с интегрированным кристаллом и ОЗУ DS3232. Выводить данные о времени и дате на устройство отображения (ЖКИ дисплей).

#ifndef _DS3232_INCLUDED_ //перечисление функций, взятых из библиотеки

#define _DS3232_INCLUDED_// ds3232.lib и её подключение

#include <i2c.h>

#pragma used+

unsigned char rtc_read(unsigned char address);

void rtc_write(unsigned char address,unsigned char data);

void rtc_init(unsigned char C,unsigned char CS,unsigned char AO); //&&&

void rtc_get_time(unsigned char *hour,unsigned char *min,unsigned char *sec);

void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec);

void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char *year);

void rtc_set_date(unsigned char date,unsigned char month,unsigned char year);

#pragma used-

#pragma library ds3232.lib

#endif AutoShape 4

#include <mega16.h>

#include "ds3232.h"

##include <lcd.h>

#include <stdio.h>

#include <delay.h>

#include <i2c.h>

//определяем порт Д как работающий через TWI(I2C), 5 и 6 пины соотв. для данных и управления

#asm

.equ __i2c_port=0x12 ;PORTD

.equ __sda_bit=5

.equ __scl_bit=6

#endasm

//определяем порт А как работающий с LCD

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

unsigned char h=0, m=0, s=0;

unsigned char date=0, month=0, year=0;

unsigned char C=0b00000100;//биты C и CS необходимы для задания формата

unsigned char CS=0b11001000;// времени и даты

unsigned char AO=25;//бит для установки режима будильника (alarm)

char buffer [64];

void main(void)

{

PORTA=0x00;

DDRA=0xFF;

PORTD=0x00;

DDRD=0b00001000;

// I2C Bus initialization

i2c_init();

lcd_init(16);

// DS1307 Real Time Clock initialization

// Square wave output on pin SQW/OUT: Off

// SQW/OUT pin state: 0

rtc_init(C,CS,AO);//инициализация часов

while (1)

{

// Place your code here

rtc_get_time(&h,&m,&s);

rtc_get_date(&date, &month, &year);

lcd_gotoxy(0,0);

sprintf(buffer, "Time %i:%i:%i", h,m,s);

lcd_gotoxy(0,0);

lcd_puts(buffer);

sprintf(buffer, "Date %i:%i:%i", date,month,year);

lcd_gotoxy(0,1);

lcd_puts(buffer);

};

}

Выводы: на данной лабораторной работе я научился осуществлять обмен информации между различными устройствами с использованием интерфейса TWI микроконтроллера.

Соседние файлы в папке Djangirov1