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
-
bởi mansion123Thi công gỗ óc chó giúp không gian trở nên sang trọng, ấm cúng, gần gũi hơn. Sự kết hợp giữa thẩm mỹ và chất lượng cao của gỗ óc chó chắc chắn sẽ mang lại giá trị lâu dài và làm hài lòng ngay cả những khách hàng khó tính nhất. Vậy đằng...
-
Channel: Quảng cáo
hôm nay, 16:08 -
-
Trả lời cho Tiếng Anh cho người Việtbởi tuyennhanCái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .-
Channel: Tâm tình dân kỹ thuật
hôm nay, 07:44 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamCám ơn những lời chúc tốt đẹp của em.
Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.
Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....-
Channel: Tâm tình dân kỹ thuật
hôm nay, 02:00 -
-
Trả lời cho Tiếng Anh cho người Việtbởi nhathung1101Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.
Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.
Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:18 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.
Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:51 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.
Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:39 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.
Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:28 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietĐúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 20:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi mèomướpDạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 12:32 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamNhững lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).
Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 21:31 -
Comment