freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于at89c51單片機(jī)的多功能電子萬年歷的設(shè)計(jì)_畢業(yè)論文-資料下載頁

2025-08-22 18:27本頁面

【導(dǎo)讀】系統(tǒng)以AT89C51單片機(jī)為控制器,以串行時(shí)鐘日歷芯片DS1302記錄。日歷和時(shí)間,利用proteus仿真,它可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能。萬年歷采用直觀的數(shù)字顯示,可以在1602上同時(shí)。顯示年、月、日、周日、時(shí)、分、秒,還具有時(shí)間校準(zhǔn)等功能。鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄。

  

【正文】 //日期與時(shí)間值轉(zhuǎn)換為數(shù)字字符 void Format_DateTime(uchar d,uchar *a) { a[0]=d/10+39。039。a[1]=d%10+39。039。 } // //判斷是否為閏年 uchar isLeapYear(uint y) { return(y%4==0amp。amp。y%100!=0)||(y%400==0)。 } // //求自 開始的任何一天是星期幾 //函數(shù)沒有通過,求出總天數(shù)后再求星期幾, //因?yàn)榍罂偺鞌?shù)可能會(huì)超越 uint 的范圍。 void RefreshWeekDay() { uint i,d,w=5。//已知 是周五 for(i=2020。i2020+DateTime[6]。i++) { d=isLeapYear(i)?366:365。 w=(w+d)%7。 } d=0。 for(i=1。iDateTime[4]。i++) d+=MonthsDays[i]。 d+=DateTime[3]。 //保存星期, 0~6 表示星期日至周六,為了與 DS1302 的星期格式匹配,返回值需要加 1 DateTime[5]=(w+d)%7+1。 } // void DateTime_Adjust(char x) { switch(Adjust_Index) { case 6://年 0099 if(x==1amp。amp。DateTime[6]99) DateTime[6]++。 if(x==1amp。amp。DateTime[6]0) DateTime[6]。 //獲取 2月天數(shù) 瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文: 基于 AT89C51 單片機(jī)的多功能電子萬年歷的設(shè)計(jì) 第 22 頁 共 25 頁 MonthsDays[2]=isLeapYear(2020+DateTime[6])?29:28。 //如果年份變化后當(dāng)前月份的天數(shù)大于上限則設(shè)為上限 if(DateTime[3]MonthsDays[DateTime[4]]) DateTime[3]=MonthsDays[DateTime[4]]。 RefreshWeekDay()。//刷新星期 break。 case 4://月 0112 if(x==1amp。amp。DateTime[4]12) DateTime[4]++。 if(x==1amp。amp。DateTime[4]1) DateTime[4]。 //獲取 2月天數(shù) MonthsDays[2]=isLeapYear(2020+DateTime[6])?29:28。 //如果月份變化后當(dāng)前月份的天數(shù)大于上限則設(shè)為上限 if(DateTime[3]MonthsDays[DateTime[4]]) DateTime[3]=MonthsDays[DateTime[4]]。 RefreshWeekDay()。//刷新星期 break。 case 3://日 0028/29/30/31;調(diào)節(jié)之前首先根據(jù)年份得出該年中 2 月的天數(shù) MonthsDays[2]=isLeapYear(2020+DateTime[6])?29:28。 //根據(jù)當(dāng)前月份決定調(diào)節(jié)日期的上限 if(x==1amp。amp。DateTime[3]MonthsDays[DateTime[4]]) DateTime[3]++。 if(x==1amp。amp。DateTime[3]0) DateTime[3]。 RefreshWeekDay()。//刷新星期 break。 case 2://時(shí) if(x==1amp。amp。DateTime[2]23) DateTime[2]++。 if(x==1amp。amp。DateTime[2]0) DateTime[2]。 break。 case 1://分 if(x==1amp。amp。DateTime[1]59) DateTime[1]++。 if(x==1amp。amp。DateTime[1]0) DateTime[1]。 break。 } } // //定時(shí)器 0每秒刷新 LCD 顯示 void T0_INT() interrupt 1 { TH0=50000/256。 TL0=50000%256。 if(++tCount!=2) return。 tCount=0。 //按指定的格式生成待顯示的日期時(shí)間串 瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文: 基于 AT89C51 單片機(jī)的多功能電子萬年歷的設(shè)計(jì) 第 23 頁 共 25 頁 Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5)。 Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8)。 Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11)。 //星期 strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]1])。 //時(shí)分秒 Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5)。 Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8)。 Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11)。 //顯示年月日,星期,時(shí)分秒 Display_LCD_String(0x00,LCD_DSY_BUFFER1)。 Display_LCD_String(0x40,LCD_DSY_BUFFER2)。 } //鍵盤中斷( INT0) void EX_INT0() interrupt 0 { if(K1==0) //選擇調(diào)整對(duì)象( Y M D H M) { while(K1==0)。 if(Adjust_Index==1||Adjust_Index==1) Adjust_Index=7。 Adjust_Index。 if(Adjust_Index==5) Adjust_Index=4。//跳過對(duì)星期的調(diào)節(jié) LCD_DSY_BUFFER2[13]=39。[39。 LCD_DSY_BUFFER2[14]=Change_Flag[Adjust_Index]。 LCD_DSY_BUFFER2[15]=39。]39。 } else if(K2==0)//加 { while(K2==0)。 DateTime_Adjust(1)。 } else if(K3==0)//減 { while(K3==0)。 DateTime_Adjust(1)。 } else if(K4==0)//確定 { while(K4==0)。 SET_DS1302()。 //將調(diào)整后的時(shí)間寫入 1302 LCD_DSY_BUFFER2[13]=39。 39。 LCD_DSY_BUFFER2[14]=39。 39。 LCD_DSY_BUFFER2[15]=39。 39。 Adjust_Index=1。//操作索引重設(shè)為 1,時(shí)間繼續(xù)正常顯示 } } 瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文: 基于 AT89C51 單片機(jī)的多功能電子萬年歷的設(shè)計(jì) 第 24 頁 共 25 頁 // //主程序 void main() { Init_LCD()。 //液晶初始化 IE=0x83。 // 允許 INT0, T0中斷 IP=0x01。 IT0=0x01。 TMOD=0x01。 TH0=50000/256。 TL0=50000%256。 TR0=1。 while(1) { //如果為執(zhí)行調(diào)整操作則正常讀取當(dāng)前時(shí)間 if(Adjust_Index==1) GetTime()。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1