Mô phỏng protes chương trình đồng hồ chạy được khoảng 1 lúc đúng sau đó nhảy lung tung. Khi dừng chương trình và chạy lại thì tiếp tục chạy đúng và cũng 1 lúc lại nhảy linh tinh. Anh nào biết nó bị sao không ah ? Có phải tràn bộ nhớ không ah ?
Ds1307
Collapse
X
-
số bạn đọc ra từ DS1307 là mã hex còn khi hiển thị là mã thập phân nên bạn tưởng nó nhảy lung tung đấy. Lần đầu mình làm cũng gặp vấn đề này: vd số giây nó đếm từ 0 đến 9 rồi nhảy lên 16 đếm đến 25 rồi nhảy luôn 32.Nguyên văn bởi quytho Xem bài viếtMô phỏng protes chương trình đồng hồ chạy được khoảng 1 lúc đúng sau đó nhảy lung tung. Khi dừng chương trình và chạy lại thì tiếp tục chạy đúng và cũng 1 lúc lại nhảy linh tinh. Anh nào biết nó bị sao không ah ? Có phải tràn bộ nhớ không ah ?
Thực ra khi bạn đọc byte lưu số liệu giây thì 4 bit đầu là đơn vị giây, 4 bit sau là chục giây. Với phút và giờ cũng thế bạn chỉ cần tách byte số liệu thành 2 nửa và hiển thị từng nửa một là được.Cty tnhh thiết bị điện - điện tử công nghiệp: 0437821690 / 0988.775.900
Thiết kế hệ thống điện điều khiển
Sửa chữa INVERTER, DRIVER , PLC, UPS ...!
Comment
-
Loạn như thế nào? bạn post sơ đồ và ctr lên thì mới có cái mà test chứ nói ko sao biết bị chỗ nào?Nguyên văn bởi quytho Xem bài viếtko được bạn ơi ! Khi mình mô phỏng : lúc đầu chạy cũng ko đúng thời gian cài đạt. Cho chạy lại là được rùi nhưng khi làm mạch thật vẫn bị loạn. Anh em nào gặp trường hợp đó chưa, cho mình ý kiến với !
Thank !!!!!
Comment
-
ds1307+lcd
nho anh em giup do=================>
==============================>code va mach o day
Comment
-
ds1307+lcd
nho anh em giup nhe ===========================>Attached Files
Comment
-
Sao hiện thị giờ không đúng, và đứng im vậy...???
code của bạn mình mô phỏng thấy lỗi gi mà không chạy dc thế chỉ hiên thị như hình dưới đây thôi, không thay đổi gi cả,, ??? sao nhỉ???Nguyên văn bởi phong25_2 Xem bài viếthehe, cai mach no chay tot roi, 2 điện trở kéo lên e cũng có mắc, nhưng nó sao sao ấy, giog như bị nhiễu, e gắn thêm 2 con 4k7 nữa là chạy ngon luôn, đây là ctrinh rất cơ bản, xin post lên cho các bạn muốn làm về 1307 tham khảo:
#asm
.equ __lcd_port=0x1B ;PORTA
.equ __i2c_port=0x18
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <mega16.h>
#include <ds1307.h>
#include <delay.h>
#include<lcd.h>
void main(void) {
unsigned char h,m,s,x,y;
i2c_init();
lcd_init(16);
rtc_init(0,0,0);
i2c_start();
i2c_write(0xd0);
i2c_write(0);
i2c_write(0);
i2c_stop();
rtc_set_time(0,0,0);
lcd_gotoxy(0,0);
lcd_putsf("REAL TIME CLOCK!");
while (1)
{
rtc_get_time(&h,&m,&s);
lcd_gotoxy(4,1);
x=h/10;
y=h%10;
lcd_putchar(x+0x30);
lcd_putchar(y+0x30);
lcd_putsf(":");
x=m/10;
y=m%10;
lcd_putchar(x+0x30);
lcd_putchar(y+0x30);
lcd_putsf(":");
x=s/10;
y=s%10;
lcd_putchar(x+0x30);
lcd_putchar(y+0x30);
delay_ms(200);
};
}
Comment
-
có ai giúp minh với.sao mình lập trình với ds1307 mà no không chạy .sử dụng atmega16l.mạch mô phỏng và code cac bác xem giùm nhé;[http://www.mediafire.com/?8zuajo70gebsto8]có gi gửi vào gmail nhé.thank may bac nhiều:trunghaudn@gmail.com
/************************************************** ***
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
Project :
Version :
Date : 12/20/2010
Author :
Company :
Comments:
Chip type : ATmega16L
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
************************************************** ***/
#include <mega16.h>
#include <delay.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>
//khai bao nut nhan
#define nut_tang PINA.1
#define nut_giam PINA.2
#define nut_chon PINA.3
#define nut_thoat PINA.4
unsigned char m,h,day,month=0,year,led_7s,nhiet_do=78,s ;
unsigned char ms[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 F};
unsigned int Addr[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
void cai_dat()
{
while (nut_thoat)
{
if(!nut_chon)led_7s++;
if(led_7s<=5)
{
if(led_7s==1) //cai min
{
if(!nut_tang){
if( m==59)m=0;
else m++;}
delay_ms(50);
if(!nut_giam){
if(m==0)m=59 ;
else m--;}
delay_ms(50);
PORTD=Addr[2];
PORTB=ms[m/10];//min chuc
delay_ms(10);
PORTD=Addr[3];
PORTB=ms[m%10];//min don vi
delay_ms(10);
}
if(led_7s==2)// cai hour
{
if(!nut_tang){
if( h==12)h=0;
else h++; }
delay_ms(50);
if(!nut_giam){
if( h==0)h=12;
else h--;}
delay_ms(50);
PORTD=Addr[0];
PORTB=ms[h/10];//hour chuc
delay_ms(10);
PORTD=Addr[1];
PORTB=ms[h%10];//hour don vi
delay_ms(10);
}
if(led_7s==3)// cai day
{
if(!nut_tang){
if( day==31)day=0;
else day++; }
delay_ms(50);
if(!nut_giam){
if( day==0)day=31;
else day--;}
delay_ms(50);
PORTD=Addr[4];
PORTB=ms[day/10];//day chuc
delay_ms(10);
PORTD=Addr[5];
PORTB=ms[day%10];//day don vi
delay_ms(10);
}
if(led_7s==4)//cai month
{
if(!nut_tang){
if( month==12)month=0;
else month++; }
delay_ms(50);
if(!nut_giam){
if( month==0)month=12;
else month--;}
delay_ms(50);
PORTD=Addr[6];
PORTB=ms[ month/10];// month chuc
delay_ms(10);
PORTD=Addr[7];
PORTB=ms[ month%10];// month don vi
delay_ms(10);
}
if(led_7s==5)//cai year
{
if(!nut_tang){
if( year==99)year=0;
else year++; }
delay_ms(50);
if(!nut_giam){
if( year==0)year=99;
else year--;}
PORTD=0xff;
delay_ms(50);
PORTC=Addr[5];
PORTB=ms[ year/10];// year chuc
delay_ms(10);
PORTC=Addr[4];
PORTB=ms[ year%10];//year don vi
delay_ms(10);
}
// PORTC=Addr[7];
// PORTB=ms[ led_7s];
// delay_ms(10);
}
else led_7s=0;
PORTC=0xff;
PORTB=0x00;
delay_ms(50);
}
};
void hien_thi()
{
PORTC=0xff;
PORTD=Addr[2];
PORTB=ms[m/10];//min chuc
delay_ms(1);
PORTD=Addr[3];
PORTB=ms[m%10];//min don vi
delay_ms(1);
PORTD=Addr[0];
PORTB=ms[h/10];//hour chuc
delay_ms(1);
PORTD=Addr[1];
PORTB=ms[h%10];//hour don vi
delay_ms(1);
PORTD=Addr[4];
PORTB=ms[day/10];//day chuc
delay_ms(1);
PORTD=Addr[5];
PORTB=ms[day%10];//day don vi
delay_ms(1);
PORTD=Addr[6];
PORTB=ms[month/10];// month chuc
delay_ms(1);
PORTD=Addr[7];
PORTB=ms[month%10];// month don vi
delay_ms(1);
PORTD=0xff;
PORTC=Addr[3];
PORTB=ms[ 2];// year nghin
delay_ms(1);
PORTC=Addr[2];
PORTB=ms[ 0];//year tram
delay_ms(1);
PORTC=Addr[5];
PORTB=ms[year/10];// year chuc
delay_ms(1);
PORTC=Addr[4];
PORTB=ms[year%10];//year don vi
delay_ms(1);
PORTD=0xff;
PORTC=Addr[6];
PORTB=ms[nhiet_do/10];// nhiet chuc
delay_ms(1);
PORTC=Addr[7];
PORTB=ms[nhiet_do%10];//nhiet don vi
delay_ms(1);
};
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0xff;
DDRA=0xFF;
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=T
PORTC=0x00;
DDRC=0xFC;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// I2C Bus initialization
i2c_init();
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: On
// Square wave frequency: 1Hz
rtc_init(0,1,0);
while (1)
{
cai_dat();
i2c_start();
i2c_write(0xd0);
i2c_write(0);
i2c_write(0);
i2c_stop();
rtc_set_time(h,m,s);
rtc_set_date(day,month,year);
while(1)
{
rtc_get_time(&h,&m,&s);
rtc_get_date(&day,&month,&year);
hien_thi();
delay_ms(10);
};
};
}
Comment
-
bạn nên tạo một project riêng biệt để kiểm tra con DS1307, sau đó bạn mới kiểm tra lại cái proiect hiện tại của bạn.Nguyễn Xuân Thanh - 0905848525 - 01686996698
Chuyên: Quảng Cáo Điện Tử
=>Led Siêu Sáng - Board điều khiển led động
=>Các loại Màn Hình Led trong nhà, ngoài trời
Comment
-
-
bạn thử nối mass cho vỏ thạch anh xem, mà bạn thử trên test board hay board phát triển thế, nếu ko dc nữa bạn dùng phương pháp loại trừ thử xemNguyễn Xuân Thanh - 0905848525 - 01686996698
Chuyên: Quảng Cáo Điện Tử
=>Led Siêu Sáng - Board điều khiển led động
=>Các loại Màn Hình Led trong nhà, ngoài trời
Comment
-
em coi lại chương trình, coi lại phần thiết lập thời gian ban đầu cho chip.Nguyên văn bởi thangktvta Xem bài viếtChào các bác đã dùng con này. Em đang dùng DS1307 giao tiếp với mega88 để băm thời gian lên LED 7, không hiểu tại sao sau khi reset hoặc mất điện thì Giây nó lại nhảy về 0, giờ, phút... vẫn bình thương. Các khai báo biến cho h,m,s giống hệt nhau? Nhờ các bác giúp em. Thanks!Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
Tel: 0903 702 417. Email: web:
Comment
Bài viết mới nhất
Collapse
-
bởi mèomướp1. Tìm hiểu đc thì càng tốt, bận thì thôi. Ko cần quá quan trọng
2. Số tự động cho đơn giản, kiểu như đi xe ga ấy ạ
3. Học lý thuyết tử tế ok
4.ok
5.có. đủ số km, tgian cầm lái là đc
6.đi ăn tập thể,...-
Channel: Tâm tình dân kỹ thuật
14-08-2026, 16:34 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnE nhớ bác Vivanpham làm bên điện tử y sinh, có lần đó cái sơ đồ máy chụp x quang sao có mấy con thryristor làm gì mà ko ai trả lới đúng cả
...
-
Channel: Tâm tình dân kỹ thuật
07-08-2026, 09:17 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnBác kiểm tra lại đường mạch, mối hàn xem có bị hở hoặc dẫn không tốt không?
Thay cầu diode lớn hơn càng tốt không vấn đề gì cả....-
Channel: Điện thanh
07-08-2026, 09:12 -
-
bởi LantheChào bạn.
Trục đầu ra của hộp số hành tinh xoắn ốc được kết nối với mặt bích của khách hàng thông qua một trục răng trong. Sau chưa đầy sáu tháng hoạt động, nó phát ra tiếng kêu lách cách và độ rơ lớn đáng báo động.
Việc...-
Channel: Thiết bị điện tử cá nhân
06-08-2026, 13:05 -

Comment