版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 基于51單片機的電子萬年歷設(shè)計</p><p><b> 摘 要</b></p><p> 電子萬年歷是一種非常廣泛日常計時工具,對現(xiàn)代社會越來越流行。它可以對年、月、日、周日、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差小。對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、周日、時、分、秒
2、和溫度等信息,還具有時間校準等功能。該電路采用AT89C52單片機作為核心,功耗小,能在3V的低壓工作,電壓可選用3~5V電壓供電。</p><p> 萬年歷的設(shè)計過程在硬件與軟件方面進行同步設(shè)計。硬件部分主要由AT89C52單片機,LED顯示電路,以及調(diào)時按鍵電路等組成。為了能更輕松的控制這三片顯示器,本人使用了3片74HC164來驅(qū)動。74HC164 是 8 位邊沿觸發(fā)式移位寄存器,串行輸入數(shù)據(jù),然后并行輸
3、出。軟件方面主要包括日歷程序、時間調(diào)整程序,公歷轉(zhuǎn)陰歷程序,顯示程序等。程序采用C語言語言編寫,以便更簡單地實現(xiàn)調(diào)整時間及陰歷顯示功能。所有程序編寫完成后,在keil uvision4軟件中進行調(diào)試好后,在Proteus軟件中進行仿真。</p><p> 關(guān)鍵詞: DS1302; DS18B20; 動態(tài)掃描; 單片機 </p><p> Electronic calendar desi
4、gn based on 51 MCU</p><p><b> Abstract</b></p><p> Electronic calendar day time is a very wide range of tools, increasingly popular in modern society. It can be timed to the year,
5、month, day, Sunday, when, minutes and seconds, also has a leap year compensation and other functions, and the DS1302's long life, small error. For the digital electronic calendar using visual digital display, can dis
6、play year, month, day, Sunday, when, minutes and seconds, and temperature and other information, is also a time-calibration functions. The circuit uses AT8</p><p> The design process of the calendar synchro
7、nization in the hardware and software design. Hardware mainly by the AT89C52 microcontroller, LED display circuit, and when the key circuits etc.. In order to the three display control more relaxed, I used 3 pieces of 74
8、HC164 to drive. 74HC164 is a 8 bit edge-triggered shift register, serial input data, and then the parallel output. The software includes calendar program, time to adjust the procedure, turn the lunar calendar program, di
9、splay program. Usi</p><p> Key words: DS1302; DS18B20; Dynamic scanning; MCU</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> A
10、bstractII</p><p><b> 目 錄1</b></p><p><b> 1 緒論3</b></p><p><b> 1.1 概述3</b></p><p> 1.2 研究目的4</p><p> 2 系統(tǒng)
11、的硬件設(shè)計與實現(xiàn)5</p><p> 2.1 電路設(shè)計框圖5</p><p> 2.2 系統(tǒng)硬件概述5</p><p> 2.3 主要單元電路的設(shè)計6</p><p> 2.3.1 單片機主控制模塊的設(shè)計6</p><p> 2.3.2 時鐘電路模塊的設(shè)計6</p><
12、;p> 2.3.3 電路原理及說明7</p><p> 2.3.4 顯示模塊的設(shè)計11</p><p> 3 系統(tǒng)開發(fā)軟件13</p><p> 3.1 Proteus 仿真軟件13</p><p> 3.1.1 Proteus 仿真軟件的特點13</p><p> 3.1.2
13、Proteus ISIS 原理圖設(shè)計13</p><p> 3.2 Keil C5115</p><p> 3.3 Proteus 與Keil的聯(lián)調(diào)18</p><p> 4 系統(tǒng)的軟件設(shè)計20</p><p> 4.1 程序流程框圖20</p><p> 4.2 程序的設(shè)計21<
14、/p><p> 4.2.1 主電路設(shè)計21</p><p> 4.2.2 鍵盤子程序設(shè)計22</p><p> 4.2.3 日歷時鐘子程序設(shè)計25</p><p> 4.2.4 顯示子程序設(shè)計26</p><p> 4.2.5 部分程序代碼27</p><p><
15、b> 5 總結(jié)33</b></p><p><b> 參考文獻34</b></p><p><b> 致 謝35</b></p><p> 附錄1 外文參考文獻(譯文)36</p><p> 附錄2 外文參考文獻(原文)39</p><
16、;p><b> 1 緒論</b></p><p><b> 1.1 概述</b></p><p> 在日新月異的21世紀里,家用電子產(chǎn)品得到了迅速發(fā)展。許多家電設(shè)備都趨于人性化、智能化,這些電器設(shè)備大部分都含有CPU控制器或者是單片機。單片機以其高可靠性、高性價比、低電壓、低功耗等一系列優(yōu)點,近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)
17、用于工業(yè)控制系統(tǒng)、通訊設(shè)備、日常消費類產(chǎn)品和玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個環(huán)節(jié)以及人民生活的各個方面,如車間流水線控制、自動化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。用單片機來控制的小型家電產(chǎn)品具有便攜實用,操作簡單的特點。</p><p> 時鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科學技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好的為人民服務(wù),
18、怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計出新型時鐘。</p><p> 現(xiàn)今,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈
19、活性好。</p><p> 時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合
20、;二是用專門的時鐘芯片實現(xiàn),在對時間精度要求很高的情況下,通常采用這種方法,典型的時鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。</p><p> 本文設(shè)計的日歷和時鐘的顯示廣泛用于小型智能家用電子產(chǎn)品,如電子鐘。利用單片機進行控制,實時時鐘芯片DS1302進行記時,外加掉電存儲電路和顯示電路,可實現(xiàn)時間的調(diào)整和顯示。電子鐘既可廣泛應(yīng)用于家庭,也可應(yīng)用于銀行、郵電、賓館、醫(yī)院、學
21、校、企業(yè)、商店等相關(guān)行業(yè)的大廳,以及單位會議室、門衛(wèi)等場所。因而,此設(shè)計具有相當重要的現(xiàn)實意義和實用價值。</p><p> 時間,對人們來說是非常寶貴的,準確的掌握時間和分配時間對人們來說至關(guān)重要。因此自從時鐘發(fā)明的那刻起,就成為人類的好朋友。隨著時間的流逝,科學技術(shù)的不斷發(fā)展和提高,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好、更方便、更精確的顯示時間,這就要求人們不斷設(shè)計研發(fā)出新型的時鐘
22、。</p><p> 高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校[1]。數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替指針進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。</p><p> 時鐘電路在計算機系統(tǒng)
23、中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在單片機的應(yīng)用系統(tǒng)中,時鐘有兩個方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時器/計數(shù)器來實現(xiàn);二是用專門的時鐘芯片實現(xiàn)[2]。</p><p> 由于51系列單片機的內(nèi)部具有定時器/計
24、數(shù)器的功能,因此采用51系列單片機里的AT89S51和LED數(shù)碼管為核心,加以必要的電路,來構(gòu)成了一個單片機電子時鐘。</p><p><b> 1.2 研究目的</b></p><p> 通過利用MCS-51單片機內(nèi)部的定時器/計數(shù)器功能、中斷系統(tǒng)功能、以及外圍的按鍵和LED顯示器等部件,設(shè)計一個基于單片機的萬年歷。設(shè)計的萬年歷通過數(shù)碼管顯示,并能通過按鍵對時
25、間進行設(shè)置。</p><p> 2 系統(tǒng)的硬件設(shè)計與實現(xiàn)</p><p> 2.1 電路設(shè)計框圖</p><p> 圖2.1 電路設(shè)計框圖</p><p> 2.2 系統(tǒng)硬件概述</p><p> 本電路是由AT89C52單片機為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時鐘電路由DS13
26、02提供,它是一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31*8的用于臨時性存放數(shù)據(jù)的RAM寄存器??僧a(chǎn)生年、月、日、周日、時、分、秒,具有使用壽命長,精度高和低功耗等特點,同時具有掉電自動保存功能;溫度的采集由DS18B20構(gòu)成;
27、顯示部份由21個數(shù)碼管,74ls138、74ls47譯碼器構(gòu)成。使用動態(tài)掃描顯示方式對數(shù)字的顯示。AT89C52是一種低功耗、高性能CMOS 8位微控制器,使用 ATMEL 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。并具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘
28、電路。另外,A</p><p> 2.3 主要單元電路的設(shè)計</p><p> 2.3.1 單片機主控制模塊的設(shè)計</p><p> AT89C52單片機為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3, MCS-51單片機共有4個8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨立地作輸出或輸入。</p><p
29、> 單片機的最小系統(tǒng)如下圖所示,18引腳和19引腳接時鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第9引腳為復位輸入端,接上電容,電阻及開關(guān)后夠上電復位電路,20引腳為接地端,40引腳為電源端. 如圖2.2所示</p><p> 圖2.2 主控制系統(tǒng) </p><p>
30、 2.3.2 時鐘電路模塊的設(shè)計</p><p> 圖2.3示出DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST是復位/片
31、選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RSTS置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動行時,在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平時,才能將R
32、ST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK始終是輸入端。</p><p> 圖2.3 DS1302的引腳圖</p><p> 2.3.3 電路原理及說明</p><p> (1) 時鐘芯片DS1302的工作原理:</p><p> DS1302在每次進行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端
33、置“1”,最后才給予SCLK脈沖;讀/寫時序如下圖4所示。圖5為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對DS1302進行讀寫數(shù)據(jù)。對于位6,若對程序進行讀/寫時RAM=1,對時間進行讀/寫時,CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;該位為0則表示進行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。表6為DS1302的日歷、時間寄存器內(nèi)容:“CH”是時鐘暫停標志位,當該位為
34、1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當該位為0時,時鐘開始運行?!癢P”</p><p> 是寫保護位,在任何的對時鐘和RAM的寫操作之前,WP必須為0。當“WP”為1時,寫保護位防止對任一寄存器的寫操作。</p><p> (2) DS1302的控制字節(jié)</p><p> DS1302的控制字節(jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能
35、把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。</p><p> (3) 數(shù)據(jù)輸入輸出(I/O)</p><p> 在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊
36、跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。</p><p> (4) DS1302的寄存器</p><p> DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表2-1。</p><p> 表2-1 DS1302的日歷、時間寄存器&
37、lt;/p><p> 此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM
38、的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。 </p><p> 低功耗時鐘芯片DS1302可以對年、月、日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。DS1302用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點的記錄上,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄。這種記錄對長時間的連續(xù)測控系統(tǒng)結(jié)果的分析以及對異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義。</p><p> 采用DS130
39、2作為記錄測控系統(tǒng)中的數(shù)據(jù)記錄,其軟硬件設(shè)計簡單,時間記錄準確,既避免了連續(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ù)記錄方式是隔時采樣或定時采樣,沒有具
40、體的時間記錄,因此只能記錄數(shù)據(jù)而無法準確記錄其出現(xiàn)的時間;若采用單片機計時,一方面需要采用計數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費單片機的資源,而且某些測控系統(tǒng)可能不允許。而在系統(tǒng)中采用DS1302則能很好地解決這個問題。</p><p> DS1302的性能特性</p><p> ·實時時鐘,可對秒、分、時、日、周、月以及帶閏年補償?shù)哪赀M行計數(shù);<
41、/p><p> ·用于高速數(shù)據(jù)暫存的31×8位RAM;</p><p> ·最少引腳的串行I/O;</p><p> ·2.5~5.5V 電壓工作范圍;</p><p> ·2.5V時耗電小于300nA;</p><p> ·用于時鐘或RAM數(shù)據(jù)讀/寫的
42、單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;</p><p><b> ·簡單的3線接口;</b></p><p> ·可選的慢速充電(至VCC1)的能力。</p><p> DS1302時鐘芯片包括實時時鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個簡單的串行接口與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等
43、信息。對于小于31天的月和月末的日期自動進行調(diào)整,還包括閏年校正的功能。時鐘的運行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:VCC1 在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運用方式中,VCC1 連接到備份電源,以便在沒有主電源的
44、情況下能保存時間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者供電。當VCC2大于VCC1+0.2V時,VCC2給DS1302供電;當VCC2小于VCC1時,DS1302由VCC1供電。</p><p> DS1302數(shù)據(jù)操作原理</p><p> DS1302在任何數(shù)據(jù)傳送時必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入
45、。無論是讀周期還是寫周期,開始8位指定40個寄存器中哪個被訪問到。在開始8個時鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時鐘周期在讀操作時輸出數(shù)據(jù),在寫操作時寫入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達248字節(jié)數(shù)。</p><p> 圖2.4 DS1302管腳圖</p><p> 如果在傳送過程中置RST為低電平,則會終止本次數(shù)據(jù)傳送,并且I
46、/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在VCC >=2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。DS1302的管腳圖如圖2.4所示,表2-2為各引腳的功能。</p><p> 表2-2 DS1302引腳功能表</p><p> 2.3.4 顯示模塊的設(shè)計</p><p> LED顯示器由若干個發(fā)光二極管組成,當發(fā)光
47、二極管導通時,相應(yīng)的一個筆畫或一個點就發(fā)光??刂葡鄳?yīng)的管導通,就能顯示出對應(yīng)字符。各段LED顯示器需要由驅(qū)動電路驅(qū)動。在七段LED顯示器中,通常將各段發(fā)光二極管的陰極或陽極連在一起作為公共端。將各段發(fā)光二極管連在一起的叫共陽極顯示器,用低電平驅(qū)動;將陰極連在一起的叫共陰極顯示器,用高電平驅(qū)動。</p><p> 靜態(tài)顯示就是每一個顯示器各筆畫段都要獨占具有一個鎖存功能的輸出口線,CPU把要顯示的字形代碼送到輸出
48、口上,就可以使顯示器上顯示所需的數(shù)字或符號,此后,即使CPU不在去訪問它,因為各筆畫段借口具有鎖存功能,顯示的內(nèi)容也不會消失。</p><p> 動態(tài)顯示是指顯示器顯示某一字符時,相應(yīng)段的發(fā)光二極管恒定地導通或截止。靜態(tài)顯示有并行輸出和串行輸出兩種方式。在本系統(tǒng)中數(shù)碼管使用共陰極接法而且是用動態(tài)顯示。</p><p> 圖2.5 LED動態(tài)掃描顯示</p><p&g
49、t;<b> 圖2.6系統(tǒng)電路圖</b></p><p><b> 3 系統(tǒng)開發(fā)軟件</b></p><p> 在當前的單片機開發(fā)行業(yè)中,仿真軟件Proteus和編程軟件Keil受到廣大的行業(yè)人員的青睞。用Proteus與Keil相結(jié)合的方式使得單片機實驗更加方便。本章詳細的介紹了Proteus和Keil軟件的特點和使用方法,介紹了Pro
50、teus與Keil的聯(lián)合調(diào)試。</p><p> 3.1 Proteus 仿真軟件</p><p> 3.1.1 Proteus 仿真軟件的特點</p><p> Proteus是世界上著名的EDA仿真軟件,是由英國Labcenter electronics公司開發(fā)的,它可以對基于微控制器的設(shè)計連同所有的周圍電子器件一起仿真,用戶甚至可以實時采用諸如LED
51、/LCD、鍵盤、RS232終端等動態(tài)外設(shè)模型來對設(shè)計進行交互仿真。該軟件提供智能原理圖設(shè)計系統(tǒng)、SPICE模擬電路、數(shù)字電路及MCU器件混合仿真系統(tǒng)和PCB設(shè)計系統(tǒng)功能。其不僅可以仿真?zhèn)鹘y(tǒng)的電路分析實驗、模擬電子線路實驗、數(shù)字電路實驗等,而且可以仿真嵌入式系統(tǒng)的實驗, Proteus軟件從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件
52、和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。 </p><p> 3.1.2 Proteus ISIS 原理圖設(shè)計</p>&l
53、t;p> Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它的工作界面是一種標準的Windows界面,如圖3.1所示。包括:標題欄、主菜單、標準工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預覽對象方位控制按鈕、仿真進程控制按鈕、預覽窗口、對象選擇器窗口、圖形編輯窗口。</p><p> Proteus ISIS 設(shè)計單片機電路的基本步驟:</p><p
54、> (1)新建設(shè)計文件夾或打開一個現(xiàn)有的設(shè)計文件。</p><p> 圖3.1 Proteus主界面</p><p> (2)通過關(guān)鍵字或分類檢索選擇元器件。</p><p> (3)將元器件放入設(shè)計窗口,如下圖3.2所示。</p><p> 圖3.2 Proteus設(shè)計窗口</p><p> (
55、4)添加其他模型,如電源、地線、信號源等,以及添加相關(guān)的虛擬儀器。</p><p> (5)編輯和連接電路。</p><p> (6)編寫單片機所需的源程序。</p><p> (7)加入源程序,并通過構(gòu)造,得到仿真程序或目標程序。</p><p> (8)根據(jù)需要,設(shè)置對象的屬性,如將單片機的“Program File”屬性設(shè)置為上
56、述仿真調(diào)試程序或目標程序。</p><p> (9)啟動仿真功能,對電路進行仿真操作,驗證其功能。</p><p> 3.2 Keil C51</p><p> Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。Keil提供了包括C
57、編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境uVision將這些部分組合在一起。 </p><p> Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面,是目前功能最強大的單片機C語言集成開發(fā)環(huán)境。Keil C51生成的目標代碼效率非常高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。 &
58、lt;/p><p> Keil開發(fā)單片機程序的步驟如下:</p><p><b> (1)工程的建立</b></p><p> 執(zhí)行菜單命令“工程(Project)\新建工程(New Project)”出現(xiàn)創(chuàng)建新工程對話框,起一個工程名,并在下拉列表中選擇單片機廠家和型號,這里選擇Atmel公司的89C51,單擊“確定”按鈕。</p&g
59、t;<p> (2)工程屬性的設(shè)置</p><p> 根據(jù)不同的軟件配置和仿真調(diào)試情況,需要對工程屬性進行設(shè)置:鼠標右擊工程窗口下的“Target 1”,然后選擇“目標屬性(Option for target 1)”,出現(xiàn)工程屬性對話框。該對話框有8個選項卡,大部分設(shè)置取默認值即可。其中下列兩張選項卡需要進行設(shè)置:</p><p> “輸出(Output)”選項卡設(shè)置如
60、圖3.3所示</p><p> 圖3.3 輸出屬性設(shè)置圖</p><p> 目標文件夾默認為工程文件所在的文件夾,一般不需修改??梢詥螕簟斑x擇obj文件”按鈕進行查看和修改。</p><p> 勾選“生成HEX文件”則在構(gòu)造時會產(chǎn)生HEX格式的目標文件。這是Intel公司提出的數(shù)據(jù)格式,所有數(shù)據(jù)使用16進制數(shù)字表示。在Proteus ISIS中進行單片機仿真
61、調(diào)試時需要用到這種格式文件;構(gòu)造實際的單片機應(yīng)用系統(tǒng)時,也需要將這種格式的文件下載到單片機程序存儲器中。</p><p> “調(diào)試(Debug)”選項卡設(shè)置Keil提供兩類調(diào)試方法。一是在Keil中進行軟件仿真調(diào)試,這時應(yīng)選“使用仿真器”。二是配合硬件仿真器或電路仿真軟件進行程序和電路的聯(lián)合調(diào)試,這時要選“使用:Proteus VSM Simulator”選項,提供的vdmagdi.exe,安裝后在此處的列表中
62、將會出現(xiàn)“Proteus VSM Simulator”選項,供于ISIS進行程序和電路的聯(lián)調(diào)使用。如果Keil和ISIS在同一臺計算機上運行,則需單擊“設(shè)置”,填入運行ISIS計算機的IP地址,端口號為8000。還要說明的是,兩者聯(lián)調(diào)時,要在ISIS中選擇“DEBUG”菜單下的“Use remote debug monitor”。</p><p> (3)源文件的建立和添加</p><p&g
63、t; Keil內(nèi)集成有一個文本編輯器,故可以在集成環(huán)境中直接進行源程序的輸入。編輯器支持語法著色功能,即對添加到工程中的源程序,不同語法成分用不同顏色著色表示,例如,關(guān)鍵字用藍色表示,以便查看和發(fā)現(xiàn)錯誤。但該文本編輯器對漢字的支持較差,故程序注釋最好使用英文或漢語拼音。</p><p> 執(zhí)行、菜單命令“文件(File)\新建(New)”,在源程序窗口會出現(xiàn)一個新的文件輸入窗口,可在該窗口里輸入源程序。輸入完
64、畢后,選擇“文件(File)\保存(Save)”,輸入文件名,把文件保存在工程目錄中。文件取名時必須加上擴展名,匯編程序以.ASM或.A51為擴展名保存,C程序以擴展名.C保存。</p><p> 圖3.4 調(diào)試屬性的設(shè)置</p><p> 程序編寫完成以后,并不會自動出現(xiàn)在工程窗口中,還需要同過以下的操作將其加入工程.鼠標左鍵單擊“Source group 1”,在出現(xiàn)的快捷菜單中
65、選擇“增加文件到(ADD Files to Group“Source group 1”)”,出現(xiàn)添加文件的對話框,選擇相應(yīng)源程序即可。在工程中添加源文件也可以通過相應(yīng)的菜單操作完成:“工程(Project)\目標,組和文件(Targets Groups Files)?!?lt;/p><p> Keil 默認加入文件格式為C語言源文件,因此在默認情況下,“文件類型”下拉列表框中不顯示該文件夾下的匯編文件。要顯示匯編語
66、言源文件,需要單擊“文件類型”下拉列表框右側(cè)的下三角按鈕,彈出下拉列表,選擇“Asm Source file(*.a*;*.src)”,這時才會將文件夾下的“*.asm”文件顯示出來。鼠標左鍵雙擊要加入的文件,或單擊要加入的文件后單擊“Add”按鈕,都可以將該文件加入到工程中。如圖3.4所示。</p><p> 回到主界面,加入的文件即出現(xiàn)在工程管理器“Source Group 1”上午下一級菜單中,雙擊該文件
67、名,將在右邊編輯窗口打開該文件,可以進行第一步編輯。</p><p><b> (4)構(gòu)造目標程序</b></p><p> 設(shè)置好工程并添加了源程序文件后,即單擊構(gòu)造目標框上的相關(guān)構(gòu)造工具或按快捷鍵<F7>進行目標構(gòu)造,即對工程進行匯編或編譯、連接,最終生成目標文件*.HEX等相關(guān)文件。</p><p> 構(gòu)造過程中,有關(guān)信
68、息將出現(xiàn)在屏幕下方輸出窗口中的“Build(構(gòu)造)”頁中。如果程序中有語法錯誤,這里會出現(xiàn)錯誤報告;雙擊錯誤報告行,可以定位到源程序中相關(guān)的出錯行。對源程序反復修改后,最終構(gòu)造后輸出窗口中應(yīng)出現(xiàn)“0錯誤”或“0Error”,表示程序已沒有語法錯誤。構(gòu)造的目標文件*.HEX被用于下載到單片機芯片中。這一過程中,在工程文件夾中還會生成其他一些文件,如*.LST列表文件、*.obj目標文件\*.M51程序符號列表文件。</p>
69、<p> 在設(shè)計和調(diào)試狀態(tài)下均可以直接修改程序的源代碼,但是必須重新構(gòu)造工程或文件才能得到修改后的目標程序.如對源程序做了修改,必須對工程重新進行構(gòu)造,從而產(chǎn)生新的目標文件,否則Keil 調(diào)試所使用的目標文件仍然是上次構(gòu)造的。</p><p> 3.3 Proteus 與Keil的聯(lián)調(diào)</p><p> (1)下載并安裝Proteus 與Keil軟件。</p>
70、<p> (2)安裝完畢后,把Proteus 7 Professional\MODELS\目錄下的 VDM51.dll文件復制到 Keil\C51\BIN 文件夾下。 </p><p> (3)用記事本或者其它的編輯軟件,打開Keil 根目錄下的 TOOLS.INI 文件,在[C51] 欄目下加入 TDRV3=BIN\VDM51.DLL ("Proteus VSM Monitor-51
71、 Driver" ) ,其中“TDRV3” 中的 “3”要根據(jù)實際情況寫,不要和已有的TDRV重復即可。</p><p> (4)keil的設(shè)置。</p><p> 把"C:\Program Files\Labcenter Electronics\Proteus 6 Professional \SAMPLES"中的"8051 LCD Driver
72、”文件夾復制到新建的Proteus文件夾下。</p><p> 運行keil程序,在"8051 LCD Driver"文件夾下建立一個新的名為8051 LCD Driver工程。單片機的型號可選擇AT89C52,把LCDDEMO 文件加到"Source Group 1"組里。</p><p> 點擊工具欄的"option for tar
73、get"按鈕,在出現(xiàn)的對話框里點擊"Debug",在右欄上部的下拉菜單里選中" Proteus VSM Monitor-51 Driver",還要點擊一下Use前面的小圓點。</p><p> 點擊"Setting"設(shè)置通信接口,在Host后面添上"127.0.0.1",如果想換一臺電腦,在這里添上另一臺電腦的IP地址即可
74、。在Port后面添上"8000"。點擊"OK"按鈕。最后把工程編譯一下再運行。</p><p> (5)Proteus的設(shè)置。</p><p> 運行Proteus的ISIS,進入主界面后鼠標左鍵點擊菜單"DEBUG",選中"use remote debugger monitor"。再用鼠標左鍵點擊菜單&q
75、uot;File",點擊"Load Design",導入"8051 LCD Driver"文件夾下的LCDDEMO.design文件。要把keil的工程和Proteus的文件放到同一個目錄下,即Proteus的工程文件要和Keil工程的那個文件夾在同一層目錄下。</p><p><b> (6)調(diào)試并運行。</b></p>&
76、lt;p> 打開keil,按Ctrl+F5進入調(diào)試界面或者點擊工具欄的調(diào)試按鈕。如果不能進入調(diào)試界面,可能設(shè)置有誤,按照上面的步驟再重新設(shè)置一下。進入了調(diào)試界面,按F5或者點擊工具欄的調(diào)試按鈕,全速運行,再看看ISIS,觀察其變化。連接成功以后,就可以開始調(diào)試程序了,調(diào)試成功后再點擊運行按鈕運行程序得到運行效果。</p><p> 4 系統(tǒng)的軟件設(shè)計</p><p> 4.1
77、 程序流程框圖</p><p> 圖4.1 主程序流程圖</p><p> 主程序才用模塊化設(shè)計,流程圖如圖4.1所示。</p><p> 從上面主程序看出,主程序的組成是通過分別調(diào)用各子程序組成總體系統(tǒng)功能,能很直觀的看出主程序所要完成的功能,首先是初始化各模塊,之后調(diào)用鍵盤完成時間的調(diào)整,調(diào)用日歷子程序完成日歷時鐘的初始化和時間數(shù)據(jù)的讀寫,調(diào)用顯示子程序
78、顯示數(shù)據(jù),最后又轉(zhuǎn)到鍵盤程序來回循環(huán)。</p><p> 初始化部分主要有初始化定時器部分和和一些寄存器、標志位、初始化時間等。</p><p> 對定時器T0初始化時,首先置初值,CPU開中斷,定時器T0開中斷,并且開始計數(shù),而對定時器T1初始化時,首先置初值,定時器T1關(guān)中斷,并且停止計數(shù),只有收到命令時才能產(chǎn)生中斷。</p><p> 寄存器的初始化主要
79、是初始化執(zhí)行程序時用到的部分RAM空間,防止程序執(zhí)行時帶來混亂。</p><p> 標志位初始化是對時間調(diào)整時判斷是調(diào)分還是調(diào)時等而專設(shè)的位標志,初始化過程中標志位全部置0,即開始時是處于顯示狀態(tài),而不是調(diào)整狀態(tài),這一點在程序中相當明了。</p><p> 初始化時間是開機時顯示的時間,并通過調(diào)用日歷時鐘的寫程序來完成時間的置初值。</p><p> 4.2
80、 程序的設(shè)計</p><p> 4.2.1 主電路設(shè)計</p><p> 主電路的功能是完成年、月、日、星期、時、分、秒之間的轉(zhuǎn)換, 再送往LED顯示,并且接受鍵盤操作,對日期和時間進行校正。</p><p> 電路原理圖如圖4.2所示,顯示部分用P0口做為輸出數(shù)據(jù)接到LED數(shù)碼管a到h,并接74ls244做為各段的驅(qū)動(為了簡化電路圖在此用了8個上拉電阻代
81、替74ls244)。用P3口的低3位接譯碼器的A0,A1,A2端,用P3.3,P3.4,P3.5分別接譯碼器的使能端,通過控制P3口來控制LED的動態(tài)掃描。單片機的18和19引腳接12MHZ的晶振,并接兩個22PF的電容同時接地,單片機復位端接一極性電容并連接到電源處,在極性電容的負極接一10K的電阻,并連接至地做為放電用。本設(shè)計用到四個獨立式鍵盤分別接到P1口的低4位,用P1口的P1.4,P1.5,P1.6接日歷時鐘的使能端和時鐘端及
82、數(shù)據(jù)輸入輸出口,并在日歷時鐘上接一32.768KHZ的晶振,并接兩個22PF的電容終端和地相連,各芯片的電源部分分別接到有開關(guān)式電源產(chǎn)生的+5V電源上,芯片的接地端都接在公共地上,在這里接電源部分就不再一一詳述。</p><p> 設(shè)計采用動態(tài)顯示,輪流掃描各個LED使之顯示相應(yīng)的數(shù)型碼,當掃描頻率大于人眼所能識別的頻率時就看不到閃爍現(xiàn)象。動態(tài)顯示的亮度不如靜態(tài)顯示,但靜態(tài)顯示占用的I/O口資源較多,往往用移位
83、寄存器74LS164等來擴充其I/O口不足的情況,當顯示位數(shù)較多時,這樣勢必增加硬件開銷,增大成本,不利于開闊市場。本設(shè)計的突出之處在于硬件電路簡單,大大減少了硬件開銷,這樣又勢必增加了軟件開發(fā)的難度,但降低了成本有利于市場的開闊。</p><p><b> 圖4.2電路原理圖</b></p><p> 4.2.2 鍵盤子程序設(shè)計</p><
84、p> 多功能鍵盤程序的設(shè)計是本設(shè)計的難點,也是完成本設(shè)計的重點,當有鍵按下時,調(diào)用10ms延時程序,再判斷是否有鍵按下無則返回,若有先調(diào)用顯示程</p><p> 序再判斷是否松開,否則再轉(zhuǎn)到顯示程序,這樣避免了在按鍵松開之前能正常顯示。其中K1鍵功能最多,通過判斷K1鍵按下的次數(shù)來判斷是調(diào)時間還是定時,并對對應(yīng)的位置閃爍。本鍵盤深度為7級,即連續(xù)按下K1鍵8次時則返回到原來界面。當判斷鍵值為1時則為調(diào)
85、秒狀態(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鍵即可返回。由于鍵盤流程圖非常復雜,在此只表示秒,如圖4.3所示,其余略。</p><p> 4.2.3 日歷時鐘子程序設(shè)
86、計</p><p> DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。日歷時鐘DS1302的讀寫需要初始化時序、讀時序、寫時序。所有時序都是將主機作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機啟動寫時序開始,如果要求單總線器件回送是低位在先。讀寫都是16位數(shù)據(jù)高8位是地址低8位是數(shù)據(jù),在讀寫時要嚴格遵從其讀寫時序,否則讀寫將會失效。</p>
87、<p> 當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平,這一點我們要一定注意。</p><p> 當RST置為高電平時,在串行時鐘的SCLK的上升沿,DS1302從I/O端口讀入一位數(shù)據(jù),
88、8個串行時鐘脈沖就可以讀入一字節(jié)的數(shù)據(jù)。在串行時鐘的下降沿,DS1302向I/O端口輸出一位數(shù)據(jù),8個串行時鐘脈沖就可以輸出一字節(jié)的數(shù)據(jù)。</p><p> 顯示子程序設(shè)計電子產(chǎn)品是否實用其中顯示占了很重要的地位,很多數(shù)人都渴求用視覺效果好,范圍廣,直觀明了,LED符合以上的要求,但相應(yīng)的硬件設(shè)計相對復雜。</p><p> 4.2.4 顯示子程序設(shè)計</p><
89、p> 本設(shè)計的顯示部分具有消隱和閃爍功能,當時分秒等高位為0時顯示消隱, 此時在讀時間時更加明了,但低位不能顯示消隱。閃爍功能也是本設(shè)計的一個難點,本設(shè)計采用8個位標志位,其中一個標志位通過用定時器0產(chǎn)生一個周期大約為每秒1.5次,使閃爍時效果達到最好。此時定時器采用定時中斷的工作方式,這樣可以充分利用CPU資源。另外7個標志位是時分秒等的位標志位,當秒標志位置1時即秒開閃爍,與用中斷產(chǎn)生的標志位相結(jié)合,即在一個周期內(nèi)為0時此時
90、消隱為1時開顯示,這樣就使在調(diào)時間時對應(yīng)的位閃爍。</p><p> 4.2.5 部分程序代碼</p><p> #include<reg52.h></p><p> #include<intrins.h></p><p> #define uchar unsigned char </p>&l
91、t;p> #define uint unsigned int</p><p> sbit rw=P3^6;</p><p> sbit rs=P3^5;</p><p> sbit lcden=P3^4;</p><p> sbit s1=P3^0;</p><p> sbit s2=P3^1;<
92、;/p><p> sbit s3=P3^2;</p><p> sbit rd=P3^7;</p><p> sbit ce=P2^5;</p><p> sbit sclk=P2^6;</p><p> sbit io=P2^7;</p><p> sbit B1=B^0;</p
93、><p> sbit ACC7 = ACC^7;</p><p> uchar count,s1num;</p><p> char miao,shi,fen,k;</p><p> uchar code table[]=" 20 - - W: ";</p><p> uchar
94、code table1[]=" 00:00:00";</p><p> void delay(uint z)</p><p> {uint x,y;</p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);}</p><p&g
95、t; void write_com(uchar com)</p><p><b> {rs=0;</b></p><p><b> lcden=0;</b></p><p><b> P0=com;</b></p><p><b> delay(5);<
96、;/b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p> lcden=0;}</p><p> void write_date(uchar date)</p><p><b>
97、; {</b></p><p><b> rs=1;</b></p><p><b> lcden=0;</b></p><p><b> P0=date;</b></p><p><b> delay(5);</b></p&g
98、t;<p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p> lcden=0;}</p><p> void init()</p><p> {uchar num;</p><p><b
99、> rw=0;</b></p><p><b> lcden=0;</b></p><p> write_com(0x38);</p><p> write_com(0x0c);</p><p> write_com(0x06);</p><p> write_com
100、(0x01);</p><p> write_com(0x80);</p><p> for(num=0;num<16;num++)</p><p> {write_date(table[num]);</p><p> delay(5);}</p><p> write_com(0x80+0x40);&
101、lt;/p><p> for(num=0;num<12;num++)</p><p> {write_date(table1[num]);</p><p><b> delay(5);</b></p><p><b> }</b></p><p> TMOD=0x
102、01;</p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b>
103、TR0=1;</b></p><p><b> }</b></p><p> void write_sfm(uchar add,uchar date)</p><p><b> {</b></p><p> uchar shi,ge;</p><p>
104、shi=date/10;</p><p> ge=date%10;</p><p> write_com(0x80+0x40+add);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+ge);</p><p><b> }</b
105、></p><p> void write_nyr(uchar add,uchar date)</p><p><b> {</b></p><p> uchar shi,ge;</p><p> shi=date/10;</p><p> ge=date%10;</p>
106、;<p> write_com(0x80+add);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+ge);</p><p><b> }</b></p><p> uchar read1302(uchar com1)</p&
107、gt;<p><b> {</b></p><p> uchar shu,j,shu1;</p><p><b> ce=0;</b></p><p><b> ce=1;</b></p><p><b> B=com1;</b>&
108、lt;/p><p> for(shu=0;shu<8;shu++)</p><p><b> {</b></p><p><b> io=B1;</b></p><p><b> B=B>>1;</b></p><p><b&
109、gt; sclk=1;</b></p><p><b> sclk=0;</b></p><p><b> }</b></p><p><b> delay(5);</b></p><p> for(shu1=8; shu1>0; shu1--)&l
110、t;/p><p><b> {</b></p><p> ACC = ACC >>1; </p><p> ACC7 = io;</p><p><b> sclk = 1;</b></p><p><b> sclk
111、 = 0;</b></p><p><b> } </b></p><p> return(ACC); </p><p><b> } </b></p><p> void main()</p><p><b> {</b><
112、/p><p><b> init();</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> uint u,u1,u2;</p><p> u=read1302(0x81);</p
113、><p> miao=((u&0x70)>>4)*10 + (u&0x0F);</p><p> write_sfm(10,miao);</p><p> write_com(0x80+0x40+10);</p><p> u1 = read1302(0x83); //從分寄存器讀</p>&l
114、t;p> fen=((u1&0x70)>>4)*10 + (u1&0x0F); //將讀出數(shù)據(jù)轉(zhuǎn)化</p><p> write_sfm(7,fen);</p><p> write_com(0x80+0x40+7);</p><p> u2=read1302(0x85);</p><p> shi
115、=((u2&0x70)>>4)*10 + (u2&0x0F);</p><p> write_sfm(4,shi);</p><p> write_com(0x80+0x40+4);</p><p> u2=read1302(0x8d); </p><p> shi=((u2&0x70)>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機的電子萬年歷設(shè)計畢業(yè)論文
- 基于51單片機的電子萬年歷設(shè)計-畢業(yè)論文設(shè)計
- 畢業(yè)論文——基于51單片機的電子萬年歷的設(shè)計
- 基于51單片機電子萬年歷畢業(yè)論文
- 基于51單片機的電子萬年歷設(shè)計
- 基于51單片機的電子萬年歷畢業(yè)設(shè)計論文
- 基于單片機的電子萬年歷畢業(yè)論文
- 畢業(yè)論文(設(shè)計)基于單片機的電子萬年歷
- 51基于單片機的電子萬年歷畢業(yè)設(shè)計
- 51單片機萬年歷畢業(yè)設(shè)計論文
- 萬年歷畢業(yè)論文---基于at89s52單片機的電子萬年歷設(shè)計
- 基于51單片機的電子萬年歷的設(shè)計
- 基于51單片機電子萬年歷
- 【畢業(yè)設(shè)計】基于51單片機的電子萬年歷設(shè)計
- 畢業(yè)論文范文——基于51單片機的電子萬年歷的設(shè)計
- 基于單片機萬年歷的設(shè)計畢業(yè)論文
- 基于單片機萬年歷的設(shè)計畢業(yè)論文
- 基于51單片機的萬年歷畢業(yè)設(shè)計
- 單片機電子萬年歷畢業(yè)論文
- 單片機電子萬年歷畢業(yè)論文
評論
0/150
提交評論