電子類畢業設計_第1頁
電子類畢業設計_第2頁
電子類畢業設計_第3頁
電子類畢業設計_第4頁
電子類畢業設計_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

緒論20世紀末,電子技術得到了極速的發展,毫無疑問,在其推動下,當代電子產品以及多個高科技產品幾乎滲入到了社會的各個領域,這有力地推動了社會生產力的發展和社會信息化程度以及綜合科技水平的提高,但產品更新換代的頻率也越來越快。隨著科技的發展社會的進步和全球化競爭的日益激烈,人們對數字鐘的規定也越來越高,傳統的時鐘已不能滿足人們的需求。多功效電子鐘不管在性能還是在樣式亦或是用途上都發生了重大的變化,許多電子鐘都已含有電子鬧鐘、電子秒表、溫度檢測等功效。同時單片機在多功效數字鐘中的應用已是非常普遍的[1]。多功效電子時鐘除了含有時鐘的功效外還能夠包含對環境溫度檢測的功效。溫度是一種最基本的環境參數。在各個行業生產及日常生活中,對溫度的測量及控制始終占據著非常重要的地位。現在,典型的溫度檢測控制系統由模擬式溫度傳感器、A/D轉換電路和多個單片機構成。由于模擬式溫度傳感器輸出的模擬信號必須通過A/D轉換環節轉換為數字信號后才干與單片機等微解決器接口進行讀寫的操作,因此硬件電路會比較復雜,成本較高。而以DS18B20為代表的新型單線總線數字式溫度傳感器集溫度測量和A/D轉換于一體,這類傳感器能夠直接輸出數字量,同時與單片機接口電路構造非常簡樸,能夠廣泛用于距離遠、節點分布多的場合,含有較強推廣應用價值。[2]數字電子時鐘是采用數字電路實現對時,分,秒數字顯示的裝置,廣泛用于個人家庭,車站,碼頭辦公室等公共場合,成為人們日常生活中不可或缺的必需品,由于數字集成電路的發展和石英晶體振蕩器的廣泛應用,數字時鐘的精度遠遠超出傳統鐘表,鐘表的數字化給人們生產生活帶來了極大的方便,并且大大地擴展了鐘表原先的報時功效。例如定時自動報警、準時自動打鈴、時間程序自動控制、定時廣播、自動啟閉路燈、定時開關烘箱、通斷動力設備、甚至多個定時電器的自動啟用等,全部這些,都是以鐘表數字化為基礎的。因此,研究數字時鐘及擴大其應用,有著非常現實的意義。計算機特別是以微細加工技術支持的微型計算機技術飛速發展,其應用滲入到了各行各業。以單片機、嵌入式解決器、數字信號解決器(DSP)為核心的計算機系統,以其軟硬件可裁剪、高度的實時性、高度的可靠性、功效齊全、低功耗、適應面廣等諸多優點而得到極為廣泛的應用。現在計算機硬件技術向巨型化、微型化和單片機化三個方向高速發展。自1975年美國德州儀器公司(TexasInstruments)第一塊微型計算機芯片TMS-1000問世以來,在短短的間,單片機技術已發展成為計算機領域一種非常有前途的分子,它有自己的技術特性、規范和應用領域。單片機是自動控制系統的核心部件,重要用于工業控制、智能化儀器儀表、家用電器中。它含有體積小、性能突出可靠性高(某些方面的性能指標大大優于通用微機中央解決器)、價格低廉等一系列優點,應用領域不停擴大,除了工業控制、智能化儀表、通信和家用電器外,在智能化高檔電子玩具產品中也大量采用單片機芯片作為核心控制部件,已經滲入到人們工作和生活的各個角落,有力地推動了各行業的技術改造和產品的更新換代,前景廣闊。數字鐘含有單片機最小系統的基本構成,對于我們理解單片機有很大的協助。本設計通過用對一種能實現可調的實時時鐘顯示功效的時間系統的設計學習,具體介紹了51單片機應用中的數據轉換顯示,數碼管顯示原理,靜態掃描顯示原理,單片機的定時中斷原理等,從而達成學習、理解單片機有關指令在各方面的應用。對于單片機學習者而言,這個程序基本上是一道門檻,掌握了電子時鐘程序,基本上就能夠說掌握了51單片機。1數字鐘的功效實現與設計方案1.1數字鐘的實現形式數字鐘既能夠通過純硬件實現,也能夠通過軟硬件結合實現,根據電子時鐘的核心部件——秒信號的產生原理,普通有三鐘形式:(1)用NE555時基電路的形式采用NE555時基電路或其它震蕩電路產生秒脈沖信號,作為秒加法電路的時鐘信號或微解決器的外部中斷輸入信號,可構成電子時鐘。由NE555構成的秒脈沖發生器電路如圖1-1所示。輸出的脈沖信號V0的頻率F=1.443/(RA+2RB)×C,可通過調節這3個參數,使輸V0的頻率為精確的1Hz。圖1-1基于555的秒脈沖發生器(2)采用石英鐘專用芯片的實現形式采用石英鐘專用計時芯片實現的電子鐘,含有實現簡樸、計時精度高的特點。石英計時芯片(簡稱“機芯”)比較多,常見的有STP5512F、SM5546A和D60400等。現基于5512F的2秒輸出信號作為秒加法電路的計時脈沖,可實現電子時鐘。5512F的引腳如圖1-2所示。112348765V+SCAKSC1M0BPM1GND圖1-25512F引腳圖其中,引腳7、8為外接晶振及振蕩電路,引腳1接電源正極,電源為1.5伏,引腳3、4原為指針用步進電機線圈的輸出驅動端,這里可用3腳作為脈沖輸出,頻率決定于外接晶振的頻率。(3)采用基于單片機的實現形式運用單片機的智能性,可方便的實現含有智能數字鐘的設計。并且,微解決系統含有時鐘振蕩系統,運用系統時鐘并借助微解決器的定時/計數器功效能夠實現數字鐘的功效。本設計采用AT89S51單片機設計。1.2方案的擬定能夠從下列幾個方面來擬定電子時鐘的設計方案。1.2.1微解決器采用ATMEL的AT89S51微解決器,是基于下列幾個因素:(1)內含Flash存儲器,這在系統的開發過程中,可隨意進行程序修改,既便錯誤編程之后仍能夠重新編程,故不存在廢品且大大縮短了程序的開發周期;同時在系統工作過程中能有效地保存數據信息。(2)采用靜態時鐘方式,節省電能,這對于減少便攜式產品的功耗十分有利。(3)由于它是以8031核構成的,因此它與MCS251系列單片機是兼容的(4)AT89S51為51內核,仿真調試軟硬件資源豐富;(5)性價比高,貨源充足;(6)DIP-40封裝,體積較大,但更方便編程及定義管腳;(7)為E2PROM程序存儲介質,1000次以上擦/寫周期,便于變成調試;(8)含有低功耗工作模式,便于進行低功耗設計;(9)工作電壓范疇較寬,便于交直流供電。1.2.2顯示電路就時鐘而言,普通可采用液晶顯示或數碼管顯示。對于普通的段式液晶屏,需要專門的驅動電路,并且液晶顯示作為一種被動顯示,可視性相對較差;對于含有驅動電路和微解決器接口的液晶顯示模塊(字符或點陣),普通多采用并行機接口,對于微解決器的接口規定較高,占用資源多。另外,89S51本身沒有專門的液晶驅動接口,因此,本時鐘設計采用了數碼管顯示方式。數碼管作為一種主動顯示屏件,含有亮度高、價格便宜等優點,并且市場上也有專門的時鐘顯示組合數碼管。1.2.3按鍵電路考慮到對時鐘以及在有限個數碼管內實現兩組顯示數據的切換。本時鐘系統設五個按鍵:(1)SET鍵,重要用于啟動和關閉設定參數狀態兩個功效:①在復位后的時鐘(或日期)顯示狀態下,用于啟動設定時間(或日期)參數;②在設定對的狀態后,用于結束設定參數狀態。(2)+1鍵,在SET狀態下,用于對現在設定位(編輯位)進行加1操作,根據正在編輯的現在位的含義(時位、分位、秒位或星期、月份、日期)自動進行數據的上限和下限判斷。例如,對12小時制,當小時的兩位顯示為12時,再按此鍵,則自動變為顯示為“01”。(3)-1鍵,在SET狀態下,用于對現在設定位(編輯位)進行減1操作,根據正在編輯的現在位的含義(時位、分位、秒位或星期、月份、日期)自動進行數據的上限和下限判斷。例如,對12小時制,當小時的兩位顯示為01時,再按此鍵,則自動變為顯示為12.(4)左移鍵/顯示狀態切換鍵,在SET狀態下,用于對現在設定位(編輯位)進行左移位操作,每次移動一種變量(即兩個數碼管);在待機狀態下,用于顯示(時、分、秒和星期、月、日)的轉換。(5)右移鍵,用于對現在設定位(編輯位)進行右移位操作,每次移動一種變量(即兩個數碼管)。2數字鐘的硬件系統設計數字時鐘硬件部分的設計應涉及秒信號發生器、時間顯示電路、按鍵電路、供電電路等幾部分。2.1數字時鐘的硬件系統框架電子時鐘的系統框架入圖2-1所示。CPUCPU按鍵電路復位等輔助電路電源系統數碼管顯示電路校時電路圖2-1數字鐘的系統框架2.2數字時鐘的主機電路設計數字時鐘的主電路指的是圖1中框內部分,重要涉及到微解決器電路和按鍵、按鈕電路。主機的設計具體地說有:1、系統控制芯片的選擇2、系統時鐘電路設計;3、系統復位電路設計;4、按鍵與按鈕電路設計。2.2.1系統控制芯片CPU(AT89S51)的選擇AT89C系列單片機是Atmel公司1993年開始研制生產的,優越的性能價格比使其成為頗受歡迎的8位單片機。AT89C系列與MCS-51系列單片機相比有兩大優勢:第一,片內程序存儲器采用閃速存儲器,使程序的寫入更加方便;第二,功效更加強大,使其在應用中更廣泛[6]。(1)AT89S51重要性能:AT89S51是Atmel公司生產的帶4KB閃速可編程可擦除只讀存儲器的8位單片機,它含有以下重要特性:eq\o\ac(○,1)AT89S51為51內核;eq\o\ac(○,2)內部帶4KB可編程閃速存儲器(E2PROM),壽命為1000次擦/寫循環,數據保存時間為;eq\o\ac(○,3)DIP40封裝,I/O口較多eq\o\ac(○,4)工作電壓范疇為4.5~5.5V;eq\o\ac(○,5)全靜態工作頻率為0Hz~33MHz;eq\o\ac(○,6)三極程序存儲器保密鎖定;eq\o\ac(○,7)128bytes內部RAM;eq\o\ac(○,8)32個外部雙向輸入/輸出可編程I/O線;、eq\o\ac(○,9)2個16位定時器/計數器;eq\o\ac(○,10)6個中斷源;eq\o\ac(○,11)兩個全又工串行通信口;eq\o\ac(○,12)看門狗(WDT電路);eq\o\ac(○,13)可編程串行通道;eq\o\ac(○,14)片內振蕩器和時鐘電路;eq\o\ac(○,15)低功耗的閑置和掉電模式;(2)AT89S51內部構造及引腳描述AT89S51單片機的內部與8051單片機的內部構造完全一致,區別只是將存儲器改為Flash存儲。其引腳配備如圖2-2所示。 圖2-2AT89S51引腳配備它是一種有40個引腳排列直插式的芯片,其引腳描述以下:VCC:供電電壓。GND:接地。P0口:P0口為一種8位漏級開路雙向I/O口,每腳可吸取8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它能夠被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。

P1口:P1口是一種內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接受輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接受。P2口:P2口為一種內部上拉電阻的8位雙向I/O口,P2口緩沖器可接受,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它運用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功效寄存器的內容。P2口在FLASH編程和校驗時接受高八位地址信號和控制信號。P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接受輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口除了作為普通I/O口,尚有第二功效:P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時器0外部輸入)P3.5T1(記時器1外部輸入)P3.6/WR(外部數據存儲器寫選通)P3.7/RD(外部數據存儲器讀選通)P3口同時為閃爍編程和編程校驗接受某些控制信號。I/O口作為輸入口時有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時事實上并不從外部讀入數據,而是把端口鎖存器的內容讀入到內部總線,通過某種運算或變換后再寫回到端口鎖存器。只有讀端口時才真正地把外部的數據讀入到內部總線。89C51的P0、P1、P2、P3口作為輸入時都是準雙向口。除了P1口外P0、P2、P3口都尚有其它的功效。RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一種ALE脈沖。如想嚴禁ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微解決器在外部執行狀態ALE嚴禁,置位無效。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管與否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。從上述引腳闡明看出,AT89S51提供了外部擴展存儲器與I/O設備所需的地址、數據、控制信號,因此運用AT89S51構成的單片及應用系統能夠在AT89S51之外擴展存儲器或I/O設備,但是其本身所含有的的各項功效及模塊也闡明,AT89S51本身也構成了最小的單片機系統。(3)振蕩器振蕩器特性:XTAL1和XTAL2分別構成片內振蕩器的反相放大器的輸入和輸出端,如圖2-3所示。可采用石英晶體或陶瓷振蕩器構成振蕩器。要從外部時鐘源驅動AT89S51,則XTAL2應懸空,而XTAL1的驅動如圖2-4所示。由于輸入到內部時鐘電路通過一種二分頻觸發器,故不需要對外部時鐘信號的工作周期提出特殊規定,但它必須恪守最小和最大電壓高低電平的時間規范。圖2-3振蕩的外部連接辦法圖2-4外部時鐘驅動構造(4)特殊功效寄存器SFR與8051單片機特殊功效寄存器相對應,AT89S51片內設立了19個特殊功效寄存器,統稱為特殊功效寄存器塊SFR,它們的地址散布在80H~0F0H區域內。(5)低功耗工作模式AT89S51優良中低功耗工作模式:待機方式與掉電方式。eq\o\ac(○,1)待機方式(休眠方式)當運用軟件使待機方式位ADL(PCON.0)=0時,單片機進入空閑方式。此時,CPU處在休眠狀態,而片內全部其它外圍設備都保持工作狀態,片內RAM和全部特殊功效寄存器內容保持不變。在待機方式下,當晶振fosc=12MHz,電源電壓VCC=6V時,電源電流ICC從20Ma降至5Ma;而VCC由5.5mA降至1mA。中斷或硬件復位能夠終止待機方式。當待機方式由硬件復為終止時,CPU要從休眠處恢復程序的執行,執行2的周期后,內部復位電路才起作用。此時,硬件嚴禁訪問內部RAM,但允許訪問端口引腳。為了避免休眠被復位終止時對端口以外寫入的可能性,在生成待機方式的指令后不應緊跟對端口引腳的寫指令。如果不采用外部上拉,P1.0和P1.1應置“1”。eq\o\ac(○,2)掉電方式掉電方式由掉電方式位PD(PCON.1)=1設立。此時振蕩器停止工作,設立掉電方式的指令成為最后執行的一條指令,片內RAM和特殊功效寄存器內容保持不變。在掉電模式下,VCcmin=2V。當VCC=6V時,ICCmax=100μA;當VCC=3時,ICcmax=20μA。退出掉電方式的唯一方式是硬件復位。硬件復位將重新定義特殊功效寄存器,但不影響片內RAM。復位的保持時間應足夠長,方便振蕩器能重新開始工作并穩定下來。在VCC沒有恢復得到正常工作電壓之前,不應進行復位。如果不采用外部上拉,P1.0和P1.1應置“0”,否則置“1”。(6)閃速存儲器的編程AT89S51單片機內部有4KB的閃速存儲器陣列,一片新的AT89S51,其存儲陣列處在擦除狀態(FFH),此時可對其編程,存儲陣列一次編程1字節,若編程任何非空字節時,需對整個存儲陣列進行片擦除[7]。編程時,AT89S51運用內部存儲器地址計數器提供尋址存儲器的地址信號,RST上升沿將該地址計數器復位至000H,引腳XTAL1所施加的正向脈沖使地址計數器不停加1。[8]RST上出現12V(編程電源VPP)高壓時,預示著1字節的編程操作開始,這時P3口提供編程所需的控制與狀態信號,P1口為數據通道。(7)在線編程AT89S51編程時需要運用RST、XTAL1、P1口、P2口、P3口提供控制信號與加載編程數據,而這一規定又常與顧客系統對這些引腳的規定或操作沖突。因此,在線編程不能直接在顧客工作電路中進行,而要通過特殊電路解決才干實現。例如圖2-5所示為在線編程的示例,其采用2選1的辦法實現連接線路的切換,達到在線編程的目的。運用微動開關SW來選擇XTAL1的加載,產生選擇控制信號Select,其它線路的切換用2選1器件74LS157與三態緩沖器74LS244實現。當AT89S51正常工作時,選擇控制信號(Selecg=0)控制全部的74LS157輸入A端與輸出Y接通,且74LS244-1輸出有效,74LS244-2三態輸出,使得AT89S51能夠對顧客電路進行控制操作;當AT89S51需要編程時,選擇控制信號(Select=1)控制全部的74LS157輸入B端與輸出Y端接通,且74LS244-1三態輸出,74LS244-2輸出有效,使得AT89S51能夠接受編程電路的控制,實現編程操作。圖2-5在線編程示圖2.2.2時鐘芯片DS1302DS1302是DALLAS公司推出的涓流充電時鐘芯片,內含有一種實時時鐘/日歷和31字節靜態RAM,通過簡樸的串行接口與單片機進行通信實時時鐘/日歷電路。提供秒、分、時、日、日期、月、年的信息,每月的天數和閏年的天數可自動調節時鐘操作可通過AM/PM批示決定采用24或12小時格式。DS1302與單片機之間能簡樸地采用同時串行的方式進行通信,僅需用到三個口線:①RES復位;②I/O數據線;③SCLK串行時鐘.時鐘/RAM的讀/寫數據以一種字節或多達31個字節的字符組方式通信.DS1302工作時功耗很低,保持數據和時鐘信息時功率不大于1mW。DS1302是由DS1202改善而來,增加了下列的特性.雙電源管腳用于主電源和備份電源供應Vcc1,為可編程涓流充電電源附加七個字節存儲器。它廣泛應用于電話傳真便攜式儀器以及電池供電的儀器儀表等產品領域。(1)重要的性能指標:eq\o\ac(○,1)實時時鐘含有能計算2100年之前的秒、分、時、日、月、星期、年的能力,尚有閏年調節的能力;eq\o\ac(○,2)318位暫存數據存儲RAM;eq\o\ac(○,3)串行I/O口方式使得管腳數量最少;eq\o\ac(○,4)寬范疇工作電壓2.0V---5.5V;eq\o\ac(○,5)工作電流2.0V時,不大于300nA;eq\o\ac(○,6)讀/寫時鐘或RAM數據時有兩種傳送方式單字節傳送和多字節傳送字符組方式;eq\o\ac(○,7)8腳DIP封裝或可選的8腳SOIC封裝根據表面裝配;eq\o\ac(○,8)簡樸3線接口;eq\o\ac(○,9)與TTL兼容Vcc=5V;eq\o\ac(○,10)可選工業級溫度范疇-40+85;eq\o\ac(○,11)與DS1202兼容;eq\o\ac(○,12)在DS1202基礎上增加的特性;eq\o\ac(○,13)對Vcc1有可選的涓流充電能力;eq\o\ac(○,14)雙電源管用于主電源和備份電源供應;eq\o\ac(○,15)備份電源管腳可由電池或大容量電容輸入;(2)DS1302的基本構成和工作原理DS1302的引腳功效排列及描述如圖2-6所示.圖2-6DS1302引腳圖管腳描述:

X1X232.768KHz晶振管腳

GND地

RST復位腳

I/O數據輸入/輸出引腳

SCLK串行時鐘

Vcc1,Vcc2電源供電管腳

DS1302串行時鐘芯片8腳DIP

DS1302S串行時鐘芯片8腳SOIC200mil

DS1302Z串行時鐘芯片8腳SOIC150mil(3)DS1302內部寄存器CH:時鐘停止位

存器2的第7位12/24小時標志

CH=0振蕩器工作允許

bit7=1,12小時模式

CH=1振蕩器停止

bit7=0,24小時模式WP:寫保護位

寄存器2的第5位:AM/PM定義

WP=0寄存器數據能夠寫入

AP=1下午模式

WP=1寄存器數據不能寫入

AP=0上午模式TCS:涓流充電選擇

DS:二極管選擇位

TCS=1010使能涓流充電

DS=01選擇一種二極管

TCS=其它嚴禁涓流充電

DS=10選擇兩個二極管

DS=00或11,即使TCS=1010,充電功效也被嚴禁2.2.3系統時鐘電路設計系統運用晶體振蕩器作為時鐘電路,根據晶振的不同使用規定及特點,普通分為下列幾類:普通晶振、溫補晶振、壓控晶振、溫控晶振等。安裝晶振時,應根據其引腳功效標記與應用電路應連接,避免電源引線與輸出引腳相接輸出。在測試和使用時所供直流電源應沒有足以影響其精確度的紋波含量,交流電壓應無瞬變過程[9]。測試儀器應有足夠的精度,連線合理布置,將測試及外圍電路對晶振指標的影響降至最低。(1)普通晶振(PXO):是一種沒有采用溫度賠償方法的晶體振蕩器,在整個溫度范疇內,晶振的頻率穩定度取決于其內部所用晶體的性能,頻率穩定度在10-5量級,普通用于普通場合作為本振源或中間信號,是晶振中最便宜的產品。(2)溫補晶振(TCXO):是在晶振內部采用了對晶體頻率溫度特性進行賠償,以達成在寬溫溫度范疇內滿足穩定度規定的晶體振蕩器。(3)恒溫晶振(OCXO):采用精密控溫,使電路元件及晶體工作在晶體的零溫度系數點的溫度上。中精度產品頻率穩定度為10-7~10-8,高精度產品頻率穩定度在10-9量級以上。重要用作頻率源或原則信號。(4)壓控晶振(VCXO):是一種可通過調節外加電壓使晶振輸出頻率隨之變化的晶體振蕩器,重要用于鎖相環路或頻率微調。壓控晶振的頻率控制范疇及線性度重要取決于電路所用變容二極管及晶體參數兩者的組合。晶體振蕩器選擇參考原則:(1)總頻差:在規定的時間內,由于規定的工作和非工作參數全部組合而引發的晶體振蕩器頻率與給定標稱頻率的最大頻差。(2)溫度穩定度:在標稱電源和負載下,工作在規定溫度范疇內的不帶隱含基準溫度或帶隱含基準溫度的最大允許頻偏。(3)頻率穩定預熱時間:以晶體振蕩器穩定輸出頻率為基準,從加電到輸出頻率不大于規定頻率允差所需要的時間。(4)頻率老化率:在恒定的環境條件下測量振蕩器頻率時,振蕩器頻率和時間之間的關系。這種長久頻率漂移是由晶體元件和振蕩器電路元件的緩慢變化造成的,可用規定時限后的最大變化率(如±10ppb/天,加電72小時后),或規定的時限內最大的總頻率變化(如:±1ppm/(第一年)和±5ppm/(十年))來表達。(5)頻率壓控范疇:將頻率控制電壓從基準電壓調到規定的終點電壓,晶體振蕩器頻率的最小峰值變化量。(6)頻率壓控線性:與抱負(直線)函數相比的輸出頻率-輸入控制電壓傳輸特性的一種量度,它以百分數表達整個范疇頻偏的可允許非線性度。本系統時鐘電路的設計如圖2-7。對于實踐規定不是很高的系統,圖中電路設計就能使系統可靠起振并穩定運行。但由于途中的C1、C2電容起著系統時鐘頻率微調和穩定的作用,它對時鐘的正負走時誤差有很大影響。因此,在本系統的實際應用中特別注意了電容參數的選擇(),并盡量確保電路的對稱性(盡量匹配),選用正派廠家生產的瓷片或云母電容,條件允許的話溫度系數要盡量低。圖2-7振蕩電路2.2.4系統復位電路設計智能系統普通應有手動或上電復位電路。復位電路的實現普通有兩種形式:即專用μp監控電路和RC復位電路。前者電路實現簡樸,成本低,但復位可靠性相對較低;后者成本較高,但復位可靠性高,特別是高可靠重復復位。對于復位規定高,并對電源電壓進行監視的場合,大多采用這種方式。(1)專用μP監控電路專用μP監控電路有稱為電源監視電路,含有上電時可靠產生復位信號和電源電壓跌落到“門檻值”時可靠產生復位信號等功效[9]。準時效電平分,有高電平輸出、低電平輸出兩種;按功效分,有簡樸的電源監視復位電路、帶看門狗定時器(WATCHDOGTimer,WDT)的監控電路和WDT+E2PROM的監控電路等多個類型。(2)RC復位電路本系統采用的是RC復位方式。RC復位電路的實質是一階充放電電路,如圖2-8:圖2-8RC復位電路系統上電時該電路提供有效的復位信號RST(高電平)直至系統電源穩定后撤銷復位信號(低電平)。從理論上說,51系列單片機復位引腳只要外兩個機器周期的有效信號即可復位,即只要確保t=RC>2M(機器周期)便可。但在實際設計中,普通C1取值為10μF以上,R1普通取值10ΚΩ左右。實踐發現,R1如果取值太小,例如1ΚΩ,則會造成RST信號驅動能力變差而無法使系統可靠復位。另外,從圖2-9所示的復位信號波形圖能夠明顯看出,續流二極管對于改善復位性能,起到了重要作用。它的作用是在電源電壓瞬間下降時使電容快速放電,因此一定寬度的電源毛刺(如波形中A點)也可令系統可靠復位。圖2-9加二極管前后的復位信號特性對比2.2.5按鍵與按鈕電路設計按鍵與按鈕電路的設計參見系統原理圖中的S1、S2和S3對應部分。按鍵與按鈕電路設計中核心要考慮的就是按鍵去抖動問題(簡稱“去抖”),普通由硬件去抖和軟件去抖兩種方式。硬件去抖能夠采用分立元件或觸發器實現,現在市場上也有硬件去抖專用接口芯片,例如:MAXIM公司MAX6816~6818,均為單電源供電,電壓為2.7~5.5V,分別為單輸入、雙輸入和八輸入,輸出端含有欠壓鎖定功效。考慮到系統的硬件簡化和控制成本問題,本次設計采用軟件去抖方式。2.2.6數字鐘的顯示電路設計(1)LED的選擇單片機I/O的應用最典型的是通過I/O口與7段LED數碼管構成顯示電路,7段LED數碼管,在一定形狀的絕緣材料上,運用單只LED組合排列成“8”字型的數碼管,分別引出它們的電極,點亮對應的點劃來顯示出0-9的數字。LED數碼管根據LED的接法不同分為共陰和共陽兩類,理解LED的這些特性,對編程是很重要的,由于不同類型的數碼管,除了它們的硬件電路有差別外,編程辦法也是不同的。下圖2-10為共陰和共陽極數碼管的內部電路,它們的發光原理是同樣的,只是它們的電源極性不同而已。圖2-10數碼管電路將多只LED的陰極連在一起即為共陰式,而將多只LED的陽極連在一起即為共陽式。以共陰式為例,如把陰極接地,在對應段的陽極接上正電源,該段即會發光。固然,LED的電流普通較小,普通均需在回路中接上限流電阻。如果我們將"b"和"c"段接上正電源,其它端接地或懸空,那么"b"和"c"段發光,此時,數碼管顯示將顯示數字“1”。而將"a"、"b"、"d"、"e"和"g"段都接上正電源,其它引腳懸空,此時數碼管將顯示“2”。其它字符的顯示原理類同。本設計采用的是共陽極數碼管。用單片機驅動LED數碼管有諸多辦法,按顯示方式分,有靜態顯示和動態(掃描)顯示,按譯碼方式可分硬件譯碼和軟件譯碼之分。靜態顯示就是顯示驅動電路含有輸出鎖存功效,單片機將所要顯示的數據送出后就不再控制LED,直到下一次顯示數據需要更新時再傳送一次新數據,顯示數據穩定,占用極少的CPU時間;動態顯示需要CPU時刻對顯示屏件進行數據刷新,顯示數據有閃爍感,占用的CPU時間多。這兩種顯示方式各有利弊:動態顯示即使有閃爍感,占用的CPU時間較多,但是用的硬件少,能節省線路板的空間。動態掃描顯示接口是單片機種應用最廣泛的一種顯示方式。其接口電路是把全部的LED顯示屏的8個筆畫段A~G、DP的同名端連在一起,而每一種數碼管的公共端COM是各自獨立地受I/O線控制。CPU向字段輸出口送出字形碼時,全部顯示屏接受到相似的字形碼,但終究是哪個顯示屏亮,則取決于COM端,而這一端由I/O控制的,能夠自行決定何時顯示哪一位了。而所謂動態掃描就是指我們采用分時的辦法,輪流控制各個顯示屏的COM端,使各個顯示屏輪流點亮。在輪流點亮掃描過程中,每位顯示屏的點亮時間是極為短暫的,約1ms左右,但是由于人的視覺暫留現象及發光余暉效應,盡管事實上各位顯示屏并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感。靜態顯示即使數據穩定,占用極少的CPU時間,但每個顯示單元都需要單獨的顯示驅動電路,使用的硬件較多,但是編程相對于動態顯示比較簡樸,本設計采用的是靜態顯示方案。(2)LED的驅動和顯示單片機對LED數碼管的驅動辦法能夠分為串行和并行兩種,分別合用于不同的使用場合,兩者的硬件電路和程序區別也很大。并行驅動:在普通狀況下,單片機使用并行驅動的方式進行LED的顯示。并行驅動的構造較簡樸,并且非常合用于闡明地址和數據總線復用的狀況。LED并行驅動的電路原理圖如圖2-11所示。圖2-11LED并行驅動的電路原理圖中顯示的是使用8155與LED顯示屏的接口,8155的PB0~PB7作為段選碼口,通過7407驅動與LED的段相連;8155的PA0~PA5作為位選碼口,通過7406驅動與LED的位相連。圖中的P2.7反相后作為8155的片選信號,P2.6接8155的IO端。這樣擬定8155片內的4個端口地址。(7407:驅動門電路,提供數碼管顯示的驅動電流)本設計采用的是串行驅動方式,具體辦法以下:在某些狀況下,可供使用的單片機并行I/O口局限性8根,數據的并行輸出已不可能此時能夠考慮串行輸出辦法,圖2-12本設計采用的串行口擴展的四位LED顯示電路。圖2-12本設計采用的串行口擴展的六位LED顯示電路該顯示電路只使用單片機的兩個端口P3.0、P3.1,并配以六片串入并出移位寄存器74LS164(LED驅動)。并配四個二級管來調節LED亮度。其中74LS164的引腳Q0~Q7為8位并行輸出端;引腳A、B為串行輸入端;引腳CLK為時鐘脈沖輸入端,在CLK脈沖的上升沿作用下實現移位,在CLK=0、去除端MR=1時,74LS164保持原來數據狀態;MR=0時,74LS164輸出清零。其工作過程以下:①89S51的串行口設定在方式0移位寄存器狀態下,串行數據由P3.0發送,移位時鐘由P3.1送出②在移位時鐘的作用下,串行口發送緩沖器的數據一位一位地移入74LS164中。③6片74LS164串級擴展為6個8位并行輸出口,分別連接到6個LED顯示屏的段選端作靜態顯示。顯示采用共陽數碼管,其目的是為了簡化限流電路的設計和實現亮度可調的規定。從圖中能夠看出,該顯示電路采用了與普通的段電流電阻限流方式不同的顯示方式,由此減少了48個限流電阻,簡化了硬件系統。每筆畫段二極管正常發光時的電流普通為10mA左右(電流大小還取決于數碼管是普亮、高亮還是超高亮類型的不同),其兩端壓降約為2.0V,也就是說,只要數碼管的公共端(COM)加+2.0以上電壓,即可滿足每筆畫段發光二極管的發光規定,并且合適調節此電壓值即可變化發光二極管的電流,從而達成調節亮度的目的。此電壓采用的是由4個硅二極管串聯,運用硅二級管兩端電壓降為0.7V,4個二級管產生的電壓降效果為4*0.7=2.8(V),輸入電壓為+5V,由此達成每個數碼段上的電壓為2.2V左右,以確保發光段的正常亮度。移位寄存器74LS164僅有串入左右沒有譯碼作用,因此,在編寫顯示驅動程序之前,首先需要計算列寫出與本程序電路對應的LED段選碼[3],然后由2051的P3.0口送入74LS164的串行輸入端,再并行輸出到LED的段選端。需要指出的是,本電路采用SM110501K型號的共陽極LED數碼管。這種穩定的靜態顯示方式也省去了CPU的動態掃描過程,此為本電路的又一特點。2.3校時電路設計現在,世界上應用的校時系統有諸多個。有運用電話網絡進行校時,尚有運用電視信號的校時系統、衛星校時系統、低頻(長波)導航、授時信號系統、高頻(短波)時號廣播系統、運用互聯網絡校時系統等等方式進行自動校時[12]。本設計采用的是手動校時,即由人根據現在時刻和日期進行校時,從而使時間達成較精確的辦法。手動校時重要運用軟件進行,從而減少了在硬件上的多出以及對電路板空間的更大規定。此辦法即使在時間的精確性上較差,但是其成本最低,也是本設計運用最少材料做出最強功效的初衷。2.4電源設計單片機的供電方式有諸多個,能夠采用電池供電,也能夠采用外圍其它的電源電路進行供電,多個供電方式也都有各自的優缺點。電池供電:能夠節省很大的PCB空間,供電也為直流,不含任何交流成分,但是此供電方式可能會由于電路比較費電而需要經常得更換電池,這樣也變向得提高了本設計的成本,因此本設計不采用此供電方式。外圍供電電路:此辦法可覺得電路提供源源不停強勁的電源,不必為電路供電所緊張;但是此供電方式的電壓純度需要根據外圍電路的設計程度而定,并且如果將此電路設計到PCB上,也會占用很大的空間,違反了本設計簡樸的原則。綜合上面兩種供電方式的優缺點,本設計采用的是運用電腦USB接口進行供電,電腦USB接口供電的最大電流為500mA,并且為穩壓輸出,足夠本設計的需求,并且也不會占用PCB的空間,是一種非常不錯的選擇,同時也是本設計的優點。本設計在電源上的另一種優點是考慮到斷電和狀況,從設計總思路上講,規定斷電后數碼管能夠不顯示,但是時間必須照常進行。考慮到這一點,配合時鐘芯片DS1302的雙電源防斷電的特點,將時鐘芯片的另一種電源端用5V的紐扣電池進行供電,這樣時間就不會由于斷電而重新初始化了。3程序設計軟件設計的重點在于秒信號的產生以及CPU與時鐘芯片之間的通信,顯示的實現及按鍵的解決等方面。基于軟件的秒脈沖信號普通有延時法和定時中斷法。延時法普通采用查詢方式,在延時子程序前后必然需要查詢和解決的程序,造成誤差的產生,因此其秒脈沖的產生,因此秒脈沖的精度不高。中斷法的原理是運用單片機內部的定時器溢出中斷來實現。例如,設定某定時器每100ms中斷1次,這10次的周期為1s,這種實現法的特點是精度高,秒脈沖的發生和其它解決能夠并行進行。[7]本系統即采用這種方式,實現的核心是定時器的工作方式的選擇和定時參數的計算擬定。另外就是借助時鐘芯片,對于調時后的數據送給時鐘芯片并且及時從其中讀出更新后的數據,然后送顯示。具體內容將在原程序中給于闡明。本系統設計中使用的晶振頻率為12MHz。3.1主控模塊設計NYCPU系統初始化開始切換顯示周月日顯示刷新顯示切換?啟動走時主模塊是系統軟件的主框架。構造化程序設計普通有“自上而下”和“自下而上”NYCPU系統初始化開始切換顯示周月日顯示刷新顯示切換?啟動走時圖3-1主模塊的程序框圖3.2基本現實模塊設計基本現實模塊設計的重點是有顯示代碼獲得對應的段碼,顯示段碼數據的串行發送,其程序流程如圖3-2所示。其中,時個位、分個位、秒個位的段碼必須加上小數點,即帶小數點顯示時各位、分個位、秒個位,目的是以小數點符號替代時間分割符“:”,(普通的數碼管無法顯示字符“:”)。關顯示,以免顯示抖動通過串口將時十位段碼送入對應的74LS164將十個位段碼送入對應的74LS164(以小數點替代:)將分十位和個位段碼送入對應的74LS164將百分秒十位和個位段碼送入對應的74LS164打開顯示圖3-2基本顯示模塊的程序流程圖開始3.3現在編輯位閃爍功效的實現關顯示,以免顯示抖動通過串口將時十位段碼送入對應的74LS164將十個位段碼送入對應的74LS164(以小數點替代:)將分十位和個位段碼送入對應的74LS164將百分秒十位和個位段碼送入對應的74LS164打開顯示圖3-2基本顯示模塊的程序流程圖開始閃爍標志為真將顯示全滅段碼送顯示緩沖區閃爍標志為真將顯示全滅段碼送顯示緩沖區將現在設定的時間參數送顯示調用基本顯示程序模塊圖3-3現在編輯位閃爍功效實現的程序流程圖3.4時間設定模塊設計時間設定模塊的設計要點是按鍵的去抖解決。軟件發去抖動的實質是軟件延時,即檢測到某一鍵狀態變化后延時一段時間,再檢測該按鍵的狀態與否還保持著,如果是,則作為按鍵解決,否則,視為抖動,不予理睬。去抖的延時時間一般應不不大于20ms,否則會造成按一次鍵做多次解決,影響程序正常執行。YYYYNYN設立模塊初始化將在編參數送顯示緩沖區將現在位的顯示代碼置暗代碼調基本顯示模塊刷新顯示現在編輯位左(右)移一位結束設定根據現在位的性質分別進行+1/-1/解決(含上下限判斷)NYN返回N圖3-4時間設定模塊流程圖閃爍標志為真?嗎?+1/-1鍵嗎?設立鍵?現在的編輯是時(周)個位嗎設立鍵3.5CPU與時鐘芯片的通信在系統剛剛通電后,CPU將片內初始的數據送給時鐘芯片即2月11日周六11點59分40秒,給時鐘芯片一種初始狀態,然后時鐘芯片按照初始狀態開始進行,再把數據送給CPU然后進行顯示。當調節時間后,CPU將調節后的時刻數據數給時鐘芯片以再次將時鐘芯片初始化,然后時鐘芯片再將從此時刻開始進行計時,并把數據送給CPU進行送顯示。其流程圖如圖3-5CPUCPUDS1302系統復位送初值調節后送值讀取數據DS1302圖3-5CPU與時鐘芯片通信3.6系統調試方式3.6.1系統調試環境本系統全部的電路都設計在一塊電路板上,整個電路板構造緊湊、分布合理,便于加工和調試,并且減少了互相間以及監控器與其它儀器間的干擾。電路焊接好過后進行簡樸的調試、定標過后,系統便能對的、可靠的運行。3.6.2軟件調試 本設計的軟件部分,全部采用C語言編寫,軟件模塊較多,程序代碼較長,因此采用分塊調試的辦法來調試程序。首先用單片機匯編程序編譯器(keiluVision2)調試,無誤后,再通過編程器燒到單片機用裝置實驗調試,采用了自下到上的調試辦法,即先單獨調試好每一項功效,然后再連接成一種完整的系統調試。根據實驗成果和指標對照,若有不符,再修改,直到程序完全對的為止。這樣確保了軟件編寫的對的性和可行性。3.6.3硬件調試將程序燒入AT89S51中,并將其安裝在硬件電路中,然后通電。先調節看按鍵工作與否正常,數碼管與否能正常顯示。在正常待機顯示狀態下,按動顯示狀態切換鍵,看能否進行(時、分、秒和周、月、日之間的)切換,并在兩種顯示示狀態下擦去SET鍵,看能否啟動和關閉校時狀態,最佳在校時狀態按動左移、右移、加鍵和減鍵,驗證其功效與否完善。在調試過程中碰到了諸多的問題:(1)LED不顯示。由于沒有買到PCB板中那種封裝的LED,因此在焊接的時候采用另外一種封裝的LED來替代,采用將從PCB板上的每個管腳連線出來與另外一塊板子上的LED管腳對應相連,由于連線過多,有某些線連錯或者虛焊,在檢查出錯誤后改正。(2)按下按鍵無動作。檢查后發現在焊接過程中輕觸按鍵的內部構造被破壞,不能正常的起到左右,后將其換掉。3.6.4調試成果基本實現了設計的規定,長時間運行容易有誤差,在穩定性方面尚有待改善。

結論/展望我在這一次數字電子鐘的設計過程中,很是受益匪淺。通過對自己在大學三年時間里所學的知識的回憶,并充足發揮對所學知識的理解和對畢業設計的思考及書面體現能力,最后完畢了。這為自己此后進一步深化學習,積累了一定珍貴的經驗。撰寫論文的過程也是專業知識的學習過程,它使我運用已有的專業基礎知識,對其進行設計,分析和解決一種理論問題或實際問題,把知識轉化為能力的實際訓練。培養了我運用所學知識解決實際問題的能力。通過這次課程設計我發現,只有理論水平提高了;才干夠將課本知識與實踐相整合,理論知識服務于教學實踐,以增強自己的動手能力。這個實驗十分故意義我獲得很深刻的經驗。通過這次課程設計,我們懂得了理論和實際的距離,也懂得了理論和實際想結合的重要性,,也從中得知了諸多課本上無法得知的知識。我們的學習不僅要立足于課本,以解決理論和實際教學中的實際問題為目的,還要以實踐相結合,理論問題即實踐課題,解決問題即課程研究,學生自己就是一種專家,通過自己的手來解決問題比用腦子解決問題更加深刻。學習就應當采用理論與實踐結合的方式,理論的問題,也就是實踐性的課題。這種做法現有助于完畢理論知識的鞏固,又有助于帶動實踐,解決實際問題,加強我們的動手能力和解決問題的能力。在實驗過程中,可能會出現這樣或那樣的錯誤,但只要戒躁,安下心來,一步一步檢查電路,多仿真,多嘗試,必要時和同窗多討論,全部問題都會得到解決。特別是在自己嘗試、檢查了多遍,但編譯還錯誤時,更要靜下心來,否則只會使狀況更加糟糕。只有冷靜的心情,睿智的頭腦才干使自己無堅不摧,完美完畢實驗。本次實驗讓我學到了諸多,不僅在知識上,同時也在人格上,使我本身的綜合素質得到了提高。認識到,光有聰穎的頭腦是不夠的,更為重要的是要含有堅韌的毅力和勇于思考問題的品質,同時,團體合作能力、創新精神也是不可或缺的。但愿能有機會多做這樣的實驗,提高自己的綜合素質,加強自己的實踐能力,豐富自己的頭腦,為后來的學習、工作打下結實的基礎。

致謝大學生涯行將結束,但是在那之前我們都必須得完畢畢業設計的工作,快樂的是我在今天完畢了這項工作,現在,我要對老師,同窗,學校,家人體現最真誠的謝意。首先要提到的是我的畢業設計指導老師楊其鋒老師,這是我大學期間接觸最多的老師,他有著熱情活潑的教學方式并對學生體諒負責對工作認真嚴謹。盡管楊老師平時自己也有教學上的任務,但他對我的畢業設計一點也沒有省心同窗的協助也是不能無視的。我是一種比較擅長進行團體工作的人,而畢業設計這樣的任務其實對我來說是很大的考驗,慶幸在我完畢畢業設計的過程中,無論是硬件還是軟件上,本組其它同窗和班級同窗對我提供了很大的協助,我的能力相對較差,沒有他們耐心的協助我確實沒有方法完畢設計任務。最后則要感謝母校四年來提供應我的優質的教學服務和生活,全部任課老師的認真教學,是你們讓我的專業知識得到豐富,父母親對我學習生活上的關心,你們是我永遠的后盾。

參考文獻[1]沈紅衛基于單片機的智能系統設計與實現[M].北京.電子工業出版社,.(70-85)[2]樓然苗51系列單片機設計實例[M].北京.北京航空航天大學出版社,.(23-45)[3]董傳岱數字電子技術[M].石油大學出版社,.(45-63)[4]吳秀清微機原理與接口技術[M].中國科技大學出版社,.(20-35)[5]何立民單片機應用系統設計[M].北京:北京航空航天大學出版社,1995.(55-67)[6]李華.MCS-51系列單片機實用接口技術[M].北京:北京航空航天大學出版社,1990.(46-56)[7]劉飛等兩種數字鐘電路設計比較[J]湖北師范學院學報,2(23)(40-43)[8]胥筱門單片機系統的實驗及應用[J]電子制作1999(6)(20-30)[9]鄭惠芳單片機報時時鐘控制系統的一種設計辦法[J]福建廣播電視大學學報(6)(63-67)[10]張柱濤等基于單片機的多功效智能鐘的設計[A]山東大學學報,5(23)(20-24)[11]AdelS.sedra&KennetchCSmithMicroelectronicCircuits.CBCCollegeOxfordUniversityPress,1998.(122-126)[12]JacobMillman&ArvinGrabel,Microelectronics.McGraw-HillBookCompany;NewYork,.(231-241)[13]DavidA.HodgsandHoraceGjackson.AnalysisendandDesignofDigitalIntegratedCircuits,NewYork,McGraw-Hill,1999.(1123-1133)

附錄附錄A數字鐘系統設計原理圖附圖A數字鐘系統原理圖附錄B系統設計程序#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitACC0=ACC^0;sbitACC7=ACC^7;sbitjiak=P2^3;sbityouyik=P2^2;sbitzuoyik=P2^1;sbitjiank=P2^0;sbitint1k=P3^3;sbitCLK=P3^5;//1302時鐘信號線sbitIO=P3^6;//1302的I/O數據線sbitRST=P3^7;//1302的RST復位線bitflagb=1,xshi=1;//校準,顯示切換標志位voidInputByte(uchar);//輸入1ByteucharOutputByte(uchar);//輸出1BytevoidW1302(uchar,uchar);ucharR1302(uchar);uchartab[6],tabb[6],tabbb[6];voidkey();voiddisplay();voidinit();voiddisplay1();voidinit1();uchara,c,i,b;//c表達中斷次數a表達數碼管移位次數uinttemp;ucharmiao,fen,shi;ucharri,yue,week;uchartab1[7]={0x40,0x59,0x11,0x11,0x02,0x06,0x06};uchartabb1[7]={0x01,0x01,0x01,0x01,0x01,0x01,0x01};ucharcodetab2[10]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,0X80,0X90};ucharcodetabb2[10]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,0X80,0X90};sbitzy=P2^1;ucharflag,zyflag,yyflag;//延時1msvoiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}//往1302寫入1Byted為寫入的數據入口參數voidInputByte(uchardate){ uchari; ACC=date; for(i=8;i>0;i--) { IO=ACC0; CLK=1; CLK=0; ACC=ACC>>1; }}//從1302讀取1Byte數據返回值ACCucharOutputByte(void){ uchari; for(i=8;i>0;i--) { ACC=ACC>>1; ACC7=IO; CLK=1; CLK=0; } return(ACC);}//往1302寫入數據先寫地址后寫數據ucADDucDA是入口參數voidW1302(ucharaddr,uchardate){ RST=0; CLK=0; RST=1; InputByte(addr);//寫地址 InputByte(date);//寫1Byte數據 CLK=1; RST=0;}//讀取1302某地址的數據先寫地址后讀數據ucAddr入口地址ucDa是返回值ucharR1302(ucharaddr){ uchardate; RST=0; CLK=0; RST=1; InputByte(addr);//寫地址 date=OutputByte();//讀1Byte數據 CLK=1; RST=0; return(date);}//初始化設立初始值voidinit(){ uchari1; ucharaddr=0x80; W1302(0x8e,0x00);//控制命令字節WP=0寫操作 for(i1=0;i1<7;i1++) { W1302(addr,tab1[i1]);//秒分時日月星期年 addr+=2; } W1302(0x90,0xa6); W1302(0x8e,0x80);//控制命令字節WP=1寫保?}voidinit1(){ uchari1; ucharaddrb=0x86; W1302(0x8e,0x00);//控制命令字節WP=0寫操作 for(i1=0;i1<7;i1++) { W1302(addrb,tabb1[i1]);//秒分時日月星期年 addrb+=2; } W1302(0x90,0xa6); W1302(0x8e,0x80);//控制命令字節WP=1寫保?}voiddisplay(){ ucharCurtime[7]; uchari,i2; ucharaddr=0x81; for(i2=0;i2<7;i2++) { Curtime[i2]=R1302(addr);//格式秒分時日月星期年 addr+=2; } miao=Curtime[0]; fen=Curtime[1]; shi=Curtime[2]; tab[5]=miao%16; tab[4]=miao/16; tab[3]=fen%16; tab[2]=fen/16; tab[1]=shi%16; tab[0]=shi/16; for(i=0;i<6;i++) { SBUF=tab2[tab[i]]; while(!TI); TI=0; } delay(20);}voiddisplay1(){ ucharCurtime[7]; uchari,i2; ucharaddrb=0x87; for(i2=0;i2<7;i2++) { Curtime[i2]=R1302(addrb);//格式秒分時日月星期年 addrb+=2; } ri=Curtime[0]; yue=Curtime[1]; week=Curtime[2]; tabb[5]=ri%16; tabb[4]=ri/16; tabb[3]=yue%16; tabb[2]=yue/16; tabb[1]=week%16; tabb[0]=week/16; for(i=0;i<6;i++) { SBUF=tabb2[tabb[i]]; while(!TI); TI=0; } delay(20);}//主函數voidmain(){ zyflag=1; display(); if(shi==0x00&&fen==0x00&&miao==0x80)init(); if(week==0x00&&yue==0x00&&ri==0x80)init1(); EA=1; EX1=1; IT1=1; while(1) { if(zuoyik==0){while(!zuoyik);xshi=~xshi;flagb=~flagb;} if(xshi==1) { if(c!=1)display();//時分秒 } else { if(c!=1)display1();//星期月日 } }}voidint1()interrupt2{ while(1) { if(int1k==0) //掃描p3 { delay(20); if(int1k==0) { while(!int1k); W1302(0x8e,0x00); a=1; c++; if(c==2)c=0; } } if(c==1) { if(youyik==0)//掃描鍵盤 { delay(20); if(youyik==0) { while(!youyik); a+=2; if(a==7)a=1; } } if(zuoyik==0) { delay(20); if(zuoyik==0) { while(!zuoyik); if(a==1) a=7; a-=2; } } if(flagb==1) for(i=0;i<6;i++) {tabbb[i]=tab[i]; } else for(i=0;i<6;i++){tabbb[i]=tabb[i]; }; for(i=0;i<6;i++) { if(a==i) { b=a; SBUF=0xff; } elseSBUF=tab2[tabbb[i]]; while(!TI); TI=0; } delay(100); if(b==a) { if(jiak==0) { delay(20); if(jiak==0) { while(!jiak); switch(b) { case1: if(flagb==1) {tab[1]++; if(tab[1]==10) { tab[1]=0; tab[0]++; } if(tab[0]==2&&tab[1]==4) { tab[0]=0; tab[1]=0; } shi=tab[0]*10+tab[1]; W1302(0x84,(shi/10)*16+shi%10); break; } else {tabb[1]++; if(tabb[1]==8) { tabb[1]=1; tabb[0]=0; } if(tabb[0]==0&&tabb[1]==8) { tabb[0]=0; tabb[1]=0; } week=tabb[0]*10+tabb[1]; W1302(0x8a,(week/10)*16+week%10); break; } case3: if(flagb==1) {tab[3]++; if(tab[3]==10) { tab[3]=0; tab[2]++; } if(tab[2]==6&&tab[3]==0) { tab[2]=0; tab[3]=0; } fen=tab[2]*10+tab[3]; W1302(0x82,(fen/10)*16+fen%10); break; } else {tabb[3]++; if(tabb[3]==10) { tabb[3]=0; tabb[2]++; } if(tabb[2]==1&&tabb[3]==3) { tabb[2]=0; tabb[3]=1; } yue=tabb[2]*10+tabb[3]; W1302(0x88,(yue/10)*16+yue%10); break; } case5: if(flagb==1) {tab[5]++; if(tab[5]==10) {

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論