Nguyên văn bởi mrcuongcon
Xem bài viết
Thông báo
Collapse
No announcement yet.
Giúp em ạ. Đồng hồ LCD của em làm đếm giờ sai số lớn quá...
Collapse
X
-
email:
Giá mà mạch điện tử không có nhiễu (noise) thì mình bây giờ đã là ... đại gia
-
Nguyên văn bởi otacon Xem bài viếtTheo tôi biết thì nhà sx cố tình làm thạch anh 11.0592 là để tạo ra thời gian 1us cho 1 chu kỳ máy,họ đã làm thực nghiệm và đưa ra con số này,nếu dùng 12Mhz thì kô còn chính xác nữahãy cố gắng dù vướn phải thất bại!!!!!!!!
Comment
-
BÁC nói quá chính xác, thực chất là con thạch anh 11.0592 MHz là chính xác nhất. tôi đã làm 1 lần với việc giao tiếp với máy tính dùng thạch anh 12MHz, mặc dù tính toán rất nhiều lần nhưng vẫn không thể giao tiếp đc, do sai tốc độ, lên gặp thầy hỏi thì thấy phán 1 câu, làm thạch anh 12 MHz thì kô chạy đâu, thử với thạch anh 11.0592 đi, tôi nghe lời và thay thạch anh, tính toán lại thông số, nạp 1 cái là chạy ngon lành, ha ha. rõ ràng là thạch anh 11.0592 OK hơn.
Dưới đây là một bảng nói về sai số trong truyền thông USART của họ AVR, ở đây họ đề cập đến sai số truyền thông khi dùng các loại thạch anh khác nhau, có lẽ mọi người đang hiểu rằng đây là sai số dao động của thạch anh , thật là sai lầm!Last edited by mrcuongcon; 20-10-2008, 19:47.
Comment
-
Theo tôi biết thì nhà sx cố tình làm thạch anh 11.0592 là để tạo ra thời gian 1us cho 1 chu kỳ máy,họ đã làm thực nghiệm và đưa ra con số này,nếu dùng 12Mhz thì kô còn chính xác nữa
Với thạch anh 11.0592 là 1000000/921600=1.08506944444.....................(us)
Với thạch anh 12 Mhz là 1000000/1000000=1 (us)
Việc sai số dao động của thạch anh thì do số trời quyết định thôi, mua phải con nào thì dùng con đó.
Comment
-
cac bac giup em nhe.em cung co ban code ve dong ho hien thi tren lcd. nhung gio em muon chuyen hien thi tren led thi phai thay doi j.giup em voi day lan ban code cua em #include <REGX52.H>
#include <stdio.h>
////////////////////
sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P1^2;
////////////////////
char x;
int daitan=1;
char so[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x3 9};
unsigned char gio,phut,giay,time;
/////////////////////////////
void delay(unsigned long int t)
{
unsigned long int i;
for(i=0;i<t;i++);
}
////////////////////////////
void busy_flag(void)
{
P2=0xff;
RS=0;
RW=1;
do
{
EN=1;
delay(10);
EN=0;
x=P2;
x=x&0x80;
}
while(x==0x80);
}
/////////////////////////
void write_command(unsigned char LCD_command)
{
busy_flag();
P2=LCD_command;
RS=0;
RW=0;
EN=1;
delay(50);
EN=0;
delay(50);
}
/////////////////////////
void write_data(unsigned char LCD_data)
{
busy_flag();
P2=LCD_data;
RS=1;
RW=0;
EN=1;
delay(50);
EN=0;
delay(50);
}
//////////////////////////////
void write_string(char *s)
{
while(*s)
{
write_data(*s);
s++;
}
}
//////////////////////////////
void init(void)
{
write_command(0x03);
write_command(0x38);
write_command(0x06);
write_command(0x0c);
write_command(0x01);
}
/////////////////////////////
////////////////////////////////
void main()
{
time=giay=phut=gio=0;
TMOD=0x01;
IE=0x83;
IP=0x01;
IT0=1;
TF0=1;
delay(1000);
init();
while(1)
{
write_command(0x80);
write_string("DESIGNER:NC-HUAN");
write_command(0xC4);
write_data(so[gio/10]);
write_data(so[gio%10]);
write_string(":");
write_data(so[phut/10]);
write_data(so[phut%10]);
write_string(":");
write_data(so[giay/10]);
write_data(so[giay%10]);
write_string(" ");
}
}
void ngatTimer0(void) interrupt 1 //dem thoi gian
{
TF0=0;
TR0=0;
TH0=-50200/256;
TL0=-50200%256;
TR0=1;
time++;
if(time==20)
{
giay++;
if(giay==60)
{
phut++;
if(phut==60)
{
gio++;
if(gio==24)
gio=0;
phut=0;
}
giay=0;
}
time=0;
}
}
void ngatngoai0(void) interrupt 0 //chinh thoi gian
{
TR0=0;
do
{
P0=0xff;
if(P0==0xfe)
{
++giay;
if(giay==60)
giay=0;
delay(2000);
}
if(P0==0xfd)
{
++phut;
if(phut==60)
phut=0;
delay(2000);
}
if(P0==0xfb)
{
++gio;
if(gio==24)
gio=0;
delay(2000);
}
write_command(0xC4);
write_data(so[gio/10]);
write_data(so[gio%10]);
write_string(":");
write_data(so[phut/10]);
write_data(so[phut%10]);
write_string(":");
write_data(so[giay/10]);
write_data(so[giay%10]);
} while(P0!=0xf7);
P0=0xff;
TR0=1;
}
Comment
-
bai nao biet giup gium em nha em ko biet neu hien thi tren led thi code se thay doi nhu the nao
hothieugia86@gmail.com
Comment
-
bạn phải dùng con thời gian thực thì chạy mới có thể gọi là chính xác được, chẳng hạn minh dùng con DS1307, làm cái đồng hồ hiển thị bằng Led 7 thanh, chạy cũng khá chính xác, chạy 5 tháng rùi mà vẫn ngon, minh là dân Hệ thống điện nên chỉ làm cho vui thui
đây là code
/*//////////////////////////////////////////////////
* DONG HO DIEN TU SO
* File: version2.c
* Programmer: Nguyen Van Dung
* Email: dungbk51@yahoo.com.vn
* Version: 2.0
* Compiler: Keil uVision 3
* Update: dungbk51 12/08/2008
* System:
- ...
*///////////////////////////////////////////////////
#include <AT89X51.h>
#define SDA P2_1 //SDA
#define SCL P2_0 //SCL
#define s_inc P3_0
#define s_dec P3_1
#define select P3_3
#define DISABLE_INT IE=0x00; //cam toan bo ngat
#define ENABLE_INT IE=0x81; //cho phep ngat ngoai so 0
#define CLK {SCL=1;{};{};{};{};{};SCL=0;{};{};{};{};{};}
#define ACK {SDA=0;CLK;}
#define NO_ACK {SDA=1;CLK;}
#define I2C_START {SDA=1;SCL=1;{};{};{};{};{};SDA=0;{};{};{};{};{};S CL=0;{};{};{};{};{};} // Marco
#define I2C_STOP {SDA=0;SCL=1;{};{};{};{};{};SDA=1;{};{};{};{};{};}//Marco
bit flag;
unsigned char sec,min,hour,day,date,mon,year,tgmin,tghour,tg1,tg 2,i;
unsigned char sec1,min1,hour1,day1,date1,mon1,year1;//ma thap phan
unsigned char sec2,min2,hour2,day2,date2,mon2,year2;//ma thap phan
unsigned char led_array[11]={0x40,0x73,0x24,0x21,0x13,0x09,0x08,0x63,0x00,0x0 1,0x7f};
//doi thap phan sang thap luc phan va nguoc lai
unsigned char hex_dec(unsigned char hex)
{
return((hex/0x10)*0xA+(hex%0x10));
}
unsigned char dec_hex(unsigned char dec)
{
return((dec/0xA)*0x10+(dec%0xA));
}
void I2C_RW(unsigned char);
unsigned char I2C_RD(bit);
void RTC_Read(void);
void RTC_Write(void);
//chuong trinh hien thi dong ho
void delay(void);
void dislay(void);
void set_clock(void);
void tre_1phan6_giay(void);
//chuong trinh chinh
void main ()
{
P3=0xff;
ENABLE_INT
//can lam chuong bao khi co dien o day
while(1)
{
RTC_Read();
sec1=sec/16; //doan nay tre qua lon den khong sang deu
sec2=sec%16;
min1=min/16;
min2=min%16;
hour1=hour/16;
hour2=hour%16;
if (hour1==0) hour1=10;
date1=date/16;
date2=date%16;
if (date1==0) date1=10;
mon1=mon/16;
mon2=mon%16;
if(mon1==0) mon1=10;
year1=year/16;
year2=year%16;
dislay();
if (flag!=0)
{
flag=0;
sec1=sec2=0;
hour=hex_dec(hour);
min=hex_dec(min);
mon=hex_dec(mon);
date=hex_dec(date);
year=hex_dec(year);
set_clock();
//sau khi da chinh xong
min=dec_hex(min);
hour=dec_hex(hour);
mon=dec_hex(mon);
date=dec_hex(date);
year=dec_hex(year);
RTC_Write();//sau khi thuc hien cau lenh nay thi thoat
P3=0xff;
flag=0;
}
}}
voidflag() interrupt 0 //ngat ngoai so 0
{
flag =1;
}
void I2C_WR(unsigned char c)
{
char i;
for (i=7;i>=0;i--)
{ //sau khi START thi SCL=0;SDA=1---co the thay doi data khi SCL=0
SDA= (c>>i) & 0x01;
CLK;
}
ACK;
}
unsigned char I2C_RD(bit ack)
{
unsigned char c=0;
bit a;
char i;
for (i=7;i>=0;i--)
{
SDA=1;//cau hinh lam cong vao
SCL=1;
{};{};{};{};{}; // SCL tu 1 xuong 0
a=SDA;
SCL=0;{};{};{};
c=c<<1;
if (a) c++;
}
SDA=ack; //bit ACK
CLK;
return (c);
}
void RTC_Read()
{
I2C_START
I2C_WR(0xd0);
I2C_WR(0x00); //vi tri con tro RTC
I2C_STOP
I2C_START
I2C_WR(0xd1);
sec=I2C_RD(0);
min=I2C_RD(0);
hour=I2C_RD(0);
day=I2C_RD(0);
date=I2C_RD(0);
mon=I2C_RD(0);
year=I2C_RD(1); //ket thuc doc du lieu
I2C_STOP
}
/*----------------------------------
--------------------------------*/
void RTC_Write()
{
I2C_START
I2C_WR(0xd0);
I2C_WR(0x00); //vi tri con tro RTC
I2C_WR(0x00); //giay
I2C_WR(min); //phut
I2C_WR(hour); //gio
I2C_WR(day); //thu
I2C_WR(date); //ngay
I2C_WR(mon); //thang
I2C_WR(year); //nam
I2C_WR(0x10);
I2C_STOP;
}
void delay(void)
{
TMOD=0x01;
TL0=0x72;
TH0=0xdf;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
}
void dislay(void)
{
tre_1phan6_giay();
tre_1phan6_giay();
tre_1phan6_giay();
tre_1phan6_giay();
tre_1phan6_giay();
tre_1phan6_giay();
}
/*--------------------------------------*/
void tre_1phan6_giay(void)
{
unsigned char i;
for(i=1;i<5;i++)
{
P2=0xdf;
P0=led_array[date1];
P1=led_array[hour1];
delay();
P2=0xbf;
P0=led_array[date2];
P1=led_array[hour2];
delay();
P2=0x7f;
P0=led_array[mon1];
P1=led_array[min1];
delay();
P2=0xef;
P0=led_array[mon2];
P1=led_array[min2];
delay();
P2=0xf7;
P0=led_array[year1];
P1=led_array[sec1];
delay();
P2=0xfb;
P0=led_array[year2];
P1=led_array[sec2];
delay();
}
}
void set_clock(void)
{
//chinh theo thu tu ngay thang nam gio phut giay
while(1)//set_hour
{
delay();//chong rung phim
for(i=0;i<6;i++)
{
P3=0xff;//cong P3 lam cong vao
if(i<3) {hour1=hour2=10;}
else {hour1=hour/10; hour2=hour%10;}
tre_1phan6_giay();//hien thi va chong rung phim
tre_1phan6_giay();
if(s_inc==0) //cho tang gio
{
hour++;
if(hour==24) hour=0;
//chong rung phim
}
if(s_dec==0)
{
hour--;
if(hour==0xff) hour=23;
//chong rung phim
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap for cua chinh gio
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap while cua set_hour
}
if(flag!=0) goto exit;
hour1=hour/10;
hour2=hour%10;
while(1)//set_min
{
delay();//chong rung phim
for(i=0;i<6;i++)
{
P3=0xff;//cong P3 lam cong vao
if(i<3) {min1=min2=10;}
else {min1=min/10; min2=min%10;}
tre_1phan6_giay();//hien thi va chong rung phim
tre_1phan6_giay();
if(s_inc==0)
{
min++;
if(min==60) min=0;
//chong rung phim
}
if(s_dec==0)
{
min--;
if(min==0xff) min=59;
//chong rung phim
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap for
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap while
}
if (flag!=0) goto exit;
min1=min/10;
min2=min%10;
while(1)//set_date
{
delay();//chong rung phim
for(i=0;i<6;i++)
{
P3=0xff;//cong P3 lam cong vao
if(i<3) {date1=date2=10;}
else {date1=date/10; date2=date%10;}
tre_1phan6_giay();//hien thi va chong rung phim
tre_1phan6_giay();//hien thi va chong rung phim
if(s_inc==0)
{
date++;
if(date==32) date=1;
//chong rung phim
}
if(s_dec==0)
{
date--;
if(date==0) date=31;
//chong rung phim
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap for
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap while
}
if (flag!=0) goto exit;
date1=date/10;
date2=date%10;
while(1)//set_mon
{
delay();//chong rung phim
for(i=0;i<6;i++)
{
P3=0xff;//cong P3 lam cong vao
if(i<3) {mon1=mon2=10;}
else {mon1=mon/10; mon2=mon%10;}
tre_1phan6_giay();//hien thi va chong rung phim
tre_1phan6_giay();//hien thi va chong rung phim
if(s_inc==0)
{
mon++;
if(mon==13) mon=1;
//chong rung phim
}
if(s_dec==0)
{
mon--;
if(mon==0) mon=12;
//chong rung phim
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap for
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap while
}
if (flag!=0) goto exit;
mon1=mon/10;
mon2=mon%10;
while(1)//set_year
{
delay();//chong rung phim
for(i=0;i<6;i++)
{
P3=0xff;//cong P3 lam cong vao
if(i<3) {year1=year2=10;}
else {year1=year/10; year2=year%10;}
tre_1phan6_giay();//hien thi va chong rung phim
tre_1phan6_giay();//hien thi va chong rung phim
if(s_inc==0)
{
year++;
if(year==100) year=0;
//chong rung phim
}
if(s_dec==0)
{
year--;
if(year==0xff) year=99;
//chong rung phim
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap for
}
if((flag!=0)|(select==0)) break; //thoat ra khoi vong lap while
}
if (flag!=0) goto exit;
year1=year/10;
year2=year%10;
exit: flag=0;
}
còn đây là sản phẩm, minh đang dự đinh nâg cấp thành hiển thị LCD và có hẹn h, bạn nào quan tâm thì liên hệ nvdung8987@yahoo.com hoặc dungbk51@yahoo.com.vn
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Mạch tự động bật nguồnbởi davidcopyChỉ cần dùng R C mắc vô phím power là ok....
-
Channel: Điện tử gia dụng
Hôm qua, 20:47 -
-
Trả lời cho Hỏi cách điều chế xungbởi davidcopydùng mach khuếch opamp...
-
Channel: Kỹ thuật điện tử tương tự
Hôm qua, 20:42 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi davidcopy
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 18:56 -
-
bởi bqvietĐấy gọi là cái "điểm gãy" trong đồ thị điện áp - dung lượng còn lại. Dùng điện áp hở cực để xác định sắp hết hoặc gần đầy thì vẫn tạm ổn. Dùng để đo SOC/DOD thì đừng. Ngay cả số km đã đi cũng chả xác định được...
-
Channel: Điện tử dành cho người mới bắt đầu
17-01-2025, 21:36 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Vâng, em cũng nghĩ thế khi search được hãng ấy là SRNE, nên em test luôn những cái còn lại, và kết quả đều như nhau.
Nhận thấy kết quả khó chấp nhận, em cũng phân vân có nên mail cho họ để họ thử kiểm tra mã đó không; giữa...-
Channel: Điện tử công suất
17-01-2025, 11:33 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Xin cảm ơn bác bqviet luônnhiệt tình cho biết nhiều thông tin quí báu, cảm ơn bạn mèomướp có ví dụ đơn giản và dễ hiểu, cảm ơn tất cả đã bớt chút thời gian quí báu vào đây đọc bài.
Cảm ơn bác nhathung1101 cho thông tin và chúc mừng bác mua được những tấm pin NLMT cực tốt theo...-
Channel: Điện tử công suất
17-01-2025, 11:22 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú nhat... cứ coi pin mặt trời như 1 cái ắc qui nhìu ngăn mắc nối tiếp ấy ạ. Khi 1 ngăn yếu thì cả cái ắc qui yếu luôn ạ. Nó có nhìu bộ nối tiếp mắc song song nên bị che 1 khoảng nhỏ ảnh hưởng nhìu nhưng chắc ko đến nỗi mất 50% đâu ạ...
-
Channel: Điện tử công suất
17-01-2025, 06:36 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Nếu nói bị cái lá che sáng mà giảm 50% thì tôi càng không tin, bởi trên vườn tôi mặc kệ ông trời làm vệ sinh.
Tức là lá tự rụng, gió tự dọn. Ai hơi đâu mà leo lên dọn. Nếu phải như thế thì tôi dek thèm lắp làm gì.-
Channel: Điện tử công suất
16-01-2025, 21:44 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Chả hiểu ý cậu nói gì. Cái diode bypass quan trọng thế ư???
Cái giàn của tôi chả thấy cái diode nào mà vẫn hoạt động hơn 3 năm rồi.
Nhưng nó không có kiểu nối dây với bấm cốt như của cậu.
Tóm lại là tiền nào của nấy, đừng hoang tưởng kỹ thuật hóa. Kẻo ô tô điện đua nhau lắp diode.-
Channel: Điện tử công suất
16-01-2025, 21:31 -
-
Trả lời cho Dùng biến áp tự ngẫu 110V có tốn điện không?bởi nhathung1101Tôi dùng 4 cái điều hòa Fujitsu hàng bãi Nhật, nên phải dùng 4 cục đổi nguồn 220 xuống 100V. Để bật quanh năm, chả thấy bằng bữa bia. Chứ tắt đi là mất mấy bữa luôn.
-
Channel: Điện tử gia dụng
16-01-2025, 21:24 -
Comment