版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 單片機(jī)技術(shù)課程設(shè)計(jì)說明書</p><p><b> 數(shù)字電子鐘</b></p><p><b> 摘 要:</b></p><p> AT89C52 ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī).片內(nèi)含8K byTES的可反復(fù)擦寫的只讀程序存儲器(PEROM)和256 byTES 。
2、的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052 產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU )和FLASH由存儲單元,功能強(qiáng)大AT89C52單片適用于許多較為復(fù)雜控制應(yīng)用場合。</p><p><b> 主要性能參數(shù):</b></p><p> 與Mcs-51產(chǎn)品指令和引腳完全兼容。
3、8字節(jié)可重擦寫FLASH閃速存儲器1000 次擦寫周期全靜態(tài)操作:0HZ-24MHZ三級加密程序存儲器256X8字節(jié)內(nèi)部RAM32個可編程I/0口線3個16 位定時(shí)/計(jì)數(shù)器8個中斷源可編程串行UART通道低功耗空閑和掉電模式</p><p> 電子鐘是一種用電子電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。
4、</p><p> 電子鐘從原理上講是一種典型的電子電路,其中包括了組合邏輯電路和時(shí)序電路。目前,電子鐘的功能越來越強(qiáng),并且有多種專門的大規(guī)模集成電路可供選擇。</p><p> 從有利于學(xué)習(xí)的角度考慮,這里主要介紹以中小規(guī)模集成電路設(shè)計(jì)電子鐘的方法。</p><p> 經(jīng)過了電子電路設(shè)計(jì)這門課程的系統(tǒng)學(xué)習(xí),特別經(jīng)過了關(guān)于組合邏輯電路與時(shí)序邏輯電路部分的學(xué)習(xí),
5、我們已經(jīng)具備了設(shè)計(jì)小規(guī)模集成電路的能力,借由本次設(shè)計(jì)的機(jī)會,充分將所學(xué)的知識運(yùn)用到實(shí)際中去。本次課程設(shè)計(jì)要求設(shè)計(jì)一個電子鐘,基本要求為電子鐘的時(shí)間周期為24小時(shí),電子鐘顯示時(shí)、分、秒,電子鐘的時(shí)間基準(zhǔn)一秒對應(yīng)現(xiàn)實(shí)生活中的時(shí)鐘的一秒。因此,研究電子鐘,有著非?,F(xiàn)實(shí)的意義。</p><p><b> 目 錄</b></p><p> 摘要……………………………………
6、………………………………………2</p><p> 第一章 系統(tǒng)的組成及工作原理……………………………………………4</p><p> 1.1 設(shè)計(jì)要求………………………………………………………………4</p><p> 1.2 系統(tǒng)的組成……………………………………………………………4</p><p> 1.3 系統(tǒng)的工作原理…
7、……………………………………………………4</p><p> 第二章 系統(tǒng)硬件電路方案設(shè)計(jì)……………………………………………7</p><p> 2.1 電子時(shí)鐘方案…………………………………………………………7</p><p> 2.2 數(shù)碼顯示方案…………………………………………………………7 </p><p> 2.
8、3 單元電路設(shè)計(jì)…………………………………………………………8</p><p> 2.2.1 晶體振蕩電路……………………………………………………8</p><p> 2.2.2 復(fù)位電路…………………………………………………………8</p><p> 2.2.3 顯示電路…………………………………………………………9</p><p
9、> 2.2.4 鍵盤電路…………………………………………………………9</p><p> 第三章 系統(tǒng)的軟件設(shè)計(jì)……………………………………………………10</p><p> 3.1 程序流程圖……………………………………………………………10</p><p> 3.2 源程序…………………………………………………………………11</p&g
10、t;<p> 第四章 系統(tǒng)調(diào)試……………………………………………………………17</p><p> 4.1 軟件調(diào)試………………………………………………………………17</p><p> 4.2 硬件調(diào)試………………………………………………………………17</p><p> 第五章 設(shè)計(jì)體會和結(jié)論……………………………………………………18
11、</p><p> 參考文獻(xiàn)………………………………………………………………………19</p><p> 致謝……………………………………………………………………………20 </p><p> 附錄一:電路原理圖…………………………………………………………21</p><p> 附錄二:PCB圖……………………………………………………
12、…………22</p><p> 附錄三:數(shù)碼管元件清單……………………………………………………23</p><p> 第一章 系統(tǒng)組成及工作原理</p><p> 1.1 系統(tǒng)設(shè)計(jì)要求</p><p> 設(shè)計(jì)一個具有特定功能的電子鐘。該電子鐘上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“P.”, 進(jìn)入時(shí)鐘準(zhǔn)備狀態(tài);第一次按電子鐘啟動/調(diào)整鍵,
13、電子鐘從0時(shí)0分0秒開始運(yùn)行,進(jìn)入時(shí)鐘運(yùn)行狀態(tài);再次按電子鐘啟動/調(diào)整鍵,則電子鐘進(jìn)入時(shí)鐘調(diào)整狀態(tài),此時(shí)可利用各調(diào)整鍵調(diào)整時(shí)間,調(diào)整結(jié)束后可按啟動/調(diào)整鍵再次進(jìn)入時(shí)鐘運(yùn)行狀態(tài)。</p><p><b> 1.2 系統(tǒng)的組成</b></p><p> 數(shù)字鐘實(shí)際上是一個對標(biāo)準(zhǔn)頻率(1HZ)進(jìn)行計(jì)數(shù)的計(jì)數(shù)電路.由于計(jì)數(shù)的起始時(shí)間不可能與標(biāo)準(zhǔn)時(shí)間一致,故需要在電路上加一
14、個校時(shí)電路,同時(shí)標(biāo)準(zhǔn)的1MHZ時(shí)間信號必須做到準(zhǔn)確穩(wěn)定.通常使用石英晶體振蕩器電路構(gòu)成數(shù)字鐘. </p><p> 晶體振蕩器 晶體振蕩器給數(shù)字鐘提供一個頻率穩(wěn)定準(zhǔn)確的11.0592MHz的方波信號,可保證數(shù)字鐘的走時(shí)準(zhǔn)確及穩(wěn)定.不管是指針式的電子鐘還是數(shù)字顯示的電子鐘都使用了晶體振蕩器。</p><p> 復(fù)位電路 時(shí)間計(jì)數(shù)電路由秒個位和秒十位計(jì)數(shù)器,分個位和分十
15、位計(jì)數(shù)器,時(shí)個位和時(shí)十位電路構(gòu)成,秒個位和秒十位計(jì)數(shù)器,分個位和分十位計(jì)數(shù)器為60進(jìn)制計(jì)數(shù)器,時(shí)個位和時(shí)十位計(jì)數(shù)器為24進(jìn)制計(jì)數(shù)器。</p><p> 數(shù)碼管 數(shù)碼管通常有發(fā)光二極管(LED)數(shù)碼管和液晶(LCD)數(shù)碼管,本設(shè)計(jì)提供的為LED數(shù)碼管。</p><p><b> 鍵盤</b></p><p> 鍵盤是控制和修改時(shí)鐘
16、的重要輸入模塊,通過鍵盤可以修改時(shí)間,修改年月日,修改鬧鐘時(shí)間,控制顯示等。</p><p> 1.3 系統(tǒng)工作原理</p><p> VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定
17、義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
18、160; P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)</p><p> RST
19、:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微
20、處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 </p><p> PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。 EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時(shí),/
21、EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。數(shù)據(jù)存儲器時(shí),將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE</p><p> 第二章
22、系統(tǒng)硬件電路方案設(shè)計(jì)</p><p> 2.1 電子時(shí)鐘方案</p><p> 電子時(shí)鐘是本設(shè)計(jì)的最主要的部分。根據(jù)需要,可利用兩種方案實(shí)現(xiàn)。</p><p> 方案一:本方案采用Dallas公司的專用時(shí)鐘芯片DS12887A。該芯片內(nèi)部采用石英晶體振蕩器,其芯片精度不大于10ms/年,且具有完備的時(shí)鐘鬧鐘功能,因此,可直接對其以用于顯示或設(shè)置,使得軟件編程相
23、對簡單。為保證時(shí)鐘在電網(wǎng)電壓不足或突然掉電等突發(fā)情況下仍能正常工作,芯片內(nèi)部包含鋰電池。當(dāng)電網(wǎng)電壓不足或突然掉電時(shí),系統(tǒng)自動轉(zhuǎn)換到內(nèi)部鋰電池供電系統(tǒng)。而且即使系統(tǒng)不上電,程序不執(zhí)行時(shí),鋰電池也能保證芯片的正常運(yùn)行,以備隨時(shí)提供正確的時(shí)間。</p><p> 方案二:本方案完全用軟件實(shí)現(xiàn)數(shù)字時(shí)鐘。原理為:在單片機(jī)內(nèi)部存儲器設(shè)6個字節(jié)分別存放時(shí)鐘的時(shí)、分、秒信息。利用定時(shí)器與軟件結(jié)合實(shí)現(xiàn)1秒定時(shí)中斷,每產(chǎn)生一次中斷
24、,存儲器內(nèi)相應(yīng)的秒值加1;若秒值達(dá)到60,則將其清零,并將相應(yīng)的分字節(jié)值加1;若分值達(dá)到60,則清零分字節(jié),并將時(shí)字節(jié)值加1;若時(shí)值達(dá)到24,則將十字節(jié)清零。該方案具有硬件電路簡單的特點(diǎn)。但由于每次執(zhí)行程序時(shí),定時(shí)器都要重新賦初值,所以該時(shí)鐘精度不高。而且,由于是軟件實(shí)現(xiàn),當(dāng)單片機(jī)不上電,程序不執(zhí)行時(shí),時(shí)鐘將不工作。</p><p> 基于硬件電路的考慮,本設(shè)計(jì)采用方案二完成數(shù)字時(shí)鐘的功能。</p>
25、<p> 2.2 數(shù)碼管顯示方案</p><p> 方案一:靜態(tài)顯示。所謂靜態(tài)顯示,就是當(dāng)顯示器顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定的導(dǎo)通或截止。該方式每一位都需要一個8 位輸出口控制。靜態(tài)顯示時(shí)較小的電流能獲得較高的亮度,且字符不閃爍。但當(dāng)所顯示的位數(shù)較多時(shí),靜態(tài)顯示所需的I/O口太多,造成了資源的浪費(fèi)。</p><p> 方案二:動態(tài)顯示。所謂動態(tài)顯示就是一位一位的
26、輪流點(diǎn)亮各個位,對于顯示器的每一位來說,每隔一段時(shí)間點(diǎn)亮一次。利用人的視覺暫留功能可以看到整個顯示,但必須保證掃描速度足夠快,字符才不閃爍。顯示器的亮度既與導(dǎo)通電流有關(guān),也于點(diǎn)亮?xí)r間與間隔時(shí)間的比例有關(guān)。調(diào)整參數(shù)可以實(shí)現(xiàn)較高穩(wěn)定度的顯示。動態(tài)顯示節(jié)省了I/O口,降低了能耗。</p><p> 從節(jié)省I/O口和降低能耗出發(fā),本設(shè)計(jì)采用方案二。</p><p> 2.3 單元電路設(shè)計(jì)<
27、;/p><p> 2.3.1 晶體振蕩電路</p><p> 時(shí)鐘電路原理圖。如圖2.1所示,在AT89S51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。而在芯片內(nèi)部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個穩(wěn)定的自激振蕩器。時(shí)鐘電路產(chǎn)生的振蕩脈沖經(jīng) 過觸發(fā)器進(jìn)行二分頻之后,才成為單片機(jī)的時(shí)鐘脈沖信號。</p>
28、<p> 圖2.1 晶體振蕩電路</p><p> 2.3.2 復(fù)位電路</p><p> 單片機(jī)復(fù)位的條件是:必須使RST/VPD 或RST引腳加上持續(xù)兩個機(jī)器周期(即24個振蕩周期)的高電平。例如,若時(shí)鐘頻率為12 MHz,每機(jī)器周期為1μs,則只需2μs以上時(shí)間的高電平,在RST引腳出現(xiàn)高電平后的第二個機(jī)器周期執(zhí)行復(fù)位。單片機(jī)常見的復(fù)位如圖2.2所示。電路為上電復(fù)
29、位電路,它是利用電容充電來實(shí)現(xiàn)的。在接電瞬間,RESET端的電位與VCC相同,隨著充電電流的減少,RESET的電位逐漸下降。只要保證RESET為高電平的時(shí)間大于兩個機(jī)器周期,便能正常復(fù)位。 該電路除具有上電復(fù)位功能外,若要復(fù)位,只需按圖中的RESET鍵,此時(shí)電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生一個復(fù)位高電平。</p><p><b> 圖2.2 復(fù)位電路</b></p&
30、gt;<p> 2.3.3 顯示電路</p><p> 系統(tǒng)采用動態(tài)顯示方式,用P0口來控制LED數(shù)碼管的段控線,而用P2口來控制其位控線。如圖2.3所示。動態(tài)顯示通常都是采用動態(tài)掃描的方法進(jìn)行顯示,即循環(huán)點(diǎn)亮每一個數(shù)碼管,這樣雖然在任何時(shí)刻都只有一位數(shù)碼管被點(diǎn)亮,但由于人眼存在視覺殘留效應(yīng),只要每位數(shù)碼管間隔時(shí)間足夠短,就可以給人以同時(shí)顯示的感覺。</p><p>
31、圖2.3 數(shù)碼管電路</p><p> 2.3.4 鍵盤電路</p><p> 鍵盤的操作,無論是按鍵或鍵盤都是利用機(jī)械觸點(diǎn)的合、斷作用。一個電壓信號通過機(jī)械觸點(diǎn)的閉合、斷開過程。由于機(jī)械觸點(diǎn)的彈性作用,在閉合及斷開瞬間均有抖動過程,會出現(xiàn)一系列負(fù)脈沖。抖動時(shí)間的長短,與開關(guān)的機(jī)械特性有關(guān),一般為5—10ms。 </p><p> 圖2
32、.4 獨(dú)立式鍵盤 </p><p> 第三章 系統(tǒng)軟件設(shè)計(jì)</p><p><b> 3.1程序流程圖</b></p><p> 數(shù)字電子鐘主要包括初始化程序,中斷服務(wù)程序和鍵處理程序。程序流程圖如圖3.1,圖3.2,圖3.3,圖3.4所示。</p><p> 圖3.3定時(shí)1服務(wù)中斷程序</p>&
33、lt;p> 圖3.4 鍵處理程序</p><p><b> 3.2源程序</b></p><p> ;偽指令定義區(qū) </p><p> SECLEQU30H</p><p> SECHEQU31H</p><p> MINUTELEQU32H<
34、/p><p> MINUTEHEQU33H</p><p> HOURLEQU34H</p><p> HOURHEQU35H</p><p> S2BZBIT2FH.0</p><p> S3BZBIT2FH.1</p><p> S4BZBI
35、T2FH.2</p><p> S5BZBIT2FH.3</p><p> S6BZBIT2FH.4</p><p> ;**********************************************************;</p><p><b> ;起始程序</b><
36、;/p><p><b> ORG0000H</b></p><p> START:LJMPMAIN</p><p><b> ORG000BH</b></p><p> LJMPTC0</p><p> ;************************
37、**********************************;</p><p><b> ;監(jiān)控程序</b></p><p> ORG0030H </p><p> MAIN:MOVSP,#7FH;堆棧初始化</p><p> MOVPSW,#00H;當(dāng)前通用寄存器組初
38、始化</p><p> MOVR0,#20H;</p><p> MOVR2,#96;循環(huán)次數(shù),用戶RAM單元個數(shù)</p><p> CL:MOV@R0,#00H;清零</p><p> INCR0;</p><p> DJNZR2,CL;用戶RA
39、M ,20H-7FH清零</p><p> MOVTMOD,#01H;定時(shí)器0方式1工作</p><p> MOVTH0,#3CH</p><p> MOVTL0,#0B0H ;定時(shí)器初始化 定時(shí)50ms</p><p><b> SETBEA</b></p><p
40、><b> SETBET0</b></p><p> MOV40H, #20</p><p> TCC:MOVDPTR,#DISBH ;系統(tǒng)初始化后‘P.’字符代碼首地址</p><p> MOVR0,#78H ;顯示子程序入口首地址</p><p> MOVR5,
41、#8H ;8位數(shù)碼管,故需要循環(huán)8次</p><p><b> CLRA</b></p><p> DISPTSF:PUSHACC ;保護(hù)A</p><p> MOVCA,@A+DPTR </p><p> MOV@R0,A ;將P.字符代碼送入顯示緩沖區(qū)</
42、p><p> POPACC ;恢復(fù)A</p><p> INCA </p><p> INCR0 ;為送下一個字符代碼序號做準(zhǔn)備</p><p> DJNZR5,DISPTSF </p><p> ML0:LCALLDISP ;調(diào)用顯示子程
43、序</p><p><b> LCALLKEY</b></p><p> KEY0:JB20H.0,S2FUNCTION</p><p> JB20H.1,S3FUNCTION</p><p> JB20H.2,S4FUNCTION</p><p> J
44、B20H.3,S5FUNCTION</p><p><b> LJMPML0</b></p><p> ;**********************************************************;</p><p><b> ;鍵功能程序;</b></p><p
45、> S2FUNCTION:CPLS2BZ;1代表開始</p><p> JBS2BZ,STARTTIME1</p><p><b> CLRTR0</b></p><p><b> LJMPUP1</b></p><p> STARTTIME1:SETB
46、TR0 ;開始計(jì)時(shí)</p><p> UP1:LCALLUPDATE</p><p> LCALLDISP</p><p><b> LJMPML0</b></p><p> S3FUNCTION:JBTR0,ML0;判斷時(shí)鐘停止后進(jìn)行調(diào)整</p><
47、;p> MOVR0,#SECH;入口為秒位</p><p> SSSS: LCALLDAAD1;秒加1</p><p> MOVA,R2;判斷秒是否計(jì)滿到60</p><p> XRLA,#60H</p><p> JNZTTTT;沒滿則轉(zhuǎn)移更新顯緩</p>
48、<p> LCALLCLR0;滿則清零</p><p> TTTT:LCALLUPDATE</p><p><b> LJMPML0</b></p><p> S4FUNCTION:JBTR0,ML0 ;判斷時(shí)鐘停止后進(jìn)行調(diào)整</p><p> MOVR0,
49、#MINUTEH ;入口為分位</p><p><b> LJMPSSSS</b></p><p> S5FUNCTION:JBTR0,ML0 ;判斷時(shí)鐘停止后進(jìn)行調(diào)整</p><p> MOVR0,#HOURH ;入口為時(shí)位</p><p> FFFF: LCALLD
50、AAD1</p><p> MOVA,R2</p><p> XRLA,#24H ;判斷時(shí)是否計(jì)滿到24</p><p> JNZTTTT ;沒滿則轉(zhuǎn)移更新顯緩</p><p> LCALLCLR0 ;滿則清零</p><p>
51、; ;**********************************************************;</p><p><b> ;中斷服務(wù)程序;</b></p><p> TC0:PUSHPSW</p><p><b> PUSHACC</b></p><p>
52、<b> SETBRS1</b></p><p><b> SETBRS0</b></p><p> MOVTH0,#3CH ;定時(shí)器初值重裝 定時(shí)50ms</p><p> MOVTL0,#0B0H</p><p> MOVA,40H</p>
53、<p><b> DECA</b></p><p> MOV40H,A ;</p><p> JNZRET0 ;不為0則轉(zhuǎn)移</p><p> MOV40H, #20 ;為零則1S到,秒加一</p><p>
54、 MOVR0,#SECH ;秒位送加一子程序入口</p><p> LCALLDAAD1 ;</p><p> MOVA,R2 ;</p><p> XRLA,#60H ;判斷秒位是否到60</p><p> JNZRET0
55、 ;沒到則更新顯緩</p><p> LCALLCLR0 ;到了則清零顯緩</p><p> MOVR0,#MINUTEH ;同時(shí)分為也該加一</p><p> LCALLDAAD1</p><p> MOVA,R2</p><p> XRLA,#60H
56、 ;判斷分位是否到60</p><p> JNZRET0 ;沒到則更新顯緩</p><p> LCALLCLR0 ;到了則清零顯緩</p><p> MOVR0,#HOURH ;同時(shí)時(shí)為也該加一</p><p> LCALLDAAD1</p&
57、gt;<p> MOVA,R2</p><p> XRLA,#24H ;判斷分位是否到24</p><p> JNZRET0 ;沒到則更新顯緩</p><p> LCALLCLR0 ;到了則清零顯緩</p><p> RET0:L
58、CALLUPDATE ;更新顯緩</p><p><b> POPACC</b></p><p><b> POP PSW</b></p><p><b> RETI</b></p><p> ;**********************
59、************************************;</p><p><b> ;常數(shù)表格區(qū)</b></p><p> ;系統(tǒng)初始化后1-8字符代碼表</p><p> DISBH: DB 10H,10H,10H,10H,10H,10H,10H,11H </p><p> ;
60、提示符“P.”字符序號</p><p> ;顯示字符段選碼表(共陽極代碼)</p><p> TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8 DB 90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH ,0BFH </p><p>
61、 ;9,A,B,C,D,E,F,滅,p. ,-</p><p> ;**********************************************************;</p><p> ;加1子程序 由R0進(jìn)入</p><p><b> DAAD1:</b></p><p> MOVA
62、,@R0</p><p> DECR0 ;指向個位</p><p> SWAPA ;個位互換到第四位</p><p> ORLA,@R0 ;合字</p><p> ADDA,#01H</p><p> DAA ;加一并調(diào)整</p&g
63、t;<p> MOVR2,A ;保存數(shù)值到R2</p><p> ANLA,#0FH ;屏蔽高4位</p><p> MOV@R0,A ;此時(shí)R0指向個位顯緩 </p><p> INCR0 ;指向十位</p><p> MOVA, R
64、2 ;將數(shù)值重新取出</p><p> ANLA,#0F0H ;屏蔽低4位</p><p> SWAPA ;壓縮為BCD碼</p><p> MOV@R0,A ;此時(shí)R0指向十位顯緩</p><p><b> RET</b></p><p> ;清
65、零子程序 由R0進(jìn)入</p><p> CLR0:CLRA</p><p> MOV@R0,A ;此時(shí)R0指向十位顯緩清零</p><p><b> DECR0</b></p><p> MOV@R0,A ;此時(shí)R0指向個位顯緩清零</p><p
66、><b> RET</b></p><p> ;更新顯示緩沖區(qū)子程序</p><p> UPDATE:MOV78H, SECL</p><p> MOV79H, SECH</p><p> MOV7AH,#12H</p><p> MOV7BH
67、,MINUTEL</p><p> MOV7CH,MINUTEH</p><p> MOV7DH,#12H</p><p> MOV7EH,HOURL</p><p> MOV7FH,HOURH</p><p><b> RET</b></p>
68、<p><b> ;鍵掃描子程序</b></p><p> KEY: LCALL KEYCHULI;調(diào)P1口數(shù)據(jù)處理子程序</p><p> JZ EXIT1;沒有鍵按下,轉(zhuǎn)返回</p><p> LCALL DISP;調(diào)顯示子程序去抖動</p><p> L
69、CALL DISP</p><p> LCALL KEYCHULI;調(diào)P1口數(shù)據(jù)處理子程序</p><p> JZ EXIT1;沒有鍵按下,轉(zhuǎn)返回</p><p> MOV B,20H ;保存取反后的鍵值</p><p> KEYSF: LCALL KEYCHULI;調(diào)P1口數(shù)據(jù)處理
70、子程序</p><p> JZ KEY1;鍵釋放,轉(zhuǎn)恢復(fù)鍵值</p><p> LCALL DISP;調(diào)顯示子程序延時(shí)</p><p> LJMP KEYSF;等待釋放</p><p> KEY1:MOV 20H,B;鍵值送20H保存</p><p> EXIT1
71、:RET</p><p> ;P1口數(shù)據(jù)處理子程序</p><p> KEYCHULI:PUSH PSW;保護(hù)現(xiàn)場</p><p> CLRRS1;改變當(dāng)前寄存器組為組1</p><p><b> SETBRS0</b></p><p> MOVP1,
72、#0FFH;先向P1口寫1</p><p> MOV A,P1;讀P1口數(shù)據(jù)</p><p> CPLA;P1口數(shù)據(jù)取反</p><p> MOV20H,A ;保存取反后的鍵值</p><p> CLRRS1;恢復(fù)當(dāng)前寄存器組為組0</p><p> CLR
73、 RS0</p><p> POPPSW ;恢復(fù)現(xiàn)場</p><p> RET ;子程序返回</p><p> ;數(shù)碼管顯示子程序DISP</p><p> 入口:7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7---LED0)</p><p>
74、 DISP:PUSHDPH</p><p><b> PUSHDPL</b></p><p><b> PUSHACC</b></p><p><b> PUSHPSW</b></p><p><b> CLRRS1</b><
75、/p><p> SETBRS0;改變當(dāng)前通用寄存器組為1</p><p> MOVR1,#78H;顯示緩沖存取單元首地址</p><p> MOVR2,#0FEH;從右至左顯示(11111110B)</p><p> MOVR5,#8H;循環(huán)次數(shù),即為數(shù)碼管的個數(shù)</p><
76、p> DISP1:MOVA,@R1;</p><p> MOVDPTR,#TAB;</p><p> MOVC A,@A+DPTR;</p><p> MOVP0,A;送段控</p><p> MOVP2,R2;送位控</p><p> LCALL
77、DL;延時(shí)1ms</p><p> MOV A,R2;送位控碼</p><p> RLA;獲得新的位控碼</p><p> MOVR2,A;保存新的位控碼</p><p> INCR1;獲得新的現(xiàn)實(shí)緩沖單元地址</p><p> DJNZR5
78、,DISP1;循環(huán)沒有結(jié)束則繼續(xù)</p><p> DISP2:POPPSW ;恢復(fù)當(dāng)前通用寄存器組序號</p><p> POPACC</p><p> POPDPL</p><p> POPDPH ;恢復(fù)現(xiàn)場</p><p> RET
79、</p><p> ;**********************************************************;</p><p> ;延時(shí)1ms子程序(晶振頻率12MHz)DL</p><p> DL:MOVR7, #02H</p><p> DL1:MOVR6, #
80、0FFH</p><p> DL2:DJNZR6, DL2</p><p> DJNZR7, DL1</p><p><b> RET</b></p><p><b> END</b></p><p><b> 第四章 系統(tǒng)調(diào)試&l
81、t;/b></p><p><b> 4.1軟件調(diào)試步驟</b></p><p> 1、打開軟件后,在Project菜單中選擇New Project命令,打開一個新項(xiàng)目。保存此項(xiàng)目,輸入工程文件名后,并保存工程文件的目錄。</p><p> 2、為項(xiàng)目文件選擇一個目標(biāo)器件,即選擇8051的類型。在Data base 列表框中選擇“A
82、TML 89C52”,確定。</p><p> 3、上述設(shè)置好后,創(chuàng)建源程序文件并輸入程序代碼。輸入好代碼后點(diǎn)擊“文件/保存”。</p><p> 4、把源文件添加到項(xiàng)目中,用鼠標(biāo)指在目標(biāo)工作區(qū)的目標(biāo)1,點(diǎn)擊右鍵在彈出的菜單中選擇添加文件到源代碼組,在彈出的添加文件框中,選擇需要添加到項(xiàng)目中的文件。</p><p> 5、開始編譯,對項(xiàng)目文件進(jìn)行編譯。若沒有錯
83、誤后進(jìn)行硬件調(diào)試</p><p><b> 4.2硬件調(diào)試</b></p><p> 按照此次課程設(shè)計(jì)的要求調(diào)試過程如下:按鍵KEY0,KEY1,KEY2,KEY3分別對應(yīng)LED流水燈,,數(shù)碼管,音樂三個功能。</p><p> 1、LED流水燈測試</p><p> 通過按按鍵KEY0,觀察到LED流水燈顯示,
84、并循環(huán)2次;與相應(yīng)的程序代碼相比較,結(jié)果正確。</p><p><b> 2、數(shù)碼管測試</b></p><p> 通過按按鍵KEY2,觀察到數(shù)碼管從“1000” 開始計(jì)時(shí),依次顯示“1001” ,“1002” ,“1003” …… ;與相應(yīng)的程序代碼相比較,結(jié)果正確。</p><p><b> 3、溫度傳感器測試</b
85、></p><p> 通過連接短路帽2,觀察到數(shù)碼管顯示溫度,比較幾次;與相應(yīng)的程序代碼相比較,聯(lián)系18B20附近溫度.結(jié)果。</p><p> 第五章 設(shè)計(jì)體會和結(jié)論</p><p> 在硬件電路制作階段,我到圖書館、網(wǎng)上查閱各種資料,在電腦上使用 PROTEL99SE 進(jìn)行以及相關(guān)的繪圖軟件,使自己在理論分析設(shè)計(jì)和動手操作能 力等各方面得到了極大提高
86、。我通過對設(shè)計(jì)任務(wù)書的具體要求分析思考,再加 上以前在學(xué)校進(jìn)行的各種相關(guān)實(shí)踐和實(shí)習(xí)積累的經(jīng)驗(yàn),首次完成了硬件電路板 的制作,雖然在初次制板時(shí),其中在鉆孔時(shí),看著別人鉆好簡單,自己一試, 也不是一件容易的事,不僅看得你眼花繚亂,還一不小心,鉆頭就斷了,鉆孔 那天我組就弄斷了好幾個。后來隨著動作越來越熟練,速度也越來越快。盡管 板面沒買得好看,但那也是我們的成果,還有因不細(xì)心、不熟習(xí)制作流程,還 有打印的時(shí)候由于油墨的質(zhì)量不行且不夠濃,導(dǎo)致
87、第一塊電路板有很多的斷線 而報(bào)廢,但經(jīng)過反復(fù)檢驗(yàn)和飛線,總算成功,但是還有很多地方 要改進(jìn)才行,以后做板子的時(shí)候要特別注意。硬件電路板制好后,在利用 ASM51 軟件編寫程序調(diào)試時(shí),遇到了不少困難,這使我學(xué)會了耐心分析問題,并進(jìn)一 步鍛煉自己去攻破難題的能力。</p><p> 這次課程設(shè)計(jì)整體來說是成功的,但我也發(fā)現(xiàn)了自己許多錯漏和不足之 處。譬如,最簡單的程序沒寫好就想著寫更復(fù)雜的程序,做事還是缺乏耐性和
88、細(xì)心,當(dāng)有時(shí)遇到問題時(shí),總覺得無從下手,對于課本上的知識不能很好的組 織起來。以后會更認(rèn)真的學(xué)習(xí)相關(guān)內(nèi)容。</p><p><b> 參考文獻(xiàn)</b></p><p> 【1】 陳石勝,單片機(jī) 技術(shù)應(yīng)用 . 廣東: 廣東省技師學(xué)院電氣自動化專業(yè)教改教材,2007</p><p> 【2】 李廣第,單片機(jī)基礎(chǔ) . 北京: 北京航空航天大
89、學(xué)出版社, 2001</p><p> 【3】求是科技編著,單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航.北京:人民郵電出版社,2004</p><p> 【4】孫涵芳,MCS-51系列單片機(jī)原理及應(yīng)用 .北京:北京航空航天大學(xué)出版社.1996-4</p><p> 【5】于海生,微型計(jì)算機(jī)控制技術(shù) .北京:清華大學(xué)出版社.1999-6</p><p>
90、;<b> 致謝</b></p><p> 最后,感謝老師的悉心指導(dǎo),感謝同學(xué)在我遇到麻煩時(shí)幫忙排解困難,經(jīng)過近兩周時(shí)間,終于完成了這次課程設(shè)計(jì)。從中鍛煉了自己,再次知道在困難面前只要你堅(jiān)持就能排除任何難題。今后,我將更努力、更認(rèn)真的學(xué)習(xí)單片機(jī)技術(shù),力求自己在這門學(xué)科上取得更大的進(jìn)步。謝謝大家!</p><p><b> 附錄一:電路原理圖</b
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《單片機(jī)技術(shù)》電子鐘課程設(shè)計(jì)---數(shù)字電子鐘
- 單片機(jī)電子鐘課程設(shè)計(jì)
- 單片機(jī)電子鐘課程設(shè)計(jì)報(bào)告
- 電子鐘課程設(shè)計(jì)--基于單片機(jī)的電子鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字鐘電子鐘
- 單片機(jī)課程設(shè)計(jì)——數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)電子鐘課程設(shè)計(jì)報(bào)告
- 電子鐘課程設(shè)計(jì)----數(shù)字電子鐘的設(shè)計(jì)
- 單片機(jī)數(shù)字電子鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電子鐘設(shè)計(jì)
- 電子鐘單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--電子鐘
- 單片機(jī)課程設(shè)計(jì)(電子鐘)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電子鐘的設(shè)計(jì)
- 電子時(shí)鐘數(shù)字電子鐘單片機(jī)課程設(shè)計(jì)
- 數(shù)字電子鐘課程設(shè)計(jì)
評論
0/150
提交評論