2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  畢 業(yè) 設(shè) 計(jì)(論 文)</p><p>  系 (院): 信息工程學(xué)院 </p><p>  專 業(yè) : 電子信息工程 </p><p>  班 級 : </p><p>  學(xué)生姓名 :

2、 </p><p>  學(xué) 號 : </p><p>  課 題 : 基于單片機(jī)的數(shù)字鐘的設(shè)計(jì) </p><p>  指導(dǎo)教師 : </p><p>  2013年

3、 4 月10日</p><p><b>  目 錄</b></p><p><b>  摘要1</b></p><p><b>  引言2</b></p><p>  1 AT89S52單片機(jī)介紹3</p><p>  2 設(shè)計(jì)功能及說明5&

4、lt;/p><p>  3 數(shù)字中的硬件設(shè)計(jì)6</p><p>  3.1 最小系統(tǒng)設(shè)計(jì)6</p><p>  3.2 LED顯示電路9</p><p>  3.3 數(shù)字中的原理圖10</p><p>  4 數(shù)字鐘的軟件設(shè)計(jì) 11</p><p>  4.1 系統(tǒng)軟件設(shè)計(jì)流程圖12&l

5、t;/p><p>  5 單模塊流程設(shè)計(jì)及程序設(shè)計(jì)15</p><p>  5.1 初始化模板15</p><p>  5.2 開關(guān)檢測模塊16</p><p>  5.3 顯示主程序17</p><p>  5.4 鬧鈴及整點(diǎn)報(bào)時(shí)判斷程序(EIGHT)8</p><p>  5.5 中斷

6、(TO)計(jì)時(shí)程序19</p><p>  5.6 中斷(T1)預(yù)置程序19</p><p>  5.7 中斷(INT0)設(shè)定程序19</p><p>  6 系統(tǒng)仿真 19</p><p>  6.1 PROTOES軟件介紹19</p><p>  6.2 數(shù)字鐘系統(tǒng)PROTOES仿真20</p>

7、;<p>  7 調(diào)試與功能說明20</p><p>  7.1 硬件調(diào)試21</p><p>  7.2 系統(tǒng)性能測試與功能說明21</p><p>  7.3 系統(tǒng)時(shí)鐘誤差分析21</p><p>  7.4 軟件調(diào)試問題及解決21</p><p>  8 單模塊軟件測試22</p&

8、gt;<p>  8.1 編碼中常用的程序結(jié)構(gòu)說明22</p><p>  8.2 單模塊軟件測試中的問題及解決22</p><p>  9 軟件部分燒寫調(diào)試23</p><p><b>  總結(jié)26</b></p><p><b>  致謝27</b></p>

9、<p><b>  參考文獻(xiàn):28</b></p><p>  基于單片機(jī)的數(shù)字鐘的設(shè)計(jì)</p><p><b>  摘 要</b></p><p>  單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。由RAM ,ROM,CPU構(gòu)成,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動化

10、上。而51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次課程設(shè)計(jì)通過對它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬的能力。</p><p>  本設(shè)計(jì)是通過單片機(jī)設(shè)計(jì)一個(gè)多功能電子表,要求不僅具有電子時(shí)鐘的功能還具有鬧鈴、設(shè)定鬧鈴時(shí)間、整點(diǎn)報(bào)時(shí)、生日提醒功能,而且能夠預(yù)置生日時(shí)間</p><p>  關(guān)鍵字:單片機(jī);多功能電子表;跑表;數(shù)碼管顯示</p><p

11、>  引言 </p><p>  1957年,Ventura發(fā)明了世界上第一個(gè)電子表,從而奠定了電子表的基礎(chǔ),電子表開始迅速發(fā)展起來?,F(xiàn)代的電子表是基于單片機(jī)的一種計(jì)時(shí)工具,采用延時(shí)程序產(chǎn)生一定的時(shí)間中斷,用于一秒的定義,通過計(jì)數(shù)方式進(jìn)行滿六十秒分鐘進(jìn)一,滿六十分小時(shí)進(jìn)一,滿二十四小時(shí)小時(shí)清零。從而達(dá)到計(jì)時(shí)的功能,是人民日常生活

12、不可缺少的工具。 </p><p>  現(xiàn)在高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動,用LED顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí)、分、秒顯示時(shí)間的功能,還可以進(jìn)

13、行時(shí)和分的校對,片選的靈活性好。</p><p>  1 AT89S52單片機(jī)介紹 </p><p>  AT89S52 具有以下標(biāo)準(zhǔn)功能:8k 字節(jié) Flash,256 字節(jié) RAM,32 位 I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè) 16 位定時(shí)器/計(jì)數(shù)器,一個(gè) 6 向量 2 級中斷結(jié)構(gòu),

14、全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至 0Hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許 RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止(1)。</p><p>  圖 1.1 單片機(jī)引腳圖</p><p>  VCC : 電源

15、 GND: 地</p><p>  P0 口:P0 口是一個(gè) 8 位漏極開路的雙向 I/O 口。作為輸出口,每位能驅(qū)動 8 個(gè) TTL 邏輯電平。對 P0 端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時(shí),P0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0 具有內(nèi)部上拉電阻。在 flash 編程時(shí),P0 口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校時(shí),需要外部上拉電阻

16、。</p><p>  P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,p1 輸出緩沖器能驅(qū)動 4 個(gè)TTL 邏輯電平。對 P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0 和 P1.2 分別作定時(shí)器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器 2的觸發(fā)輸入(P1.1/

17、T2EX),具體如下表所示(2)。</p><p>  表1.1 AT89S52 P1口第二功能表</p><p>  P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 輸出緩沖器能驅(qū)動 4 個(gè)TTL 邏輯電平。對 P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)在訪問外部

18、程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 MOVX @DPTR)時(shí),P2 口送出高八位地址</p><p>  P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,p2 輸出緩沖器能驅(qū)動 4 個(gè)TTL 邏輯電平。對 P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3 口亦作為 AT89

19、S52 特殊功能(第二功能)使用,如下表所示。</p><p>  表1.2 AT89S52 P3口第二功能表</p><p>  RST: 復(fù)位輸入。晶振工作時(shí),RST 腳持續(xù) 2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位。看門狗計(jì)時(shí)完成后,RST 腳輸出 96 個(gè)晶振周期的高電平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能無效。DISRTO 默認(rèn)狀態(tài)下,復(fù)位高電平有效

20、。</p><p>  ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時(shí),鎖存低 8 位地址的輸出脈沖。在 flash 編程時(shí),此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時(shí),ALE 脈沖將會跳過。</p><p>  PSEN:外部程序存儲器選通信號

21、(PSEN)是外部程序存儲器選通信號。當(dāng) AT89S52 從外部程序存儲器執(zhí)行外部代碼時(shí),PSEN 在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時(shí),PSEN 將不被激活。</p><p>  EA/VPP:訪問外部程序存儲器控制信號。為使能從 0000H 到 FFFFH 的外部程序存儲器讀取指令,EA 必須接 GND。為了執(zhí)行內(nèi)部程序指令,EA 應(yīng)該接 VCC。在 flash 編程期間,EA 也接收 12 伏

22、 VPP 電壓。</p><p>  XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。</p><p>  XTAL2:振蕩器反相放大器的輸出端。</p><p><b>  2設(shè)計(jì)功能及說明</b></p><p>  電子數(shù)字鐘實(shí)現(xiàn)的主要功能:</p><p> ?、?實(shí)現(xiàn)正常走時(shí)(秒

23、→分→時(shí)→日→月→年進(jìn)位)</p><p> ?、?能夠預(yù)置時(shí)間和日期</p><p> ?、?能夠自動區(qū)分平閏年和大小月</p><p>  ④ 具有鬧鈴及設(shè)定鬧鈴時(shí)間功能</p><p>  ⑤ 具有整點(diǎn)報(bào)時(shí)功能</p><p> ?、?具有生日提醒功能,能夠預(yù)置生日時(shí)間</p><p> 

24、 ⑦ 在任何一種預(yù)置狀態(tài)下,預(yù)置項(xiàng)目會閃爍顯示</p><p><b>  其它設(shè)計(jì)說明:</b></p><p> ?、?優(yōu)先級:預(yù)置>鬧鈴>報(bào)時(shí)>生日提醒>正常顯示,即預(yù)置狀態(tài)下鬧鈴、報(bào)時(shí)功能及生日提醒功能都無效</p><p> ?、?生日時(shí)間到五個(gè)數(shù)碼管顯示“HAPPY”</p><p>

25、 ?、?生日顯示狀態(tài)下,按下中斷INT0恢復(fù)正常顯示且此后只有在下更改生日日期或第二年生日顯示才有效。</p><p>  ④ 正常顯示狀態(tài)下按下中斷INT0進(jìn)入預(yù)置狀態(tài),再按一次恢復(fù)。</p><p> ?、?用數(shù)碼管(K0,K1)控制顯示狀態(tài):00:時(shí)間,01:鬧鈴時(shí)間,10:日期,11。</p><p>  生日時(shí)間且顯示樣板如下圖所示(3):</p&g

26、t;<p>  生日:6 月1 日生日,最 鬧鈴:于早晨6 點(diǎn)10 分響,最后后兩位bd 為birthday 的縮寫 一位表示使能有效。</p><p>  日期:08 年2 月29 日 時(shí)間:12 點(diǎn)39 分45 秒</p><p>  ⑥ 預(yù)置由撥碼開關(guān)K2/K3/K4分別控制

27、數(shù)碼管12/34/56顯示值,預(yù)置優(yōu)先級:</p><p>  LED34>LED12>LED56(相應(yīng)數(shù)碼管顯示的項(xiàng)目,顯示狀態(tài)下才能預(yù)置)</p><p> ?、?整點(diǎn)報(bào)時(shí)聲音為59分51、53、55、57秒的后半秒報(bào)四聲低音, 59秒的后半秒報(bào)一聲高音</p><p>  ⑧ 鬧鈴每次響一分鐘</p><p> ?、?不論是

28、預(yù)置狀態(tài)還是正常走時(shí)狀態(tài)均能夠自動區(qū)分平閏年和大小月</p><p>  ⑩ 鬧鈴使能由撥碼開關(guān)K5控制并實(shí)時(shí)顯示</p><p>  3 數(shù)字鐘的硬件設(shè)計(jì)</p><p>  3.1 最小系統(tǒng)設(shè)計(jì)</p><p>  單片機(jī)的最小系統(tǒng)是由電源、復(fù)位、晶振、/EA=1組成,如圖3所示,下面介紹一下每一個(gè)組成部分。</p><

29、;p> ?。?)電源引腳 </p><p>  Vcc 引腳40 電源端</p><p>  GND 引腳20 接地端</p><p>  工作電壓為5V,另有AT89LV51工作電壓則是2.7-6V, 引腳功能一樣(4)。 </p><p>  圖3 單片機(jī)最小系統(tǒng)的結(jié)構(gòu)圖</p><p>  (2)

30、外接晶體引腳(5)</p><p>  (a)內(nèi)部方式 (b)外部方式</p><p>  圖4 晶振連接的內(nèi)部、外部方式圖</p><p>  XTAL1(引腳19)是片內(nèi)振蕩器的反相放大器輸入端,XTAL2(引腳18)則是輸出端,使用外部振蕩器時(shí),外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。引腳XTAL1和XTAL2

31、分別是此放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個(gè)自激振蕩器。外接晶體諧振器以及電容C1和C構(gòu)2成并聯(lián)諧振電路,接在放大器的反饋回路中。在焊接刷電路板時(shí),晶體振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。</p><p> ?。?) 復(fù)位引腳RST</p><p>  在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振

32、蕩周期)以上的高電平出現(xiàn)在此引腿時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0-P3口均置1引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的00H處開始運(yùn)行程序。復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳RST通過一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,它的輸出在每個(gè)機(jī)器周期的S5P2,由復(fù)位電路采樣一次。復(fù)位電路通常采用上電

33、自動復(fù)位和按鈕復(fù)位兩種方式,此電路系統(tǒng)采用的是上電與按鈕復(fù)位電路。當(dāng)時(shí)鐘頻率選用6MHz時(shí),C取22μF,Rs約為200Ω,Rk約為1K。復(fù)位操作不會對內(nèi)部RAM有所影響。</p><p>  常用的復(fù)位電路如下圖5所示(6):</p><p>  圖5 常用復(fù)位電路圖</p><p><b>  (4)輸入輸出引腳</b></p>

34、<p>  P0端口[P0.0-P0.7]: P0是一個(gè)8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時(shí)作高阻抗輸入端。作為輸出口時(shí)能驅(qū)動8個(gè)TTL。對內(nèi)部Flash程序存儲器編程時(shí),接收指令字節(jié);校驗(yàn)程序時(shí)輸出指令字節(jié),要求外接上拉電阻。在訪問外部程序和外部數(shù)據(jù)存儲器時(shí),P0口是分時(shí)轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。</p><p>  P1端口[P1.0-P1.

35、7]: P1是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅(qū)動4個(gè)TTL。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。</p><p>  P2端口[P2.0-P2.7]:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅(qū)動4個(gè)TTL。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時(shí),接收高8位地址和控制信息。在訪問外部程序和16位外部數(shù)據(jù)存儲器時(shí),P2口

36、送出高8位地址。而在訪問8位地址的外部數(shù)據(jù)存儲器時(shí)其引腳上的內(nèi)容在此期間不會改變。</p><p>  P3端口[P3.0-P3.7]: P3是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅(qū)動4個(gè)TTL。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時(shí),接控制信息。除此之外P3端口還用于一些專門功能,具體如表1所示(7)。</p><p>  表1

37、 P3端口引腳兼用功能表</p><p>  3.2 LED顯示電路</p><p>  顯示器普遍地用于直觀地顯示數(shù)字系統(tǒng)的運(yùn)行狀態(tài)和工作數(shù)據(jù),按照材料及產(chǎn)品工藝,單片機(jī)應(yīng)用系統(tǒng)中常用的顯示器有:發(fā)光二極管LED顯示器、液晶LCD顯示器、CRT顯示器等。LED顯示器是現(xiàn)在最常用的顯示器之一,如圖6所示(8)。</p><p>  圖6 LED示器的符號圖<

38、/p><p>  發(fā)光二極管(LED)由特殊的半導(dǎo)體材料砷化鎵、磷砷化鎵等制成,可以單獨(dú)使用,也可以組裝成分段式或點(diǎn)陣式LED顯示器件(半導(dǎo)體顯示器)。分段式顯示器(LED數(shù)碼管)由7條線段圍成8字型,每一段包含一個(gè)發(fā)光二極管。外加正向電壓時(shí)二極管導(dǎo)通,發(fā)出清晰的光。只要按規(guī)律控制各發(fā)光段亮、滅,就可以顯示各種字形或符號。LED數(shù)碼管有共陽、共陰之分。圖7是共陽式、共陰式LED數(shù)碼管的原理圖和符號。</p>

39、;<p>  圖7 共陽式、共陰式LED數(shù)碼管的原理圖和數(shù)碼管的符號圖</p><p>  3.3數(shù)字鐘的原理圖</p><p>  數(shù)字電子鐘的原理圖如圖8所示(9)。</p><p>  圖8 數(shù)字鐘的原理圖</p><p>  數(shù)字電子鐘是一個(gè)將“時(shí)”、“分”、“秒”顯示于人的視覺器官的計(jì)時(shí)裝置。它的計(jì)時(shí)周期為24小時(shí),顯

40、示滿刻度為23時(shí)59分59秒,另外還有校時(shí)功能。因此,一個(gè)基本的數(shù)字鐘電路主要由顯示器“時(shí)”、“分”、“秒”和單片機(jī),還有校時(shí)電路組成。8個(gè)數(shù)碼管的段選接到單片機(jī)的P0口,位選接到單片機(jī)的P2口。數(shù)碼管按照數(shù)碼管動態(tài)顯示的工作原理工作,將標(biāo)準(zhǔn)秒信號送入“秒單元”,“秒單元”采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60秒發(fā)出一個(gè)“分脈沖”信號,該信號將作為“分單元”的時(shí)鐘脈沖?!胺謫卧币膊捎?0進(jìn)制計(jì)數(shù)器,每累計(jì)60分鐘,發(fā)出一個(gè)“時(shí)脈沖”信號,該信

41、號將被送到“時(shí)單元”。“時(shí)單元”采用24進(jìn)制計(jì)時(shí)器,可實(shí)現(xiàn)對一天24小時(shí)的累計(jì)。顯示電路將“時(shí)”、“分”、“秒”通過七段顯示器顯示出來。校時(shí)電路時(shí)用來對“時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整,按一下ksec,秒單元就加1 ,按一下kmin,分就加1,按一下khour,時(shí)就加1。</p><p>  4 數(shù)字鐘的軟件設(shè)計(jì)</p><p>  系統(tǒng)的軟件設(shè)計(jì)也是工具系統(tǒng)功能的設(shè)計(jì)。單片機(jī)軟

42、件的設(shè)計(jì)主要包括執(zhí)行軟件(完成各種實(shí)質(zhì)性功能)的設(shè)計(jì)和監(jiān)控軟件的設(shè)計(jì)。單片機(jī)的軟件設(shè)計(jì)通常要考慮以下幾個(gè)方面的問題:</p><p> ?。?)根據(jù)軟件功能要求,將系統(tǒng)軟件劃分為若干個(gè)相對獨(dú)立的部分,設(shè)計(jì)出合理的總體結(jié)構(gòu),使軟件開發(fā)清晰、簡潔和流程合理;</p><p> ?。?)培養(yǎng)良好的編程風(fēng)格,如考慮結(jié)構(gòu)化程序設(shè)計(jì)、實(shí)行模塊化、子程序化。既便于調(diào)試、鏈接,又便于移植和修改;</

43、p><p> ?。?)建立正確的數(shù)學(xué)模型,通過仿真提高系統(tǒng)的性能,并選取合適的參數(shù);</p><p>  (4)繪制程序流程圖;</p><p> ?。?)合理分配系統(tǒng)資源;</p><p>  (6)為程序加入注釋,提高可讀性,實(shí)施軟件工程;</p><p> ?。?)注意軟件的抗干擾設(shè)計(jì),提高系統(tǒng)的可靠性[9]。<

44、;/p><p>  4.1系統(tǒng)軟件設(shè)計(jì)流程圖</p><p><b> ?。?)主程序</b></p><p>  主程序流程圖如圖9,是先開始,然后啟動定時(shí)器,定時(shí)器啟動后再進(jìn)行按鍵檢測,檢測完后,就可以顯示時(shí)間。主程序用C語言編寫,如附錄所示。</p><p><b>  圖9 主程序流程圖</b>

45、</p><p>  (2)按鍵處理子程序</p><p>  按鍵處理是先檢測秒按鍵是否按下,秒按鍵如果按下,秒就加1;如果沒有按下,就檢測分按鍵是否按下,分按鍵如果按下,分就加1;如果沒有按下,就檢測時(shí)按鍵是否按下,時(shí)按鍵如果按下,時(shí)就加1;如果沒有按下,就把時(shí)間顯示出來(10)。 </p><p>  圖10 按鍵處理流程圖</p><p

46、>  (3)中斷處理子程序</p><p><b>  圖11 中斷流程圖</b></p><p> ?。?)時(shí)間顯示子程序</p><p>  時(shí)間顯示是先秒個(gè)位計(jì)算顯示,然后是秒十位計(jì)算顯示,再是分個(gè)位計(jì)算顯示,再然后是分十位顯示,再就是時(shí)個(gè)位計(jì)算顯示,最后是時(shí)十位顯示。</p><p>  圖12 時(shí)間顯示流

47、程圖</p><p>  5單模塊流程設(shè)計(jì)及程序設(shè)計(jì)</p><p>  在完成了系統(tǒng)總流程設(shè)計(jì)后,便進(jìn)入到了系統(tǒng)設(shè)計(jì)中工作量最大的模塊流程設(shè)計(jì)。由于系統(tǒng)模塊劃分雖然是系統(tǒng)設(shè)計(jì)的基礎(chǔ),但比較簡單而且模塊劃分有多種方法,因此單模塊的設(shè)計(jì)可以認(rèn)為是本程序中最關(guān)鍵的部分。單模塊設(shè)計(jì)的好壞與否決定了系統(tǒng)功能能否被穩(wěn)定地實(shí)現(xiàn)以及下一階段調(diào)試程序的難度。鑒于單模塊設(shè)計(jì)的重要性,我在設(shè)計(jì)中并不急于對模塊

48、進(jìn)行編碼,而是反復(fù)論證模塊的可行性和流程圖,為下一階段的工作做好準(zhǔn)備,同時(shí)也能夠盡早發(fā)現(xiàn)系統(tǒng)模塊劃分的錯誤,加以解決。</p><p><b>  5.1初始化模塊</b></p><p>  初始化模塊包含了各中斷的跳轉(zhuǎn)語句、存儲資源的分配、各存儲器和寄存器的賦值以及中斷及計(jì)時(shí)器的狀態(tài)設(shè)置。源程序中共使用了17字節(jié)的內(nèi)部數(shù)據(jù)存儲地址,其中包含3字節(jié)位尋址地址以便于進(jìn)

49、行位判斷。</p><p>  三字節(jié)的位尋址地址分配如下:</p><p>  22H—秒的存儲地址,方便對整點(diǎn)報(bào)時(shí)條件進(jìn)行判斷</p><p>  23H—月的存儲地址,方便對大小月平閏年進(jìn)行判斷</p><p>  另外一個(gè)位尋址字節(jié)00H地址拆開用做程序狀態(tài)標(biāo)志位</p><p>  00H(bit,BS)—生

50、日標(biāo)志位,到生日那天為 1 使程序轉(zhuǎn)入生日顯示段</p><p>  01H(bit,SS)—預(yù)置標(biāo)志,以INT0控制其值,控制預(yù)置閃爍的實(shí)現(xiàn)</p><p>  02H(bit,GS)—閃爍標(biāo)志,在預(yù)置標(biāo)志有效時(shí)控制閃爍項(xiàng)目的亮和滅兩狀態(tài)</p><p>  03H(bit,F(xiàn)C)—頻率控制,在整點(diǎn)報(bào)時(shí)時(shí)控制產(chǎn)生低音還是高音</p><p>

51、;  04H(bit,NB)—忽略生日標(biāo)志,控制預(yù)置及報(bào)時(shí)的優(yōu)先級高于生日顯示</p><p>  05H(bit)—控制生日信號的有效與否,其使用目的參見調(diào)試過程</p><p>  源程序中使用了兩個(gè)寄存器R1、R0,R1用于控制閃爍的間隔時(shí)間, R0用于顯示延時(shí)。在初始化模塊中設(shè)定了中斷的優(yōu)先級、定時(shí)計(jì)數(shù)器的工作模式、并打開了定時(shí)計(jì)數(shù)器TO開始計(jì)時(shí)其他資源分配項(xiàng)目參見源程序集合及注釋

52、。初始化模塊指令很大一部分都是偽指令,方便了后面程序的編寫。</p><p><b>  5.2開關(guān)檢測模塊</b></p><p>  開關(guān)檢測模塊主要執(zhí)行兩個(gè)任務(wù):</p><p> ?、弊x取鬧鈴使能控制撥碼開關(guān)K5的值并賦予鬧鈴使能相應(yīng)值;</p><p> ?、沧x取顯示選擇開關(guān)(K0,K1)的值并將要顯示的項(xiàng)目值

53、送入顯示緩存LED12、LED34、LED56當(dāng)k5為1時(shí)將A1H送入RE反之送入A1H,其中A為“—”的字型碼查表偏移量。當(dāng)顯示生日日期時(shí),將生日Birthday的縮寫“bd”的字型碼送入顯示緩存LED56(11)。</p><p>  圖 4.1 開關(guān)檢測流程圖</p><p><b>  5.3顯示主程序</b></p><p>  顯

54、示主程序是程序中最復(fù)雜的模塊,實(shí)現(xiàn)的功能也最多,占用了程序運(yùn)行過程當(dāng)中90%以上的執(zhí)行時(shí)間。流程圖中由判斷SS(預(yù)置信號)開始分成兩個(gè)分支,當(dāng)SS=1,即預(yù)置狀態(tài)下程序進(jìn)入預(yù)置閃爍部分(12)。</p><p>  圖 4.2 顯示主程序流程圖</p><p>  預(yù)置閃爍的優(yōu)先級是:LED34>LED12>LED56即同預(yù)置優(yōu)先級相同(參見調(diào)試部分的詳細(xì)說明)閃爍首先判斷是

55、否對LED34進(jìn)行判斷閃爍,如果是則另外兩個(gè)顯示值直接顯示,否則判斷是否對LED12進(jìn)行閃爍,如果是則直接顯示LED56的值,只有當(dāng)前兩個(gè)顯示值都不閃爍的時(shí)候,才判斷是否對LED56進(jìn)行閃爍,這樣就確保了每次只有一個(gè)顯示值閃爍。預(yù)置通過GS標(biāo)志位判斷預(yù)置的亮/滅,由R1控制每50輪顯示對GS取反一次。</p><p>  當(dāng)SS=0時(shí)進(jìn)入判斷鬧鈴/報(bào)時(shí)及正常顯示模塊,模塊EIGHT(參見其說明)對鬧鈴及報(bào)時(shí)條件進(jìn)

56、行判斷,符合條件則對P1.6取反一次并使NB(忽略生日)有效,此時(shí)行對BS(生日標(biāo)志)的判斷,即使響鈴優(yōu)先級高于生日顯示(其實(shí)也可以對程序進(jìn)行修改使響鈴和生日顯示不發(fā)生沖突,修改方法參見程序優(yōu)化)。當(dāng)不響鈴并且生日標(biāo)志BS有效時(shí)顯示HAPPY其單列開來。本程序由生日標(biāo)志BS控制,當(dāng)?shù)竭_(dá)生日時(shí)間時(shí),T0中斷程序會將BS置1使之有效在顯示主程序中通過判斷BS的置來控制是否執(zhí)行本模塊標(biāo)志BS有效時(shí)顯示HAPPY其單列開來。本程序由生日標(biāo)志BS

57、控制,當(dāng)?shù)竭_(dá)生日時(shí)間時(shí),T0中斷程序會將BS置1使之有效在顯示主程序中通過判斷BS的置來控制是否執(zhí)行本模塊</p><p>  5.4鬧鈴及整點(diǎn)報(bào)時(shí)判斷程序(EIGHT)</p><p>  在顯示主程序中每隔一段時(shí)間調(diào)用一次本程序來實(shí)現(xiàn)鬧鈴及報(bào)時(shí)功能。符合鬧鈴條件時(shí),每調(diào)用一次本程序?qū)1.6取反一次,調(diào)節(jié)調(diào)用的時(shí)間間隔便可以調(diào)節(jié)報(bào)時(shí)的輸出頻率。在主程序中設(shè)置每完成對一個(gè)數(shù)碼管的顯示變調(diào)

58、用一次本程序,顯示一個(gè)數(shù)碼管的時(shí)間大約為1ms,因此響鈴頻率高音約為500Hz,低音約為250Hz。程序判斷鬧鈴使能RE后分成兩個(gè)分支,當(dāng)RE=A1時(shí)判斷鬧鈴條件是否滿足,滿足則對P1.6取反一次,否則跳轉(zhuǎn)判斷整點(diǎn)報(bào)時(shí)條件是否滿足。當(dāng)RE=0時(shí),直接怕暖整點(diǎn)報(bào)時(shí)條件是否滿足。判斷整點(diǎn)報(bào)時(shí)條件時(shí)當(dāng)當(dāng)前時(shí)間滿足(13):</p><p>  (MIN=59)∩(SECOND=59) ∩(COUNT>10)<

59、;/p><p><b>  時(shí)報(bào)高音;當(dāng)滿足:</b></p><p>  (MIN=59)∩(SECOND=51/53/55/57) ∩(COUNT>10)</p><p>  時(shí)報(bào)低音。利用位尋址區(qū)來存儲SECOND的方法,(SECOND>50)∩(SECOND.0=1)時(shí)便滿足報(bào)低音的秒條件。利用TO中斷次數(shù)存儲器COUNT的大小

60、可以判斷是否到了后半秒(T0每50ms中斷一次,中斷20次到達(dá)一秒)。通過增加一個(gè)標(biāo)志位FC來時(shí)下對高低音的區(qū)分,高音不受FC的影響,低音只有當(dāng)FC=0的時(shí)候才對P1.6取反一次。并且每調(diào)用一次本程序便對FC取反一次,便達(dá)到每調(diào)用兩次取反一次P1.6的效果。本程序的執(zhí)行時(shí)間小于40us,因此多次調(diào)用不過分影響執(zhí)行。</p><p>  5.5中斷(TO)計(jì)時(shí)程序</p><p>  中斷計(jì)

61、時(shí)程序的流程比較簡單。程序除實(shí)現(xiàn)正常走時(shí)外還需要判斷是否到達(dá)生日時(shí)間置生日標(biāo)志位有效。程序的輸出均為BCD碼,方便了顯示程序?qū)Ω叩臀坏姆蛛x并查表顯示。程序比較復(fù)雜的地方在于對平閏年及大小月的判斷。把月MONTH存儲在位尋址區(qū),當(dāng)MONTH=02H時(shí)判斷是否是平閏年,先將年由BCD碼轉(zhuǎn)化為二進(jìn)制碼,此時(shí)當(dāng)年的后兩位為全零的時(shí)候?yàn)殚c年(由于只顯示年的個(gè)位和十位,由2000年開始,00年、04年…為閏年,其共同特點(diǎn)就是二進(jìn)制后兩位為零),否則

62、為平年。當(dāng)MONTH≠2時(shí)判斷是否為大小月,MOUTH<7時(shí)單月(即MONTH.0=1的月)為大月,否則為小月;當(dāng)MONTH>7時(shí)雙月為大月。</p><p>  5.6中斷(T1)預(yù)置程序</p><p>  T1通過中斷INT0控制開啟或關(guān)閉,每次定時(shí)50毫秒,存儲地址COUNTS計(jì)數(shù)15次執(zhí)行一次中斷程序。由開關(guān)(K0,K1)控制預(yù)置項(xiàng)目,通過開關(guān)K2/K3/K4來分別控

63、制LED12/LED34/LED56的預(yù)置,當(dāng)兩個(gè)開關(guān)都是有效時(shí),具有優(yōu)先級的區(qū)分,確保無論按幾個(gè)開關(guān)都最多只有一個(gè)項(xiàng)目被預(yù)置。判斷預(yù)置的優(yōu)先級順序是:</p><p>  LED34>LED12>LED56</p><p>  這樣安排的原因是由于根據(jù)生活經(jīng)驗(yàn)LED34所對應(yīng)的4個(gè)項(xiàng)目(小時(shí)、鬧鈴分、月、生日日)被預(yù)置的可能性最大。在預(yù)置日期和生日是要注意對大小月及平閏年進(jìn)行

64、判斷(判斷方法與中斷計(jì)時(shí)程序中說明的方法類似,但不需要考慮進(jìn)位)且月和日在溢出后應(yīng)置一而不是歸零。</p><p>  5.7中斷(INT0)設(shè)定程序</p><p>  中斷INT0設(shè)置是否進(jìn)行預(yù)置以及對生日標(biāo)志的清除。且有如下設(shè)置順序:清除預(yù)置信號并關(guān)T1>清除生日標(biāo)志>設(shè)定預(yù)置信號并開T1。每按一次中斷都只執(zhí)行其中一個(gè)項(xiàng)目</p><p><

65、b>  6 系統(tǒng)仿真</b></p><p>  6.1 PROTUES軟件介紹</p><p>  Proteus軟件是Labcenter Electronics公司的一款電路設(shè)計(jì)與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設(shè)計(jì),而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術(shù),它與其他軟件最大的不

66、同也是最大的優(yōu)勢就在于它能仿真大量的單片機(jī)芯片,比如MCS-51系列、PIC系列等等,以及單片機(jī)外圍電路,比如鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個(gè)功能齊全、實(shí)用方便的單片機(jī)實(shí)驗(yàn)室。</p><p>  6.2 數(shù)字鐘系統(tǒng)PROTUES仿真</p><p>  用PROTUES軟件,根據(jù)數(shù)字電子鐘的原理圖8,畫出仿真圖,得到的圖13如下所示(14)。&

67、lt;/p><p>  圖13 數(shù)字鐘的PROTES仿真</p><p><b>  7調(diào)試與功能說明</b></p><p>  單片機(jī)應(yīng)用系統(tǒng)的調(diào)試包括硬件和軟件兩部分,但是他們并不能完全分開。一般的方法是排除明顯的硬件故障,再進(jìn)行綜合調(diào)試,排除可能的軟/硬件故障。</p><p><b>  7.1 硬件調(diào)試

68、</b></p><p>  拿到電路板后,首先要檢查加工質(zhì)量,并確保沒有任何方面的錯誤,如短路和斷路,尤其要避免電源短路;元器件在安裝前要逐一檢查,用萬用表測其數(shù)值,看是否與所用相同;完成焊接后,應(yīng)先空載上電(芯片座上不插芯片),并檢查各引腳的電位是否正確。若一切正常,方可在斷電的情況下將芯片插入,再次檢查各引腳的電位及其邏輯關(guān)系。將萬用表的探針放到單片機(jī)接電源的引腳上檢測一下,看是否符合要求。&l

69、t;/p><p>  7.2 系統(tǒng)性能測試與功能說明</p><p>  走時(shí):默認(rèn)為走時(shí)狀態(tài),按24小時(shí)制分別顯示“時(shí)時(shí)-分分-秒秒”,有2個(gè)“-”動態(tài)顯示,時(shí)間會按實(shí)際時(shí)間以秒為最少單位變化。</p><p>  走時(shí)調(diào)整:按ksec對秒進(jìn)行調(diào)整,按一下加一秒;按kmin對分進(jìn)行調(diào)整,按一下加一分;按khour對時(shí)進(jìn)行調(diào)整,按一下加一小時(shí),從而達(dá)到快速設(shè)定時(shí)間的目的

70、。</p><p>  7.3 系統(tǒng)時(shí)鐘誤差分析</p><p>  結(jié)合時(shí)間概念和誤差理論,可以定義電子鐘的走時(shí)誤差S=S1-S2,S1表示程序?qū)嶋H運(yùn)行計(jì)算所得的秒;S2表示客觀時(shí)間的標(biāo)準(zhǔn)秒。S>0時(shí)表示電子鐘秒單元數(shù)值刷新滯后,即走時(shí)誤差為“慢”;反之,S<0表示秒單元數(shù)值的刷新超前,即走時(shí)誤差為“快”。</p><p>  本次設(shè)計(jì)的單片機(jī)電子鐘系

71、統(tǒng)中,其誤差主要來源包括晶體頻率誤差,定時(shí)器溢出誤差,延遲誤差。晶體頻率產(chǎn)生震蕩,容易產(chǎn)生走時(shí)誤差;定時(shí)器溢出的時(shí)間誤差,本應(yīng)這一秒溢出,但卻在下一秒溢出,造成走時(shí)誤差;延遲時(shí)間過長或過短,都會造成與基準(zhǔn)時(shí)間產(chǎn)生偏差,造成走時(shí)誤差。</p><p>  7.4 軟件調(diào)試問題及解決</p><p>  軟件程序的調(diào)試一般可以將重點(diǎn)放在分模塊調(diào)試上,統(tǒng)調(diào)是最后一環(huán)。軟件調(diào)試可以采取離線調(diào)試和在

72、線調(diào)試兩種方式。前者不需要硬件仿真器,可借助于軟件仿真器即可;后者一般需要仿真系統(tǒng)的支持。本設(shè)計(jì)采用Keil軟件來調(diào)試程序,通過各個(gè)模塊程序的單步或跟蹤調(diào)試,使程序逐漸趨于正確,最后統(tǒng)調(diào)程序。</p><p><b>  8單模塊軟件測試</b></p><p>  8.1編碼中常用的程序結(jié)構(gòu)說明</p><p>  ① JNB SS,THRE

73、EB;</p><p>  SJMP THREEA</p><p>  THREEB:LJMPTHREE11;</p><p>  THREEA:JNBP0.3,THREE1</p><p>  由于使用JNB等跳轉(zhuǎn)指令的時(shí)候,跳轉(zhuǎn)長度比較短,故需要跳轉(zhuǎn)到比較遠(yuǎn)的地方時(shí)需要用</p><p><b>  這個(gè)

74、結(jié)構(gòu)。相當(dāng)于:</b></p><p>  JNB SS,THREE11</p><p>  JNB P0.3,THREE1</p><p> ?、?THREE1:MOV A,LED34</p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><

75、;p><b>  MOV P2,A</b></p><p>  THREE13:SETB P1.3</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE13</p><p><b>  CLR P1.3</b></p>

76、<p>  MOV A,LED34</p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE14

77、:SETB P1.2</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE14</p><p><b>  CLR P1.2</b></p><p>  顯示主程序中常用的語句段,分離LED34中的高半位和低半位作為字形碼段控信號查表偏移量,通過R0延時(shí),延時(shí)時(shí)

78、間大約為每個(gè)數(shù)碼管1ms。</p><p>  ③ TEN6A:MOV A,MONTH</p><p>  CJNE A,#08H,TEN7A</p><p>  TEN7A:JC TEN9A</p><p>  判斷MONTH是否大于08H,由于CJNE指令不能對直接地址進(jìn)行比較只能通過A來判斷。</p><p> 

79、?、躆OV A,YEAR</p><p><b>  ADD A,#01</b></p><p><b>  DA A</b></p><p>  MOV YEAR,A</p><p>  對T0及T1中斷程序中常用的對某項(xiàng)目進(jìn)行加一并進(jìn)行BCD碼調(diào)整的的程序段,由于“INC A”指令不影響標(biāo)志位

80、,故不能和“DA A”指令結(jié)合使用。</p><p>  8.2單模塊軟件測試中的問題及解決</p><p>  由于此前花費(fèi)大量的經(jīng)歷在模塊的流程圖設(shè)計(jì)當(dāng)中,因此在模塊調(diào)試的過程中并沒有出現(xiàn)太多的問題。主要問題在于語法錯誤,比如前述程序結(jié)果說明中的①、④語句和一些輸入的誤。并且由于程序過于長,難以進(jìn)行完整的軟件調(diào)試,調(diào)試過程中發(fā)現(xiàn)的問題主要出現(xiàn)在燒寫調(diào)試過程中。</p>&

81、lt;p>  9 軟件部分燒寫調(diào)試</p><p>  我一共進(jìn)行了三次軟件部分燒寫調(diào)試,糾正了許多程序錯誤,主要修改部分如下:</p><p><b>  第一次調(diào)試:</b></p><p> ?、僦袛囝A(yù)置程序無法進(jìn)行正常的加一程序</p><p>  ②計(jì)時(shí)進(jìn)位有誤,無法正常進(jìn)位</p><

82、;p><b> ?、廴掌跓o法正常顯示</b></p><p> ?、荛W爍有錯誤,無法正常閃爍</p><p>  ⑤顯示的數(shù)字不穩(wěn)定,有許多干擾</p><p>  從第一次調(diào)試的結(jié)果上看,幾乎所有的功能都無法正常顯示。事實(shí)上,在第一次調(diào)試后對程序進(jìn)行檢查后發(fā)現(xiàn),造成這些問題的主要原因是程序有十幾處的輸入有誤,并不是程序流程上的問題。因此

83、這里不做過多的敘述。</p><p><b>  第二次調(diào)試:</b></p><p>  經(jīng)過第一次調(diào)試以后的修改,解決了第一次調(diào)試中出現(xiàn)的前四個(gè)問題,但第五個(gè)問題“顯示的數(shù)字不穩(wěn)定,有許多干擾”仍然無法發(fā)現(xiàn)問題的所在,在機(jī)房進(jìn)行了多次修改都不成功。經(jīng)過思考和對跟其他同學(xué)的顯示語句進(jìn)行比對,我判斷問題的原因可能是我在過去編程時(shí)養(yǎng)成的一個(gè)不好的習(xí)慣,我經(jīng)常使用的一個(gè)延

84、時(shí)辦法,容易把干擾放大。對于數(shù)碼管的顯示及延時(shí)我經(jīng)常使用以下語句:</p><p>  “AAA:MOV P1,#位控</p><p>  MOV P2,#段控</p><p>  DJNZ R0,AAA ”</p><p>  這個(gè)語句段比較簡單,不需要另外編寫一個(gè)延時(shí)程序,延時(shí)時(shí)間大約1.3ms,用在干擾語句比較少的地方很方便。但卻可能出

85、現(xiàn)一個(gè)隱患,假如P1或者P2在賦值過程中會出現(xiàn)干擾,那么對其重復(fù)的賦值便會放大干擾。并且由于常常只需要給其中一個(gè)數(shù)碼管賦值,而這個(gè)語句卻一次性給所有的數(shù)碼管賦位控信號,可能將單個(gè)數(shù)碼管段控信號中出現(xiàn)的干擾傳遞到其他管中。因此我對以上程序做了修改如下:</p><p>  MOV P2,#段控</p><p>  THREE13:SETB P1.3</p><p>&

86、lt;b>  NOP</b></p><p>  DJNZ R0,THREE13</p><p><b>  CLR P1.3</b></p><p>  這樣便解決了以上提出的問題。實(shí)際上,通過調(diào)用延時(shí)程序的方法進(jìn)行延時(shí)同樣也不會出現(xiàn)以上問題,由此可見,在軟件設(shè)計(jì)中養(yǎng)成一個(gè)規(guī)范的設(shè)計(jì)習(xí)慣極為重要。在第二天調(diào)試的時(shí)候發(fā)現(xiàn)這個(gè)語

87、句的確能夠避免干擾的出現(xiàn)。</p><p><b>  第三次調(diào)試:</b></p><p>  第三次調(diào)試基本解決了上述出現(xiàn)的問題,但又發(fā)現(xiàn)了兩個(gè)新問題:</p><p> ?、僭诔绦驁?zhí)行的過程中,一旦進(jìn)入生日顯示狀態(tài)便無法通過INT0跳出,除非日期走過一天。</p><p> ?、谠谕瑫r(shí)撥下兩個(gè)以上的預(yù)置開關(guān)時(shí),預(yù)置

88、和閃爍可能出現(xiàn)不同步的情況。比如預(yù)置時(shí)間時(shí)可能出現(xiàn)小時(shí)在閃爍,但改變的確實(shí)分鐘的值。由于對程序的流程比較熟悉,產(chǎn)生這兩個(gè)問題原因很快就被我發(fā)現(xiàn)。第一個(gè)問題產(chǎn)生原因主要是雖然每次按下INT0都將清除生日標(biāo)志,但生日標(biāo)志的設(shè)定卻是每秒進(jìn)行一次,因此生日標(biāo)志被清除后馬上就又會出現(xiàn),所以無法跳出生日顯示。為了解決這個(gè)問題,我增加了一個(gè)標(biāo)志位05H(bit)來控制生日標(biāo)志的設(shè)定,只有在05H(bit)有效的情況下,生日顯示才有效,在按INT0清除

89、生日表示的時(shí)候同時(shí)清除05H(bit),而05H(bit)只有在重新預(yù)置生日時(shí)間以后或是過了新的一年才會有效,其設(shè)定不受外界控制。</p><p>  第二個(gè)問題產(chǎn)生的原因主要是比較簡單,預(yù)置時(shí)間時(shí),判斷哪個(gè)項(xiàng)目閃爍的優(yōu)先級,和判斷哪個(gè)項(xiàng)目數(shù)值改變的優(yōu)先級不一致,由于是中斷程序和顯示主程序同時(shí)控制這個(gè)功能,因此這兩個(gè)優(yōu)先級必須一樣,否則當(dāng)同時(shí)按下兩個(gè)項(xiàng)目的預(yù)置開關(guān)的時(shí)候,中斷程序首先判斷一個(gè)開關(guān)有效,改變其對應(yīng)值

90、,而顯示主程序卻首先判斷第二個(gè)開關(guān)有效,對第二個(gè)開關(guān)的顯示值進(jìn)行閃爍。因此只要修改其優(yōu)先級一致即可解決這個(gè)問題。程序中設(shè)置的優(yōu)先級是K3>K2>K4。</p><p><b>  總結(jié)</b></p><p>  在汪普林老師耐心的指導(dǎo)下,我順利完成了這次單片機(jī)課程設(shè)計(jì)課題中的多功能電子表的設(shè)計(jì),通過這次的設(shè)計(jì)使我認(rèn)識到本人對單片機(jī)方面的知識知道的太少了,

91、對于書本上的很多知識還不能靈活運(yùn)用,尤其是對程序設(shè)計(jì)語句的理解和運(yùn)用,不能夠充分理解每個(gè)語句的具體含義,導(dǎo)致編程的程序過于復(fù)雜,使得需要的存儲空間增大。損耗了過多的內(nèi)存資源。</p><p>  本次的設(shè)計(jì)使我從中學(xué)到了一些很重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我所學(xué)到的知識運(yùn)用到我以后的工作中去。在大學(xué)的課堂的學(xué)習(xí)只是在給我們灌輸專業(yè)知識,而我們應(yīng)把所學(xué)的用到我們現(xiàn)實(shí)的生活中去,此次的多功能電子版表

92、設(shè)計(jì)給我奠定了一個(gè)實(shí)踐基礎(chǔ),我會在以后的學(xué)習(xí)、生活中磨練自己,使自己適應(yīng)于以后的競爭,同時(shí)在查找資料的過程中我也學(xué)到了許多新的知識,在和同學(xué)協(xié)作過程中增進(jìn)同學(xué)間的友誼,使我對團(tuán)隊(duì)精神的積極性和重要性有了更加充分的理解。</p><p><b>  致謝</b></p><p>  通過本次課程設(shè)計(jì),對單片機(jī)AT89S52有更深入的了解,同時(shí)在對單片機(jī)進(jìn)行軟件編程的過程

93、中,學(xué)會了單片機(jī)編程的流程控制,熟悉了單片機(jī)顯示按鍵系統(tǒng)的編程實(shí)現(xiàn)。覺得以后還是要加強(qiáng)這方面的練習(xí)。俗話說:“熟能生巧”。同時(shí)還我意識到要學(xué)好我們專業(yè)課的重要性,不但要上課認(rèn)真聽講,掌握課本知識,而且我們還需要經(jīng)常勤與動手,勤與做實(shí)驗(yàn),把理論知識和實(shí)踐技能充分的合理的結(jié)合起來。只有理論和實(shí)踐相結(jié)合才能更深入的了解課本知識,才能更深刻的了解專業(yè)知識的內(nèi)涵和外延。也只有這樣,知識才能在理論和實(shí)踐中貫通。</p><p&g

94、t;  最后,感謝汪普林老師對我的細(xì)心的指導(dǎo),正是由于汪老師的細(xì)心的輔導(dǎo)和他提供給我們的參考資料,使得我的課程設(shè)計(jì)能夠順利的完成,同時(shí)感謝所以在課程設(shè)計(jì)過程中給于我?guī)椭^的老師和同學(xué),非常感謝。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]張迎新.《單片微型計(jì)算機(jī)原理、應(yīng)用及接口技術(shù)》.國防工業(yè)出版社</p><p>

95、;  [2]房小翠.《單片機(jī)實(shí)用系統(tǒng)設(shè)計(jì)技術(shù)》. 國防工業(yè)出版社</p><p>  [3]何立民.《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)》.北航出版社</p><p>  [4]王迎旭.《單片機(jī)原理及及應(yīng)用》.機(jī)械工業(yè)出版社.2004年7月</p><p>  [5] 公相.基于8051單片機(jī)的數(shù)字鐘的設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息,2010,(06):386+388.</p&g

96、t;<p>  [6] 于瑩瑩,林喆.一種數(shù)字鐘的設(shè)計(jì)[J].遼寧裝備制造職業(yè)技術(shù)學(xué)院,2010,(02):29-30+37.</p><p>  [7] 楊妮.Digital Clock Design[J].凱里學(xué)院學(xué)報(bào),2010,(06):34-36.</p><p>  [8] 盛蒙蒙,葛亦斌,邱燁,馬棟.基于單片機(jī)實(shí)現(xiàn)多功能數(shù)字鐘的系統(tǒng)設(shè)計(jì)[J].硅谷,2009,(2

97、0):35.</p><p>  [9] 程曦.數(shù)字鐘設(shè)計(jì)與仿真—基于Multisim 7仿真軟件[J].機(jī)電信息,2009,(36):114-115.</p><p>  [10] 徐紅霞.數(shù)字鐘電路的設(shè)計(jì)[J].廣東技術(shù)師范學(xué)院學(xué)報(bào),2008,(03):17-20.</p><p>  [11] 張靜.基于單片機(jī)數(shù)字鐘的設(shè)計(jì)[J].辦公自動化,2006,(11)

98、:50-51.</p><p>  [12] 張玉葉.基于層次化設(shè)計(jì)方式的圖文混合數(shù)字鐘的設(shè)計(jì)[J].科技信息,2008,(29):329-380.</p><p>  [13] 陳姚李,戴澤軍.基于單片機(jī)的數(shù)字鐘設(shè)計(jì)及時(shí)間校準(zhǔn)研究[J].武漢理工大學(xué)學(xué)報(bào)(交通科學(xué)與工程版),2005,(04):550-552.</p><p>  [14]吳峰,吳浩東.單片機(jī)控制

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論