PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > RTOS và Thuật toán với PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

RTOS và Thuật toán với PIC RTOS và Các thuật toán dùng cho PIC/dsPIC/PIC32
Mod: phamminhtuan

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-06-2011, 08:50 PM   #1
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
thuat toan chuyen doi duong lich sang am lich

ai da tung lam thi ra tay chi giúp voi,dang lam do an ben cai nay ma lam hoai khong ra.em dua vao thuat toan chuyen doi tren mang cua tac gia ho ngoc duc ma chuyen doi no khong dung gi ca .ko biet la do chuyen sang c nay khong hop . em co mot doan code nho chuyen doi tu ngon ngu java sang ccs ko biet dung ko cao thu biet xin chi gium voi thank nhieu
code :
// cong thuc ham chuyen doi am lich
unsigned long jdFromDate(signed int8 dd, signed int8 mm, signed int8 yy)
{
int a, m,y1,jd;

a = (int)((14 - mm)/12);
y1 = yy + 4800 - a;
m = mm + 12*a - 3;
jd = dd + (int)((153*m + 2)/5) + 365*y1 +(int)(y1/4) - (int)(y1/100) +(int)(y1/400) - 32045;
if (jd < 2299161) jd = dd + (int)((153*m + 2)/5) + 365*y1 + (int)(y1/4) - 32083;
return jd;
}
//tinh ngay soc
int getNewMoonDay(unsigned long k,unsigned int timezone) {
float T1, T2, T3, dr, Jd1, M, Mpr, P, C1, deltat, JdNew;
T = k/1236.85;
T2 = T1 * T1;
T3 = T2 * T1;
dr = 3.1415926/180;
Jd1 = 2415020.75933 + 29.53058868*k + 0.0001178*T2 - 0.000000155*T3;
Jd1 = Jd1 + 0.00033*sin((166.56 + 132.87*T1 - 0.009173*T2)*dr);
M = 359.2242 + 29.10535608*k - 0.0000333*T2 - 0.00000347*T3;
Mpr = 306.0253 + 385.81691806*k + 0.0107306*T2 + 0.00001236*T3;
P = 21.2964 + 390.67050646*k - 0.0016528*T2 - 0.00000239*T3;
C1=(0.1734 - 0.000393*T1)*sin(M*dr) + 0.0021*sin(2*dr*M);
C1 = C1 - 0.4068*sin(Mpr*dr) + 0.0161*sin(dr*2*Mpr);
C1 = C1 - 0.0004*sin(dr*3*Mpr);
C1 = C1 + 0.0104*sin(dr*2*P) - 0.0051*sin(dr*(M+Mpr));
C1 = C1 - 0.0074*sin(dr*(M-Mpr)) + 0.0004*sin(dr*(2*P+M));
C1 = C1 - 0.0004*sin(dr*(2*P-M)) - 0.0006*sin(dr*(2*P+Mpr));
C1 = C1 + 0.0010*sin(dr*(2*P-Mpr)) + 0.0005*sin(dr*(2*Mpr+M));
if (T1 < -11) deltat = 0.001 + 0.000839*T1 + 0.0002261*T2 - 0.00000845*T3 - 0.000000081*T*T3;
else deltat= -0.000278 + 0.000265*T1 + 0.000262*T2;
JdNew = Jd1 + C1 - deltat;
return (int)(JdNew + 0.5 + 7/24);
}

// tinh tao do mat troi
int getSunLongitude( int jdn,int timezone) {
double T1, T2, dr, M, L0, DL, L;
T1 = (jdn - 2451545.5 - 7/24) / 36525;
T2 = T1*T1;
dr = 3.1415926/180;
M = 357.52910 + 35999.05030*T1 - 0.0001559*T2 - 0.00000048*T1*T2;
L0 = 280.46645 + 36000.76983*T1 + 0.0003032*T2;

DL = (1.914600 - 0.004817*T1 - 0.000014*T2)*sin(dr*M);
DL = DL + (0.019993 - 0.000101*T1)*sin(dr*2*M) + 0.000290*sin(dr*3*M);
L = L0 + DL;
L = L*dr;
L = L - 3.1415926*2*(int)(L/(3.1415926*2));
return (L / 3.1415926 * 6);
}
// Tim ngay bat dau thang 11 am lich -----------------------------------------
int getLunarMonth11( int yy, int timezone ) {
unsigned long k, off, nm, sunLong;
off = jdFromDate(31, 12, yy) - 2415021;
k = (int)(off / 29.530588853);
nm = getNewMoonDay(k,7);
sunLong = getSunLongitude((int)nm,7);
if (sunLong >= 9) nm = getNewMoonDay((int)k-1,7);
return (int)nm;
}
char getLeapMonthOffset(double a11, int timezone) {
double k, last, arc;
long l;
char tmp;
k =(int) ((a11 - 2415021.076998695) / 29.530588853 + 0.5);
last = 0;
l = 1;
tmp = getNewMoonDay((int)(k+l),7);
arc = getSunLongitude((int)tmp,7);
do {
last = arc;
l ++;
arc = getSunLongitude((int)tmp,7);
}
while (arc != last && l < 14);
return l-1;
}
void AMLICH() {
unsigned long k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, diff, leapMonthDiff;
char dd, mm, yy;
unsigned int8 ld1,ld2, lm1,lm2;
short ly1,ly2;
dd =28;
mm= 06;
yy= 11;
dayNumber = jdFromDate(dd, mm, yy);
k = (dayNumber - 2415021.076998695) / 29.530588853;
monthStart = getNewMoonDay((int)(k+1),7);
if (monthStart > dayNumber) monthStart = getNewMoonDay(k,7);
a11 = getLunarMonth11(yy,7);
b11 = a11;
if (a11 >= monthStart) {
lunarYear = yy;
a11 = getLunarMonth11(yy-1,7);
}
else {
lunarYear = yy+1;
b11 = getLunarMonth11(yy+1,7);
}
lunarDay = dayNumber-monthStart+1;
diff = (int)((monthStart - a11)/29);
lunarLeap = 0;
lunarMonth = diff+11;
if (b11 - a11 > 365) {

leapMonthDiff = getLeapMonthOffset(a11,7);
if (diff >= leapMonthDiff) {
lunarMonth = diff + 10;
if (diff == leapMonthDiff)
lunarLeap = 1;
}
}
if (lunarMonth > 12) lunarMonth = lunarMonth - 12;
if (lunarMonth >= 11 && diff < 4) lunarYear = lunarYear- 1;
portb=lunarDay;
ld2=lunarDay/10;
ld1=lunarDay%10;
lm2 = lunarMonth/10;
lm1 = lunarMonth%10;

cai cho ben java math.sin neu viet nhu vay ccs ko dich dc.em bo no di co sao ko vi em co su dung thu vien math.h
phatcddt08a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-06-2011, 08:56 PM   #2
HONGCHUNGPHAM
Nhập môn đệ tử
 
Tham gia ngày: Nov 2010
Bài gửi: 6
:
tôi cũng gặp vấn đề tương tự như vậy
có ai chỉ dùm cho chúng tôi với
cám ơn trước nhé!
HONGCHUNGPHAM vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-07-2011, 06:06 PM   #3
HONGCHUNGPHAM
Nhập môn đệ tử
 
Tham gia ngày: Nov 2010
Bài gửi: 6
:
Thật tình mà nói tại sao không có người nao giúp thế hay la do không biết đây,đã là diễn đàn mà không giúp đỡ nhau cần gì tham gia vao diển đàn.bây giờ tôi củng đã làm được rồi tự viết giải thuật cho mình tự mình nguyên cứu còn hay hơn là lên đây nhờ giúp đỡ mấy thứ vớ vẩn để tốn thời gian.đúng người lập trình điện tỬ THẬT là ích kỷ.
HONGCHUNGPHAM vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-07-2011, 06:08 PM   #4
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
Thumbs down

Trích:
Nguyên văn bởi hongchungpham View Post
thật tình mà nói tại sao không có người nao giúp thế hay la do không biết đây,đã là diễn đàn mà không giúp đỡ nhau cần gì tham gia vao diển đàn.bây giờ tôi củng đã làm được rồi tự viết giải thuật cho mình tự mình nguyên cứu còn hay hơn là lên đây nhờ giúp đỡ mấy thứ vớ vẩn để tốn thời gian.đúng người lập trình điện tử thật là ích kỷ.
bạn nói rất đúng mình cũng đồng ý với bạn .dân lập trình đúng là ích kỷ .dù gì đi nửa mình cũng đã làm được âm lịch bằng sức của mình mà không nhờ người khác giúp đở.đúng là chán phèo cái diễn đàn này.
phatcddt08a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-08-2011, 11:27 AM   #5
pstin
Đệ tử 7 túi
 
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
:
Hì. nói hay lắm!!!!!!!!!!.
Dân lập trình làm việc với từng bit và các dữ liệu nhỏ!!!!!!!! Làm việc với các cái nhỏ thì "tâm thức" sẽ "nhỏ", nhỏ thì đa phần keo kiệt vậy!!!!!!!!!!!!!!!!!.
Cuộc sống thì vẫn cứ trôi,......người ta chẳng nên hỏi "người đã làm những gì???" mà nên thắc mắc "mình đã làm và sẽ làm những gì????"!!!!!!!!!.
Quá chú ý đến người mà "ít quan tâm" tới mình thì tự chuốc thêm khổ ải vậy!!!!!!!!!!
pstin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-08-2011, 12:05 PM   #6
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
Tuyệt lắm bạn ah. Chính vì ích kỷ mà tạo điều kiện cho mình phấn đấu vương lên.không có gì là không biết cả mà chỉ là mình chưa biết thôi.nhưng vẫn còn một số mặt phiếm diện để lại.mọi ngưởi là dân lập trình sẻ hiểu.
phatcddt08a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-08-2011, 12:11 PM   #7
pstin
Đệ tử 7 túi
 
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
:
Hic, vô lý!!!!!!!!!!!.
Ý tui là tại sao bạn chẳng post file của bạn lên để hậu bối theo đó mà phát triển!!!!!!!!.
Còn nếu bạn nói rằng để chuyện đó cho "hậu nhơn" cố gắng, trước sau gì cũng làm được thì lúc trước "cổ nhơn" cũng im re làm giống y chang bạn vậy!!!!!!!!!!! Thử hỏi trách ai!!!!!!!!!!???????????.....
Thế gian thật là như mộng!!!!!!!! Người ta nên làm những gì cảm thấy là cần thiết!!!!!!!!!!!.
pstin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-08-2011, 09:16 PM   #8
khienpzo
Đệ tử 5 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 107
:
Ông Pstin bị hâm ah ??? Người ta post lên hỏi mà lại nói cái gì linh ta linh tinh ....dơ bẩn cả 4room
khienpzo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-08-2011, 09:35 PM   #9
pstin
Đệ tử 7 túi
 
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
:
Hic, chỉ có ông Phatcddt08a là hiểu vấn đề!. Chỉ là nói vui thồi!!!!!!. Cuộc sống cho đi những gì và nhận lại những gì đều có nguyên tắc riêng của nó, khi anh trách cuộc sống...tốt hơn là tự trách mình!!!!!!!. Khi anh keo với cuộc sống...tốt hơn anh chẳng nên cho cuộc sống điều gì!!!!! Đơn giản chỉ là vậy!!!!!!. Cái code của đồng chí phatcddt08a có thể kiếm ra tiền!!!!!! Đã kiếm ra tiền thì không có ai giúp âu cũng là chuyện thường tình!!!!!!!!!.

thay đổi nội dung bởi: pstin, 14-08-2011 lúc 11:39 PM.
pstin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-08-2011, 11:02 AM   #10
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
trên đây toàn cao thủ mình không muốn múa riều qua mắt thợ đâu.làm âm lịch thì phải làm theo cách tra mảng rồi và vừa rồi mình củng mới thấy bên diện tử việt nam làm bằng tra mảng củng hay nè.bạn xem thử nha nó không khác gì mình làm la mấy.mình cũng có xem cách viết code của bạn rồi mình nghỉ ông bạn hơn mình nhiều.

thay đổi nội dung bởi: phatcddt08a, 16-08-2011 lúc 11:43 AM. Lý do: Trùng lập
phatcddt08a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-08-2011, 11:04 AM   #11
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
trên đây toàn cao thủ mình không muốn múa riều qua mắt thợ đâu.làm âm lịch thì phải làm theo cách tra mảng rồi và vừa rồi mình củng mới thấy bên diện tử việt nam làm bằng tra mảng củng hay nè.bạn xem thử nha nó không khác gì mình làm la mấy.
http://www.dientuvietnam.net/forums/...a-b%E1%BA%A3ng
mình cũng có xem cách viết code của bạn rồi mình nghỉ ông bạn hơn mình nhiều.vào
phatcddt08a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-11-2012, 11:41 PM   #12
nhiot081290
Đệ tử 2 túi
 
Tham gia ngày: Sep 2010
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 32
:
Send a message via Yahoo to nhiot081290
một điều lạ nhưng không lạ đó là :
khi bạn kêu cứu, nhưng không ai nghe hoặc không thoặc không muốn giúp bạn....
một câu hỏi .....
chẳng lẽ bó tay sao, mình bỏ cuộc hay làm tiếp , chờ đợi hay tự làm nhỉ....
và quyết định là ở bạn.
việc gì cũng có nguyên tắc của nó.
__________________
Hãy cho để được nhận
nhiot081290 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 01:39 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam