قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

MAAASD
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 93
نشاط [ MAAASD ]
قوة السمعة:0
قديم 13-08-2012, 05:49 AM المشاركة 1   
ha مشكلة ...عرض ساعة رقمية باستخدام I2C Protocol Twitter FaceBook Google+



السلام عليكم يارب تكونوا كويسين
انا قريت عن استخدام ال I2C library
من ال
MikroC PRO help
وكتبت الاكواد زي الشرح بالظبط والمفروض كان يعرض الثواني علي الشاشة
بس مفيش حاجة بتظهر
ده لينك لملفات المشروع
http://www.4shared.com/zip/bmuFdxNx/1-Using_I2C.html
وده الكود علشان لو حد كسل يعمل دونلود D:
ارجو المساعدة وشكراً مقدماً

كود:
// LCD module connections
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections

//this function to write data easily (like EEPROM) in ds1307 RTC via I2C
void write_ds1307(unsigned char register_address,unsigned char data_in){
i2c1_start();              //start using I2C
i2c1_Wr(0xd0); //choose device ds1307(writing operation)
I2C1_Wr(register_address); //choose register to write in (or read from)
I2C1_Wr(data_in);          //do the writing operation
I2C1_Stop();                  //stop using I2c
}

//this function to read data easily (like EEPROM) from ds1307 RTC via I2c
unsigned char read_ds1307(unsigned char register_address){
unsigned char data_out;
i2c1_start();              //start using I2C
i2c1_Wr(0xd0); //choose device ds1307(writing operation)
//device address is 0xd0 from datasheet
I2C1_Wr(register_address); //choose register to read from (or write in)
I2C1_repeated_Start();     //another start for reading
i2c1_Wr(0xd1); //choose device ds1307(reading operation)
data_out=i2c1_rd(0);
//read and send not-ack, it means i need to read one time only
I2C1_Stop();            //stop I2C
return data_out; //data is in BCD
}

unsigned char bcdtodec8(unsigned char bcd8){
unsigned char temp;
temp=bcd8&0x0f;
bcd8=bcd8>>4;
temp=temp+bcd8*10;
return temp;
}

void main() {
unsigned char temp,sec,min,hour,
DayOfMonth,month,year,lcdstr[7];
unsigned int i;
trisd=0x00;
portd=0x00;
lcd_init();              //initialize LCD
I2C1_Init(100000);
/*initialize I2C with 100khz clock this is max clock for the RTC device (DS1307)
check Datasheet for every device to choose a correct value*/

temp = read_ds1307(0);    //read location 0 (seconds), as mentioned in datasheet.
write_ds1307(0,temp&0x7F); // enable oscillator(bit7 =0), as mentioned in datasheet.

lcd_cmd(_lcd_cursor_off);
while(1){

//el 3naween dy 3rftaha mn el datasheet bta3 ds1307 page4
year=read_ds1307(6);
i=bcdtodec8(year);
inttostr(i,lcdstr);
lcd_out(1,1,lcdstr);
delay_ms(500);

}

}

اعلانات
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 12:11 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025