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

Поддержка ОС

view source print

.void ds_write(unsigned char addr,unsigned char data)

.{

.i2c_start();

.i2c_write(0xD0);

.i2c_write(addr);

.i2c_write(data);

.i2c_stop();

.}

.

.unsigned char ds_read(unsigned char addr)

.{

.unsigned temp;

.i2c_start();

.i2c_write(0xD0);

.i2c_write(addr);

.i2c_stop();

.i2c_start();

.i2c_write(0xD1);

.temp=i2c_read(0);

.i2c_stop();

.return temp;

.}

.

.void ds_off()

.{

.ds_write(0x00,ds_read(0x00)|0x80);

.}

.

.void ds_on()

.{

.ds_write(0x00,ds_read(0x00)&~0x80);

.}

.

.void ds_init()

.{

.unsigned char i;

37.// устанавливаем режим 24 часа

.i=ds_read(0x02);

39.if((i&0x40)!=0)

.{

.ds_write(0x02,i&~0x40);

42.}

.// Если часы выключены - то включаем их

44.i=ds_read(0x00);

.if((i&0x80)!=0)

.{

.ds_write(0x00,i&~0x80);

.}

.}

.

.unsigned char IntToBoolInt(unsigned char data)

.{

.data=data%100;

.return data/10*16+data%10;

55.}

ds_write(адрес,байт данных) - отправляет 1 байт данных по указанному адресу DS1307

байт данных ds_read(адрес) - считывает 1 байт данных из указанного адреса DS1307_off() - выключить DS1307_on() - включить DS1307_init() - инициализация DS1307

байт IntToBoolInt(байт) - функция перекодировки числа в двоично-десятичный вид

Во время инициализации проверяются и устанавливаются, если выключены следующие биты: бит отвечающий за 24-х часовой режим работы часов и бит отвечающий за включенное состояние часов. Были реализованы 2 функции для включения и отключения часов. DS1307 может отправлять и принимать как однобайтовые посылки, так и много байтовые, но для упрощения работы с часами функции для чтения и записи только однобайтовые. Для установки часов есть ещё функция для преобразования привычной десятичной формы представления числа в двоично-десятичную, в которой микросхема хранит показатели времени. Приведённых функция для работы с часами вполне достаточно.

В прошивки реализованы функции для считывания и вывода на дисплей времени -time() , даты - date(). В бесконечном цикле через некоторые промежутки времени эти функции вызываются для вывода времени и даты на дисплей. Рассмотрим, как устроена функция для чтения с последующим выводом текущего времени:

view source print

.void time()

.{

.unsigned char i;

.SetLCDPosition(1, 0);

.i=ds_read(0x02);

.buffer[0] = i/16+'0';

.buffer[1] = i%16+'0';

.buffer[2] = ':';

.i=ds_read(0x01);

.buffer[3] = i/16+'0';

.buffer[4] = i%16+'0';

.buffer[5] = ':';

.i=ds_read(0x00);

.buffer[6] = i/16+'0';

.buffer[7] = i%16+'0';

.buffer[8] = '\0';

.ShowStr(buffer);

18.}

Происходит установка курсора на дисплее. Считываем значение регистра отвечающего за час и по пол байта, т.к. данные хранятся в двоично-десятичном виде, записываем в буфер. Далее добавляем разделитель в виде двоеточия. Считываем и записываем в буфер таким же образом значения минут и секунд. Выводим содержимое буфера на дисплей. Таким же образом устроена функция вывода текущей даты.

В прошивки есть функция для установки часов и минут - set_time(). Эта функция с помощью одной кнопки устанавливает время. Как это делается: нажимаем на кнопку - на дисплее высвечивается надпись «Set hour :» и количество часов, увеличиваем час по средством коротких нажатий на кнопку; установив час длительным нажатием переходим на установку минут, о чём свидетельствует надпись «Set min :», таким же образом устанавливаем минуты, а длительным нажатием возвращаемся в бесконечный цикл к часам. Но т.к. эта функция большая приведём из неё только одну строчку, которая записывает в DS1307 значение минут:

view source print

.ds_write(0x02,IntToBoolInt(time));

Записываем в регистр, который соответствует минутам желаемое значение, предварительно приведённое к двоично-десятичному виду.

Назначение учебного стенда СУ-МК НТЦ-31.100

Учебный стенд СУ-МК НТЦ-31.100 (далее по тексту Стенд) предназначен для изучения устройства микроконтроллеров семейства AVR, современных компонент, входящих в состав типичных устройств, базирующихся на применении микропроцессорной техники, исследования законченных устройств на базе микропроцессоров, решения специфичных задач по управлению различными объектами, сбору, хранению и обработке информации.

Технические характеристики

Габаритные размеры 200 х 200 х 100 мм 2.2 Масса 0,5 кг 2.3 Напряжение питания 5 В 2.4 Потребляемый ток 0,45 А 2.5 Стенд построен на базе микроконтроллера ATMega128 2.6 Разрядность микроконтроллера 8 бит 2.7 Связь с компьютером по интерфейсам USB, RS-232

Органы управления стенда

Внешний вид передней панели стенда приведен на рисунке 10.

Рисунок 10 - Внешний вид передней панели учебного стенда СУ-МК НТЦ-31.100

Перейти на страницу: 1 2 3

Самое читаемое:

Активный фильтр нижних частот каскадного типа
Используя в качестве элемента схемы ОУ, можно синтезировать характеристику любого RLC-фильтра без применения катушек индуктивности. Такие безындукционные фильтры известны под названием «активные фильтра» благодаря включению в их схему активного элемента (усилителя). Активные фильтры можно использовать в качестве фильтров низких ...

www.techstages.ru : Все права защищены! 2024