Không bit các bác đã dùng nó chưa hay là các bác nghĩ là lập trình cho nó như thế là đủ, chứ em thấy ko ổn tý nào. Nếu bật 1 con led để hiển thị hàng dv hoặc hàng chục (của h,m,s )thì ok. Còn nếu bật > 2 con để hiển thị thì các con sau nhận con trước làm ảnh .VD nếu ta cho hiển thị là 15h (tắt 2 led min)thì trên led sẽ hiển thị là 19h. cho lên em nghĩ phải dùng ngắt. Các bác giúp em với. Led của em là 4 con liền chứ không phải 4 con rời.Thank!!!
Thông báo
Collapse
No announcement yet.
Ds1307
Collapse
X
-
Bạn chưa nắm được nguyên tắc điều khiển LED rồi. Cần phải tắt LED trước khi update giá trị mới.Nguyên văn bởi vdgiap Xem bài viếtKhông bit các bác đã dùng nó chưa hay là các bác nghĩ là lập trình cho nó như thế là đủ, chứ em thấy ko ổn tý nào. Nếu bật 1 con led để hiển thị hàng dv hoặc hàng chục (của h,m,s )thì ok. Còn nếu bật > 2 con để hiển thị thì các con sau nhận con trước làm ảnh .VD nếu ta cho hiển thị là 15h (tắt 2 led min)thì trên led sẽ hiển thị là 19h. cho lên em nghĩ phải dùng ngắt. Các bác giúp em với. Led của em là 4 con liền chứ không phải 4 con rời.Thank!!!AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
Ôlala cảm ơn các bác đã chỉ giáo cho em nha , nó hiển thị ngon rồi , thật là quá đơn giản ngoài sức tưởng tượng ,em cứ nghĩ là phải dùng ngắt lên cứ chúi đầu vào nó. Lúc đầu chạy sai là do em để DDRx ở mức " 1 " trong khi đó ở phần While { } đầu tiên em lại để "led = 0 " , sau khi em chuyển thành 1 và delay nó về 0 thì chạy luật luân . Cám ơn các bác rất nhiều .
Comment
-
#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>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
i2c_init();
lcd_init(16);
rtc_init(0,0,0);
i2c_start();
i2c_write(0xd0);
i2c_write(0);
i2c_write(0);
i2c_stop();
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// 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: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
unsigned char h,m,s,x,y,a,b,e,f;
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(0,1);
x=h/10;
y=h%10;
lcd_putchar(x+0x30);
lcd_putchar(y+0x30);
lcd_putsf(":");
a=m/10;
b=m%10;
lcd_putchar(a+0x30);
lcd_putchar(b+0x30);
lcd_putsf(":");
e=s/10;
f=s%10;
lcd_putchar(e+0x30);
lcd_putchar(f+0x30);
delay_ms(200);
}; // Place your code here
};
}
Sao không chạy được các bác giúp với
Comment
-
Chào các bác , hình như tuần trước trang web bị lỗi sao ý, em ko thể vào hỏi thăm các bác được . hôm nay vào được rồi may quá
to songohan , bạn tham khảo đoạn code này , hiển thị h,m,s,n,t,y lên LCD , mình dùng portb kết nối với lcd.Attached Files
Comment
-
Chuối giờ mới được. Bạn kiểm tra lại xem ,minh làm chạy cực ngon
Attached Files
Comment
-
Comment
-
chương trình thì giống của bạn luôn :
/************************************************** ***
This program was produced by the
CodeWizardAVR V1.25.7 beta 5 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 5/6/2008
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega16
Program type : Application
Clock frequency : 12.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
************************************************** ***/
#include <mega16.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
// Declare your global variables here
unsigned char h,m,s,d,t,n;
unsigned char h1,h2,m1,m2,s1,s2,d1,d2,t1,t2,n1,n2;
void CH_clear(void)
{
i2c_start();
i2c_write(0xd0);
i2c_write(0);
i2c_write(0);
i2c_stop();
}
void main(void)
{
PORTA=0xFF;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xF7;
PORTC=0xF0;
DDRC=0xF0;
PORTD=0x00;
DDRD=0x04;
i2c_init();
rtc_init(3,1,0);
lcd_init(16);
rtc_set_time(10,30,0);
rtc_set_date(1,5,8);
CH_clear();
while (1)
{
// Hien thi gio, phut,giay o hang 1
rtc_get_time(&h,&m,&s);
lcd_gotoxy(0,0);
lcd_putsf("time:");
//set hour
h1=h%10;
h2=h/10;
lcd_putchar(h2+0x30);
lcd_putchar(h1+0x30);
lcd_putsf(":");
//set min
m1=m%10;
m2=m/10;
lcd_putchar(m2+0x30);
lcd_putchar(m1+0x30);
lcd_putsf(":");
//set giay
s1=s%10;
s2=s/10;
lcd_putchar(s2+0x30);
lcd_putchar(s1+0x30);
rtc_get_date(&d,&t,&n);
lcd_gotoxy(0,1);
lcd_putsf("date:");
// set ngay
d1=d%10;
d2=d/10;
lcd_putchar(d2+0x30);
lcd_putchar(d1+0x30);
lcd_putsf("/");
//set thang
t1=t%10;
t2=t/10;
lcd_putchar(t2+0x30);
lcd_putchar(t1+0x30);
lcd_putsf("/");
// set nam
n1=n%10;
n2=n/10;
lcd_putchar(n2+0x30);
lcd_putchar(n1+0x30);
};
}
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi afrendlyCó vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
-
Channel: Thiết bị điện tử cá nhân
04-12-2025, 01:27 -
-
Trả lời cho Máy điện châm ?bởi nick22Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
-
Channel: Điện tử y sinh
01-12-2025, 13:23 -
-
Trả lời cho Làm thế nào để check IC LM358bởi thetungĐể check IC sống hay chết thì đơn giản : bạn lắp cái mạch ( khuếch đại hoặc dao động ) chạy bằng con IC đó ,nhưng vị trí IC thì lắp cái đế .... thế là cứ cắm rút thì biết . Còn không thì kiếm cái này : https://shopee.vn/Xu-M%C3%A1y-ki%E1%...di-%C4%91%E1%B...
-
Channel: Hướng dẫn tìm thông tin linh kiện
28-11-2025, 14:34 -
-
bởi ngochung90Tình hình là em có mua mạch 3s về để hàn vào khối pin 12v, hàn xong em đo tại các chân từ B-, B1, B2, B+ thì điện áp pin vẫn đủ 12,6v, nhưng tại 2 chân ra P- P+ thì đo chỉ được 6,3v là bị sao các bác, và chân P- P + này đồng thời là chân sạc xả thì mình cắm sạc xả cùng lúc được ko ạ
...-
Channel: Điện tử dành cho người mới bắt đầu
28-11-2025, 10:32 -
-
Trả lời cho Làm thế nào để check IC LM358bởi nguyendinhvanViệc đó tùy thuộc trình độ khoa học kỹ thuật công nghệ ứng dụng hiện tại thôi.
Trong datasheet,họ đưa ra nhiều thông số. Tùy theo khả năng , và những thông số họ cần, họ sẽ kiểm tra casc số đo có khớp với số liệu trong datasheet...-
Channel: Hướng dẫn tìm thông tin linh kiện
27-11-2025, 18:00 -

Comment