課程設(shè)計(jì) 數(shù)字秒表_第1頁
課程設(shè)計(jì) 數(shù)字秒表_第2頁
課程設(shè)計(jì) 數(shù)字秒表_第3頁
課程設(shè)計(jì) 數(shù)字秒表_第4頁
課程設(shè)計(jì) 數(shù)字秒表_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)控制技術(shù)綜合應(yīng)用設(shè)計(jì)題目 數(shù)字秒表 二級(jí)學(xué)院 電子信息與自動(dòng)化學(xué)院 專 業(yè) 電氣工程及其自動(dòng)化 班 級(jí) 110070403 學(xué)生姓名 學(xué)號(hào) 學(xué)生姓名 學(xué)號(hào) 學(xué)生姓名 學(xué)號(hào) 指導(dǎo)教師 時(shí)間: 2013年12月16日 考核項(xiàng)目平時(shí)成績20分設(shè)計(jì)50分答辯30分得分總分考核等級(jí)教師簽名 摘要 隨著電子科技的飛速發(fā)展,單片機(jī)在日常生活中應(yīng)用的越來越廣泛。本文以stc89c52單片機(jī)為核心器件,利用了單片機(jī)定時(shí)器具有精確定時(shí)的特點(diǎn),制作了一個(gè)簡易的數(shù)字秒表,可計(jì)時(shí)范圍為0至59分59秒990毫秒,計(jì)時(shí)精度達(dá)到了0.01秒。該秒表的功能包括起停、復(fù)位、切換顯示界面以及記錄時(shí)間。在秒表的顯示上,使用了

2、lcd1602液晶顯示屏,這樣使結(jié)果更加清楚直觀。而當(dāng)前時(shí)間與所記錄時(shí)間則是分開在兩個(gè)不同的界面上,利用按鍵來選擇察看某一個(gè)界面,操作方便而且結(jié)果精確。關(guān)鍵字: 單片機(jī) 秒表 lcd1602液晶顯示目錄一 問題重述.11.1 設(shè)計(jì)要求.11.2 拓展要求.1二 設(shè)計(jì)方案與論證.12.1 方案比較.12.2 方案論證.12.3 方案選擇.12.4 總方案設(shè)計(jì)框圖.2三 單元模塊設(shè)計(jì).23.1 按鍵控制電路.23.2 單片機(jī)最小系統(tǒng)電路.33.3 lcd1602顯示電路.43.4 總電路仿真圖.5四 軟件模塊設(shè)計(jì)流程圖.64.1 主循環(huán)函數(shù)的流程圖.64.2 定時(shí)器0的中斷服務(wù)子程序.74.3 定

3、時(shí)器1的中斷服務(wù)子程序.84.4 兩個(gè)顯示函數(shù)的子程序.94.5 外部中斷0和外部中斷1的中斷服務(wù)子程序.9五 軟件系統(tǒng)測試.105.1 系統(tǒng)仿真效果圖.10六 實(shí)物圖及測試分析.10 6.1 實(shí)物效果圖.106.2 測試結(jié)果及誤差分析.11七 設(shè)計(jì)總結(jié).12八 參考文獻(xiàn).12九 附錄.139.1 元件清單.139.2 源程序代碼.131、問題重述1.1 設(shè)計(jì)要求:制作簡易秒表,最小顯示位10ms,計(jì)時(shí)范圍059分59秒990毫秒一鍵控制三種工作狀態(tài):清零、計(jì)時(shí)、停止系統(tǒng)工作符合一般秒表要求1.2 拓展要求:可記錄多個(gè)成績秒表精度0.1s2、設(shè)計(jì)方案與論證在mcu的選擇上直接選取物美價(jià)廉的st

4、c89c52型號(hào)的單片機(jī),雖然它是一款較低級(jí)的單片機(jī),但是用于制作秒表來說已經(jīng)足夠了。在這里主要討論顯示電路的選擇2.1 方案比較:方案一:選用七段數(shù)碼管做顯示設(shè)備方案二:選用lcd1602液晶顯示屏做顯示設(shè)備2.2 方案論證:方案一:七段數(shù)碼管操作方便,并且顯示效果良好價(jià)格也低廉。但是在界面切換到記錄數(shù)據(jù)的時(shí)候并不是十分直觀,在與單片機(jī)相接的時(shí)候還要在加驅(qū)動(dòng),加大了工作量,并且數(shù)碼管的耗能較大。方案二:lcd1602液晶顯示屏顯示清晰,切換顯示界面也很直觀,可直接與單片機(jī)相連,方便快捷且耗能較少。但是價(jià)格較高,操作起來較復(fù)雜。2.3方案選擇:綜合各個(gè)方面,選擇lcd1602作為顯示設(shè)備。2.

5、4 總方案設(shè)計(jì)框圖:按鍵控制電路單片機(jī)最小系統(tǒng)電路lcd1602顯示電路圖1 總方案設(shè)計(jì)圖3、單元模塊設(shè)計(jì)3.1 按鍵控制電路 圖2 按鍵控制電路圖放置四個(gè)按鍵開關(guān),分別接在單片機(jī)的p3.1p3.4上,另一端接地。如圖2所示,單片機(jī)檢測這幾個(gè)引腳的高低電平狀態(tài)即可知道是否按下了開關(guān)。而這四個(gè)開關(guān)分別控制記錄、起停、復(fù)位以及界面切換的功能,通過單片機(jī)對四個(gè)按鍵狀態(tài)檢測的反饋來分別實(shí)現(xiàn)這四個(gè)功能。3.2 單片機(jī)最小系統(tǒng)電路圖3 單片機(jī)最小系統(tǒng)圖單片機(jī)的最小系統(tǒng)(如圖3)就是單片機(jī)能夠正常工作所必須具備的部分。包括三個(gè)部分,分別是復(fù)位電路、晶振電路和電源電路。3.2.1 復(fù)位電路在單片機(jī)系統(tǒng)中,復(fù)位

6、電路是非常關(guān)鍵的,當(dāng)程序跑飛(運(yùn)行不正常)或死機(jī)(停止運(yùn)行)時(shí),就需要進(jìn)行復(fù)位。mcs-5l 系列單片機(jī)的復(fù)位引腳rst( 第9 管腳) 出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果rst 持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。復(fù)位操作通常有兩種基本形式:上電自動(dòng)復(fù)位和開關(guān)復(fù)位。而在本文中采用的為上電復(fù)位,即每次上電的瞬間給單片機(jī)復(fù)位。3.2.2 晶振電路xtal1(19 腳):芯片內(nèi)部振蕩電路輸入端;xtal2(18 腳):芯片內(nèi)部振蕩電路輸出端;xtal1 和xtal2 是獨(dú)立的輸入和輸出反相放大器,它們可以被配置為使用石英晶振的片內(nèi)振蕩器,或者是器件直接由外部時(shí)鐘驅(qū)動(dòng)。本

7、文中采用的是內(nèi)時(shí)鐘模式,即采用利用芯片內(nèi)部的振蕩電路,在xtal1、xtal2 的引腳上外接定時(shí)元件(一個(gè)石英晶體和兩個(gè)電容),內(nèi)部振蕩器便能產(chǎn)生自激振蕩。以此來提供給單片機(jī)工作信號(hào)脈沖。3.2.3 電源電路:電源電路即為單片機(jī)提供電源的電路,20腳接地,40教接電源,一般選擇5v。51 單片機(jī)的ea/vpp(31 腳) 是內(nèi)部和外部程序存儲(chǔ)器的選擇管腳。當(dāng)ea 保持高電平時(shí),單片機(jī)訪問內(nèi)部程序存儲(chǔ)器;當(dāng)ea 保持低電平時(shí),則不管是否有內(nèi)部程序存儲(chǔ)器,只訪問外部存儲(chǔ)器。對于現(xiàn)今的絕大部分單片機(jī)來說,其內(nèi)部的程序存儲(chǔ)器(一般為flash)容量都很大,因此基本上不需要外接程序存儲(chǔ)器,而是直接使用內(nèi)

8、部的存儲(chǔ)器。 3.2.4 p0口外接上拉電阻:51 單片機(jī)的p0 端口為開漏輸出,內(nèi)部無上拉電阻,為了能使p0 口在輸出時(shí)能驅(qū)動(dòng)nmos 電路和避免輸入時(shí)讀取數(shù)據(jù)出錯(cuò),需外接上拉電阻。一般選擇4.7k10k的上拉電阻即可。本文中選取的是4.7k的上拉電阻。3.3 lcd1602顯示電路 圖4 lcd1602液晶顯示屏接線圖1602液晶也叫1602字符型液晶(如圖4),它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊,顯示的內(nèi)容為16x2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。如圖4所示,1腳為電源地;2腳為5v電源正極;3腳為調(diào)節(jié)背光引腳,此處接10k滑動(dòng)變阻器來調(diào)節(jié)

9、背光,以便能夠能清楚的看到液晶屏所顯示的字符;第4腳:rs為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。本文中接在單片機(jī)的p1.0端口上;第5腳:rw為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。本文中接在單片機(jī)的p1.1端口上;第6腳:e端為使能端,高電平時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。本文中接在單片機(jī)的p1.5端口上;第714腳:d0d7為8位雙向數(shù)據(jù)端。本文中接在單片機(jī)的p0端口上;3.4 總電路仿真圖圖5 總電路圖4、軟件模塊設(shè)計(jì)4.1 主循環(huán)函數(shù)的流程圖如下:開始初始化定時(shí)器、外部中斷及液晶產(chǎn)生t0中斷進(jìn)入t0的中斷子程序進(jìn)入外部中斷int0的中斷子程序進(jìn)入

10、外部中斷int1的中斷子程序進(jìn)入t1的中斷子程序產(chǎn)生t1中斷產(chǎn)生int0中斷產(chǎn)生int1中斷nynynyny 圖6 主循環(huán)流程圖4.2 定時(shí)器0的中斷服務(wù)子程序t0中斷入口tr0=1返回重新給定時(shí)器賦初值msec=msec+1msec=100sec=sec+1;msec=0sec=60min=min+1;sec=0min=60min=0 nyy nyny ny圖7 圖7 定時(shí)中斷0的中斷子程序流程圖4.3 定時(shí)器1的中斷服務(wù)子程序t1中斷入口重新給定時(shí)器賦初值key1=0記錄下當(dāng)前的時(shí)間值key4=0flag=flagflag=0調(diào)用顯示1調(diào)用顯示2返回 ny nyny圖8定時(shí)中斷1的中斷子程

11、序流程圖4.4 兩個(gè)顯示函數(shù)的子程序顯示程序1入口顯示秒表以及記錄數(shù)據(jù)的個(gè)數(shù)返回顯示程序2入口顯示已經(jīng)記錄下的數(shù)據(jù)返回圖10 顯示函數(shù)2的流程圖圖9 顯示函數(shù)1的流程圖4.5 外部中斷0和外部中斷1的中斷服務(wù)子程序外部中斷1的中斷入口返回key3=0清除所有當(dāng)前數(shù)據(jù),并把定時(shí)器重新賦初值外部中斷0的中斷入口tr0=tr0返回key2=0 nny y圖11 外部中斷0的中斷子程序流程圖 圖12 外部中斷0的中斷子程序流程圖5、軟件系統(tǒng)測試:5.1 仿真效果圖 圖13 未計(jì)數(shù)時(shí)界面1顯示圖 圖14未計(jì)數(shù)時(shí)界面2顯示圖圖13為未開始計(jì)時(shí)時(shí)顯示界面一的顯示值。圖14為未開始計(jì)時(shí)時(shí)顯示界面二的顯示值。

12、圖15 計(jì)數(shù)時(shí)界面1顯示圖 圖16 計(jì)數(shù)時(shí)界面2顯示圖圖15為開始計(jì)時(shí)并已記錄了兩次時(shí)的顯示界面一的顯示值 。圖16為開始計(jì)時(shí)并已記錄了兩次時(shí)的顯示界面二的顯示值 。6、 實(shí)物圖及測試分析6.1 實(shí)物效果圖圖17未計(jì)數(shù)時(shí)界面1顯示圖圖17表示為開始計(jì)時(shí)時(shí),界面一的顯示如圖所示,顯示值全部為0。 圖18計(jì)數(shù)時(shí)界面1顯示圖圖18表示開始計(jì)時(shí),并且已經(jīng)完成兩次記錄時(shí)界面一的顯示值,如圖所示,record等于2,表示已經(jīng)完成了兩次記錄。 圖19 計(jì)數(shù)時(shí)界面2顯示圖圖19表示界面二的顯示值,即顯示已經(jīng)記錄下的兩個(gè)數(shù)據(jù),如圖所示第一行為第一個(gè)數(shù)據(jù),第二行為第二個(gè)數(shù)據(jù)。6.2 測試結(jié)果及誤差分析6.2.1

13、測試結(jié)果 表1 測試記錄表測試值3.42s7.80s15.88s24.51s54.64s117.73s實(shí)際值3.43s7.82s15.90s24.53s54.68s117.79s誤差0.01s0.02s0.02s0.02s0.04s0.06s6.2.2 誤差分析雖然是利用單片機(jī)的定時(shí)器做了精確定時(shí),但是其實(shí)單片機(jī)每次進(jìn)出中斷都是有一定的時(shí)間損耗的,因此事實(shí)上并不是百分之百精確,還是會(huì)產(chǎn)生一定的誤差。如果通過多次測試,然后對定時(shí)器的初值做一個(gè)修正,這樣會(huì)再次提高精確度,但是并不存在絕對的精確,只能將誤差減小。如果要求更精確的秒表,那么就不是簡單的單片機(jī)定時(shí)器就可以解決的,需要采用更精準(zhǔn)的時(shí)鐘及高

14、速芯片來完成精度要求了。七、設(shè)計(jì)總結(jié)在緊張的兩個(gè)星期中,我們實(shí)驗(yàn)小組終于排除了困難,完成了秒表系統(tǒng)的設(shè)計(jì)與制作。在實(shí)驗(yàn)中,我們用上了平時(shí)上課老師教給我們的知識(shí),讓我們的設(shè)計(jì)有了更多的思路,讓我們學(xué)到了很多書本上沒有的知識(shí),同時(shí)也讓我們學(xué)習(xí)了許多課外的知識(shí),不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世。在發(fā)現(xiàn)問題和解決問題后,最終我們的設(shè)計(jì)還是成功了。本次課程設(shè)計(jì)主要從硬件和軟件兩個(gè)方面結(jié)合說明設(shè)計(jì)的總體思路和

15、實(shí)現(xiàn)過程,預(yù)期的設(shè)計(jì)目的是:能夠?qū)崿F(xiàn)計(jì)時(shí)的基本功能,正常顯示計(jì)時(shí)。在設(shè)計(jì)過程中,曾經(jīng)遇到很多的障礙,設(shè)計(jì)圖經(jīng)過許多次的修改最后才定下來,但在調(diào)試的過程中又出現(xiàn)了問題需要修改原理圖;在編程那里花費(fèi)的時(shí)間是最多的,編程的過程是要考慮到程序的可行性和是否與硬件兼容。而能否接好線是本試驗(yàn)的一大難題!在設(shè)計(jì)中有好多問題都是因?yàn)槔碚撝R(shí)不扎實(shí),在有些管腳的置零置一上,概念的模糊,還有就是對單片機(jī)的指令不夠熟悉。通過此次課程設(shè)計(jì)我們有了更深的認(rèn)識(shí),只有在設(shè)計(jì)制作的過程中不斷的學(xué)習(xí)才能有更新的進(jìn)步。不論在什么地方、什么崗位我門都要不斷學(xué)習(xí),學(xué)以致用。才能把我們的工作做的更好。八、參考文獻(xiàn)1劉樂善.微型計(jì)算機(jī)接

16、口技術(shù)及應(yīng)用m.北京:北京航空航天大學(xué)出版社,20012王東峰,單片機(jī)c語言應(yīng)用100例,北京,電子工業(yè)出版社,20093禹言春,單片機(jī)的多機(jī)通信,安徽,安徽農(nóng)學(xué)通報(bào),20074陳海宴,51單片機(jī)原理及應(yīng)用,北京,北京航空航天大學(xué)出版社,20105李平,單片機(jī)入門與開發(fā)北京,機(jī)械工業(yè)出版社,2008九、附錄9.1 元件清單原理圖型號(hào)個(gè)數(shù)數(shù)值單片機(jī)at89c511-晶振crystal112mhz液晶顯示lcd:lm016c1-電阻res110k電容cap320p;10u排阻respack-8110k滑動(dòng)變阻器rv1110k按鍵button4-9.2 源程序代碼#include /包含51頭文件#

17、include/包含空操作頭文件/*兩個(gè)宏定義類型,方便操作*/typedef unsigned char uint8;/宏定義typedef unsigned int uint16;#define count0 10000 /設(shè)置定時(shí)器0定時(shí)時(shí)間為10ms#define th_0 (65536-count0)/256 /給定時(shí)器賦初值#define tl_0 (65536-count0)%256#define count1 15000 /設(shè)置定時(shí)器1定時(shí)時(shí)間為15ms#define th_1 (65536-count1)/256 /給定時(shí)器賦初值#define tl_1 (65536-cou

18、nt1)%256/*單片機(jī)位定義*/sbit rs=p10; /lcd1602寄存器選擇sbit rw=p11; /lcd1602讀寫選擇位sbit en=p15; /lcd1602使能信號(hào)位sbit busy=p07; /忙碌標(biāo)志位,將bf位定義為p0.7sbit key1=p31; /定義按鍵1為p31口 用于記錄當(dāng)下的時(shí)間sbit key2=p32;/定義按鍵2為p32口 用于控制秒表的開始與暫停sbit key3=p33; /定義按鍵3為p33口 用于清零所有記錄及當(dāng)前計(jì)時(shí)sbit key4=p34; /定義按鍵4為p34口 用于切換當(dāng)前計(jì)時(shí)與記錄計(jì)時(shí)的界面/*設(shè)置一些全局變量*/ui

19、nt8 num=0,sec=0,min=0,rec=0,flag=0; /num表示以10ms單位計(jì)時(shí) sec表示秒 /min表示分鐘 rec表示記錄的次數(shù) flag作為切換顯示的標(biāo)志位uint8 code dis2=0123456789; /定義記錄顯示數(shù)組uint8 code dis1=0123456789; /定義秒表的顯示數(shù)組uint8 num12=0,0; /定義記錄數(shù)據(jù)的數(shù)組,用以保存記錄的數(shù)據(jù)uint8 sec12=0,0; / 此處只設(shè)置記錄兩次uint8 min12=0,0; uint8 key1status = 0;/定義key1的狀態(tài)位uint8 key4status =

20、 0;/定義key4的狀態(tài)位void delay(uint8 n) /短延時(shí) 初始化lcd1602所用 uint8 a,b,c; for(c=n;c0;c-) for(b=142;b0;b-) for(a=2;a0;a-);void busy_test() /忙檢驗(yàn) p0 = 0xff;dors = 0;rw = 1;en = 0;en = 1;while(busy=1);en = 0;/*函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊入口參數(shù):dictate*/void write_cmd (uint8 dictate) busy_test(); /如果忙就等待 en = 0; p0 = d

21、ictate; rs = 0; /rs和r/w同時(shí)為低電平時(shí),可以寫入指令 rw = 0; _nop_(); _nop_(); /空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 /將數(shù)據(jù)送入p0口,即寫入指令或地址 _nop_(); _nop_();_nop_();_nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 en = 1; /e置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 en = 0; /當(dāng)e由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令 /*函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ascii碼)寫入液晶模塊入口參數(shù):x(為字符常量

22、)*/ void write_data(uint8 x) busy_test(); en = 0; p0 = x; rs = 1; /rs為高電平,rw為低電平時(shí),可以寫入數(shù)據(jù) rw = 0; /e置低電平(寫指令時(shí),e為高脈沖, / 就是讓e從0到1發(fā)生正跳變,所以應(yīng)先置0 /將數(shù)據(jù)送入p0口,即將數(shù)據(jù)寫入液晶模塊 _nop_();_nop_();_nop_();_nop_();/空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 en = 1; /e置高電平 _nop_();_nop_();_nop_();_nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 en = 0; /當(dāng)e由高電平跳變成低電平時(shí)

23、,液晶模塊開始執(zhí)行命令 /*函數(shù)功能:指定字符顯示的實(shí)際地址入口參數(shù):x*/ void write_addr(uint8 x) write_cmd(x|0x80); /顯示位置的確定方法規(guī)定為80h+地址碼x /*函數(shù)功能:對lcd的顯示模式進(jìn)行初始化設(shè)置*/void init_lcd1602() delay(10); /延時(shí)15ms,首次寫指令時(shí)應(yīng)給lcd一段較長的反應(yīng)時(shí)間 write_cmd(0x38); /顯示模式設(shè)置:162顯示,57點(diǎn)陣,8位數(shù)據(jù)接口delay(2); /延時(shí)5mswrite_cmd(0x0c); /顯示模式設(shè)置:顯示開,有光標(biāo),光標(biāo)閃爍delay(2);write_

24、cmd(0x06); /顯示模式設(shè)置:光標(biāo)右移,字符不移delay(2);write_cmd(0x01); /清屏幕指令,將以前的顯示內(nèi)容清除delay(2);/*lcd頁面一的顯示函數(shù) 主要顯示秒表及是否記錄到數(shù)據(jù)*/void display1()/顯示函數(shù)1 顯示秒表以及記錄情況uint8 i,j,k,m,n,o,p,q;i=num/10;j=num%10;k=sec/10;m=sec%10;n=min/10;o=min%10;write_addr(0x00); /設(shè)置從第一行的第一格開始顯示write_data(t); /寫入字母t write_data(i);write_data(m)

25、;write_data(e);write_data(:); write_data(dis1n); /寫入min的最高位write_data(dis1o); write_data(:);write_data(dis1k);write_data(dis1m); write_data(.);write_data(dis1i);write_data(dis1j); write_data(dis10); p=rec/10;q=rec%10; write_addr(0x40); /設(shè)置從第二行的第一格開始顯示write_data(r); write_data(e);write_data(c);write_

26、data(o);write_data(r);write_data(d);write_data(:); write_data(dis1p);write_data(dis1q); /*lcd頁面二的顯示函數(shù)主要顯示已經(jīng)記錄的兩個(gè)數(shù)據(jù)*/void display2()/顯示函數(shù)2 顯示記錄write_addr(0x00); /設(shè)置從第一行的第一格開始顯示記錄的第一個(gè)數(shù)據(jù)write_data(r); /寫入字母t write_data(e);write_data(:);write_data(1);write_data(,); write_data(dis1min10/10); /寫入min的最高位wr

27、ite_data(dis1min10%10); write_data(:);write_data(dis1sec10/10);write_data(dis1sec10%10); write_data(.);write_data(dis1num10/10);write_data(dis1num10%10); write_data(dis10); write_addr(0x43); /設(shè)置從第二行的第三格開始顯示已經(jīng)記錄的第二個(gè)數(shù)據(jù)write_data(2);write_data(,); write_data(dis1min11/10); /寫入min的最高位write_data(dis1min1

28、1%10); write_data(:);write_data(dis1sec11/10);write_data(dis1sec11%10); write_data(.);write_data(dis1num11/10);write_data(dis1num11%10); write_data(dis10); void init_timer0()/定時(shí)器0初始化th0=th_0; /設(shè)置定時(shí)器初值tl0=tl_0;ea=1;/打開總終端允許位et0=1; /打開定時(shí)器0的中斷允許位tr0=0; /選擇關(guān)閉定時(shí)器0tmod|=0x01; /設(shè)置工作方式1void init_timer1()/定時(shí)

29、器1初始化th1=th_1; /設(shè)置定時(shí)器初值tl1=tl_1;ea=1;/打開總終端允許位et1=1; /打開定時(shí)器1的中斷允許位tr1=1; /選擇打開定時(shí)器1tmod|=0x10; /設(shè)置工作方式1void init_int0_1() /外部中斷0和1的初始化ex0=1; /打開外部中斷的允許位ex1=1;it0=0; /設(shè)置外部中斷的觸發(fā)方式為低電平觸發(fā)it1=0;void xiaodou() /用于按鍵消抖的短延時(shí)函數(shù),大概8msuint8 i,j;for(i=0;i8;i+)for(j=0;j110;j+);main() /主函數(shù)init_lcd1602();/初始化lcd1602

30、init_timer0();/初始化定時(shí)器0init_timer1();/初始化定時(shí)器1init_int0_1();/初始化外部中斷0和1while(1); /主循環(huán)void timer0() interrupt 1 /定時(shí)器0中斷函數(shù) 用于精確定時(shí)th0=th_0; /進(jìn)入中斷則重新給定時(shí)器賦初值tl0=tl_0;num=num+1; /num自加1,進(jìn)入一次表示10msif(num=100)/如果自加100次,則表示1s sec=sec+1;/因此表示秒的變量加1num=0;/并且把num清0 if(sec=60)/如果自加60s,則表示1分鐘min=min+1;/因此表示分鐘的變量加1sec=0;/清零秒變量if(min=60) /滿60分鐘后清零分鐘位min=0;void t

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論