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 Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi davidcopyTheo như A.I phân tích thì mạch này ghim điện DC ngõ ra, tụ 250VDC thì ngõ vào khoảng 220VDC là ok....
-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 11:45 -
-
bởi davidcopybạn cần hỗ trợ gì sao không viết ra hoặc chụp hình kèm chú thích...
-
Channel: Hỗ trợ học tập
Hôm qua, 10:13 -
-
Trả lời cho Sạc bình acquy 30ahbởi dinhthuong80Đình Thường xin phép nhờ chủ đề này để chia sẻ về 1 bộ sạc bình. Xin được nói trước là không có ý xoi mói tìm lỗi, chỉ nhằm mục đích chia sẻ về vấn đề kĩ thuật cho ai quan tâm thôi ạ!
Chúng ta không nên dùng bộ sạc...-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 10:05 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamBình thường là vậy. Họ không hiểu thì họ là người không bình thường.
Bác không có việc làm, vẽ chuyện kiếm niềm vui, không vui thì buồn vậy....-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 10:03 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi dinhthuong80Dạ, bình thường sẽ là vậy, ai cũng hiểu nhưng cháu vẫn rất sợ sẽ có người cố tình không hiểu và lí luận soi mói ấy bác ạ! Vì rõ ràng nó có tan... vài phân tử trong nước rồi mới thôi tan!!!!...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 09:33 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamAL là kim loại không tan trong nước là đúng vì khi tiếp xúc với nước sẽ tạo thành Al (OH)3 ngăn không cho phản ứng tiếp tục và phản ứng dừng lại ngay....
-
Channel: Tâm tình dân kỹ thuật
07-03-2025, 17:57 -
-
bởi mèomướpDạ chú nên dùng bếp gas ạ. Chơi với điện mùa hè cẩn thận khách chạy hết ấy ạ. Hôm nọ đi học về cháu thấy chị học trên cháu 1 lớp nhà chị ấy có điện 3 pha ấy ạ, nên chắc là lắp được nhưng tốn xiền ạ...
-
Channel: Điện tử gia dụng
07-03-2025, 16:10 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi dinhthuong80Có lẽ nào vì bác nói chưa rõ nên họ bắt bẻ chỗ
Bởi cháu nhớ ngày xưa họ nói nhôm là kim loại khá mạnh, nếu là nguyên chất nó sẽ phản ướng với nước tạo ra nhôm hidroxit có màu trắng xốp sệt như xà phòng...-
Channel: Tâm tình dân kỹ thuật
07-03-2025, 14:52 -
-
bởi gameba1993cảm ơn bạn, mình hộ kinh doanh gia đình thì xin điện 3 pha có được không nhỉ....
-
Channel: Điện tử gia dụng
07-03-2025, 14:21 -
-
bởi mèomướpDạ điện 1 pha dân dụng tối đa phụ thuộc công tơ điện, át tô mát, dây dẫn. Ví dụ công tơ 50A, át 30A, dây dẫn 8mm2 thì tối đa là 30A từ đó tính được công suất max khoảng 6kw. Của chú 10kw thì có lẽ điện 3 pha sẽ ổn hơn ạ...
-
Channel: Điện tử gia dụng
07-03-2025, 13:59 -
Comment