電子時鐘(LCD顯示)_第1頁
電子時鐘(LCD顯示)_第2頁
電子時鐘(LCD顯示)_第3頁
電子時鐘(LCD顯示)_第4頁
電子時鐘(LCD顯示)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、摘要 在我們身邊,單片機(jī)隨處可見,只是它藏得比較隱蔽,需要我們細(xì)心觀察才可以發(fā)現(xiàn)。其實,我們的用的計算器,MP3,手機(jī),電腦,還有家里用的電飯鍋、電冰箱、洗衣機(jī)等家電設(shè)備,他們的核心部件可以說都是單片機(jī),只不過性能不一樣而已。當(dāng)然電子時鐘也是單片機(jī)的使用領(lǐng)域之一。生活中很多地方需要使用電子時鐘,比如說上體育課跑步時用的表,廣告牌上的倒計時等等。那些電子時鐘看起來功能很強(qiáng)大,其實就是由一塊單片機(jī),加上幾個按鈕及其他電子元器件組成的。本課程設(shè)計就是用一塊 89C51 單片機(jī)和一塊 LCD1602 液晶顯示屏及其他元器件設(shè)計出一個電子時鐘。用單片機(jī)的定時器來產(chǎn)生時鐘信號,用液晶顯示屏來顯示時鐘的變化

2、,通過掃描幾個按鍵來控制時鐘。把這幾個模塊的程序及原理圖設(shè)計好后組合在一起就成了一個電子時鐘。關(guān)鍵字:89C51 單片機(jī)、LCD1602 液晶、定時器、按鍵掃描。2目目錄錄摘要 .1目錄 .21 單片機(jī)的發(fā)展及應(yīng)用 .31.1 單片機(jī)的發(fā)展 .31.2 單片機(jī)的應(yīng)用 .42 總體方案設(shè)計 .52.1 系統(tǒng)框圖.52.2 顯示控制方案.52.3 鍵盤控制方案.92.4 時鐘工作顯示模塊.9 2.5 復(fù)位電路模塊.92.6 晶振電路模塊.93 硬件設(shè)計 .103.1 STC89C52RC 單片機(jī)的簡介.103.2 STC89C52RC 單片機(jī)的封裝.104 設(shè)計思路.104.1 主程序模塊 .11

3、5 原理圖 .146 實物圖 .147 總結(jié).158 參考文獻(xiàn) .15附錄 .1631 單片機(jī)的發(fā)展及應(yīng)用1.1 單片機(jī)的發(fā)展單片微型計算機(jī)是微型計算機(jī)的一個重要分支,也是一種非常活躍和頗具有生命力的機(jī)種。單片微型計算機(jī)簡稱單片機(jī),特別適用于工業(yè)控制領(lǐng)域,因此又稱為微控器。 1971 年微處理器研制成功不久,就出現(xiàn)了單片微型計算機(jī)即單片機(jī),但最早的單片機(jī)是 1 位的,處理能力有限。果將 8 位單片機(jī)的推出作為起點(diǎn),那么單片機(jī)的發(fā)展歷史大致可以分為以下幾個階段:第一階段(19761978):單片機(jī)的探索階段。以 Intel 公司的 MCS-48 為代表。MCS-48 的推出是在工控領(lǐng)域的探索,參

4、與這一探索的公司還有Motorola、Zilog 等。都取得了滿意的效果。這就是 SCM 的誕生年代,“單片機(jī)”一詞即由此而來。第二階段(19781982):單片機(jī)的完善階段。Intel 公司在 MCS-48 基礎(chǔ)上推出了完善的、典型的單片機(jī)系列 MCS-51。它在以下幾個方面奠定了典型的通用總線型單片機(jī)體系結(jié)構(gòu)。(1).完善的外部總線。MCS-51 設(shè)置了經(jīng)典的 8 位單片機(jī)的總線結(jié)構(gòu),包括 8 位數(shù)據(jù)總線、16 位地址總線、控制總線及具有多機(jī)通信功能的串行通信接口。(2).CPU 外圍功能單元的集中管理模式。(3).體現(xiàn)工控特性的地址空間及位操作方式。(4).指令系統(tǒng)趨于豐富和完善,并且增

5、加了許多突出控制功能的指令。第三階段(19821990):8 位單片機(jī)的鞏固發(fā)展及 16 位單片機(jī)的推出階段,也是單片機(jī)向微控制器發(fā)展的階段。Intel 公司推出的 MCS-96 系列單片機(jī),將一些用于測控系統(tǒng)的模數(shù)轉(zhuǎn)換器、程序運(yùn)行監(jiān)視器、脈寬調(diào)制器等納入片中,體現(xiàn)了單片機(jī)的微控制器特征。第四階段(1990):微控制器的全面發(fā)展階段。隨著單片機(jī)在各個領(lǐng)域全面、深入地發(fā)展和應(yīng)用,出現(xiàn)了高速、大尋址范圍、強(qiáng)運(yùn)算能力的 8 位/16位/32 位通用型單片機(jī),以及小型廉價的專用型單片機(jī)。41.2 單片機(jī)的應(yīng)用 單片機(jī)的應(yīng)用很廣,分別在以下領(lǐng)域中得到了廣泛的應(yīng)用。工業(yè)自動化:在自動化技術(shù)中,無論是過程控

6、制技術(shù)、數(shù)據(jù)采集技術(shù)還是測控技術(shù),都離不開單片機(jī)。在工業(yè)自動化的領(lǐng)域中,機(jī)電一體化技術(shù)將發(fā)揮愈來愈重要的作用,在這種機(jī)械、微電子和計算機(jī)技術(shù)為一體的綜合技術(shù)(例如機(jī)器人技術(shù)、數(shù)控技術(shù))中,單片機(jī)將發(fā)揮非常重要的作用特別是近些年來,隨著計算機(jī)技術(shù)的發(fā)展,工業(yè)自動化也發(fā)展到了一個新的高度,出現(xiàn)了無人工廠、機(jī)器人作業(yè)、網(wǎng)絡(luò)化工廠等,不僅將人從繁重、重復(fù)和危險的工業(yè)現(xiàn)場解放出來,還大大提高了生產(chǎn)效率,降低了生產(chǎn)成本。儀器儀表:目前對儀器儀表的自動化和智能化要求越來越高。在自動化測量儀器中,單片機(jī)應(yīng)用十分普及。單片機(jī)的使用有助于提高儀器儀表的精度和準(zhǔn)確度,簡化結(jié)構(gòu),減小體積,易于攜帶和使用,加速儀器儀表

7、向數(shù)字化、智能化和多功能化方向發(fā)展。消費(fèi)類電子產(chǎn)品:該應(yīng)用主要反映在家電領(lǐng)域。目前家電產(chǎn)品的一個重要發(fā)展趨勢是不斷提高其智能化程度。例如,電子游戲、照相機(jī)、洗衣機(jī)、電冰箱、空調(diào)、電視機(jī)、微波爐、手機(jī)、IC 卡、汽車電子設(shè)備等。在這些設(shè)備中使用了單片機(jī)后,其功能和性能大大提高,并實現(xiàn)了智能化、最優(yōu)化控制信方面:較高檔的單片機(jī)都具有通信接口,因而為單片機(jī)在通信設(shè)備中的應(yīng)用創(chuàng)造了很好的條件。例如,在微波通信、短波通信、載波通信、光纖通信、程控交換等通信設(shè)備和儀器中都能找到單片機(jī)的應(yīng)用。武器裝備:在現(xiàn)代化的武器裝備中, 如飛機(jī)、軍艦、坦克、導(dǎo)單、魚雷制導(dǎo)、智能武器設(shè)備、航天飛機(jī)導(dǎo)航系統(tǒng),都有單片機(jī)在其

8、中發(fā)揮重要作用。終端及外部設(shè)備控制:計算機(jī)網(wǎng)絡(luò)終端設(shè)備,如銀行終端,以及計算機(jī)外部設(shè)備如打印機(jī)、硬盤驅(qū)動器、繪圖機(jī)、傳真機(jī)、復(fù)印機(jī)等,在這些設(shè)備中都使用了單片機(jī)。近年來隨著科技的飛速發(fā)展,同時帶動自動控制系統(tǒng)日新月異更新,單片機(jī)的應(yīng)用正在不斷地走向深入。52 總體方案設(shè)計2.12.1 系統(tǒng)框圖系統(tǒng)框圖 計算器的總體設(shè)計框圖如圖 2.1 所示。AT89C51最小應(yīng)用系統(tǒng)按鍵電路晶振電路復(fù)位電路LCD顯示時間時鐘工作指示電路 圖 2.1 系統(tǒng)框圖2.2 顯示控制模塊LCD1602 字符顯示器模塊是 2 行 X16 個字符的 LCD 顯示器。該器件由 32 個字符點(diǎn)陣塊組成,可以顯示 ASCII 碼

9、表中的所有可顯示字符。LCD1602 字符顯示器外形和引腳排列、名稱如圖 2.2 所示。1602 采用標(biāo)準(zhǔn)的 16 腳接口,其中:6第 1 腳:VSS 為地電源第 2 腳:VDD 接 5V 正電源第 3 腳:V0 為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個 10K 的電位器調(diào)整對比度第 4 腳:RS 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第 5 腳:RW 為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng) RS和 RW 共同為低電平時可以寫入指令或者顯示地址,當(dāng) RS 為低電平 RW 為高電

10、平時可以讀忙信號,當(dāng) RS 為高電平 RW 為低電平時可以寫入數(shù)據(jù)。第 6 腳:E 端為使能端,當(dāng) E 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第 714 腳:D0D7 為 8 位雙向數(shù)據(jù)線。 第 1516 腳:空腳1602 液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了 160 個不同的點(diǎn)陣字符圖形,如表 1 所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是 01000001B(41H),顯示時模塊把地址 41H 中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A” 71602 液晶模塊內(nèi)部的控制器

11、共有 11 條控制指令,如表 2 所示, 它的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明:1 為高電平、0 為低電平) 指令 1:清顯示,指令碼 01H,光標(biāo)復(fù)位到地址 00H 位置指令 2:光標(biāo)復(fù)位,光標(biāo)返回到地址 00H 指令 3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效 指令 4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍 指令 5:光標(biāo)或顯示移

12、位 S/C:高電平時移動顯示的文字,低電平時移動光標(biāo) 指令 6:功能設(shè)置命令 DL:高電平時為 4 位總線,低電平時為 8 位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示 5x7 的點(diǎn)陣字符,高電平時顯示 5x10 的點(diǎn)陣字符 (有些模塊是 DL:高電平時為 8 位總線,低電平時為 4 位總線)指令 7:字符發(fā)生器 RAM 地址設(shè)置 指令 8:DDRAM 地址設(shè)置 指令 9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。 指令 10:寫數(shù)據(jù) 指令 11:讀數(shù)據(jù) 8液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前

13、一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,表 3 是 DM-162 的內(nèi)部顯示地址. 比如第二行第一個字符的地址是 40H,那么是否直接寫入 40H 就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位 D7 恒定為高電平 1 所以實際寫入的數(shù)據(jù)應(yīng)該是 01000000B(40H)+10000000B(80H)=11000000B(C0H) 單片機(jī)與 LCD1602 典型連接圖本單片機(jī)顯示模塊采用 LCD1602A-1 型液晶顯示器,用單片機(jī)的 P0 口作為 1602的數(shù)據(jù)輸入端,因為

14、 P0 口作為輸出端口時需要外接上拉電阻,故在 P0 口接阻值 1k 的排阻作為上拉電阻。同時讓 1602 的 E、RW、RS 針腳分別與單片機(jī)的P2.7、P2.6、P2.5 口相接。92.3 鍵盤控制鍵盤控制模塊模塊根據(jù)題目要求及另加的一些功能要求,總共只需要 6 個按鍵(如圖 2.3),故選用獨(dú)立按鍵模式。 這六個鍵分別為,時鐘開始/暫停鍵 k1、時鐘模式鍵 k2(兩種模式:24 小時制模式、60 秒制模式)、調(diào)時選擇鍵 k3、加值鍵 k4、減值鍵k5、單片機(jī)復(fù)位鍵 k6。下面具體介紹一下每個鍵的功能。K1:時鐘兩種時鐘方式下工作的開關(guān)鍵。K2:24 小時制模式和 60 秒制模式的轉(zhuǎn)換鍵。

15、K3:時、分、秒的調(diào)時選擇鍵。K4:加值鍵,每按一次所選的時間值加 1;K5:減值鍵,每按一次所選的時間值減 1;K6:單片機(jī)手動復(fù)位鍵;圖 2.32.4 時鐘工作顯示模塊時鐘工作顯示模塊本模塊采用 LED 和一個限流電阻實現(xiàn),當(dāng)時鐘正常工作時 LED 便不停的閃爍。2.5 復(fù)位電路模塊復(fù)位電路模塊復(fù)位電路采用手動復(fù)位和上電自動復(fù)位組合。2.6 晶振電路模塊晶振電路模塊本設(shè)計采用 12Mhz 的晶振,33pF 的電容。103 硬件設(shè)計3.1 STC89C52RC 單片機(jī)的簡介STC89C52RC 是宏晶科技有限公司生產(chǎn)的新一代超強(qiáng)抗干擾/高速/低功耗單片機(jī)。 單片機(jī)片內(nèi) 8Kbytes 的可反

16、復(fù)擦寫的只讀程序存儲器(FLASH)和512bytes 的隨機(jī)存儲器(RAM),器件采用高密度、非易失存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)傳統(tǒng)的 8051 指令系統(tǒng),片內(nèi)置通用 8 位中央處理器(CPU)和 Flash 存儲單元,功能強(qiáng)大。STC89C52R 單片機(jī)可提供許多高性價的應(yīng)用場合,可靈活的應(yīng)用于各種控制領(lǐng)域。主要性能參數(shù):(1)與傳統(tǒng)的 8051 產(chǎn)品指令系統(tǒng)的全兼容 (2)8k 字節(jié)可重擦寫 Flash閃速存儲器(3)100000 次可擦寫周期(4)工作頻率(5v):0Hz-80MHz(5)512 個字節(jié)內(nèi)部 RAM (6)2K 芯片內(nèi) EEPROM,可擦寫 10 萬次以上(7)32 個可編程

17、 I/O 口線(8)3 個 16 位定時/計數(shù)器(9)8 個中斷源(10)可編程串行 UART 通道(11)低功耗空閑和掉電模式 3.2 STC89C52RC 封裝:114 4 設(shè)計思路設(shè)計思路題目難點(diǎn)在于鍵盤的指令輸入,由于每個按鍵都具有相應(yīng)的一種或多種功能,程序中需要大量使用 if 語句和 while 語句。4.1 主程序模塊主程序按功能模塊的話,主要包含 4 個部分:初始化程序:設(shè)置單片機(jī)的定時器 0 和 1 工作在模式 1(16 位定時器),其中定時器 0 產(chǎn)生 24 小時時鐘模式的信號,定時器 1 產(chǎn)生 60 秒時鐘模式的信號;對定時器 0 和 1 裝初值,開啟總中斷和定時器中斷,L

18、CD1602 的初始化及其他變量的聲明和賦初值。該部分程序,LCD1602 的初始化為重點(diǎn)。寫該部分程序應(yīng)該全面讀懂它的使用說明。按鍵掃描程序:對 K1 到 K5 五個按鍵進(jìn)行掃描,對按下不同的鍵讓單片機(jī)做出不同的響應(yīng)。因為每個按鍵都有不同的功能,所以程序中需要使用大量的if 語句層層嵌套,這是本部分程序的兩個難點(diǎn)之一。另外一個難點(diǎn)就是對按鍵去抖動延時的設(shè)定,如果延時值太大了,則按鍵不靈敏;如果延時值太小,則出現(xiàn)重復(fù)操作的現(xiàn)象,解決這個問題需要在仿真時不斷的調(diào)試,以取個適中延時值。定時中斷程序:完成對時鐘的在 LCD1602 顯示前的數(shù)據(jù)處理,產(chǎn)生秒,分。時。主要難點(diǎn)為秒分時之間的進(jìn)位關(guān)系。L

19、CD 顯示程序:LCD 顯示程序即包含在定時中斷程序里邊,也與前邊的 LCD初始化程序有關(guān)。主要難點(diǎn)在將時鐘的變化顯示在 LCD1602 的正確位置,不要出現(xiàn)亂碼或者不符合時鐘的顯示格式。程序的運(yùn)行步驟如圖 4 所示12圖 4 程序流程圖開始初始化函數(shù)有鍵按下?無鍵按下是 K2 鍵否按的次數(shù) b24 小時模式60 秒模式b 變?yōu)?0,初始化模式b=1b=2b=3有鍵按下?K1?否否否否按了奇次?按了奇次?否是15時鐘暫停時鐘工作有鍵按下?返回時鐘模式否K5?K4?K3?按的次數(shù) b1選定秒位24 小時模式否選定分位選定時位有鍵按下?選定位加1b1 變?yōu)?0返回時鐘工作選定位減1無效否否b1=1

20、b1=2b1=3b1=4165 原理圖 6 實物圖177 7總結(jié)總結(jié)有付出就有回報!在一個多禮拜的課程設(shè)計過程中,我學(xué)到了很多東西。首先,我的 C 語言編程能力有了很大的提高。這次課程設(shè)計的程序雖然說借鑒了別人的一部分,但絕大對數(shù)還是自己一行一行寫的。以前最多只能寫幾十行的程序,現(xiàn)在一寫就寫了三百多行;以前只知道寫簡單的單個 if 和 while 語句,現(xiàn)在能把他們層層嵌套起來使用;以前只知道使用整型和字符型變量,通過這次課程設(shè)計,我又學(xué)會了使用數(shù)組和指針??梢哉f,對用 C51 編程有了更深的認(rèn)識。其次,也檢驗我一個學(xué)期來單片機(jī)的學(xué)習(xí)情況。俗話說,實踐是檢驗真理的唯一標(biāo)準(zhǔn)。以前考試只是在紙上寫

21、寫,可以說是理論上的,課程設(shè)計才是真正的檢驗。只有把理論用在實際上,學(xué)習(xí)才是成功的。在課程設(shè)計的過程中,我一直遇到很多困難,很多就是因為我沒有把理論用在實際上。上單片機(jī)課時,書本上要求:P0 口做輸出時一定要接上拉電阻;使用內(nèi)部儲存器時,EA 一定要接高電平??稍诤附訉嵨飼r,我卻把它們忘了,導(dǎo)致自己花了很多時間在檢查這些低級錯誤。通過這次課程設(shè)計,我對實際使用單片機(jī)有了更深的認(rèn)識。另外,課程設(shè)計也是對我耐心細(xì)心的考驗。人們常說,科學(xué)容不得半點(diǎn)粗心大意。以前聽沒什么感覺,現(xiàn)在才知道它的分量的確很大。在一次單片機(jī)的檢測中,我從同學(xué)那里拿來電源(電源是同學(xué)說調(diào)好了 5v 的),也許是我太粗心或是我太

22、心急了,我沒有用電壓表測下多少伏就把它接到單片機(jī)板上,結(jié)果不但把自己的單片機(jī)燒壞了,還把借來另一塊也燒了。后來發(fā)覺不對勁,測量了一下電壓,差不多 10v,整整比單片機(jī)額定電壓大一倍。還好,只燒壞了單片機(jī),沒燒壞其他元器件,要不然就全前功盡棄了。試想一下,如果是出去外邊工作的話,可能我的一個這樣的失誤就會把一臺價值不菲的儀器搞壞了。這種低級而又嚴(yán)重的錯誤,我想我以后再也不會犯了,因為這次的錯誤深深地警醒了我。最后,通過本次課程設(shè)計,也讓我懂得了合作的重要性。剛開始做課程設(shè)計時,我是一個人單獨(dú)的干,遇到問題也沒有主動去問別人。雖然有時候到最后還是自己把問題解決了,可這過程花的時間太多了,可以說是事

23、倍功半。后來,遇到的問題實在解決不了,我就請教了其他同學(xué),人多不盡力量大,智慧也多,我的問題很就解決了。可以說課程設(shè)計能夠按時完成,完全離不開其他同學(xué)的幫助??偟膩碚f,這次課程設(shè)計讓我學(xué)到了很多,有知識上的,也有其他方面的。唯一覺得不足的,就是單片機(jī)程序沒用匯編來寫。雖然說當(dāng)今流行用 C 語言來控制單片機(jī),可是在某些方面,比如說對設(shè)備精密性,可靠性很高時,就需要用匯編來編寫程序,因為匯編的時序性比 C 語言的好很多。8 8參考文獻(xiàn)參考文獻(xiàn)(1)、蔣輝平、周國雄.基于 Proteus 的單片機(jī)系統(tǒng)設(shè)計與仿真實例,北京:機(jī)械工業(yè)出版社.2009 年 7 月.(2)趙建領(lǐng).51 系列單片機(jī)開發(fā)寶典.

24、北京:電子工業(yè)出版社.2007 年 4 月.(3)彭偉. 單片機(jī) C 語言程序設(shè)計實訓(xùn) 100 列基于 8051+Proteus 仿真. 18北京:電子工業(yè)出版社.2010 年 1 月. /本電子時鐘程序,包含 24 小時模式,即“00:00:00”模式 ;也包含 60 秒模式即“00:00”模式./其中 24 小時模式可以設(shè)置電子時鐘的時 分 秒位。60 秒模式不可設(shè)置。/ K1:時鐘兩種時鐘方式下工作的開關(guān)鍵。/K2:24 小時制模式和 60 秒制模式的轉(zhuǎn)換鍵。/K3:時、分、秒的調(diào)時選擇鍵。/K4:加值鍵,每按一次所選的時間值加 1;/K5:減值鍵,每按一次所選的時間值減 1;/K6:單

25、片機(jī)手動復(fù)位鍵;#include#define uchar unsigned char#define uint unsigned int#definebusy 0 x80sbit k1=P10;sbit k2=P11;sbit k3=P12;sbit k4=P13;sbit k5=P14;sbit RS=P25; sbit RW=P26; sbit E=P27;sbit led=P20;uchar code table= 00:00:00;/24 小時模式電子時鐘uchar code table5= 00:00;/60 秒模式電子時鐘uchar code table1=0,1,2,3,4,5,

26、6,7,8,9;uchar code table3=08 wei dian zi;uchar code table2=3108008067/63/54;uchar d,e,num,t,b,b1,a,aa,shihaomiao,miao1;char shi,fen,miao;void delay(uint z)/延時函數(shù)uint x,y; for(x=z;x0;x-) for(y=200;y0;y-); bit lcd_busy()/測試 LCD 忙碌狀態(tài) bit result; E= 0;RS= 0; /指令19RW= 1; /讀出 E= 1;delay(4);/高電平讀出1us result

27、=(bit)(P0&busy); E= 0; return result; void write_1602cmd(uchar cmd)/向 1602 寫命令 while(lcd_busy(); RS=0; delay(5);/延時一下,因為 LCD1602 是慢顯示器件,要確保前一指令已完成 RW=0; delay(5); E=0; delay(5); P0=cmd; E=1; delay(10); E=0; void write_1602Data(uchar Data)/向 1602 寫數(shù)據(jù) while(lcd_busy(); RS=1; delay(5); RW=0; delay(

28、5); E=0; P0=Data; delay(5); E=1; delay(10); E=0; /lcd 初始化 void LCD_init() write_1602cmd(0 x01);/清屏delay(5);/延時一下,因為 LCD1602 是慢顯示器件,要確保前一指令已完成write_1602cmd(0 x38);/功能設(shè)定 delay(5);20 write_1602cmd(0 x0c);/光標(biāo)不閃爍 delay(5);write_1602cmd(0 x06);/lcd 模式設(shè)定,i/d=1(計數(shù)地址加 1)delay(5); void init() t=0,led=1; TMOD=

29、0X11;/設(shè)置定時器 0,置定時器 1 在工作方式 1,T0 用于 24小時模式,T1 用于 60 秒模式 TH0=(65536-50000)/256; / 給定時器 0 裝初值 TL0=(65536-50000)%256; TH1=(65536-500)/256; /給定時器 1 裝初值 TL1=(65536-500)%256; EA=1; /開啟總中斷 ET0=1;/ 開啟外部中斷 0 中斷 ET1=1;/ 開啟定時器 1 中斷 TR0=0; TR1=0; LCD_init();/LCD1602 初始化 /向 1602 第一行寫入“08 wei dian zi” write_1602cm

30、d(0 x80); for(num=0;num14;num+)write_1602Data(table3num);delay(5);/向 1602 第二行寫入“3108008067/63/54” write_1602cmd(0 x80+0 x40); for(num=0;num16;num+)write_1602Data(table2num);delay(5);/顯示程序 void display(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;21write_1602cmd(0 x80+0 x40+add);write_160

31、2Data(table1shi);write_1602Data(table1ge);/按鍵掃描程序void key_check() if(k2=0)/模式選擇鍵 delay(200);/延時去抖動 delay(200); if(k2=0) b1+; if(b1=1) /b1=1 時,進(jìn)入 24 小時時鐘模式 if(TR0=0&d=0) d=1; LCD_init(); write_1602cmd(0 x80+0 x40); /向 1602 第二行寫入“ 00:00:00 ” for(num=0;num12;num+)write_1602Data(tablenum);delay(5);

32、if(k1=0) TR0=TR0;/ 開關(guān)按鍵。按奇次下,時鐘開始;按偶次下,時鐘暫停; if(k3=0)/k3 為調(diào)時選擇鍵 delay(200);/延時去抖動 delay(200); if(k3=0) b+; if(b=1)/如果 k3 按了 1 次,選定秒位,并且關(guān)閉定時器 0TR0=0; write_1602cmd(0 x80+0 x40+11);write_1602cmd(0 x0f);/打開光標(biāo)閃爍 if(b=2)/如果 k3 按了 2 次,選定分位write_1602cmd(0 x80+0 x40+8);22if(b=3)/如果 k3 按了 3 次,選定時位 write_1602

33、cmd(0 x80+0 x40+5);if(b=4)/如果 k3 按了 4 次,退出調(diào)時狀態(tài),并且打開定時器 0b=0;write_1602cmd(0 x0c); /關(guān)閉光標(biāo)閃爍TR0=1; if(b!=0) /如果 b 不為 0.表示已進(jìn)入調(diào)時狀態(tài) if(k4=0)/k4 為加值鍵 delay(250);/延時去抖動 delay(200); delay(150); if(k4=0) if(b=1) /如果 b 為 1 給秒加值miao+;if(miao=60)miao=0;display(10,miao);if(b=2)/如果 b 為 2.給分加值fen+;if(fen=60)fen=0;d

34、isplay(7,fen);if(b=3) /如果 b 為 3.給時加值shi+;if(shi=24)shi=0;display(4,shi);23 if(k5=0)/k5 為減值鍵 delay(250);/延時去抖動 delay(200); delay(150); if(k5=0) if(b=1)/如果 b 為 1.給秒減值miao-;if(miao=-1)miao=59; display(10,miao);if(b=2)/如果 b 為 2 給分減值fen-;if(fen=-1)fen=59; display(7,fen); if(b=3)/如果 b 為 3.給時減值shi-;if(shi=-1)shi=23;display(4,shi); if(b1=2) /b1=2 時,為 60 秒時鐘模式 if(TR1=0&e=0) TR0=0;e=1; LCD_init();24write_1602cmd(0 x80+0 x40); /向 1602 第二行寫入“ 00:00 ” for(num=0;num11;num+)write_

溫馨提示

  • 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

提交評論