امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 4
  • 1
  • 2
  • 3
  • 4
  • 5
ارتباط ic ساعت با میکرو
#1
با سلام خدمت دوستان

از دوستان کسی هست که بدونه چطور میشه آی سی ساعتا با میکر ارتباط داد و برنامه ای که برای استفاده از اون در میکرو و ارتباط اون با میکرو را بدونه ؟

خواهشن به زبان سی باشه .


با تشکر
خدا کنه آدم عاشق نشه !!

Heart
پاسخ
#2
(30-4-1390، 09:59 عصر)reza137171 نوشته است: با سلام خدمت دوستان

از دوستان کسی هست که بدونه چطور میشه آی سی ساعتا با میکر ارتباط داد و برنامه ای که برای استفاده از اون در میکرو و ارتباط اون با میکرو را بدونه ؟

خواهشن به زبان سی باشه .


با تشکر
با استفاده از آی سی DS1307 می تونید وصل کنید . یکسری توابع آماده برای نمایش تاریخ و ساعت وجود داره . حتی شمسی .
اگر خواستید توابع رو به شما معرفی کنم .
روش نصبش هم گذاشتم .


فایل‌(های) پیوست شده
.pdf   clock lak.pdf (اندازه: 13.72 KB / تعداد دفعات دریافت: 210)
اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط reza137171 ، fhgb
#3
ممنون میشم اگر توابع اونم بذارید

در ضمن اگر یک مداری که آی سی ds1307 توی اون استفاده شده باشه دارید بذارید.

با تشکر
خدا کنه آدم عاشق نشه !!

Heart
پاسخ
#4
شرمنده کمی طول کشید .برای ارتباط با این آی سی نیاز به ارتباط I2C داریمپس ابتدا تنظیمات کدویژن رو روی Ds1307 تنظیم می کنیم
کد:
// I2C Bus functions
#asm
   .equ __i2c_port=0x15 ;PORTC
   .equ __sda_bit=0
   .equ __scl_bit=1
#endasm
#include <i2c.h>


// DS1307 Real Time Clock functions
#include <DS1307.H>
یکسری متغیر تعریف می کنیم که شامل چیزهایی است که نیاز داریم مثل روز ماه ثانیه دقیقه سال و ...
کد php:
unsigned char hour,minute,second;
unsigned char year,month,day;
unsigned char key,keystate
با استفاده از تابع زیر می تونید زمان را از آی سی دریافت کنید :اولی زمان بعدی تاریخ

کد php:
rtc_get_time(&hour,&minute,&second);
      
rtc_get_date(&day,&month,&year); 
با این تابع هم می تونید زمان رو توی آی سی به روز کنید . ( برای تنظیم ساعت )
کد php:
rtc_set_time(hour,minute,second);
            
rtc_set_date(day,month,year); 
در نهایت هم می توانید این زمان ها را برای مثال در LCD نمایش دهید
کد php:
sprintf(str,"%2u:%2u:%2u",hour,minute,second);
      
lcd_puts(str); 
یه برنامه ساده برات میگذارم که کاملا متوجه بشی
کد php:
#include <mega16.h>
#include <delay.h>
#include <stdio.h>


// I2C Bus functions
#asm
   
.equ __i2c_port=0x15 ;PORTC
   
.equ __sda_bit=0
   
.equ __scl_bit=1
#endasm
#include <i2c.h>


// DS1307 Real Time Clock functions
#include <DS1307.H>


// Alphanumeric LCD Module functions
#asm
   
.equ __lcd_port=0x12 ;PORTC
#endasm
#include <lcd.h>


// Declare your global variables here
unsigned char hour,minute,second;
unsigned char year,month,day;
unsigned char key,keystate;
char str[16];


void main(void)
{




// I2C Bus initialization
i2c_init();


// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);


// LCD module initialization
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("BY TechnoElectro");
delay_ms(500);
lcd_clear();
while (
1)
      {


      
rtc_get_time(&hour,&minute,&second);
      
rtc_get_date(&day,&month,&year);
      
key=PINB 0b00111111;
      if(
key!=keystate)
      {
         if(
key!=0b00111111)
         {
            if(
key==0x3E)
            {
               
year++;
               if(
year==100)
                  
year=0;
            }
            if(
key==0x3D)
            {
               
month++;
               if(
month==13)
                  
month=1;
            }
            if(
key==0x3B)
            {
               
day++;
               if(
day==32)
                  
day=1;
            }
            if(
key==0x37)
            {
               
hour++;
               if(
hour==24)
                  
hour=0;
            }
            if(
key==0x2F)
            {
               
minute++;
               if(
minute==60)
                  
minute=0;
            }
            if(
key==0x1F)
            {
               
second++;
               if(
second==60)
                  
second=0;
            }
            
rtc_set_time(hour,minute,second);
            
rtc_set_date(day,month,year);
            
keystate=key;
         }else
            
keystate=0b00111111;
       }
      
lcd_clear();
      
lcd_gotoxy(0,0);
      
sprintf(str,"%2u:%2u:%2u",hour,minute,second);
      
lcd_puts(str);
      
      
      
lcd_gotoxy(0,1);
      
sprintf(str,"%2u:%2u:%2u",day,month,year);
      
lcd_puts(str);
      
delay_ms(50);
      
      };

توی این برنامه یکسری کلید در ورودی داریم که با زدن کلید ها زمان در آی سی به روز می شوداگر خواستید تا آموزش شمسی کردن تاریخ هم بتون بگم
اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط reza137171 ، Dr.Xylitol ، fhgb
#5
(1-5-1390، 11:17 صبح)امیرحسین نوشته است: شرمنده کمی طول کشید .برای ارتباط با این آی سی نیاز به ارتباط I2C داریمپس ابتدا تنظیمات کدویژن رو روی Ds1307 تنظیم می کنیم
کد:
// I2C Bus functions
#asm
   .equ __i2c_port=0x15 ;PORTC
   .equ __sda_bit=0
   .equ __scl_bit=1
#endasm
#include <i2c.h>


// DS1307 Real Time Clock functions
#include <DS1307.H>
یکسری متغیر تعریف می کنیم که شامل چیزهایی است که نیاز داریم مثل روز ماه ثانیه دقیقه سال و ...
کد php:
unsigned char hour,minute,second;
unsigned char year,month,day;
unsigned char key,keystate
با استفاده از تابع زیر می تونید زمان را از آی سی دریافت کنید :اولی زمان بعدی تاریخ

کد php:
     rtc_get_time(&hour,&minute,&second);
     
rtc_get_date(&day,&month,&year); 
با این تابع هم می تونید زمان رو توی آی سی به روز کنید . ( برای تنظیم ساعت )
کد php:
          rtc_set_time(hour,minute,second);
          
rtc_set_date(day,month,year); 
در نهایت هم می توانید این زمان ها را برای مثال در LCD نمایش دهید
کد php:
     sprintf(str,"%2u:%2u:%2u",hour,minute,second);
     
lcd_puts(str); 
یه برنامه ساده برات میگذارم که کاملا متوجه بشی
کد php:
#include <mega16.h>
#include <delay.h>
#include <stdio.h>


// I2C Bus functions
#asm
   
.equ __i2c_port=0x15 ;PORTC
   
.equ __sda_bit=0
   
.equ __scl_bit=1
#endasm
#include <i2c.h>


// DS1307 Real Time Clock functions
#include <DS1307.H>


// Alphanumeric LCD Module functions
#asm
   
.equ __lcd_port=0x12 ;PORTC
#endasm
#include <lcd.h>


// Declare your global variables here
unsigned char hour,minute,second;
unsigned char year,month,day;
unsigned char key,keystate;
char str[16];


void main(void)
{




// I2C Bus initialization
i2c_init();


// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);


// LCD module initialization
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("BY TechnoElectro");
delay_ms(500);
lcd_clear();
while (
1)
     {


     
rtc_get_time(&hour,&minute,&second);
     
rtc_get_date(&day,&month,&year);
     
key=PINB 0b00111111;
     if(
key!=keystate)
     {
        if(
key!=0b00111111)
        {
          if(
key==0x3E)
          {
            
year++;
            if(
year==100)
               
year=0;
          }
          if(
key==0x3D)
          {
            
month++;
            if(
month==13)
               
month=1;
          }
          if(
key==0x3B)
          {
            
day++;
            if(
day==32)
               
day=1;
          }
          if(
key==0x37)
          {
            
hour++;
            if(
hour==24)
               
hour=0;
          }
          if(
key==0x2F)
          {
            
minute++;
            if(
minute==60)
               
minute=0;
          }
          if(
key==0x1F)
          {
            
second++;
            if(
second==60)
               
second=0;
          }
          
rtc_set_time(hour,minute,second);
          
rtc_set_date(day,month,year);
          
keystate=key;
        }else
          
keystate=0b00111111;
      }
     
lcd_clear();
     
lcd_gotoxy(0,0);
     
sprintf(str,"%2u:%2u:%2u",hour,minute,second);
     
lcd_puts(str);
     
     
     
lcd_gotoxy(0,1);
     
sprintf(str,"%2u:%2u:%2u",day,month,year);
     
lcd_puts(str);
     
delay_ms(50);
     
     };

توی این برنامه یکسری کلید در ورودی داریم که با زدن کلید ها زمان در آی سی به روز می شوداگر خواستید تا آموزش شمسی کردن تاریخ هم بتون بگم



امیرحسین جان دست درد نکنه . ولی یه مشکلی هست زمانی که من تنظیمات cod vision را انجام میدم قبل از این که اصلا برنامه ای بنویسم وقتی کامپایل می کنم 2 تا ارور میده اینم ارور هاش Confused
(35): can't open #include file: ds1307.h

(151): undefined symbol 'rtc_init


اگر امکان داره تنظیمات کد ویژن برنامه را بنویس


در ضمن من از کدویژن 2.05.0 استفاده میکنم


باتشکر
خدا کنه آدم عاشق نشه !!

Heart
پاسخ
 سپاس شده توسط mahsah
#6
مشکل همین کدویژن 2.5 است شما باید کتابخانه ها را از کدویژن 2.04 کپی کنید . یا اینکه با 2.04 کار کنید . البته به زودی نسخه جدید کدویژن میاد و کتابخانه هاش کامله .
اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
#7
(1-5-1390، 02:32 عصر)امیرحسین نوشته است: مشکل همین کدویژن 2.5 است شما باید کتابخانه ها را از کدویژن 2.04 کپی کنید . یا اینکه با 2.04 کار کنید . البته به زودی نسخه جدید کدویژن میاد و کتابخانه هاش کامله .



میگم آقا امیرحسین من کدویژن 2.04 ندارم اگه میشه کتابخونه های اونا واسم بذارید .
خدا کنه آدم عاشق نشه !!

Heart
پاسخ
#8
این دو تا پوشه ای که گذاشتم رو داخل پوشه نصب کپی و جایگزین کنید . مشکل حل میشه


فایل‌(های) پیوست شده
.rar   cvavr2.rar (اندازه: 649.3 KB / تعداد دفعات دریافت: 154)
اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط reza137171 ، romina03 ، fhgb
#9
با سلام خدمت همه اساتید ارجمند.
اگه میشه آموزش شمسی کردن تاریخ میلادی رو هم بذارید.
ممنون میشم.
پاسخ
#10
(1-5-1390، 11:17 صبح)امیرحسین نوشته است: اگر خواستید تا آموزش شمسی کردن تاریخ هم بتون بگم
سلام
امیرحسین جان می تونی این آموزش شمسی کردن تاریخ میلادی رو هم بذاری؟ ممنون می شم ازت
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  فهمیدن مقدار ولتاژ ورودی dc یک پین از میکرو sinazzm 2 2,577 24-7-1397، 03:10 عصر
آخرین ارسال: bahramnik
  ریست شدن مداوم میکرو electro 15 5,664 13-11-1396، 08:11 عصر
آخرین ارسال: atlasweb
  سوال در مورد فوروارد کردن چند پین از چند پورت مختلف میکرو moh3en_bad 4 947 16-1-1396، 10:05 صبح
آخرین ارسال: blacksmart2017
  جزئیات کامل ساخت ساعت و تابلوی چرخان فقط با 7 عدد LED Pixar 24 11,416 18-12-1394، 06:10 عصر
آخرین ارسال: shahin_w3
  راه اندازی اسپیکر به کمک میکرو Shahsiahsaman 1 721 8-10-1394، 06:25 عصر
آخرین ارسال: Original
  کمک در ساخت ساعت با سون سگمنت milad.v1371 0 724 8-7-1394، 10:35 صبح
آخرین ارسال: milad.v1371
  راهنمایی در مورد کد برنامه ساعت lakers 2 698 6-4-1394، 01:57 صبح
آخرین ارسال: lakers
  ایجاد پالس های میکرو ثانیه ای تا avr saied20 1 738 31-3-1394، 02:18 عصر
آخرین ارسال: iman d
  ارتباط جند میکرو با i2c damoonelec 7 4,717 16-10-1393، 09:58 عصر
آخرین ارسال: sinaitg
  اتصال کی پد 6*4 به میکرو Mojtababm 3 1,285 19-9-1393، 02:45 صبح
آخرین ارسال: iman d

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان