سلام. من تازه کار کردن با آی سی DS1307 رو شروع کردم. این برنامه رو نوشتم که ساعت 21:1:2 رو نشون بده.
[code=c]
#include <mega128a.h>
#include <delay.h>
#include <stdio.h>
#include <lcd.h>
#asm
.equ __lcd_port = 0x1B // LCD: Port A
#endasm
#include <i2c.h>
#asm
.equ i2c_port = 0x18 // I2C: Port B
.equ sda_bit = 1
.equ scl_bit = 0
#endasm
#include <ds1307.h>
void main()
{
unsigned char hour,min,sec;
char lcd_buffer[16];
i2c_init();
rtc_init(0,0,0);
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
rtc_set_time(21,1,2);
delay_ms(20);
lcd_clear();
lcd_gotoxy(0,0);
rtc_get_time(&hour,&min,&sec);
sprintf(lcd_buffer,"Time= %u:%u:%u",hour,min,sec);
lcd_puts(lcd_buffer);
while(1);
}
[/code]
توی پروتئوس این رو نشون میده:

(اون مقاومت 1K هست) اشتباه چاپیه
مدارشو که بستم اصلا هیچی نشون نمیده. اتصالات LCD درسته چون با یه برنامه دیگه تست کردم.
اینم لینک فایل Codevision + پروتئوس:
http://s3.picofile.com/file/8193920500/i2c.rar.html
[code=c]
#include <mega128a.h>
#include <delay.h>
#include <stdio.h>
#include <lcd.h>
#asm
.equ __lcd_port = 0x1B // LCD: Port A
#endasm
#include <i2c.h>
#asm
.equ i2c_port = 0x18 // I2C: Port B
.equ sda_bit = 1
.equ scl_bit = 0
#endasm
#include <ds1307.h>
void main()
{
unsigned char hour,min,sec;
char lcd_buffer[16];
i2c_init();
rtc_init(0,0,0);
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
rtc_set_time(21,1,2);
delay_ms(20);
lcd_clear();
lcd_gotoxy(0,0);
rtc_get_time(&hour,&min,&sec);
sprintf(lcd_buffer,"Time= %u:%u:%u",hour,min,sec);
lcd_puts(lcd_buffer);
while(1);
}
[/code]
توی پروتئوس این رو نشون میده:
(اون مقاومت 1K هست) اشتباه چاپیه

مدارشو که بستم اصلا هیچی نشون نمیده. اتصالات LCD درسته چون با یه برنامه دیگه تست کردم.
اینم لینک فایل Codevision + پروتئوس:
http://s3.picofile.com/file/8193920500/i2c.rar.html
دیدگاه