

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)電子萬(wàn)年歷</b></p><p><b> 課程設(shè)計(jì)</b></p><p><b> 指導(dǎo)教師:</b></p><p><b> 姓 名:</b></p><p><b> 學(xué) 號(hào):&
2、lt;/b></p><p><b> 專業(yè)班級(jí):</b></p><p><b> 目錄</b></p><p><b> 摘要</b></p><p> 一、單片機(jī)原理及應(yīng)用簡(jiǎn)介.........................................
3、2</p><p> 二、系統(tǒng)硬件設(shè)計(jì).................................................2</p><p> 2.1引腳功能及管腳電壓..................................2</p><p> 2.1.1 P0 口...................................
4、........3</p><p> 2.1.2 P1 口...............................................3</p><p> 2.1.3 P2 口..............................................4</p><p> 2.1.4 P3 口.................
5、...........................4</p><p> 2.1.5 RST.................................................4</p><p> 2.1.6 ALE/PROG........................................4</p><p> 2.1.7 PSE
6、N...............................................5</p><p> 2.1.8 EA/VPP.............................................5</p><p> 2.1.9 XTAL1..............................................5</p>
7、;<p> 2.2.0 XTAL2..............................................5</p><p> 三、系統(tǒng)總體方案 ................................................5</p><p> 3.1.1微處理器...................................
8、.............5</p><p> 3.1.2顯示電路................................................6</p><p> 四、硬件電路的總體框圖設(shè)計(jì).......................................8</p><p> 五、硬件電路原理圖設(shè)計(jì)...............
9、............................8</p><p> 六、主程序流程圖設(shè)計(jì).............................................10</p><p> 七、仿真過(guò)程.....................................................11</p><p> 八、仿真
10、結(jié)果.....................................................11</p><p> 附一 源程序代碼..................................................13</p><p> 附二 參考文獻(xiàn)..................................................
11、..36</p><p><b> 摘 要 </b></p><p> 單片機(jī)應(yīng)用技術(shù)飛速發(fā)展,縱觀我們現(xiàn)在生活的各個(gè)領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機(jī)上各種儀表的控制,從計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開(kāi)單片機(jī)。單片機(jī)是集CPU ,RAM ,ROM
12、,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。而51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次畢業(yè)設(shè)計(jì)通過(guò)對(duì)它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開(kāi)發(fā)軟、硬的能力。 </p><p> 本文通過(guò)對(duì)一個(gè)基于單片機(jī)的能實(shí)現(xiàn)萬(wàn)年歷功能電子時(shí)鐘的設(shè)計(jì),從而達(dá)到學(xué)習(xí)、了解單片機(jī)相關(guān)指令在各方面的應(yīng)用。系統(tǒng)由主控制器AT89C52、顯示電路、按鍵電路、和復(fù)位電
13、路等部分構(gòu)成,能實(shí)現(xiàn)時(shí)鐘日歷顯示的功能,能進(jìn)行時(shí)、分、秒的顯示。</p><p> 關(guān)鍵詞 : 單片機(jī) , 萬(wàn)年歷</p><p> 一、單片機(jī)原理及應(yīng)用簡(jiǎn)介</p><p> 隨著國(guó)內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā)展。集成技術(shù)的最新發(fā)展之一是將CPU和外圍芯片,如程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、并行、串行I/O口、定時(shí)/計(jì)數(shù)器、中斷控制器及
14、其他控制部件集成在一個(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)算單元等。因此,只要外加一些擴(kuò)展電路及必要的通道接口就可以構(gòu)成各種計(jì)算機(jī)應(yīng)用系統(tǒng),如工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、自動(dòng)測(cè)試系統(tǒng)、萬(wàn)年歷電子表等。</p><p><b> 二、系統(tǒng)
15、硬件設(shè)計(jì)</b></p><p> 2.1引腳功能及管腳電壓</p><p> AT89C52為8 位通用微處理器,采用工業(yè)標(biāo) </p><p> AT89C52引腳圖</p><p> 準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。功能包括對(duì)會(huì)聚主IC 內(nèi)部寄存器、數(shù)據(jù)R
16、AM及外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負(fù)端。P0~P3 為可編程通用I/O 腳,其功能用途由軟件定義,在本設(shè)計(jì)中,P0 端口(
17、32~39 腳)被定義為N1 功能控制端口,分別與N1的相應(yīng)功能管腳相連接,13 腳定義為IR輸入端,10 腳和11腳定義為I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12 腳、27 腳及28 腳定義為握手信號(hào)功能端口,連接主板CPU 的相應(yīng)功能端,用于當(dāng)前制式的檢測(cè)及會(huì)聚調(diào)整狀態(tài)進(jìn)入的控制功能。 </p><p> 2.1.1 P0 口</p><p>
18、; P0 口是一組8 位漏極開(kāi)路型雙向I/O 口, 也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的 </p><p> 方式驅(qū)動(dòng)8 個(gè)TTL邏輯門電路,對(duì)端口P0 寫(xiě)“1”時(shí),可作為高阻抗輸入端用。 </p><p> 在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。 </p><p>
19、; 在Flash 編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。 </p><p> 2.1.2 P1 口</p><p> P1 是一個(gè)帶內(nèi)部上拉電阻的8 位雙向I/O 口, P1 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯 </p><p> 門電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,
20、此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉 </p><p> 電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。 </p><p> 與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX), </p><p><b> 參見(jiàn)表1。 </b>
21、</p><p> Flash 編程和程序校驗(yàn)期間,P1 接收低8 位地址。 </p><p> 表.P1.0和P1.1的第二功能 </p><p> 2.1.3 P2 口</p><p> P2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯 </p><
22、;p> 門電路。對(duì)端口P2 寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。 </p><p> 在訪問(wèn)外部程序存儲(chǔ)器或16 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR 指令)時(shí),P2 口送出高8 位地址數(shù)據(jù)。在訪問(wèn)8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX @RI 指令)時(shí),P2 口輸出P2
23、 鎖存器的內(nèi)容。 </p><p> Flash 編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。 </p><p> 2.1.4 P3 口</p><p> P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏 </p><p> 輯門電路。對(duì)P3 口寫(xiě)入“1”時(shí),它們被內(nèi)
24、部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。 </p><p> P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能 </p><p> P3 口還接收一些用于Flash 閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。 </p><p><b> 2.1.5 RST</b></p&g
25、t;<p> 復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。 </p><p> 2.1.6 ALE/PROG</p><p> 當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字 </p><p> 節(jié)。一般情況下,ALE 仍以時(shí)鐘振蕩頻率的1/6 輸出固定的脈沖信號(hào),因
26、此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE 脈沖。 </p><p> 對(duì)Flash 存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。 </p><p> 如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條 </p><p> MOVX 和MOV
27、C指令才能將ALE 激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE 禁止位無(wú)效。 </p><p> 2.1.7 PSEN</p><p> 程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52 由外部程序存儲(chǔ)器取指令(或數(shù) </p><p> 據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外
28、部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。 </p><p> 2.1.8 EA/VPP</p><p> 外部訪問(wèn)允許。欲使CPU 僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H—FFFFH),EA 端必須保持低電平(接 </p><p> 地)。需注意的是:如果加密位LB1 被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。 </p><p> 如EA端為
29、高電平(接Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。 </p><p> Flash 存儲(chǔ)器編程時(shí),該引腳加上+12V 的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V 編程電壓Vpp。 </p><p> 2.1.9 XTAL1</p><p> 振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 </p><p> 2.2.
30、0 XTAL2</p><p> 振蕩器反相放大器的輸出端。</p><p><b> 三、系統(tǒng)總體方案 </b></p><p> 我選用的是單片機(jī)(AT89C52)來(lái)實(shí)現(xiàn)電子萬(wàn)年歷的功能。共具備兩個(gè)功能:</p><p> (1)顯示年月日及分秒信息</p><p> ?。?)具有可調(diào)
31、整日期和時(shí)間功能。</p><p> 該電子萬(wàn)年歷能夠成功實(shí)現(xiàn)時(shí)鐘運(yùn)行,調(diào)整功能,且精確度經(jīng)調(diào)試一天的誤差在2S內(nèi)。</p><p><b> 3.1.1微處理器</b></p><p> 在設(shè)計(jì)過(guò)程中我使用12MHZ晶振與單片機(jī)AT89C52相連接,通過(guò)軟件編程的方法實(shí)現(xiàn)了以24小時(shí)為一個(gè)周期同時(shí)顯示小時(shí),分鐘和秒的要求,該定時(shí)鬧鐘設(shè)有
32、九個(gè)按鍵,使之具備了校時(shí)、定時(shí)功能。利用單片機(jī)定時(shí)器及計(jì)數(shù)器產(chǎn)生定時(shí)效果通過(guò)編程形成數(shù)字鐘效果,再利用數(shù)碼管動(dòng)態(tài)掃描顯示單片機(jī)內(nèi)部處理的數(shù)據(jù)。同時(shí)通過(guò)端口讀入當(dāng)前外部控制狀態(tài)來(lái)改變程序的不同狀態(tài),實(shí)現(xiàn)不同功能。</p><p> 在PROTEUS軟件環(huán)境下的AT89C52芯片如圖4所示:</p><p> 圖4 PROTEUS軟件環(huán)境下的AT89C52芯片 </
33、p><p><b> 3.1.2顯示電路</b></p><p> 就時(shí)鐘而言,通??刹捎靡壕э@示或數(shù)碼管顯示。由于一般的段式液晶屏,需要專門的驅(qū)動(dòng)電路,而且液晶顯示作為一種被動(dòng)顯示,可視性相對(duì)較差;對(duì)于具有驅(qū)動(dòng)電路和微處理器接口的液晶顯示模塊(字符或點(diǎn)陣),一般多采用并行接口,對(duì)微處理器的接口要求較高,占用資源多。另外,AT89C52本身無(wú)專門的液晶驅(qū)動(dòng)接口,因此,
34、本設(shè)計(jì)采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合。初始化時(shí),由軟件編寫(xiě)的指令就集中在顯示功能的設(shè)置上。LCD3 AMPIRE 128×64的指令可帶一個(gè)、兩個(gè)參數(shù),或無(wú)參數(shù)。若指令中含有參數(shù),則每條指令執(zhí)行時(shí)均須先送入?yún)?shù),再送入指令代碼。由于狀態(tài)位作用不一樣,因此執(zhí)行不同指令必須檢測(cè)不同狀態(tài)位。液晶顯示模塊LCD3 AMPIRE 128×64如圖5所示:</p>
35、;<p> 圖5 顯示電路AMPIRE 128×643按鍵電路</p><p> 由于我設(shè)計(jì)的是電子萬(wàn)年歷,需要實(shí)現(xiàn)多種功能的顯示,并要能夠切換顯示和調(diào)節(jié)年月日,因此,在設(shè)計(jì)過(guò)程中按鍵的設(shè)計(jì)就顯得尤為重要。</p><p> 在設(shè)計(jì)過(guò)程中我一共采用了2個(gè)按鍵,盡量在小的空間里實(shí)現(xiàn)最多的功能。按鍵電路如圖6所示:</p><p><
36、;b> 圖6 按鍵電路 </b></p><p> 四、硬件電路的總體框圖設(shè)計(jì)</p><p> 該設(shè)計(jì)的硬件電路的總體框圖如圖7所示:</p><p><b> 圖7 總體框圖</b></p><p> 五、硬件電路原理圖設(shè)計(jì)</p><p> 該萬(wàn)年歷是以單片
37、機(jī)AT89C52為核心來(lái)完成的。</p><p> 在硬件電路中采用P1口作為6位液晶顯示電路的驅(qū)動(dòng)接口,這是由于P1口輸出驅(qū)動(dòng)電路工作處于開(kāi)漏狀態(tài),它的驅(qū)動(dòng)能力強(qiáng),故只需外接上拉電阻便可以把LED數(shù)碼管點(diǎn)亮。因?yàn)楣碴幍腖ED數(shù)碼管它的驅(qū)動(dòng)電流是分開(kāi)的,在單片機(jī)進(jìn)行動(dòng)態(tài)掃描的時(shí)候不會(huì)影響彼此的電流,故該電路中的8位LED數(shù)碼管均用共陽(yáng)陰極的數(shù)碼管。電路原理圖如圖8所示:</p><p>
38、<b> 圖8 硬件電路</b></p><p> 六、主程序流程圖設(shè)計(jì)</p><p> 該設(shè)計(jì)主程序流程圖如圖9所示:</p><p> 圖9 主程序流程圖</p><p> 基本顯示模塊設(shè)計(jì)的重點(diǎn)是由顯示代碼取得相應(yīng)的段碼、顯示段碼數(shù)據(jù)的串行發(fā)送,程序流程如圖1-11所示。其中時(shí)個(gè)位的段碼必須加上
39、小數(shù)點(diǎn),即帶小數(shù)點(diǎn)顯示時(shí)個(gè)位,目的是以小數(shù)點(diǎn)符代替時(shí)間分割符“-”。</p><p> 軟件秒脈沖發(fā)生器其實(shí)質(zhì)是利用了定時(shí)器0的定時(shí)溢出中斷,將它設(shè)定為100ms溢出中斷,則10次中斷的時(shí)間正好為1s。將時(shí)間參數(shù)設(shè)計(jì)為100ms的原因有兩個(gè):</p><p> 1)根據(jù)系統(tǒng)時(shí)鐘主頻為6M的特點(diǎn),16位定時(shí)器最大定時(shí)時(shí)間為65536×2M(M為機(jī)器周期,這里是2μS),即131
40、ms,取整數(shù)100便于計(jì)次數(shù);</p><p> ?。玻┤缛〉奶?,如10ms,則定時(shí)器頻繁中斷,干擾系統(tǒng)正常運(yùn)行效果。</p><p> 有了秒脈沖發(fā)生器,10次中斷為1s,秒指示燈閃亮1次,秒變量單元加1,60后分變量單元加1,如果為60分則時(shí)變量單元加1。任何一個(gè)變量的變化,則顯示刷新一次(更新)。上述思想的實(shí)現(xiàn)均集成在定時(shí)器0的中斷子程序中。</p><p&g
41、t; 該設(shè)計(jì)顯示模塊流程圖如圖10所示:</p><p> 圖10 基本顯示模塊的程序流程圖</p><p><b> 七、仿真過(guò)程</b></p><p> 1、仿真:打開(kāi)WAVE6000,輸入所編寫(xiě)的源程序并對(duì)程序進(jìn)行編譯,在軟件的幫助下檢查其中的錯(cuò)誤并進(jìn)行反復(fù)修改,知道編譯正確后運(yùn)行,確保沒(méi)有錯(cuò)誤以后對(duì)正確的源程序進(jìn)行保存,
42、保存時(shí)給其命名,以便將來(lái)載入程序時(shí)容易找到。</p><p> 2、打開(kāi)PROTEUS軟件,并出畫(huà)單片機(jī)電子萬(wàn)年歷具體運(yùn)行電路圖。</p><p> 3、檢查所畫(huà)電路運(yùn)行圖,確保沒(méi)有錯(cuò)誤以后,在PROTEUS下對(duì)原理圖進(jìn)行加載WAVE6000下的源程序。</p><p> 4、加載完成后,單擊電路圖框下的開(kāi)始按鈕,進(jìn)行仿真,觀察LED數(shù)碼管現(xiàn)實(shí)情況,此時(shí)LED
43、數(shù)碼管開(kāi)始顯示數(shù)字。調(diào)節(jié)開(kāi)關(guān)進(jìn)行時(shí)間的調(diào)節(jié)。當(dāng)秒的顯示間隔快與或慢與實(shí)際間隔時(shí),調(diào)節(jié)石英晶體震蕩器的頻率參數(shù),從而使秒的間隔達(dá)到標(biāo)準(zhǔn)。然后檢查電路其它問(wèn)題,并對(duì)其的各參數(shù)進(jìn)行調(diào)整,使之正確。</p><p><b> 八、仿真結(jié)果</b></p><p> 通過(guò)在WAVE6000下對(duì)源程序的編譯,改正了其中的很多錯(cuò)誤,然后運(yùn)行,保證源程序的正確性。然后按原理圖選擇
44、正確合理的電器元件,畫(huà)出正確的電路圖,加載源程序運(yùn)行,順利實(shí)現(xiàn)了單片機(jī)數(shù)字電子鐘的“小時(shí)”、“分鐘”、“秒”的顯示。該電子萬(wàn)年歷的顯示效果及電子萬(wàn)年歷時(shí)間和日期的運(yùn)行效果如圖12所示:</p><p> 圖12 電子萬(wàn)年歷的運(yùn)行效果</p><p><b> 九、課程設(shè)計(jì)體會(huì)</b></p><p> 通過(guò)這一周的課程設(shè)計(jì),我學(xué)到了
45、不少的知識(shí)。把以前沒(méi)有學(xué)好的模擬電路的知識(shí)進(jìn)行了補(bǔ)充和加強(qiáng)。這使我受益很大。加深了我對(duì)于單片機(jī)和數(shù)字電路的認(rèn)識(shí),相信在以后的學(xué)習(xí)和工作中碰到這些基礎(chǔ)的元器件我會(huì)更加得心應(yīng)手。通過(guò)查閱大量的資料,我獲得了以前在課堂上學(xué)不到的東西,我想這對(duì)于以后的畢業(yè)設(shè)計(jì),或者工作也好,都是很有幫助的。我很認(rèn)真地對(duì)待這個(gè)過(guò)程中的每一個(gè)細(xì)節(jié),希望自己能做得更好。希望今后還有這樣的機(jī)會(huì),能夠讓我學(xué)到更多的知識(shí)。在此次的數(shù)字鐘設(shè)計(jì)過(guò)程中,更進(jìn)一步地熟悉了芯片的結(jié)
46、構(gòu)及掌握了各芯片的工作原理和其具體的使用方法。</p><p> 在連接六進(jìn)制,十進(jìn)制,六十進(jìn)制的進(jìn)位及十二進(jìn)制的接法中,要求熟悉邏輯電路及其芯片各引腳的功能,那么在電路出錯(cuò)時(shí)便能準(zhǔn)確地找出錯(cuò)誤所在并及時(shí)糾正了。</p><p> 在設(shè)計(jì)電路中,往往是先仿真后連接實(shí)物圖,但有時(shí)候仿真和電路連接并不是完全一致的 ,因此在實(shí)際的電路連接中往往容易遺漏。在設(shè)計(jì)電路的連接圖中出錯(cuò)的主要原因都是
47、接線和芯片的接觸不良以及接線的錯(cuò)誤所引起的。</p><p><b> 對(duì)該設(shè)計(jì)的建議:</b></p><p> 此次的電子萬(wàn)年歷設(shè)計(jì)重在于仿真和接線,雖然能把電路圖接出來(lái),并能正常顯示,但對(duì)于電路本身的原理并不是十分熟悉.總的來(lái)說(shuō),通過(guò)這次的設(shè)計(jì)實(shí)驗(yàn)更進(jìn)一步地增強(qiáng)了實(shí)驗(yàn)的動(dòng)手能力。</p><p> 學(xué)無(wú)止境,我們現(xiàn)在所做的一切都還只
48、是一個(gè)開(kāi)始。</p><p><b> 附1 源程序代碼</b></p><p> /*******************************************************************************************/</p><p> #include <AT89X52.H&g
49、t;</p><p> #include <ctype.h></p><p> #include <string.h></p><p> #include <stdlib.h></p><p> #include <stdio.h></p><p> #incl
50、ude <math.h></p><p> /*******************************************************************************************/</p><p> #define Disp_On 0x3f // 顯示開(kāi)指令 //</p><p> #d
51、efine Disp_Off 0x3e // 顯示關(guān)指令 //</p><p> #define Col_Add 0x40 // 定位到第0列指令 //</p><p> #define Page_Add 0xb8 // 定位到第0頁(yè)指令 //</p><p> #define Start_Line 0xc0 // 定位
52、從DDROM中的第0行開(kāi)始往屏幕上顯示 //</p><p> /*******************************************************************************************/</p><p> sbit RST = P2^0; // 復(fù)位端 //</p><p> sbit E
53、 = P2^1; // 使能端 //</p><p> sbit RW = P2^2; // 讀寫(xiě)控制端 //</p><p> sbit RS = P2^3; // 數(shù)據(jù)或指令寄存器選擇端 //</p><p> sbit CS1 = P2^4; // 左屏使能 //</p><p> sbit CS2
54、 = P2^5; // 右屏使能 //</p><p> /*******************************************************************************************/</p><p> /**********************************************************
55、***************************************/</p><p> sbit RST2 = P3^5; // 復(fù)位線引腳 //</p><p> sbit CLK = P3^6; // 時(shí)鐘線引腳 //</p><p> sbit IO = P3^7; // 數(shù)據(jù)線引腳 //
56、 // 時(shí)鐘部分 //</p><p> /*************************************************************************************************/</p><p> /********************************************************
57、*****************************************/</p><p> sbit ACC7 = ACC^7;</p><p> sbit ACC0 = ACC^0;</p><p> /************************************************************************
58、*************************/</p><p> bit flash;</p><p> bit K1,K2,K3,K4,K5,K6,K7,KT;</p><p> /**************************************************************************************
59、***********/</p><p> unsigned char Curtime[7]={0,0,0,0,0,0,0};</p><p> unsigned char day,sec,min,hour,date,month,year,hms,n,fla_cou; // 定義時(shí)間日期顯示緩存 //</p><p> unsigned
60、char code yejing[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};</p><p> /*************************************************************************************************/</p><p> vo
61、id InputByte(unsigned char Date); // 子函數(shù)聲明 // // 時(shí)鐘部分 //</p><p> OutputByte(void);</p><p> void WriteTo1302(unsigned char Addr,unsigned char Date);</p><p> ReadFro
62、m1302(unsigned char Addr);</p><p> void SetTime(unsigned char *pSecDa);</p><p> void Init_T0(void);</p><p> void FlashKey(void);</p><p> void Add(void);</p>
63、<p> void Init_Clock(void);</p><p> void Refresh(void);</p><p> /*************************************************************************************************/</p><p>
64、char code huan[]={ // 歡 16*16 //</p><p> 0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00,</p><p> 0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18
65、,0x30,0x60,0x20,0x00</p><p><b> };</b></p><p> char code ying[]={ // 迎 16*16 //</p><p> 0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,
66、0x00,</p><p> 0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00</p><p><b> };</b></p><p> char code shi1[]={ // 使 16*16 //</p>
67、<p> 0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00,</p><p> 0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00</p><p><
68、b> };</b></p><p> char code yong[]={ // 用 16*16 //</p><p> 0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,</p><p> 0x80,0x40,0x30,0x
69、0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00</p><p><b> };</b></p><p> char code shu[]={ // 數(shù) 16*16 //</p><p> 0x10,0x92,0x54,0x38,0xFF,0x38,0x5
70、4,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,</p><p> 0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00</p><p><b> };</b></p><p> char
71、 code ma[]={ // 碼 16*16 //</p><p> 0x02,0x82,0xE2,0x5E,0x42,0xC2,0x00,0x02,0xFA,0x82,0x82,0x82,0xFE,0x80,0x00,0x00,</p><p> 0x01,0x00,0x7F,0x10,0x10,0x3F,0x00,0x04,0x04,0x04,0x44,0x84,0x4
72、0,0x3F,0x00,0x00</p><p><b> };</b></p><p> char code shi[]={ // 時(shí) 16*16 //</p><p> 0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,
73、</p><p> 0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00</p><p><b> };</b></p><p> char code zhong[]={ // 鐘 16*16 //</p><
74、p> 0x40,0x30,0x2C,0xEB,0x28,0x28,0x00,0xF8,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,</p><p> 0x01,0x01,0x01,0xFF,0x41,0x21,0x00,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x00,0x00</p><p><b>
75、 };</b></p><p> char code zhi[]={ // 制 16*16 //</p><p> 0x00,0x50,0x4F,0x4A,0x48,0xFF,0x48,0x48,0x48,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,</p><p> 0x00,0x00,0x3F,0x01,0x01
76、,0xFF,0x21,0x61,0x3F,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00</p><p><b> };</b></p><p> char code zuo[]={ // 作 16*16 //</p><p> 0x80,0x40,0x20,0xF8,0x07,0x22,0x18,0x0C,0
77、xFB,0x48,0x48,0x48,0x68,0x48,0x08,0x00,</p><p> 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x04,0x04,0x04,0x04,0x06,0x04,0x00</p><p><b> };</b></p><p> char code ma
78、ohao[]={ // : 16*16 //</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x0
79、0,0x00,0x00</p><p><b> };</b></p><p> char code guo[]={ // 郭 16*16 //</p><p> 0x00,0x04,0x84,0xB4,0xAD,0x6A,0xDA,0x02,0x02,0xFC,0x04,0x7A,0x86,0x00,0x00,0x00,<
80、;/p><p> 0x00,0x04,0x04,0x04,0x22,0x7F,0x02,0x02,0x00,0x7F,0x02,0x04,0x07,0x00,0x00,0x00</p><p><b> };</b></p><p> char code bing[]={ // 兵 16*16 //</p><p&g
81、t; 0x00,0x00,0x00,0x00,0xFC,0x24,0x24,0x22,0xE2,0x12,0x11,0x10,0x00,0x00,0x00,0x00,</p><p> 0x40,0x42,0x22,0x22,0x13,0x0A,0x02,0x02,0x01,0x05,0x09,0x11,0x61,0x01,0x00,0x00</p><p><b> };
82、</b></p><p> char code gantanhao[]={ // ! 16*16 //</p><p> 0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x00,0x00,0x00,0x19,0x
83、19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00</p><p><b> };</b></p><p> char code xing[]={ // 星 16*16 //</p><p> 0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0
84、xEA,0x2A,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00,</p><p> 0x00,0x48,0x46,0x41,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x49,0x41,0x40,0x00</p><p><b> };</b></p><p> char co
85、de qi[]={ // 期 16*16 //</p><p> 0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,</p><p> 0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3
86、F,0x00,0x00</p><p><b> };</b></p><p> char code nian[]={ // 年 16*16 //</p><p> 0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00,</
87、p><p> 0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00</p><p><b> };</b></p><p> char code yue[]={ // 月 16*16 //</p><p>
88、; void init_lcd()0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00,</p><p> 0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00</p><p>
89、;<b> };</b></p><p> char code ri[]={ // 日 16*16 //</p><p> 0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,</p><p> 0x00,0x00,0x00
90、,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00</p><p><b> };</b></p><p> char code shi2[]={ // 時(shí) 16*16 //</p><p> 0x00,0xFC,0x44,0x44,0x44,0xFC,0
91、x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,</p><p> 0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00</p><p><b> };</b></p><p> ch
92、ar code fen[]={ // 分 16*16 //</p><p> 0x80,0x40,0x20,0x98,0x87,0x82,0x80,0x80,0x83,0x84,0x98,0x30,0x60,0xC0,0x40,0x00,</p><p> 0x00,0x80,0x40,0x20,0x10,0x0F,0x00,0x00,0x20,0x40,0x3F,0x00,
93、0x00,0x00,0x00,0x00,</p><p><b> };</b></p><p> char code miao[]={ // 秒 16*16 //</p><p> 0x12,0x12,0xD2,0xFE,0x91,0x11,0xC0,0x38,0x10,0x00,0xFF,0x00,0x08,0x10,0x60,
94、0x00,</p><p> 0x04,0x03,0x00,0xFF,0x00,0x83,0x80,0x40,0x40,0x20,0x23,0x10,0x08,0x04,0x03,0x00</p><p><b> };</b></p><p> char code tiao[]={ // 調(diào) 16*16</p>&l
95、t;p> 0x20,0x21,0xEE,0x04,0x00,0x00,0xFF,0x29,0xA9,0xBF,0xA9,0xA9,0x01,0xFF,0x00,0x00,</p><p> 0x00,0x00,0x1F,0x88,0x44,0x30,0x0F,0x00,0x0F,0x04,0x04,0x4F,0x80,0x7F,0x00,0x00</p><p><b>
96、; };</b></p><p> char code kongbai2[]={ // '空白' 16*16 //</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x0
97、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p><b> };</b></p><p> char code kongbai1[]={ // '空白' 8*16 //</p><p> 0
98、x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p><b> };</b></p><p> char code sz0[]={ // 0 8*16 //</p><p> 0x00,0xE0,0x10,0
99、x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,</p><p><b> };</b></p><p> char code sz1[]={ //數(shù)字 1 8*16 //</p><p> 0x00,0x10,0x10,0xF8,0x00,0x00
100、,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,</p><p><b> };</b></p><p> char code sz2[]={ //數(shù)字 2 8*16 //</p><p> 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x
101、00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,</p><p><b> };</b></p><p> char code sz3[]={ // 數(shù)字 3 8*16 //</p><p> 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,
102、0x20,0x20,0x11,0x0E,0x00,</p><p><b> };</b></p><p> char code sz4[]={ // 數(shù)字 4 8*16 //</p><p> 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3
103、F,0x24,0x00,</p><p><b> };</b></p><p> char code sz5[]={ // 數(shù)字 5 8*16 //</p><p> 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,&
104、lt;/p><p><b> };</b></p><p> char code sz6[]={ // 數(shù)字 6 8*16 //</p><p> 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,</p>&l
105、t;p><b> };</b></p><p> char code sz7[]={ // 數(shù)字 7 8*16 //</p><p> 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,</p><p><b&
106、gt; };</b></p><p> char code sz8[]={ // 數(shù)字 8 8*16 //</p><p> 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,</p><p><b> };</b
107、></p><p> char code sz9[]={ // 數(shù)字 9 8*16 //</p><p> 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,</p><p><b> };</b></p>
108、;<p> char code *shuzi[]={sz0,sz1,sz2,sz3,sz4,sz5,sz6,sz7,sz8,sz9};</p><p> unsigned char code FirstPage[]={ // 開(kāi)機(jī)畫(huà)面 DPY工作室 //</p><p> 0x60,0xE0,0xE0,0xE0,0xE0,0x60,0xE0,0xE0,0xE0,0
109、xC0,0x80,0x00,0x00,0x00,0x00,0x00,</p><p> 0x00,0x00,0x60,0xE0,0xE0,0xE0,0x60,0x60,0x60,0xE0,0xE0,0xE0,0xC0,0x80,0x00,0x00,</p><p> 0x00,0x00,0x00,0x60,0xE0,0xE0,0xE0,0xE0,0x60,0x00,0x00,0x60,
110、0xE0,0xE0,0xE0,0x60,</p><p> 0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
111、,0x00,</p><p> 0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xF0,0x00,0x00,0xC0,0xF8,0xF8,0x00,0x00,0x00,</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,</p&g
112、t;<p> 0x00,0x38,0xF8,0xF8,0xE0,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01,0x1F,0xFF,0xFF,0xFC,0x00,0x00,0x00,</p><p>
113、 0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x80,0xC0,0xFF,0xFF,0xFF,0x3E,0x00,</p><p> 0x00,0x00,0x00,0x00,0x00,0x07,0x3F,0xFF,0xFE,0xF0,0xC0,0xF8,0xFF,0x0F,0x01,0x00,</p><p> 0x00,0x00,0x0
114、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1C,0x1C,</p><p> 0x1C,0xFE,0xFE,0x3F,0x0F,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x00,0x00,0x80,0xE0,0xFC,0x
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)電子萬(wàn)年歷課程設(shè)計(jì)
- 單片機(jī)電子萬(wàn)年歷課程設(shè)計(jì)
- 單片機(jī)電子萬(wàn)年歷課程設(shè)計(jì)
- 單片機(jī)電子萬(wàn)年歷課程設(shè)計(jì) (2)
- 51單片機(jī)電子萬(wàn)年歷課程設(shè)計(jì)
- 單片機(jī)電子萬(wàn)年歷課程設(shè)計(jì) (2)
- 單片機(jī)課程設(shè)計(jì)—電子萬(wàn)年歷
- 單片機(jī)課程設(shè)計(jì)-電子萬(wàn)年歷
- 單片機(jī)課程設(shè)計(jì)-- 電子萬(wàn)年歷
- 單片機(jī)課程設(shè)計(jì)---電子萬(wàn)年歷設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--萬(wàn)年歷
- 單片機(jī)萬(wàn)年歷課程設(shè)計(jì)
- 單片機(jī)萬(wàn)年歷課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-萬(wàn)年歷
- 萬(wàn)年歷單片機(jī)課程設(shè)計(jì)
- 基于51單片機(jī)電子萬(wàn)年歷
- 萬(wàn)年歷課程設(shè)計(jì)--萬(wàn)年歷電子時(shí)鐘
- 單片機(jī)萬(wàn)年歷課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告(萬(wàn)年歷)
- 單片機(jī)萬(wàn)年歷課程設(shè)計(jì) (2)
評(píng)論
0/150
提交評(píng)論