單片機(jī)電子萬(wàn)年歷課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩40頁(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、<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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論