版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘 要</b></p><p> 近年來隨著計算機在社會領域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應用正在不斷地走向深入,由于它具有功能強,功耗低,體積小,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關的系統,越來越廣泛應用于各個領域,單片機往往是作為一個核心部件來使用,在根據具體硬件結構,以及針對具體應用對象特點的軟件結合,以作完善。<
2、/p><p> 數字時鐘實際上是一個對標準頻率進行計數的計數電路。它的計時周期是24小時。采用LED數碼顯示管顯示時、分、秒,以24小時計時方式,根據數碼管動態(tài)顯示原理進行顯示?;?1單片的電子時鐘,外圍電路簡單易于實現,性價比高,是實現電子時鐘的不錯選擇。</p><p> 關鍵詞: 單片機, 傳感器, 數碼管,中斷</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世紀末,電子技術獲得了飛速的發(fā)展,在其推動下,現代電子產品幾乎滲透了社會的各個領域,有力地推動了社會生產力的發(fā)展和社會信息化成程度的提高,同時也使現代電子產品性能進一步提高,產品更新換代的節(jié)奏也越來越快。時間對人們來說總是那么寶
9、貴,工作的忙碌性和繁雜性容易使人們忘記當前時間。</p><p> 單片機模塊中最常見的是數字鐘,數字鐘是一種用數字電路技術實現時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更長的使用壽命,因此得到了廣泛的使用。</p><p> 數字鐘是采用數字電路實現對時、分、秒數字顯示的計時裝置,廣泛用于個人家庭,車站,碼頭,辦公室等公共場所,成為人們日常生活
10、中不可少的必需品。 </p><p> 基于51單片的電子時鐘,外圍電路簡單易于實現,性價比高,是實現電子時鐘的不錯選擇。研究數字鐘及擴大其應用,有著非?,F實的意義。 </p><p> 1.2 課題的主要內容課題的主要內容課題的主要內容 本次課程設計基于單片機內部資源設計出的一款性價比高的電子時鐘系統,主要涉及到以下幾個研究方向: (1) 熟悉MCS-51單片機內部定
11、時器的工作方式; (2) 掌握單片機內部中斷系統的工作模式; (3) 了解MCS-51單片機外部電路的一般設計方法; (4) 熟悉匯編語言的編寫規(guī)則; 河南機電高等??茖W校畢業(yè)論文 (5) 掌握單片機內部ram地址分配方法; (6) 掌握特殊功能寄存器的用法; (7) 熟悉Proteus ISIS軟件的使用; (8) 掌握匯編語言的編譯方法。 </p><p> 第2章電子時鐘實現原理</p
12、><p> 2.1設計方案:
13、 </p><p> 1、通過單片機內部的計數/定時器,采用軟件編程來實現時鐘計數,一般稱為軟時鐘,這種方法的硬件線路簡單,系統的功能一般與軟件設計相關,通常用在對時間精度要求不高的場合。</p><p> 2、采用時鐘芯片,它的功能強大,功
14、能部件集成在芯片內部,具有自動產生時鐘等相關功能,硬件成本相對較高;軟件編程簡單,通常用在對時鐘精度要求較高的場合。</p><p><b> 2.2設計內容:</b></p><p> 這里采用應用廣泛的AT89C51作為時鐘控制芯片,利用單片機內部的定時/計數器T0 實現軟時鐘的目的。首先將T0設定工作于定時方式,對機器周期計數形成基準時間(50ms),然后用
15、另一個定時/計數器T1對基準時間計數形成秒,秒計60次形成分,分計60形成小時,小時計到12。最后通過數碼管把它們的內容在相應的位置顯示出來,達到時、分、秒計時的功能。</p><p> 此外還要實現對時間的調整功能,89C51的P1.0、P1.1、P1.2外接三個獨立按鍵,當按下P1.0按鍵時,系統進入調時間的狀態(tài)或啟動時間顯示的功能;當按下P1.1按鍵時,對顯示的數碼管進行加一的功能;當按下P1.2按鍵時,
16、對顯示的數碼管進行減一的功能,達到調整時間的目的。</p><p> 2.3 系統框圖設計 根據電子時鐘能夠實現的功能,采用單片機內部資源,設計出了系統原理框圖,如圖2-1所示。</p><p><b> 圖2-1</b></p><p> 在單片機內部構建三個模塊:控制模塊、譯碼模塊、定時模塊,用以實現自動計數、譯碼顯示功能。單片機
17、外部構建四個電路:時鐘電路、復位電路、外部按鈕電路、顯示電路,用以實現對單片機內部計數控制以及譯碼輸出的正確顯示。該電子時鐘是將秒、分、時顯示在人的視覺器官面前的一種計時裝置。故將計時周期設置為24小時,當顯示滿刻度是23時59分59秒時,數碼管顯示為0。為了確保時間正常校對,在系統中設有校對按鈕,用以實現對數碼管顯示的正確調整。 </p><p> 2.4 系統電路原理設計 在本次的設計中對12MHZ的系
18、統時鐘進行定時計數,初值設為B03CH。形成定時時間為50ms。用片內RAM的7BH單元對50ms計數,計20次1秒鐘到,然后對秒計數器78H單元加1,秒計數器加到60后就向分進位,則分計數器79H單元加1而秒計數器78H單元清零;分計數器加到60后又向時進位,則時計數器7AH單元加1而分計數器79H單元清零;時計數器加到24則時計數器清零。然后把秒、分、時計數器分成十位和個位放到8個數碼管的顯示緩沖區(qū),通過數碼管顯示出來。顯示格式為小
19、時十位、小時個位---分十位、分個位---秒十位、秒個位。</p><p> 圖2-2 根據電路原理框圖設計出電路原理圖如圖2-2所示,由12MHz的晶振給單片機提供固定的時鐘頻率,通過k1、k2、k0可以對顯示電路時間進行位設定。 在圖2-2中,復位電路、時鐘電路、控制電路加上單片機組成單片機最小應用系統,能夠實現很多復雜的功能。系統由AT89C51、LED 數碼管、按鍵、電容、電阻等部分構
20、成,能實現時間的調整、輸出、調時間等功能。系統中按鈕k能對時間進行調整功能的按鈕,采用單鍵控制調時功能,運用軟件去判斷按鍵的時間從而選擇完成相對應的功能。當按下k0第一次時,對hour來調節(jié)小時的時間;當第二次按下k0時,對minute來調節(jié)分的時間;第三次按下是對scoend來調節(jié)秒時間。在設置秒位時間時,k1按下,秒就加1;如果k2按下,秒就減1。時、分調節(jié)與秒設定相同。 系統中的按鍵采用中斷技術來檢測,它在單片系統中
21、有著十分重要的作用,它不僅可以提高單片機CPU的效率,也可以對突發(fā)事件處理。所謂中斷就是當CPU正在執(zhí)行程序A時,發(fā)生了另一個急需處理的事件B,這是CPU暫停當前執(zhí)行的程序A,立即轉去執(zhí)行處理事件B的程序,處理完事件B后,再返</p><p> 第3章 系統各單元電路分析3.1 AT89C51 AT89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS的8位微處理器,俗稱單片機。AT89
22、C51是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的 </p><p><b> 圖
23、3-1</b></p><p> 由于電路原理中只用到單片機的p0、p1、p2口,所示下面對這三個端口進行詳細介紹。 1)、P0口:P00~P07統稱為P0口,在不接片外存儲器與不擴展I/O接口時,作為準雙向輸入/輸出接口。在接有片外存儲器或擴展I/O接口時,P0口分時復用為低8位地址總線和雙向數據總線。P0口是一個三態(tài)雙向口,由一個輸出鎖存器、兩個三態(tài)緩沖器、輸出驅動電路和輸出控制電路組成。在輸
24、入數據時,應人為地先向P0口寫“1”,定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 2)、P1口:P10~P17統稱為P1口,可作為準雙向I/O接口使用。P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4LSTTL門電流。P1口管腳寫入“1”后,被內部上拉為高,可用作輸
25、入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。 3)、P2口:P20 ~P27口統稱為P2口,一般可以作為準雙向I/O接口使用,在接有片外存儲器或擴展I/O接口且尋址范</p><p> 3.2 復位電路 計算機在啟動運行時都需要復位,復位時使中央處理器CPU和內部其他部件處于一個確定的初始狀態(tài),從這個狀態(tài)開始工作。 AT89C51單片機有一個復位引腳RST,高電平有效。在時鐘電
26、路工作以后,當外部電路使得RST端出現兩個機器周期(24個時鐘周期)以上的高電平,系統內部復位。復位有兩種方式:上電復位和按鈕復位。在此次的設計中,我采用按鍵復位,</p><p><b> 圖3-2</b></p><p> 只要RST保持高電平,AT89C51單片機將循環(huán)復位。復位期間,ALE、PSEN輸出高電平。RST從高電平變?yōu)榈碗娖胶?,PC指針變?yōu)?0
27、00H,使單片機從程序存儲器地址為0000H的單元開始執(zhí)行程序。復位后,內容各寄存器的初始內容如表4-1所示,當單片機執(zhí)行程序出錯或進入死循環(huán)時,可按復位按鈕重新啟動。 </p><p> 3.3 時鐘電路 在本次設計中,時鐘電路設計就是采用內部方式,即利用芯片內部的振蕩電路。AT89C51單片機內部有一個用于構成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2是高增益反相放大器的輸入端和輸出端。
28、這個高增益反相放大器將與作為反饋元件的片外晶體諧振器一起構成一個自激振蕩器。外接晶體振蕩器以及電容C1和C2構成并聯諧振電路,接在放大器的反饋回路中,對外接電容的值雖然沒有嚴格的要求,但是電容的大小會影響起振的快速和溫度的穩(wěn)定性、振蕩器的穩(wěn)定性、振蕩器頻率的高低。因此,此系統電路的晶體振蕩器的值為12MHz,電容應盡可能的選擇陶瓷電容,電容值約為22uF。在焊接刷電路板時,我們應注意晶體振蕩器和電容盡可能安裝的與單片機芯片靠近些,用以減
29、少寄生電容,為了更好地保證振蕩器可靠地工作和穩(wěn)定行,其電路圖如圖3-3所示。</p><p><b> 圖3-3</b></p><p> 3.4 按鍵電路 獨立式鍵盤是各按鍵相互獨立,每個按鍵各接一根I/O接口線,每根I/O接口線的按鍵是不會影響其他的I/O接口線。在本次設計中,按鍵為K0、K1、K2,他們分別與單片機P10、P11、P12接口線相接。通
30、過按鍵控制顯示器的顯示。其電路圖</p><p><b> 圖3-4</b></p><p> 3.5 LED顯示電路 在本次的設計中,采用的8位的數碼管顯示器。數碼管如果按照段數分可為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發(fā)光二極管單元,也就是多了一個小數點的顯示;如果按能夠顯示多少個“8”分類的話,也可以可分為1位、2位、4位等數碼管。
31、如果按照發(fā)光二極管單元的連接方式又可以分為共陽極數碼管和共陰極數碼管。共陽極的數碼管是將所有發(fā)光二極管的陽極接到一起后就形成公共陽極(COM)的數碼管,共陽極數碼管在應用時要將公共極(COM)接到+5V,當某一字段發(fā)光二極管的陰極為低電平時,相應字段就點亮,當某一字段的陰極為高電平時,相應字段就不亮。共陰極數碼管是將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數碼管,共陰極數碼管在應用時應將公共極(COM)接到地線GND上,當某
32、一字段發(fā)光二極管的陽極為高電平時,相應字段就點亮,當某一字段的陽極為低電平時,相應字段就不亮。 </p><p><b> 圖3-5</b></p><p> 第四章 系統軟件程序設計</p><p><b> 4.1主程序</b></p><p> 先對顯示單元和定時器/計數器
33、初始化,然后重復調用數碼管顯示模塊和按鍵處理模塊,當有按鍵按下時,則轉入相應的功能程序。</p><p> 4.2數碼管顯示模塊</p><p> 本設計有8個數碼管,從右到左為妙、橫線、分、橫線、時。在本系統中數碼管顯示采用軟件譯碼動態(tài)顯示。在存儲器中首先建立一張顯示信息的字段碼表,顯示時,先從顯示緩沖區(qū)中取出顯示的信息,然后通過查表程序在字段表中查出所顯示的信息的斷碼,從P0端口輸
34、出,同時在P2端口進行數碼管顯示。</p><p> 4.3定時器/計數器T0中斷服務程序</p><p> T0用于計時,選中方式一,重復定時,定時時間設為50ms,定時時間到則中斷,在中斷服務程序中用一個計數器對50ms計數,計20次則對秒單元加一。秒單元加到60則對分單元加一,同時秒單元清0;分單元加到60則對時單元加一,同時分單元清0;時單元加到24則對時單元清0,標志一天時間
35、計滿。在對各單元計數的同時,把他們的值放到存儲器單元的指定位置。流程圖如下:</p><p><b> 4.4按鍵處理模塊</b></p><p> 按鍵設置為:如果沒有按鍵,則時鐘正常走時。當按下K0鍵時,進入調分狀態(tài),時鐘停止走動;按K1和K2按鍵可以進行加一和減一操作;繼續(xù)按K0鍵可以分別進行分和小時的調整;最后按K0鍵啟動計時。</p>&l
36、t;p> 第5章 仿真實現</p><p> 仿真實現 在本課題中,采用AT89C51單片機作為主控制器,12MHZ晶振作為振蕩源,P0口作為輸出字段碼,P2口作為輸出位選碼,采用共陽的LED數碼管,P1.0為調時位選擇按鍵,P1.1為加1鍵,P1.2為減1鍵。片內RAM的70H到77H單元為LED數碼管的顯示緩沖區(qū)78H,79H,7AH分別為秒、分、小時計數單元。7BH為50ms計數器,7CH為
37、調時按鍵計數器。具體的程序見附錄。</p><p> 第6章 課程設計總結</p><p> 做了一周的數字鐘課程設計,讓我感受頗深,在本次電子技術課程設計過程中,得到了老師和同學的幫助,讓我學到了很多東西。</p><p> 通過這次課程設計,在很高的程度上彌補了我們的理論的不足,通過設計進一步鞏固了我們的理論知識,讓我們學的更扎實。總之,這次課程設計帶給我
38、很大的收獲,再一次感謝學校給了我們一個展現自己才能的機會,這對我們以后的工作和學習都有很好的作用。</p><p><b> 參考文獻:</b></p><p> [1] 林立.單片機原理與應用[M].北京:電子工業(yè)出版社,2009 [2] 李守中.51單片機開發(fā)入門與經典實例[M].北京:人民郵電出版社,2007</p><p> [
39、3]丁元杰主編.單片微型計算機.北京:機械工業(yè)出版社.2003[4] 胡漢才.單片機原理與接口技術[M].北京:清華大學出版社,1996 </p><p> [5]李廣第主編.單片機基礎.北京:北京航天工業(yè)出版社.2002[6] 楊加國.單片機原理與應用及C51程序設計(第二版)[M].北京:清華大學出版社,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;對連字符進行裝值</p><p> MOV 75H,#10</p><p>
42、; MOV TMOD,#01H;選擇定時器/計數器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 ;數碼管顯示程序開始</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;數碼管的顯示程序</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> ;定時/計數器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有按鍵按下則跳轉到子程序</p><p> JNB P1.1,KEYSCAN1;P1.1有按鍵按下則跳轉到子程序</p><p> JNB P1.2,KEYSCAN2;P1.2有按鍵按下
60、則跳轉到子程序</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;如果功能鍵按下則對時加一調整</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;如果功能鍵是按下第二次則對分進行加一調整</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;如果功能鍵是按下第一次對時進行減一</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;如果功能鍵是按下第二次則對分進行減一</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;對連字符進行裝值</p><p> MOV 75H,#10</p><p> MOV TMOD,#01H;選擇
71、定時器/計數器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 ;數碼管顯示程序開始</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;數碼管的顯示程序</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> ;定時/計數器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有按鍵按下則跳轉到子程序</p><p>
88、; JNB P1.1,KEYSCAN1;P1.1有按鍵按下則跳轉到子程序</p><p> JNB P1.2,KEYSCAN2;P1.2有按鍵按下則跳轉到子程序</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;如果功能鍵按下則對時加一調整</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;如果功能鍵是按下第二次則對分進行加一調整</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;如果功能鍵是按下第一次對時進行減一</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;如果功能鍵是按下第二次則對分進行減一</p><p> CJNE A,#0FFH,KEYOUT</p><p> MOV 7AH,#17H</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子時鐘單片機課程設計
- 單片機課程設計---電子時鐘
- 單片機課程設計——電子時鐘
- 單片機課程設計——電子時鐘
- 單片機課程設計--電子時鐘
- 單片機課程設計-電子時鐘
- 單片機課程設計--電子時鐘
- 單片機課程設計--電子時鐘
- 單片機課程設計----電子時鐘
- 單片機課程設計-電子時鐘
- 單片機課程設計---單片機電子時鐘
- 單片機課程設計--電子時鐘設計
- 數字電子時鐘-單片機課程設計
- 單片機課程設計---電子時鐘.doc
- 單片機課程設計--單片機模擬電子時鐘設計
- 單片機課程設計--- 單片機電子時鐘設計
- 單片機課程設計報告---電子時鐘
- 單片機課程設計報告--電子時鐘
- 單片機課程設計---電子時鐘.doc
- 單片機課程設計--單片機模擬電子時鐘設計
評論
0/150
提交評論