電子時鐘單片機(jī)課程設(shè)計_第1頁
已閱讀1頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  近年來隨著計算機(jī)在社會領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,由于它具有功能強(qiáng),功耗低,體積小,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛應(yīng)用于各個領(lǐng)域,單片機(jī)往往是作為一個核心部件來使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,以作完善。<

2、/p><p>  數(shù)字時鐘實際上是一個對標(biāo)準(zhǔn)頻率進(jìn)行計數(shù)的計數(shù)電路。它的計時周期是24小時。采用LED數(shù)碼顯示管顯示時、分、秒,以24小時計時方式,根據(jù)數(shù)碼管動態(tài)顯示原理進(jìn)行顯示?;?1單片的電子時鐘,外圍電路簡單易于實現(xiàn),性價比高,是實現(xiàn)電子時鐘的不錯選擇。</p><p>  關(guān)鍵詞: 單片機(jī), 傳感器, 數(shù)碼管,中斷</p><p><b>  Abs

3、tract</b></p><p>  In recent years along with computer penetration in the social sphere and the large scale integrated circuit development, SCM applications are constantly deepening, because it has str

4、ong function, low power consumption, small size, cheap, reliable, use convenient wait for a characteristic, thus it is especially suitable for and control of relevant system, more and more widely used in various field, S

5、CM is often used as a core component, in according to the specific hardware structure, as well as </p><p>  Digital clock is actually a pair of standard frequency count of the counting circuit. Its time peri

6、od is 24 hours。Using the LED digital tube display hours,minutes and seconds,in 24 hours time,according to the principle of dynamic display of digital tube display. Based on 51single-chip electronic clock, the peripheral

7、circuit is simple, cost-effective, is a good choice to realize the electronic clock.</p><p>  Keywords:Single chip microcomputer, Sensor, Digital tube ,Interrupt</p><p><b>  l</b><

8、;/p><p><b>  第1章 緒論</b></p><p>  1.1課題研究的背景 </p><p>  20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化成程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。時間對人們來說總是那么寶

9、貴,工作的忙碌性和繁雜性容易使人們忘記當(dāng)前時間。</p><p>  單片機(jī)模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機(jī)械式時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用壽命,因此得到了廣泛的使用。</p><p>  數(shù)字鐘是采用數(shù)字電路實現(xiàn)對時、分、秒數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站,碼頭,辦公室等公共場所,成為人們?nèi)粘I?/p>

10、中不可少的必需品。 </p><p>  基于51單片的電子時鐘,外圍電路簡單易于實現(xiàn),性價比高,是實現(xiàn)電子時鐘的不錯選擇。研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實的意義。 </p><p>  1.2 課題的主要內(nèi)容課題的主要內(nèi)容課題的主要內(nèi)容 本次課程設(shè)計基于單片機(jī)內(nèi)部資源設(shè)計出的一款性價比高的電子時鐘系統(tǒng),主要涉及到以下幾個研究方向: (1) 熟悉MCS-51單片機(jī)內(nèi)部定

11、時器的工作方式; (2) 掌握單片機(jī)內(nèi)部中斷系統(tǒng)的工作模式; (3) 了解MCS-51單片機(jī)外部電路的一般設(shè)計方法; (4) 熟悉匯編語言的編寫規(guī)則; 河南機(jī)電高等??茖W(xué)校畢業(yè)論文 (5) 掌握單片機(jī)內(nèi)部ram地址分配方法; (6) 掌握特殊功能寄存器的用法; (7) 熟悉Proteus ISIS軟件的使用; (8) 掌握匯編語言的編譯方法。 </p><p>  第2章電子時鐘實現(xiàn)原理</p

12、><p>  2.1設(shè)計方案:

13、 </p><p>  1、通過單片機(jī)內(nèi)部的計數(shù)/定時器,采用軟件編程來實現(xiàn)時鐘計數(shù),一般稱為軟時鐘,這種方法的硬件線路簡單,系統(tǒng)的功能一般與軟件設(shè)計相關(guān),通常用在對時間精度要求不高的場合。</p><p>  2、采用時鐘芯片,它的功能強(qiáng)大,功

14、能部件集成在芯片內(nèi)部,具有自動產(chǎn)生時鐘等相關(guān)功能,硬件成本相對較高;軟件編程簡單,通常用在對時鐘精度要求較高的場合。</p><p><b>  2.2設(shè)計內(nèi)容:</b></p><p>  這里采用應(yīng)用廣泛的AT89C51作為時鐘控制芯片,利用單片機(jī)內(nèi)部的定時/計數(shù)器T0 實現(xiàn)軟時鐘的目的。首先將T0設(shè)定工作于定時方式,對機(jī)器周期計數(shù)形成基準(zhǔn)時間(50ms),然后用

15、另一個定時/計數(shù)器T1對基準(zhǔn)時間計數(shù)形成秒,秒計60次形成分,分計60形成小時,小時計到12。最后通過數(shù)碼管把它們的內(nèi)容在相應(yīng)的位置顯示出來,達(dá)到時、分、秒計時的功能。</p><p>  此外還要實現(xiàn)對時間的調(diào)整功能,89C51的P1.0、P1.1、P1.2外接三個獨立按鍵,當(dāng)按下P1.0按鍵時,系統(tǒng)進(jìn)入調(diào)時間的狀態(tài)或啟動時間顯示的功能;當(dāng)按下P1.1按鍵時,對顯示的數(shù)碼管進(jìn)行加一的功能;當(dāng)按下P1.2按鍵時,

16、對顯示的數(shù)碼管進(jìn)行減一的功能,達(dá)到調(diào)整時間的目的。</p><p>  2.3 系統(tǒng)框圖設(shè)計 根據(jù)電子時鐘能夠?qū)崿F(xiàn)的功能,采用單片機(jī)內(nèi)部資源,設(shè)計出了系統(tǒng)原理框圖,如圖2-1所示。</p><p><b>  圖2-1</b></p><p>  在單片機(jī)內(nèi)部構(gòu)建三個模塊:控制模塊、譯碼模塊、定時模塊,用以實現(xiàn)自動計數(shù)、譯碼顯示功能。單片機(jī)

17、外部構(gòu)建四個電路:時鐘電路、復(fù)位電路、外部按鈕電路、顯示電路,用以實現(xiàn)對單片機(jī)內(nèi)部計數(shù)控制以及譯碼輸出的正確顯示。該電子時鐘是將秒、分、時顯示在人的視覺器官面前的一種計時裝置。故將計時周期設(shè)置為24小時,當(dāng)顯示滿刻度是23時59分59秒時,數(shù)碼管顯示為0。為了確保時間正常校對,在系統(tǒng)中設(shè)有校對按鈕,用以實現(xiàn)對數(shù)碼管顯示的正確調(diào)整。 </p><p>  2.4 系統(tǒng)電路原理設(shè)計 在本次的設(shè)計中對12MHZ的系

18、統(tǒng)時鐘進(jìn)行定時計數(shù),初值設(shè)為B03CH。形成定時時間為50ms。用片內(nèi)RAM的7BH單元對50ms計數(shù),計20次1秒鐘到,然后對秒計數(shù)器78H單元加1,秒計數(shù)器加到60后就向分進(jìn)位,則分計數(shù)器79H單元加1而秒計數(shù)器78H單元清零;分計數(shù)器加到60后又向時進(jìn)位,則時計數(shù)器7AH單元加1而分計數(shù)器79H單元清零;時計數(shù)器加到24則時計數(shù)器清零。然后把秒、分、時計數(shù)器分成十位和個位放到8個數(shù)碼管的顯示緩沖區(qū),通過數(shù)碼管顯示出來。顯示格式為小

19、時十位、小時個位---分十位、分個位---秒十位、秒個位。</p><p>  圖2-2 根據(jù)電路原理框圖設(shè)計出電路原理圖如圖2-2所示,由12MHz的晶振給單片機(jī)提供固定的時鐘頻率,通過k1、k2、k0可以對顯示電路時間進(jìn)行位設(shè)定。 在圖2-2中,復(fù)位電路、時鐘電路、控制電路加上單片機(jī)組成單片機(jī)最小應(yīng)用系統(tǒng),能夠?qū)崿F(xiàn)很多復(fù)雜的功能。系統(tǒng)由AT89C51、LED 數(shù)碼管、按鍵、電容、電阻等部分構(gòu)

20、成,能實現(xiàn)時間的調(diào)整、輸出、調(diào)時間等功能。系統(tǒng)中按鈕k能對時間進(jìn)行調(diào)整功能的按鈕,采用單鍵控制調(diào)時功能,運用軟件去判斷按鍵的時間從而選擇完成相對應(yīng)的功能。當(dāng)按下k0第一次時,對hour來調(diào)節(jié)小時的時間;當(dāng)?shù)诙伟聪耴0時,對minute來調(diào)節(jié)分的時間;第三次按下是對scoend來調(diào)節(jié)秒時間。在設(shè)置秒位時間時,k1按下,秒就加1;如果k2按下,秒就減1。時、分調(diào)節(jié)與秒設(shè)定相同。 系統(tǒng)中的按鍵采用中斷技術(shù)來檢測,它在單片系統(tǒng)中

21、有著十分重要的作用,它不僅可以提高單片機(jī)CPU的效率,也可以對突發(fā)事件處理。所謂中斷就是當(dāng)CPU正在執(zhí)行程序A時,發(fā)生了另一個急需處理的事件B,這是CPU暫停當(dāng)前執(zhí)行的程序A,立即轉(zhuǎn)去執(zhí)行處理事件B的程序,處理完事件B后,再返</p><p>  第3章 系統(tǒng)各單元電路分析3.1 AT89C51 AT89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS的8位微處理器,俗稱單片機(jī)。AT89

22、C51是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的 </p><p><b>  圖

23、3-1</b></p><p>  由于電路原理中只用到單片機(jī)的p0、p1、p2口,所示下面對這三個端口進(jìn)行詳細(xì)介紹。 1)、P0口:P00~P07統(tǒng)稱為P0口,在不接片外存儲器與不擴(kuò)展I/O接口時,作為準(zhǔn)雙向輸入/輸出接口。在接有片外存儲器或擴(kuò)展I/O接口時,P0口分時復(fù)用為低8位地址總線和雙向數(shù)據(jù)總線。P0口是一個三態(tài)雙向口,由一個輸出鎖存器、兩個三態(tài)緩沖器、輸出驅(qū)動電路和輸出控制電路組成。在輸

24、入數(shù)據(jù)時,應(yīng)人為地先向P0口寫“1”,定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。 2)、P1口:P10~P17統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口使用。P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4LSTTL門電流。P1口管腳寫入“1”后,被內(nèi)部上拉為高,可用作輸

25、入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。 3)、P2口:P20 ~P27口統(tǒng)稱為P2口,一般可以作為準(zhǔn)雙向I/O接口使用,在接有片外存儲器或擴(kuò)展I/O接口且尋址范</p><p>  3.2 復(fù)位電路 計算機(jī)在啟動運行時都需要復(fù)位,復(fù)位時使中央處理器CPU和內(nèi)部其他部件處于一個確定的初始狀態(tài),從這個狀態(tài)開始工作。 AT89C51單片機(jī)有一個復(fù)位引腳RST,高電平有效。在時鐘電

26、路工作以后,當(dāng)外部電路使得RST端出現(xiàn)兩個機(jī)器周期(24個時鐘周期)以上的高電平,系統(tǒng)內(nèi)部復(fù)位。復(fù)位有兩種方式:上電復(fù)位和按鈕復(fù)位。在此次的設(shè)計中,我采用按鍵復(fù)位,</p><p><b>  圖3-2</b></p><p>  只要RST保持高電平,AT89C51單片機(jī)將循環(huán)復(fù)位。復(fù)位期間,ALE、PSEN輸出高電平。RST從高電平變?yōu)榈碗娖胶?,PC指針變?yōu)?0

27、00H,使單片機(jī)從程序存儲器地址為0000H的單元開始執(zhí)行程序。復(fù)位后,內(nèi)容各寄存器的初始內(nèi)容如表4-1所示,當(dāng)單片機(jī)執(zhí)行程序出錯或進(jìn)入死循環(huán)時,可按復(fù)位按鈕重新啟動。 </p><p>  3.3 時鐘電路 在本次設(shè)計中,時鐘電路設(shè)計就是采用內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。AT89C51單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2是高增益反相放大器的輸入端和輸出端。

28、這個高增益反相放大器將與作為反饋元件的片外晶體諧振器一起構(gòu)成一個自激振蕩器。外接晶體振蕩器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中,對外接電容的值雖然沒有嚴(yán)格的要求,但是電容的大小會影響起振的快速和溫度的穩(wěn)定性、振蕩器的穩(wěn)定性、振蕩器頻率的高低。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應(yīng)盡可能的選擇陶瓷電容,電容值約為22uF。在焊接刷電路板時,我們應(yīng)注意晶體振蕩器和電容盡可能安裝的與單片機(jī)芯片靠近些,用以減

29、少寄生電容,為了更好地保證振蕩器可靠地工作和穩(wěn)定行,其電路圖如圖3-3所示。</p><p><b>  圖3-3</b></p><p>  3.4 按鍵電路 獨立式鍵盤是各按鍵相互獨立,每個按鍵各接一根I/O接口線,每根I/O接口線的按鍵是不會影響其他的I/O接口線。在本次設(shè)計中,按鍵為K0、K1、K2,他們分別與單片機(jī)P10、P11、P12接口線相接。通

30、過按鍵控制顯示器的顯示。其電路圖</p><p><b>  圖3-4</b></p><p>  3.5 LED顯示電路 在本次的設(shè)計中,采用的8位的數(shù)碼管顯示器。數(shù)碼管如果按照段數(shù)分可為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元,也就是多了一個小數(shù)點的顯示;如果按能夠顯示多少個“8”分類的話,也可以可分為1位、2位、4位等數(shù)碼管。

31、如果按照發(fā)光二極管單元的連接方式又可以分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽極的數(shù)碼管是將所有發(fā)光二極管的陽極接到一起后就形成公共陽極(COM)的數(shù)碼管,共陽極數(shù)碼管在應(yīng)用時要將公共極(COM)接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮,當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰極數(shù)碼管是將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰極數(shù)碼管在應(yīng)用時應(yīng)將公共極(COM)接到地線GND上,當(dāng)某

32、一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮,當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。 </p><p><b>  圖3-5</b></p><p>  第四章 系統(tǒng)軟件程序設(shè)計</p><p><b>  4.1主程序</b></p><p>  先對顯示單元和定時器/計數(shù)器

33、初始化,然后重復(fù)調(diào)用數(shù)碼管顯示模塊和按鍵處理模塊,當(dāng)有按鍵按下時,則轉(zhuǎn)入相應(yīng)的功能程序。</p><p>  4.2數(shù)碼管顯示模塊</p><p>  本設(shè)計有8個數(shù)碼管,從右到左為妙、橫線、分、橫線、時。在本系統(tǒng)中數(shù)碼管顯示采用軟件譯碼動態(tài)顯示。在存儲器中首先建立一張顯示信息的字段碼表,顯示時,先從顯示緩沖區(qū)中取出顯示的信息,然后通過查表程序在字段表中查出所顯示的信息的斷碼,從P0端口輸

34、出,同時在P2端口進(jìn)行數(shù)碼管顯示。</p><p>  4.3定時器/計數(shù)器T0中斷服務(wù)程序</p><p>  T0用于計時,選中方式一,重復(fù)定時,定時時間設(shè)為50ms,定時時間到則中斷,在中斷服務(wù)程序中用一個計數(shù)器對50ms計數(shù),計20次則對秒單元加一。秒單元加到60則對分單元加一,同時秒單元清0;分單元加到60則對時單元加一,同時分單元清0;時單元加到24則對時單元清0,標(biāo)志一天時間

35、計滿。在對各單元計數(shù)的同時,把他們的值放到存儲器單元的指定位置。流程圖如下:</p><p><b>  4.4按鍵處理模塊</b></p><p>  按鍵設(shè)置為:如果沒有按鍵,則時鐘正常走時。當(dāng)按下K0鍵時,進(jìn)入調(diào)分狀態(tài),時鐘停止走動;按K1和K2按鍵可以進(jìn)行加一和減一操作;繼續(xù)按K0鍵可以分別進(jìn)行分和小時的調(diào)整;最后按K0鍵啟動計時。</p>&l

36、t;p>  第5章 仿真實現(xiàn)</p><p>  仿真實現(xiàn) 在本課題中,采用AT89C51單片機(jī)作為主控制器,12MHZ晶振作為振蕩源,P0口作為輸出字段碼,P2口作為輸出位選碼,采用共陽的LED數(shù)碼管,P1.0為調(diào)時位選擇按鍵,P1.1為加1鍵,P1.2為減1鍵。片內(nèi)RAM的70H到77H單元為LED數(shù)碼管的顯示緩沖區(qū)78H,79H,7AH分別為秒、分、小時計數(shù)單元。7BH為50ms計數(shù)器,7CH為

37、調(diào)時按鍵計數(shù)器。具體的程序見附錄。</p><p>  第6章 課程設(shè)計總結(jié)</p><p>  做了一周的數(shù)字鐘課程設(shè)計,讓我感受頗深,在本次電子技術(shù)課程設(shè)計過程中,得到了老師和同學(xué)的幫助,讓我學(xué)到了很多東西。</p><p>  通過這次課程設(shè)計,在很高的程度上彌補(bǔ)了我們的理論的不足,通過設(shè)計進(jìn)一步鞏固了我們的理論知識,讓我們學(xué)的更扎實??傊?,這次課程設(shè)計帶給我

38、很大的收獲,再一次感謝學(xué)校給了我們一個展現(xiàn)自己才能的機(jī)會,這對我們以后的工作和學(xué)習(xí)都有很好的作用。</p><p><b>  參考文獻(xiàn):</b></p><p>  [1] 林立.單片機(jī)原理與應(yīng)用[M].北京:電子工業(yè)出版社,2009 [2] 李守中.51單片機(jī)開發(fā)入門與經(jīng)典實例[M].北京:人民郵電出版社,2007</p><p>  [

39、3]丁元杰主編.單片微型計算機(jī).北京:機(jī)械工業(yè)出版社.2003[4] 胡漢才.單片機(jī)原理與接口技術(shù)[M].北京:清華大學(xué)出版社,1996 </p><p>  [5]李廣第主編.單片機(jī)基礎(chǔ).北京:北京航天工業(yè)出版社.2002[6] 楊加國.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(第二版)[M].北京:清華大學(xué)出版社,2009 </p><p>  附錄: 匯編語言程序</p>

40、<p>  ORG 0000H</p><p>  LJMP START</p><p>  ORG 000BH</p><p>  LJMP INIT0</p><p>  START:MOV R0,#70H;主程序開始</p><p>  MOV R7,#0CH</p>

41、<p>  INIT: MOV @R0,#00H</p><p><b>  INC R0</b></p><p>  DJN Z R7,INIT</p><p>  MOV 72H,#10;對連字符進(jìn)行裝值</p><p>  MOV 75H,#10</p><p>

42、;  MOV TMOD,#01H;選擇定時器/計數(shù)器T0的方式1</p><p>  MOV TL0,#0B0H;對低位賦初值</p><p>  MOV TH0,#03CH;高位賦初值</p><p><b>  SETB EA</b></p><p><b>  SETB ET0<

43、/b></p><p><b>  SETB TR0</b></p><p>  START1:LCALL SCAN</p><p>  LCALL KEYSCAN</p><p>  SJMP START1</p><p>  DL1MS:MOV R6,#14H;延時1子

44、程序</p><p>  DL1:MOV R7,#19H</p><p>  DL2:DJNZ R7,DL2</p><p>  DJNZ R6,DL1</p><p><b>  RET</b></p><p>  DL20MS:ACALL SCAN;延時20ms子程

45、序</p><p>  ACALL SCAN</p><p>  ACALL SCAN</p><p>  RET ;數(shù)碼管顯示程序開始</p><p>  SCAN:MOV A,78H</p><p>  MOV B,#0AH</p><p>  DIV AB

46、 ;時間秒的十位送給A,時間秒的個位送B</p><p>  MOV 71H,A;時間秒要顯示的十位</p><p>  MOV 70H,B;時間秒要顯示的個位</p><p>  MOV A,79H</p><p>  MOV B,#0AH</p><p>  DIV AB;時間分的十位送給A

47、,時間分的個位送B</p><p>  MOV 74H,A;時間分要顯示的十位送地址</p><p>  MOV 73H,B;時間分要顯示的個位送地址</p><p>  MOV A,7AH</p><p>  MOV B,#0AH</p><p>  DIV AB;時間時的十位送給A,時間時的

48、個位送B</p><p>  MOV 77H,A;時間時顯示的十位送地址</p><p>  MOV 76H,B;時間時要顯示的個位送地址</p><p>  MOV R1,#70H</p><p>  MOV R5,#0FEH</p><p>  MOV R3,#08H</p><

49、;p>  SCAN1:MOV A,R5;數(shù)碼管的顯示程序</p><p><b>  MOV P2,A</b></p><p>  MOV A,@R1</p><p>  MOV DPTR,#TAB</p><p>  MOVC A,@A+DPTR;對字段表取值顯示</p><

50、;p><b>  MOV P0,A</b></p><p><b>  MOV A,R5</b></p><p>  LCALL DL1MS</p><p><b>  INC R1</b></p><p><b>  MOV A,R5</b>

51、;</p><p><b>  RL A</b></p><p><b>  MOV R5,A</b></p><p>  DJNZ R3,SCAN1</p><p>  MOV P2,#0FFH</p><p>  MOV P0,#0FFH</p>

52、<p>  RET ;"0~9"和"-"的字段表</p><p>  TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH</p><p>  ;定時/計數(shù)器T0中斷程序</p><p>  INIT0:PUSH ACC</p>

53、;<p><b>  PUSH PSW</b></p><p><b>  CLR ET0</b></p><p><b>  CLR TR0</b></p><p>  MOV TL0,#0B0H</p><p>  MOV TH0,#03CH<

54、/p><p><b>  SETB TR0</b></p><p><b>  INC 7BH</b></p><p>  MOV A,7BH</p><p>  CJNE A,#14H,OUTT0</p><p>  ;50ms是否到20次,沒有到就繼續(xù)執(zhí)行50ms的

55、延時</p><p>  MOV 7BH,#00</p><p><b>  INC 78H</b></p><p>  MOV A,78H</p><p>  CJNE A,#3CH,OUTT0</p><p>  ;一秒的延時是否計到60次,沒有就繼續(xù)執(zhí)行 </p>&l

56、t;p>  MOV 78H,#00</p><p><b>  INC 79H</b></p><p><b>  MOV A,79H</b></p><p>  CJNE A,#3CH,OUTT0</p><p>  MOV 79H,#00</p><p>&

57、lt;b>  INC 7AH</b></p><p>  MOV A,7AH</p><p>  CJNE A,#18H,OUTT0;60分鐘的延時是否計到24次,沒有就 </p><p><b>  繼續(xù)執(zhí)行程序</b></p><p>  MOV 7AH,#00</p><

58、;p>  OUTT0:SETB ET0;啟動定時器T0</p><p><b>  POP PSW</b></p><p><b>  POP ACC</b></p><p><b>  RETI</b></p><p><b>  ;按鍵處理

59、程序</b></p><p>  KEYSCAN:CLR EA</p><p>  JNB P1.0,KEYSCAN0;P1.0有按鍵按下則跳轉(zhuǎn)到子程序</p><p>  JNB P1.1,KEYSCAN1;P1.1有按鍵按下則跳轉(zhuǎn)到子程序</p><p>  JNB P1.2,KEYSCAN2;P1.2有按鍵按下

60、則跳轉(zhuǎn)到子程序</p><p>  KEYOUT:SETB EA</p><p><b>  RET</b></p><p>  KEYSCAN0:LCALL DL20MS;20ms的延時消抖</p><p>  JB P1.0,KEYOUT</p><p>  WAIT0:JNB

61、 P1.0,WAIT0;判斷按鍵是否松手, 松手就往下執(zhí)行程序</p><p><b>  INC 7CH</b></p><p>  MOV A,7CH</p><p><b>  CLR ET0</b></p><p><b>  CLR TR0</b></

62、p><p>  CJNE A,#03H,KEYOUT;按下第一次和第二次對時、分選定</p><p>  MOV 7CH,#00;按下第三次時就啟動計時</p><p><b>  SETB ET0</b></p><p><b>  SETB TR0</b></p><

63、;p>  SJMP KEYOUT</p><p>  KEYSCAN1:LCALL DL20MS;按鍵加一的程序</p><p>  JB P1.1,KEYOUT</p><p>  WAIT1:JNB P1.1,WAIT1</p><p>  MOV A,7CH</p><p>  CJNE

64、A,#02H,KSCAN11;如果功能鍵按下則對時加一調(diào)整</p><p><b>  INC 79H</b></p><p>  CJNE A,#3CH,KEYOUT;如果加到60則清零</p><p>  MOV 79H,#00</p><p>  SJMP KEYOUT</p><

65、p>  KSCAN11:INC 7AH;如果功能鍵是按下第二次則對分進(jìn)行加一調(diào)整</p><p>  MOV A,7AH</p><p>  CJNE A,#18H,KEYOUT</p><p>  MOV 7AH,#00</p><p>  SJMP KEYOUT</p><p>  KEYSCAN

66、2:LCALL DL20MS;延時消抖程序</p><p>  JB P1.2,KEYOUT</p><p>  WAIT2:JNB P1.2,WAIT2;判斷是否放開按鍵</p><p>  MOV A,7CH</p><p>  CJNE A,#02H,KSCAN21;如果功能鍵是按下第一次對時進(jìn)行減一</p&g

67、t;<p><b>  DEC 79H</b></p><p>  MOV A,79H</p><p>  CJNE A,#0FFH,KEYOUT</p><p>  MOV 79H,#3BH</p><p>  SJMP KEYOUT</p><p>  KSCAN21:

68、DEC 7AH;如果功能鍵是按下第二次則對分進(jìn)行減一</p><p>  CJNE A,#0FFH,KEYOUT</p><p>  MOV 7AH,#17H</p><p>  SJMP KEYOUT</p><p><b>  END</b></p><p>  ORG 0000

69、H</p><p>  LJMP START</p><p>  ORG 000BH</p><p>  LJMP INIT0</p><p>  START:MOV R0,#70H;主程序開始</p><p>  MOV R7,#0CH</p><p>  INIT: M

70、OV @R0,#00H</p><p><b>  INC R0</b></p><p>  DJN Z R7,INIT</p><p>  MOV 72H,#10;對連字符進(jìn)行裝值</p><p>  MOV 75H,#10</p><p>  MOV TMOD,#01H;選擇

71、定時器/計數(shù)器T0的方式1</p><p>  MOV TL0,#0B0H;對低位賦初值</p><p>  MOV TH0,#03CH;高位賦初值</p><p><b>  SETB EA</b></p><p><b>  SETB ET0</b></p><

72、;p><b>  SETB TR0</b></p><p>  START1:LCALL SCAN</p><p>  LCALL KEYSCAN</p><p>  SJMP START1</p><p>  DL1MS:MOV R6,#14H;延時1子程序</p><p&g

73、t;  DL1:MOV R7,#19H</p><p>  DL2:DJNZ R7,DL2</p><p>  DJNZ R6,DL1</p><p><b>  RET</b></p><p>  DL20MS:ACALL SCAN;延時20ms子程序</p><p>

74、;  ACALL SCAN</p><p>  ACALL SCAN</p><p>  RET ;數(shù)碼管顯示程序開始</p><p>  SCAN:MOV A,78H</p><p>  MOV B,#0AH</p><p>  DIV AB ;時間秒的十位送給A,時間秒的個位送B&

75、lt;/p><p>  MOV 71H,A;時間秒要顯示的十位</p><p>  MOV 70H,B;時間秒要顯示的個位</p><p>  MOV A,79H</p><p>  MOV B,#0AH</p><p>  DIV AB;時間分的十位送給A,時間分的個位送B</p>

76、<p>  MOV 74H,A;時間分要顯示的十位送地址</p><p>  MOV 73H,B;時間分要顯示的個位送地址</p><p>  MOV A,7AH</p><p>  MOV B,#0AH</p><p>  DIV AB;時間時的十位送給A,時間時的個位送B</p><p

77、>  MOV 77H,A;時間時顯示的十位送地址</p><p>  MOV 76H,B;時間時要顯示的個位送地址</p><p>  MOV R1,#70H</p><p>  MOV R5,#0FEH</p><p>  MOV R3,#08H</p><p>  SCAN1:MOV A

78、,R5;數(shù)碼管的顯示程序</p><p><b>  MOV P2,A</b></p><p>  MOV A,@R1</p><p>  MOV DPTR,#TAB</p><p>  MOVC A,@A+DPTR;對字段表取值顯示</p><p><b>  MOV

79、 P0,A</b></p><p><b>  MOV A,R5</b></p><p>  LCALL DL1MS</p><p><b>  INC R1</b></p><p><b>  MOV A,R5</b></p><p>

80、;<b>  RL A</b></p><p><b>  MOV R5,A</b></p><p>  DJNZ R3,SCAN1</p><p>  MOV P2,#0FFH</p><p>  MOV P0,#0FFH</p><p>  RET ;

81、"0~9"和"-"的字段表</p><p>  TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH</p><p>  ;定時/計數(shù)器T0中斷程序</p><p>  INIT0:PUSH ACC</p><p><b>

82、  PUSH PSW</b></p><p><b>  CLR ET0</b></p><p><b>  CLR TR0</b></p><p>  MOV TL0,#0B0H</p><p>  MOV TH0,#03CH</p><p><

83、b>  SETB TR0</b></p><p><b>  INC 7BH</b></p><p>  MOV A,7BH</p><p>  CJNE A,#14H,OUTT0;50ms是否到20次,沒有到就繼續(xù)執(zhí)行50ms的延時</p><p>  MOV 7BH,#00</p&g

84、t;<p><b>  INC 78H</b></p><p>  MOV A,78H</p><p>  CJNE A,#3CH,OUTT0;一秒的延時是否計到60次,沒有就繼續(xù)執(zhí)行 </p><p>  MOV 78H,#00</p><p><b>  INC 79H</b

85、></p><p><b>  MOV A,79H</b></p><p>  CJNE A,#3CH,OUTT0</p><p>  MOV 79H,#00</p><p><b>  INC 7AH</b></p><p>  MOV A,7AH</p

86、><p>  CJNE A,#18H,OUTT0;60分鐘的延時是否計到24次,沒有就 </p><p><b>  繼續(xù)執(zhí)行程序</b></p><p>  MOV 7AH,#00</p><p>  OUTT0:SETB ET0;啟動定時器T0</p><p><b>  PO

87、P PSW</b></p><p><b>  POP ACC</b></p><p>  RETI;按鍵處理程序</p><p>  KEYSCAN:CLR EA</p><p>  JNB P1.0,KEYSCAN0;P1.0有按鍵按下則跳轉(zhuǎn)到子程序</p><p>

88、;  JNB P1.1,KEYSCAN1;P1.1有按鍵按下則跳轉(zhuǎn)到子程序</p><p>  JNB P1.2,KEYSCAN2;P1.2有按鍵按下則跳轉(zhuǎn)到子程序</p><p>  KEYOUT:SETB EA</p><p><b>  RET</b></p><p>  KEYSCAN0:LCALL

89、 DL20MS;20ms的延時消抖</p><p>  JB P1.0,KEYOUT</p><p>  WAIT0:JNB P1.0,WAIT0;判斷按鍵是否松手, 松手就往下執(zhí)行程序</p><p><b>  INC 7CH</b></p><p>  MOV A,7CH</p>&l

90、t;p><b>  CLR ET0</b></p><p><b>  CLR TR0</b></p><p>  CJNE A,#03H,KEYOUT;按下第一次和第二次對時、分選定</p><p>  MOV 7CH,#00;按下第三次時就啟動計時</p><p><b

91、>  SETB ET0</b></p><p><b>  SETB TR0</b></p><p>  SJMP KEYOUT</p><p>  KEYSCAN1:LCALL DL20MS;按鍵加一的程序</p><p>  JB P1.1,KEYOUT</p><

92、p>  WAIT1:JNB P1.1,WAIT1</p><p>  MOV A,7CH</p><p>  CJNE A,#02H,KSCAN11;如果功能鍵按下則對時加一調(diào)整</p><p><b>  INC 79H</b></p><p>  CJNE A,#3CH,KEYOUT;如果加到

93、60則清零</p><p>  MOV 79H,#00</p><p>  SJMP KEYOUT</p><p>  KSCAN11:INC 7AH;如果功能鍵是按下第二次則對分進(jìn)行加一調(diào)整</p><p>  MOV A,7AH</p><p>  CJNE A,#18H,KEYOUT</p>

94、;<p>  MOV 7AH,#00</p><p>  SJMP KEYOUT</p><p>  KEYSCAN2:LCALL DL20MS;延時消抖程序</p><p>  JB P1.2,KEYOUT</p><p>  WAIT2:JNB P1.2,WAIT2;判斷是否放開按鍵</p>

95、<p>  MOV A,7CH</p><p>  CJNE A,#02H,KSCAN21;如果功能鍵是按下第一次對時進(jìn)行減一</p><p><b>  DEC 79H</b></p><p>  MOV A,79H</p><p>  CJNE A,#0FFH,KEYOUT</p>

96、<p>  MOV 79H,#3BH</p><p>  SJMP KEYOUT</p><p>  KSCAN21:DEC 7AH;如果功能鍵是按下第二次則對分進(jìn)行減一</p><p>  CJNE A,#0FFH,KEYOUT</p><p>  MOV 7AH,#17H</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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論