PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Help me ! Đồng hồ led 7 đoạn dùng Pic16F887 , cài đặt được thời gian rồi nhưng không (http://www.picvietnam.com/forum/showthread.php?t=32773)

ChuTieu_Quay 08-09-2013 10:41 PM

Help me ! Đồng hồ led 7 đoạn dùng Pic16F887 , cài đặt được thời gian rồi nhưng không
 
1 Attachment(s)
Ôi không để ý làm quả tiêu đề dài quá nên không hết :"Help me ! Đồng hồ led 7 đoạn dùng Pic16F887 , cài đặt được thời gian rồi nhưng không từ động chạy "
Mày mò vẽ lại cái Pickit chạy ok rồi , đến test làm cái đồng hồ led 7 đoạn dùng Pic16F887 chơi , thì mô phỏng cũng ok rồi , nhưng khi test trên bo cắm thử ( dựa vào mô phỏng thôi , chưa làm mạch thật ) thì đã " set " được thời gian , nhưng sau nó cứ đứng sáng led không chạy gì , nhiều khi cắm nguồn vào còn phải set Ok cái cho nó sáng led 7 đoạn ( sau nó vẫn " rậm chân tại chỗ" mới đau ):-(||>
Nên mình nghĩ chỉ sửa trên code thôi , chưa mạch thật nên không cần nguyên lý , nhưng chưa làm thực tế cái nào nên chưa biết lỗi tại đâu .
Nhờ bác nào làm rồi hay biết giúp mình gấp với , nếu lỗi code chỉnh lại giúp mình được không , máy mình bị " lên vùng cao" bảo hành rồi , L-) không có gì chơi ,thỉnh thoảng mới ra internet tham khảo được . Mấy hôm nữa lên vùng cao tình nguyện rồi , nên nhờ các bác biết code lỗi đâu xin bớt chút thời gian sửa giúp được không , sau mình test thử , mình xin hậu tạ .
Trích :
#include<16f887.h>
#device ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=12m)
#define set input(pin_B3)
#define up input(pin_B4)
#define down input(pin_B5)
#define ok input(pin_B6)
#use i2c(master, sda=pin_B2, scl=pin_B1)
unsigned char so[11]={64,121,36,48,25,18,2,120,0,16,70};
unsigned char i,year,month,date,day,hour,min,sec,b,kt,a;
char t;
char set0,set1,up0,up1,down0,down1;
#include<lunar.h>
#include<ds1307.h>
#include<ktphim.h>
#include<hienthi.h>
#int_timer0
void timer0interrupt()
{
b++;
if(b==20)output_high(pin_D2);
if(b==40){output_low(pin_D2);b=0;}
}
#int_EXT //ngat ngoai RB0
void EXT_RB0(void)//cu moi lan co ngat ngoai thi doc du lieu (1s doc 1lan)
{
a++;
get_time();
if(a==5)
{
t=read_adc();
lunar_calculate(date,month,year);
a=0;
}
}
void main()
{
setup_timer_0 (RTCC_DIV_256);
ENABLE_INTERRUPTS(INT_TIMER0);
set_timer0(0);
ext_int_edge(0,H_TO_L);//chon ngat ngoai 0, suon ngat la suon xuong
enable_interrupts(GLOBAL);//cho phep ngat toan cuc
setup_adc(ADC_CLOCK_INTERNAL);//ADC lam viec voi nguon xung noi
setup_adc_ports(sAN0);//chon kenh ADC
setup_rtc();
while(1)
{
ktphim();
hien_thi();
}
}

buivantuyen89th 11-09-2013 04:50 PM

Trích:

Nguyên văn bởi ChuTieu_Quay (Post 82893)
Ôi không để ý làm quả tiêu đề dài quá nên không hết :"Help me ! Đồng hồ led 7 đoạn dùng Pic16F887 , cài đặt được thời gian rồi nhưng không từ động chạy "
Mày mò vẽ lại cái Pickit chạy ok rồi , đến test làm cái đồng hồ led 7 đoạn dùng Pic16F887 chơi , thì mô phỏng cũng ok rồi , nhưng khi test trên bo cắm thử ( dựa vào mô phỏng thôi , chưa làm mạch thật ) thì đã " set " được thời gian , nhưng sau nó cứ đứng sáng led không chạy gì , nhiều khi cắm nguồn vào còn phải set Ok cái cho nó sáng led 7 đoạn ( sau nó vẫn " rậm chân tại chỗ" mới đau ):-(||>
Nên mình nghĩ chỉ sửa trên code thôi , chưa mạch thật nên không cần nguyên lý , nhưng chưa làm thực tế cái nào nên chưa biết lỗi tại đâu .
Nhờ bác nào làm rồi hay biết giúp mình gấp với , nếu lỗi code chỉnh lại giúp mình được không , máy mình bị " lên vùng cao" bảo hành rồi , L-) không có gì chơi ,thỉnh thoảng mới ra internet tham khảo được . Mấy hôm nữa lên vùng cao tình nguyện rồi , nên nhờ các bác biết code lỗi đâu xin bớt chút thời gian sửa giúp được không , sau mình test thử , mình xin hậu tạ .
Trích :
#include<16f887.h>
#device ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=12m)
#define set input(pin_B3)
#define up input(pin_B4)
#define down input(pin_B5)
#define ok input(pin_B6)
#use i2c(master, sda=pin_B2, scl=pin_B1)
unsigned char so[11]={64,121,36,48,25,18,2,120,0,16,70};
unsigned char i,year,month,date,day,hour,min,sec,b,kt,a;
char t;
char set0,set1,up0,up1,down0,down1;
#include<lunar.h>
#include<ds1307.h>
#include<ktphim.h>
#include<hienthi.h>
#int_timer0
void timer0interrupt()
{
b++;
if(b==20)output_high(pin_D2);
if(b==40){output_low(pin_D2);b=0;}
}
#int_EXT //ngat ngoai RB0
void EXT_RB0(void)//cu moi lan co ngat ngoai thi doc du lieu (1s doc 1lan)
{
a++;
get_time();
if(a==5)
{
t=read_adc();
lunar_calculate(date,month,year);
a=0;
}
}
void main()
{
setup_timer_0 (RTCC_DIV_256);
ENABLE_INTERRUPTS(INT_TIMER0);
set_timer0(0);
ext_int_edge(0,H_TO_L);//chon ngat ngoai 0, suon ngat la suon xuong
enable_interrupts(GLOBAL);//cho phep ngat toan cuc
setup_adc(ADC_CLOCK_INTERNAL);//ADC lam viec voi nguon xung noi
setup_adc_ports(sAN0);//chon kenh ADC
setup_rtc();
while(1)
{
ktphim();
hien_thi();
}
}

Nếu mô phỏng ma bạn chạy lâu không thấy báo lỗi vấn đề gì thì mình nghĩ code cũng không ảnh huởng nhiều lắm. bạn nên mua board test (10k/cái) về hàn cẩn thận thì mới nói chính xác được. vì trong mô phỏng đôi khi linh kiện lắp không chính xác nó vẫn chạy. còn code thì mình sẽ về nghiên cứu xem có phát hiện hì không.vì mình cũng hơi bận.he.
Chúc bạn thành công!

ChuTieu_Quay 11-09-2013 10:12 PM

Trích:

Nguyên văn bởi buivantuyen89th (Post 82914)
Nếu mô phỏng ma bạn chạy lâu không thấy báo lỗi vấn đề gì thì mình nghĩ code cũng không ảnh huởng nhiều lắm. bạn nên mua board test (10k/cái) về hàn cẩn thận thì mới nói chính xác được. vì trong mô phỏng đôi khi linh kiện lắp không chính xác nó vẫn chạy. còn code thì mình sẽ về nghiên cứu xem có phát hiện hì không.vì mình cũng hơi bận.he.
Chúc bạn thành công!

cảm ơn bác , nhờ bác xem giúp mình code nha , mình test trên bo đục lỗ , thử đủ kiểu rồi , còn nước thay con thạch anh 32k , và Ds1307 nữa không thì rã linh kiện


Múi giờ GMT. Hiện tại là 01:26 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam