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 ?
Thông báo
Collapse
No announcement yet.
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
-
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.
http://www.hpinfotech.com
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 theidiotcatAMD Ryzen 9 9950X bước sang năm 2026 vẫn là một trong những bộ vi xử lý desktop mạnh mẽ nhất dành cho người dùng phổ thông cao cấp. Dù đã ra mắt từ thế hệ Zen 5 đầu tiên của dòng Ryzen 9000, con chip 16 nhân 32 luồng này vẫn giữ được sức...
-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 13:58 -
-
bởi theidiotcatTrong thị trường CPU năm 2026, khi các dòng vi xử lý đời mới liên tục ra mắt với những thông số kỹ thuật hào nhoáng, AMD Ryzen 5 7600X vẫn là một cái tên khiến nhiều game thủ và người dùng phổ thông phải cân nhắc kỹ lưỡng. Sau gần hai...
-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 13:42 -
-
bởi theidiotcatTrong bối cảnh giá linh kiện tăng cao, hiện tại mức giá laptop đã tăng đáng kể so với thời điểm trước cơn sốt AI. Chính vì vậy để lựa chọn được một chiếc laptop đáp ứng tốt nhu cầu vừa học vừa giải trí các bạn sinh viên cần...
-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 13:33 -
-
bởi theidiotcatViệc lựa chọn một chiếc laptop gaming phù hợp với nhu cầu, ngân sách chưa bao giờ là dễ dàng. Và điều đó càng khó hơn trong năm 2026 khi mà mức giá liên tục tăng.
Nếu bạn chưa biết nên chọn một chiếc laptop gaming như thế nào...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:29 -
-
bởi theidiotcatVới mức ngân sách 20 - 30 triệu đồng trong năm 2026, các bạn sinh viên và dân văn phòng có thể tìm thấy nhiều lựa chọn cao cấp, mạnh mẽ, pin “trâu”, đặc biệt là các mẫu laptop AI hỗ trợ cho học tập và làm việc.
Trong phân...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:25 -
-
bởi theidiotcatDưới đây là một số mẫu laptop nổi bật trong phân khúc dưới 20 triệu giúp các bạn văn phòng, sinh viên và đặc biệt là tân sinh viên có thể dễ dàng lựa chọn được mẫu laptop phù hợp với nhu cầu và ngân sách của mình.
Thị...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:07 -
-
bởi theidiotcatViệc chọn mua một bộ máy tính phục vụ cho các nhu cầu làm việc văn phòng và sử dụng cơ bản hàng ngày đang trở nên dễ dàng và tiết kiệm hơn bao giờ hết. Thay vì phải đau đầu trích ngân sách để mua cả vi xử lý lẫn card đồ họa rời...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:23 -
-
bởi theidiotcatViệc nâng cấp từ một dàn máy tính cũ lên cấu hình mới luôn khiến nhiều người đắn đo về mức chi phí bỏ ra. Nếu bạn đang tìm kiếm một sự lột xác hoàn toàn về hiệu năng mà vẫn cân đối được dòng tiền, combo giữa vi xử lý Ryzen...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:06 -
-
Trả lời cho Lực dọc trục làm hỏng ổ bi.bởi nguyendinhvanVí dụ một trang như thế này
...-
Channel: Điện tử công suất
24-06-2026, 19:57 -

...
Comment