




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于 51 單片機(jī)的萬(wàn)年歷設(shè)計(jì)單片機(jī)經(jīng)過(guò)幾十年的發(fā)展, 已經(jīng)廣泛應(yīng)用于生活中的各個(gè)領(lǐng)域。 單片機(jī)以其體 積小、功能全、性價(jià)比高等諸多優(yōu)點(diǎn),在許多行業(yè)都得到了廣泛應(yīng)用。在工業(yè)控 制、家用電器、通信設(shè)備、信息處理、尖端武器等各種測(cè)控領(lǐng)域的應(yīng)用中獨(dú)占鰲 頭,單片機(jī)開發(fā)技術(shù)已成為電子信息、電氣、通信、自動(dòng)化、機(jī)電一體化等專業(yè) 技術(shù)人員必須掌握的技術(shù)?;趩纹瑱C(jī)的萬(wàn)年歷作為設(shè)計(jì)的課題, 因?yàn)樗泻芎玫拈_放性和可發(fā)揮性, 對(duì) 作者的要求比較高,不僅考察了對(duì)單片機(jī)的掌握能力而且強(qiáng)調(diào)了對(duì)單片機(jī)擴(kuò)展的 應(yīng)用。另外液晶顯示的萬(wàn)年歷已經(jīng)越來(lái)越流行,特別適合在家庭居室、辦公室、 大廳、會(huì)議室、車站和廣場(chǎng)等地方使用,它
2、具有顯示清晰直觀、走時(shí)準(zhǔn)確、可以 進(jìn)行夜視等功能,并且還可以擴(kuò)展出其它多種功能。所以,電子萬(wàn)年歷作為設(shè)計(jì) 課題很有價(jià)值。現(xiàn)在對(duì)于電子萬(wàn)年歷的設(shè)計(jì)大多運(yùn)用 51 單片機(jī)。主要是因?yàn)?51 單片機(jī)種類齊 全、結(jié)構(gòu)體系完整、指令系統(tǒng)功能完善、性能優(yōu)越、具有較高可靠性和高性價(jià)比 等特點(diǎn)。本篇論文主要介紹了運(yùn)用單片機(jī)實(shí)現(xiàn)電子萬(wàn)年歷的設(shè)計(jì) , 萬(wàn)年歷系統(tǒng)擬用STC89C5單片機(jī)控制,以DS1302時(shí)鐘芯片計(jì)時(shí)、1602液晶屏顯示。系統(tǒng)主要由單片機(jī)控制電路,顯示電路以及校正電路三個(gè)模塊組成。本文闡述了系統(tǒng)的硬件 工作原理,所應(yīng)用的各個(gè)接口模塊的功能以及其工作過(guò)程,論證了設(shè)計(jì)方案理論 的可行性。目錄第一章 緒
3、論 11.1 本課題主要的研究工作 1第二章 系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn) 22.1 電路設(shè)計(jì)框圖 22.2 系統(tǒng)硬件概述 22.3 主要單元電路的設(shè)計(jì) 22.3.1 單片機(jī)主控制模塊的設(shè)計(jì) 22.3.2 時(shí)鐘電路模塊的設(shè)計(jì) 32.3.3 獨(dú)立式鍵盤設(shè)計(jì) 42.3.4 顯示模塊的設(shè)計(jì) 4第三章 系統(tǒng)的軟件設(shè)計(jì) 63.1 程序流程圖 . 63.1.1 系統(tǒng)總流程圖 63.1.2 DS1302 時(shí)鐘程序流程圖 73.1.3 LCD 顯示程序流程圖 83.2 程序的設(shè)計(jì) 93.2.1 DS1302 讀寫程序 93.2.2 液晶顯示程序 11第四章 仿真與調(diào)試 134.1 KEIL 軟件調(diào)試流程 . 134.
4、2 PRoteu軟件運(yùn)行流程 134.3 萬(wàn)年歷的功能仿真 13致 謝 15參考文獻(xiàn) 16附錄:主程序 17第一章 緒論1.1 本課題主要的研究工作本項(xiàng)目是一種基于 AT89C51片機(jī)的萬(wàn)年歷設(shè)計(jì),本方案以AT89C51片機(jī)作為 主控核心,與時(shí)鐘芯片DS1302、按鍵、LCD1602液晶顯示器組成硬件系統(tǒng)。在硬 件系統(tǒng)中設(shè)有獨(dú)立按鍵和 LCD1602 顯示器,能顯示豐富的信息,根據(jù)使用者的需 要可以隨時(shí)對(duì)時(shí)間進(jìn)行更改,讀取方便、顯示直觀。當(dāng)程序執(zhí)行后,LCD顯示即時(shí)時(shí)間、年月日、星期。設(shè)置 4個(gè)操作鍵:K1:選 擇鍵;K2:加鍵;K3:減鍵;K4:確定鍵。1 本設(shè)計(jì)的主要內(nèi)容:(1)熟悉萬(wàn)年歷
5、各模塊的工作原理;(2)選擇適當(dāng)?shù)男酒驮骷?,確定系統(tǒng)電路,繪制電路原理圖,尤其 是各接口電路;(3)熟悉單片機(jī)使用方法和 C語(yǔ)言,編寫出相應(yīng)模塊的應(yīng)用程序;(4)分別在各自的模塊中調(diào)試出對(duì)應(yīng)的功能,在 Proteus 軟件上進(jìn)行仿 真,并實(shí)現(xiàn)各種功能。2 設(shè)計(jì)目標(biāo):萬(wàn)年歷實(shí)現(xiàn)以下三個(gè)功能:(1)具有年、月、日、星期、時(shí)、分、秒等功能;(2)具備年、月、日、星期、時(shí)、分、秒校準(zhǔn)功能,具備自動(dòng)調(diào)節(jié)閏年 的功能;(3)具有與即時(shí)時(shí)間同步的功能。28第二章系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)2.1電路設(shè)計(jì)框圖根據(jù)設(shè)計(jì)方案給出了系統(tǒng)總體的設(shè)計(jì)框圖,如圖1所示:LCD液晶模塊DS1302模塊主控制殮塊TS鍵盤模塊圖1
6、為使時(shí)鐘走時(shí)與標(biāo)準(zhǔn)時(shí)間一致,校時(shí)電路是必不可少的,鍵盤模塊用來(lái)校正 液晶上顯示的時(shí)間;STC89C51單片機(jī)通過(guò)輸出各種電脈沖信號(hào)來(lái)驅(qū)動(dòng)控制各部分 正常工作;而系統(tǒng)的時(shí)間、等數(shù)據(jù)則最終通過(guò)液晶模塊顯示出來(lái)。2.2系統(tǒng)硬件概述本電路是以STC89C5單片機(jī)為控制核心,該芯片具有在線編程功能,功耗低, 能在3.3V的超低壓下工作;時(shí)鐘芯片采用DS1302它是一款高性能、低功耗、自帶RAM勺實(shí)時(shí)時(shí)鐘芯片, 具有掉電自動(dòng)保存功能??勺詣?dòng)對(duì)秒、分、時(shí)、日、周、月、年進(jìn)行計(jì)數(shù),具有 閏年補(bǔ)償功能,而且精度高位的 RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V5.5V范圍 內(nèi),2.5V時(shí)耗電小于300nA。顯示模塊
7、采用1602顯示屏,它內(nèi)置192種字符,可顯示32個(gè)符號(hào)或數(shù)字,清 晰可見,而且功率消耗小壽命長(zhǎng)抗干擾能力強(qiáng)。其工作電壓為5v。2.3主要單元電路的設(shè)計(jì)2.3.1單片機(jī)主控制模塊的設(shè)計(jì)一個(gè)典型的單片機(jī)最小系統(tǒng)一般由時(shí)鐘電路、復(fù)位電路、電源指示燈和外部 擴(kuò)展接口等部分組成。單片機(jī)的最小系統(tǒng)如下圖所示,單片機(jī)的XTAL0和XTAL1引腳用于連接晶振電 路。RESET為復(fù)位引腳,連接復(fù)位電路,用于初始化MCU232時(shí)鐘電路模塊的設(shè)計(jì)DS1302內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM通過(guò)簡(jiǎn)單的串行接口 與單片機(jī)進(jìn)行通信。圖中VCC偽后備電源,VCC2為主電源。DS1302由VCC1或VCC2 兩
8、者中的較大者供電。所以在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。X1和X2是振蕩源,外接32.768KHZ晶振用來(lái)為芯片提供計(jì)時(shí)脈沖。RST是復(fù)位/ 片選線,通過(guò)把RST俞入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。DS1302的硬件接線圖如圖2所示:C2Header 2圖2時(shí)鐘芯片DS1302的工作原理:(1) DS1302的控制字節(jié):DS1302控制字節(jié)的高有效位(位7)必須是邏輯1, 如果它為0,貝U不能把數(shù)據(jù)寫入 DS1302中,位6如果為0,則表示存取日歷時(shí)鐘 數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位 0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制
9、字節(jié)總是從最低位開始 輸出(2) 數(shù)據(jù)輸入輸出(I/O ):在控制指令字輸入后的下一個(gè) SCLK寸鐘的上升沿 時(shí),數(shù)據(jù)被寫入DS1302數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制 指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位 0 位到高位7。(3) DS1302的寄存器:DS1302有 12個(gè)寄存器,其中有7個(gè)寄存器與日歷、 時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。“ CH是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí), 時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開始運(yùn)行?!癢P 是寫保護(hù)位,在任何的對(duì)時(shí)鐘和 RAM的寫操作之前,“WP必須為0。當(dāng)“WP
10、為 1 時(shí),寫保護(hù)位防止對(duì)任一寄存器的寫操作。2.3.3 獨(dú)立式鍵盤設(shè)計(jì)獨(dú)立式鍵盤每個(gè)鍵單獨(dú)占用一根 I/O 口線。鍵盤的工作方式可分為編程控制 方式和中斷控制方式。CPU在 一個(gè)工作周期內(nèi),利用完成其他任務(wù)的空余時(shí)間,調(diào) 用鍵盤掃描子程序,經(jīng)程序查詢,若無(wú)鍵操作,則返回;若有鍵操作,則進(jìn)而判 斷是哪個(gè)鍵,并執(zhí)行相應(yīng)的鍵處理程序。這種方式為編程掃描方式。由于單片機(jī) 在正常應(yīng)用過(guò)程中,可能會(huì)經(jīng)常進(jìn)行鍵操作,因而編程控制方式使CPU經(jīng)常處于工作狀態(tài), 在進(jìn)行本次設(shè)計(jì)中,只涉及到了選擇、加、減、確定四個(gè)功能。因此 采用獨(dú)立式鍵盤。2.3.4 顯示模塊的設(shè)計(jì)本設(shè)計(jì)中要對(duì)時(shí)間、溫度進(jìn)行顯示,液晶顯示屏
11、1602模塊作為輸出。 1602字 符型LCD!常有14條引腳線或16條引腳線的LCD多出來(lái)的2條線是背光電源線。 它可以顯示兩行,每行16個(gè)字符,采用單+5V電源供電,外圍電路配置簡(jiǎn)單。1602 液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器已經(jīng)存儲(chǔ)了 160 個(gè)不同的點(diǎn)陣字符圖形,每一個(gè) 字符都有一個(gè)固定的代碼,比如大寫的英文字母“ A”的代碼是01000001B(41H), 顯示時(shí)模塊把地址 41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。LCD1602引腳功能:1 VSS般接地2 VDD接 電源(+5V)3 V0 液晶顯示器對(duì)比度調(diào)整端。4 RS RS為寄存器選擇。5 R/WR/W為讀寫信號(hào)線。
12、6 E E(或EN)端為使能(enable)端,下降沿使能。1602主要管腳介紹:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱, 接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生鬼影使用時(shí)可以通過(guò)一個(gè) 10K 的電 位器調(diào)整對(duì)比度。RS為寄存器選擇端,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。R/W為讀寫信號(hào)線端,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。 當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址;當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。E為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊 執(zhí)行命令。將L1602的RS端和P2.0,R/W端和P2.1, E 端和P2.2相連,當(dāng)
13、RS=0 時(shí),對(duì)LCD1602寫入指令;當(dāng)RS=1時(shí),對(duì)LCD1602寫入數(shù)據(jù)。當(dāng)R/W端接高電平 時(shí)芯片處于讀數(shù)據(jù)狀態(tài),反之處于寫數(shù)據(jù)狀態(tài),E端為使能信號(hào)端。當(dāng)R/W為高電 平,E端也為咼電平,RS為低電平時(shí),液晶顯示屏顯示需要顯示的示數(shù)。顯示模塊電 路圖如圖3所示:VCCU1101112J1115 -i6上i7:18 i1920P1.0(T2) P1.1(T2EX) P1.2P1.3P1.4P1.5P1.6 P1.7 RESET (RXD)P3.0 (TXD)P3.1 P3.2(INT0) P3.3(INT1) P3.4(T0) P3.5(T1)P3.6(WR) P3.7(RD XTAL0
14、 XTAL1VSSVCCT10K3產(chǎn)4540I6VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7 ea/VppALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.039W373635262423222178910111213141516VSS VDD V0 RS RW EDB0DB1DB2DB3DB4DB5DB6DB7E1E2LCD1602VCCST8C9C52第三章系統(tǒng)的軟件設(shè)計(jì)3.1程序流程圖3.1.1系統(tǒng)總流程圖系統(tǒng)總流程圖分析:首先系統(tǒng)初始化,系統(tǒng)開始運(yùn)行,當(dāng)有設(shè)置鍵按下時(shí)進(jìn) 入修改時(shí)間模式,無(wú)按鍵按下時(shí)讀取時(shí)間、溫度等數(shù)據(jù)送入液
15、晶屏顯示;在修改 時(shí)間模式下設(shè)置時(shí)間完成后再送數(shù)據(jù)到液晶屏顯示,如圖 4所示:圖43.1.2 DS1302時(shí)鐘程序流程圖入液晶屏顯示。這時(shí)若有設(shè)置鍵按下時(shí),進(jìn)行時(shí)間修改,完成后將數(shù)據(jù)送入 時(shí)鐘芯片;若沒有按鍵按下,則直接存入EPROM送入液晶屏顯示。時(shí)鐘程序S1302 開始計(jì)時(shí)時(shí),首先進(jìn)行初始化,當(dāng)有中斷信號(hào)時(shí),讀取時(shí)鐘芯片的數(shù)據(jù),如圖5所示:圖53.1.3 LCD顯示程序流程圖顯示程序流程圖分析:首先對(duì)1602顯示屏進(jìn)行初始化(初始化大約持續(xù)10ms號(hào),左右),然后檢查忙信號(hào),若BF=O,則獲得顯示RAM的地址,寫入相應(yīng)的數(shù)據(jù)顯示;若BF=1,則代表模塊正在進(jìn)行內(nèi)部操作,不接受任何外部指令和
16、數(shù)據(jù),直到BF=O為止,如圖6所示:J結(jié)束3.2程序的設(shè)計(jì)321 DS1302讀寫程序DS1302是 SPI總線驅(qū)動(dòng)方式。它不僅要向寄存器寫入控制字,還需要讀取相應(yīng)寄存器的數(shù)據(jù)。要想與 DS1302通信,首先要先了解 DS1302的控制字。DS1302的控制字如圖7:765432101RAMA4A3UKA2AlAORD控制字總是從最低位開始輸出。在控制字指令輸入后的下一個(gè)SCLK寸鐘的上升沿時(shí),數(shù)據(jù)被寫入 DS1302數(shù)據(jù)輸入從最低位(0位)開始。同樣,在緊跟 8 位的控制字指令后的下一個(gè) SCLK脈沖的下降沿,讀出DS1302的數(shù)據(jù),讀出的 數(shù)據(jù)也是從最低位到最高位。依據(jù)讀寫時(shí)序如圖8和圖9
17、:一(尺帀 1畑 z 1盟 i 盟 |陽(yáng) |眈”-圖8單字節(jié)讀RST齪lk丄fLfmfLfunLrLfLfLfLfLTLfnLfnjn 0( R/訐 肌 剛 A2 | 陽(yáng) | 第1Di D2 D3 D4 D5 D6 3圖9 單字節(jié)寫在進(jìn)行任何數(shù)據(jù)傳輸時(shí),RST必須被置高電平,每個(gè)SCLK為上升沿時(shí)數(shù)據(jù)被 輸入,下降沿時(shí)數(shù)據(jù)被輸出。先把 RST置低,禁止數(shù)據(jù)傳輸,SCLK置低,清零時(shí) 鐘總線,RST再置高,允許數(shù)據(jù)傳輸。傳送完成后,RST置低,禁止字節(jié)的傳送。部分源程序如下:void write_byte(uchar dat) /寫一個(gè)字節(jié)ACC=dat;RST=1;for(a=8;a>0
18、;a-) IO=ACC0;SCLK=0;SCLK=1;ACC=ACC>>1;uchar read_byte() / 讀一個(gè)字節(jié)RST=1;for(a=8;a>0;a-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC>>1;return (ACC);void write_1302(uchar add,uchar dat) /向 1302 芯片寫函數(shù),指定寫入地址,數(shù)據(jù)RST=0;SCLK=0;RST=1;write_byte(add);write_byte(dat);SCLK=1;RST=0;uchar read_1302(uchar add) / 從
19、1302 讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來(lái)源 地址uchar temp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte();SCLK=1;RST=0;return(temp);3.2.2 液晶顯示程序1602通過(guò)D0D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令,其模塊內(nèi)的控制器有11條控 制指令。當(dāng)液晶顯示屏的接口電路與單片機(jī)系統(tǒng) I/O 按照并行數(shù)據(jù)傳輸方式連接 完成以后,即可以對(duì)STC89C5單片機(jī)進(jìn)行編程。在液晶屏完成顯示之前首先要對(duì) 液晶進(jìn)行初始化。部分源程序如下:lcdnit()/*液晶初始化函數(shù)*write_1602com(0x38); /設(shè)置液晶工
20、作模式, 16*2行顯示, 5*7點(diǎn)陣, 8位數(shù)據(jù) write_1602com(0x0c);/開顯示不顯示光標(biāo)write_1602com(0x06);/整屏不移動(dòng),光標(biāo)自動(dòng)右移write_1602com(0x01);/清顯示write_1602com(yh+1); /日歷顯示固定符號(hào)從第一行第 1 個(gè)位置之后開始顯示 for(a=0;a<14;a+)write_1602dat(tab1a); /向液晶屏寫日歷顯示的固定符號(hào)部分 /delay(3);write_1602com(er+2); /時(shí)間顯示固定符號(hào)寫入位置, 從第 2 個(gè)位置后開始顯示 for(a=0;a<8;a+)wri
21、te_1602dat(tab2a); /寫顯示時(shí)間固定符號(hào),兩個(gè)冒號(hào)delay(3);第四章 仿真與調(diào)試4.1 Keil 軟件調(diào)試流程建立新工程并保存,保存后會(huì)彈出一個(gè)設(shè)備選擇對(duì)話框,選擇MCU后點(diǎn)確定返回主界面。新建文件并保存,以 .C 為后綴。接著選擇 Source Group1 ,右擊鼠 標(biāo)彈出快捷菜單,選擇“ Add File to Group 'Source Groupl ",出現(xiàn)一個(gè)對(duì)話 框,加入文件后點(diǎn) close 返回主界面。再打開工程屬性設(shè)置對(duì)話框,主要設(shè)置工 作包括在Target選項(xiàng)卡中設(shè)置晶振頻率、在Debug選項(xiàng)卡中設(shè)置生成hex文件等。 然后編寫程序
22、并調(diào)試。在模擬調(diào)試程序后,還須通過(guò)編程器將 .hex 目標(biāo)文件寫入 單片機(jī)中才能觀察仿真的效果。4.2 Proteus 軟件運(yùn)行流程運(yùn)行Proteus程序后,進(jìn)入軟件的主界面,過(guò)左側(cè)工具欄中的P(從庫(kù)中選擇元件命令 )命令,在 Pick Devices 左側(cè)窗口中選擇所需元件的關(guān)鍵字,然后放置 元件并調(diào)整方向和位置以及參數(shù)設(shè)置,最后進(jìn)行連線。按 P 在庫(kù)中查找元器件, 將所需要的元器件放置好后,繪制成原理圖。4.3 萬(wàn)年歷的功能仿真當(dāng)電路搭建好之后,選中單片機(jī) STC89C5,1 左鍵點(diǎn)擊 STC89C5,1 在出現(xiàn)的對(duì) 話框里點(diǎn)擊Program File按鈕,找到剛才Keil軟件編譯得到的H
23、EX文件,載入 然后點(diǎn)擊“0K按鈕就可以模擬了。點(diǎn)擊模擬調(diào)試按鈕的運(yùn)行按鈕,進(jìn)人調(diào)試狀 態(tài)。按相應(yīng)的按鍵可調(diào)節(jié)分,時(shí),星期,日期,月份,年份,并且可以自動(dòng)閏年 調(diào)整。按鍵功能自上而下依次為:選擇鍵、加、減、確定。在 Protues 中仿真, 如圖 10,圖 11,圖 12所示: 1LCD +RTE l0-L2-2?riONTIFE lSi 2H 46:.: I AlC2 :=rr°:RF1 -1-, 總口 :VO %LK TOTWC2X1U2 DS133Z胡iH<7z- S'v4JTT il 1KTAjinKTKI2BSTPCL1M1 陽(yáng)別畑 PgWPOL 4/04 卩
24、口敬修PEUkbSPH T/H iiTPSENPZ1TASP2.1M9 PZ2AC P ZA11AL£FZ.AH0P1 0PZAG PZJffAU 工T慣皆FlUKXbPl 1/T: pjiwinP1.1 PUM3 P-| 4,psaTim勺 mTOP-15P -I AFgjrriR1.T1S 3n qj 廣 o .-sr3"空衿/ Z ITW.?23 B 7w叫二.1.至di T31 n?-T3#OS 匚衛(wèi) d3Z orilDT N fl 3« - 4 I d3 612nSISTKI博毎腑囲庁申弗鼠:喜月日廳分):- IBej_zL-口O-0o o , oja.
25、10'AHIB *M3,"HTTT圖10電路圖仮復(fù)按"Fki選擇所調(diào)節(jié)的時(shí)象(年月目時(shí)分):.搖咼d dm .o ao o圖11鍵盤調(diào)節(jié)圖12調(diào)節(jié)鍵盤后致謝至此,關(guān)于畢業(yè)設(shè)計(jì)的所有內(nèi)容就介紹完了,系統(tǒng)的仿真電路和程序設(shè)計(jì)合 理。在整個(gè)設(shè)計(jì)過(guò)程中,充分發(fā)揮了人的主觀能動(dòng)性,自主學(xué)習(xí),學(xué)到了許多沒 學(xué)到的知識(shí)。程序編寫中,由于思路不清晰,開始時(shí)遇到了很多的問題,經(jīng)過(guò)靜 下心來(lái)思考查資料,和同學(xué)討論,理清了思路,完成對(duì)程序的編寫。通過(guò)設(shè)計(jì)提 高了對(duì)單片機(jī)的認(rèn)識(shí),進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作原理。通過(guò)實(shí)際程 序設(shè)計(jì)和調(diào)試,逐步掌握模塊化程序設(shè)計(jì)方法和調(diào)試技術(shù),提高軟件
26、設(shè)計(jì)、調(diào)試 能力;通過(guò)這次設(shè)計(jì)熟悉以單片機(jī)核心的應(yīng)用系統(tǒng)開發(fā)的全過(guò)程,掌握硬件電路 設(shè)計(jì)的基本方法和技術(shù),掌握相關(guān)電路參數(shù)的計(jì)算方法。最終較好的完成了設(shè)計(jì), 達(dá)到了預(yù)期的目的,完了最初的設(shè)想。但是由于時(shí)間和個(gè)人暫時(shí)的能力的原因, 整個(gè)系統(tǒng)看起來(lái)還是顯得非常的簡(jiǎn)單,只實(shí)現(xiàn)了一些最基本的功能,還有許多不 足和可以擴(kuò)展的地方。畢業(yè)設(shè)計(jì)的完成,為我的大學(xué)學(xué)習(xí)生活畫下了最后一筆。應(yīng)該感謝的人很多, 首先感謝學(xué)院給我們提供了一個(gè)展現(xiàn)自己的舞臺(tái),在長(zhǎng)江職業(yè)技術(shù)學(xué)院這個(gè)良好 的學(xué)習(xí)環(huán)境中,我們得到了很多鍛煉的機(jī)會(huì),使得我們的動(dòng)手能力和專業(yè)技能都 有了很大的提高。其次要感謝教單片機(jī)的鄧柳老師的悉心教導(dǎo)和全程負(fù)責(zé)
27、畢業(yè)報(bào) 告完成的陳卉老師,還有幫助我完成的學(xué)校電子競(jìng)賽組的同學(xué)。是你們?yōu)槲覄?chuàng)造 了良好的學(xué)習(xí)和完成畢業(yè)設(shè)計(jì)的環(huán)境,你們的支持和鼓勵(lì)使我對(duì)這次的設(shè)計(jì)完成 有了信心和動(dòng)力,使我能夠順利地完成課題的設(shè)計(jì)工作,在此向這些幫助我的人 致以誠(chéng)摯的謝意。最后,還要特別感謝我的父母,養(yǎng)育之恩,無(wú)以回報(bào),你們永 遠(yuǎn)健康快樂是我最大的心愿。正是在爸媽身體和精神的養(yǎng)育下才讓我得以全身心 投入學(xué)習(xí)和研究中,順利完成學(xué)業(yè)。即將踏上社會(huì)了,在人生的又一個(gè)十字路口上,我將帶著你們的期望和關(guān)懷, 在將來(lái)的工作崗位上勤奮實(shí)干,積極進(jìn)取,用優(yōu)異的成績(jī)來(lái)回報(bào)大家對(duì)我的關(guān)心 和幫助!參考文獻(xiàn)1彭偉 單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)例100例
28、電子工業(yè)出版社2009年5月;2 王文杰 許文斌 主編 單片機(jī)應(yīng)用技術(shù) 冶金工業(yè)出版社 2008 年 6 月; 3張福祥 C 語(yǔ)言程序設(shè)計(jì) 遼寧大學(xué)出版社 2007 年2月;4 郭天祥 十天學(xué)會(huì)單片機(jī) 哈爾濱工程大學(xué)出版社 2007 年 6月;附錄:主程序/ 名稱:用DS1302與1602LCC設(shè)計(jì)的可調(diào)式電子日歷與時(shí)鐘/ 說(shuō)明:本例會(huì)自動(dòng)調(diào)節(jié)合法日期時(shí)間,對(duì)于星期的調(diào)節(jié)會(huì)在/調(diào)整年月日時(shí)自動(dòng)完成,閏年問題也會(huì)自動(dòng)判斷。/#include <reg51.h>#include <string.h>#define uchar unsigned char#define uin
29、t unsigned intsbit SDA=P1A0; /DS1302 數(shù)據(jù)線sbit CLK=PM1; /DSB1302 時(shí)鐘線sbit RST=P1A2; /DS1302 復(fù)位線sbit RS=P2A0;/LCD寄存器選擇sbit RW=P2A1;/LCD讀/寫控制sbit EN=P2A2;/LCD啟用sbit K1=P3A4;/選擇sbit K2=P3A5;/加sbit K3=P3A6;/減sbit K4=P3A7;/確定uchar tCount=0;/ 一年中每個(gè)月的天數(shù),二月的天數(shù)由年份決定uchar MonthsDays=0,31,0,31,30,31,30,31,31,30,3
30、1,30,31;/周日,周一到周六0,1-6讀取DS1302時(shí)分別是1-7uchar *WEEK="SUN","MON","TUS","WEN","THU","FRI","SAT";/LCD 顯示緩沖uchar LCD_DSY_BUFFER1="DATE 00-00-00 ";uchar LCD_DSY_BUFFER2="TIME 00:00:00 ";uchar DateTime7; / 所讀取的日期時(shí)間char
31、Adjust_Index=-1; / 當(dāng)前調(diào)節(jié)的時(shí)間對(duì)象:秒,分,時(shí),日,月,年(0,1,2,3,4,6)(不調(diào)節(jié)秒周)寫數(shù)據(jù)的程序uchar Change_Flag="-MHDM-Y" / (分,時(shí),日,月,年)/延時(shí),向DS1302寫、讀一字節(jié)以及從 DS1302旨定位置度、/延時(shí)void DelayMS(uint x)uchar i;while(x-) for(i=0;i<120;i+);/向DS1302寫入一個(gè)字節(jié)void Write_A_Byte_TO_DS1302(uchar x) uchar i;for(i=0;i<8;i+)SDA=x&1
32、; CLK=1; CLK=0; x>>=1;/從DA1302讀取一字節(jié)uchar Get_A_Byte_FROM_DS1302() uchar i,b,t;for(i=0;i<8;i+)b>>=1;t=SDA;b|=t<<7;CLK=1;CLK=0;/BCD 碼轉(zhuǎn)換return b/16*10+b%16;/從DS1302旨定的位置讀數(shù)據(jù) uchar Read_Data(uchar addr) uchar dat;RST=0;CLK=0;RST=1;Write_A_Byte_TO_DS1302(addr);dat=Get_A_Byte_FROM_DS13
33、02();CLK=1;RST=0;return dat;/向DS1302某地址寫入數(shù)據(jù) void Write_DS1302(uchar addr,uchar dat) CLK=0;RST=1;Write_A_Byte_TO_DS1302(addr);Write_A_Byte_TO_DS1302(dat);CLK=0;RST=0;/ 設(shè)置時(shí)間 void SET_DS1302()uchar i;Write_DS1302(0x8E,0x00);/ 寫控制字,取消寫保護(hù) for(i=1;i<7;i+) / 分時(shí)日月年依次寫入/ 分的起始地址 10000010(0x82), 后面續(xù)依次是時(shí),日,月
34、,周,年, 寫入地址每次遞增 2Write_DS1302(0x80+ 2*i,(DateTimei/10<<4)|(DateTimei%10);Write_DS1302(0x8E,0x80);/ 加保護(hù)/ 讀取當(dāng)前日期時(shí)間/void GetTime()uchar i;for(i=0;i<7;i+)DateTimei=Read_Data(0x81+2*i);/1602LCD 的若干顯示控制代碼。/uchar Read_LCD_State()讀 LCD犬態(tài)uchar Read_LCD_State()uchar state;RS=0;RW=1;EN=1;DelayMS(1);sta
35、te=P0;EN=0;DelayMS(1);return state;/void LCD_Busy_Wait() 忙等待void LCD_Busy_Wait()while(Read_LCD_State()&0x80)=0x80);DelayMS(5);/void Write_LCD_Data(uchar dat) 向 LCD寫數(shù)據(jù)void Write_LCD_Data(uchar dat)LCD_Busy_Wait();RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0; /void Write_LCD_Command(uchar cmd)寫 LCD旨
36、令void Write_LCD_Command(uchar cmd)LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0; /void Init_LCD()LCD 初始化void Init_LCD()Write_LCD_Command(0x38);DelayMS(1);Write_LCD_Command(0x01);DelayMS(1);Write_LCD_Command(0x06);DelayMS(1);Write_LCD_Command(0x0c);DelayMS(1); /void Set_LCD_POS(uchar P)
37、設(shè)置液晶顯示位置 void Set_LCD_POS(uchar p)Write_LCD_Command(p|0x80);/在LCD上顯示字符串void Display_LCD_String(uchar p,uchar *s)uchar i;Set_LCD_POS(p);for(i=0;i<16;i+)Write_LCD_Data(si); DelayMS(1);/ 日期與時(shí)間值轉(zhuǎn)換為數(shù)字字符void Format_DateTime(uchar d,uchar *a)a0=d/10+'0'a1=d%10+'0'/ 判斷是否為閏年uchar isLeapYea
38、r(uint y)return(y%4=0&&y%100!=0)|(y%400=0);/ 求自 2000.1.1 開始的任何一天是星期幾/ 函數(shù)沒有通過(guò),求出總天數(shù)后再求星期幾,/ 因?yàn)榍罂偺鞌?shù)可能會(huì)超越 uint 的范圍。 void RefreshWeekDay()uint i,d,w=5;/ 已知 1999.12.31 是周五 for(i=2000;i<2000+DateTime6;i+) d=isLeapYear(i)?366:365; w=(w+d)%7;d=0;for(i=1;i<DateTime4;i+) d+=MonthsDaysi; d+=DateT
39、ime3;/保存星期,06表示星期日至周六,為了與 DS1302的星期格式匹配,返回值需 要加 1DateTime5=(w+d)%7+1;/void DateTime_Adjust(char x)switch(Adjust_Index)case 6:/ 年 00-99 if(x=1&&DateTime6<99) DateTime6+; if(x=-1&&DateTime6>0) DateTime6-;/ 獲取 2 月天數(shù) MonthsDays2=isLeapYear(2000+DateTime6)?29:28;/ 如果年份變化后當(dāng)前月份的天數(shù)大于上限
40、則設(shè)為上限 if(DateTime3>MonthsDaysDateTime4)DateTime3=MonthsDaysDateTime4;RefreshWeekDay();/ 刷新星期 break;case 4:/ 月 01-12 if(x=1&&DateTime4<12) DateTime4+; if(x=-1&&DateTime4>1) DateTime4-;/ 獲取 2 月天數(shù) MonthsDays2=isLeapYear(2000+DateTime6)?29:28;/ 如果月份變化后當(dāng)前月份的天數(shù)大于上限則設(shè)為上限 if(DateTim
41、e3>MonthsDaysDateTime4)DateTime3=MonthsDaysDateTime4; RefreshWeekDay();/ 刷新星期 break;case 3:/ 日 00-28/29/30/31 ;調(diào)節(jié)之前首先根據(jù)年份得出該年中 2 月的 天數(shù)MonthsDays2=isLeapYear(2000+DateTime6)?29:28; / 根據(jù)當(dāng)前月份決定調(diào)節(jié)日期的上限 if(x=1&&DateTime3<MonthsDaysDateTime4)DateTime3+;if(x=-1&&DateTime3>0) DateTime3-;RefreshWeekDay();/ 刷新星期break;case 2:/ 時(shí)if(x=1&&DateTime2<23) DateTime2+; if(x=-1&&DateTime2>0) DateTime2-; break;case 1:/ 分if(x=1&a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山西省安全員B證考試題庫(kù)附答案
- 2025年廣東水利電力職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)新版
- 2025年江蘇省安全員《C證》考試題庫(kù)
- 2025年湖北職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及答案1套
- 2025年福州英華職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及答案1套
- 知識(shí)的海洋企業(yè)成長(zhǎng)的基石
- 作者編劇合同范本
- 皮膚美白與嫩膚的醫(yī)學(xué)原理及實(shí)踐
- 民間還款合同范本
- 急診醫(yī)學(xué)知到智慧樹章節(jié)測(cè)試課后答案2024年秋杭州醫(yī)學(xué)院
- 班會(huì)課件:逆風(fēng)飛翔破繭成蝶-從《哪吒之魔童鬧?!房辞啻浩诘某砷L(zhǎng)與責(zé)任
- 2.1 堅(jiān)持依憲治國(guó) 教案 -2024-2025學(xué)年統(tǒng)編版道德與法治八年級(jí)下冊(cè)
- 【語(yǔ)文試卷+答案】2024-2025學(xué)年泉州高二上期末質(zhì)檢
- 《修繕定額講解》課件
- 大學(xué)學(xué)生宿舍管理員工作培訓(xùn)
- 初三物理常識(shí)試卷單選題100道及答案
- 浙江2024公務(wù)員考試真題及答案
- 高中英語(yǔ)新課程標(biāo)準(zhǔn)解讀課件
- 1.2《友邦驚詫論》教學(xué)設(shè)計(jì)-【中職專用】高二語(yǔ)文同步講堂(高教版2024·拓展模塊上冊(cè))
- 夢(mèng)中的婚禮鋼琴簡(jiǎn)譜(共6頁(yè))
- 新生兒心理的發(fā)生
評(píng)論
0/150
提交評(píng)論