Nguyên văn bởi namkpac
Xem bài viết
Thông báo
Collapse
No announcement yet.
trục chặc đồng hồ số khi làm mạch thật
Collapse
X
-
Thanks bạn đã ghé coi, mình làm với mục đích ghép thôi vì modul led 7seg mình muốn làm thứ khác nữa. và mạch chính do mình làm thủ công nên nó hơi lớn. Thanks bạn đã góp ý. tương lai mình sẽ làm cho nó gọn hơn.Nguyên văn bởi chung1608 Xem bài viếtmạch hơi lớn và nhiều phần rời quá nhỉ
|
Comment
-
Chào mọi người mình có việc này muốn hỏi thêm tý nữa, cái mạch mình làm ở trên có 1 vấn đề đó là khi mất điện và có điện lại thì đồng hồ không tự chạy lại mà mình phải nhấn nút thì nó mới tiếp tục chạy, e mới học C nên không rành lắm bộ đồng hồ này e được hỗ trợ nên hơi gà, các pác chỉ giúp e nhé.
#include <at89x52.h>
#include<INTRINS.H>
//==========================================
//Cac chan dieu khien
#define led_port P0
#define ic_counter P2
#define reg_sec 0x0
#define reg_min 0x1
#define reg_hour 0x2
#define reg_day 0x3
#define reg_date 0x4
#define reg_month 0x5
#define reg_year 0x6
#define reg_control 0x7
sbit scl = P1^0;
sbit sda = P1^1;
sbit ic_time = P2^4;
sbit ic_date = P2^5;
sbit sqw = P1^2;
sbit button_menu = P3^1;
sbit button_plus = P3^3;
sbit button_minus = P3^2;
sbit button_al = P3^0;
sbit led_arlam = P3^4;
sbit led_24h = P3^5;
sbit led_offset = P3^6;
//==========================================
//Cac bien toan cuc dung trong chuong trinh
unsigned char code led_code[20]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0,0xff,0x00,0x8e,0xc8,0xbf};//{0,1,2,3,4,5,6,7,8,9, ,8.,f,n,-,}
unsigned char led_buffer[13];
unsigned char scan_led,counter,var_menu;//Phan hien thi Led
unsigned char sec,min,hour,day,date,month,year;
unsigned char value_offset,number_day,counter_day;
bit bit_arlam,bit_offset,type_offset,bit_counter;// ==1 :co chuc nang ==0 : khong co chuc nang
int wait_time;
//Quet led 7 doan dung timer 0
//Tan so quet khoang 25Hz moi led sang khoang 1000/(25*13)=3ms
void setup_timer0(void)
{
EA=0;//cam ngat toan cuc
TMOD=0x2;//timer0 che do 8 bit tu dong nap lai
TL0=0x6;//Gia tri bat dau dem = 6 (tre 250us)
TH0=0x6;//gia tri TH dc nap vao TL (che do 8 bit)
ET0=1;//cho phep ngat timer0
EA=1;//cho phep ngat toan cuc
TR0=1;//Bat dau chay timer0
}
//quet 13 LED Sau 12 lan Timer0 ngat thi thay doi cac led sang
void quet_led(void)interrupt 1 //dia chi vecto ngat timer0
{
TR0=0;//dung chay Timer
if(++counter==6)//sau 12x250us=3ms thi thay doi hien thi led
{
if(scan_led<=6)//chan enb cua IC_COUNTER =>0 khong co led nao duoc hien thi
{
ic_counter=scan_led;//hien thi cac led o hang 1 (gio, phut,giay,thu)
//chan enb cua IC_COUNTER =>0 khong co led nao duoc hien thi
led_port=led_code[(led_buffer[scan_led])];
ic_time=1;//hien thi gio phut giay
}else
{
ic_counter=scan_led-0x7;// hien thi led hang 2 (ngay thang nam)(tru di so led da hien thi o hang 1)
led_port=led_code[(led_buffer[scan_led])];
ic_date=1;//hien thi ngay thang nam
} // ic_counter=scan_led-0x7+0xf0 led thu 7 la led thu 0 cua hang 2
scan_led++;
if(scan_led>=13) //vuot qua 13 led thi tro ve ban dau
{
scan_led=0;
}
counter=0;
}
TR0=1;//Chay TIMER0
}
//************************************************** *******************************************
//------------------*************Cac ham phuc vu chuong trinh*********------------
//-----------***************Chuyen doi tu DEC sang BCD************-----------------
unsigned char dec_2_bcd(unsigned char value1)//chuyen doi tu he decima sang BCD
{
return ((value1/10)*16+value1%10); //deo' hieu tai sao lai khac (value1/10)<<4+value1%10
}
//----------**************Chuyen doi tu BCD sang DEC**********---------------------
unsigned char bcd_2_dec(unsigned char value2)//chuyen doi tu he BCD sang DECIMA
{
return ((value2/16)*10+value2%16);
}
//--------***********tao thoi gian tre dung lenh _nop_();**********-------------
void delay(int time_delay)
{
while(time_delay)
{
time_delay--;
}
}
void delays(int time_delay)
{
unsigned int temp;
while(time_delay)
{
temp=1000;
while(temp)
{
temp--;
}
time_delay--;
}
}
//------******Khoi dong I2C******---------
void i2c_start(void)
{
sda=1;
scl=1;
delay(15);
sda=0;
scl=0;
}
//-----******Ket thuc I2C*******---------
void i2c_stop(void)
{
sda= 0;
scl= 1;
delay(15);
sda=1;
scl=0;
}
//-------*******Gui du lieu len duong I2C******------
void write_i2c(unsigned char data_2_send)
{
unsigned char temp;
for(temp=0;temp<8;temp++)
{
sda=(data_2_send&0x80)? 1:0; //dua bit du lieu ra chan SDA
scl=1; //
_nop_();
_nop_(); //
scl=0;
data_2_send<<=1; //bit co trong so lon hon dc truyen truoc
}
scl=1;; //nhan bit ACK tu SLAVER
_nop_();
_nop_();
scl=0;
}
//------------**********Doc di lieu tren duong I2C******---------
unsigned char read_i2c(void)
{
unsigned char temp,i;
for(i=0;i<8;i++) // nhan vao 8 bit
{
scl=1;
temp<<=1;
temp=temp|sda;
scl=0;
}
//sda=0;//gui bit NO ACK
scl=1;//master nhan/gui bit du lieu(sda) khi scl o muc cao
_nop_();
_nop_();
scl=0;//du lieu(sda) thay doi khi scl muc thap*/
return temp;//tra gia tri cho ham
}
//------*****Ghi du lieu len RTC qua duong I2C*****----------
void write_rtc(char value,addr)
{
i2c_start();//start i2c
write_i2c(0xd0);//0xd0 la ID cua DS1307
write_i2c(addr);
write_i2c(value);
i2c_stop();
}
//---------********Doc du lieu tu RTC qua duong I2C*****--------
unsigned char read_rtc(char addr)
{
unsigned char temp;
i2c_start();
write_i2c(0xd0);//
write_i2c(addr); //bat dau doc du lieu tu thanh ghi co dia chi 0x0
i2c_start();
write_i2c(0xd1); //0xd0 + 0x01 la ID cua ds107 va che do doc du lieu
temp=read_i2c();//con tro dang tro toi dia chi 0x0 chua du lieu second
i2c_stop();//Stop I2C
return temp;
}
//-----------***********Lay du lieu thoi gian tu cac thanh ghi trong RTC*******---------
void get_time()
{
sec=read_rtc(reg_sec);
min=read_rtc(reg_min);
hour=read_rtc(reg_hour);
day=read_rtc(reg_day);
date=read_rtc(reg_date);
month=read_rtc(reg_month);
year=read_rtc(reg_year);
}
///////---------------***********Ghi du lieu va bo dem****-----------
void write_led_buffer(void)
{
unsigned char temp;
led_buffer[0]=(day&0x7);
//*******Hien thi gio*************
if((temp=(hour&0x30)>>4)==0)//khong hien thi so 0 o hang chuc
{
led_buffer[1]=0x0a;
}else
{
led_buffer[1]=temp;//Lay 2 bit cao
}
led_buffer[2]=(hour&0x0f); //Lay 4 bit thap
//*******Hien thi phut**********
led_buffer[3]=(min&0x70)>>4; //lay 3 bit cao
led_buffer[4]=min&0x0f; //Lay 4 bit thap
//*******Hien thi giay*********
led_buffer[5]=(sec&0x70)>>4;
led_buffer[6]=sec&0x0f;
//*******Hien thi ngay**********
if((temp=(date&0x70)>>4)==0)//khong hien thi so 0 o hang chuc
{
led_buffer[7]=0x0a;
}else
{
led_buffer[7]=temp;
}
led_buffer[8]=date&0x0f;
//*********Hien thi thang************
if(((month&0x30)>>4)==0)//khong hien thi so 0 o hang chuc
{
led_buffer[9]=0x0a;
}else
{
led_buffer[9]=(month&0x30)>>4;
}
led_buffer[10]=month&0x0f;
//******Hien thi nam***********
led_buffer[11]=(year&0x70)>>4;
led_buffer[12]=year&0x0f;}
//-----------------**********Cai dat che do cho RTC****------------------
void setup_rtc(void)
{
write_rtc(0x10,reg_control);//xung ra 1Hz muc thap khi khong dc kich hoat
write_rtc(0x0,reg_sec);//Clear bit CLOCK HAT
write_rtc(0x0,reg_min);
write_rtc(0x0,reg_hour);
write_rtc(0x2,reg_day);
write_rtc(0x18,reg_date);
write_rtc(0x12,reg_month);
write_rtc(0x11,reg_year);
}
//-----------------**************Do phim**********----------------------
void scan_button(void)
{
if(button_menu==0)//phim menu duoc an
{
delays(wait_time);//chong rung phim
if(button_menu==0)
{
if((button_menu==0)&&(button_al==0))
{
delay(wait_time);
if((button_menu==0)&&(button_al==0))
{
setup_rtc();
}
}
if(bit_arlam==0)//Neu khong thuc hien chuc nang hen gio
{
if(var_menu<=10)
{
var_menu++; //thuc hien menu tiep
}else
{
var_menu=0;//quay tro ve menu dau tien
}
}else
{
bit_arlam=0;//hen gio xong
}
}
}
if(button_al==0)
{
delays(wait_time);
if(button_al==0)
{
button_al=1;
var_menu=0;
bit_arlam=1;
}
}
}
//-----------******Chinh Giay********---------
void menu1(void)
{ unsigned char temp;
temp=bcd_2_dec(sec);
while(var_menu==1)
{
if(sqw==1)
{
led_buffer[5]=temp/10;
led_buffer[6]=temp%10;
}else
{
led_buffer[5]=0xa;
led_buffer[6]=0xa;
}
if((button_plus==0)||(button_minus==0))
{
delays(wait_time);
if((button_plus==0)||(button_minus==0))
{
delays(wait_time);
temp=0x00;
}
delays(wait_time);
}
scan_button();
}
write_rtc(temp,reg_sec); //Reset GIAY
}
//----------*********Chinh PHUT*********------------
void menu2(void)
{
unsigned char temp;
temp=bcd_2_dec(min);
while(var_menu==2)
{
if(sqw==1)
{
led_buffer[3]=temp/10;
led_buffer[4]=temp%10;
}else
{
led_buffer[3]=0xa;
led_buffer[4]=0xa;
}
if(button_plus==0)
{
delays(wait_time);
if(button_plus==0)
{
delays(wait_time);
if(temp<59)
{
temp++;
}else
{
temp=0;
}
}
delays(wait_time);
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0)
{
delays(wait_time);
if(temp>0)
{
temp--;
}else
{
temp=59;
}
}
delays(wait_time);
}
scan_button();
}
write_rtc(dec_2_bcd(temp),reg_min);
}
//----------*********Chinh gio***********------------
void menu3(void)
{
unsigned char temp;
temp=bcd_2_dec(hour);
while(var_menu==3)
{
if(sqw==1)
{
led_buffer[1]=temp/10;
led_buffer[2]=temp%10;
}else
{
led_buffer[1]=0xa;
led_buffer[2]=0xa;
}
if(button_plus==0)
{
if(button_plus==0)
{
delays(wait_time);
if(temp>=23)
{
temp=0;
}else
{
temp++;
}
}
delays(wait_time);
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0)
{
delays(wait_time);
if(temp<=0)
{
temp=23;
}else
{
temp--;
}
}
delays(wait_time);
}
scan_button();
}
write_rtc(dec_2_bcd(temp),reg_hour);//ghi du lieu BCD vao thanh ghi GiO cua RTC
}
//----------------********Chinh Ngay Trong Tuan*******----------------------
void menu4(void)
{
unsigned char temp;
temp=bcd_2_dec(day);
while(var_menu==4)
{
if(sqw==1)
{
led_buffer[0]=temp;
}else
{
led_buffer[0]=0xa;
}
if(button_plus==0)
{
delays(wait_time);
if(button_plus==0)
{
delays(wait_time);
if(temp>=7)
{
temp=1;
}else
{
temp++;
}
}
delays(wait_time);
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0)
{
delays(wait_time);
if(temp<=1)
{
temp=7;
}else
{
temp--;
}
}
delays(wait_time);
}
scan_button();
}
write_rtc(dec_2_bcd(temp),reg_day);//ghi du lieu BCD vao thanh ghi GiO cua RTC
}
//-----------********Chinh Ngay********----------------
void menu5()
{
unsigned char temp,temp1,temp2;
temp=bcd_2_dec(date);
temp1=bcd_2_dec(month);
temp2=bcd_2_dec(year);
while(var_menu==5)
{
if(sqw==1)
{
led_buffer[7]=temp/10;
led_buffer[8]=temp%10;
}else
{
led_buffer[7]=0xa;
led_buffer[8]=0xa;
}
if(button_plus==0)
{
delays(wait_time);
if(button_plus==0) //******An PLUS***----
{
delays(wait_time);
if((temp1==4)||(temp1==6)||(temp1==9)||(temp1==11) )//Cac thang co 30 ngay
{
if(temp>=30)
{
temp=1;
}
}else
{
if(temp1==2)//thang 2
{
if(temp2%4==0)//nam nhuan
{
if(temp>=29)
{
temp=1;
}else
{
temp++;
}
}else //nam thuong
{
if(temp>=28)
{
temp=1;
}else
{
temp++;
}
}
}else //cac thang co 31 ngay
{
if(temp>=31)
{
temp=1;
}else
{
temp++;
}
}
}
}
delays(wait_time);
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0) //-********AN MINUS****--------
{
delays(wait_time);
if(temp>2)
{
temp--;
}else
{
if((temp1==4)||(temp1==6)||(temp1==9)||(temp1==11) )//Cac thang co 30 ngay
{
temp=30;
}else
{
if(temp1==2)//thang 2
{
if(temp2%4==0)//nam nhuan
{
temp=29;
}else //nam thuong
{
temp=28;
}
}else //cac thang co 31 ngay
{
temp=31;
}
}
}
}
delays(wait_time);
}
scan_button();
}
write_rtc(dec_2_bcd(temp),reg_date);//ghi du lieu BCD vao thanh ghi DATE cua RTC
}
void menu6(void)//-------*********Chinh Thang-*******---------
{
unsigned char temp;
temp=bcd_2_dec(month);
while(var_menu==6)
{
if(sqw==1)
{
led_buffer[9]=temp/10;
led_buffer[10]=temp%10;
}else
{
led_buffer[9]=0xa;
led_buffer[10]=0xa;
}
if(button_plus==0)
{
delays(wait_time);
if(button_plus==0)
{
delays(wait_time);
if(temp>=12)
{
temp=1;
}else
{
temp++;
}
}
delays(wait_time);
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0)
{
delays(wait_time);
if(temp==0)
{
temp=12;
}else
{
temp--;
}
}
delays(wait_time);
}
scan_button();
}
write_rtc(dec_2_bcd(temp),reg_month);//ghi du lieu BCD vao thanh ghi MONTH cua RTC
}
//---------**********Chinh Nam**********--------------
void menu7(void)//-------*********Chinh Thang-*******---------
{
unsigned char temp;
temp=bcd_2_dec(year);
while(var_menu==7)
{
if(sqw==1)
{
led_buffer[11]=temp/10;
led_buffer[12]=temp%10;
}else
{
led_buffer[11]=0xa;
led_buffer[12]=0xa;
}
if(button_plus==0)
{
delays(wait_time);
if(button_plus==0)
{
delays(wait_time);
if(temp>=50)//Chinh thoi gian tu nam 2011 den Nam 2050
{
temp=11;
}else
{
temp++;
}
}
delays(wait_time);
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0)
{
delays(wait_time);
if(temp<=11)
{
temp=50;
}else
{
temp--;
}
}
delays(wait_time);
}
scan_button();
}
write_rtc(dec_2_bcd(temp),reg_year);//ghi du lieu BCD vao thanh ghi YAER cua RTC
}
//--------********Ham thuc hien bu gio***************-------------------
void offset_time(void)
{
unsigned char temp;
temp=bcd_2_dec(sec);
if(bit_offset==1)
{
if(hour==0x0)
{
if((min==0x0))
{
if((bit_counter==1)&&(temp<=2))//chac chan xuat hien truong hop nay trong khoang 2 giay
{ //dem so ngay
counter_day++;
bit_counter=0;//khong cho dem ngay
}
}else
{
bit_counter=1;//cho phep dem ngay tro lai sau it nhat la 1 phut
}
if(counter_day==number_day)
{
if((temp>28)&&(temp<32))
{
if(type_offset==1)
{
temp-=value_offset; //Bu am
}else
{
temp+=value_offset; //Bu duong
}
}
counter_day=0;//reset bien
write_rtc(dec_2_bcd(temp),reg_sec);//ghi du lieu
}
}
}
}
//--------********Chinh gia tri bu thoi gian cho dong ho******----------
void menu8(void)//Bu hay khong
{
unsigned char i;
for(i=0;i<=12;i++)
{
led_buffer[i]=0x0a;//tat het led
}
led_buffer[7]=0; // 0
led_buffer[8]=0x0c; // F
led_buffer[9]=0x0c; // F
led_buffer[10]=0x5; // s
led_buffer[12]=0x1; // 1
while(var_menu==8)
{
if(bit_offset==1)
{
led_buffer[1]=0x0;//0
led_buffer[2]=0xd;//n
led_buffer[3]=0xa;//
}else
{
led_buffer[1]=0; //0
led_buffer[2]=0xc;//f
led_buffer[3]=0x0c;//f
}
if(button_plus==0)
{
delays(wait_time);
if(button_plus==0)
{
if(bit_offset==1)
{
bit_offset=0;
}else
{
bit_offset=1;
}
}
delays(wait_time);
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0)
{
if(bit_offset==0)
{
bit_offset=1;
}else
{
bit_offset=0;
}
}
delays(wait_time);
}
scan_button();
}
}
void set_days_offset(void)//Bao nhieu ngay bu 1 lan
{
unsigned char i;
for(i=0;i<=12;i++)
{
led_buffer[i]=0x0a;//tat het led
}
led_buffer[7]=0; // 0
led_buffer[8]=0x0c; // F
led_buffer[9]=0x0c; // F
led_buffer[10]=0x5; // s
led_buffer[12]=0x2; // 2
while(var_menu==9)
{
led_buffer[3]=number_day/10;
led_buffer[4]=number_day%10;
if(button_plus==0)
{
delays(wait_time);
if(button_plus==0)
{
if(number_day>=15)
{
number_day=1;
}else
{
number_day++;
}
}
delays(wait_time);
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0)
{
if(number_day<=1)
{
number_day=15;
}else
{
number_day--;
}
}
delays(wait_time);
}
scan_button();
}
}
void set_val_offset(void)//Bu hay khong
{
unsigned char i;
for(i=0;i<=12;i++)
{
led_buffer[i]=0x0a;//tat het led
}
led_buffer[7]=0; // 0
led_buffer[8]=0x0c; // F
led_buffer[9]=0x0c; // F
led_buffer[10]=0x5; // s
led_buffer[12]=0x3; // 1
while(var_menu==10)
{
if(type_offset==1)
{
led_buffer[2]=0xe;
}else
{
led_buffer[2]=0xa;
}
led_buffer[3]=value_offset/10;
led_buffer[4]=value_offset%10;
if(button_plus==0)
{
delays(wait_time);
if(button_plus==0)
{
if(type_offset==0)
{
if(value_offset>=29)
{
type_offset=1;//am 29 giay
value_offset=29;
}else
{
value_offset++;
}
}else
{
if(value_offset<=1)
{
value_offset=1;
type_offset=0;
}else
{
value_offset--;
}
}
}
}
if(button_minus==0)
{
delays(wait_time);
if(button_minus==0)
{
if(type_offset==0)
{
if(value_offset<=1)
{
type_offset=1;//am 29 giay
value_offset=1;
}else
{
value_offset--;
}
}else
{
if(value_offset>=29)
{
value_offset=0;
type_offset=29;
}else
{
value_offset++;
}
}
}
}
scan_button();
}
}
//-----------***********Thuc Hien MENU*********---------------
void process_menu(void)
{
if(var_menu!=0)
{
switch(var_menu)
{
case 1:
menu1();
break;
case 2:
menu2();
break;
case 3:
menu3();
break;
case 4:
menu4();
break;
case 5:
menu5();
break;
case 6:
menu6();
break;
case 7:
menu7();
break;
case 8:
menu8();
break;
case 9:
set_days_offset();
break;
case 10:
set_val_offset();
break;
//Cho RTC cap nhat gio tro lai
}
}
}
//------*********Khoi dong SYSTEM******-------------
void check_rtc()
{
i2c_start();
i2c_stop();
write_rtc(0x10,reg_control);//xung ra 1Hz muc thap khi khong dc kich hoat
}
void start_system()
{
var_menu=0;
bit_arlam=0;
wait_time=50;
led_arlam=1;//khong hien thi
led_24h=0;//che do 24h
check_rtc();
counter_day=0;
var_menu=8;
}
void check_led()
{
led_arlam=!bit_arlam;
led_offset=!bit_offset;
}
//************************************************** *******************************************
//---------------**************Chuong trinh chinh**********----------------------
void main(void)
{
setup_timer0();
start_system();
while(1)
{
get_time();
write_led_buffer();
check_led();
offset_time();
scan_button();
process_menu();
}
}
//-----------------**************Ket thuc chuong trinh********--------------------|
Comment
-
có pác nào giúp e tí, bây giờ từ đoạn code trên e muốn sửa quá trình off (chỉnh bù giờ, hẹn giờ) từ đầu chương trình ra sau thì e phải làm thế nào? tức là e muốn đồng hồ khi có điện lại thì nó vẫn chạy còn nếu chạy nhanh (chậm) thì lúc đó mới thực hiện chỉnh bù giờ và cài đặt hẹn giờ sau. mạch này e làm thì nó chạy rồi nhưng có thắc mắc như vậy, mong được các pác giúp đỡ. thanks các bác nhiều.|
Comment
-
E tìm cách sửa lại phần scan button và setup RTC nhưng vẫn chưa hiểu chổ này lắm pác nào giúp e với. đại ý là khi cấp nguồn nó hiện trên các led 7 thanh là OFFS1; OFF, nó bắt mình lựa chọn việc bù giờ hoặc cài đặt giờ, hoặc hẹn giờ. e tìm cách để nó không chạy lựa chọn này nữa mà khi nào gọi nó thì nó mới chạy, cứ mỗi lần cấp nguồn là nó chạy đồng hồ luôn, còn nếu đồng hồ chạy sai mình sẽ thực hiện công đoạn bù giờ hay hẹn giờ... Các pác bớt chút time xem lại hộ e cái, thanks các pác nhiều.|
Comment
-
Em đả xem qua mạch này, nhưng sao nhịp nháy 1hz không đều. Để lấy xung 1hz ta lấy từ thanh ghi control bằng cách ghi vào DS lênhNguyên văn bởi 0973885865 Xem bài viếtmình mạn phép tác giả đưa code lên đoạn này thì phải
void Out_1Hz()
{
I2C_start(); /* Start i2c bus */
I2C_write(0xD0); /* Connect to DS1307 */
I2C_write(0x07); //vi tri con tro RTC
I2C_write(0x10);
I2C_stop();
}
đây là link của mạch bạn tham khảo nhé
Clock_DS1307_Led7Dx16.rar
I2C_write(0x10);
nhưng trong code này có vấn đề gì nhỉ
Comment
-
xung 1 Hz của 1307 có duty cycle 50% mà sao lại ko đều hả bạnNguyên văn bởi menxplorer Xem bài viếtEm đả xem qua mạch này, nhưng sao nhịp nháy 1hz không đều. Để lấy xung 1hz ta lấy từ thanh ghi control bằng cách ghi vào DS lênh
I2C_write(0x10);
nhưng trong code này có vấn đề gì nhỉ
Comment
-
em củng không hiểu vì sao bác ah. Trên mô phỏng em thấy nháy không đều, tìm mãi mà không thấy sai đâuNguyên văn bởi chung1608 Xem bài viếtxung 1 Hz của 1307 có duty cycle 50% mà sao lại ko đều hả bạn
Comment
-
chú thấy là thấy vậy vì mô phỏng phụ thuộc phần cứng máy ví tính đang chạy protues, muốn biết chính xác thì phải mắc oscillos vào đoNguyên văn bởi menxplorer Xem bài viếtem củng không hiểu vì sao bác ah. Trên mô phỏng em thấy nháy không đều, tìm mãi mà không thấy sai đâu
Comment
-
còn đây là file mạch in mình vẽ trên orcad, khối điều khiển thôi, khối led mình mắc rời, mong các pác chỉ giúp Mach 89C51.rar|
Comment
-
Các pác coi giúp e cái này với loay hoay miết mà không phát hiện ra điều gì cả. mạch chính điều khiển mình chỉ muốn thấy con led tại chân 7 con DS1307 chạy thôi còn giờ không thấy nó chạy mà nó còn làm cho con 7805 nóng ran luôn. mong nhận được giúp đỡ pal này. thanks các pác|
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Dạ, cảm ơn bác đã nghe qua và có lời khích lệ cháu ạ.
Thật lòng cháu không dám nhận hai danh hiệu Kỹ sư và Nhạc sĩ đâu ạ, vì phải thật hiểu sâu nắm vững cơ, chứ thực lực cháu đây chỉ là biết chút ít thôi à. Về phần...-
Channel: Tâm tình dân kỹ thuật
29-01-2026, 11:58 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi bqvietĐơn giản thì có trải nghiệm này
http://www.dientuvietnam.net/forums/...ch%C3%AA%CC%81
Chỉ phần cứng,...-
Channel: Điện tử công suất
27-01-2026, 21:32 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pphức tạp quá, nếu mà có mạch làm sẵn thì ngon, e dùng 2 tấm pv loại 18v 55w thôi bác
-
Channel: Điện tử công suất
26-01-2026, 08:52 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pcảm ơn bác nhiều nha, để e nghiên cứu
-
Channel: Điện tử công suất
26-01-2026, 07:38 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamkỹ sư nhạc sĩ dinhthuong dạo này lên tay nghề khá quá.
-
Channel: Tâm tình dân kỹ thuật
25-01-2026, 21:29 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Hát Mừng Sinh Nhật, sáng tác: HĐT, hòa âm-thể hiện: AI
-
Channel: Tâm tình dân kỹ thuật
24-01-2026, 22:13 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Chào bác, gần Tết công việc bác bận lắm phải không?
Vâng mọi người đều thế cả.
Em mới trả phí cho nó 1 tháng, nhờ nó hát thử ấy ạ. Tiếc vì em đã dốt nhạc lí lại lười học nên sáng tác thì vụng về mà hát demo...-
Channel: Tâm tình dân kỹ thuật
24-01-2026, 21:53 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi bqvietCảm thấy cứng tay thì làm theo hướng dẫn khá chi tiết ở trang sau
https://www.instructables.com/DIY-1k...ge-Controller/-
Channel: Điện tử công suất
23-01-2026, 16:50 -
-
bởi Nexus 6PNhư tiêu đề, các bác giới thiệu e mạch sạc nlmt mppt có chức năng chỉnh dòng với, tấm PV của em 18V 55W, dùng để sạc cho khối pin sắt 3.2V 45A (sắp tới sẽ thay bằng ắc quy 12V)
e cảm ơn-
Channel: Điện tử công suất
23-01-2026, 11:23 -

Comment