OLED顯示時(shí)鐘_第1頁(yè)
OLED顯示時(shí)鐘_第2頁(yè)
OLED顯示時(shí)鐘_第3頁(yè)
OLED顯示時(shí)鐘_第4頁(yè)
OLED顯示時(shí)鐘_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、景德鎮(zhèn)學(xué)院畢業(yè)設(shè)計(jì)論文 論文題目:OLED顯示時(shí)鐘 學(xué) 系: 機(jī)械電子工程系 專 業(yè): 通信技術(shù) 班 級(jí): 11通信 班 學(xué)生姓名: 陳錫崗 學(xué) 號(hào): 201102040107 指導(dǎo)教師: 石長(zhǎng)華 2013年11月 9 日目 錄 【摘要】.3【緒論】 .3第1章 設(shè)計(jì)要求與方案論證.51.1 引言. .51.2 功能要求. .51.3方案論證.5 1.3.1技術(shù)可行性.5 1.3.2 單片機(jī)的選擇.6 1.3.3 顯示模塊的選擇.6 1.3.4總體方案論證與選擇.6第2章 系統(tǒng)硬件電路設(shè)計(jì) .72.1 電路設(shè)計(jì). .72.2 系統(tǒng)硬件概述.7 2.2.1 主控制器STC89C52RC.7 2.

2、2.2時(shí)鐘電路DS1302.9 2.2.3 OLED模塊.11第3章 系統(tǒng)的軟件設(shè)計(jì).123.1程序設(shè)計(jì). .133.2程序設(shè)計(jì)流程圖.13第四章 結(jié)束語(yǔ).13第五章 附錄.13附錄一(程序清單) .13 附錄二(電路原理圖). .50摘要隨著社會(huì)、科技的發(fā)展,人類得知時(shí)間,從觀太陽(yáng)、擺鐘到現(xiàn)在電子鐘,不斷研究、創(chuàng)新。為了在觀測(cè)時(shí)間,能夠了解與人類密切相關(guān)的信息,比如星期、日期等,電子時(shí)鐘誕生了,它集時(shí)間、日期、星期等功能于一身,具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。該電子時(shí)鐘主要采用STC89C52RC單片機(jī)作為主控核心,由DS

3、1302時(shí)鐘芯片提供時(shí)鐘、OOLED顯示屏顯示。STC89C52RC單片機(jī)是由Atmel公司推出的,功耗小,電壓可選用46V電壓供電;DS1302時(shí)鐘芯片是美國(guó)DALLAS公司推出的具有涓細(xì)電流充電功能的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長(zhǎng),誤差小;數(shù)字顯示是采用的OOLED顯示屏來(lái)顯示,可以同時(shí)顯示年、月、日、星期、時(shí)、分、秒和溫度等信息。此外,該電子時(shí)鐘還具有時(shí)間校準(zhǔn)等功能。關(guān)鍵詞:時(shí)鐘電路; 時(shí)鐘芯片DS1302;OOLED顯示屏; 單片機(jī)STC89C52RC; 緒論 隨著人們生活水平的提高和生活節(jié)奏的加

4、快,對(duì)時(shí)間的要求越來(lái)越高,精準(zhǔn)數(shù)字計(jì)時(shí)的消費(fèi)需求也是越來(lái)越多。二十一世紀(jì)的今天,最具代表性的計(jì)時(shí)產(chǎn)品就是電子時(shí)鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對(duì)穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時(shí)差從分級(jí)縮小到秒級(jí),代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時(shí)精度更高的石英電子鐘表,使鐘表的走時(shí)月差從分級(jí)縮小到秒級(jí)。第三次革命就是單片機(jī)數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用,使計(jì)時(shí)產(chǎn)品的走時(shí)日差從分級(jí)縮小到1/600萬(wàn)秒,從原有傳統(tǒng)指針計(jì)時(shí)的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動(dòng)日期、星期的顯示功能,它更符合消費(fèi)者的生活

5、需求!因此,電子時(shí)鐘的出現(xiàn)帶來(lái)了鐘表計(jì)時(shí)業(yè)界跨躍性的進(jìn)步我國(guó)生產(chǎn)的電子時(shí)鐘有很多種,總體上來(lái)說(shuō)以研究多功能電子時(shí)鐘為主,使萬(wàn)年歷除了原有的顯示時(shí)間,日期等基本功能外,還具有鬧鈴,報(bào)警等功能。商家生產(chǎn)的電子萬(wàn)年歷更從質(zhì)量,價(jià)格,實(shí)用上考慮,不斷的改進(jìn)電子時(shí)鐘的設(shè)計(jì),使其更加的具有市場(chǎng)。本設(shè)計(jì)為軟件,硬件相結(jié)合的一組設(shè)計(jì)。在軟件設(shè)計(jì)過(guò)程中,應(yīng)對(duì)硬件部分有相關(guān)了解,這樣有助于對(duì)設(shè)計(jì)題目的更深了解,有助于軟件設(shè)計(jì)?;镜囊私庖恍┲饕骷幕竟δ芎妥饔谩3瞬捎眉苫臅r(shí)鐘芯片外,還有采用MCU的方案,利用STC89系列單片微機(jī)制成電子電路,采用軟件和硬件結(jié)合的方法,控制OOLED顯示屏輸出,分別用

6、來(lái)顯示年、月、日、時(shí)、分、秒,其最大特點(diǎn)是:硬件電路簡(jiǎn)單,安裝方便易于實(shí)現(xiàn),軟件設(shè)計(jì)獨(dú)特,可靠。STC89C52RC是由ATMEL公司推出的一種小型單片機(jī)。95年出現(xiàn)在中國(guó)市場(chǎng)。其主要特點(diǎn)為采用Flash存貯器技術(shù),降低了制造成本,其軟件、硬件與MCS-51完全兼容,可以很快被中國(guó)廣大用戶接受。本文介紹了基于STC89C52RC單片機(jī)設(shè)計(jì)的電子時(shí)鐘。首先我們?cè)诰w論中簡(jiǎn)單介紹了單片機(jī)的發(fā)展與其在中低端領(lǐng)域中的優(yōu)勢(shì)以及課題的開(kāi)發(fā)意義;接著介紹了STC89C52RC單片機(jī)的硬件結(jié)構(gòu)和本畢業(yè)設(shè)計(jì)所要外擴(kuò)的OLED顯示及其驅(qū)動(dòng)方法,并在此基礎(chǔ)上實(shí)現(xiàn)了時(shí)鐘基本電路的設(shè)計(jì);然后使用單片機(jī)C語(yǔ)言進(jìn)行時(shí)鐘程序的

7、設(shè)計(jì),程序采用模塊化結(jié)構(gòu),使得邏輯關(guān)系簡(jiǎn)單明了,維護(hù)方便。 第1章 設(shè)計(jì)要求與方案論證1.1 引言 本文提出了一種基于STC89C52RC單片機(jī)的時(shí)鐘設(shè)計(jì)方案,本方案以STC89C52RC單片機(jī)作為主控核心,與時(shí)鐘芯片DS1302、按鍵、OLED顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有獨(dú)立按鍵和OLED顯示器,能顯示豐富的信息,根據(jù)使用者的需要可以隨時(shí)對(duì)時(shí)間進(jìn)行校準(zhǔn)、選擇時(shí)間等,綜上所述此電子時(shí)鐘具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。1.2功能要求本電子時(shí)鐘能動(dòng)態(tài)顯示年、月、日、星期、小時(shí)、分鐘、秒1.3方案論證 1.3

8、.1 技術(shù)可行性 隨著國(guó)內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā)展。集成技術(shù)的最新發(fā)展之一是將CPU和外圍芯片,如程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、并行I/O口、串行I/O口、定時(shí)/計(jì)數(shù)器、中斷控制器及其他控制部件集成在一個(gè)芯片之中,制成單片計(jì)算機(jī)(Single-Chip Microcomputer)。而近年來(lái)推出的一些高檔單片機(jī)還包括有許多特殊功能單元,如A/D、D/A轉(zhuǎn)換器、調(diào)制解調(diào)器、通信控制器、鎖相環(huán)、DMA、浮點(diǎn)運(yùn)算單元、PWM控制輸出單元、PWM輸出時(shí)的死區(qū)可編程控制功能等。因此,只要外加一些擴(kuò)展電路及必要的通道接口就可以構(gòu)成各種計(jì)算機(jī)應(yīng)用系統(tǒng),如工業(yè)流水線控制系統(tǒng)、作為家

9、用電器的主控制器、分布式控制系統(tǒng)的終端節(jié)點(diǎn)或作為其主控制節(jié)點(diǎn)起中繼的作用、數(shù)據(jù)采集系統(tǒng)、自動(dòng)測(cè)試系統(tǒng)等。單片機(jī)的出現(xiàn),并在各技術(shù)領(lǐng)域中得到如此迅猛的發(fā)展,與單片機(jī)構(gòu)成計(jì)算機(jī)應(yīng)用系統(tǒng)所形成的下述特點(diǎn)有關(guān): 1、單片機(jī)構(gòu)成的應(yīng)用系統(tǒng)有較大的可靠性。這些可靠性的獲得除了依靠單片機(jī)芯片本身的高可靠性以及應(yīng)用有最少的聯(lián)接外,還可以方便地采用軟、硬件技術(shù)。2、系統(tǒng)擴(kuò)展、系統(tǒng)配置較典型、規(guī)范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)有較高的軟、硬件利用系數(shù)。 3、由于構(gòu)成的應(yīng)用系統(tǒng)是一個(gè)計(jì)算機(jī)系統(tǒng),相當(dāng)多的測(cè)、控功能由軟件實(shí)現(xiàn),故具有柔性特征,不須改變硬件系統(tǒng)就能適當(dāng)?shù)馗淖兿到y(tǒng)功能。4、有優(yōu)異的性能、價(jià)格比。1

10、.3.2 單片機(jī)的選擇方案一:采用傳統(tǒng)的STC89C52RC作為電機(jī)的控制核心。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。方案二:采用FTC10F04單片機(jī),還帶有非易失性Flash程序存儲(chǔ)器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場(chǎng)應(yīng)用最多。其主要特點(diǎn)如下:8KB Flash ROM,可以擦除1000次以上,數(shù)據(jù)保存10年。由于本系統(tǒng)對(duì)CPU運(yùn)算速度要求很高,需要執(zhí)行很復(fù)雜的運(yùn)算,方案一成本比較低,適合做設(shè)計(jì),方案二運(yùn)算速度高,性能好,所以兩種方案都有可取之處。選用方

11、案一作為主方案,方案二作為備用方案。1.3.3 顯示模塊的選擇 方案一:使用液晶顯示屏顯示時(shí)間數(shù)字。 液晶顯示屏(LCD)具有輕薄短小、低耗電量、無(wú)輻射危險(xiǎn),平面直角顯示以及影象穩(wěn)定不閃爍等優(yōu)勢(shì),可視面積大,畫(huà)面效果好,分辨率高,抗干擾能力強(qiáng)等特點(diǎn)。但由于液晶是以點(diǎn)陣的模式顯示各種符號(hào),需要利用控制芯片創(chuàng)建字符庫(kù),編程工作量大,控制器的資源占用較多,其成本也偏高。在使用時(shí),不能有靜電干擾,否則易燒壞液晶的顯示芯片,不易維護(hù)。方案二:OLED,即有機(jī)發(fā)光二極管(Organic Light-Emitting Diode) ,又稱為有機(jī)電激光顯示(Organic Electroluminesence

12、 Display, OELD)具備輕薄、省電、超強(qiáng)兼容性、等特性,因此 OLED 屏幕卻具備了許多 LCD 不可比擬的優(yōu)勢(shì)。 目前 OLED 顯示屏廣泛用于手機(jī)、MP3、工控顯示設(shè)備上,具有亮度高、顯示精度高、功耗低等特點(diǎn)。 根據(jù)以上的論述,采用方案二。在本系統(tǒng)中,我們采用了八段四位一體數(shù)碼管串口的動(dòng)態(tài)顯示。1.3.4總體方案論證與選擇按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定系統(tǒng)由主控模塊、時(shí)控模塊、及顯示模塊和共3個(gè)模塊組成。主控芯片使用51系列STC89C52RC單片機(jī),時(shí)鐘芯片使用美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘DS1302。采用DS1302作為計(jì)時(shí)芯片,可以做到

13、計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小電流的后備電源(2.55.5V電源,再2.5V時(shí)耗電小于300nA),而且DS1302可以編程選擇多種充電電流來(lái)為后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。顯示模塊采用OLED有機(jī)發(fā)光二極管。第二章 系統(tǒng)硬件電路設(shè)計(jì)2.2系統(tǒng)硬件概述 2.2.1 主控制器STC89C52RC STC89C52RC單片機(jī)是宏晶科技推出的新一代高速、低功耗、超強(qiáng)抗干擾的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12時(shí)鐘、機(jī)器周期和6時(shí)鐘、機(jī)器周期可以任意選擇。 主要特性如下: 增強(qiáng)型8051單片機(jī),6時(shí)鐘、機(jī)器周期和12時(shí)鐘、機(jī)器周期可以任意選擇,指令代碼完全

14、兼容傳統(tǒng)8051單片機(jī)。 工作電壓:5.5V3.3V 工作頻率范圍:044MHz。 用戶應(yīng)用程序空間為8K字節(jié) 片上集成512字節(jié)RAM 通用I/O口32個(gè),復(fù)位后為:P1/P2/P3/P4是準(zhǔn)雙向口/弱上位,P0口是漏極開(kāi)路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為I/O口用時(shí),需加上拉電阻。 ISP(在系統(tǒng)可編程)/IAP(再應(yīng)用可編程),無(wú)需專用編程器,無(wú)需專用仿真器,可通過(guò)串口(RXD/P3.0,TXD/P3.1 )直接下載用戶程序,數(shù)秒即可完成一片。 具有EEPROM功能 具有看門(mén)狗功能 共3個(gè)16位定時(shí)器/計(jì)數(shù)器。及定時(shí)器T0、T1、T2 外部中斷4路,下降沿中斷或低電平觸發(fā)電路

15、,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒 通用異步串行口(UART),還可用定時(shí)器實(shí)現(xiàn)多個(gè)UART 工作溫度范圍:-40+85度(工業(yè)級(jí))/075度(商業(yè)級(jí)) PDIP封裝2.2.2時(shí)鐘電路DS1302 DS1302的性能特性: 實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行比較; 用于高速數(shù)據(jù)暫存的31*8位RAM; 最少引腳的串行I/O; 2.55.5V電壓工作范圍; 2.5V時(shí)耗小于300nA; 用于時(shí)鐘或RAM數(shù)據(jù)讀/寫(xiě)的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式; 簡(jiǎn)單的三線接口; 可選的慢速充電(至Vcc1)的能力。DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始

16、化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問(wèn)到。在開(kāi)始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫(xiě)操作時(shí)寫(xiě)入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過(guò)程中置RST腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS1302的控制字如表所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到DS1302中。位6

17、如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1則表示存取RAM數(shù)據(jù)。位51(A4A0)指示操作單元的地址。最低有效位(位0)如果為0,則表示藥進(jìn)行寫(xiě)操作;為1表示進(jìn)行讀操作。控制字節(jié)總是從最低位開(kāi)始輸入/輸出。為了提高對(duì)32個(gè)地址尋址能力(地址/命令位15=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址931或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開(kāi)始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫(xiě)RAM時(shí),為了傳送數(shù)據(jù)不必寫(xiě)所有的31字節(jié),不管是否謝了全部3

18、1字節(jié),所寫(xiě)的每一字節(jié)都將傳送至RAM。表2.1 DS1302控制字 DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字如上表所示,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作。時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì)DS1302進(jìn)行寫(xiě)操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開(kāi)始啟動(dòng)。 AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(2023h)。DS130

19、2的晶振選用32768Hz,電容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。2.2.3 OLED顯示模塊OLED 模塊采用 4 線 SPI 操作,黃藍(lán)雙色屏和藍(lán)色屏操作相同。管腳從左到右定義為:GND: 電源地VCC: 供電電源 3.3V、5V 都可以D0: CLK 時(shí)鐘D1: MOSI 數(shù)據(jù)RES: 復(fù)位DC: 數(shù)據(jù)/命 第3章 系統(tǒng)的軟件設(shè)計(jì)3.1 程序設(shè)計(jì)電子時(shí)鐘的程序主要包括3個(gè)方面的內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計(jì)數(shù),二是利用按鍵進(jìn)行時(shí)間的調(diào)整,三是單片機(jī)中讀取DS1302中的數(shù)據(jù)驅(qū)動(dòng)OLED數(shù)碼管顯示時(shí)間。STC89C52RC單片機(jī)主要I/O

20、口的分配:P10、P11、P12分別接時(shí)鐘芯片的SCLK、I/O、RST引腳,P13、P14、P15、P16接四個(gè)獨(dú)立按鍵。 第4章 結(jié)束語(yǔ)2013年10月,我開(kāi)始了我的畢業(yè)論文工作,時(shí)至今日,論文基本完成。從最初的茫然,到慢慢的進(jìn)入狀態(tài),再到對(duì)思路逐漸的清晰,整個(gè)寫(xiě)作過(guò)程難以用語(yǔ)言來(lái)表達(dá)。歷經(jīng)了一個(gè)多月的奮戰(zhàn),緊張而又充實(shí)的畢業(yè)設(shè)計(jì)終于落下了帷幕?;叵脒@段日子的經(jīng)歷和感受,我感慨萬(wàn)千,在這次畢業(yè)設(shè)計(jì)的過(guò)程中,我擁有了無(wú)數(shù)難忘的回憶和收獲。當(dāng)我終于完成了所有打字、繪圖、排版、校對(duì)的任務(wù)后整個(gè)人都很累,但同時(shí)看著電腦熒屏上的畢業(yè)設(shè)計(jì)稿件我的心里是甜的,我覺(jué)得這一切都值了。這次畢業(yè)論文的制作過(guò)程是

21、我的一次再學(xué)習(xí),再提高的過(guò)程。在論文中我充分地運(yùn)用了大學(xué)期間所學(xué)到的知識(shí)。我不會(huì)忘記這難忘的幾個(gè)月的時(shí)間。畢業(yè)論文的制作給了我難忘的回憶。在我徜徉書(shū)海查找資料的日子里,面對(duì)無(wú)數(shù)書(shū)本的羅列,最難忘的是每次找到資料時(shí)的激動(dòng)和興奮;親手用Protel DXP設(shè)計(jì)電路圖的時(shí)間里,記憶最深的是每一步小小思路實(shí)現(xiàn)時(shí)那幸福的心情;為了論文我曾趕稿到深夜,但看著親手打出的一字一句,心里滿滿的只有喜悅毫無(wú)疲憊。這段旅程看似荊棘密布,實(shí)則蘊(yùn)藏著無(wú)盡的寶藏。我從資料的收集中,掌握了很多單片機(jī)及其接口應(yīng)用的知識(shí),讓我對(duì)我所學(xué)過(guò)的知識(shí)有所鞏固和提高,并且讓我對(duì)當(dāng)今單片機(jī)的最新發(fā)展技術(shù)有所了解。在整個(gè)過(guò)程中,我學(xué)到了新知

22、識(shí),增長(zhǎng)了見(jiàn)識(shí)。在今后的日子里,我仍然要不斷地充實(shí)自己,爭(zhēng)取在所學(xué)領(lǐng)域有所作為。腳踏實(shí)地,認(rèn)真嚴(yán)謹(jǐn),實(shí)事求是的學(xué)習(xí)態(tài)度,不怕困難、堅(jiān)持不懈、吃苦耐勞的精神是我在這次設(shè)計(jì)中最大的收益。我想這是一次意志的磨練,是對(duì)我實(shí)際能力的一次提升,也會(huì)對(duì)我未來(lái)的學(xué)習(xí)和工作有很大的幫助。在這次畢業(yè)設(shè)計(jì)中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽(tīng)聽(tīng)不同的看法對(duì)我們更好的理解知識(shí),所以在這里非常感謝幫助我的同學(xué)。在此更要感謝我的指導(dǎo)老師和同學(xué),是你們的細(xì)心指導(dǎo)和關(guān)懷,使我能夠順利的完成畢業(yè)論文。在此我要向石老師致以最衷心的感謝和敬意。程序 /main.c/#include reg

23、52.h#include oled.h#include DS1302.h #define uchar unsigned char #define uint unsigned int uchar hour,minute,second,year,mooth,day,week;VOID MAIN_OLED_Display(VOID); /OLED顯示函數(shù)VOID TIME_OLED_Display(VOID); /OLED顯示時(shí)間函數(shù)VOID DAY_OLED_Display(VOID); /OLED顯示日期函數(shù)VOID MAIN_TIME_Delay(USHORT16 usTime); /延時(shí)函數(shù)

24、VOID main(void) OLED_Init(); /ModifyTime(13,11,3,10,42,10); /初始化DS3231時(shí)鐘,2013/11/2,09/20/30 InitDS1302(); /燒寫(xiě)一次時(shí)間初值即可,以后只要讀出時(shí)間 MAIN_OLED_Display();/每次開(kāi)機(jī)先用漢字顯示設(shè)計(jì)者信息 while(1) GetTime_DS1302(); /調(diào)用后能一次讀出DS3231中數(shù)據(jù)放在數(shù)組DS3231_buf中 TIME_OLED_Display();/顯示當(dāng)前時(shí)間 DAY_OLED_Display(); /OLED在指定位置顯示當(dāng)前日期 return;/OL

25、ED顯示時(shí)間函數(shù)VOID TIME_OLED_Display(VOID)hour=TableDs13022; /GPS或時(shí)鐘芯片讀取時(shí)間放在此變量中minute=TableDs13021; /GPS或時(shí)鐘芯片讀取時(shí)間放在此變量中second=TableDs13020; /GPS或時(shí)鐘芯片讀取時(shí)間放在此變量中OLED_P16x32Image(0, 0, hour/10);/大字體顯示小時(shí)十位值OLED_P16x32Image(16, 0, hour%10);/大字體顯示小時(shí)個(gè)位值OLED_P16x32Image(32, 0, 10); /顯示大字體冒號(hào)OLED_P16x32Image(48, 0

26、, minute/10);/大字體顯示分鐘十位值OLED_P16x32Image(64, 0, minute%10);/大字體顯示分鐘個(gè)位值OLED_P6x8Char(80,3,second/10+0);/小字體顯示秒鐘十位值OLED_P6x8Char(88,3,second%10+0);/小字體顯示秒鐘個(gè)位值/OLED顯示日期函數(shù)VOID DAY_OLED_Display(VOID)year=TableDs13026; /GPS或時(shí)鐘芯片讀取時(shí)間放在此變量中mooth=TableDs13024; /GPS或時(shí)鐘芯片讀取時(shí)間放在此變量中day=TableDs13023; /GPS或時(shí)鐘芯片讀取

27、時(shí)間放在此變量中OLED_P8x16char(0, 5, 2+0);OLED_P8x16char(8, 5, 0+0);OLED_P8x16char(16, 5, year/10+0);OLED_P8x16char(24, 5, year%10+0);/顯示20*年OLED_P8x16char(32, 5, -); /分隔標(biāo)記OLED_P8x16char(40, 5, mooth/10+0);OLED_P8x16char(48, 5, mooth%10+0);/顯示月OLED_P8x16char(56, 5, -); /OLED_P8x16char(64, 5, day/10+0);/顯示日期

28、OLED_P8x16char(72, 5, day%10+0);VOID MAIN_OLED_Display(VOID) USHORT16 i; OLED_P14x16Str(32, 0, (UCHAR8*)景德鎮(zhèn)學(xué)院); OLED_P14x16Str(16, 1, (UCHAR8*)機(jī)械電子工程系); for (i = 0; i 0; i-) for(j = 110; j 0; j-) return;/main.c/ / Ds1302.c/#include#define uchar unsigned char#define uint unsigned intsbit rst=P12;sbit

29、 dat=P11;sbit clk=P10;void ds1302_write(char comm,char dat1)char temp,t;rst=0;clk=0;rst=1;temp=comm;for(t=0;t1);clk=0;temp=dat1;for(t=0;t1;clk=0;rst=0;uchar ds1302_read(char comm)char temp,t;rst=0;clk=0;rst=1;temp=comm;for(t=0;t1;clk=0;temp=0;/00000000 for(t=0;t1;if(dat=1)temp=temp|0x80;else temp=te

30、mp&0x7f;clk=1;clk=0;rst=0;return temp;/Ds1302.c/#ifndef _DS1302_H_#define _DS1302_H_/DS1302管腳定義sbit T_CLK=P05; /位定義1302芯片的接口,根據(jù)時(shí)鐘芯片與單片機(jī)實(shí)際連接進(jìn)行修改sbit T_IO=P06; /位定義1302芯片的接口,根據(jù)時(shí)鐘芯片與單片機(jī)實(shí)際連接進(jìn)行修改sbit T_RST=P07; /位定義1302芯片的接口,根據(jù)時(shí)鐘芯片與單片機(jī)實(shí)際連接進(jìn)行修改unsigned char TableDs13027=55,59, 23, 4, 3, 5, 11; /初始化時(shí)時(shí)間日期設(shè)置

31、,由使用者進(jìn)行修 /秒 分 時(shí) 日 月 星期 年/DS1302頭文件中所有函數(shù)聲明(7個(gè))void Delay1Us(unsigned int k);void Write1302(unsigned char );/向1302寫(xiě)一個(gè)字節(jié)數(shù)據(jù)void WriteSet1302(unsigned char ,unsigned char );/根據(jù)命令字,向1302寫(xiě)一個(gè)字節(jié)數(shù)據(jù)unsigned char Read1302(void);/從1302讀一個(gè)字節(jié)數(shù)據(jù)unsigned char ReadSet1302(unsigned char Cmd);/根據(jù)命令字從1302讀取一個(gè)字節(jié)數(shù)據(jù)void In

32、itDS1302(void);/初始化1302 ,同時(shí)會(huì)將數(shù)組TableDs1302中初始值寫(xiě)入到時(shí)鐘芯片內(nèi)void GetTime_DS1302(void);/獲取1302的時(shí)間void Delay1Us(unsigned int k)unsigned int i;for(i=0;ik;i+);/*函數(shù)功能:向1302寫(xiě)一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):x*/ void Write1302(unsigned char dat) unsigned char i; T_CLK=0; /拉低T_CLK,為脈沖上升沿寫(xiě)入數(shù)據(jù)做好準(zhǔn)備 Delay1Us(2); /稍微等待,使硬件做好準(zhǔn)備 for(i=0;i=1;

33、 /將dat的各數(shù)據(jù)位右移1位,準(zhǔn)備寫(xiě)入下一個(gè)數(shù)據(jù)位 void WriteSet1302(unsigned char Cmd,unsigned char dat)T_RST=0; /禁止數(shù)據(jù)傳遞 T_CLK=0; /確保寫(xiě)數(shù)居前T_CLK被拉低T_RST=1; /啟動(dòng)數(shù)據(jù)傳輸Delay1Us(2); /稍微等待,使硬件做好準(zhǔn)備Write1302(Cmd); /寫(xiě)入命令字Write1302(dat/104)|(dat%10); /寫(xiě)數(shù)據(jù)T_CLK=1; /將時(shí)鐘電平置于已知狀態(tài)T_RST=0; /禁止數(shù)據(jù)傳遞unsigned char Read1302(void) unsigned char i

34、,dat;Delay1Us(2); /稍微等待,使硬件做好準(zhǔn)備for(i=0;i=1; if(T_IO=1) /如果讀出的數(shù)據(jù)是1dat|=0x80; /將1取出,寫(xiě)在dat的最高位 T_CLK=1; /將T_CLK置于高電平,為下降沿讀出Delay1Us(2); /稍微等待T_CLK=0; /拉低T_CLK,形成脈沖下降沿Delay1Us(2); /稍微等待 return dat; /將讀出的數(shù)據(jù)返回 unsigned char ReadSet1302(unsigned char Cmd)unsigned char temp,dat1,dat2; T_RST=0; /拉低T_RST T_CL

35、K=0; /確保寫(xiě)數(shù)居前T_CLK被拉低 T_RST=1; /啟動(dòng)數(shù)據(jù)傳輸 Write1302(Cmd); /寫(xiě)入命令字 temp=Read1302(); /讀出數(shù)據(jù) T_CLK=1; /將時(shí)鐘電平置于已知狀態(tài) T_RST=0; /禁止數(shù)據(jù)傳遞dat1=temp/16; /16進(jìn)制轉(zhuǎn)成BCDdat2=temp%16;temp=dat1*10+dat2; /轉(zhuǎn)換成10進(jìn)制數(shù)字 return (temp); /將讀出的數(shù)據(jù)返回/*函數(shù)功能: 1302進(jìn)行初始化設(shè)置*/ void InitDS1302(void)unsigned char i,add;add=0x80;WriteSet1302(0x

36、8e,0x00); /允許寫(xiě)入for(i=0;i7;i+)WriteSet1302(add,TableDs1302i); add+=2; WriteSet1302(0x90,0xa6); /寫(xiě)充電控制寄存器.WriteSet1302(0x8e,0x80); /禁止寫(xiě)入/*程序功能:獲取DS1302時(shí)間*/void GetTime_DS1302()unsigned char i,add=0x81;WriteSet1302(0x8e,0x00); /允許向DS1302寫(xiě)入數(shù)據(jù)for(i=0;i7;i+) TableDs1302i=ReadSet1302(add); /獲得的數(shù)據(jù)已轉(zhuǎn)換為十進(jìn)制 ad

37、d+=2;WriteSet1302(0x8e,0x80); /獲取完一次時(shí)間,禁止向DS1302寫(xiě)入數(shù)據(jù),提高可靠#endif /OLED.h/#ifndef _OLED_H_#define _OLED_H_#include /#include OLED.h#define OLED_IMAGE_WHITE 1#define OLED_IMAGE_BLACK 0#define OLED_MAX_ROW_NUM 64#define OLED_MAX_COLUMN_NUM 128#ifndef VOID #define VOID void#endif /* VOID */#ifndef UCHAR8

38、 #define UCHAR8 unsigned char#endif /* UCHAR8 */#ifndef CHAR8 #define CHAR8 char #endif /* CHAR8 */#ifndef USHORT16 #define USHORT16 unsigned short#endif /* USHORT16 */#ifndef SHORT16 #define SHORT16 short#endif /* SHORT16 */#ifndef ULONG32 #define ULONG32 unsigned long int #endif /* ULONG32 */#ifnd

39、ef LONG32 #define LONG32 long int#endif /* LONG32 */#ifndef ULONG64 #define ULONG64 unsigned long long int#endif /* ULONG64 */#ifndef LONG64 #define LONG64 long long int#endif /* LONG64 */#ifndef TRUE #define TRUE 1#endif /* TRUE */#ifndef FALSE #define FALSE 0#endif /* FALSE */sbit OLED_SCL = P10;

40、/OLED電路板上D0腳接51單片機(jī)P1.0sbit OLED_SDA = P11; /OLED電路板上D1腳接51單片機(jī)P1.1sbit OLED_RST = P12; /OLED電路板上RST腳接51單片機(jī)P1.2sbit OLED_DC = P13; /OLED電路板上DC腳接51單片機(jī)P1.3const UCHAR8 code Big_NUMBR64=/*- 調(diào)入了一幅圖像:陰碼、列行式、逆向1632點(diǎn)陣 -*/*- 寬度x高度=16x32 數(shù)字0 -*/ 0x00,0xF8,0xF4,0xEC,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xCC,

41、0xF4,0xF8,0x00,0x00,0xFF,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x7F,0xFF,0x00,0x00,0xFE,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0xFE,0x00,0x00,0x5F,0x6F,0x77,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x6F,0x5F,0x3F,0x00,/*數(shù)字0.BMP,0*/, 0x00,0x00,0x00,0x00,0x00,0x00,

42、0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x3F,0x00,/*數(shù)字1.BMP,

43、1*/,0x00,0x04,0x0C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xCC,0xF4,0xF8,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xBF,0x7F,0xFF,0x00,0x00,0xFE,0xFD,0xFB,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x00,0x00,0x5F,0x6F,0x77,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0

44、x70,0x70,0x60,0x40,0x00,/*數(shù)字2.BMP,2*/,0x00,0x04,0x0C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xEC,0xF4,0xF8,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xBF,0x7F,0xFF,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFB,0xFD,0xFE,0x00,0x00,0x40,0x60,0x70,0x

45、70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x6F,0x5F,0x3F,0x00,/*數(shù)字3.BMP,3*/,0x00,0xFC,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0xF8,0x00,0x00,0xFF,0x7F,0xBF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xBF,0x7F,0xFF,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFB,0xFD,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x3F,0x00,/*數(shù)字4.BMP,4*/,0x00,0xF8,0xF4,0xEC,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x0C

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論