單片機(jī)課程設(shè)計(jì)-(51單片機(jī)實(shí)現(xiàn)電子時(shí)鐘)_第1頁
單片機(jī)課程設(shè)計(jì)-(51單片機(jī)實(shí)現(xiàn)電子時(shí)鐘)_第2頁
單片機(jī)課程設(shè)計(jì)-(51單片機(jī)實(shí)現(xiàn)電子時(shí)鐘)_第3頁
單片機(jī)課程設(shè)計(jì)-(51單片機(jī)實(shí)現(xiàn)電子時(shí)鐘)_第4頁
單片機(jī)課程設(shè)計(jì)-(51單片機(jī)實(shí)現(xiàn)電子時(shí)鐘)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、湖北文理學(xué)院湖北文理學(xué)院 單片機(jī)課程設(shè)計(jì)題目:用 51 單片機(jī)實(shí)現(xiàn)電子時(shí)鐘院 部 物理與電子信息工程學(xué)院 專 業(yè) 名 稱 電子信息科學(xué)與技術(shù) 班 級(jí) 1111 姓 名 楊慶月 學(xué) 號(hào) 2021111136 指 導(dǎo) 教 師 李剛 2021 年 12 月 09 日 目錄摘要-11 單片機(jī)的相關(guān)知識(shí) -11.1 單片機(jī)的簡介-11.2 單片機(jī)的特點(diǎn)-11.3 89C52單片機(jī)的根本特點(diǎn)-22 電子時(shí)鐘-32.1電子時(shí)鐘的根本特點(diǎn)-32.2電子時(shí)鐘的原理-43 控制系統(tǒng)的硬件設(shè)計(jì) -43.1單片機(jī)型號(hào)的選擇-43.2 lcd1602工作的原理-43.3 鍵盤電路的設(shè)計(jì)-63.4 復(fù)位電路設(shè)計(jì)-63.5

2、 時(shí)鐘電路設(shè)計(jì)-73.6 整體電路原理圖-74 控制系統(tǒng)的軟件的設(shè)計(jì) -84.1程序的設(shè)計(jì)-84.2程序源代碼-85 仿真結(jié)果和實(shí)物圖-195.1仿真結(jié)果-195.2實(shí)物圖-196 總結(jié)-20參考文獻(xiàn) -210摘要:單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。由 RAM ,ROM,CPU構(gòu)成,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。它體積小,本錢低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。而 51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次課程設(shè)計(jì)通過對(duì)它的學(xué)習(xí),應(yīng)用,從而到達(dá)學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬的能力。本設(shè)計(jì)主要設(shè)計(jì)了一個(gè)基于 AT89C52單片機(jī)的電子時(shí)鐘。并在 1602上顯示相應(yīng)的時(shí)間。并通

3、過一個(gè)控制鍵用來實(shí)現(xiàn)時(shí)間的調(diào)節(jié)和是否進(jìn)入省電模式的轉(zhuǎn)換。具有時(shí)鐘和日歷的功能,年限顯示范圍是2021-2099可修改,且具有閏年自動(dòng)修正功能關(guān)鍵字:單片機(jī);子時(shí)鐘;鍵盤控制;LCD1602。1 1 單片機(jī)識(shí)的相關(guān)知識(shí)1.11.1 單片機(jī)簡介MCS-51是 INTEL公司在成功推廣的 MCS-48單片機(jī)根底上加以改良而成的 8位單片機(jī)。這種單片機(jī)大約是上世紀(jì) 70年代末推出的,內(nèi)部程序可重寫的為 8751,外擴(kuò)程序的是 8031,一次性生產(chǎn),不可改變程序的是 8051。外形一般為 DIP40封裝。不久又推出了增強(qiáng)型的 8052,其資源更加豐富。以后又采用 CHMOS技術(shù)推出了 80c51,耗電大

4、大降低。到了 90年代,INTEL公司把精力放到更賺錢的計(jì)算機(jī)上,將 51單片機(jī)技術(shù)轉(zhuǎn)讓給了一此其它公司,如 ATMEL Philips等半導(dǎo)體制造公司,使 51系列單片機(jī)的市場(chǎng)份額不斷擴(kuò)大。盡管十多年前就有人認(rèn)為 51單片時(shí)機(jī)很快淘汰,但事實(shí)證明 51單片機(jī)經(jīng)過不斷的改良后,由于技術(shù)成熟,使用方便,至今在 8位單片機(jī)市場(chǎng)仍然擁有龐大的用戶。特別是 MCS-51技術(shù)的 20年專利期限到期后,大量的兼容型號(hào)不斷推出。從上世紀(jì) 90年代后期開始,美國 ATMEL公司在掌握快速擦寫的存儲(chǔ)器后,推出了 AT89C系列,此系列在中國獲得了廣泛的應(yīng)用。在此之前,由于可擦寫的 8751價(jià)格昂貴,國內(nèi)長時(shí)間采

5、用 8031+27C64這樣的外擴(kuò)存程序儲(chǔ)器方式。51單片機(jī)最初只有 DIP40這種很古老的封裝,后來推出了 CHMOS工藝的80C51后開始有了 PLCC44這種相對(duì)較小的方形封裝。AT89C系列中開始有 20腳的 DIP20的精簡型封裝,這極大方便了在一些相對(duì)簡單的單片機(jī)應(yīng)用,縮小了 PCB的體積。20腳的有 AT89C1051、AT89C1051、AT89C1051,對(duì)應(yīng)程序存儲(chǔ)器分別為 1K、2K、4K。標(biāo)準(zhǔn)的 51為 4K程序空間,128字節(jié)的 RAM,32條端口,5個(gè)中斷,2個(gè)定時(shí)/計(jì)數(shù)器,12個(gè)時(shí)鐘周期執(zhí)行一條根本指令,最長的除法為 48個(gè)周期。52為 8K程序空間,256字節(jié)的

6、 RAM,32條端口,6個(gè)中斷,3個(gè)定時(shí)/計(jì)數(shù)器。AT89S51是可在板上直接下載程序的改良型號(hào),并增加了看門狗功能,AT89C51只能在編程器下寫入程序,所以經(jīng)常會(huì)有人在 PCB上安裝 IC插座,以便取下來編程更新程序。AT的 51系列后來也推出了單周期的 51,但價(jià)格沒什么優(yōu)勢(shì),國內(nèi)很少使用。最近幾年宏晶在國內(nèi)大量推廣 STC51系列單片機(jī),最近又推出不少所謂 1T1的單片機(jī),價(jià)格較低STC采用串口直接下載程序,寫入程序很方便。1.21.2 單片機(jī)的特點(diǎn)1 . 單片機(jī)的存儲(chǔ)器ROM 和RAM 時(shí)嚴(yán)格區(qū)分的。ROM 稱為程序存儲(chǔ)器,只存放程序,固定常數(shù),及數(shù)據(jù)表格。RAM 那么為數(shù)據(jù)存儲(chǔ)器,

7、用作工作區(qū)及存放用戶數(shù)據(jù)。2 . 采用面向控制的指令系統(tǒng)。為滿足控制需要,單片機(jī)有更強(qiáng)的邏輯控制能力,特別是單片機(jī)具有很強(qiáng)的位處理能力。3 . 單片機(jī)的I/O 口通常時(shí)多功能的。由于單片機(jī)芯片上引腳數(shù)目有限,為了解決實(shí)際引腳數(shù)和需要的信號(hào)線的矛盾,采用了引腳功能復(fù)用的方法,引腳處于何種功能, 可由指令來設(shè)置或由機(jī)器狀態(tài)來區(qū)分。4 . 單片機(jī)的外部擴(kuò)展能力很強(qiáng)。在內(nèi)部的各種功能部件不能滿足應(yīng)用的需求時(shí),均可在外部進(jìn)行擴(kuò)展,與許多通用的微機(jī)接口芯片兼容,給應(yīng)用系統(tǒng)設(shè)計(jì)帶來了很大的方便。1.31.3 89C5289C52 單片機(jī)介紹P0 口:P0 口為一個(gè)8 位漏級(jí)開路雙向I/O 口,每腳可吸收8T

8、TL 門電流。當(dāng)P1 口的管腳第一次寫1 時(shí),被定義為高阻輸入。P0 能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH 編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH 進(jìn)行校驗(yàn)時(shí),P0 輸出原碼,此時(shí)P0 外部必須被拉高。P1 口:P1 口是一個(gè)內(nèi)部提供上拉電阻的8 位雙向I/O 口,P1 口緩沖器能接收輸出4TTL 門電流。P1 口管腳寫入1 后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1 口作為第八位地址接收。P2 口:P2 口為一個(gè)內(nèi)部上拉電阻的8 位雙向I/O 口,P2 口緩沖器可接

9、收,輸出4 個(gè)TTL 門電流,當(dāng)P2 口被寫“1時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2 口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2 口當(dāng)用于外部程序存儲(chǔ)器或16 位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地址的高八位。在給出地址“1時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2 口輸出其特殊功能存放器的內(nèi)容。P2 口在FLASH 編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3 口:P3 口管腳是8 個(gè)帶內(nèi)部上拉電阻的雙向I/O 口,可接收輸出4 個(gè)TTL門電流。當(dāng)P3 口寫入“1后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,

10、由于外部下拉為低電平,P3 口將輸出電流ILL這是由于上拉的緣故。2P3 口也可作為AT89C52 的一些特殊功能口,如下表所示:口管腳備選功能P3.0 RXD串行輸入口P3.1 TXD串行輸出口P3.2 /INT0外部中斷0P3.3 /INT1外部中斷1P3.4 T0記時(shí)器0 外部輸入P3.5 T1記時(shí)器1 外部輸入P3.6 /WR外部數(shù)據(jù)存儲(chǔ)器寫選通P3.7 /RD外部數(shù)據(jù)存儲(chǔ)器讀選通P3 口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST 腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位

11、字節(jié)。在FLASH 編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE 脈沖。如想禁止ALE 的輸出可在SFR8EH 地址上置0。此時(shí),ALE 只有在執(zhí)行MOVX,MOVC 指令是ALE 才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE 禁止,置位無效。PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN 有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN 信號(hào)將不出現(xiàn)。E

12、A/VPP:當(dāng)/EA 保持低電平時(shí),那么在此期間外部程序存儲(chǔ)0000H-FFFFH ,不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1 時(shí), /EA 將內(nèi)部鎖定為RESET;當(dāng)/EA3端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH 編程期間,此引腳也用于施加12V 編程電源VPP 。2 2 電子時(shí)鐘2.1 電子時(shí)鐘的根本特點(diǎn) 現(xiàn)在高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用用液晶顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí)、分、秒顯示時(shí)

13、間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。2.2 電子時(shí)鐘的原理該電子時(shí)鐘由89C52,1602 液晶等構(gòu)成,采用晶振電路作為驅(qū)動(dòng)電路,由延時(shí)程序和循環(huán)程序到達(dá)時(shí)分秒的計(jì)時(shí),六十秒為一分鐘,六十分鐘為一小時(shí),滿二十四小時(shí)為一天。而電路中有四個(gè)控制按鍵,一個(gè)是選擇,一個(gè)進(jìn)行加數(shù),一個(gè)進(jìn)行減數(shù),還有一個(gè)保存。例如按下選擇鍵,然后1602顯示光標(biāo),此時(shí)可以用加或減來進(jìn)行調(diào)節(jié),在按下選擇鍵,光標(biāo)移到不同的單位上,同理進(jìn)行調(diào)節(jié),最后待日期時(shí)間調(diào)節(jié)好后,按下保存鍵,時(shí)鐘開始計(jì)時(shí)。3 3 控制系統(tǒng)的硬件設(shè)計(jì)3.1 單片機(jī)型號(hào)的選擇通過對(duì)51單片機(jī)的學(xué)習(xí),認(rèn)為STC89C52 是最理想的電子時(shí)鐘開發(fā)芯

14、片。STC89C52,最終認(rèn)為89C52是一種帶8K 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,器件采用高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-52指令集和輸出引腳相兼容。還有一點(diǎn)重要原因,就是采用AT89C52時(shí)不能用開發(fā)板進(jìn)行程序的下載,所以最終選用STC89C52進(jìn)行設(shè)計(jì)。3.2 1602 工作原理及顯示電路 字符型LCD 通常有14 條引腳線或16 條引腳線的LCD,多出來的2 條線是背光電源線VCC(15 腳)和地線GND(16 腳),其控制原理與14 腳的LCD 完全一樣 1602液晶的根本的操作分為以下四種:4狀態(tài)字讀操作:輸入RS=低、RW

15、=高、EP=高; 輸出:DB07 讀出為狀態(tài)字;數(shù)據(jù)讀出操作:輸入RS=高、RW=高、EP=高; 輸出:DB07 讀出為數(shù)據(jù);指令寫入操作:輸入RS=低、RW=低、EP=上升沿; 輸出:無;數(shù)據(jù)寫入操作:輸入RS=高、RW=低、EP=上升沿; 輸出:無。如圖 1602 模塊的引腳 LCD1602 正面5LCD1602 反面1602 與單片機(jī)連接圖3.3 鍵盤電路設(shè)計(jì)6本時(shí)鐘采用四個(gè)按鍵控制,一個(gè)(實(shí)物圖藍(lán)色線24號(hào)引腳)是選擇,一個(gè)進(jìn)行加數(shù)實(shí)物圖紫色線25號(hào)引腳 ,一個(gè)進(jìn)行減數(shù)實(shí)物圖灰色線26號(hào)引腳 ,還有一個(gè)保存實(shí)物圖白色線27號(hào)引腳 。例如按下選擇鍵,然后1602顯示光標(biāo),此時(shí)可以用加或減

16、來進(jìn)行調(diào)節(jié),在按下選擇鍵,光標(biāo)移到不同的單位上,同理進(jìn)行調(diào)節(jié),最后待日期時(shí)間調(diào)節(jié)好后,按下保存鍵,時(shí)鐘開始計(jì)時(shí)。3.4 復(fù)位電路設(shè)計(jì) 單片機(jī)復(fù)位有上電復(fù)位和手動(dòng)復(fù)位兩種方式,上電復(fù)位是接通電源后利用 RC 充電來實(shí)現(xiàn)復(fù)位。手動(dòng)復(fù)位是通過人為干預(yù),強(qiáng)制系統(tǒng)復(fù)位。 連接至9號(hào)復(fù)位引腳 復(fù)位電路如下圖,可以實(shí)現(xiàn)上電復(fù)位和手動(dòng)復(fù)位功能。3.5 時(shí)鐘電路設(shè)計(jì)7系統(tǒng)時(shí)鐘源由內(nèi)部時(shí)鐘方式產(chǎn)生,時(shí)鐘電路由 12MH 晶振和兩個(gè) 30PF 瓷片電容組成,構(gòu)成自激振蕩,形成振蕩源提供應(yīng)單片機(jī)。電容可在 5PF 到 30PF之間選擇,電容的大小對(duì)振蕩頻率有微小影響,可起頻率微調(diào)作用。 3.6 整體電路原理圖4 控制

17、系統(tǒng)的軟件設(shè)計(jì) 4.1 程序設(shè)計(jì) 由于C 語言程序設(shè)計(jì)較匯編可讀性強(qiáng),可移植性,且可以大大降低編程的難8度和縮短開發(fā)周期,本系統(tǒng)程序采用c 語言設(shè)計(jì)。4.2 程序源代碼#include /包含單片機(jī)存放器的頭文件#include /包含_nop_()函數(shù)定義的頭文件#define uchar unsigned char#define uint unsigned intsbit RS=P20; /存放器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號(hào)位,將E位定義為P2.2引腳sbit BF=P07; /忙碌標(biāo)

18、志位,將BF位定義為P0.7引腳uchar code table=2021-12-07 WEEK6; /初始化液晶顯示 16uchar code table1=TIME: 19-27-50; /14 uchar count,s1num;char second,minute,hour,day,month,year,week;sbit s1=P23; /功能鍵sbit s2=P24; /加鍵sbit s3=P25; /減鍵sbit s4=P26; /保存并退出 /* 延時(shí)假設(shè)干毫秒 */void delay(uchar n)uchar i,a,b;for(i=0;i0;b-) for(a=1;a0

19、;a-);/*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。result=1,忙碌;result=0,不忙*/uchar BusyTest(void)bit result;RS=0; /根據(jù)規(guī)定,RS為低電平,RW為高電平時(shí),可以讀狀態(tài)RW=1;E=1; /E=1,才允許讀寫9_nop_(); /空操作_nop_();_nop_();_nop_(); /空操作四個(gè)機(jī)器周期,給硬件反響時(shí)間result=BF; /將忙碌標(biāo)志電平賦給resultE=0; /將E恢復(fù)低電平return result;/*函數(shù)功能:寫指令入口參數(shù):dictate*/void WriteInstruction(u

20、char dictate)while(BusyTest()=1); /如果忙就等待RS=0; /根據(jù)規(guī)定,RS和R/W同時(shí)為低電平時(shí),可以寫入指令RW=0;E=0; /E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖, /就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置0_nop_();_nop_(); /空操作兩個(gè)機(jī)器周期,給硬件反響時(shí)間P0=dictate; /將數(shù)據(jù)送入P0口,即寫入指令或地址_nop_();_nop_();_nop_();_nop_(); /空操作四個(gè)機(jī)器周期,給硬件反響時(shí)間E=1; /E置高電平_nop_();_nop_();_nop_();_nop_(); /空操作四個(gè)機(jī)器周期

21、,給硬件反響時(shí)間E=0; /當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令/*函數(shù)功能:寫數(shù)據(jù)入口參數(shù):y(為字符常量)*/void WriteData(uchar y)while(BusyTest()=1);RS=1; /RS為高電平,RW為低電平時(shí),可以寫入數(shù)據(jù)RW=0;10E=0; /E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖, /就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置0P0=y; /將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊_nop_();_nop_();_nop_();_nop_(); /空操作四個(gè)機(jī)器周期,給硬件反響時(shí)間E=1; /E置高電平_nop_();_nop_();_no

22、p_();_nop_(); /空操作四個(gè)機(jī)器周期,給硬件反響時(shí)間E=0; /當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令/*函數(shù)功能:對(duì)LCD的顯示模式進(jìn)行初始化設(shè)置*/void LcdInitiate(void)uchar num;second=50;minute=27;hour=19;week=6;day=7;month=12;year=13;count=0;s1num=0;E=0;delay(15); /延時(shí)15ms,首次寫指令時(shí)應(yīng)給LCD一段較長的反響時(shí)間WriteInstruction(0 x38); /顯示模式設(shè)置:162顯示, /57點(diǎn)陣,8位數(shù)據(jù)接口delay(5); /延

23、時(shí)5ms?,給硬件一點(diǎn)反響時(shí)間WriteInstruction(0 x38);delay(5);WriteInstruction(0 x38); /連續(xù)三次,確保初始化成功delay(5);WriteInstruction(0 x0c); /顯示模式設(shè)置:顯示開,無光標(biāo), /光標(biāo)不閃爍delay(5);WriteInstruction(0 x06); /顯示模式設(shè)置:光標(biāo)右移,字符不移11delay(5);WriteInstruction(0 x01); /清屏幕指令,將以前的顯示內(nèi)容去除delay(5);WriteInstruction(0 x80);for(num=0;num16;num+

24、) /讓液晶顯示日期WriteData(tablenum);delay(5);WriteInstruction(0 x80+0 x40);for(num=0;num7)s1num=1;if(s1num=1) /第一個(gè)鍵被按一次TR0=0;WriteInstruction(0 x80+0 x40+13);WriteInstruction(0 x0f);if(s1num=2)WriteInstruction(0 x80+0 x40+10);if(s1num=3)13WriteInstruction(0 x80+0 x40+7);if(s1num=4)WriteInstruction(0 x80+9

25、);if(s1num=5)WriteInstruction(0 x80+6);if(s1num=6)WriteInstruction(0 x80+3);if(s1num=7)WriteInstruction(0 x80+15);if(s1num!=0) /如果功能鍵被按下if(s2=0) /第二個(gè)按下delay(5);if(s2=0)while(!s2);if(s1num=1) /第一個(gè)鍵被按一次,秒鐘加一second+;if(second=60)second=0;write_sfm(12,second);WriteInstruction(0 x80+0 x40+13);if(s1num=2)

26、 /第一個(gè)鍵被按二次,分鐘加一minute+;if(minute=60)minute=0;write_sfm(9,minute);WriteInstruction(0 x80+0 x40+10);14if(s1num=3) /第一個(gè)鍵被按三次,時(shí)鐘加一hour+;if(hour=24)hour=0;write_sfm(6,hour);WriteInstruction(0 x80+0 x40+7);if(s1num=4) /日期加一day+;if(day=32)day=1;write_nyr(8,day);WriteInstruction(0 x80+9);if(s1num=5) /月加一mon

27、th+;if(month=13)month=1;write_nyr(5,month);WriteInstruction(0 x80+6);if(s1num=6) /年加一year+;if(year=99)year=0;write_nyr(2,year);WriteInstruction(0 x80+3);if(s1num=7) /星期加一week+;if(week=8)week=1;write_week(15,week);WriteInstruction(0 x80+15);if(s3=0) /第三個(gè)鍵被按下15delay(5);if(s3=0)while(!s3);if(s1num=1) /

28、秒減一second-;if(second=-1)second=59;write_sfm(12,second);WriteInstruction(0 x80+0 x40+13);if(s1num=2) /分減一minute-;if(minute=-1)minute=59;write_sfm(9,minute);WriteInstruction(0 x80+0 x40+10);if(s1num=3) /時(shí)減一hour-;if(hour=-1)hour=23;write_sfm(6,hour);WriteInstruction(0 x80+0 x40+7);if(s1num=4) /日減一day-;

29、if(day=0)day=31;write_nyr(8,day);WriteInstruction(0 x80+9);if(s1num=5) /月減一month-;if(month=0)month=12;write_nyr(5,month);WriteInstruction(0 x80+6);16if(s1num=6) /年減一year-;if(year=-1)year=99;write_nyr(2,year);WriteInstruction(0 x80+3);if(s1num=7) /日期減一week-;if(week=0)week=7;write_week(15,week);WriteI

30、nstruction(0 x80+15);if(s4=0) /保存并退出s1num=0; WriteInstruction(0 x0c);TR0=1;/*main function*/void main(void)uchar k=0;LcdInitiate(); /調(diào)用LCD初始化函數(shù)while(1)keyscan();k=1;/*函數(shù)功能:定時(shí)器T0的中斷效勞函數(shù)17*/void timer0() interrupt 1count+;if(count=13)count=0;second+;if(second=60) /秒計(jì)滿60,秒歸0,分+1second=0;minute+;if(minute=60)/分計(jì)滿60,分歸0,時(shí)+1minute=0;hour+;if(hour=24) /時(shí)計(jì)滿24,時(shí)歸0,星期+1,日+1hour=0;week+;day+;if(week=8)week=1; /星期計(jì)滿7,星期歸1if(month=1|month=3|month=5|month=7

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論