Itnewsrussia.ru

Анализ современных технологий

Поддержка ОС

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 = i/16+'0';

.buffer = i%16+'0';

.buffer = ':';

.i=ds_read(0x01);

.buffer = i/16+'0';

.buffer = i%16+'0';

.buffer = ':';

.i=ds_read(0x00);

.buffer = i/16+'0';

.buffer = i%16+'0';

.buffer = '\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

Популярное:

Диагностика и ремонт СВ-передатчика Провести ремонт радиоэлектронного изделия, значит восстановить его работоспособность. Чтобы провести ремонт необходимо определить является ли изделие ремонтопригодным. При ремонте узлы изделия могут быть заменены полностью или частично. После проведения замены элементов в ремонтируемом изделии необходимо провести регулировки и наст ...