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
-
bởi bqvietServo cuối cùng vẫn chỉ là điều chỉnh tốc độ và đọc phản hồi vị trí
Qua cổng song song LPT cổ
https://www.electronicsforu.com/elec...eed-controller
Qua cổng USB - xem thêm đám FT232RL-
Channel: Điện tử công nghiệp
22-11-2024, 15:56 -
-
bởi thiennam0703Em đang tìm hiểu cách xây dựng chương trình điều khiển động cơ Servo Yaskawa bằng máy tính tuy nhiên khi tìm kiếm trên mạng các hướng dẫn thì thường là điều khiển bằng vi điều khiển hoặc điều khiển bằng PLC hay điều khiển động cơ...
-
Channel: Điện tử công nghiệp
22-11-2024, 15:32 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi bacthoMình cũng bị như vậy mà chưa biết ở đâu
-
Channel: Vi điều khiển AVR
21-11-2024, 21:00 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi nhathung1101Câu trả lời là không dùng được.
Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....-
Channel: Thiết bị điện tử cá nhân
21-11-2024, 16:20 -
-
Comment on Tổng hợp các thông tin về mạch nạp cho AVRbởi Memem
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi MememMọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này...
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
bởi mantruongepuNhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
-
Channel: Điện tử dành cho người mới bắt đầu
20-11-2024, 14:40 -
-
bởi TherulCảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
-
Channel: từ PIC tới dsPIC
20-11-2024, 07:20 -
-
Trả lời cho Em muốn hỏi mọi người về nguyên lý hoạt động, tần số của mạch công suất trong máy rửa siêu âm ạ.bởi nguyendinhvanBạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém.
Sau khi hiểu rõ rồi thì chuyển sang cái mạch này.
Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...-
Channel: Hỗ trợ học tập
19-11-2024, 22:44 -
Comment