單片機(jī)課設(shè)(完整版)(共27頁)_第1頁
單片機(jī)課設(shè)(完整版)(共27頁)_第2頁
單片機(jī)課設(shè)(完整版)(共27頁)_第3頁
單片機(jī)課設(shè)(完整版)(共27頁)_第4頁
單片機(jī)課設(shè)(完整版)(共27頁)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上摘 要近幾年,單片機(jī)在各個(gè)領(lǐng)域得到廣泛的應(yīng)用。從工業(yè)到人們的日常生活,大部分的科技產(chǎn)品都是通過單片機(jī)來控制。在它問世之前,自動(dòng)控制設(shè)備得不到廣泛的應(yīng)用,這是因?yàn)榭刂圃O(shè)備的體積龐大,耗電量大,價(jià)格昂貴。在第一臺(tái)微處理器成功研制不久,第一個(gè)單片機(jī)就問世了。因?yàn)槠湫∏傻捏w積,低功耗,以及高效的性能,單片機(jī)受到了大家的歡迎。本設(shè)計(jì)利用Atmel公司的AT89C52單片機(jī)對電子時(shí)鐘進(jìn)行開發(fā),設(shè)計(jì)了實(shí)現(xiàn)所需功能的硬件電路,應(yīng)用C語言進(jìn)行軟件編程,并用Proteus軟件進(jìn)行演示、驗(yàn)證。主要介紹用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)電子時(shí)鐘的方法,本設(shè)計(jì)由單片機(jī)AT89C52芯片為核心,輔

2、以必要的電路,構(gòu)成了一個(gè)單片機(jī)的數(shù)字電子時(shí)鐘。它的計(jì)時(shí)周期為24小時(shí),顯滿刻度為“23時(shí)59秒”,且配有4個(gè)獨(dú)立按鍵,可以靈活地調(diào)節(jié)時(shí)間和日期,并具有一定的擴(kuò)展性。 關(guān)鍵詞:單片機(jī);數(shù)字電子鐘;數(shù)碼管驅(qū)動(dòng)顯示電路。 目錄004專心-專注-專業(yè)1簡介1.1基于單片機(jī)的數(shù)字鐘介紹1.單片機(jī)的介紹:“單片機(jī)”就是將計(jì)算機(jī)的基本部件集成到一塊芯片上,包括CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、并行口(Parallel Port)、串行口(Serial Port)、定時(shí)器計(jì)數(shù)器(Timer/

3、Counter)、中斷系統(tǒng)(Interrupt System)、系統(tǒng)時(shí)鐘及系統(tǒng)總線等。計(jì)算機(jī)系統(tǒng)已明顯地朝巨型化、單片化、網(wǎng)絡(luò)化三個(gè)方向發(fā)展。巨型化發(fā)展的目的在于不斷提高計(jì)算機(jī)的運(yùn)算速度和處理能力,以解決復(fù)雜系統(tǒng)計(jì)算和高速數(shù)據(jù)處理,比如系統(tǒng)仿真和模擬、實(shí)時(shí)運(yùn)算和處理。單片化是把計(jì)算機(jī)系統(tǒng)盡可能集成在一塊半導(dǎo)體芯片上,其目的在于計(jì)算機(jī)微型化和提高系統(tǒng)的可靠性,這種單片計(jì)算簡稱單片機(jī)。單片機(jī)的內(nèi)部硬件結(jié)構(gòu)和指令系統(tǒng)主要是針對自動(dòng)控制應(yīng)用而設(shè)計(jì)的所以單片機(jī)又稱微控制器MCU(Micro Controller Unit)。用它可以很容易地將計(jì)算機(jī)嵌入到各種儀器和現(xiàn)場控制設(shè)備中,因此單片機(jī)又叫做嵌入式微

4、控制器(Embedded MCU)。單片機(jī)自20世紀(jì)70年代問世以來,以其鮮明的特點(diǎn)得到迅猛發(fā)展,已廣泛應(yīng)用于家用電器、智能玩具、智能儀器儀表、工業(yè)控制、航空航天等領(lǐng)域,經(jīng)過30多年的發(fā)展,性能不斷提高,品種不斷豐富,已經(jīng)形成自動(dòng)控制的一支中堅(jiān)力量。據(jù)統(tǒng)計(jì),我國的單片機(jī)年容量已達(dá)13億片,且每年以大約16的速度增長,但相對于國際市場我國的占有率還不到1。這說明單片機(jī)應(yīng)用在我國有著廣闊的前景。對于從事自動(dòng)控制的技術(shù)人員來講,掌握單片機(jī)原理及其應(yīng)用已經(jīng)成為必不可少的學(xué)習(xí)任務(wù)。 單片機(jī)的應(yīng)用十分廣泛,在工業(yè)控制領(lǐng)域、家電產(chǎn)品、智能化儀器儀表、計(jì)算機(jī)外部設(shè)備,特別是機(jī)電一體化產(chǎn)品中,都有重要的用途。2

5、數(shù)字鐘介紹:本設(shè)計(jì)中的數(shù)字鐘的核心是AT89C52單片機(jī),硬件電路主要由四部分構(gòu)成:時(shí)鐘電路,復(fù)位電路,鍵盤以及顯示電路。時(shí)鐘是將小時(shí)、分鐘、秒鐘顯示于人的肉眼的計(jì)時(shí)裝置。而單片機(jī)模塊中最常見的正是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用壽命,因此得到了廣泛的使用。而LED電子定時(shí)時(shí)鐘是以單片機(jī)為基礎(chǔ)的數(shù)字電路實(shí)現(xiàn)對時(shí)、分、秒的數(shù)字顯示的數(shù)字計(jì)時(shí)裝置,它的計(jì)時(shí)周期為12小時(shí),另外應(yīng)有校時(shí)功能和一些顯示日期、鬧鐘等附加功能。由于時(shí)鐘的實(shí)用性和在人們生活中的重要性,所以嘗試設(shè)計(jì)以單片機(jī)為核心的數(shù)字時(shí)鐘是很有意

6、義的。鐘表原先的報(bào)時(shí)功能已經(jīng)原不能滿足人們?nèi)找嬖鲩L的要求,現(xiàn)代的電子時(shí)鐘多帶有類似自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等功能。1.2本系統(tǒng)的特點(diǎn)和功能介紹1. 特點(diǎn):我所設(shè)計(jì)的是LED顯示的自動(dòng)報(bào)時(shí)系統(tǒng),是一種基于單片機(jī)技術(shù)的電子產(chǎn)品,用到的單片機(jī)芯片是AT89C52芯片,除此之外還包括晶振電路和復(fù)位/時(shí)鐘電路構(gòu)成單片機(jī)最小應(yīng)用系統(tǒng),還有按鍵電路,顯示電路,報(bào)時(shí)電路等等。計(jì)時(shí)方案采用軟件控制利用AT89C52單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分的計(jì)時(shí)。2本單片機(jī)報(bào)時(shí)控制系統(tǒng)具備以下功能:(1)有電子時(shí)鐘,

7、定時(shí)鬧鈴功能。(2)時(shí)鐘顯示功能:4位LED從左到右依次顯示“時(shí)時(shí)分分”,采用12小時(shí)制顯示。(3)采用4個(gè)獨(dú)立按鍵(移位鍵、加1鍵、減1鍵、校時(shí)置入鍵)移位鍵:每按動(dòng)移位鍵一次,小數(shù)點(diǎn)從左向右移動(dòng)1位。加1鍵:對小數(shù)點(diǎn)所在位的數(shù)什進(jìn)行十進(jìn)制加1。減1鍵:對小數(shù)點(diǎn)所在位的數(shù)值進(jìn)行十進(jìn)制減1。校時(shí)置入鍵:將顯示的時(shí)間值置入實(shí)時(shí)時(shí)鐘的計(jì)時(shí)緩沖區(qū)。(4)預(yù)設(shè)定時(shí)時(shí)間到則發(fā)出鬧鈴聲。2 硬件設(shè)計(jì)2.1總體設(shè)計(jì)方案本以數(shù)碼管驅(qū)動(dòng)顯示的鬧鐘,是以單片機(jī)及外圍接口電路為核心硬件,輔以其他外圍硬件電路,用軟件程序來實(shí)現(xiàn)的。單片機(jī)定時(shí)報(bào)時(shí)控制系統(tǒng)硬件原理圖如下圖所示。鬧鐘電路供電指示電路主控制器STC89C52

8、按鍵電路數(shù)碼管驅(qū)動(dòng)顯示電路晶振復(fù)位/時(shí)鐘電路 圖2-1 總體設(shè)計(jì)方案圖2.1.1 AT89C51的介紹AT89S51是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。 AT89S51有40個(gè)引腳,與MCS51系列單片機(jī)引腳

9、完全兼容。如圖2-2所示。其各自引腳功能如下:Vcc:電源電壓。GND:地。P0口:P0口是一組8位漏極開路型雙向I/O接口,也即地址/數(shù)據(jù)總線復(fù)用口。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在FLASH編程時(shí),P0口接受指令字節(jié),而在程序校驗(yàn)時(shí) ,輸出指令字節(jié)。P1口:P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O接口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)4個(gè)TTL邏輯門電路。FLASH編程和程序校驗(yàn)時(shí),P1接收低8位地址。 P2口:P2口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)4個(gè)TTL邏輯門電路。在訪問外部程序存儲(chǔ)器或16

10、位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí)P2口送高8位地址數(shù)據(jù)。FLASH編程或校驗(yàn)時(shí),P2亦接收高位地址和其他控制信號(hào)。P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O接口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)4個(gè)TTL邏輯門電路。RST:復(fù)位輸入。ALE/ :當(dāng)訪問外部數(shù)據(jù)時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。對FLASH存儲(chǔ)器編程時(shí),該引腳還用于輸入編程脈沖()。EA/VPP:外部訪問允許。:程序儲(chǔ)存允許。輸出是外部程序存儲(chǔ)器的度選通信號(hào)。XTAL1:振蕩器反相放大及內(nèi)部是鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。2.2硬架結(jié)構(gòu)設(shè)計(jì)2.2.1 51單片機(jī)的最小系統(tǒng) (見圖2-2

11、、2-3、2-4所示) 在晶振電路中XTAL1、XTAL2為AT89C52中連接晶振的管腳,本系統(tǒng)中所使用的晶振頻率為12MHZ 。XTAL1為振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2為振蕩器反相放大器的輸出端。其中電容C8、C9起著系統(tǒng)時(shí)鐘頻率微調(diào)的作用,因此,在本定時(shí)報(bào)時(shí)系統(tǒng)的實(shí)際應(yīng)用中一定要注意正確選擇參數(shù)(30±10PF),并保證對稱性(盡可能匹配),可能的話,溫度系數(shù)要盡可能的低。實(shí)驗(yàn)表明這兩個(gè)電容元件對時(shí)鐘走時(shí)誤差有較大關(guān)系。本系統(tǒng)采用了RC復(fù)位電路,其實(shí)現(xiàn)簡單,成本低,但復(fù)位可靠性相對較低。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。

12、2.2.2 顯示部分設(shè)計(jì)作為本次設(shè)計(jì)中使用的核心元件AT89C51,其結(jié)構(gòu)如下圖:圖2-2 引腳圖晶振與復(fù)位電路主要作用是保證電子鐘時(shí)間的走時(shí)精準(zhǔn)度和其復(fù)位,是電子鐘使用與設(shè)計(jì)中主要的模塊,也是校驗(yàn)時(shí)鐘是否合格的硬性標(biāo)準(zhǔn)。復(fù)位/時(shí)鐘電路如圖2-3所示。圖2-3 復(fù)位/時(shí)鐘電路用4位LED七段數(shù)碼管作為顯示器,到達(dá)定時(shí)時(shí)根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號(hào),然后去觸發(fā)一音頻發(fā)生器實(shí)現(xiàn)報(bào)時(shí)。其驅(qū)動(dòng)電路簡單。采用了四個(gè)三極管和四個(gè)5.1K的電阻,還有八個(gè)510歐姆的限流電阻。圖2-4數(shù)碼管驅(qū)動(dòng)顯示電路2.2.3電源部分設(shè)計(jì)AT89C51系列單片機(jī)工作電源范圍寬達(dá)45.5V。單片機(jī)供電方式有兩種:集成

13、穩(wěn)壓電源方式 電池供電集成穩(wěn)壓電源方式:利用變壓器、整流、濾波、穩(wěn)壓自制電源如圖2-5所示。圖2-4 穩(wěn)壓電源電路電池供電:由于電池?cái)y帶方便,此次設(shè)計(jì)采用此方式,供電電壓直流5V。圖2-6 供電指示電路2.2.4報(bào)時(shí)部分的設(shè)計(jì)報(bào)時(shí)指示可以有聲或光兩種形式,本系統(tǒng)采用聲音指示。關(guān)鍵元件是蜂鳴器,蜂鳴器有無源和有源兩種,前者需要輸入聲音頻率信號(hào)才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,元件內(nèi)部已封裝了音頻震蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場上的有源蜂鳴器分為3V、5V、6V等系列,以適應(yīng)不同的應(yīng)用需要,本系統(tǒng)采用5V有源蜂鳴器實(shí)現(xiàn)報(bào)時(shí)。由軟件產(chǎn)生方波輸出經(jīng)三極管放大后驅(qū)動(dòng)蜂鳴器發(fā)音,不用

14、硬件振蕩電路,電路圖如圖2-7所示。圖2-7 報(bào)時(shí)電路2.2.5鍵盤部分的設(shè)計(jì)如果設(shè)置過多按鍵,將會(huì)占用較多I/O口,而且會(huì)給布線帶來不便,因此采用4個(gè)獨(dú)立按鍵。由于按鍵較少,在修改時(shí)間時(shí)就不能直接輸入,只能通過加或減完成,稍為麻煩一些,但其程序簡單,而且并不需要經(jīng)常修改時(shí)間。圖2-8 按鍵電路2.2.6總體硬件電路圖通過Proteus畫出的總體硬件電路圖如下所示。 圖2-9 總體硬件電路圖2.6.7 proteus仿真圖2-10 proteus仿真3軟件部分3.1部分設(shè)計(jì)思想的說明軟件設(shè)計(jì)的重點(diǎn)在于秒脈沖信號(hào)的產(chǎn)生、顯示的實(shí)現(xiàn)、以及按鍵的處理等。基于軟件的秒脈沖信號(hào)通常有延時(shí)法和中斷法。延時(shí)

15、法一般采用查詢方式,在延時(shí)子程序前后必然需要查詢和處理的程序,導(dǎo)致誤差的產(chǎn)生,因此其秒脈沖精度不高;中斷法的原理是,利用單片機(jī)內(nèi)部的定時(shí)器溢出中斷來實(shí)現(xiàn) 。本系統(tǒng)中所使用的晶振頻率為12MHZ,采用中斷的方法實(shí)現(xiàn)計(jì)時(shí)操作。根據(jù)工作流程,軟件設(shè)計(jì)可分為以下幾個(gè)功能模塊:1、主程序:是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計(jì)一般有“自上而下”和“自下而上”兩種方式,“自上而下”法的核心就是主框架的構(gòu)建。它的合理與否關(guān)系到程序最終的功能的多少和性能的好壞。2、計(jì)時(shí):系統(tǒng)定時(shí)采用定時(shí)器與軟件循環(huán)相結(jié)合的方法。定時(shí)器0每隔100MS溢出中斷1次,則循環(huán)中斷10次延時(shí)時(shí)間為1S,上述過程重復(fù)60次為1MIN,分計(jì)

16、時(shí)60次為1H,小時(shí)計(jì)時(shí)12次則時(shí)間重新回到00:00,如果使用時(shí)鐘芯片,系統(tǒng)就不怕掉電且時(shí)間精確。但這種芯片比較貴,況且,設(shè)計(jì)本系統(tǒng)主要是為了學(xué)習(xí)單片機(jī)程序的編寫和調(diào)試以及設(shè)計(jì)硬件電路的一些方法,因此采用軟件的方法來計(jì)時(shí)而沒有采用價(jià)格較高的時(shí)鐘芯片。3、時(shí)間設(shè)置:由鍵盤出入設(shè)置當(dāng)前時(shí)間。4、LED數(shù)碼管掃描顯示:完成4位LED顯示。5、鍵盤掃描:判斷是否有鍵按下,無鍵按下則循環(huán)等待,有鍵按下則求承諾鍵號(hào)并將鍵號(hào)送累加器A返回。程序中的去抖延時(shí)和循環(huán)等待延時(shí)都用顯示子程序來代替,從而保證隨時(shí)刷新顯示,軟件的去抖動(dòng)的實(shí)質(zhì)是軟件延時(shí),即檢測到某一鍵狀態(tài)發(fā)生變化后延時(shí)一段時(shí)間,再檢測該按鍵的狀態(tài)是否

17、還保持著,如是則作為按鍵處理,否則,視為抖動(dòng),不予理睬。去抖中的延時(shí)時(shí)間一般參考資料多描述為10ms,實(shí)際應(yīng)用中,應(yīng)大于20ms,會(huì)導(dǎo)致按一次作多次處理,影響程序正常執(zhí)行。鍵盤管理程序的功能是檢測有無鍵閉和,如有鍵閉和,消除抖動(dòng),根據(jù)鍵號(hào)轉(zhuǎn)接到相應(yīng)的鍵處理程序。6、報(bào)時(shí)處理:判斷時(shí)間是否到否,如時(shí)間到,則啟動(dòng)報(bào)時(shí)處理程序。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時(shí)要進(jìn)行鬧鈴,當(dāng)任一位發(fā)生改變(進(jìn)位)時(shí),就必須進(jìn)行鬧鈴判別,比較當(dāng)前計(jì)數(shù)時(shí)間與定時(shí)時(shí)間是否相等,若相等則將鬧鈴標(biāo)志位置數(shù),開始響鈴。為了避免響鈴影響顯示,采用了每顯示幾屏以后在顯示程序中出現(xiàn)脈沖,驅(qū)動(dòng)蜂鳴器,不會(huì)影響顯示。之后對按鍵進(jìn)行判斷

18、。3.2 C語言、keil、proteus的介紹3.2.1 C語言C語言是目前世界上流行、使用最廣泛的高級(jí)程序設(shè)計(jì)語言。 C語言對操作系統(tǒng)和系統(tǒng)使用程序以及需要對硬件進(jìn)行操作的場合,用C語言明顯優(yōu)于其它高級(jí)語言,許多大型應(yīng)用軟件都是用C語言編寫的。 C語言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫它是數(shù)值計(jì)算的高級(jí)語言。 C語言發(fā)展迅速,而且成為最受歡迎的語言之一,主要因?yàn)樗哂袕?qiáng)大的功能。許多著名的系統(tǒng)軟件,如DBASE PLUS、DBASE 都是由C 語言編寫的。用C語言加上一些匯編語言子程序,就更能顯示C語言的優(yōu)勢了,象PC- DOS

19、、WORDSTAR等就是用這種方法編寫的。 3.2.2 keilKeil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件

20、仿真調(diào)試工具也會(huì)令你事半功倍。3.2.3 proteusProteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。3.3參考程序#include <reg51.h>#define uchar unsigned char#define uint unsigned int/sbit P07=P0

21、7;sbit P27=P27;/時(shí)10sbit P26=P26;/時(shí)個(gè)sbit P25=P25;/分10sbit P24=P24;/分個(gè)sbit sw0=P16;/3.7時(shí)sbit sw1=P30;/3.6分sbit sw2=P35;/3.5啟動(dòng)sbit sw3=P13;/3.3總開關(guān)/sbit sw4=P32;/3.4/sbit led=P07;sbit P20=P20;/喇叭sbit P21=P21;/繼電器uchar miao,k,a,b;/uchar shi,fen,shi10,shi1,fen10,fen1,jsshi,jsfen;uchar jsshi10,jsshi1,jsfen

22、10,jsfen1;code uchar sz=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/void xianshijs (uchar jsshi10,uchar jsshi1,uchar jsfen10,uchar jsfen1);void xianshi(uchar shi10,uchar shi1,uchar fen10,uchar fen1);void delay (uint i);void chushihua();void shifenmiao();void anjian();/void delay (uint i)/掃描延時(shí)

23、 uint t; t=i; while(t-);void chushihua()/初始化 TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; EA=1; shi=12; fen=12; miao=0; jsshi=01; jsfen=01; void xianshi(uchar shi10,uchar shi1,uchar fen10,uchar fen1)/顯示時(shí)分秒 shi10=shi/10; shi1=shi%10; fen10=fen/10; fen1=fen%10; P0=szshi10; P27=0; de

24、lay(5); P27=1; P0=szshi1; if(k=10) P0&=0x7f;/取點(diǎn)(H) P26=0; delay(5); P26=1; P0=szfen10; P25=0; delay(5); P25=1; P0=szfen1; P24=0; delay(5); P24=1;void xianshijs (uchar jsshi10,uchar jsshi1,uchar jsfen10,uchar jsfen1)/顯示時(shí)分秒 jsshi10=jsshi/10; jsshi1=jsshi%10; jsfen10=jsfen/10; jsfen1=jsfen%10; P0=s

25、zjsshi10; P27=0; delay(5); P27=1; P0=szjsshi1; if(k=10) P0&=0x7f;/取點(diǎn)(H) P26=0; delay(5); P26=1; P0=szjsfen10; P25=0; delay(5); P25=1; P0=szjsfen1; P24=0; delay(5); P24=1;void t0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; k+; b+;void shifenmiao()/時(shí)分秒進(jìn)位 if(k=20) k=0; miao+; if(mia

26、o=60) miao=0; fen+; if(fen=60) fen=0; shi+; if (shi=24) shi=0;/void ajsw0jia()/shi+ if(sw0=0) delay(50); if(sw0=0) do while (sw0=0); delay(50); while (sw0=0); shi+; if (shi=24) shi=0; void ajsw1jia()/fen+ if(sw1=0) delay(50); if(sw1=0) do while (sw1=0); delay(50); while (sw1=0); fen+; if (fen=60) fe

27、n=0; /*void ajsw0jian()/shi- if(sw0=0) delay(50); if(sw0=0) do while (sw0=0); delay(50); while (sw0=0); shi-; if (shi=-1) shi=23; void ajsw1jian()/fen- if(sw1=0) delay(50); if(sw1=0) do while (sw1=0); delay(50); while (sw1=0); fen-; if (fen=-1) fen=59; */void qidong()/啟動(dòng) if(sw2=0) delay(50); if(sw2=

28、0) do while (sw2=0); delay(50); while (sw2=0); TR0=1; /void anjian() if(sw3=0) delay(50); if(sw3=0) do while (sw3=0); delay(50); while (sw3=0); a+; if (a=4) a=0; switch (a) case 1: ajsw0jia(); ajsw1jia(); break; case 2: / ajsw0jian(); /ajsw1jian(); qidong(); break; /*case 3: / qidong(); break; */cas

29、e 3: xianshijs(jsshi10,jsshi1,jsfen10,jsfen1); if(sw0=0) delay(50); if(sw0=0) do while (sw0=0); delay(50); while (sw0=0); jsshi+; if (jsshi=24) jsshi=0; if(sw1=0) delay(50); if(sw1=0) do while (sw1=0); delay(50); while (sw1=0); jsfen+; if (jsfen=60) jsfen=0; break; void main () chushihua(); while(1) shifenmiao(); anjian(); if(a=3) xianshijs(jsshi10,jsshi1,jsfen10,jsfen1); else xianshi(shi10,shi1,fen10,fen1); if(fen=jsfen)&&(shi=jsshi) b+; P21=0;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論