Nguyên văn bởi tienhuypro
Xem bài viết
Thông báo
Collapse
No announcement yet.
Thuật toán tính Âm lịch từ Dương lịch dùng phương pháp tra bảng
Collapse
X
-
Nguyên văn bởi hoangdai Xem bài viếthihi_Nếu đã mắc công lập bảng thì tự thêm ngày cho nó luôn_hihi_thêm biến nữa thì phí quá..
Chỉ cần bê cái công thức này vào là ok:
a/-Trong 19 năm dương lịch có 228 tháng dương lịch, tương ứng với 235 tháng âm lịch, thừa 7 tháng so với năm dương lịch, gọi là 7 tháng nhuận. Bảy tháng trước đó được quy ước vào các năm thứ 3, 6, 9 hoặc 8, 11, 14, 17, 19 của chu kỳ 19 năm.
b/-Với năm âm lịch, muốn tính năm nhuận chỉ việc lấy năm dương lịch tương ứng với năm âm lịch chia cho 19, nếu số dư là một trong các số: 0, 3, 6, 9 hoặc 11, 14, 17 thì năm âm lịch đó có tháng nhuận.
c/-Dùng công thức tính Can-Chi để tính ra ngày tháng.Last edited by pctcom; 12-01-2012, 11:32.PCT COMPUTER
(Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)
Comment
-
có ai có đoạn chương trình chuyển ngày dương sang ngày âm không hướng dẫn tui với, tui có kiếm được 1 đoạn trên mạng nhưng nó chỉ áp dụng cho năm 2011 con những năm khác mình không biết viết thế nào, có pác nào biết chỉ giúp với
void start_system()
{
var_menu=0;
//var_arlam=0;
}
//-- chuyen ngay duong sang ngay am------
void da(int m,d)
{
ngayduong=(m-1)*31+d;//so ngay duong so voi 1.1
if ((m==3)|(m==4)) ngayduong=ngayduong-3;//do thang 2 co 28 ngay
else
if ((m==5)|(m==6)) ngayduong=ngayduong-4;// thang 4 co 30 ngay
else
if ((m==7)|(m==8)|(m==9)) ngayduong=ngayduong-5;//thang 6 co 30 ngay
else
if ((m==10)|(m==11)) ngayduong=ngayduong-6;//thang 9 co 30 ngay
else
if (m==12) ngayduong=ngayduong-7;// thang 11 co 30 ngay
ngayam=ngayduong+26;//mung 1.1 la ngay 27.11
thangam=11;
if (ngayam>=30)
{
ngayam=ngayam-29;
thangam=12;
}
while (ngayam>=30)
{
if ((thangam==2)|(thangam==5)|(thangam==8)|(thangam== 7)|(thangam==10))
{
if (ngayam==29) break;
ngayam=ngayam-29;
thangam++;
if (thangam==13) thangam=1;
}
else
if (ngayam==30) break;
else
{
ngayam=ngayam-30;
thangam++;
if (thangam==13) thangam=1;
}
}|
Comment
-
code c day ba con 5KB cho 20 nam vừa đủ life time cho 1 IC nhớ nhé:
thấy ae làm lunar calendar nhưng toàn dùng asm nên cũng thấy ngứa ngáy,
các bác dùng code này kết hợp thêm với RTC của chip nhé,chú lpc2103 có sup đó,code này được viết trên chú này,chạy rất êm.
Code:/* database of lunar calendar */ const unsigned char ALdauthangDL[100][12] = { {17,18,16,27,18,19,20,21,23,24,25,26},//2010 {27,29,27,28,29,30, 1, 2, 4, 5, 6, 7},//2011 { 8,10, 9,11,11,12,13,14,16,16,18,18},//2012 {20,21,20,21,22,23,24,25,26,27,28,29},//2013 { 1, 2, 1, 2, 3, 4, 5, 6, 8, 8, 9,10},//2014 {11,13,11,13,13,15,16,17,19,19,20,20},//2015 {22,23,23,24,25,26,27,29, 1, 1, 2, 3},//2016 { 4, 5, 4, 5, 6, 7, 8,10,11,12,13,14},//2017 {15,16,14,16,16,18,18,20,22,22,24,25},//2018 {26,27,25,27,27,28,29, 1, 3, 3, 5, 6},//2019 { 7, 8, 8, 9, 9,10,11,12,14,15,16,17},//2020 {19,20,18,20,20,21,22,23,25,25,27,27},//2021 {29, 1,29, 1, 1, 3, 3, 4, 6, 6, 8, 8},//2022 {10,11,20,11,12,14,14,15,17,17,18,19},//2023 {20,22,21,23,23,25,26,27,29,29, 1, 1},//2024 { 2, 4, 2, 4, 4, 6, 7, 8,10,10,12,12},//2025 {13,14,13,14,15,16,17,19,20,21,23,23},//2026 {24,25,24,25,25,27,27,29, 1, 2, 4, 4},//2027 { 5, 7, 6, 7, 7, 9, 9,11,13,13,15,16},//2028 {17,18,17,18,18,20,20,22,23,24,25,26},//2029 {28,29,28,29,29, 1, 1, 3, 4, 5, 6, 7}//2030 }; const unsigned char thangALdauthangDL[100][12] = { {11,12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10},//2010 {11,12, 1, 2, 3, 4, 6, 7, 8, 9,10,11},//2011 {12, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9,10},//2012 {11,12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10},//2013 {12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9,10},//2014 {11,12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10},//2015 {11,12, 1, 2, 3, 4, 5, 6, 8, 9,10,11},//2016 {12, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9,10},//2017 {11,12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10},//2018 {11,12, 1, 2, 3, 4, 5, 7, 8, 9,10,11},//2019 {12, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9,10},//2020 {11,12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10},//2021 {11, 1, 1, 3, 4, 5, 6, 7, 8, 9,10,11},//2022 {12, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9,10},//2023 {11,12, 1, 2, 3, 4, 5, 6, 7, 8,10,11},//2024 {12, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9,10},//2025 {11,12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10},//2026 {11,12, 1, 2, 3, 4, 5, 6, 8, 9,10,11},//2027 {12, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9,10},//2028 {11,12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10},//2029 {11,12, 1, 2, 3, 5, 6, 7, 8, 9,10,11}//2030 }; const unsigned char DLdauthangAL[100][12] = { {15,14,16, 5,14,12,12,10, 8, 8, 6, 6},//2010 { 4, 3, 5, 3, 3, 2,31,29,27,27,25,25},//2011 {23,22,22,21,21,19,19,17,16,15,14,13},//2012 {12,10,12,10,10, 8, 8, 7, 5, 5, 3, 3},//2013 {31,31,31,29,29,27,27,25,24,24,22,22},//2014 {20,19,20,19,18,16,16,14,13,13,12,11},//2015 {10, 8, 9, 7, 7, 5, 4, 3, 1,31,29,29},//2016 {28,26,28,26,26,24,23,22,20,20,18,18},//2017 {17,16,17,16,15,14,13,11,10, 9, 7, 7},//2018 { 6, 5, 6, 5, 5, 3, 3,30,29,28,26,26},//2019 {25,23,24,23,23,21,21,19,17,17,15,14},//2020 {13,12,13,12,12,10,10, 8, 7, 6, 5, 4},//2021 { 3,29, 3,31,30,29,29,27,26,25,24,23},//2022 {22,20,22,20,19,18,18,16,15,15,13,13},//2023 {11,10,10, 9, 8, 6, 6, 4, 3, 3,31,31},//2024 {29,28,29,28,27,25,25,23,22,21,20,20},//2025 {19,17,19,17,17,15,14,13,11,10, 9, 9},//2026 { 8, 6, 8, 7, 6, 5, 4, 1,30,29,28,28},//2027 {26,25,26,25,24,23,22,20,19,18,16,16},//2028 {15,23,15,14,13,12,11,10, 8, 8, 6, 5},//2029 { 4, 2, 4,31, 2,30,30,29,27,27,25,25}//2030 }; const unsigned char thangALdauthangAL[100][12] = { {12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11},//2010 {12, 1, 2, 3, 4, 5, 7, 8, 9,10,11,12},//2011 { 1, 2, 3, 4, 4, 5, 6, 7, 8, 9,10,11},//2012 {12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11},//2013 { 1, 2, 3, 4, 5, 6, 7, 8, 9, 9,10,11},//2014 {12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11},//2015 {12, 1, 2, 3, 4, 5, 6, 7, 8,10,11,12},//2016 { 1, 2, 3, 4, 5, 6, 6, 7, 8, 9,10,11},//2017 {12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11},//2018 {12, 1, 2, 3, 4, 5, 6, 8, 9,10,11,12},//2019 { 1, 2, 3, 4, 4, 5, 6, 7, 8, 9,10,11},//2020 {12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11},//2021 {12, 1, 2, 3, 5, 6, 7, 8, 9,10,11,12},//2022 { 1, 2, 2, 3, 4, 5, 6, 7, 8, 9,10,11},//2023 {12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,12},//2024 { 1, 2, 3, 4, 5, 6, 6, 7, 8, 9,10,11},//2025 {12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11},//2026 {12, 1, 2, 3, 4, 5, 6, 7, 9,10,11,12},//2027 { 1, 2, 3, 4, 5, 5, 6, 7, 8, 9,10,11},//2028 {12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11},//2029 {12, 1, 2, 3, 4, 5, 7, 8, 9,10,11,12}//2030 }; RTCTime RTCLunar; static void lunar_calculate(RTCTime time){ int da,db,day,mon,year; int lmon; day = time.RTC_Mday; mon = time.RTC_Mon; year = time.RTC_Year; da = ALdauthangDL[year-2010][mon-1]; db = DLdauthangAL[year-2010][mon-1]; if((db-day)<=0){ RTCLunar.RTC_Mday = (int)(day-db+1); RTCLunar.RTC_Mon = (int)thangALdauthangAL[year-2010][mon-1]; }else { RTCLunar.RTC_Mday = (int)(day+da-1); RTCLunar.RTC_Mon = (int)thangALdauthangDL[year-2010][mon-1]; } lmon = RTCLunar.RTC_Mon; if((mon-lmon)<0) RTCLunar.RTC_Year = (int)(year-1); else RTCLunar.RTC_Year = (int)year; } void DisplayLUNAR(void){ lunar_calculate(LocalTime); printf("\nAL: %lu/%lu/%lu",RTCLunar.RTC_Mday,RTCLunar.RTC_Mon,RTCLunar.RTC_Year); } int main(void){ updateRTC(); DisplayLUNAR(); }
các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
trên các dòng chip: stm32, lpc of nxp
please cell phone: 01649895559
Comment
-
Nếu hiển thị ngày tháng Dl, nhiệt độ, giờ, phút, giây trên lcd thì email cho mình. Email:
vantrinh9290@gmail.com
Email:
Phone: 0969 226 539
Comment
-
Nguyên văn bởi thanhdlk33 Xem bài viếtban ơi, máy cái số khai báo như thế này ở đâu ra vậy mấy bác DL2013[48]={20,11,12,12,
21,12,10,1,
20,1,12,2,
21,2,10,3,
22,3,10,4,
23,4,8,5,
24,5,8,6,
25,6,7,7,
26,7,5,8,
27,8,5,9,
28,9,3,10,
29,10,3,11};
xin chỉ giáo với,, thank
Add: 97 Quán Nam - Lê Chân - Hải Phòng.
Tel: 031 518648 Phone: 0904 283 505
Comment
-
anh biết về cách tính ngày của code này không ạ? chỉ em với ạ!!
#include <16F877A.h>
#include <def_877a.h>//THU VIEN PIC16f877A
#device *=16 adc=10
#FUSES HS //KHAI BAO CHON THACH ANH SU DUNG
#use delay(clock=20000000)//XUNG CLOCK
#use i2c(master,fast,sda = pin_c4,scl = pin_c3)//GIAO TIEP I2C VOI DS1307
#include <bangtra.h>
#define ACK 1//CHAN CLOCK
#define NO_ACK 0
//KHAI BAO NGO VAO RA
#define k1 Re0//NUT NHAN
#define k2 Re1
#define k3 Re2
#define l1 Rd0//KICH LED 7 DOAN
#define l2 Ra1
#define l3 Ra2
#define l4 Ra3
#define l5 Ra4
#define l6 Ra5
#define l7 Rd2
#define l8 Rd3
#define l9 Rd4
#define l10 Rd5
#define l11 Rd6
#define l12 Rd7
int8 low,high,c_g,dv_g,c_p,dv_p,c_h,dv_h,thu,c_d,dv_d,c _t,dv_t,c_n,dv_n,h,p,g,d,t,n,ngayam,thangam;
const unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};//MA LED 7 DOAN
unsigned char RTC_ARR[7]; // Buffer for second,minute,.....,year
int32 read,temp;
void convert_bcd_lcd(int8 g,int8 p, int8 h, int8 th, int8 d, int8 t, int8 n);//CHUYEN MA BCD SANG MA NHI PHAN
void convert_so_lcd(int8 x);
void ReadRTC(unsigned char * buff);//CHUONG TRINH CON DOC DU LIEU TU DS1307
void WriteRTC(unsigned char * buff);//CHUONG TRINH CON VIET DU LIEU TU DS1307
void chinh_gio();//CHUONG TRINH CON CHINH GIO
//-----------------------------------------------------------------
void chuyenduongam(int ngay1,int thang1, int nam1) // chuong trinh chuyen ngay duong sang ngay am
{
int n_am_dau, t_am_dau, n_duong;
switch(nam1)
{
case 10:
{
n_am_dau = nam10[(thang1-1)*3]; t_am_dau = nam10[(thang1-1)*3+1]; n_duong = nam10[(thang1-1)*3+2];
break;
}
case 11:
{
n_am_dau = nam11[(thang1-1)*3]; t_am_dau = nam11[(thang1-1)*3+1]; n_duong = nam11[(thang1-1)*3+2];
break;
}
case 12:
{
n_am_dau = nam12[(thang1-1)*3]; t_am_dau = nam12[(thang1-1)*3+1]; n_duong = nam12[(thang1-1)*3+2];
break;
}
case 13:
{
n_am_dau = nam13[(thang1-1)*3]; t_am_dau = nam13[(thang1-1)*3+1]; n_duong = nam13[(thang1-1)*3+2];
break;
}
case 14:
{
n_am_dau = nam14[(thang1-1)*3]; t_am_dau = nam14[(thang1-1)*3+1]; n_duong = nam14[(thang1-1)*3+2];
break;
}
case 15:
{
n_am_dau = nam15[(thang1-1)*3]; t_am_dau = nam15[(thang1-1)*3+1]; n_duong = nam15[(thang1-1)*3+2];
break;
}
case 16:
{
n_am_dau = nam16[(thang1-1)*3]; t_am_dau = nam16[(thang1-1)*3+1]; n_duong = nam16[(thang1-1)*3+2];
break;
}
case 17:
{
n_am_dau = nam17[(thang1-1)*3]; t_am_dau = nam17[(thang1-1)*3+1]; n_duong = nam17[(thang1-1)*3+2];
break;
}
case 18:
{
n_am_dau = nam18[(thang1-1)*3]; t_am_dau = nam18[(thang1-1)*3+1]; n_duong = nam18[(thang1-1)*3+2];
break;
}
case 19:
{
n_am_dau = nam19[(thang1-1)*3]; t_am_dau = nam19[(thang1-1)*3+1]; n_duong = nam19[(thang1-1)*3+2];
break;
}
case 20:
{
n_am_dau = nam20[(thang1-1)*3]; t_am_dau = nam20[(thang1-1)*3+1]; n_duong = nam20[(thang1-1)*3+2];
break;
}
}
if( ngay1 < n_duong ) { ngayam = ngay1 + n_am_dau - 1; if(t_am_dau>12) thangam = t_am_dau-100; else thangam = t_am_dau; }
else { ngayam = (ngay1+1) - n_duong; if(t_am_dau>12) thangam = t_am_dau-100; else { if(t_am_dau==12) thangam = 1; else thangam = t_am_dau + 1; } }
}
void htgio()//CHUONG TRINH CON HIEN THI GIO
{
int j =0;
while(j<100)
{
portb=so[c_h]; l1 = 0; delay_us(100); l1 = 1;//HAM KICH CHO LED 7
portb=so[dv_h]; l2 = 0; delay_us(100); l2 =1;
portb=so[c_p]; l3 = 0; delay_us(100); l3 = 1;
portb=so[dv_p]; l4 = 0; delay_us(100); l4 =1;
portb=so[c_g]; l5 = 0; delay_us(100); l5 = 1;
portb=so[dv_g]; l6 = 0; delay_us(100); l6 =1;
portb=so[d/10]; l7 = 0; delay_us(100); l7 = 1;
portb=so[d%10]; l8 = 0; delay_us(100); l8 = 1;
portb=so[t/10]; l9 = 0; delay_us(100); l9 = 1;
portb=so[t%10]; l10 = 0; delay_us(100); l10 = 1;
portb=so[n/10]; l11 = 0; delay_us(100); l11 = 1;
portb=so[n%10]; l12 = 0; delay_us(100); l12 = 1;
j++;
}
}
void htngay()//CHUONG TRINH CON HIEN THI thu ngay am va nhiet do
{
int j =0;
while(j<100)
{
l1 = 1; if(thu==1) portb = 0xc6; else portb=so[thu]; l1 = 0; delay_us(100); l1 = 1;//HAM KICH CHO LED 7
//porta = 0xff; portb=so[dv_h]; l2 = 0; delay_us(100);
portb=so[ngayam/10]; l3 = 0; delay_us(100); l3 =1;
portb=so[ngayam%10]; l4 = 0; delay_us(100); l4 =1;
portb=so[thangam/10]; l5 = 0; delay_us(100); l5 = 1;
portb=so[thangam%10]; l6 = 0; delay_us(100); l6 =1;
//portd = 0xff; portb=so[d/10]; l7 = 0; delay_us(100);
//portd = 0xff; portb=so[d%10]; l8 = 0; delay_us(100);
portb=so[temp/10]; l9 = 0; delay_us(100); l9 =1;
portb=so[temp%10]; l10 = 0; delay_us(100); l10=1;
portb=0x9c; l11 = 0; delay_us(100); l11=1;
portb=0xc6; l12 = 0; delay_us(100); l12=1;
j++;
}
}
void hienthi(int m)
{ int j =0;
while(j<15)
{
if(m==1) portb=255; else portb=so[h/10]; l1 = 0; delay_us(100); l1 = 1;
if(m==1) portb=255; else portb=so[h%10]; l2 = 0; delay_us(100); l2 =1;
if(m==2) portb=255; else portb=so[p/10]; l3 = 0; delay_us(100); l3 =1;
if(m==2) portb=255; else portb=so[p%10]; l4 = 0; delay_us(100); l4 =1;
if(m==3) portb=255; else portb=so[g/10]; l5 = 0; delay_us(100); l5 =1;
if(m==3) portb=255; else portb=so[g%10]; l6 = 0; delay_us(100); l6 =1;
if(m==4) portb=255; else portb=so[d/10]; l7 = 0; delay_us(100); l7=1;
if(m==4) portb=255; else portb=so[d%10]; l8 = 0; delay_us(100); l8=1;
if(m==5) portb=255; else portb=so[t/10]; l9 = 0; delay_us(100); l9=1;
if(m==5) portb=255; else portb=so[t%10]; l10 = 0; delay_us(100); l10=1;
if(m==6) portb=255; else portb=so[n/10]; l11= 0; delay_us(100); l11=1;
if(m==6) portb=255; else portb=so[n%10]; l12 = 0; delay_us(100); l12=1;
j++;
}
}
void hienthi1(int m)
{ int j =0;
while(j<15)
{
if(m==7) portb=255; else if(thu==1) portb = 0xc6; else portb=so[thu]; l1 = 0; delay_us(100); l1 = 1;
j++;
}
}
//============================
void main()//CHUONG TRINH CHINH
{
int8 i;
// khai bao port
trisa = 0x01;
trisb = 0x00;
trisc = 0x00;
trisd = 0x00;
// Khoi tao che do cho bo ADC
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
delay_us(10);
int tht = 0, isg;
//=========================================
delay_us(100);
c_g=0,dv_g=1,c_p=2,dv_p=3,c_h=4,dv_h=5,thu=6,c_d=7 ,dv_d=8,c_t=9,dv_t=0,c_n=1,dv_n=2;
ReadRTC(&RTC_ARR[0]);
//=======================================
ReadRTC(&RTC_ARR[0]);
convert_bcd_lcd(RTC_ARR[0],RTC_ARR[1],RTC_ARR[2],RTC_ARR[3],RTC_ARR[4],RTC_ARR[5],RTC_ARR[6]);
h = c_h*10+dv_h; p = c_p*10+dv_p; g = c_g*10+dv_g; d = c_d*10+dv_d;t = c_t*10+dv_t;n = c_n*10+dv_n;//KHAI BAO THEO THU TU DON VI CUA 1307
while(true)
{
ReadRTC(&RTC_ARR[0]);
convert_bcd_lcd(RTC_ARR[0],RTC_ARR[1],RTC_ARR[2],RTC_ARR[3],RTC_ARR[4],RTC_ARR[5],RTC_ARR[6]);
if(isg!=dv_g) { isg=dv_g; if(tht<20) tht++; else tht = 0; //hien thi gio toi 15giay ( 20 - 15 )= 5 cho hien thi ngay am + nhiet do
chuyenduongam(c_d*10+dv_d,c_t*10+dv_t,c_n*10+dv_n) ; read=read_adc();
temp = read/2.048; if(temp>99) temp = 99; }
if(tht<16) htgio(); else htngay(); if(k1==0) { while(k1==0)htgio(); chinh_gio(); }//hien thi gio toi 16giay roi chuyen qua hien thi ngay am + nhiet do 5 giay
}
}
//end main-----------------------------------------------------------
void convert_bcd_lcd(int8 g,int8 p, int8 h, int8 th, int8 d, int8 t, int8 n)
{
c_g=(g&240)>>4; //chia lay phan du, so hang don vi
dv_g=g&15; //tach hang tram va hang chuc
c_p=(p%240)>>4; //chia lay phan du, so hang don vi
dv_p=p&15; //tach hang tram va hang chuc
c_h=(h&240)>>4; //chia lay phan du, so hang don vi
dv_h=h&15; //tach hang tram va hang chuc
thu = th;
c_d=(d&240)>>4; //chia lay phan du, so hang don vi
dv_d=d&15; //tach hang tram va hang chuc
c_t=(t&240)>>4; //chia lay phan du, so hang don vi
dv_t=t&15; //tach hang tram va hang chuc
c_n=(n&240)>>4; //chia lay phan du, so hang don vi
dv_n=n&15; //tach hang tram va hang chuc
}
void chinh_gio()//CHUONG TRINH CON CHINH GIO
{
int mode=1,i=0;
ReadRTC(&RTC_ARR[0]);
convert_bcd_lcd(RTC_ARR[0],RTC_ARR[1],RTC_ARR[2],RTC_ARR[3],RTC_ARR[4],RTC_ARR[5],RTC_ARR[6]);
h = c_h*10+dv_h; p = c_p*10+dv_p; g = c_g*10+dv_g; d = c_d*10+dv_d;t = c_t*10+dv_t;n = c_n*10+dv_n;//KHAI BAO THEO THU TU DON VI CUA 1307
while(true)
{
if(i<20) hienthi(0);else hienthi(mode);;
i++; if(i>40) i = 0;//GAN GIA TRI
if(k2==0)
{ while(k2==0) {}//TANG 1 DON VI
switch(mode)
{
case 1:
{ if(h<23) h++; else h = 0;
break;}
case 2:
{ if(p<59) p++; else p = 0;
break;}
case 3:
{ if(g<59) g++; else g = 0;
break;}
case 4:
{ if(d<31) d++; else d = 0;
break;}
case 5:
{ if(t<12) t++; else t = 0;
break;}
case 6:
{ if(n<99) n++; else n = 0;
break;}
case 7:
{ if(thu<7) thu++; else thu = 1;
break;}
}
}
if(k3==0)
{ while(k3==0) {}//GIAM 1 DON VI
switch(mode)
{
case 1:
{ if(h>0) h--; else h = 23;
break;}
case 2:
{ if(p>0) p--; else p = 59;
break;}
case 3:
{ if(g>0) g--; else g = 59;
break;}
case 4:
{ if(d>1) d--; else d = 31;
break;}
case 5:
{ if(t>1) t--; else t = 12;
break;}
case 6:
{ if(n>0) n--; else n = 99;
break;}
case 7:
{ if(thu>1) thu--; else thu = 7;
break;}
}
}
if(k1==0) { while(k1==0){} mode++; if(mode>6) break;}
}
while(true)
{
if(i<20) hienthi1(0);else hienthi1(mode);;
i++; if(i>40) i = 0;//GAN GIA TRI
if(k2==0)
{ while(k2==0) {}//TANG 1 DON VI
if(thu<7) thu++; else thu = 1;
}
if(k3==0)
{ while(k3==0) {}//GIAM 1 DON VI
if(thu>1) thu--; else thu = 7;
}
if(k1==0) { while(k1==0){} mode++; if(mode>7) break;}
}
//-----------------------------------
// luu lai thoi gian chinh
//-----------------------------------
//ReadRTC(&RTC_ARR[0]);
c_g = g/10; dv_g = g%10; c_p = p/10; dv_p = p%10; c_h = h/10; dv_h = h%10;
c_d = d/10; dv_d = d%10; c_t = t/10; dv_t = t%10; c_n = n/10; dv_n = n%10;
RTC_ARR[0] = (c_g<<4) | dv_g;
RTC_ARR[1] = (c_p<<4) | dv_p;
RTC_ARR[2] = (c_h<<4) | dv_h;
RTC_ARR[3] = thu; // Day = 2
RTC_ARR[4] = (c_d<<4) | dv_d; // Date = 18
RTC_ARR[5] = (c_t<<4) | dv_t;; // month = 1
RTC_ARR[6] = (c_n<<4) | dv_n; // year = 10
WriteRTC(&RTC_ARR[0]); // Set RTC
//-----------------------------------
}
//-------------------------------
// Read RTC
//-------------------------------
void ReadRTC(unsigned char * buff)//DOC GIA TRI VAO DS1307
{
i2c_Start();
i2c_Write(0xD0);
i2c_Write(0x00);
i2c_Start();
i2c_Write(0xD1);
*(buff+0)=i2c_Read(ACK); // Second
*(buff+1)=i2c_Read(ACK); // Minute
*(buff+2)=i2c_Read(ACK); // hour
*(buff+3)=i2c_Read(ACK); // Day
*(buff+4)=i2c_Read(ACK); // date
*(buff+5)=i2c_Read(ACK); // month
*(buff+6)=i2c_Read(NO_ACK); // year
i2c_Stop();
}
//-------------------------------
// Write RTC
//-------------------------------
void WriteRTC(unsigned char *buff)//VIET GIA TRI VAO DS1307
{
i2c_Start();
i2c_Write(0xD0);
i2c_Write(0x00);
i2c_Write(*(buff+0));
i2c_Write(*(buff+1));
i2c_Write(*(buff+2));
i2c_Write(*(buff+3));
i2c_Write(*(buff+4));
i2c_Write(*(buff+5));
i2c_Write(*(buff+6));
i2c_Stop();
}
còn đây là bảng để tra ạ:
///////////////////////
const unsigned char nam10[]=
{
17,11,15, //THANG 1
18,12,14,
16,1,16, //THANG3
17,2,14,
18,3,14, //THANG5
19,4,12,
20,5,12, //THANG7
21,6,10,
23,7,8, //THANG9
24,8,8,
25,9,6, //THANG11
26,10,6,
};
const unsigned char nam11[]=
{
27,11,4, //THANG 1
29,12,3,
27,1,5, //THANG3
28,2,3,
29,3,3, //THANG5
30,4,2,
1,6,31, //THANG7
2,7,29,
4,8,27, //THANG9
5,9,27,
6,10,25, //THANG11
7,11,25,
};
const unsigned char nam12[]=
{
8,12,23, //THANG 1
10,1,22,
9,2,22, //THANG3
11,3,21,
11,104,21, //THANG5 co hai thang 4 am lich
12,4,19,
13,5,19, //THANG7
14,6,17,
16,7,16, //THANG9
16,8,15,
18,9,14, //THANG11
18,10,13,
};
const unsigned char nam13[]=
{
20,11,12, //THANG 1
21,12,10,
20,1,12, //THANG3
21,2,10,
22,3,10, //THANG5
23,4,8,
24,5,8, //THANG7
25,6,7,
26,7,5, //THANG9
27,8,5,
28,9,3, //THANG11
29,10,3,
};
const unsigned char nam14[]=
{
1,12,31, //THANG 1
2,1,29,
1,2,31, //THANG3
2,3,29,
3,4,29, //THANG5
4,5,27,
5,6,27, //THANG7
6,7,25,
8,8,24, //THANG9
8,9,24,
9,9,22, //THANG11
10,10,22,
};
const unsigned char nam15[]=
{
11,11,20, //THANG 1
13,12,19,
11,1,20, //THANG3
13,2,19,
13,3,18, //THANG5
15,4,16,
16,5,16, //THANG7
17,6,14,
19,7,13, //THANG9
19,8,13,
20,9,12, //THANG11
20,10,11,
};
const unsigned char nam16[]=
{
22,11,10, //THANG 1
23,12,8,
23,1,9, //THANG3
24,2,7,
25,3,7, //THANG5
26,4,5,
27,5,4, //THANG7
29,6,3,
1,8,31, //THANG9
1,9,31,
2,10,29, //THANG11
3,11,29,
};
const unsigned char nam17[]=
{
4,12,28, //THANG 1
5,1,26,
4,2,28, //THANG3
5,3,26,
6,4,26, //THANG5
7,5,24,
8,106,23, //THANG7 co hai thang 6 am lich
10,6,22,
11,7,20, //THANG9
12,8,20,
13,9,18, //THANG11
14,10,18,
};
const unsigned char nam18[]=
{
15,11,17, //THANG 1
16,12,16,
14,1,17, //THANG3
16,2,16,
16,3,15, //THANG5
18,4,14,
18,5,13, //THANG7
20,6,11,
22,7,10, //THANG9
22,8,9,
24,9,7, //THANG11
25,10,7,
};
const unsigned char nam19[]=
{
26,11,6, //THANG 1
27,12,5,
25,1,6, //THANG3
27,2,5,
27,3,5, //THANG5
28,4,3,
29,5,3, //THANG7
1,7,30,
3,8,29, //THANG9
3,9,28,
5,10,26, //THANG11
6,11,26,
};
const unsigned char nam20[]=
{
7,12,25, //THANG 1
8,1,23,
8,2,24, //THANG3
9,3,23,
9,4,23, //THANG5
10,4,21,
11,5,21, //THANG7
12,6,19,
14,7,17, //THANG9
15,8,17,
16,9,15, //THANG11
17,10,14,
};
- 1 like
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677nhân tiện cho mình hỏi thêm về cái phần test hipot (cao áp),là để kiểm tra độ bền cách điện giưa các cuộn dây,mà thấy thông số test thường ở mức 4kvac,vậy nếu mấy con fail đó xài bình thường vẫn dduocj phải không ạ,vì điện mình làm gì lên tới mức đó
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:52 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677máy đo số vòng thì cty có ,mà nó to quá,tưởng có máy nào gọn gọn bỏ túi được thì tiện hơn,vì đi lại nhiều...
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:47 -
-
bởi tmcodonMình thấy diễn đàn có chuyên mục quảng cáo rồi mà. Bạn đóng góp để mở luồng riêng
-
Channel: Hướng dẫn sử dụng diễn đàn
09-11-2024, 13:36 -
-
bởi Nicole08Xin chào mọi người, tôi đã sử dụng Flashforge Inventor 2 được gần 5 năm và rất hài lòng với nó, nhưng tuần trước đã xảy ra sự cố. Có vẻ như động cơ bước đưa sợi in vào đầu nóng đã bị hỏng. Mọi thứ khác có vẻ ổn trên máy...
-
Channel: Điện tử dành cho người mới bắt đầu
09-11-2024, 12:55 -
Comment