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 Xin hỏi về màn hình laptopbởi yname11vg, cám ơn bác...........
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 14:37 -
-
bởi khoine9899
Em chào các anh và mọi người.
Hiện em đang có 1 con bơm màng trong thiết bị y tế đang gặp tình trạng yếu dần hoặc ngừng hoạt động sau thời gian sử dụng
Sau khi tìm hiểu về thông tin của bơm trên mạng thì em được biết...-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 11:22 -
-
Trả lời cho Cần mọi người giúp mạch tạo sóng siêu âm máy rửabởi bqviet
-
Channel: Điện tử công suất
27-11-2024, 20:26 -
-
bởi Minhdai95Em chào mọi người, e đang sửa mạch tạo sóng siêu âm cho máy rửa mà chưa có tài liệu để tham khảo sửa, mọi người cho e xin tài liệu ạ...
-
Channel: Điện tử công suất
27-11-2024, 11:37 -
-
bởi pia2k1Cùng câu hỏi và cần được giải đáp thêm ạ...
-
Channel: Hướng dẫn sử dụng diễn đàn
27-11-2024, 11:28 -
-
Trả lời cho Công thức điện tửbởi mèomướpDạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 20:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Ok , thanks bác đã chỉ...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 15:06 -
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 00:35 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
-
Channel: Thiết bị điện tử cá nhân
25-11-2024, 22:31 -
Comment