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

正文內(nèi)容

畢業(yè)設(shè)計-基于stc89c52單片機的可調(diào)式電子日歷設(shè)計-文庫吧資料

2025-01-22 23:50本頁面
  

【正文】 teTime[4]]) DateTime[3]++。 if(x== 1amp。 break。 if(DateTime[3]MonthsDays[DateTime[4]]) DateTime[3]=MonthsDays[DateTime[4]]。DateTime[4]1) DateTime[4]。 if(x==1amp。amp。 break。 if(DateTime[3]MonthsDays[DateTime[4]]) DateTime[3]=MonthsDays[DateTime[4]]。DateTime[6]0) DateTime[6]。 if(x==1amp。amp。 23 DateTime[5]=(w+d)%7+1。i++) d+=MonthsDays[i]。 for(i=1。 w=(w+d)%7。i2022+DateTime[6]。 } void RefreshWeekDay() { uint i,d,w=5。amp。039。039。i++) { DateTime[i]=Read_Data(0x81+2*i)。 for(i=0。 } Write_DS1302(0x8e,0x80)。i7。 Write_DS1302(0x8e,0x00)。 RST=0。 DS1302_Write_Byte(dat)。 RST=1。 return dat。 CLK=1。 DS1302_Write_Byte(addr)。 CLK=0。 } /* 從 DS1302指定位置數(shù)據(jù) */ uchar Read_Data(uchar addr) { uchar dat。 CLK=0。 b|=t7。i++) { b=1。 for(i=0。 x=1。 CLK=1。i++) { SDA=xamp。 for(i=0。 DelayMS(1)。i16。 Set_LCD_POS(p)。 } void Set_LCD_POS(uchar p) { Write_LCD_Command(p|0x80)。 Display_LCD_String(0x40,dian zi ri li)。 20 Display_LCD_String(0x00,zhongzhoudaxue)。 Write_LCD_Command(0x0C)。 Write_LCD_Command(0x06)。 Write_LCD_Command(0x01)。 } void Init_LCD() //LCD初始化 { Write_LCD_Command(0x38)。 DelayMS(1)。 P0=cmd。 RW=0。 } void Write_LCD_Command(uchar cmd)//寫命令 { LCD_Busy_Wait()。 DelayMS(1)。 P0=dat。 RW=0。 } void Write_LCD_Data(uchar dat) //寫 數(shù)據(jù) { LCD_Busy_Wait()。0x08)==0x80)。 return state。 EN=0。 DelayMS(1)。 RW=1。 } uchar Read_LCD_State() 19 { uchar state。i120。 void DelayMS(uint x) { uchar i。 void Init_LCD()。 void Write_LCD_Data(uchar dat)。 uchar Read_LCD_State()。 //所讀取的日期時間 char Adjust_Index=1。 //LCD顯示緩沖 uchar LCD_DSY_BUFFER2[]={Time 000000 }。 uchar *WEEK[]={SUN,MON,TUS,WEN,THU,FRI,SAT}。 uchar tCount=0。 // 減 sbit K4=P3^7。 // 選擇 sbit K2=P3^5。 sbit EN=P2^2。 //DS1302復(fù)位線 sbit RS=P2^0。 // DS1302數(shù)據(jù)線 sbit CLK=P1^1。 在做作品的日子里得到了 王春梅老 師的悉心指導(dǎo),在此向我 們 的 王春梅 師致以誠摯的謝意。 15 致謝詞 感謝學(xué)院 ,感謝王春梅老師再次 給我 們 提供了一個展現(xiàn)自己的舞臺,給我 們 一 次難得煅煉的機會,使得我 們 的動手能力和專業(yè)技能都有了很大的提高。在解決這些問題的過程中發(fā)現(xiàn)網(wǎng)絡(luò)確實是一個很好的學(xué)習(xí)平臺,利用前人的經(jīng)驗可以提高自己的解決實際問題的能力。因為時間比較倉促,流程圖寫的條理性不夠,不過相信以后多多練習(xí),就可以做得更好。最重要的是,因為只是水平有限,要自己編寫一整個 C 程序還是很難必須查閱相關(guān)資料,但是最終 we make it!我們很快樂! 更加熟悉掌握了 Proteus 的 使用方法,再次從實際操作中認(rèn)識到Proteus 在仿真方面的優(yōu)越性,激發(fā)了自己學(xué)習(xí) Proteus 的興趣; 因為自己要修改程序,所以單單花費在程序分析的時間就很多,為了更好的理解程序,我把每句主要程序的后面都注釋了該語句的意思,詳情可以見程序清單,發(fā)現(xiàn)注釋語義的工作量也是非常大的。 實驗 心得總結(jié) : 通過本次單片機實訓(xùn),我們不僅再次鞏固復(fù)習(xí)了去年暑假里參加電子設(shè)計賽時學(xué)到的知識,還在老師同學(xué)的幫助下,進一步了解熟悉了DS1302, LCD1602 的使用,及單片機的組成及其強大和不足。 proteus 是一個非常好用的仿真軟件,其具有強大的電路原理圖繪制功能,且可以實現(xiàn)模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)仿真、鍵盤、 LCD 系統(tǒng)仿真等多種功能;和 keil 聯(lián)合使用時可以檢測所編寫的程序的正確與否。其次,選用LCD1602 進行顯示時,數(shù)據(jù)位串行輸入,接口連線少,低功耗,顯示清晰。對當(dāng)前時間或定時時間修改后又返回到最初的顯示程序段 ,如此循環(huán)下去。其次,時 ,分 ,秒顯示用了軟件譯碼 (查表 )的方式 ,再用了一段固定的程序段進行進制轉(zhuǎn)化。多次按 K1 鍵,當(dāng)全部閃爍位全閃爍完畢時,就可以退出調(diào)整模式。按 K2 鍵是對閃爍位進行加一的操作。 其次,可以通過三個按鍵 : K1, K2 和 K3 鍵對電子鐘進行時間和日期的調(diào)整。月份判斷比較簡單,只要超過 12,年份就加 1,月份置 1。當(dāng)時達到 24 時,也一樣處理。 13 數(shù)據(jù)計算處理與性能分析: 加 減鍵對時間日期改變處理算法: 對于年月日,時分秒來說,每個變量的最大值和最小值都不一樣,所以當(dāng)年月份時分秒改變時,進行處理的算法也不一樣,年沒有最大值,所以不用采取“封頂”措施,每次年加一處理時,直接自加,而對于月份來說,月份是不能超過 13 的,所以當(dāng)月份自加到 13 時要重新置 1,具體處理見程序,在每個語句后,我都有分析注釋出來。在編寫程序和調(diào)試時出現(xiàn)了較多的問題。 Display_LCD_String(0x40,LCD_DSY_BUFFER2)。 Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11)。 Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5)。 Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11)。 Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5)。 if(++tCount!=2) return。 } } 液晶初始化子程序 /*************初始化 *************/ void T0_INT() interrupt 1 { TH0=50000/256。DateTime[1]0) DateTime[1]。 if(x==1amp。amp。 break。amp。DateTime[2]23) DateTime[2]++。 case 2: //時 if(x== 1amp。 RefreshWeekDay()。amp。DateTime[3]MonthsDays[DateTime[4]]) DateTime[3]++。 if(x== 1amp。 break。 if(DateTime[3]MonthsDays[DateTime[4]]) DateTime[3]=MonthsDays[DateTime[4]]。DateTime[4]1) DateTime[4]。 if(x==1amp。amp。 break。 if(DateTime[3]MonthsDays[DateTime[4]]) DateTime[3]=MonthsDays[DateTime[4]]。DateTime[6]0) DateTime[6]。 if(x==1amp。amp。 DateTime[5]=(w+d)%7+1。i++) d+=MonthsDays[i]。 for(i=1。 11 w=(w+d)%7。i2022+DateTime[6]。 } void RefreshWeekDay() { uint i,d,w=5。amp。039。039。i++) { DateTime[i]=Read_Data(0x81+2*i)。 for(i=0。 } Write_DS1302(0x8e,0x80)。i7。 Write_DS1302(0x8e,0x00)。 } 按鍵掃描子 程序 調(diào)整時間用 4個調(diào)整按鈕, 1個作為選擇控制用,另外 3個分別作為加調(diào)整,減調(diào)整和確定用。 while(1) { keyscan()。 write_setds(0x8c,0x10)。 write_setds(0x88,0x03)。 write_setds(0x84,0x10)。 write_setds(0x80,0x50)。 第 16腳:背光源負(fù)極。 第 7~ 14腳: D0~ D7為 8位雙向數(shù)據(jù)線。當(dāng) RS和 R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng) RS 為低電平R/W 高電平時可以讀忙信號,當(dāng) RS 為高電平 R/W 為低電平時可以寫入數(shù)據(jù)。 第 4 腳: RS 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄器。 第 2腳: VDD接 5V正電源。下面以長沙太陽人電子有限公司的 1602字符型液晶顯示器為例,介紹其用法。當(dāng)“ WP”為 1時,寫保護位防止對任一寄存器的寫操作。DS1302的日歷、時間寄存器內(nèi)容:“ CH”是時鐘暫停標(biāo)志位,當(dāng)該位為 1時,時鐘振蕩器停止, DS1302 處于低功耗狀態(tài);當(dāng)該位為 0 時,時鐘開始運行。位 0 是讀 /寫操作位,進行讀操作時,該位為 1;該位為 0則表示進行的是寫操作。對于位 6,若對程序進行讀 /寫時 RAM=1,對時間進行讀 /寫時, CK=0。 圖 3 DS1302的引腳圖 2. DS1302 數(shù)據(jù) 操作原理 DS1302在每次進行讀、寫程序前都必須初始化,先把 SCLK 端置“ 0”,接著把 RST端置“ 1”,最后才給予 SCLK 脈沖。中有在 SCLK 為低電平時,才能將 RST置為高電平, I/O為串行數(shù)據(jù)輸入端(雙向)。如果在傳送過程中 RST置為低電 平,則會終止此次數(shù)據(jù)傳送, I/O引腳變?yōu)楦咦钁B(tài)。 RST輸 入有兩種功能:首先, RST接通控制邏輯,允許地址 /命令序列送入移位寄存器;其次, RST 提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。 X1和 X2是振蕩源,外接 晶振。當(dāng) Vcc2 大于 Vcc1+, Vcc2 給 DS1302供電。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。 主要單元電路的設(shè)計 單片機主控制模塊的設(shè)計 STC89C52單片機為 40引腳雙列直插芯片 ,有四個 I/O口 P0,P1,P2,P3, MCS51單片機共有 4個 8位的 I/O口( P0、 P P P3) ,每一條 I/O線都能獨立地作輸出或輸入。 DS1302 內(nèi)部有一個 31*8的用于臨時性存放數(shù)據(jù)的 RAM寄存器。 方案二: 采用 DS1302 時鐘芯片實現(xiàn)時鐘, DS1302 芯片是一種高性能的時鐘芯片,可自動對秒、分、時、周、月、年一級閏年補償?shù)哪赀M行計數(shù),而且精度高, RAM 作為數(shù)據(jù)暫存區(qū),工作電壓 ~ 范圍內(nèi), 時耗電小于300nA. 電路設(shè)計最終方案決 定 綜上各方案所述,對此次作品的方案選定:采用 STC89C52作為主控制系統(tǒng); DS1302 提供時鐘; LCD1602液晶作為顯示 系統(tǒng)的硬件設(shè)計與實現(xiàn) 電路設(shè)計框圖 鍵掃描電路 LCD 顯示電路 時鐘電路 主控模塊 ( 89C 52) 圖 1電路設(shè)計框圖 系統(tǒng)硬件概述
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1