版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計任務(wù)書</b></p><p> 課程名稱: 單片機(jī)原理與應(yīng)用課程設(shè)計 </p><p> 起訖時間: 2011年6月22日----6月28日 </p><p> 院 系: 電子信息工程系 </p><p><b>
2、 目錄</b></p><p> 第一章 電子時鐘1</p><p> 1.1 電子時鐘簡介1</p><p> 1.2 電子時鐘的基本特點(diǎn)1</p><p> 1.3 電子時鐘的原理1</p><p> 第二章 單片機(jī)識的相關(guān)知識2</p><p> 2.1
3、單片機(jī)簡介2</p><p> 2.2單片機(jī)的發(fā)展史2</p><p> 2.3 單片機(jī)的特點(diǎn)3</p><p> 2.4 89C51單片機(jī)介紹3</p><p> 第三章 控制系統(tǒng)的硬件設(shè)計6</p><p> 3.1 單片機(jī)型號的選擇6</p><p> 3.
4、2 數(shù)碼管顯示工作原理6</p><p> 3.3 鍵盤電路設(shè)計7</p><p> 3.4系統(tǒng)工作原理7</p><p> 3.5整個電路原理圖9</p><p> 第四章 控制系統(tǒng)的軟件設(shè)計10</p><p> 4.1 程序設(shè)計10</p><p> 4.2程
5、序流程圖13</p><p> 4.3偉福硬件仿真器簡介14</p><p> 4.4仿真圖及結(jié)果分析15</p><p> 第五章 附錄程序17</p><p> 第六章 結(jié)束語19</p><p><b> 參考文獻(xiàn)20</b></p><p>&
6、lt;b> 第一章 電子時鐘</b></p><p> 1.1 電子時鐘簡介 </p><p> 本作品采用Atmel公司的AT89C51單片機(jī),以匯編語言為程序設(shè)計的基礎(chǔ),設(shè)計一個用四位數(shù)碼管顯示時、分的時鐘?,F(xiàn)代的電子時鐘是基于單片機(jī)的一種計時工具,采用延時程序產(chǎn)生一定的時間中斷,用于一秒的定義,通過計數(shù)方式進(jìn)行滿六十秒分鐘進(jìn)一,滿六十分小時進(jìn)一,滿二十四小時小
7、時清零。從而達(dá)到計時的功能,是人民日常生活補(bǔ)課缺少的工具。</p><p> 1.2 電子時鐘的基本特點(diǎn) </p><p> 現(xiàn)在高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計時時,譯碼代
8、替機(jī)械式傳動,用LED顯示器代替指針顯示進(jìn)而顯示時間,減小了計時誤差,這種表具有時、分、秒顯示時間的功能,還可以進(jìn)行時和分的校對,片選的靈活性好。</p><p> 1.3 電子時鐘的原理 </p><p> 該電子時鐘由89C51,BUTTON,六段數(shù)碼管等構(gòu)成,采用晶振電路作為驅(qū)動電路,由延時程序和循環(huán)程序產(chǎn)生的一秒定時,達(dá)到時分秒的計時,六十秒
9、為一分鐘,六十分鐘為一小時,滿二十四小時為一天。而電路中唯一的一個控制鍵卻擁有多種不同的功能,按下又松開,可以實現(xiàn)屏蔽數(shù)碼管顯示的功能,達(dá)到省電的目的;直接按下不松開,則可以通過按鍵實現(xiàn)分鐘的累加,每按一次分鐘加一;而連續(xù)兩次按下按鍵不放松,則可實現(xiàn)小時的調(diào)節(jié),同樣每按一次小時加一。</p><p> 第二章 單片機(jī)識的相關(guān)知識</p><p> 2.1單片機(jī)簡介 </p
10、><p> 單片機(jī)是指一個集成在一塊芯片上的完整計算機(jī)系統(tǒng)。盡管他的大 部分功能集成在一塊小芯片上,但是它具有一個完整計算機(jī)所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會具有外 存。同時集成諸如通訊接口、定時器,實時時鐘等外圍設(shè)備。而現(xiàn)在最強(qiáng)大的 單片機(jī)系統(tǒng)甚至可以將聲音、圖像、網(wǎng)絡(luò)、復(fù)雜的輸入輸出系統(tǒng)集成在一塊芯片上。</p><p> 2.2單片機(jī)的發(fā)展史<
11、/p><p> 單片機(jī)誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SoC三大階段。 </p><p><b> 起初模型</b></p><p> 1.SCM即單片微型計算機(jī)(Single Chip Microcomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)?!皠?chuàng)新模式”獲得成功,奠定了SCM與通用計算機(jī)完全不同的
12、發(fā)展道路。在開創(chuàng)嵌入式系統(tǒng)獨(dú)立發(fā)展道路上,Intel公司功不可沒。 </p><p> Micro Controller Unit</p><p> 2.MCU即微控制器(Micro Controller Unit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時,對象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對象的智能化控制能力。它所涉及的領(lǐng)域都與對象系統(tǒng)相關(guān),因此,發(fā)展MCU的重
13、任不可避免地落在電氣、電子技術(shù)廠家。從這一角度來看,Intel逐漸淡出MCU的發(fā)展也有其客觀因素。在發(fā)展MCU方面,最著名的廠家當(dāng)數(shù)Philips公司。 </p><p> Philips公司以其在嵌入式應(yīng)用方面的巨大優(yōu)勢,將MCS-51從單片微型計算機(jī)迅速發(fā)展到微控制器。因此,當(dāng)我們回顧嵌入式系統(tǒng)發(fā)展道路時,不要忘記Intel和Philips的歷史功績。 </p><p><b&
14、gt; 嵌入式系統(tǒng)</b></p><p> 單片機(jī)是嵌入式系統(tǒng)的獨(dú)立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解決;因此,專用單片機(jī)的發(fā)展自然形成了SoC化趨勢。隨著微電子技術(shù)、IC設(shè)計、EDA工具的發(fā)展,基于SoC的單片機(jī)應(yīng)用系統(tǒng)設(shè)計會有較大的發(fā)展。因此,對單片機(jī)的理解可以從單片微型計算機(jī)、單片微控制器延伸到單片應(yīng)用系統(tǒng)。</p><p>
15、 2.3 單片機(jī)的特點(diǎn) </p><p> 1 . 單片機(jī)的存儲器ROM和RAM時嚴(yán)格區(qū)分的。ROM稱為程序存儲器,只存放程序,固定常數(shù),及數(shù)據(jù)表格。RAM則為數(shù)據(jù)存儲器,用作工作區(qū)及存放用戶數(shù)據(jù)。 </p><p> 2 . 采用面向控制的指令系統(tǒng)。為滿足控制需要,單片機(jī)有更強(qiáng)的邏輯控制能
16、力,特別是單片機(jī)具有很強(qiáng)的位處理能力。 </p><p> 3 . 單片機(jī)的I/O口通常時多功能的。由于單片機(jī)芯片上引腳數(shù)目有限,為了解決實際引腳數(shù)和需要的信號線的矛盾,采用了引腳功能復(fù)用的方法,引腳處于何種功能,可由指令來設(shè)置或由機(jī)器狀態(tài)來區(qū)分。 </p><p&g
17、t; 4 . 單片機(jī)的外部擴(kuò)展能力很強(qiáng)。在內(nèi)部的各種功能部件不能滿足應(yīng)用的需求時,均可在外部進(jìn)行擴(kuò)展,與許多通用的微機(jī)接口芯片兼容,給應(yīng)用系統(tǒng)設(shè)計帶來了很大的方便。</p><p> 2.4 89C51單片機(jī)介紹 </p><p><b> VCC:電源。</b><
18、/p><p><b> GND:接地。</b></p><p> P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p
19、><p> P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸</p><p> 出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,
20、P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存 儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器 的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制
21、信號。</p><p> P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> P3口也可作為AT89C51的一些特殊功能口,如下表所示:</p><p><b> 口
22、管腳 備選功能</b></p><p> P3.0 RXD(串行輸入口)</p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 /INT0(外部中斷0)</p><p> P3.3 /INT1(外部中斷1)</p><p> P3.4 T0(記時器0外部輸入)</p&
23、gt;<p> P3.5 T1(記時器1外部輸入)</p><p> P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)</p><p> P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)</p><p> P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周
24、期的高電平時間。</p><p> ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE 端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器 時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, AL
25、E只有在執(zhí)行MOVX,MOVC指令是</p><p> ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p> PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。</p><p> EA/VPP:當(dāng)/E
26、A保持低電平時,則在此期間外部程序存儲(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時, /EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 </p><p><b> o</b></p><p> 圖2.1 89C51單片機(jī)</p>
27、<p> 第三章 控制系統(tǒng)的硬件設(shè)計</p><p> 3.1 單片機(jī)型號的選擇 </p><p> 通過對多種單片機(jī)性能的分析,最終認(rèn)為89C51是最理想的電子時鐘開發(fā)芯片。89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能
28、CMOS8位微處理器,器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器,而且它與MCS-51兼容,且具有4K字節(jié)可編程閃爍存儲器和1000寫/擦循環(huán),數(shù)據(jù)保留時間為10年等特點(diǎn),是最好的選擇。</p><p> 3.2 數(shù)碼管顯示工作原理</p><
29、p> 數(shù)碼管是一種把多個LED顯示段集成在一起的顯示設(shè)備。有兩種類型,一種是共陽型,一種是共陰型。共陽型就是把多個LED顯示段的陽極接在一起,又稱為公共端。共陰型就是把多個LED顯示段的陰極接在一起,即為公共商。陽極即為二極管的正極,又稱為正極,陰極即為二極管的負(fù)極,又稱為負(fù)極。通常的數(shù)碼管又分為8段,即8個LED顯示段,這是為工程應(yīng)用方便如設(shè)計的,分別為A、B、C、D、E、F、G、DP,其中DP 是小數(shù)點(diǎn)位段。而多位數(shù)碼管,除
30、某一位的公共端會連接在一起,不同位的數(shù)碼管的相同端也會連接在一起。即,所有的A段都會連在一起,其它的段也是如此,這是實際最常用的用法。數(shù)碼管顯示方法可分為靜態(tài)顯示和動態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入及其公共端電平一直有效。動態(tài)顯示的原理是,各個數(shù)碼管的相同段連接在一起,共同占用8 位段引管線;每位數(shù)碼管的陽極連在一起組成公共端。利用人眼的視覺暫留性,依次給出各個數(shù)碼管公共端加有效信號,在此同時給出該數(shù)碼管加有效的數(shù)據(jù)信號,當(dāng)全段
31、掃描速度大于視覺暫留速度時,顯示就會清晰顯示出來。 </p><p> 圖 3.1 共陰數(shù)碼管</p><p> 3.3 鍵盤電路設(shè)計 </p><p> 該設(shè)計只用了一個鍵盤,但實現(xiàn)
32、的功能卻是比較完善,減少了硬件資源的損耗,該鍵盤可以實現(xiàn)小時和分鐘的調(diào)節(jié)以及控制是否進(jìn)入省電模式。當(dāng)按鍵按下又松開,可以實現(xiàn)屏蔽數(shù)碼管顯示的功能,達(dá)到省電的目的;直接按下不松開,則可以通過按鍵實現(xiàn)分鐘的累加,每按一次分鐘加一;而連續(xù)兩次按下按鍵不放松,則可實現(xiàn)小時的調(diào)節(jié),同樣每按一次小時加一。達(dá)到時間調(diào)節(jié)的目的。</p><p> 圖3.2 多功能控制鍵</p><p> 經(jīng)多方論證
33、硬件我們小組采用AT89C51單片機(jī)和7SED六位共陰極數(shù)碼管等來實現(xiàn)單片機(jī)電子時鐘的功能,詳細(xì)元器件列表如表3.1所示:</p><p> 表3.1 詳細(xì)元器件列表</p><p><b> 3.4系統(tǒng)工作原理</b></p><p> 單片機(jī)發(fā)送的信號通過程序控制最終在數(shù)碼管上顯示出來。</p><p> 單
34、片機(jī)通過輸出各種電脈沖信號來驅(qū)動控制各部分正常工作。</p><p> 為使時鐘走時與標(biāo)準(zhǔn)時間一致,校時電路是必不可少的,鍵盤用來校正數(shù)碼管上顯示的時間。</p><p> 設(shè)計的電路主要由三模塊構(gòu)成:單片機(jī)控制電路,顯示電路、及校正電路。</p><p> 此設(shè)計原理框圖如圖3-3所示,此電路包括以下三個部分:單片機(jī),鍵盤及顯示電路</p>&
35、lt;p> 圖3.3 設(shè)計原理框圖</p><p> 本設(shè)計采用匯編語言程序設(shè)計,使單片機(jī)控制數(shù)碼管顯示時、分、秒,當(dāng)秒計數(shù)計滿60時就向分進(jìn)位,分計數(shù)器計滿60后向時計數(shù)器進(jìn)位,小時計數(shù)器按“23翻0”規(guī)律計數(shù)。時、分、秒的計數(shù)結(jié)果經(jīng)過數(shù)據(jù)處理可直接送顯示器顯示。當(dāng)計時發(fā)生誤差的時候可以用校時電路進(jìn)行校正。設(shè)計采用的是時、分、秒顯示,單片機(jī)對數(shù)據(jù)進(jìn)行處理同時在數(shù)碼管上顯示</p>&l
36、t;p> 3.5整個電路原理圖 </p><p> 圖3.4 系統(tǒng)電路原理圖</p><p> 第四章 控制系統(tǒng)的軟件設(shè)計 </p><p><b> 4.1 程序設(shè)計</b>
37、;</p><p> 本系統(tǒng)的軟件系統(tǒng)主要可分為主程序、定時計數(shù)中斷程序、時間調(diào)整程序、延時程序四大模塊。在程序設(shè)計過程中,加強(qiáng)了部分軟件抗干擾措施,下面對部分模塊作介紹。</p><p> 我們用定時器1采用方式1定時,M=65536,如果要求定時時間為50ms,采用12MHz晶振,則機(jī)器周期為1us,由(65536—Z)*1=50*1000得</p><p>
38、; Z=65536-50000=15536=3CB0H</p><p> 將3C、B0H分別預(yù)置給TH1、TL1,即TH1=3CH,TH=0B0H</p><p> 根據(jù)需要開始定時器/計數(shù)器工作------將TR0或TR1置“1”。GATE=0時,直接由軟件置位啟動,即SETB TR0或SETB TR1;GATE=1時,除軟件置位外,還必須在外中斷引腳(P3.3)處輸入高電平值才能
39、啟動。</p><p><b> 定時計數(shù)中斷程序:</b></p><p> MOV TMOD,#11H ;設(shè)T0、T1為16位定時器</p><p> MOV TL0,#0B0H ;50MS定時初值(T0計時用)</p><p> MOV TH0,#3CH ;50MS定時初值
40、</p><p> MOV TL1,#0B0H ;50MS定時初值(T1閃爍定時用)</p><p> MOV TH1,#3CH ;50MS定時初值</p><p> SETB EA ;總中斷開放</p><p> SETB ET0 ;允許T0中斷</p&g
41、t;<p> SETB TR0 ;開啟T0定時器</p><p><b> AJMP $</b></p><p><b> 時間調(diào)整程序:</b></p><p> SETMM: cLR ET0 ;關(guān)定時器T0中斷</p><
42、p> CLR TR0 ;關(guān)閉定時器T0</p><p> LCALL DL1S ;調(diào)用1秒延時程序</p><p> JB P3..3,CLOSEDIS ;鍵按下時間小于1秒,關(guān)閉顯示(省電)
43、 MOV R2,#06H ;進(jìn)入調(diào)時狀態(tài),賦閃爍定時初值 SETB ET1 ;允許T1中斷</p><p> SETB
44、TR1 ;開啟定時器T1</p><p> SET2: JNB P3.3,SET1 ;P3.7口為0(鍵未釋放),等待</p><p> SETB 00H ;鍵釋放,分調(diào)整閃爍標(biāo)志置1</p><p> SET4: JB P3.3,SET3
45、 ;等待鍵按下</p><p> LCALL DL05S ;有鍵按下,延時0.5秒</p><p> JNB P3.3,SETHH ;按下時間大于0.5秒轉(zhuǎn)調(diào)小時狀態(tài)</p><p> MOV R0,#77H ;按下時間小于0.5秒加1分鐘操作<
46、;/p><p> LCALL ADD1 ;調(diào)用加1子程序</p><p> MOV A,R3 ;取調(diào)整單元數(shù)據(jù)</p><p> CLR C ;清進(jìn)位標(biāo)志</p><p> CJNE A,#60H,HHH
47、 ;調(diào)整單元數(shù)據(jù)與60比較</p><p> HHH: JC SET4 ;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán)</p><p> LCALL CLR0 ;調(diào)整單元數(shù)據(jù)大于或等于60時清0</p><p> CLR C ;清進(jìn)
48、位標(biāo)志</p><p> AJMP SET4 ;跳轉(zhuǎn)到SET4循環(huán)</p><p> CLOSEDIS:SETB ET0 ;省電(LED不顯示)狀態(tài)。開T0中斷</p><p> SETB TR0 ;開啟T0定時器(開時鐘)</p>&l
49、t;p> CLOSE: JB P3.3,CLOSE ;無按鍵按下,等待。</p><p> LCALL DISPLAY ;有鍵按下,調(diào)顯示子程序延時削抖</p><p> JB P3.3,CLOSE ;是干擾返回CLOSE等待</p><p> WAITH:
50、 JNB P3.3,WAITH ;等待鍵釋放</p><p> LJMP START1 ;返回主程序(LED數(shù)據(jù)顯示亮)</p><p> SETHH: CLR 00H ;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時狀態(tài))</p><p> SETHH1: JNB P3.3,
51、SET5 ;等待鍵釋放</p><p> SETB 01H ;小時調(diào)整標(biāo)志置1</p><p> SET6: JB P3.3,SET7 ;等待按鍵按下</p><p> LCALL DL05S ;有鍵按下延時0.5秒</p>
52、;<p> JNB P3.3,SETOUT ;按下時間大于0.5秒退出時間調(diào)整</p><p> MOV R0,#79H ;按下時間小于0.5秒加1小時操作</p><p> LCALL ADD1 ;調(diào)加1子程序</p><p>
53、MOV A,R3 ;</p><p> CLR C ;</p><p> CJNE A,#24H,HOUU ;計時單元數(shù)據(jù)與24比較</p><p> HOUU: JC SET6 小于24轉(zhuǎn)SET6循環(huán)</p>&l
54、t;p> LCALL CLR0 ;大于或等于24時清0操作</p><p> AJMP SET6 ; 跳轉(zhuǎn)到SET6循環(huán)</p><p> SETOUT: JNB P3.3,SETOUT1 ;調(diào)時退出程序。等待鍵釋放</p><p> LCA
55、LL DISPLAY ;延時削抖</p><p> JNB P3.3,SETOUT ;是抖動,返回SETOUT再等待</p><p> CLR 01H ;清調(diào)小時標(biāo)志</p><p> CLR 00H
56、 ;清調(diào)分標(biāo)志</p><p> CLR 02H ;清閃爍標(biāo)志</p><p> CLR TR1 ;關(guān)閉定時器T1</p><p> CLR ET1 ;關(guān)定時器T1中斷</p>
57、<p> SETB TR0 ;開啟定時器T0</p><p> SETB ET0 ;開定時器T0中斷(計時開始)</p><p> LJMP START1 ;跳回主程序</p><p> SET1: L
58、CALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)分)</p><p> AJMP SET2 ;防止鍵按下時無時鐘顯示</p><p> SET3: LCALL DISPLAY ;等待調(diào)分按鍵時時鐘顯示用</p><p> AJMP SET4</p>
59、<p> SET5: LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)小時)</p><p> AJMP SETHH1 ;防止鍵按下時無時鐘顯示</p><p> SET7: LCALL DISPLAY ;等待調(diào)小時按鍵時時鐘顯示用</p><p>
60、AJMP SET6</p><p> SETOUT1: LCALL DISPLAY ;退出時鐘調(diào)整時鍵釋放等待</p><p> AJMP SETOUT ;防止鍵按下時無時鐘顯示</p><p><b> 延時程序:</b></p><p> 1MS延
61、時程序,LED顯示程序用</p><p> DL1MS: MOV R6,#14H</p><p> DL1: MOV R7,#19H</p><p> DL2: DJNZ R7,DL2</p><p> DJNZ R6,DL1</p><p><b> RET</b>&l
62、t;/p><p> 20MS延時程序,采用調(diào)用顯示子程序以改善LED的顯示閃爍現(xiàn)象</p><p> DS20MS: ACALL DISPLAY</p><p> ACALL DISPLAY</p><p> ACALL DISPLAY</p><p><b> RET</b><
63、;/p><p> 4.2程序流程圖 </p><p><b> 主程序</b></p><p> 主程序主要是循環(huán)調(diào)用顯示子程序及鍵盤掃描功能設(shè)置子程序,其流程圖如圖4.1所示。</p><p> 圖4.1 主程序框圖</p><p><b
64、> 定時中斷子程序</b></p><p> 時間計時使用定時器t0完成,中斷定時周期設(shè)為50ms。中斷進(jìn)入后,判斷時鐘計時累計中斷到20次(即1s)時,對秒計數(shù)單元進(jìn)行加1操作。計時單元的最大值為23時59分59秒。在計數(shù)單元中采用十進(jìn)制BCD碼計數(shù),滿60進(jìn)位。T0中斷服務(wù)程序流程圖如圖4.2所示。</p><p> 圖4.2 中斷服務(wù)程序流程圖</p&g
65、t;<p> T1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字的亮閃。在時間調(diào)整狀態(tài)下,每過0.3秒,將對應(yīng)單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(#0AH)。這樣在調(diào)整時間時,對應(yīng)調(diào)整單元的顯示數(shù)據(jù)會間隔閃亮。T1中斷服務(wù)程序流程圖如圖4.3所示。</p><p> 圖4.3 中斷服務(wù)程序</p><p> 4.3偉福硬件仿真器簡介</p><p> 主機(jī)+P
66、OD(仿真頭)組合,通過更換POD,可以對各種CPU進(jìn)行仿真。</p><p> 對待不同的應(yīng)用場合,用戶往往會選擇不同的CPU,從而需要更換仿真器,偉福仿真軟件WINDOWS版本支持本公司多種仿真器。支持多類CPU仿真。仿真器則采用主機(jī)+POD組合,通過更換不同的POD,可對各種不同類型的單片機(jī)進(jìn)行仿真。為用戶提供了一種靈活的多CPU仿真系統(tǒng)。</p><p><b> 1
67、.雙平臺</b></p><p> DOS版本,WINDOWS版本。其中WINDOWS版本功能強(qiáng)大。中文界面,英文界面可任選,用戶源程序的大小不再有任何限制,支持ASM,C,PLM語言混合編程,具有項目管理功能,為用戶的資源共享,課題重組提供強(qiáng)有力的手段。支持點(diǎn)屏顯示,用鼠標(biāo)左鍵</p><p> 點(diǎn)一下源程序中的某一變量,即可顯示該變量的數(shù)值。有豐富的窗口顯示方式,多方位
68、,動態(tài)地顯示仿真的各種過程,使用極為便利。本操作系統(tǒng)一經(jīng)推出,立即被廣大用戶所喜愛。</p><p><b> 2.雙工作模式</b></p><p> 1 軟件模擬仿真(不要仿真器也能模擬仿真)。</p><p><b> 2 硬件仿真。</b></p><p> 雙CPU結(jié)構(gòu),100%
69、不占用戶資源。</p><p> 全空間硬件斷點(diǎn),不受任何條件限制,支持地址、數(shù)據(jù)、外部信號、事件斷點(diǎn)、支持</p><p> 實時斷點(diǎn)計數(shù)、軟件運(yùn)行時間統(tǒng)計。</p><p><b> 3.雙集成環(huán)境</b></p><p> 編輯、編譯、下載、調(diào)試全部集中在一個環(huán)境下。</p><p>
70、; 飛利蒲公司的552.LPC764.DALLAS320,華邦438等51增強(qiáng)型CPU。為了跟上形勢,現(xiàn)在很多工程師需要面對和掌握不同和項目管理器、編輯器、編譯器。他們由不多種仿真器,多類CPU仿真全部集成在一個環(huán)境下??煞抡?1系列,196系列,PIC系列,同的廠家開發(fā),相互不兼容,使用不同的界面。學(xué)習(xí)使用都很吃力。偉福 WINDOWS調(diào)試軟件為您提供了一個全集成環(huán)境,統(tǒng)一的界面,包含一個項目管理器,一個功能強(qiáng)大的編輯器,匯編Mak
71、e、Build和調(diào)試工具并提供一個與第三方編譯器的接口。</p><p> 4.4仿真圖及結(jié)果分析</p><p> 單片機(jī)右上角紅色發(fā)光二極管秒燈,每閃爍一次表示時間走動一秒鐘;按鍵正下方黑色按鍵是設(shè)置燈,當(dāng)時間正常走動時此時燈亮,當(dāng)?shù)谝淮伟聪略O(shè)置鍵時,同時秒時熄滅,且分鐘的兩位數(shù)碼管出現(xiàn)閃爍,時間停止走動,進(jìn)入校時狀態(tài),表示此時可以進(jìn)行分鐘的調(diào)整,當(dāng)按一次加一鍵(調(diào)整鍵)可實現(xiàn)分鐘
72、的加一功能,分鐘以60分為極限,超出60分則返回數(shù)值0,從0再重新算起;如果再次按下設(shè)置鍵時,這時秒燈和設(shè)置燈仍舊保持熄滅和點(diǎn)亮狀態(tài),表示分鐘的數(shù)碼管停止閃爍,反過來表示小時的兩位數(shù)碼管則開始閃爍,此時可進(jìn)行小時的調(diào)整,按加1鍵可實現(xiàn)小時的加1功能,小時調(diào)整以24為上限,同樣超出24小時則從新回0;當(dāng)?shù)谌伟聪略O(shè)置鍵時,數(shù)碼管停止閃爍,設(shè)置燈熄滅,秒燈重新閃爍,時間以設(shè)定值計時。 </p><p> 圖4.4
73、偉福軟件模擬圖</p><p><b> 第五章 附錄程序</b></p><p><b> ORG 0000H</b></p><p> LJMP START</p><p><b> ORG 0003H</b></p><p><b
74、> RETI</b></p><p><b> ORG 000BH</b></p><p> LJMP INTT0</p><p><b> ORG 0013H</b></p><p><b> RETI</b></p><p
75、><b> ORG 001BH</b></p><p> LJMP INTT1</p><p><b> ORG 0023H</b></p><p><b> RETI</b></p><p><b> ORG 002BH</b><
76、;/p><p><b> RETI</b></p><p> START:MOV R0, #70H</p><p> MOV R7, #0BH</p><p> MOV 20H, #00H</p><p> CLEARDISP: MOV @R0, #00H</p>&l
77、t;p><b> INC R0</b></p><p> DJNZ R7,CLEARDISP</p><p> MOV 7AH,#0AH</p><p> MOV TMOD,#11H</p><p> MOV TL0, #0B0H</p><p> MOV TH0, #3CH&l
78、t;/p><p> MOV TL1, #0B0H</p><p> MOV TH1, #3CH</p><p><b> SETB EA</b></p><p><b> SETB ET0</b></p><p><b> SETB TR0</b>
79、</p><p> MOV R4,#14H</p><p> START1:LCALL DISPLAY</p><p> JNB P3.3,SETMM1</p><p> SJMP START1</p><p> SETMM1:LJMP SETMM</p><p> INTT0:P
80、USH ACC</p><p><b> PUSH PSW </b></p><p><b> CLR ET0</b></p><p><b> CLR TR0</b></p><p> MOV A,#0B7H</p><p><b>
81、 ADD A,TL0</b></p><p><b> MOV TL0,A</b></p><p> MOV A,#3CH</p><p><b> ADD A,TH0</b></p><p><b> MOV TH0,A</b></p>&
82、lt;p><b> SETB TR0</b></p><p> DJNZ R4,OUTT0</p><p> ADDSS:MOV R4,#14H</p><p> MOV R0,#71H</p><p> ACALL ADD1</p><p><b> MOV A,R
83、3</b></p><p><b> CLR C</b></p><p> CJNE A,#60H,ADDMM</p><p> ADDMM:JC OUTT0</p><p> ACALL CLR0</p><p> MOV R0,#77H</p><p
84、> ACALL ADD1</p><p><b> MOV A,R3</b></p><p><b> CLR C</b></p><p> CJNE A,#60H,ADDHH</p><p> ADDHH:JC OUTT0</p><p> ACALL C
85、LR0</p><p> MOV R0,#79H</p><p> ACALL ADD1</p><p><b> MOV A,R3</b></p><p><b> CLR C</b></p><p> CJNE A,#24H,HOUR</p>&l
86、t;p> HOUR:JC OUTT0</p><p> ACALL CLR0</p><p> OUTT0:MOV 72H,76H</p><p> MOV 73H,77H</p><p> MOV 74H,78H</p><p> MOV 75H,79H</p><p&g
87、t;<b> POP PSW</b></p><p><b> POP ACC</b></p><p><b> SETB ET0</b></p><p><b> RETI</b></p><p> INTT1: PUSH ACC</p
88、><p><b> PUSH PSW</b></p><p> MOV TL1, #0B0H</p><p> MOV TH1, #3CH</p><p> DJNZ R2,INTT1OUT</p><p> MOV R2,#06H</p><p>&
89、lt;b> CPL 02H</b></p><p> JB 02H,FLASH1</p><p> MOV 72H,76H</p><p> MOV 73H,77H</p><p> MOV 74H,78H</p><p> MOV 75H,79H</p><
90、;p> INTT1OUT: POP PSW</p><p><b> POP ACC</b></p><p><b> RETI</b></p><p> FLASH1: JB 01H,FLASH2</p><p> MOV 72H,7AH</p><
91、;p> MOV 73H,7AH</p><p> MOV 74H,78H</p><p> MOV 75H,79H</p><p> AJMP INTT1OUT</p><p> FLASH2: MOV 72H,76H</p><p> MOV 73H,77H</p>
92、<p> MOV 74H,7AH</p><p> MOV 75H,7AH</p><p> AJMP INTT1OUT</p><p> ADD1:MOV A,@R0</p><p><b> DEC R0</b></p><p><b> SWAP A<
93、;/b></p><p><b> ORL A,@R0</b></p><p> ADD A,#01H</p><p><b> DA A</b></p><p><b> MOV R3,A</b></p><p> ANL A,#0FH
94、</p><p><b> MOV @R0,A</b></p><p><b> MOV A,R3</b></p><p><b> INC R0</b></p><p><b> SWAP A</b></p><p>
95、ANL A,#0FH</p><p><b> MOV @R0,A</b></p><p><b> RET</b></p><p> CLR0:CLR A</p><p><b> MOV @R0,A</b></p><p><b>
96、 DEC R0</b></p><p><b> MOV @R0,A</b></p><p><b> RET</b></p><p> SETMM: CLR ET0</p><p><b> CLR TR0</b></p><p>
97、; LCALL DL1S</p><p> JB P3.3,CLOSEDIS</p><p> MOV R2,#06H</p><p><b> SETB ET1</b></p><p><b> SETB TR1</b></p><p> SET2: JNB P
98、3.3,SET1</p><p><b> SETB 00H</b></p><p> SET4: JB P3.3,SET3</p><p> LCALL DL05S</p><p> JNB P3.3,SETHH</p><p> MOV R0,#77H</p><
99、;p> LCALL ADD1</p><p><b> MOV A,R3</b></p><p><b> CLR C</b></p><p> CJNE A,#60H,HHH</p><p> HHH:JC SET4</p><p> LCALL CLR0
100、</p><p><b> CLR C</b></p><p><b> AJMP SET4</b></p><p> CLOSEDIS: SETB ET0</p><p><b> SETB TR0</b></p><p> CLOSE:JB
101、 P3.3,CLOSE</p><p> LCALL DISPLAY</p><p> JB P3.3,CLOSE</p><p> WAITH: JNB P3.3,WAITH</p><p> LJMP START1</p><p> SETHH: CLR 00H</p><p&g
102、t; SETHH1:JNB P3.3,SET5</p><p><b> SETB 01H</b></p><p> SET6: JB P3.3,SET7</p><p> LCALL DL05S</p><p> JNB P3.3,SETOUT</p><p> MOV R0,#
103、79H</p><p> LCALL ADD1</p><p><b> MOV A,R3</b></p><p><b> CLR C</b></p><p> CJNE A,#24H,HOUU</p><p> HOUU:JC SET6</p>&
104、lt;p> LCALL CLR0</p><p><b> AJMP SET6</b></p><p> SETOUT: JNB P3.3,SETOUT1</p><p> LCALL DISPLAY</p><p> JNB P3.3,SETOUT</p><p><b&
105、gt; CLR 01H</b></p><p><b> CLR 00H</b></p><p><b> CLR 02H</b></p><p><b> CLR TR1</b></p><p><b> CLR ET1</b>&l
106、t;/p><p><b> SETB TR0</b></p><p><b> SETB ET0</b></p><p> LJMP START1</p><p> SET1:LCALL DISPLAY</p><p> AJMP SET2</p>
107、<p> SET3:LCALL DISPLAY</p><p> AJMP SET4</p><p> SET5:LCALL DISPLAY</p><p> AJMP SETHH1</p><p> SET7:LCALL DISPLAY</p><p> AJMP SET6&l
108、t;/p><p> SETOUT1:LCALL DISPLAY</p><p> AJMP SETOUT</p><p> DISPLAY:MOV DPTR,#TAB</p><p><b> SETB P1.0</b></p><p><b> MOV A,70H</
109、b></p><p> MOVC A,@A+DPTR</p><p> ANL A,#7FH ;</p><p><b> MOV P0,A</b></p><p> LCALL DL1MS</p><p><b> CLR P1.0</b></p>
110、;<p><b> SETB P1.1</b></p><p><b> MOV A,71H</b></p><p> MOVC A,@A+DPTR</p><p> ANL A,#7FH ;</p><p><b> MOV P0,A</b></
111、p><p> LCALL DL1MS</p><p><b> CLR P1.1</b></p><p><b> SETB P1.2</b></p><p><b> MOV A,72H</b></p><p> MOVC A,@A+DPTR&l
112、t;/p><p> ANL A,#7FH ;</p><p><b> MOV P0,A</b></p><p> LCALL DL1MS</p><p><b> CLR P1.2</b></p><p><b> SETB P1.3</b>&l
113、t;/p><p><b> MOV A,73H</b></p><p> MOVC A,@A+DPTR</p><p> ANL A,#7FH ;</p><p><b> MOV P0,A</b></p><p> LCALL DL1MS</p><
114、;p><b> CLR P1.3</b></p><p><b> SETB P1.4</b></p><p><b> MOV A,74H</b></p><p> MOVC A,@A+DPTR</p><p> ANL A,#7FH ;</p>
115、<p><b> MOV P0,A</b></p><p> LCALL DL1MS</p><p><b> CLR P1.4</b></p><p><b> SETB P1.5</b></p><p><b> MOV A,75H</
116、b></p><p> MOVC A,@A+DPTR</p><p> ANL A,#7FH ;</p><p><b> MOV P0,A</b></p><p> LCALL DL1MS</p><p><b> CLR P1.5</b></p>
117、;<p> MOV P0,#00H</p><p><b> RET</b></p><p> TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H</p><p><b> ;</b></p><p> DL1MS:MOV R
118、6,#14H</p><p> DL1:MOV R7,#19H</p><p> DL2:DJNZ R7,DL2</p><p> DJNZ R6,DL1</p><p><b> RET</b></p><p> DS20MS:ACALL DISPLAY</p><
119、p> ACALL DISPLAY</p><p> ACALL DISPLAY</p><p><b> RET</b></p><p> DL1S:LCALL DL05S</p><p> LCALL DL05S</p><p><b> RET</b>&
120、lt;/p><p> DL05S:MOV R3,#20H</p><p> DL05S1:LCALL DISPLAY</p><p> DJNZ R3,DL05S1</p><p><b> RET</b></p><p><b> END</b></p>
121、<p><b> 第六章 結(jié)束語</b></p><p> 開始的時候由于沒有經(jīng)驗,不知如何下手,所以就去圖書館找了一些書看,盡管有許多設(shè)計方案,可是總覺得自己還有許多的東西弄不太清楚,于是就請教同學(xué)。他嘗做一些設(shè)計,有了一些經(jīng)驗。經(jīng)過他的努解釋分析之后決定用查表,中斷的方法來做這樣可以降低一些硬件的難度,初次設(shè)計應(yīng)切合自己的水平。我以為這些做好了,構(gòu)思也有了寫程序應(yīng)該是相對
122、容易的。誰知道,寫起程序來才想到中斷程序不會寫,我真的感到很難,那是真的有點(diǎn)想放棄,于是就去請教了老師,老師幫忙分析了一下。自己有查閱了一些資料。終于明白了中斷程序是怎么寫的。</p><p> 于是在自己的努力下,程序很快就寫好了,功能上基本達(dá)標(biāo):時鐘的顯示,秒表顯示,定時功能,調(diào)時功能。時鐘顯示功能,精確度完全可以滿足日常生活顯示時間的需要;調(diào)時功能,方便快捷;硬件設(shè)施合乎要求,軟件設(shè)計可以配合硬件實現(xiàn)要求
123、功能。</p><p> 這次是我第一個設(shè)計器件,盡管經(jīng)李了不少艱辛,但給我積累了一點(diǎn)設(shè)計的經(jīng)驗,最后也以有點(diǎn)小小的成就感。后面的路還很長,我還得努力。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 丁向榮、賈平?!秵纹瑱C(jī)應(yīng)用系統(tǒng)與開發(fā)技術(shù)》.清華大學(xué)出版社,2009</p><p> [
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于at89c51單片機(jī)的電子時鐘設(shè)計
- 單片機(jī)課程設(shè)計_基于89c51的數(shù)字電子時鐘的設(shè)計
- 基于89c51單片機(jī)電子時鐘課程設(shè)計
- 基于at89c51單片機(jī)的數(shù)字時鐘設(shè)計
- 畢業(yè)設(shè)計(論文)-基于at89c51單片機(jī)電子時鐘的設(shè)計
- 課程設(shè)計---基于單片機(jī)51的電子時鐘設(shè)計
- 單片機(jī)課程設(shè)計-- 基于51單片機(jī)的電子時鐘系統(tǒng)
- c51單片機(jī)lcd電子時鐘課程設(shè)計
- 單片機(jī)原理課程設(shè)計--基于at89c52的電子時鐘設(shè)計
- 單片機(jī)課程設(shè)計報告--基于stc89c52單片機(jī)的電子時鐘(日歷)
- 畢業(yè)論文-基于at89c51單片機(jī)電子時鐘的設(shè)計與實現(xiàn)(完稿)
- 基于51單片機(jī)的電子時鐘設(shè)計
- 基于at89c51單片機(jī)的電機(jī)控制綜合課程設(shè)計
- 課程設(shè)計--基于at89c51單片機(jī)控制步進(jìn)電機(jī)
- 基于at89c51單片機(jī)音樂盒課程設(shè)計
- 51單片機(jī)電子時鐘課程設(shè)計
- 基于單片機(jī)的電子時鐘課程設(shè)計
- 基于單片機(jī)at89c51控制的led點(diǎn)陣屏顯示時鐘課程設(shè)計報告
- 單片機(jī)課程設(shè)計報告--基于單片機(jī)的電子時鐘
- 基于89c52單片機(jī)的電子時鐘設(shè)計
評論
0/150
提交評論