畢業(yè)論文基于MCS51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)_第1頁(yè)
畢業(yè)論文基于MCS51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)_第2頁(yè)
畢業(yè)論文基于MCS51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)_第3頁(yè)
畢業(yè)論文基于MCS51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)_第4頁(yè)
畢業(yè)論文基于MCS51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、JIU JIANG UNIVERSITY 畢 業(yè) 論 文 (設(shè) 計(jì))題 目 基于MCS-51單片機(jī)的數(shù)字電子鐘設(shè)計(jì) 英文題目 Digital clock based on MCU 院 系 電子工程學(xué)院 專 業(yè) 電子信息工程 姓 名 年 級(jí) 指導(dǎo)教師 二零一四年十二月摘 要當(dāng)今社會(huì)數(shù)字鐘應(yīng)用非常普遍,像日常家用最普通的時(shí)鐘,用于計(jì)時(shí)和設(shè)置鬧鐘,雖然功能較少,但是卻是我們最重最實(shí)用的電子產(chǎn)品之一。這次我要做的就是這個(gè)雖然相對(duì)簡(jiǎn)單但是卻十分具有意義的具有校準(zhǔn)時(shí)間和計(jì)時(shí)的數(shù)字電子鐘。由MCS-51單片機(jī)作為數(shù)字電子鐘的核心控制器,數(shù)碼管作為顯示模塊,可以顯示我們需要的“時(shí),分,秒”。按鍵作為調(diào)節(jié)時(shí)間的

2、模塊,通過按鍵我們可以進(jìn)行時(shí)間校準(zhǔn),定時(shí)功能。講完硬件這個(gè)最基本最重要的東西之后,接下來我們講講軟件方面,軟件可以說是一個(gè)電子產(chǎn)品的靈魂,通過編程我們可以擴(kuò)展更多的更實(shí)用的功能。像蘋果公司推出的第一款智能手表就是以電子鐘作為基礎(chǔ)再加入了更多編程。相信我也可以把基礎(chǔ)東西做的如此優(yōu)秀?!娟P(guān)鍵詞】MCS-51,單片機(jī),數(shù)碼管 AbstractDigital clock is widely used in todays society,like the daily household most oridinary clock,it can be used for time and set the al

3、arm,Although it is less functional,But it is our most heavy one of the most practical electronic products.This is what I want to do this while the digital electronic clock with time calibrating and timing is relatively simple but very meaningful.Digital clock is the microcontroller MCS-51 as the cor

4、e component,digital tube as display module,it can shows“hours,minutes,seconds”.Key as the adjusting time module,through the button we can calibrate time.Finished the hardware of the most basic and the most important thing,next we talk about the software,the software can be said to be a grateful elec

5、tronic products of the soul,through software programming we can expand more practical function.Apple Corp launched the rirst intelligent Appwatch is based on the electronic clock and adding more programming.I believe i can get things done so good foundation.keywords MCS-51,MCU,Digital tube摘 要IIABSTR

6、ACTII前 言II第1章 緒論II1.1 單片機(jī)的認(rèn)識(shí)II1.2 單片機(jī)的發(fā)展史及趨勢(shì)II第2章各個(gè)模塊介紹及作用II2.1 8051單片機(jī)模塊II2.2 數(shù)碼管顯示模塊II2.2.1 數(shù)碼管的介紹II2.2.2 多位數(shù)碼管顯示原理II2.3 電子鐘實(shí)現(xiàn)系統(tǒng)框圖II2.4 電子鐘系統(tǒng)原理圖II第3章軟件開發(fā)KEIL C51的介紹II第4章硬件仿真PROTUS的介紹II第5章硬件電路設(shè)計(jì)II5.1 電源電路II5.2 按鍵電路III5.2.1 復(fù)位電路III5.2.2 調(diào)節(jié)電路III5.3 數(shù)碼管顯示電路III5.4 時(shí)鐘電路III第6章系統(tǒng)軟件設(shè)計(jì)III6.1程序流程圖III6.1.1 電子

7、鐘系統(tǒng)主程序流程圖III6.1.2 電子鐘系統(tǒng)中斷程序流程圖III6.2 應(yīng)用程序設(shè)計(jì)III第7章 電路仿真設(shè)計(jì)III結(jié)束語(yǔ)III參考文獻(xiàn)III致 謝III前 言自從單片機(jī)問世后,由于因特爾公司的MCS-51系列單片機(jī)成熟穩(wěn)定功能齊全易學(xué)好用,不但具有較多的I/O引腳,較大的內(nèi)存空間,較快的運(yùn)算速度,還提供全雙工的串行接口。由于接線簡(jiǎn)單,體積小巧,作用甚廣,所以被廣泛應(yīng)用于家電產(chǎn)品,事務(wù)機(jī)器,醫(yī)療器械以及汽車中,如微波爐,電磁爐,復(fù)印機(jī),傳真機(jī),汽車電子點(diǎn)火等,都是單片機(jī)的功勞.這次我做的課題是日常生活中的數(shù)字電子鐘,我們都知道“時(shí)”是二十四小時(shí)制,“分”是六十進(jìn)制,“秒”也是六十進(jìn)制的,具有

8、最平常的時(shí)鐘所具有的功能,在此基礎(chǔ)上我拓展了定時(shí)鬧鐘功能,并且添加時(shí)鐘萬(wàn)年歷使得這個(gè)數(shù)字時(shí)鐘更加智能并且更加人性化。第1章 緒論1.1 單片機(jī)的認(rèn)識(shí)單片微型計(jì)算機(jī)簡(jiǎn)稱為單片機(jī),又稱為微控制器,是微型計(jì)算機(jī)的一個(gè)重要分支。單片機(jī)利用半導(dǎo)體集成技術(shù)將中央處理單元CPU和一定容量的數(shù)據(jù)存儲(chǔ)器RAM、程序存儲(chǔ)器ROM、定時(shí)器/計(jì)數(shù)器T/C、并行輸入輸出接口I/O和串行通信接口等多個(gè)功能部件集成在一塊芯片上,是一臺(tái)具有完整計(jì)算機(jī)功能的大規(guī)模集成電路。單片機(jī)外部只要接上少許器件即可動(dòng)作,所以接線簡(jiǎn)單,可靠性高,不論裝配或檢修都容易,由于外部器件甚少所以非常適合用于學(xué)習(xí),并且價(jià)格低廉。現(xiàn)在市面上主要都是因特

9、爾公司生產(chǎn)的MCS系列的單片機(jī)。其中又以51單片機(jī)尤為突出,目前它廣泛用于教學(xué)方面。1.2 單片機(jī)的發(fā)展史及趨勢(shì)單片機(jī)的發(fā)展可分為5個(gè)階段:第一階段為初級(jí)階段。由于當(dāng)時(shí)工藝技術(shù)的簡(jiǎn)單,此時(shí)的單片機(jī)一般都是采用雙片形式。功能也相對(duì)比較簡(jiǎn)單。第二階段為低性能階段。此時(shí)的單片機(jī)不僅小而且全。主要就是英特爾公司推出的MCS-48系列單片機(jī)。它是一個(gè)真正的8位單片微機(jī),此時(shí)英特爾把單片機(jī)推向市場(chǎng)的廣泛使用。就此促進(jìn)了單片機(jī)的改革。第三階段為高性能階段。此時(shí)的單片機(jī)不僅種類繁多而且功能齊全,一般片內(nèi)RAM、ROM都相對(duì)增大,尋址范圍達(dá)到64K,并配有串行口,還可以進(jìn)行多級(jí)中斷處理。如英特爾公司的MCS-5

10、1系列單片機(jī)。第四階段為16位單片機(jī)階段。芯片集成度高達(dá)12萬(wàn)只晶體管(片)。其最大特點(diǎn)是增加了內(nèi)部資源,實(shí)時(shí)處理能力更強(qiáng)。第五階段單片機(jī)在集成度,功能實(shí)現(xiàn),運(yùn)算速度,可靠性等方面向更高水平發(fā)展。單片機(jī)從之前的簡(jiǎn)單向復(fù)雜化發(fā)展。近幾年一些公司推出了以MCS-51為內(nèi)核,獨(dú)具特色而性能卓越的新型系列單片機(jī),從各種新型單片機(jī)的性能上可以看出,單片機(jī)正朝著多層次用戶的多品種、多規(guī)格、高性能的方向發(fā)展,高檔單片機(jī)性能不斷提高,如CPU功能加強(qiáng),內(nèi)部資源的增加,尋址范圍的增加,并且單片機(jī)的體積會(huì)越來越小,功耗越來越低,價(jià)格會(huì)越來越低。這些是現(xiàn)在可預(yù)見的。第2章 各個(gè)模塊介紹及作用2.1 8051單片機(jī)模

11、塊(1) 中央處理器CPU是單片機(jī)最核心的部分,他能夠?qū)崿F(xiàn)算術(shù)運(yùn)算與邏輯運(yùn)算的運(yùn)算器和協(xié)調(diào)工作的控制器兩部分電路。運(yùn)算器包括ALU(算術(shù)邏輯單元)、ACC(累加器A)、PSW(程序狀態(tài)寄存器)、寄存器B及暫存器TMP1和暫存器TMP2等。控制器包括PC(程序控制器)、PC增1、指令寄存器、指令譯碼器及即使控制器等。(2) 內(nèi)部數(shù)據(jù)存儲(chǔ)器包括128B RAM和RAM地址寄存器等。實(shí)際上,8051內(nèi)部有256個(gè)RAM,其中的后128個(gè)單元RAM被特殊功能寄存器使用,用戶可以通過特殊功能寄存器去使用它;前128個(gè)單元RAM用戶直接使用。通常所說的RAM單元指的是前128單元,稱為“內(nèi)部RAM”或“片

12、內(nèi)RAM”。(3) 內(nèi)部程序存儲(chǔ)器。8051內(nèi)部含有4KB ROM單元,之所以稱為程序存儲(chǔ)器是因?yàn)樗话阌脕泶娣懦绦蚝驮紨?shù)據(jù),簡(jiǎn)稱“內(nèi)部ROM”或“片內(nèi)ROM”。(4) 并行I/O口。8051提供4個(gè)8位I/O口,分別為P0、P1、P2和P3,實(shí)現(xiàn)數(shù)據(jù)的輸入與輸出。在系統(tǒng)擴(kuò)展時(shí),P2和P0口作為地址總線,最大尋址空間達(dá)64KB,P0作為數(shù)據(jù)總線。(5) 定時(shí)器/計(jì)數(shù)器。8051內(nèi)部有兩個(gè)16位定時(shí)器/計(jì)數(shù)器,用以實(shí)現(xiàn)定時(shí)和計(jì)數(shù)功能。(6) 串行口。8051內(nèi)部有一個(gè)全雙工的串行口,可實(shí)現(xiàn)數(shù)據(jù)的串行傳輸。(7) 中斷控制。8051內(nèi)部提供了5個(gè)中斷源,可分為兩個(gè)優(yōu)先級(jí)別處理。(8) 時(shí)鐘電路。

13、一般都是通過外接石英晶體和微調(diào)電容,石英晶體可以通過物理形變產(chǎn)生時(shí)鐘脈沖序列。XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。2.2數(shù)碼管顯示模塊2.2.1數(shù)碼管的介紹 圖2-2-1數(shù)碼管介紹LED數(shù)碼管是日常生活中最常見的一種顯示器件,由于其體積小,能耗低并且成本十分小,我們可以利用其許多的優(yōu)點(diǎn)為我們做很多有趣的是,例如七段數(shù)碼管就是通過幾個(gè)數(shù)碼管拼接在一起形成的用來顯示數(shù)字的很有用的器件,我們還可以通過拼接顯示字母漢字等等。按內(nèi)部連接方式數(shù)碼管可分為共陰數(shù)碼管和共陽(yáng)數(shù)碼管。而且數(shù)碼管有多種多樣的顏色,包括黃色,紅色,綠色都是我們生活中最常見的顏色??偠灾?,缺少LED我們的世界

14、就沒有光明存在。 圖2-2-2 共陰極數(shù)碼管 圖2-2-3 共陽(yáng)極數(shù)碼管由于八個(gè)發(fā)光二極管共有16個(gè)引腳,為了減少數(shù)碼管的引腳數(shù),在數(shù)碼管內(nèi)部將八個(gè)發(fā)光二極管正極或負(fù)極引腳連接起來,接成一個(gè)公共端(COM),根據(jù)公共端是發(fā)光二極管正極還是負(fù)極,可分為共陰極接法(圖2-3)和共陽(yáng)極接法(圖2-4)。對(duì)于共陽(yáng)極接法的數(shù)碼管,需要給發(fā)光二極管加低電平才能發(fā)光;而對(duì)于共陰極接法的數(shù)碼管,需要給發(fā)光二極管加高電平才能發(fā)光。2.2.2 多位數(shù)碼管顯示原理多位LED數(shù)碼管采用了掃描顯示方式,又稱為動(dòng)態(tài)驅(qū)動(dòng)方式,是將所有數(shù)碼管八位顯示筆劃“A,B,C,D,E,F,G,DP”同名端連在一起。多位數(shù)碼管數(shù)字是一位

15、一位顯示出來的,通過控制公共極選通控制電路,就可以選定要點(diǎn)亮的數(shù)碼管。這個(gè)就是我們所說的位選,只要這時(shí)我們?cè)佥斎胛覀冃枰@示數(shù)字的字形碼,我們選中的數(shù)碼管就會(huì)現(xiàn)實(shí)我們需要的數(shù)字,其他數(shù)碼管的顯示是由于人眼視覺暫留效應(yīng),這是需要一定時(shí)間的,我們就是通過這段時(shí)間再去選其它位,之后在一樣的輸入我們需要的字形碼,這樣我們就可以隨便顯示多少位的數(shù)碼管了并且隨便現(xiàn)實(shí)我們需要現(xiàn)實(shí)的數(shù)字或字符了。2.3電子鐘實(shí)現(xiàn)系統(tǒng)框圖數(shù)字電子鐘實(shí)現(xiàn)系統(tǒng)框圖如圖2.3,它由單片機(jī)8051作為核心控制元件,蜂鳴器電路,晶振電路,復(fù)位電路,按鍵電路,數(shù)碼管驅(qū)動(dòng)及顯示電路這幾個(gè)模塊組成。對(duì)于時(shí)鐘顯示我們采用動(dòng)態(tài)掃描方式,可以降低系

16、統(tǒng)功耗,并且達(dá)到預(yù)期效果,單片機(jī)控制顯示時(shí)分秒的顯示。數(shù)碼管驅(qū)動(dòng)顯示電路 按鍵電路單片機(jī) 復(fù)位電路 晶振電路蜂鳴器電路 圖2-3系統(tǒng)實(shí)現(xiàn)框圖2.4 數(shù)字鐘系統(tǒng)原理圖 圖2-4 數(shù)字鐘原理圖電子鐘系統(tǒng)原理圖如圖2.4所示,單片機(jī)的管腳分配:P0口為數(shù)碼管的數(shù)據(jù)信號(hào)口,P3口為數(shù)碼管的位選信號(hào),P1.0、P1.1、P1.2、P1.3為鍵盤的輸入信號(hào)。電子鐘時(shí)鐘系統(tǒng)設(shè)計(jì)原理圖說明:八位數(shù)碼管顯示的字樣XX.XX.XX,對(duì)應(yīng)的是時(shí)-分-秒。4個(gè)按鍵分別為SECOND:秒設(shè)置;MINUTE:分設(shè)置;HOUR:時(shí)設(shè)置;ALARM SET:定時(shí)設(shè)置鍵。如果到了設(shè)定的時(shí)間蜂鳴器工作,發(fā)出響聲。第3章 軟件開發(fā)

17、KEIL C51的介紹KEIL C51是美國(guó)KEIL SOFTWARE公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng)。C51工具包的UVISION與ISHELL分別是C51 FOR WINDOWS 和FOR DOS的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其他編譯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)BL51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的HEX文件,以供調(diào)試器DSCOPE51或TSCOPE51使

18、用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可直接寫入程序存儲(chǔ)器中。第4章 硬件仿真PROTUS的介紹PROTEUS軟件是英國(guó)公司出版社的EDA工具軟件,它是目前最好的模擬單片機(jī)外圍器件工具。PROTEUS軟件具有其他EDA工具軟件的功能,例如:原理布圖,PCB自動(dòng)或人工布圖,SPICE電路仿真。其具有的革命性特點(diǎn)是其他軟件所不具備的,像互動(dòng)的電路仿真和仿真51系列、AVR、PIC等常用的MCU及外圍電路(如LCD、RAM、ROM、鍵盤、馬達(dá)、LED、AD/DA、部分SPI器件、部分IIC器件等)。它的應(yīng)用范圍十分廣泛,十分適合我們初級(jí)教學(xué),應(yīng)該說沒有任何軟件能夠代替它在教學(xué)方

19、面的優(yōu)勢(shì)。第5章 硬件電路設(shè)計(jì)5.1電源電路電源電路負(fù)責(zé)向單片機(jī)供電。我們都知道51單片機(jī)工作電壓為4.0V-5.5V,所以一般都是電源選擇5V直流電源。但是我們?nèi)粘I疃际?20V電壓,這就需要將220V交流電轉(zhuǎn)化成為5V的直流電壓。有兩個(gè)方法可以實(shí)現(xiàn)5V電壓,一個(gè)是采用變壓器,橋式整流器,電容,穩(wěn)壓器構(gòu)成一個(gè)電路,通過變壓器可以將220V電壓變?yōu)?V,在通過橋式整流器整流,電容器濾波,穩(wěn)壓器可以穩(wěn)定輸出電壓。這樣我們就得到了穩(wěn)定的5V直流電壓。還有一個(gè)方法得到5V電壓是電腦的USB輸出,這個(gè)最為簡(jiǎn)單。5.2 按鍵電路5.2.1 復(fù)位電路51單片機(jī)的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。復(fù)位引腳R

20、EST通過一個(gè)觸發(fā)器與復(fù)位電路連接。上電復(fù)位電路是一種簡(jiǎn)單的復(fù)位電路,只要在REST復(fù)位引腳接一個(gè)電容到VCC,一個(gè)電阻接地即可,剛開機(jī)時(shí)因?yàn)閂CC上有5V電壓,因?yàn)殡娙輧啥穗妷翰荒芡蛔兊奶匦?,REST腳的電壓也被拉到5V,但是因?yàn)镽EST腳又通過電阻下拉,電阻兩端有電壓差,電容緩慢通過電阻對(duì)地放電,所以電壓緩慢降低最后變成低電平。 5.2.1 復(fù)位電路5.2.2 調(diào)節(jié)電路按鍵開關(guān)狀態(tài)通過一定的電路轉(zhuǎn)換為高低電平狀態(tài)。按鍵按下和釋放都要經(jīng)過一定的過程才能達(dá)到穩(wěn)定,這就是我們通常說的按鍵抖動(dòng),我們需要解決按鍵抖動(dòng)這個(gè)對(duì)實(shí)驗(yàn)有一定影響的因素,我采用的是獨(dú)立式按鍵用來消抖。直接用I/O口線構(gòu)成單個(gè)按

21、鍵電路,每個(gè)按鍵占用一條I/O口線,每個(gè)按鍵工作狀態(tài)不會(huì)彼此產(chǎn)生影響。并且我設(shè)置了四個(gè)按鍵,用來進(jìn)行調(diào)時(shí)以及定時(shí)用。P1.0低電平時(shí)表示有按鍵按下,就進(jìn)行時(shí)鐘的調(diào)秒,高電平時(shí)停止調(diào)節(jié)。P1.1低電平時(shí)表示有按鍵按下,就進(jìn)行時(shí)鐘的調(diào)分,高電平時(shí)停止調(diào)節(jié)。P1.2低電平時(shí)表示有按鍵按下,就進(jìn)行時(shí)鐘的調(diào)時(shí),高電平時(shí)停止調(diào)節(jié)。P1.3低電平時(shí)表示有按鍵按下,就進(jìn)行時(shí)鐘的定時(shí),高電平時(shí)停止調(diào)節(jié)。 5.3 數(shù)碼管顯示電路 由于也要顯示數(shù)字電子鐘的所有功能,所以我們需要八個(gè)數(shù)碼管,最左邊兩個(gè)用來顯示時(shí)鐘的時(shí),之后第三個(gè)橫杠代表間隔,中間顯示時(shí)鐘的分,再橫杠間隔,之后就是時(shí)鐘的秒。通過這樣設(shè)計(jì)可以很好的顯示出

22、時(shí)鐘的我們需要的時(shí)鐘功能。之后就是處理器做的事情了。 5.4時(shí)鐘電路 時(shí)鐘是單片機(jī)的最重要的核心部件之一,因?yàn)閱纹瑱C(jī)所有的部件都是根據(jù)單片機(jī)內(nèi)的時(shí)鐘脈沖發(fā)出信號(hào)然后才開始穩(wěn)定的工作,時(shí)鐘的穩(wěn)定工作單片機(jī)才可以穩(wěn)定工作,所以時(shí)鐘電路是相當(dāng)重要的電路。還有時(shí)鐘頻率的不同決定了單片機(jī)工作的效率,時(shí)鐘頻率越高工作越快反之亦然。常見的時(shí)鐘電路由兩種方式組成:一種是內(nèi)部時(shí)鐘方式,另一種是外部時(shí)鐘方式。 5.4時(shí)鐘電路第6章 系統(tǒng)軟件設(shè)計(jì)6.1 程序流程圖6.1.1 電子鐘系統(tǒng)主程序流程圖開始初始化進(jìn)入功能程序調(diào)用顯示子程序鍵按下Y整點(diǎn)到?N N調(diào)用顯示子程序Y6.1.2 電子鐘系統(tǒng)中斷程序流程圖定時(shí)器T0

23、用于時(shí)間計(jì)時(shí)定時(shí)溢出周期為50ms,中斷進(jìn)入后先進(jìn)行定時(shí)中斷初值校正,當(dāng)中斷累計(jì)20次時(shí),對(duì)秒計(jì)數(shù)單元進(jìn)行加1操作。時(shí)鐘計(jì)數(shù)單元地址秒,分,時(shí)分別在70H-71H、76H-77H、78H-79H中,最大計(jì)時(shí)值為23時(shí)59分59秒。在計(jì)數(shù)單元采用十進(jìn)制BCD碼計(jì)數(shù),滿10進(jìn)位。T0中斷 保護(hù)現(xiàn)場(chǎng)定時(shí)初值校正1s到?加1s處理恢復(fù)現(xiàn)場(chǎng),中斷返回定時(shí)器T1中斷程序用于指示時(shí)間調(diào)整單元數(shù)字的閃亮或秒表技術(shù),在時(shí)間調(diào)整狀態(tài)下,每過0.3s左右,將對(duì)應(yīng)調(diào)整單元的顯示數(shù)據(jù)換成“熄燈符”數(shù)據(jù)(#0AH)。這樣,在調(diào)整時(shí)間時(shí),對(duì)應(yīng)調(diào)整單元的顯示數(shù)據(jù)會(huì)間隔閃亮。在作秒表計(jì)時(shí)時(shí),每10s中斷一次,計(jì)數(shù)單元加1,每1

24、00s次為1s。秒表計(jì)數(shù)單元地址在60H-61H(10ms)、62H-63H(秒)、64H-65H(分)中,最大計(jì)數(shù)值為99分59.99秒。 T1中斷保護(hù)現(xiàn)場(chǎng)秒表/閃爍加10ms處理閃爍處理恢復(fù)現(xiàn)場(chǎng),中斷返回6.2 應(yīng)用程序設(shè)計(jì)#include <AT89X51.h>#define SEG_DAT P0#define SEG_BIT P2#define DS_DAT P0#define DS_SEC 0x00#define DS_MIN 0x02#define DS_HOR 0x04#define DS_WEK 0x06#define DS_DAY 0x07#define DS_M

25、ON 0x08#define DS_YER 0x09#define DS_R_A 0x0A#define DS_R_B 0x0B#define DS_R_C 0x0C#define DS_R_D 0x0D#define DS_Y_S 0x0E /年千百位#define CNT_M 30 /控制閃爍速度,為偶數(shù)#define BCD_DEC(X) (X & 0xF0) >> 4) * 10 + (X & 0x0F)#define DEC_BCD(X) (X / 10) << 4) | (X % 10)sbit DS_DS = P30;sbit DS_RW

26、= P31;sbit DS_AS = P32;sbit DS_CS = P33; sbit KEY1 = P10;sbit KEY2 = P11;sbit KEY3 = P12;sbit KEY4 = P13;unsigned char dispMode = 0; /顯示模式unsigned char modify = 0; /修改模式unsigned char count = 0; /修改模式下閃爍計(jì)數(shù)unsigned char DIS6;unsigned char code C_DAT= 0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*

27、4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0xBF,/*-*/;unsigned char code C_BIT=0xDF,0xEF,0xF7,0xFB,0xFD,0xFE;void Delay(unsigned int t) unsigned int a,b; for (a=0; a<t; a+) for (b=0; b<123; b+);void DS12887_Write(unsigned char addres,unsigned char dat) DS_AS = 1; DS_DS = 1; DS_

28、RW = 1; DS_CS = 0; DS_DAT = addres; DS_AS = 0; /add will be write when AS full down DS_RW = 0; DS_DAT = dat; DS_RW = 1; DS_AS = 1; DS_CS = 1;unsigned char DS12887_Read(unsigned char addres) unsigned char d; DS_AS = 1; DS_DS = 1; DS_RW = 1; DS_CS = 0; DS_DAT = addres; DS_AS = 0; DS_DS = 0; DS_DAT = 0

29、xFF; d = DS_DAT; DS_DS = 1; DS_AS = 1; DS_CS = 1; return d;void DS12887_Init(void) if (DS12887_Read(DS_Y_S) = 0) DS12887_Write(DS_Y_S, 0x20); DS12887_Write(DS_HOR, 0x12); DS12887_Write(DS_R_A, 0x20); DS12887_Write(DS_R_B, 0x02); /BCD void Display(void) unsigned char i; if (dispMode = 0) /顯示模式0,時(shí)分秒 i

30、 = DS12887_Read(DS_HOR) & 0x7F; DIS0 = C_DATi >> 4; DIS1 = C_DATi & 0x0F & 0x7F; i = DS12887_Read(DS_MIN); DIS2 = C_DATi >> 4; DIS3 = C_DATi & 0x0F & 0x7F; i = DS12887_Read(DS_SEC); DIS4 = C_DATi >> 4; DIS5 = C_DATi & 0x0F & 0x7F; if (modify != 0 &&a

31、mp; count > CNT_M) /修改模式123下閃爍 DIS2 * (modify - 1) = 0xFF; DIS2 * (modify - 1) + 1 = 0xFF; else if (dispMode = 1) /顯示模式1年 DIS0 = 0xFF; i = DS12887_Read(DS_Y_S); /年高兩位,在RAM里0x0E DIS1 = C_DATi >> 4; DIS2 = C_DATi & 0x0F; i = DS12887_Read(DS_YER); /年低兩位 DIS3 = C_DATi >> 4; DIS4 = C_D

32、ATi & 0x0F; DIS5 = 0xFF; if (modify != 0 && count > CNT_M) /修改模式45下閃爍 DIS2 * (modify - 4) + 1 = 0xFF; DIS2 * (modify - 4) + 2 = 0xFF; else if (dispMode = 2) /顯示模式2,月日 星期 i = DS12887_Read(DS_MON); /月 if (i < 10) DIS0 = 0xFF; else DIS0 = C_DATi >> 4; DIS1 = C_DATi & 0x0F &a

33、mp; 0x7F; /顯示小數(shù)點(diǎn) i = DS12887_Read(DS_DAY); /日 DIS2 = C_DATi >> 4; DIS3 = C_DATi & 0x0F; i = DS12887_Read(DS_WEK); /星期 DIS4 = C_DAT10; /用'-'隔開 DIS5 = C_DAT(i - 1) & 0x0F; /17,第一天是星期天 if (modify != 0 && count > CNT_M) /修改模式789下閃爍 if (modify != 9) /星期修改時(shí),-不閃爍 DIS2 * (mo

34、dify - 7) = 0xFF; DIS2 * (modify - 7) + 1 = 0xFF; for (i=0; i<6; i+) SEG_DAT = DISi; SEG_BIT = C_BITi; Delay(1); SEG_BIT = 0xFF; count+; /用于修改模式下閃爍if (count > 2 * CNT_M)count = 0; /*計(jì)算當(dāng)月的天數(shù)*/unsigned char getDay(void) unsigned char tYear,tMonth; tYear = BCD_DEC(DS12887_Read(DS_YER); /當(dāng)前年 tMont

35、h = BCD_DEC(DS12887_Read(DS_MON);/當(dāng)前月 switch (tMonth) case 1: case 3: case 5: case 7: case 8: case 10: case 12:return 31; /1、3、5、7、8、10、12 月均為31天 case 4: case 6: case 9: case 11:return 30; /4、6、9、11 月均為30天 case 2: if (tYear%4=0) /2月閏年為29天 return 29; else return 28; /平年為28天 default: return 0; void Ke

36、y(void) unsigned char i; P1 = 0xFF; if (KEY1 = 0) /顯示模式更改 Delay(10); if (KEY1 = 0) if (modify)/修改模式下用于退出修改modify = 0;else DS12887_Write(DS_R_B, 0x62);dispMode+;if (dispMode > 2)dispMode = 0; while (KEY1 = 0) Display(); if (KEY2 = 0) /修改模式 Delay(10); if (KEY2 = 0) if (modify = 0) /時(shí)分秒123,年45,月日星期7

37、89 modify = 3 * dispMode + 1; DS12887_Write(DS_R_B, 0xE2); else modify+; switch (dispMode) /根據(jù)顯示模式確定modify初值 case 0: case 2: if (modify > (3 * dispMode + 3) /時(shí)分秒,日星期模式下每個(gè)是3位 modify = 0; DS12887_Write(DS_R_B, 0x62); break; case 1: if (modify > (3 * dispMode + 2) /年模式下是2位 modify = 0; DS12887_Wri

38、te(DS_R_B, 0x62); break; while (KEY2 = 0) Display(); if (KEY3 = 0) /+ Delay(10); if (KEY3 = 0) switch (modify) case 1: /時(shí) i = BCD_DEC(DS12887_Read(DS_HOR); i+; if (i > 23) i = 0; DS12887_Write(DS_HOR, DEC_BCD(i); break; case 2: /分 i = BCD_DEC(DS12887_Read(DS_MIN); i+; if (i > 59) i = 0; DS1288

39、7_Write(DS_MIN, DEC_BCD(i); break; case 3: /秒 i = BCD_DEC(DS12887_Read(DS_SEC); i+; if (i > 59) i = 0; DS12887_Write(DS_SEC, DEC_BCD(i); break; case 4: /年高兩位 i = BCD_DEC(DS12887_Read(DS_Y_S); i+; if (i > 21) i = 19; DS12887_Write(DS_Y_S, DEC_BCD(i); break; case 5: /年低兩位 i = BCD_DEC(DS12887_Rea

40、d(DS_YER); i+; if (i > 99) i = 0; DS12887_Write(DS_YER, DEC_BCD(i); break; case 7: /月 i = BCD_DEC(DS12887_Read(DS_MON); i+; if (i > 12) i = 1; DS12887_Write(DS_MON, DEC_BCD(i); break; case 8: /日 i = BCD_DEC(DS12887_Read(DS_DAY); i+; if (i > getDay() i = 1; DS12887_Write(DS_DAY, DEC_BCD(i); break; case 9: /星期 i = BCD_DEC(DS12887_Read(DS_WEK); i+; if (i > 7) i = 1; DS12887_Write(DS_WEK, DEC_BCD(i); break; while (KEY3 = 0) Display(); if (KEY4 = 0) /- Delay(10); if (KEY4 = 0) switch (modify) case 1: /時(shí) i = BCD_DEC(DS12887_Read(DS_HOR); if (i = 0) i =

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論