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

正文內(nèi)容

基于at89c51單片機的多功能電子萬年歷的設(shè)計_畢業(yè)論文-閱讀頁

2024-09-20 18:27本頁面
  

【正文】 并且能夠很精確的顯示年歷。 萬年歷工作原理 此系統(tǒng)由單片機主體電路、單片機工作條件電路、 1602 顯示電路、時間條件電路、時鐘芯片 DS1302 等幾大部分組成,它具有年、月、日、星期、時、分、秒的顯示功能,它的工作是是靠實時時鐘 DS1302 這個芯片的強大功能來完成的,首先 單片機通過程序設(shè)置,控制 DS1302 時鐘芯片,從 DS1302 芯片讀取數(shù)據(jù)處理后送 1602 顯示,其顯示的時間和日期可以通過按鍵來進行調(diào)整,這樣可以使時間和日期更加的準確。對于 PROTEUS 這款軟件,也能熟練掌握電路設(shè)計仿真。 本次設(shè)計的 電子萬年歷 也存在的不足的地方,有待于以后的改進。 感謝我的導(dǎo)師龍 艦 涵老師給了我莫大的幫助,在他悉心的指導(dǎo)和嚴格的要求下,作品和論文順利完成了。在此畢業(yè)設(shè)計完成之際,謹向?qū)熀退袔椭^我的老師致以崇高的敬意和衷心的感謝。在以后的學(xué)習(xí)生活中我會 時時敦促自己更加努力,不辜負師長、親人、朋友對我的期望 。 //DS1302 數(shù)據(jù)線 sbit CLK=P1^1。 //DS1302 復(fù)位線 sbit RS=P2^0。 //LCD 讀 /寫控制 sbit EN=P2^2。 //選擇 sbit K2=P2^4。 //減 sbit K4=P2^6。 //一年中每個月的天數(shù),二月的天數(shù)由年份決定 uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31}。 //LCD 顯示緩沖 uchar LCD_DSY_BUFFER1[]={DATE 000000 }。 uchar DateTime[7]。 //當前調(diào)節(jié)的時間對象:秒,分,時,日,月,年(0,1,2,3,4,6) uchar Change_Flag[]=MHDMY。 while(x) for(i=0。i++)。 for(i=0。i++) { SDA=xamp。 CLK=1。 x=1。 for(i=0。i++) { b=1。b|=t7。CLK=0。 } //從 DS1302 指定的位置讀數(shù)據(jù) uchar Read_Data(uchar addr) { 瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文: 基于 AT89C51 單片機的多功能電子萬年歷的設(shè)計 第 19 頁 共 25 頁 uchar dat。CLK=0。 Write_A_Byte_TO_DS1302(addr)。 CLK=1。 return dat。RST=1。 Write_A_Byte_TO_DS1302(dat)。RST=0。 Write_DS1302(0x8E,0x00)。i7。 } Write_DS1302(0x8E,0x80)。 for(i=0。i++) { DateTime[i]=Read_Data(0x81+2*i)。 //uchar Read_LCD_State() 讀 LCD 狀態(tài) 瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文: 基于 AT89C51 單片機的多功能電子萬年歷的設(shè)計 第 20 頁 共 25 頁 uchar Read_LCD_State() { uchar state。RW=1。DelayMS(1)。EN=0。 return state。0x80)==0x80)。 } //void Write_LCD_Data(uchar dat) 向 LCD寫數(shù)據(jù) void Write_LCD_Data(uchar dat) { LCD_Busy_Wait()。RW=0。P0=dat。DelayMS(1)。 } //void Write_LCD_Command(uchar cmd) 寫 LCD指令 void Write_LCD_Command(uchar cmd) { LCD_Busy_Wait()。RW=0。P0=cmd。DelayMS(1)。 } //void Init_LCD() LCD 初始化 void Init_LCD() { Write_LCD_Command(0x38)。 Write_LCD_Command(0x01)。 Write_LCD_Command(0x06)。 Write_LCD_Command(0x0c)。 } //void Set_LCD_POS(uchar P) 設(shè)置液晶顯示位置 void Set_LCD_POS(uchar p) { Write_LCD_Command(p|0x80)。 Set_LCD_POS(p)。i16。 DelayMS(1)。039。039。amp。 } // //求自 開始的任何一天是星期幾 //函數(shù)沒有通過,求出總天數(shù)后再求星期幾, //因為求總天數(shù)可能會超越 uint 的范圍。//已知 是周五 for(i=2020。i++) { d=isLeapYear(i)?366:365。 } d=0。iDateTime[4]。 d+=DateTime[3]。 } // void DateTime_Adjust(char x) { switch(Adjust_Index) { case 6://年 0099 if(x==1amp。DateTime[6]99) DateTime[6]++。amp。 //獲取 2月天數(shù) 瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文: 基于 AT89C51 單片機的多功能電子萬年歷的設(shè)計 第 22 頁 共 25 頁 MonthsDays[2]=isLeapYear(2020+DateTime[6])?29:28。 RefreshWeekDay()。 case 4://月 0112 if(x==1amp。DateTime[4]12) DateTime[4]++。amp。 //獲取 2月天數(shù) MonthsDays[2]=isLeapYear(2020+DateTime[6])?29:28。 RefreshWeekDay()。 case 3://日 0028/29/30/31;調(diào)節(jié)之前首先根據(jù)年份得出該年中 2 月的天數(shù) MonthsDays[2]=isLeapYear(2020+DateTime[6])?29:28。amp。 if(x==1amp。DateTime[3]0) DateTime[3]。//刷新星期 break。amp。 if(x==1amp。DateTime[2]0) DateTime[2]。 case 1://分 if(x==1amp。DateTime[1]59) DateTime[1]++。amp。 break。 TL0=50000%256。 tCount=0。 Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8)。 //星期 strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]1])。 Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8)。 //顯示年月日,星期,時分秒 Display_LCD_String(0x00,LCD_DSY_BUFFER1)。 } //鍵盤中斷( INT0) void EX_INT0() interrupt 0 { if(K1==0) //選擇調(diào)整對象( Y M D H M) { while(K1==0)。 Adjust_Index。//跳過對星期的調(diào)節(jié) LCD_DSY_BUFFER2[13]=39。 LCD_DSY_BUFFER2[14]=Change_Flag[Adjust_Index]。]39。 DateTime_Adjust(1)。 DateTime_Adjust(1)。 SET_DS1302()。 39。 39。 39。//操作索引重設(shè)為 1,時間繼續(xù)正常顯示 } } 瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文: 基于 AT89C51 單片機的多功能電子萬年歷的設(shè)計 第 24 頁 共 25 頁 // //主程序 void main() { Init_LCD()。 // 允許 INT0, T0中斷 IP=0x01。 TMOD=0x01。 TL0=50000%256。 while(1) { //如果為執(zhí)行調(diào)整操作則正常讀取當前時間 if(Adjust_Index==1) GetTime(
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1