Maxire
1

Часы реального времени

13.12.2013, 02:57. Показов 2308. Ответов 7
Метки нет (Все метки)

надо часы сделать для процессора Atmega. Схема в протеусе сделана,а вот только как запрогать его хз. Если что на ум придет напишите пж. И если можно используемые регистры обзовите через define, чтобы проблем с вызовом не было,а то по проекту типо для удобства чтобы это было

Задание
Часы реального времени
DS1307 + ,батарейка + часовой кварц
Разработать устройство и программу.I2C
По нажатию кнопки обнуление или фиксированное дата время.
Переменные общие для всей программы.
Индикация текущей даты и времени
Дополнительно:
Прием от РС по RS232 команды с текущей датой и временем.
Устройство для связи с последовательным портом PC с помощью преобразователя интерфейсов USB-UART TTL-232R-3V3.
Заранее за содействие спасибо

 Комментарий модератора 
Правила форума:

4.7. Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2013, 02:57
Ответы с готовыми решениями:

Разработка часов реального времени на МС68НС11 (точность до 1 мин)
Всем привет. Необходимо разработать часы на МС68НС11, время отображаться будет на жк индикаторе....

Эффективность чтения датчиков SPI через DMA в режиме реального времени
Кто знает, насколько эффективно использование разных датчиков интерфейса SPI, для отслеживания...

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

Часы реального времени на Atmega16
Собрала в Proteus схему и написала код, но работает криво (схема в Протеус и код в архиве)....

7
142 / 120 / 21
Регистрация: 14.02.2013
Сообщений: 817
15.12.2013, 11:02 2
А кто вам дал такое задание?
0
142 / 120 / 21
Регистрация: 14.02.2013
Сообщений: 817
15.12.2013, 11:06 3
Почитайте.
Вложения
Тип файла: pdf DS1307_datasheet_rus.pdf (312.1 Кб, 26 просмотров)
0
142 / 120 / 21
Регистрация: 14.02.2013
Сообщений: 817
15.12.2013, 11:07 4
А цифры на что будете выводить?
0
233 / 223 / 146
Регистрация: 19.03.2012
Сообщений: 369
15.12.2013, 12:07 5
Вот пример на С++. Часы с термометром. Вывод на дисплей 16х2.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*пример работы МС часов реального времени DS1307*/
#include <mega8.h>
 
#asm
    .EQU __lcd_port=0x18 /*объявляем порт к которому подключен дисплей - PORTB*/
    .EQU __w1_port=0x12  /*объявляем порт к которому подключен DS18B20 - PORTD*/
    .EQU __w1_bit=7 
    .EQU __i2c_port=0x15 /*объявляем порт к которому подключен RTC DS1307 - PORTC*/
    .EQU __sda_bit=4
    .EQU __scl_bit=5
#endasm
 
#include <lcd.h>       /*подключаем LCD-функции*/
#include <ds1820.h>    /*подключаем функции температурного датчика DS18B20*/
#include <i2c.h>    /*подключаем функции I2C*/
#include <stdio.h>
#include <delay.h>  /*для организации задержек*/
#include <stdlib.h>
#include <string.h>
 
#define max_number 8  /*макс.кол.устр.на шине 1-Wire*/
#define addres_RTC 0b11010000 /*адрес МС DS1307 для записи, для чтения 0b11010001*/
 
typedef unsigned char byte;  /*определяем тип данных byte = unsigned char*/ 
  
/*процедура вывода текущей температуры в текущую позицию*/
void out_temp_disp(void);
/*процедура вывода времени и даты в текущую позицию*/
void out_tm_dt_disp(void);
/*процедура чтения байта из RTC по шине I2C*/
byte read_RTC(byte addres_byte);
/*процедура записи байта в RTC по шине I2C*/
void write_RTC(byte addres_byte, byte data);
 
unsigned char string_LCD[20];  /*объявляем строку для вывода на дисплей*/
unsigned char string_temp1[6],string_temp2[6],string_temp3[6];  /*объявляем строку для вывода на дисплей*/
 
/*-= Oсновная программа =-*/
void main(void)
{
    byte x;
    
    DDRC = 0xff; /*auoiau*/
    DDRD = 0xff; /*auoiau*/
    PORTC = 0x00;
    DDRD.2= 0;/**/
    PORTD = 0x00;
    
    /*Настройка сторожевого таймера
    WDTCR = 0b00001000;*/
    lcd_init(16);/*инициализируем LCD 2x16*/
    lcd_clear();
    i2c_init();  /*инициализируем шину I2C*/ 
    
    write_RTC(0x07, 0x80);
    write_RTC(0x00, 0x00);
 
 
    while (1)  /*непрерывный цикл*/
    {
        #asm("wdr");     /*сброс сторожевого таймера*/
            
        out_tm_dt_disp();
        out_temp_disp();
    }
}
 
/*процедура записи байта в RTC по шине I2C*/
void write_RTC(byte addres_byte, byte data)
{
    i2c_start();/*генерируем стартовое условие*/
    i2c_write(addres_RTC);
    i2c_write(addres_byte);
    i2c_write(data);
    i2c_stop();
    delay_ms(10);
}
 
/*процедура чтения байта из RTC по шине I2C*/
byte read_RTC(byte addres_byte)
{
    byte data;
    i2c_start();/*генерируем стартовое условие*/
    i2c_write(addres_RTC);
    i2c_write(addres_byte);
    i2c_start();
    i2c_write(addres_RTC | 1);
    data=i2c_read(0);/*0 - no ACK , 1 - ACK*/
    i2c_stop();
    return data;
}
 
/*процедура вывода времени и даты в текущую позицию*/
void out_tm_dt_disp(void)
{
    unsigned char hour,minute,second; /*время*/
    byte y;
    unsigned char day=22,month=7,year=13;    /*дата*/  
    
    rtc_get_time(&hour,&minute,&second);
    rtc_get_date(&day,&month,&year); //считать дату;   
    
    y=read_RTC(0x00);
    lcd_gotoxy(0,0);    
    itoa(y,string_LCD);
    itoa(minute,string_temp2);
    itoa(second,string_temp3);      
    sprintf(string_LCD,"%s:%s:%s",string_temp1,string_temp2,string_temp3);
    lcd_puts(string_LCD); /*вывод строки на дисплей*/
}
 
/*процедура вывода текущей температуры в текущую позицию*/
/*возможно до 8 датчиков на шине*/
void out_temp_disp(void)
{
    unsigned char cod_rom[max_number][9];/**/
    unsigned int i;
    float c; 
    unsigned char number_DS1820;
    int temper[max_number];     
    if(w1_init())
    {
       number_DS1820 = w1_search(0xf0,&cod_rom[0][0]);/**/
       for (i=0;i<number_DS1820;i++)
       {
            temper[i]=ds1820_temperature_10(&cod_rom[i][0]);            
            c=temper[i];
            c/=100;            
            c*=1.25;/*компенсируем погрешность температуры на 25%*/
            lcd_gotoxy(0,1);            
            ftoa(c,2,string_temp1); /*  перевод числа в строку*/
            sprintf(string_LCD,"t %s %cC",string_temp1,0xef);             
            lcd_puts(string_LCD); /*вывод строки на дисплей*/
            delay_ms(1000);       
       }            
    }       
}
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,161
Записей в блоге: 1
15.12.2013, 14:59 6
«Компот» из Arduino, датчиков температуры DS18B20, RTC DS1307, бузера & LCD (буратина на меге, если что)

Схема в протеусе сделана,а вот только как запрогать его хз
сделано, показывай.
0
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 2
25.02.2016, 21:24 7
А у Вас есть схема под эту программу?

Добавлено через 1 минуту
А у Вас есть схема под эту программу?)
0
977 / 601 / 100
Регистрация: 15.05.2012
Сообщений: 3,550
26.02.2016, 08:18 8
Всё есть:
Assembler
1
2
3
4
5
6
.EQU __lcd_port=0x18 /*объявляем порт к которому подключен дисплей - PORTB*/ 
.EQU __w1_port=0x12 /*объявляем порт к которому подключен DS18B20 - PORTD*/
.EQU __w1_bit=7
.EQU __i2c_port=0x15 /*объявляем порт к которому подключен RTC DS1307 - PORTC*/
.EQU __sda_bit=4
.EQU __scl_bit=5
Составляйте.
Для определения конкретных лапок ЖКИ посмотрите визард CodeVision.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2016, 08:18

Программные часы реального времени (RTC)
Доброго, подскажите исходник (желательно C++) программых часов реального времени (RTC), чтобы...

Не работают часы реального времени в связки с ЖКИ
Исходник и схему взял отсюда Мне нужно в протеусе вывести на ЖКИ LM0216L реальное время и дату.

Встроенные часы реального времени (на кристалле) ATmega8/168
Здравствуйте , не обходимо согласно варианту сделать схему (без программирования) часов реального...

Часы реального врмеени-таймер. RV-2123-C2-TA-QC-020
Привет всем! Имеется один вопросик по часам релаьного времени. в общем имеется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.