實時日歷和時鐘顯示單片機畢業(yè)設(shè)計_第1頁
實時日歷和時鐘顯示單片機畢業(yè)設(shè)計_第2頁
實時日歷和時鐘顯示單片機畢業(yè)設(shè)計_第3頁
實時日歷和時鐘顯示單片機畢業(yè)設(shè)計_第4頁
實時日歷和時鐘顯示單片機畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、廣東xx大學(xué)2012屆畢業(yè)設(shè)計 廣東科貿(mào)職業(yè)學(xué)院 2012 屆學(xué)生畢業(yè)論文/設(shè)計題 目: _姓 名: _系 別: _專 業(yè): _班 級: _指導(dǎo)老師: _ _ _ _ _ 日 期: _獨 創(chuàng) 性 聲 明 本人聲明所呈交的畢業(yè)論文(設(shè)計)是本人在指導(dǎo)教師指導(dǎo)下進行的研究工作及取得的研究成果。據(jù)我所知,除了文中特別加以標(biāo)注和致謝的地方外,論文(設(shè)計)中不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得廣東科貿(mào)職業(yè)學(xué)院或其他教育機構(gòu)的證書而使用過的材料。與我一同工作的同志對本論文(設(shè)計)所做的任何貢獻均已在論文中作了明確的說明并表示謝意。論文(設(shè)計)作者簽名: 簽字日期: 年 月 日摘要本設(shè)計是

2、基于51系列的單片機進行的實時日歷和時鐘顯示設(shè)計,可以顯示年月日時分秒及周信息,具有可調(diào)整日期和時間功能。在設(shè)計的同時對單片機的理論基礎(chǔ)和外圍擴展知識進行了比較全面準(zhǔn)備。實時日歷和時鐘顯示的設(shè)計過程在硬件與軟件方面進行同步設(shè)計。硬件部分主要由at89s52單片機,led顯示電路,以及調(diào)時按鍵電路等組成,系統(tǒng)通過led顯示數(shù)據(jù),所以具有人性化的操作和直觀的顯示效果。軟件方面主要包括時鐘程序、鍵盤程序,顯示程序等。本系統(tǒng)以單片機的匯編語言進行軟件設(shè)計,為了便于擴展和更改,軟件的設(shè)計采用模塊化結(jié)構(gòu),使程序設(shè)計的邏輯關(guān)系更加簡潔明了,以便更簡單地實現(xiàn)調(diào)整時間及日期顯示功能。所有程序編寫完成后,在wav

3、e軟件中進行調(diào)試,確定沒有問題后,在proteus軟件中嵌入單片機內(nèi)進行仿真。關(guān)鍵詞:at89s52; ds1302; led51目 錄1.前 言12.設(shè)計方案論證22.1功能要求22.2方案確定22.2.1單片機芯片的選擇方案和論證22.2.2顯示模塊選擇方案和論證32.2.3時鐘芯片的選擇方案和論證32.2.4電路設(shè)計最終方案確定33.主控制器和外圍器件43.1at89s52單片機43.2 ds1302時鐘芯片43.2.1 ds1302芯片介紹43.2.2ds1302 的應(yīng)用83.3數(shù)碼管led83.4譯碼器74hc13893.5鎖存器74ls24494.硬件設(shè)計104.1電路設(shè)計框圖10

4、4.2系統(tǒng)概述104.3電源設(shè)計104.4單片機的復(fù)位電路114.5單片機系統(tǒng)的晶振電路114.6主電路設(shè)計125.軟件設(shè)計135.1主程序設(shè)計135.2鍵盤子程序設(shè)計145.3日歷時鐘子程序設(shè)計165.4顯示子程序設(shè)計186.系統(tǒng)調(diào)試186.1軟件調(diào)試187.結(jié)論19致 謝21參考文獻22附錄23附錄硬件電路圖23附錄主程序源代碼24-1.前 言在日新月異的21世紀(jì)里,家用電子產(chǎn)品得到了迅速發(fā)展。許多家電設(shè)備都趨于人性化、智能化,這些電器設(shè)備大部分都含有cpu控制器或者是單片機。單片機以其高可靠性、高性價比、低電壓、低功耗等一系列優(yōu)點,近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng)、

5、通訊設(shè)備、日常消費類產(chǎn)品和玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個環(huán)節(jié)以及人民生活的各個方面,如車間流水線控制、自動化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。用單片機來控制的小型家電產(chǎn)品具有便攜實用,操作簡單的特點。時鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計出新型時鐘。現(xiàn)今,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用

6、集成電路計時時,譯碼代替機械式傳動,用led顯示器代替顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn),在對時間

7、精度要求很高的情況下,通常采用這種方法,典型的時鐘芯片有:ds1302,ds12887,x1203等都可以滿足高精度的要求。本文設(shè)計的日歷和時鐘的顯示廣泛用于小型智能家用電子產(chǎn)品,如電子鐘。利用單片機進行控制,實時時鐘芯片ds1302進行記時,外加掉電存儲電路和顯示電路,可實現(xiàn)時間的調(diào)整和顯示。電子鐘既可廣泛應(yīng)用于家庭,也可應(yīng)用于銀行、郵電、賓館、醫(yī)院、學(xué)校、企業(yè)、商店等相關(guān)行業(yè)的大廳,以及單位會議室、門衛(wèi)等場所。因而,此設(shè)計具有相當(dāng)重要的現(xiàn)實意義和實用價值。2.設(shè)計方案論證2.1功能要求1、能顯示年、月、日、時、分、秒、星期2、能對時間進行手動修正3、采用24小時制4、使用led顯示時間參數(shù)

8、5、上電后,電子鐘顯示“2010年 1月 1日” “1時 1分 1秒 星期1”對時,分,秒,日,月,年高位為0時做消隱處理,只顯示單個數(shù)字以增強其可讀性。2.2方案確定2.2.1單片機芯片的選擇方案和論證方案一: 采用89c51芯片作為硬件核心,采用flash rom,內(nèi)部具有4kb rom 存儲空間,能于3v的超低壓工作,而且與mcs-51系列單片機完全兼容,但是運用于電路設(shè)計中時由于不具備isp在線編程技術(shù), 當(dāng)在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次拔插會對芯片造成一定的損壞。方案二:采用at89s52,片內(nèi)rom全都采用flash rom;能

9、以3v的超底壓工作;同時也與mcs-51系列單片機完全該芯片內(nèi)部存儲器為8kb rom 存儲空間,同樣具有89c51的功能,且具有在線編程可擦除技術(shù),當(dāng)在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞。所以選擇采用at89s52作為主控制系統(tǒng).2.2.2顯示模塊選擇方案和論證方案一:采用led液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價格昂貴,需要的接口線多,所以在此設(shè)計中不采用led液晶顯示屏。方案二:采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適

10、合,如采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示。方案三:采用led數(shù)碼管動態(tài)掃描,led數(shù)碼管價格適中,對于顯示數(shù)字最合適,而且采用動態(tài)掃描法與單片機連接時,占用的單片機口線少。所以采用了led數(shù)碼管作為顯示。2.2.3時鐘芯片的選擇方案和論證方案一:直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。方案二:采用ds1302時鐘芯片實現(xiàn)時鐘,ds1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,

11、位的ram做為數(shù)據(jù)暫存區(qū),工作電壓2.5v5.5v范圍內(nèi),2.5v時耗電小于300na.2.2.4電路設(shè)計最終方案確定綜上各方案所述,對此次作品的方案選定: 以單片機at89s52為主控制器,時間數(shù)據(jù)是通過時鐘芯片ds1302來讀取,并通過led數(shù)碼管顯示出來,并用鍵盤來完成對當(dāng)前時間的調(diào)整。3.主控制器和外圍器件3.1at89s52單片機at89s52是一種低功耗、高性能cmos 8位微控制器,使用 atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80c51產(chǎn)品指令和引腳完全兼容。并具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,256字節(jié)ram,32 位i/o 口線,看門狗定時器,2 個數(shù)據(jù)指

12、針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,at89s52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu停止工作,允許ram、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。3.2 ds1302時鐘芯片3.2.1 ds1302芯片介紹低功耗時鐘芯片ds1302可以對年、月、日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。ds1302用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點的記錄上,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄。這

13、種記錄對長時間的連續(xù)測控系統(tǒng)結(jié)果的分析以及對異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義。采用ds1302作為記錄測控系統(tǒng)中的數(shù)據(jù)記錄,其軟硬件設(shè)計簡單,時間記錄準(zhǔn)確,既避免了連續(xù)記錄的大工作量,又避免了定時記錄的盲目性,給連續(xù)長時間的測量、控制系統(tǒng)的正常運行及檢查都來了很大的方便,可廣泛應(yīng)用于長時間連續(xù)的測控系統(tǒng)中。在測量控制系統(tǒng)中,特別是長時間無人職守的測控系統(tǒng)中,經(jīng)常需要記錄某些具有特殊意義的數(shù)據(jù)及其出現(xiàn)的時間。記錄及分析這些特殊意義的數(shù)據(jù),對測控系統(tǒng)的性能分析及正常運行具有重要的意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時采樣或定時采樣,沒有具體的時間記錄,因此只能記錄數(shù)據(jù)而無法準(zhǔn)確記錄其出現(xiàn)的時間;若采用單

14、片機計時,一方面需要采用計數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費單片機的資源,而且某些測控系統(tǒng)可能不允許。而在系統(tǒng)中采用ds1302則能很好地解決這個問題。 ds1302的性能特性實時時鐘,可對秒、分、時、日、周、月以及帶閏年補償?shù)哪赀M行計數(shù);用于高速數(shù)據(jù)暫存的318位ram;最少引腳的串行i/o;2.55.5v 電壓工作范圍;2.5v時耗電小于300na;用于時鐘或ram數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;簡單的3線接口;可選的慢速充電(至vcc1)的能力。ds1302時鐘芯片包括實時時鐘/日歷和31字節(jié)的靜態(tài)ram。它經(jīng)過一個簡單的串行接口與微處理器通信

15、。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月和月末的日期自動進行調(diào)整,還包括閏年校正的功能。時鐘的運行可以采用24h或帶am(上午)/pm(下午)的12h格式。采用三線接口與cpu進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。ds1302有主電源/后備電源雙電源引腳:vcc1 在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;vcc2在雙電源系統(tǒng)中提供主電源,在這種運用方式中,vcc1 連接到備份電源,以便在沒有主電源的情況下能保存時間信息以及數(shù)據(jù)。ds1302由vcc1或vcc2中較大者供電。當(dāng)vcc2大于vcc1+0.2v時,

16、vcc2給ds1302供電;當(dāng)vcc2小于vcc1時,ds1302由vcc1供電。ds1302數(shù)據(jù)操作原理ds1302在任何數(shù)據(jù)傳送時必須先初始化,把rst腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在sclk的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個寄存器中哪個被訪問到。在開始8個時鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時鐘周期在讀操作時輸出數(shù)據(jù),在寫操作時寫入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達248字節(jié)數(shù)。圖3-1 ds1302管腳圖如果在傳送過程中置rst為低電平,則會終止本次數(shù)據(jù)傳送,并且i/o引腳變?yōu)楦咦?/p>

17、態(tài)。上電運行時,在vcc =2.5v之前,rst腳必須保持低電平。只有在sclk為低電平時,才能將rst置為高電平。ds1302的管腳圖如圖3-1所示,表3-2為各引腳的功能。引腳號引腳名稱功能1vcc2主電源2,3x1,x2振蕩源,外接32768hz晶振4gnd地線5rst復(fù)位/片選線6i/o串行數(shù)據(jù)輸入/輸出端(雙向)7sclk串行時鐘輸入端8vcc1后備電源表3-2 ds1302引腳功能表ds1302的控制字如圖3-3所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1;如果它為邏輯0,則不能把數(shù)據(jù)寫入到ds1302中。位6如果為0,則表示存取日歷時鐘數(shù)據(jù);為1表示存取ram數(shù)據(jù)。位51(a4

18、a0)指示操作單元的地址。最低有效位(位0)如為0,表示要進行寫操作;為1表示進行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。圖3-3 控制字節(jié)的含義為了提高對32個地址的尋址能力(地址/命令位15邏輯1),可以把時鐘/日歷或ram寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時鐘或ram,而位0規(guī)定讀或?qū)?。在時鐘/日歷寄存器中的地址931或ram寄存器中的地址31不能存儲數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個寄存器。但是,當(dāng)以多字節(jié)方式寫ram時,為了傳送數(shù)據(jù)不必寫所有31字節(jié)。不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至ram。數(shù)據(jù)讀寫程序如

19、圖3-4所示。sclkkrsti/o571357210246046r/ca2a3a0a1r/wa41datai/obytedatai/obyte圖3-4數(shù)據(jù)讀寫程序ds1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式,其日歷、時間寄存器及其控制字見表3-5,其中奇數(shù)為讀操作,偶數(shù)為寫操作。寄存器命令碼數(shù)據(jù)范圍寄存器中各位的內(nèi)容名稱地址寫讀76543210秒00h80h81h0059ch秒數(shù)據(jù)分01h82h83h00590分?jǐn)?shù)據(jù)時02h84h85h0112或002312/24010/ap時數(shù)據(jù)日03h86h87h0128,2930,3100日數(shù)據(jù)月04h88

20、h89h0112000月數(shù)據(jù)星期05h9ah8bh010700000星期數(shù)據(jù)年06h8ch8dh0099年數(shù)據(jù)多字節(jié)讀寫behbfh表3-5 片內(nèi)時鐘數(shù)據(jù)寄存器3.2.2ds1302 的應(yīng)用實時時鐘芯片ds1302采用串行數(shù)據(jù)傳輸,可為掉電保護電源提供可編程的充電功能,也可以關(guān)閉充電功能,芯片采用32768hz晶振。要特別說明的是,備用電源bt1可以用電池或超級電容(10萬f以上)。雖然ds1302在主電源掉電后耗電很小,但如果要長時間保證時鐘正常,最好選用小型充電電池。如果斷電時間較短(幾小時或幾天),可以用漏電較小的普通電解電容代替(100f就可以保證1小時的正常走時)。ds1302在第一

21、次加電后,需進行初始化操作。初始化后就可以按正常方法調(diào)整時間。ds1302的時鐘電路如圖3-6所示。圖3-6 ds1302時鐘電路3.3數(shù)碼管ledled顯示器由若干個發(fā)光二極管組成,當(dāng)發(fā)光二極管導(dǎo)通時,相應(yīng)的一個筆畫或一個點就發(fā)光??刂葡鄳?yīng)的管導(dǎo)通,就能顯示出對應(yīng)字符。各段led顯示器需要由驅(qū)動電路驅(qū)動。在七段led顯示器中,通常將各段發(fā)光二極管的陰極或陽極連在一起作為公共端。將各段發(fā)光二極管連在一起的叫共陽極顯示器,用低電平驅(qū)動;將陰極連在一起的叫共陰極顯示器,用高電平驅(qū)動。靜態(tài)顯示就是每一個顯示器各筆畫段都要獨占具有一個鎖存功能的輸出口線,cpu把要顯示的字形代碼送到輸出口上,就可以使顯

22、示器上顯示所需的數(shù)字或符號,此后,即使cpu不在去訪問它,因為各筆畫段借口具有鎖存功能,顯示的內(nèi)容也不會消失。動態(tài)顯示是指顯示器顯示某一字符時,相應(yīng)段的發(fā)光二極管恒定地導(dǎo)通或截止。靜態(tài)顯示有并行輸出和串行輸出兩種方式。在本系統(tǒng)中數(shù)碼管使用共陰極接法而且是用動態(tài)顯示。3.4譯碼器74hc13874hc138譯碼器是通過3條線來達到控制8條線的狀態(tài),就是通過3條控制線a0、a1、a2不同的高低電平組合來控制y0y7的輸出狀態(tài),其中4和5為使能地端,與8引腳共同接地,當(dāng)接高電平時y0到y(tǒng)7輸出高電平。6號腳為使能端,為高電平時有效。74hc138封裝如圖3-7。當(dāng)需要級聯(lián)時只需要改變使能端信號引腳即

23、可,連接方法簡單。圖3-7 74hc138封裝圖3.5鎖存器74ls24474ls244由2組、每組四路輸入、輸出構(gòu)成。每組有一個控制端g,由控制端的高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開。圖3-8 74ls244引腳圖4.硬件設(shè)計4.1電路設(shè)計框圖at89s52主控制模塊ds1302時鐘模塊led數(shù)碼管動態(tài)掃描顯示模塊鍵盤模塊復(fù)位電路時鐘電路4.2系統(tǒng)概述本電路是由at89s52單片機為控制核心,具有在線編程功能,低功耗,能在3v超低壓工作;時鐘電路由ds1302提供,它是一種高性能、低功耗、帶ram的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.

24、5v5.5v。采用三線接口與cpu進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。ds1302內(nèi)部有一個31*8的用于臨時性存放數(shù)據(jù)的ram寄存器??僧a(chǎn)生年、月、日、周日、時、分、秒,具有使用壽命長,精度高和低功耗等特點,同時具有掉電自動保存功能;顯示部份由15個數(shù)碼管,74hs138、74ls244構(gòu)成。使用動態(tài)掃描顯示方式對數(shù)字的顯示。硬件的結(jié)構(gòu)和可靠性直接影響著整個系統(tǒng)的可靠性,所以合理的安排電路能提高電子產(chǎn)品的性能。4.3電源設(shè)計在這里因設(shè)計分工和側(cè)重點不同,電源模塊用通用的5v變壓器。4.4單片機的復(fù)位電路圖4-2手動復(fù)位電路在系統(tǒng)運行的過程中,有時可能對系統(tǒng)需

25、要進行復(fù)位,為了避免對硬件系統(tǒng)經(jīng)常加電和斷電造成的損害,設(shè)計了手動的復(fù)位電路。如圖4-2所示。這種電路的設(shè)計,在系統(tǒng)的運行過程中需要復(fù)位時,只需使開關(guān)閉合,在rst端就會出現(xiàn)一定時間的高電平信號,從而使單片機實現(xiàn)復(fù)位。4.5單片機系統(tǒng)的晶振電路單片機必須在時鐘的驅(qū)動下才能進行工作。mcs-51系列單片機內(nèi)部都有一個時鐘振蕩電路,只需外接晶振源,就能產(chǎn)生一定頻率的時鐘信號送到單片機的內(nèi)部的各個單元,決定單片機的工作速度。圖4-3就是內(nèi)部時鐘工作方式的電路圖,這是一種常用的方式。這種方式是外界振蕩源,本設(shè)計就采用這種外接晶振的方法。電路中的兩個電容的作用有兩個:一是幫助振蕩器起振(c1 c2的值大

26、,起振的速度慢;反之,速度快。);二是對振蕩器的頻率起到微調(diào)的作用(c1 c2的值大,頻率略有減少,反之,頻率略有提高)。c1 c2的值采用30pf。圖4-3單片機內(nèi)部晶振電路連接圖 4.6主電路設(shè)計主電路的功能是完成年、月、日、星期、時、分、秒之間的轉(zhuǎn)換, 再送往led顯示,并且接受鍵盤操作,對日期和時間進行校正。電路原理圖如圖4-4所示,顯示部分用p0口做為輸出數(shù)據(jù)接到led數(shù)碼管a到h,并接74ls244做為各段的驅(qū)動(為了簡化電路圖在此用了8個上拉電阻代替74ls244)。用p3口的低3位接譯碼器的a0,a1,a2端,用p3.3,p3.4,p3.5分別接譯碼器的使能端,通過控制p3口來

27、控制led的動態(tài)掃描。單片機的18和19引腳接12mhz的晶振,并接兩個22pf的電容同時接地,單片機復(fù)位端接一極性電容并連接到電源處,在極性電容的負(fù)極接一10k的電阻,并連接至地做為放電用。本設(shè)計用到四個獨立式鍵盤分別接到p1口的低4位,用p1口的p1.4,p1.5,p1.6接日歷時鐘的使能端和時鐘端及數(shù)據(jù)輸入輸出口,并在日歷時鐘上接一32.768khz的晶振,并接兩個22pf的電容終端和地相連,各芯片的電源部分分別接到有開關(guān)式電源產(chǎn)生的5v電源上,芯片的接地端都接在公共地上,在這里接電源部分就不再一一詳述。設(shè)計采用動態(tài)顯示,輪流掃描各個led使之顯示相應(yīng)的數(shù)型碼,當(dāng)掃描頻率大于人眼所能識別

28、的頻率時就看不到閃爍現(xiàn)象。動態(tài)顯示的亮度不如靜態(tài)顯示,但靜態(tài)顯示占用的i/o口資源較多,往往用移位寄存器74ls164等來擴充其i/o口不足的情況,當(dāng)顯示位數(shù)較多時,這樣勢必增加硬件開銷,增大成本,不利于開闊市場。本設(shè)計的突出之處在于硬件電路簡單,大大減少了硬件開銷,這樣又勢必增加了軟件開發(fā)的難度,但降低了成本有利于市場的開闊。圖4-4電路原理圖5.軟件設(shè)計軟件的設(shè)計是設(shè)計控制系統(tǒng)的應(yīng)用程序。其任務(wù)是在整體設(shè)計和硬件設(shè)計的基礎(chǔ)上,確定程序結(jié)構(gòu),分配內(nèi)ram資源,劃分功能模塊,然后進行主程序和各模塊程序的設(shè)計,最后連接起來成為一個完整應(yīng)用程序,與硬件相結(jié)合完成相應(yīng)功能。5.1主程序設(shè)計主程序才用

29、模塊化設(shè)計,流程圖如圖5-1所示。從上面主程序看出,主程序的組成是通過分別調(diào)用各子程序組成總體系統(tǒng)功能,能很直觀的看出主程序所要完成的功能,首先是初始化各模塊,之后調(diào)用鍵盤完成時間的調(diào)整,調(diào)用日歷子程序完成日歷時鐘的初始化和時間數(shù)據(jù)的讀寫,調(diào)用顯示子程序顯示數(shù)據(jù),最后又轉(zhuǎn)到鍵盤程序來回循環(huán)。初始化部分主要有初始化定時器部分和和一些寄存器、標(biāo)志位、初始化時間等。對定時器t0初始化時,首先置初值,cpu開中斷,定時器t0開中斷,并且開始計數(shù),而對定時器t1初始化時,首先置初值,定時器t1關(guān)中斷,并且停止計數(shù),只有收到命令時才能產(chǎn)生中斷。開始初始化t0并開中斷初始化t1并關(guān)中斷寄存器初始化標(biāo)志位初始

30、化初始化時間調(diào)鍵盤子程序調(diào)日歷子程序調(diào)顯示子程序結(jié)束寄存器的初始化主要是初始化執(zhí)行程序時用到的部分ram空間,防止程序執(zhí)行時帶來混亂。標(biāo)志位初始化是對時間調(diào)整時判斷是調(diào)分還是調(diào)時等而專設(shè)的位標(biāo)志,初始化過程中標(biāo)志位全部置0,即開始時是處于顯示狀態(tài),而不是調(diào)整狀態(tài),這一點在程序中相當(dāng)明了。初始化時間是開機時顯示的時間,并通過調(diào)用日歷時鐘的寫程序來完成時間的置初值。圖5-1程序流程圖5.2鍵盤子程序設(shè)計多功能鍵盤程序的設(shè)計是本設(shè)計的難點,也是完成本設(shè)計的重點,當(dāng)有鍵按下時,調(diào)用10ms延時程序,再判斷是否有鍵按下無則返回,若有先調(diào)用顯示程序再判斷是否松開,否則再轉(zhuǎn)到顯示程序,這樣避免了在按鍵松開之

31、前能正常顯示。其中k1鍵功能最多,通過判斷k1鍵按下的次數(shù)來判斷是調(diào)時間還是定時,并對對應(yīng)的位置閃爍。本鍵盤深度為7級,即連續(xù)按下k1鍵8次時則返回到原來界面。當(dāng)判斷鍵值為1時則為調(diào)秒狀態(tài),對應(yīng)的秒低位閃爍,為2時為調(diào)分狀態(tài)并分閃爍,為3時為調(diào)時狀態(tài)并時閃爍,為4時為調(diào)日狀態(tài)并日閃爍,為5時為調(diào)月狀態(tài)并月閃爍,為6時為調(diào)年狀態(tài)并年閃爍,為7時為調(diào)星期狀態(tài)并星期閃爍。 k2為加1鍵,k3為減1鍵,k4為總返回鍵,即在調(diào)時見時不用只有按下k1鍵值為8才返回,而通過按下k4鍵即可返回。由于鍵盤流程圖非常復(fù)雜,在此只表示秒,如圖5-2所示,其余略。n開始 有鍵按下?延時10msk2按下?k3按下?k4

32、按下?k1按下?調(diào)顯示k1為0?鍵值加1y調(diào)顯示有鍵按下?鍵值清0標(biāo)志位清0返回回 nnnynyn下頁1yyy下頁31鍵值為1?調(diào)顯示秒閃爍秒標(biāo)志位置1k2按下?k3按下?秒減1秒數(shù)據(jù)送ds1302秒加13ynyy鍵值為?n。圖5-2 鍵盤子程序流程圖5.3日歷時鐘子程序設(shè)計ds1302與cpu的連接需要三條線,即sclk(7)、i/o(6)、rst(5)。日歷時鐘ds1302的讀寫需要初始化時序、讀時序、寫時序。所有時序都是將主機作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機啟動寫時序開始,如果要求單總線器件回送是低位在先。讀寫都是16位數(shù)據(jù)高8位是地址低8位是數(shù)據(jù),在

33、讀寫時要嚴(yán)格遵從其讀寫時序,否則讀寫將會失效。當(dāng)rst為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對ds1302進行操作。如果在傳送過程中rst置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運行時,在vcc2.5v之前,rst必須保持低電平。只有在sclk為低電平時,才能將rst置為高電平,這一點我們要一定注意。當(dāng)rst置為高電平時,在串行時鐘的sclk的上升沿,ds1302從i/o端口讀入一位數(shù)據(jù),8個串行時鐘脈沖就可以讀入一字節(jié)的數(shù)據(jù)。在串行時鐘的下降沿,ds1302向i/o端口輸出一位數(shù)據(jù),8個串行時鐘脈沖就可以輸出一字節(jié)的數(shù)據(jù)。顯示子程序設(shè)計電子產(chǎn)品是否實用其中顯示占了很重要

34、的地位,很多數(shù)人都渴求用視覺效果好,范圍廣,直觀明了,led符合以上的要求,但相應(yīng)的硬件設(shè)計相對復(fù)雜。rst置1開 始發(fā)送1位命令碼命令碼8位送完?寫一位數(shù)據(jù)數(shù)據(jù)寫完?rst置0(a)時鐘寫結(jié) 束開 始rst置1發(fā)送1位命令碼命令碼8位送完?讀一位數(shù)據(jù)數(shù)據(jù)讀完?rst置0結(jié) 束(b) 時鐘讀圖5-3 日歷時鐘的寫和讀nyyyynnn5.4顯示子程序設(shè)計本設(shè)計的顯示部分具有消隱和閃爍功能,當(dāng)時分秒等高位為0時顯示消隱, 此時在讀時間時更加明了,但低位不能顯示消隱。閃爍功能也是本設(shè)計的一個難點,本設(shè)計采用8個位標(biāo)志位,其中一個標(biāo)志位通過用定時器0產(chǎn)生一個周期大約為每秒1.5次,使閃爍時效果達到最好

35、。此時定時器采用定時中斷的工作方式,這樣可以充分利用cpu資源。另外7個標(biāo)志位是時分秒等的位標(biāo)志位,當(dāng)秒標(biāo)志位置1時即秒開閃爍,與用中斷產(chǎn)生的標(biāo)志位相結(jié)合,即在一個周期內(nèi)為0時此時消隱為1時開顯示,這樣就使在調(diào)時間時對應(yīng)的位閃爍。6.系統(tǒng)調(diào)試單片機系統(tǒng)經(jīng)過總體設(shè)計,完成了硬件和軟件設(shè)計開發(fā)。通過軟件和硬件相結(jié)合系統(tǒng)即可運行。但編制好的程序或焊接好的線路不能按預(yù)計的那樣正常工作是常見的事,經(jīng)常會出現(xiàn)一些硬件、軟件上的錯誤,這是軟件和硬件開發(fā)者經(jīng)常遇見的,這就需要通過調(diào)試來發(fā)現(xiàn)錯誤并加以改正。調(diào)試可分為硬件調(diào)試和軟件調(diào)試。本設(shè)計系統(tǒng)的已經(jīng)在pc機上用模擬開發(fā)軟件進行了檢測和調(diào)試,并運行成功,最后進

36、行實物圖的硬件組裝與調(diào)試,這樣就給開發(fā)者在提供了方便。6.1軟件調(diào)試本設(shè)計是在proteus軟件和wava6000軟件相結(jié)合調(diào)試的,完全用仿真軟件在pc機上對目標(biāo)電路原理圖和程序進行檢測和調(diào)試。調(diào)試過程中單片機相應(yīng)輸入端由通用鍵盤和鼠標(biāo)設(shè)定,運行狀態(tài)、各寄存器狀態(tài)、端口狀態(tài)等都可以在指定的窗口區(qū)域顯示出來,以確定程序運行有無錯誤。目標(biāo)程序糾錯:該階段工作通常在目標(biāo)程序編輯時就完成。一般來說,仿真軟件能為用戶輸入的程序指令糾錯,包括書寫格式、標(biāo)號未定義或多重定義、轉(zhuǎn)移地址溢出等錯誤。整體程序調(diào)試:即把各子程序整體連起來進入到綜合電路調(diào)試,看是否能實現(xiàn)預(yù)計的功能顯示。在這階段若發(fā)生故障,可以考慮各

37、子程序在運行時是否破壞現(xiàn)場,數(shù)據(jù)緩沖單元是否發(fā)生沖突,標(biāo)志位的建立和清除在設(shè)計上是否失誤,堆棧是否溢出,輸入輸出狀態(tài)是否正常等。經(jīng)過多次修改程序最后調(diào)試出來理想的效果,如圖6-1所示圖6-1 proteus仿真用軟件模擬器調(diào)試不需任何在線仿真器,也不需要用戶樣機,直接就可以在pc機上開發(fā)和調(diào)試。調(diào)試和修改完畢后可以直接使用編程器將軟件固化在目標(biāo)系統(tǒng)rom中,然后投入運行。本設(shè)計特點突出,性價比高,適合于家庭掛歷,有很高應(yīng)用價值。7.結(jié)論硬件系統(tǒng)關(guān)系到所要設(shè)計的電子產(chǎn)品好懷,如系統(tǒng)抗干擾性等,所以要合理的安排盡量減少干擾提高性能。單片機是很容易受干擾的控制器,當(dāng)采用外部晶振時,應(yīng)盡量讓其靠近單片

38、機減少對其干擾,防止程序亂飛現(xiàn)象。同時還可以采用隔離等方式減少干擾,硬件系統(tǒng)設(shè)計的好壞很大部分來源于經(jīng)驗,所以我們要有動手的好習(xí)慣。軟件設(shè)計是核心部分,具有多樣化,靈活性高,易移植等優(yōu)點,要深深理會各指令的含義才能更加熟練應(yīng)用,中斷的合理利用可以減少cpu利用資源,具有執(zhí)行效率高等優(yōu)點,本設(shè)計用到定時器中斷以減少對cpu的占用,更好的處理其他功能。軟件的設(shè)計大部分采用模塊化設(shè)計的方法以方便調(diào)試,并使其可讀性大大增強,方便更改和移植。在這次設(shè)計中我學(xué)到了很多,也發(fā)現(xiàn)了自己的不足,也難免有錯誤之處,敬請?zhí)岢?!?謝不知不覺,畢業(yè)設(shè)計結(jié)束了。我的畢業(yè)論文已整理完畢,電路調(diào)試進展良好。畢業(yè)設(shè)計的完成意

39、味著我的大學(xué)學(xué)習(xí)生活即將結(jié)束,從此我將進入一個新的人生旅途、開始一段嶄新的生活工作。在此,我衷心地感謝所有在我做畢業(yè)設(shè)計期間幫助過我的人。 首先我要感謝林長青老師、滕弘虬老師大力幫助和支持。在整個設(shè)計過程當(dāng)中,為我的畢業(yè)設(shè)計帶來了很大方便。同時在我完成畢業(yè)設(shè)計的過程中提供了很多指導(dǎo)性的意見,使我受益匪淺。在此,我衷心感謝老師們給予我的幫助和教育。此外,還要衷心感謝其他所有對本課題的研究和論文撰寫有過幫助的同學(xué)。最后,我要感謝我的母校廣東科貿(mào)職業(yè)學(xué)院,在校期間,這里給我留下了美好的回憶。特別是在我即將踏上工作崗位的同時,畢業(yè)設(shè)計整個過程給了我這樣一個鍛煉的機會,使我加深了對以前知識的理解和鞏固,

40、拓寬了知識面,也提高了我對所學(xué)知識的綜合應(yīng)用能力。祝愿母校的將來更美好!參考文獻01何宏主編.單片機原理與接口技術(shù).北京:國防工業(yè)出版社.2006.0702楊西明,朱騏主編.單片機編程與應(yīng)用入門.北京:機械工業(yè)出版社.2004.0603先鋒工作室編著.單片機程序設(shè)計實例.北京:清華大學(xué)出版社.2003.0104謝宜仁主編.單片機實用技術(shù)問答.北京:人民郵電出版社.2003.0205孫江宏,李良玉等編著.protel99電路設(shè)計與應(yīng)用.北京:機械工業(yè)出版社.2004.0706房小翠,王金鳳編著.單片機實用系統(tǒng)設(shè)計技術(shù).北京:國防工業(yè)出版社.1999.0607秦曾煌主編.電工學(xué)(電子技術(shù)).北京:

41、高等教育出版社,200408何立民.單片機高級教程應(yīng)用與設(shè)計.北京:北京航空航天大學(xué)出版社,200009劉國榮單片微型計算機技術(shù).北京:機械工業(yè)出版社,199610王迎旭.單片機原理與應(yīng)用.北京:機械工業(yè)出版社,200411于永權(quán).atmel89系列單片機應(yīng)用技術(shù).北京:北京航空航天大學(xué)出版社,200112高峰.單片微型計算機原理與接口技術(shù).北京:科學(xué)出版社,200313各種網(wǎng)絡(luò)教程及其他附錄附錄硬件電路圖附錄主程序源代碼zhuan bit 50h ;閃爍標(biāo)志位輔助標(biāo)志位zhuan1 bit 51h ;年開閃爍的標(biāo)志位zhuan2 bit 52h ;月開閃爍的標(biāo)志位zhuan3 bit 53h

42、 ;日開閃爍的標(biāo)志位zhuan4 bit 54h ;時開閃爍的標(biāo)志位zhuan5 bit 55h ;分開閃爍的標(biāo)志位zhuan6 bit 56h ;秒開閃爍的標(biāo)志位zhuan7 bit 57h ;星期開閃爍的標(biāo)志位org 0000hljmp start ;開始并初始化org 000bh ;定時/計數(shù)t0中斷l(xiāng)jmp zduan org 001bh ;定時/計數(shù)t1中斷l(xiāng)jmp zduan2zduan:mov th0,#00h ;使zhuan由正到負(fù)周期大約為1.5即當(dāng)開閃爍時 每秒大約閃爍1.5次環(huán)境mov tl0,#00hdjnz r7,zduan1 ;循環(huán)指令cpl zhuan ;閃爍標(biāo)志

43、位求反mov r7,#3zduan1:reti ;中斷返回zduan2:mov th1,#0fchmov tl1,#43hcpl p3.0reti org 0100hstart:mov sp,#70h ;設(shè)堆棧mov tmod,#11h ;t0,ti工作方式1mov th0,#00hmov tl0,#00hmov th1,#0fchmov tl1,#43hsetb ea ;開放cpusetb et0 ;開放t0中斷setb tr0 ;啟動t0工作clr zhuan1 ;初始化標(biāo)志位clr zhuan2clr zhuan3clr zhuan4clr zhuan5clr zhuan6clr zhu

44、an7mov r7,#3mov 5fh,#00h ;初始化寄存器mov 30h,#01h ;時間賦初始值mov 31h,#01hmov 32h,#01hmov 33h,#01hmov 34h,#01hmov 35h,#01hmov 36h,#10hsetb p1.4 ;啟動設(shè)置寫保護寄存器mov a,#10001110b ;命令字節(jié),07h寄存器寫acall wbyte mov a,#00h ;允許寫數(shù)據(jù)字節(jié)acall wbyteclr p1.4 ;rst=0,停止傳送mov r0,#30h ;數(shù)據(jù)存放首地址mov r2,#8 ;寫8個字節(jié)setb p1.4 ;啟動連續(xù)寫8個字節(jié)mov a,#

45、0beh ;設(shè)多字節(jié)寫命令字lcall wbytechushi:mov a,r0 ;取數(shù)據(jù)lcall wbyte ;寫一個字節(jié)inc r0djnz r2,chushi ;循環(huán)寫8個字節(jié) ;主程序main:lcall jian ;調(diào)鍵盤子程序lcall rili ;調(diào)日歷時鐘程序lcall xian ;調(diào)顯示程序sjmp main ;鍵盤程序jian:mov p1,#0ffh ;初始mov a,p1cpl ajnz ji1 ;判鍵按下ljmp jian4ji1:lcall delay ;調(diào)延時cpl ajnz ji2 ljmp jian4ji2:jnb p1.1,jian3 ;判k2鍵為0轉(zhuǎn)jn

46、b p1.2,jian3 ;判k3鍵為0轉(zhuǎn)jian0:mov p1,#0ffhjnb p1.3,jian3 ;判k4鍵為0轉(zhuǎn)jnb p1.0,jian1 ;判k1鍵為0轉(zhuǎn)ljmp jianxjian1:lcall delay ;調(diào)延時去抖動jb p1.0,jianx ;為1就是鍵抖動jian11:lcall xian ;調(diào)顯示jnb p1.0,jian11 ;判鍵k1松開mov a,5fh add a,#1 ;寄存器加1mov 5fh,acjne a,#8,jianxljmp jian3jianx:mov a,5fhcjne a,# 1,jia1 ;比較轉(zhuǎn)移指令a不等于#時,轉(zhuǎn)移ljmp ti

47、aom ;轉(zhuǎn)調(diào)秒子程序jia1:mov a,5fhcjne a,#2,jia2ljmp tiaof ;轉(zhuǎn)調(diào)分子程序jia2:mov a,5fhcjne a,#3,jia3ljmp tiaos ;轉(zhuǎn)調(diào)時子程序jia3:mov a,5fhcjne a,#4,jia4ljmp tiaor ;轉(zhuǎn)調(diào)日子程序jia4:mov a,5fhcjne a,#5,jia5ljmp tiaoy ;轉(zhuǎn)調(diào)月子程序jia5:mov a,5fhcjne a,#6,jia6ljmp tiaon ;轉(zhuǎn)調(diào)年子程序jia6:ljmp tiaox ;轉(zhuǎn)調(diào)星期子程序jian3:clr zhuan1 ;標(biāo)志位清0clr zhuan2cl

48、r zhuan3clr zhuan4clr zhuan5clr zhuan6clr zhuan7mov 5fh,#00hjian2:lcall xian ;調(diào)顯示子程序mov a,p1 cpl ajnz jian2jian4:ret;調(diào)秒tiaom:setb zhuan6 ;秒閃爍標(biāo)志位置1lcall xianjnb p1.1,miaoz ;加轉(zhuǎn)移jnb p1.2,miaoj ;減轉(zhuǎn)移 ljmp jian0miaoz:lcall delay ;調(diào)延時去抖動jnb p1.1,miaoz1ljmp jian0miaoz1:lcall xianjnb p1.1,miaoz1 ;判鍵k2松開mov a

49、,30h ;取秒數(shù)據(jù)add a,#1 ;加1da a ;十進制調(diào)整指令mov 30h,a ;送回秒寄存器cjne a,#60h,miaoz2mov 30h,#00h ;秒值過60為0ljmp miaoz2miaoj:lcall delay;調(diào)延時去抖動jnb p1.2,miaoj1ljmp jian0miaoj1:lcall xianjnb p1.2,miaoj1 ;判鍵k3松開mov a,30h ;取秒數(shù)據(jù)mov b,#10hdiv ab ;a除以bmov 61h,b ;數(shù)據(jù)個位放到61hmov b,#10 mul ab ;a乘以badd a,61h ;不帶進位加法dec a ;a減1mov

50、 b,#10 div ab swap aadd a,bmov 30h,acjne a,#96h,miaoz2mov 30h,#59hmiaoz2:mov a,30hanl a,#0fh ;分離低四位mov 40h,a ;存數(shù)據(jù)到寄存器mov a,30h swap a ;半字節(jié)交換anl a,#0fhmov 41h,a ;存數(shù)據(jù)到寄存器setb p1.4 ;啟動設(shè)置寫保護寄存器mov a,10001110b ;命令字節(jié),寄存器07hacall wbytemov a,#00h ;允許寫數(shù)據(jù)字節(jié)acall wbyteclr p1.4 ;停止傳送setb p1.4 ;啟動寫mov a,#80h ;秒寫命令字節(jié)lcall wbytemov a,30h ;寫秒數(shù)據(jù)到ds1302lcall wbytelcall xian ljmp jian0ret;調(diào)分tiaof:clr zhuan6 ;清秒標(biāo)志位setb zhuan5 ;置分標(biāo)志位lcall xianjnb p1.1,fenz ;加轉(zhuǎn)移jnb p1.2,fenj ;減轉(zhuǎn)移ljmp jian0fenz:lcall delay ;調(diào)延時去抖動jnb p1.1,fenz1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論