電子時鐘計時器的設(shè)計(c語言版)_第1頁
電子時鐘計時器的設(shè)計(c語言版)_第2頁
電子時鐘計時器的設(shè)計(c語言版)_第3頁
電子時鐘計時器的設(shè)計(c語言版)_第4頁
電子時鐘計時器的設(shè)計(c語言版)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、湖南人文科技學(xué)院課程設(shè)計報告課程名稱:單片機(jī)原理及應(yīng)用課程設(shè)計設(shè)計題目: 電子時鐘的設(shè)計 系 別: 通信與控制工程系 專 業(yè): 通信工程 班 級: 09級通信二班 學(xué)生姓名: 袁 琦 黃文付 學(xué) 號: 09416230 09416227 起止日期: 2011年12月20日2011年12月30日指導(dǎo)教師: 王善偉 姚毅 謝四蓮 教研室主任: 劉建閩 1指導(dǎo)教師評語: 指導(dǎo)教師簽名: 年 月 日成績評定項 目權(quán)重成績袁琦黃文付1、設(shè)計過程中出勤、學(xué)習(xí)態(tài)度等方面0.22、課程設(shè)計質(zhì)量與答辯0.53、設(shè)計報告書寫及圖紙規(guī)范程度0.3總 成 績 教研室審核意見:教研室主任簽字: 年 月 日教學(xué)系審核意見

2、: 主任簽字: 年 月 日摘 要時鐘是人類日常生活必不可少的工具,本設(shè)計從日常生活中常見的事物入手,通過對電子時鐘的設(shè)計,讓我們認(rèn)識到單片機(jī)已經(jīng)深入到我們生活的每個領(lǐng)域,該設(shè)計不僅可以鍛煉我們的動手能力,而且可以加深我們對單片機(jī)的認(rèn)識和激發(fā)我們對未知科學(xué)領(lǐng)域的探索。本文利用單片機(jī)實現(xiàn)數(shù)字時鐘計時功能的主要內(nèi)容。它體積小,成本低、功能強(qiáng)、使用方便、可靠性高等一系列優(yōu)點,廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動化上。本次設(shè)計采用獨(dú)立式按鍵進(jìn)行時間調(diào)整,其中stc89c52是核心元件,同時采用數(shù)碼管led動態(tài)顯示“時”,“分”,“秒”的現(xiàn)代計時裝置。與傳統(tǒng)機(jī)械表相比,它具有走時精確,顯示直觀等特點。它的計時周期

3、為24小時,顯滿刻度為“23時59分59秒”,另外利用ds1302具有校時功能,斷電后有記憶功能,恢復(fù)供電時可實現(xiàn)計時同步等特點。該系統(tǒng)同時具有硬件設(shè)計簡單、工作穩(wěn)定性高、價格低廉等優(yōu)點。關(guān)鍵詞:stc89c52 ; led數(shù)碼管;8255芯片;ds1302芯片;目錄設(shè)計要求11方案論證與對比11.1方案一11.2方案二21.3方案對比22系統(tǒng)硬件電路的設(shè)計32.1單片機(jī)的選擇及引腳功能介紹32.2 8255a芯片的結(jié)構(gòu)及引腳功能介紹42.3 ds1302芯片的結(jié)構(gòu)及引腳功能介紹62.4顯示電路設(shè)計72.5電源電路設(shè)計82.6鍵盤動態(tài)掃描電路設(shè)計83控制系統(tǒng)的軟件設(shè)計103.1主程序流程圖10

4、3.2顯示子程序113.3鬧鐘時間設(shè)定功能程序113.4鍵盤掃描程序124系統(tǒng)功能調(diào)試與整體指標(biāo)134.1硬件調(diào)試與分析134.2軟件調(diào)試與分析144.3性能分析145詳細(xì)儀器清單146總結(jié)與思考及致謝15參考文獻(xiàn)16附錄一:程序(方案一)17附錄二:程序(方案二)25電子時鐘的設(shè)計設(shè)計要求利用單片機(jī)作為控制核心,完成一個時鐘計時器。具體要求如下:(1)采用6位led數(shù)碼顯示時、分、秒。(2)時制式為24小時制。(3)使用按鍵開關(guān)可實現(xiàn)時、分調(diào)整。(4)秒表/時鐘功能轉(zhuǎn)換。(5)定時設(shè)定提醒的功能。(6)整點提醒(蜂鳴)。(7)ds1302設(shè)時,對時,掉電記憶時間的功能。1方案論證與對比1.1

5、方案一此方案采用單片機(jī)內(nèi)部定時器t0進(jìn)行計時,stc89s52實時控制。如圖1所示:圖 1 方案一系統(tǒng)方框圖1.2方案二此方案采用專用時鐘芯片ds1302精確計時,單片機(jī)stc89c52實時讀取時鐘顯示至6位數(shù)碼管。如圖2所示:圖 2 方案二系統(tǒng)方框圖1.3方案對比以上方案中,方案一設(shè)計簡潔,編程比較簡單,計時精度不高,準(zhǔn)確性不能完全保證。雖硬件簡潔、成本更低廉、便于實現(xiàn),綠色環(huán)保,編程簡單易寫,不能達(dá)到提高同學(xué)們編程的能力和對單片機(jī)及其擴(kuò)展芯片的學(xué)習(xí)和深程度的去了解單片機(jī)及其更廣泛的應(yīng)用,故在此我們選擇挑戰(zhàn),放棄對其選擇。雖然我們對其進(jìn)行了放棄,但我們也把此方法的程序?qū)懞靡员氵M(jìn)行對比。方案二

6、與方案一相比,編程比較復(fù)雜,計時精度較高,而且可以靈活運(yùn)用,可擴(kuò)展性好,并能充分的利用單片機(jī)的有效資源。還可讓我們培養(yǎng)我們的自學(xué)能力,自己去發(fā)掘單片機(jī)內(nèi)部結(jié)構(gòu)及其擴(kuò)展功能,自己去學(xué)會怎樣對其他芯片控制的學(xué)習(xí)方法,使得課程設(shè)計具有一定的挑戰(zhàn)性,正因如此,故我們選擇方案二。2系統(tǒng)硬件電路的設(shè)計2.1單片機(jī)的選擇及引腳功能介紹stc89c52具有如下特點:40個引腳(引腳圖如圖四所示),4k bytes flash片內(nèi)程序存儲器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(ram),32個外部雙向輸入/輸出(i/o)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看

7、門狗(wdt)電路,片內(nèi)時鐘振蕩器。此外,stc89c52rc設(shè)計和配置了振蕩頻率可為0hz并可通過軟件設(shè)置省電模式??臻e模式下,cpu暫停工作,而ram定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存ram的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時該芯片還具有pdip、tqfp和plcc等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。圖4 stc89c52芯片引腳圖引腳功能介紹:vcc(40):5v; gnd(20):接地; p0口(3932):p0口為8位漏極開路雙向i/o口,每引腳可吸收8個ttl門電流; p1口(18):p1口是從內(nèi)部提供上拉電阻器的8位雙向i/o口

8、,p1口緩沖器能接收和輸出4個ttl門電流; p2口(2128):p2口為內(nèi)部上拉電阻器的8位雙向i/o口,p2口緩沖器可接收和輸出4個ttl門電流; p3口(1017):p3口是8個帶內(nèi)部上拉電阻器的雙向i/o口,可接收和輸出4個ttl門電流,p3口也可作為at89c51的特殊功能口; rst(9):復(fù)位輸入。當(dāng)振蕩器復(fù)位時,要保持rst引腳2個機(jī)器周期的高電平時間; ale/prog(30):當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié),在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6,它可用作對外

9、部輸出的脈沖或用于定時目的,要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過1個ale脈沖; psen(29):外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期2次psen有效,但在訪問外部數(shù)據(jù)存儲器時,這2次有效的psen信號將不出現(xiàn); ea/vpp(31):當(dāng)ea保持低電平時,外部程序存儲器地址為(0000hffffh)不管是否有內(nèi)部程序存儲器。flash編程期間,此引腳也用于施加12v編程電源(vpp); xtal1(19):反向振蕩器放大器的輸入及內(nèi)部時鐘工作電路的輸入;xtal2(18):來自反向振蕩器的輸出。2.2 8255a芯片的結(jié)構(gòu)及引腳功能介紹8255a芯片是i

10、ntel公司生產(chǎn)的通用可編程并行接口電路,廣泛應(yīng)用于單片機(jī)擴(kuò)展并行i/o口。它具有8個位并行口pa、pb和pc。8255a芯片的內(nèi)部結(jié)構(gòu)及引腳如圖5所示。(1)8255a的內(nèi)部結(jié)構(gòu)8255a的內(nèi)部結(jié)構(gòu)有以下幾部分組成:a.并行i/o端口a、b、c 8255a的內(nèi)部有3個8位并行i/o口:a口、b口、c口。3個i/o口都可以通過編程選擇為輸入口或輸出口,但在結(jié)構(gòu)和功能上有所不同。a口:含有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位輸入鎖存器。b口:含有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位輸入鎖存器(不鎖存)。c口:含有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位輸入鎖存器(不鎖存)。當(dāng)數(shù)據(jù)傳送不需要聯(lián)絡(luò)

11、信號時,這3個端口都可以用作輸入口或輸出口。當(dāng)a口b口需要有聯(lián)絡(luò)信號時,c口可以作為a口和b口的聯(lián)絡(luò)信號線。b.工作方式控制電路:8255a的三個端口在使用使可分為a、b兩組。a組包括a口8位和c口高4位:b組包括b口8位和c口低4位。兩組的控制電路中分別有控制寄存器,根據(jù)寫入的控制字決定兩組的工作方式,也可對c口每一位置“1” 或清“0”。c.數(shù)據(jù)總線緩沖器:數(shù)據(jù)總線緩沖器是三態(tài)雙向的8位緩沖器,是8255a與單片機(jī)數(shù)據(jù)總線的接口,8255a的d0d7可以和at89c51單片機(jī)的p0.0p0.7直接相連。數(shù)據(jù)的輸入輸出、控制字和狀態(tài)信息的傳遞,均可通過數(shù)據(jù)總線緩沖器進(jìn)行。d.讀/寫控制邏輯:

12、8255a讀/寫控制邏輯的作用是從cpu的地址和控制總線上接受有關(guān)信號,轉(zhuǎn)變成各種控制命令送到數(shù)據(jù)緩沖器及a組和b組的控制電路,控制a、b、c3個端口的操作。其引腳圖如圖5所示:圖5 8255引腳圖引腳功能介紹:8255a共有40個引腳,一般為雙列直插dip封裝,40個引腳可分為與cpu連接的數(shù)據(jù)線、地址和控制信號以及與外圍設(shè)備連接的三個端口線。d0d7:雙向三態(tài)數(shù)據(jù)總線。reset:復(fù)位信號,輸入,高電平有效。復(fù)位后,控制寄存器清0,a口、b口、c口被置為輸入方式。cs:片選信號,輸入,低電平有效。rd.:讀信號,輸入,低電平有效。有效時,允許cpu通過8255a d0d7讀取數(shù)據(jù)或狀態(tài)信息

13、。wr.:寫信號,輸入,低電平有效。有效時,允許a1a0:端口控制信號,輸入。2位可構(gòu)成四種狀態(tài),分別尋址a口、b口、c口和控制寄存器pa0pa7:a口數(shù)據(jù)線,雙向。pb0pb7:b口數(shù)據(jù)線,雙向。pc0pc7:c口數(shù)據(jù)/信號線,雙向。當(dāng)8255a工作于方式0時,pc0pc7分為兩組(每組4位)并行i/o數(shù)據(jù)線;當(dāng)8255a工作于方式1或方式2時,pc0pc7為a口、b口提供聯(lián)絡(luò)信號。2.3 ds1302芯片的結(jié)構(gòu)及引腳功能介紹 ds1302 是美國dallas公司推出的一種高性能、低功耗、帶ram的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為2.5

14、v5.5v。采用三線接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。ds1302內(nèi)部有一個318的用于臨時性存放數(shù)據(jù)的ram寄存器。ds1302是ds1202的升級產(chǎn)品,與ds1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。(1)ds1302的引腳功能及結(jié)構(gòu) ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運(yùn)行。ds1302由vcc1或vcc2兩者中的較大者供電。當(dāng)vcc2大于vcc10.2v時,vcc2給ds1302供電。當(dāng)vcc2小于vcc1時,ds13

15、02由vcc1供電。x1和x2是振蕩源,外接32.768khz晶振。rst是復(fù)位/片選線,通過把rst輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)rst為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對ds1302進(jìn)行操作。如果在傳送過程中rst置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時,在vcc2.5v之前,rst必須保持低電平。只有在sclk為低電平時,才能將rst置為高電平。i/o為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。sclk始終是輸入端

16、。 ds1302的引腳功能以及單片機(jī)的連接圖如圖6圖6 ds1302引腳及其與單片機(jī)連接的原理圖2.4顯示電路設(shè)計單片機(jī)中通常用七段led構(gòu)成字型“8”,另外,還有一個小數(shù)點發(fā)光二極管以顯示小數(shù)位!這種顯示器有共陰和共陽兩種!發(fā)光二極管的陽極連在一起的(公共端)稱為共陽極顯示器,陰極連在一起的稱為共陰極顯示器。一位顯示器由8個發(fā)光二極管組成,其中,7個發(fā)光二極管構(gòu)成字型“8”的各個筆劃(段),a_g,另一個小數(shù)點為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管上施加一定的正向電壓時,該段筆畫即亮;不加電壓則暗。為了保護(hù)各段led不被損壞,需外加限流電阻。由于共陰極連接需加驅(qū)動,故在這里我采用的是共陽陽極連

17、接。以共陽極led為例,各led公共陽極k0接高電平,若向各控制端a,b,,g,dp順次送入00011110信號,則該顯示器顯示“”字型。共陰極7段led顯示數(shù)字0 f、文字、符號及小數(shù)點的編碼(a段為最地位,dp點為最高位),如圖7。圖7 數(shù)碼管的驅(qū)動顯示電路設(shè)計2.5電源電路設(shè)計在各種電子設(shè)備中,直流穩(wěn)壓電源是必不可少的組成部分,它是電子設(shè)備唯一能量來源,它的設(shè)計思路是根據(jù)我們以前學(xué)過的模電電子技術(shù),要想得到我們所要的+6v輸出電壓,就需將交流220v的電壓經(jīng)過變壓器、整流電路、濾波電路和穩(wěn)壓電路四個部分。2.6鍵盤動態(tài)掃描電路設(shè)計在單片機(jī)系統(tǒng)中按鍵數(shù)量較多時,為了減少i/o口的占用,常常

18、將按鈕排列成矩陣式鍵盤中,每條水平線和直線在交叉處不直接連通,而是通過一個按鈕加以連接。這樣,一個端口(如p1口)就能組成4*4=16個按鈕,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條就能組成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是最合理的。矩陣式鍵盤的按鈕識別辦法確定矩陣式鍵盤上何鍵被按下簡紹一種“行掃描法”。行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的,按鈕識別辦法,如下圖示鍵盤,介紹過程如下。判斷鍵盤中有無鍵盤按下將全部行線置低電平,然后檢測列的電平為低,則表示鍵盤中有鍵被按下,而且

19、閉合的鍵位位于低電平線與4根行線相交叉的4個按鈕之中。若所有列線均為高電平,則鍵盤中無鍵按下。判斷閉合鍵所在的位置:在確認(rèn)有鍵按下后,即可置某根行線為低電平時,其他線為高電平。在確定某根位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列與置為低電平的行線交叉處的按鈕就是閉合的按鈕。將程序通過串口下載到單片機(jī)中,在鍵盤上按任意鍵時,將會在數(shù)碼管上顯示對應(yīng)的字符。為了驅(qū)動鍵盤,同上以8255_pc第四位作為輸入,8255pc高四位作為列掃描輸出,以此來實現(xiàn)動態(tài)掃描顯示法。如圖8所示:圖8 鍵盤動態(tài)掃描電路設(shè)計3控制系統(tǒng)的軟件設(shè)計3.1主程序流程圖本設(shè)計中主程序主要實現(xiàn)顯示的初始化和調(diào)用

20、各子程序工作的功能,讀取時間的子程序主要實現(xiàn)初始化,時間信息的采集和顯示段碼的碼的存取。分別對各個器件的功能進(jìn)行編程設(shè)計,根據(jù)主程序流程圖(如下)進(jìn)行全面的分析。設(shè)計中計時主要以定時器t0中斷完成,定點鬧鈴使用峰鳴器來完成。當(dāng)端口有開關(guān)按下時,轉(zhuǎn)入相應(yīng)的功能程序。其主程序執(zhí)行流程圖如下圖9:圖9 主程序流程圖3.2顯示子程序時間顯示子程序顯示時鐘芯片3個內(nèi)存單元(小時、分鐘、秒鐘)的bcd碼數(shù)據(jù),8255的pa口送數(shù)碼管的位選編碼。8255的pb口送段選編碼,位選段選編碼存放在rom表中。顯示時,先取出位選編碼數(shù)據(jù),然后送至pa口輸出,接著取出段選編碼數(shù)據(jù)送至pb口輸出,剩下的數(shù)碼管以同樣地方

21、法送數(shù)據(jù)直到將3個內(nèi)存單元的數(shù)據(jù)分成6個位全部送去數(shù)碼管顯示。數(shù)碼管顯示子程序流程圖如圖9所示:圖 10 數(shù)碼管顯示子程序流程圖3.3鬧鐘時間設(shè)定功能程序在時鐘狀態(tài)下,觸發(fā)外中斷1時,進(jìn)入鬧鐘時間設(shè)定模式,且不影響t0計時器的功能狀態(tài),在鍵盤上輸入對應(yīng)的數(shù)字進(jìn)行時間設(shè)定。當(dāng)分別按下調(diào)節(jié)時鐘、分鐘和秒鐘的個位時,時間自動確定,鬧鐘時間只精確到分鐘。鬧鐘時間設(shè)定流程圖如圖11所示:圖11 鬧鐘時間設(shè)定流程圖3.4鍵盤掃描程序本設(shè)計采用動態(tài)掃描法,動態(tài)掃描法不僅掃描鍵陣,也可以實現(xiàn)顯示,是目前應(yīng)用十分廣泛的一種方法。動態(tài)掃描法是采用輸出“移動”信號,輪流對各行按鍵進(jìn)行檢測來實現(xiàn)的。設(shè)置行線為輸出,列

22、線為輸入,當(dāng)無按鍵按下時,列輸入全為“1”.設(shè)計時,將某一行輸出為“0”,讀取列線值,若其中某一位為“0”,則表明行、列交叉處的按鍵按下,否則,無按鍵按下;繼續(xù)掃描下一行(將下一行輸出為“0”),直至全掃描完為止。鍵盤掃描程序流程圖如12圖所示:圖12 鍵盤掃描程序流程圖4系統(tǒng)功能調(diào)試與整體指標(biāo)4.1硬件調(diào)試與分析(1)時間準(zhǔn)確性調(diào)試硬件調(diào)試時可先檢查印制版及焊接的質(zhì)量情況,將電子時鐘通電后,顯示00:00:00。觸發(fā)int0中斷開始計時,每過一秒時間就顯示變化一次。計時準(zhǔn)確,顯示穩(wěn)定。(2)鬧鈴功能調(diào)試將時鐘調(diào)到11點59分58秒,2秒后,時鐘開始定點鬧鈴,鈴聲為“嘀-嘀-嘀-嘀”聲,持續(xù)1

23、分鐘報時聲自動停止也可以觸發(fā)功能鍵來中止鬧鈴。設(shè)計的電子時鐘計時精確度較高,并可應(yīng)用于日常生活中。 能夠通過鍵盤對電子時鐘進(jìn)行調(diào)整,且調(diào)整過程簡單方便,易于操作,有較強(qiáng)的人性化設(shè)計。 并且可通過鍵盤實現(xiàn)鬧鈴與時間模式的切換,使電子時鐘的功能更加強(qiáng)大。 能夠進(jìn)行定時鬧鈴,計時較準(zhǔn)確,基本能實現(xiàn)測試目標(biāo)。4.2軟件調(diào)試與分析軟件調(diào)時在keil c51編譯器下進(jìn)行,源程序編譯及仿真調(diào)試應(yīng)分段或以子程序為單位逐個進(jìn)行,最后可結(jié)合硬件實時調(diào)試。4.3性能分析按照設(shè)計程序分析,led顯示器動態(tài)掃描的頻率為167hz,實際使用觀察時完全沒有閃爍。由于計時中斷程序中加了中斷延時誤差處理,所以實際計時精度非常高

24、,可滿足多種場合的應(yīng)用需要。5詳細(xì)儀器清單表格 1 儀器清單儀器名稱儀器名稱stc89c52stc89c528255a8255a3位數(shù)碼管3位數(shù)碼管2個ds1302ds130211.0592k晶振11.0592k晶振32.768k晶振32.768k晶振矩陣鍵盤44矩陣30pf電容30pf電容100pf電容100pf電容1k電阻1k電阻蜂鳴器蜂鳴器6總結(jié)與思考及致謝在老師的指導(dǎo)和同學(xué)的幫助之下,我完成了此次單片機(jī)課程設(shè)計。從開始接到課題要求到時鐘的實現(xiàn),再到論文的完成,每走一步對我來說都是新的嘗試與挑戰(zhàn)。在這次的課程設(shè)計中不僅檢驗了我所學(xué)習(xí)的知識,也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,

25、又如何完成一件事情。在設(shè)計過程中,與同學(xué)分工設(shè)計,和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。課程設(shè)計是我們專業(yè)課程知識綜合應(yīng)用的實踐訓(xùn)練,著是我們邁向社會,從事職業(yè)工作前一個必不少的過程。這次時鐘計時器設(shè)計的經(jīng)歷也會使我終身受益,我感受到做設(shè)計是要用心去做的一件事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力,沒有自己的研究,就不會有所突破。通過設(shè)計,我在老師的精心指導(dǎo)和嚴(yán)格要求下,獲得了豐富的理論知識,極大地提高了實踐能力。最后,再一次感謝我的老師.,老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我學(xué)習(xí)的榜樣;老師循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪;這次時鐘計時器設(shè)計的每個

26、環(huán)節(jié),都離不開老師您的細(xì)心指導(dǎo)。我懂得了學(xué)習(xí)的重要性,了解到理論知識與實踐相結(jié)合的重要意義,學(xué)會了堅持、耐心和努力,這將為自己今后的學(xué)習(xí)和工作做出了最好的榜樣。參考文獻(xiàn)1 余錫存.單片機(jī)原理及接口技術(shù) m.西安:西安電子科技大學(xué)出版社,2000 2 賈好來.mcs-51單片機(jī)原理及應(yīng)用 m.北京:機(jī)械工業(yè)出版社,20063 樓然苗,李光飛.單片機(jī)課程設(shè)計指導(dǎo)m.北京:北京航空航天大學(xué)出版社,20074 夏路易,石宗義.電路原理圖與電路板設(shè)計教程北京希望電子工業(yè)出版20025 朱定華,戴汝平.單片微機(jī)原理與應(yīng)用.(m) 北京:清華大學(xué)出版社,2003附錄一:程序(方案一)#include#inc

27、lude#define uint unsigned int#define uchar unsigned char#define pa xbyte0xd1ff#define pb xbyte0xd2ff#define pc xbyte0xd5ff #define pcon xbyte0xd7ffsbit buzzer=p33;/蜂鳴器端口/數(shù)碼管0-9的段選編碼uchar code tabledu=0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28;/數(shù)碼管各位選編碼uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0x

28、ef,0xdf;/全局變量定義unsigned long num1,num2;uchar shi0,shi1,fen0,fen1,m0,m1,num,num3,aa,bb,cc,count,temp,count,s,flag,flag1;char hour,min,second,h0,h1,mi0,mi1,s0,s1;void init();/初始化函數(shù)聲明void display(uchar,uchar,uchar,uchar,uchar,uchar );/顯示函數(shù)聲明void delay(uint);/帶參數(shù)延時函數(shù)聲明 1毫秒void keyscan();/鍵盤掃描函數(shù)void main

29、()pcon=0x80;init();while(1)/主體循環(huán)keyscan();/時鐘分離部分m1=aa%10;m0=aa/10;fen1=bb%10;fen0=bb/10;shi1=cc%10;shi0=cc/10;/clock分離部分s1=second%10;s0=second/10;mi1=min%10;mi0=min/10;h1=hour%10;h0=hour/10;/時鐘顯示和clock顯示部分if(num3=1&num30;x-)for(y=124;y0;y-);/*鍵盤函數(shù)函數(shù)*/void keyscan()pc=0xfe;temp=pc;temp=temp&0xf0;if(

30、temp!=0xf0)delay(5);temp=pc;temp=temp&0xf0;if(temp!=0xf0)temp=pc;switch(temp)case 0xee:num3=1;/秒鐘加一按鍵break;case 0xde:num3=2;/分鐘加一按鍵break;case 0xbe:num3=3;/時鐘加一按鍵break;case 0x7e:num3=4;/清零按鍵break;while(temp!=0xf0)/松手檢測temp=pc;temp=temp&0xf0;display(shi0,shi1,fen0,fen1,m0,m1);switch(num3)case 1: aa+;i

31、f(aa59)aa=0; break;case 2: bb+;if(bb59)bb=0; break;case 3: cc+;if(cc23)cc=0; break;case 4: aa=0,bb=0,cc=0;break; pc=0xfd;temp=pc;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=pc;temp=temp&0xf0;if(temp!=0xfe)temp=pc;switch(temp)case 0xed:num3=5;/定時器暫停,并進(jìn)入設(shè)置clock狀態(tài)按鍵break;case 0xdd:num3=6;/設(shè)置clock的秒,分,時加

32、時按鍵break;case 0xbd:num3=7;/設(shè)置clock的秒,分,時減時按鍵break;case 0x7d:num3=8;/定時器暫停,開啟按鍵break;while(temp!=0xf0)temp=pc;temp=temp&0xf0;display(h0,h1,mi0,mi1,s0,s1);switch(num3)case 5:tr0=0;count+;if(count=4)count=0;tr0=1;break;case 6:if(count=1)second+;if(second=60)second=0;else if(count=2)min+;if(min=60)min=0

33、;else if(count=3)hour+;if(hour=24)hour=0;break;case 7:if(count=1)second-;if(second=-1)second=59;else if(count=2)min-;if(min=-1)min=59;else if(count=3)hour-;if(hour=-1)hour=23;break;case 8:s+;if(s%2=1)tr0=0;elsetr0=1;if(s=2)s=0;break;附錄二:程序(方案二)#include#include#define uchar unsigned char#define uint

34、unsigned int#define uchar unsigned char#define pa xbyte0xd1ff#define pb xbyte0xd2ff#define pc xbyte0xd5ff#define pcon xbyte0xd7ffuchar num,temp,hour,minute,second,hour1,hour2,minute1,minute2,second1,second2;uchar aa,aa1,aa2,bb,bb1,bb2,cc,cc1,cc2;sbit buzzer=p33;/蜂鳴器sbit d0=p10;/用來指示鬧鐘開啟關(guān)閉的ledbit fla

35、g;/鬧鐘開啟關(guān)閉的標(biāo)志位uint a0;uchar code tabledu=0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28;/數(shù)碼管0123456789的段選編碼uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/數(shù)碼管的位選編碼sbit sclk=p32;sbit rst=p26;sbit io=p35;/*毫秒延時程序*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*微秒延時程序*/void delay_us(uc

36、har n)uchar i; for(i=0;in;i+) ;/*1302做好準(zhǔn)備*/void ready_init1302()rst=0;sclk=0;rst=1;/*1302單字節(jié)數(shù)據(jù)寫入*/void write1302(uchar dat)uchar i;sclk=0;delay_us(2);for(i=0;i=1; /*1302雙字節(jié)數(shù)據(jù)寫入(寄存器地址和數(shù)據(jù))*/void write_set1302(uchar cmd,uchar dat)ready_init1302();delay_us(2);write1302(cmd);write1302(dat);sclk=1;rst=0;/

37、*1302單字節(jié)數(shù)據(jù)讀出*/uchar read1302()uchar i,dat;dat=0;delay_us(2);for(i=0;i=1;if(1=io)dat=dat|0x80;sclk=1;delay_us(2);sclk=0;delay_us(2);return dat;/*1302單字節(jié)數(shù)據(jù)讀出(讀指定寄存器值)*/uchar read_set1302(uchar cmd)uchar dat;ready_init1302();write1302(cmd);dat=read1302();sclk=1;rst=0;return dat;/*1302初始化(設(shè)置初始時間)*/void init1302()write_set1302(0x8e,0x00);write_set1302(0x80,(0/10)4|(0%10);write_set1302(0x82,(27/10)4|(27%10);write_set1302(0x84,(10/10)4)*10+(tem

溫馨提示

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

評論

0/150

提交評論