![]() |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Jun 2011
Bài gửi: 18
: |
![]() mình đang làm lab i2c với PIC 16f887 , gặp rắc rối ở phần lấy data từ ds1307 đưa vào PIC xử lí, mọi người giúp mình với, trên 6 led 7 đoạn toàn hiển thị số 0
code của mình đây Code:
#include <htc.h> #include "i2c.h" #include "lcd.h" __CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word __CONFIG(BOR4V_BOR21V); #define _XTAL_FREQ 4000000 #define SLAVER_ADD 0X68 #define READ 1 #define WRITE 0 #define led_gio_c RD5 #define led_gio_dv RD4 #define led_phut_c RD3 #define led_phut_dv RD2 #define led_giay_c RD1 #define led_giay_dv RD0 int gio_c,gio_dv,phut_c,phut_dv,giay_c,giay_dv; int giay,phut,gio,i; unsigned char mgio_c,mgio_dv,mphut_c,mphut_dv,mgiay_c,mgiay_dv; const unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void ds1307_init(); void read_ds1307(); void ds1307_init() { i2c_start(); i2c_write((SLAVER_ADD<<1)|WRITE); // ~ i2c_write(0xd0) i2c_write(0x00); i2c_stop(); } void read_ds1307() { i2c_start(); i2c_write((SLAVER_ADD<<1)|WRITE); // ~ i2c_write(0xd0) i2c_write(0x00); i2c_stop(); i2c_stop(); //restart i2c_write((SLAVER_ADD<<1)|READ); // ~i2c_write(0xd1); giay=i2c_read(0); phut=i2c_read(0); gio=i2c_read(1); i2c_stop(); } void update_time() { giay_dv=giay&0x0f; giay_c=(giay&0xf0)>>4; phut_dv=phut&0x0f; phut_c=(phut&0xf0)>>4; gio_dv=giay&0x0f; gio_c=(giay&0xf0)>>4; mgiay_dv=ma[giay_dv]; mgiay_c=ma[giay_c]; mphut_dv=ma[phut_dv]; mphut_c=ma[phut_c]; mgio_dv=ma[gio_dv]; mgio_c=ma[gio_c]; } void hienthi() { for(i=0;i<5;i++) { PORTB=mgiay_dv; led_giay_dv=0; __delay_us(100);led_giay_dv=1; PORTB=mgiay_c; led_giay_c=0; __delay_us(100);led_giay_c=1; PORTB=mphut_dv; led_phut_dv=0; __delay_us(100);led_phut_dv=1; PORTB=mphut_c; led_phut_c=0; __delay_us(100);led_phut_c=1; PORTB=mgio_dv; led_gio_dv=0; __delay_us(100);led_gio_dv=1; PORTB=mgio_c; led_gio_c=0; __delay_us(100);led_gio_c=1; } } void main() { ANSEL=0; ANSELH=0; TRISB=0X00; TRISD=0X00; i2c_init(); ds1307_init(); while(1) { read_ds1307(); update_time(); hienthi(); } } |
![]() |
![]() |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Jun 2011
Bài gửi: 18
: |
hú hú không có ai giúp em hả
![]() |
![]() |
![]() |
![]() |
|
|