不帶時鐘芯片的萬年歷設(shè)計.doc_第1頁
不帶時鐘芯片的萬年歷設(shè)計.doc_第2頁
不帶時鐘芯片的萬年歷設(shè)計.doc_第3頁
不帶時鐘芯片的萬年歷設(shè)計.doc_第4頁
不帶時鐘芯片的萬年歷設(shè)計.doc_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

山東科技大學本科畢業(yè)(論文)摘 要單片機具有體積小、重量輕、價格便宜、功耗低、控制功能強及運算速度快等特點,在人們生活的各個領(lǐng)域得到了廣泛的應(yīng)用。而多功能電子萬年歷作為一種非常廣泛日常計時工具,是單片機比較典型的一類應(yīng)用。電子萬年歷可以對年、月、日、周、時、分、秒進行計時,并將時間以數(shù)字的方式直觀的顯示出來。相較于傳統(tǒng)的鐘表誤差大、使用壽命不長、要經(jīng)常的更改時間,顯示不直觀的缺點。萬年歷軟、硬件結(jié)合,誤差小、使用壽命長、簡捷明了的特性無疑更受歡迎。本次設(shè)計硬件與軟件部分同步進行。硬件部分主要由AT89C52單片機,LCD顯示電路,以及調(diào)時按鍵電路等組成。其中AT89C52單片機具有4k Bytes片內(nèi)程序存儲、128 bytes的隨機存取數(shù)據(jù)存儲器以及32個外部雙向輸入/輸出口,適合于許多較為復(fù)雜控制應(yīng)用場合。軟件部分則分為主程序,LCD驅(qū)動程序,及其LCD點陣的具體定義和表示等。關(guān)鍵詞:單片機;萬年歷;LCD;AbstractThe microcontroller has some features,including small size, light weight, cheap price, low power consumption, the controlling function and computing speedly, so it has been widely applied in various fields of peoples lives. The multi-function electronic calendar as a very wide range of daily timing tool is the typical microcontroller applications. Electronic calendar can be timing on year, month, day, week, hours, minutes, seconds. Compared to the traditional watch, which has some shortcomings , such as short life ,changing the time ,displaying intuitively,calendar are undoubtedly more popular,because its features include soft-and hardware combined, small error, long life, simple to understand.In the design I was designing the parts of hardware and software synchronously. The hardware includes the AT89C52 microcontroller, LCD display circuit, and adjust button circuit. The AT89C52 microcontroller with 4k Bytes on-chip program memory, 128 bytes of random access data memory as well as 32 external bi-directional input / output ports, is suitable for many of the more complex control applications. The software part is divided into the main program, the LCD driver, and its definition and representation of the LCD dot matrix.Keywords:Microcontroller;Calendar;Liquid Crystal Display目 錄摘 要IAbstractII目 錄III第1章 緒論11.1 課題研究背景與意義11.2 國內(nèi)外發(fā)展現(xiàn)狀21.3 論文結(jié)構(gòu)安排3第2章 方案選擇及設(shè)計52.1 設(shè)計要求52.2 方案比較與選擇5第3章 硬件電路設(shè)計83.1 單片機概況83.2 單片機基本結(jié)構(gòu)93.3 模塊分析133.4 電路原理圖17第4章 軟件設(shè)計184.1 編程方式選擇184.2 主程序設(shè)計184.3 按鍵子程序設(shè)計204.4 字體的點陣實現(xiàn)274.5 定時中斷時間邏輯程序設(shè)計30第5章 系統(tǒng)的實現(xiàn)及其仿真驗證345.1 系統(tǒng)在Proteus下總電路圖345.2 結(jié)果顯示35第6章 總結(jié)與展望375.1 總結(jié)375.2 展望37參考文獻39致謝40附錄一41英文原文41附錄二46中文譯文4650第1章 緒 論1.1 課題研究背景和意義在當代繁忙的工作與生活中,時間與我們每一個人都有非常密切的關(guān)系,每個人都受到時間的影響。為了更好的利用我們自己的時間,我們必須對時間有一個度量,因此產(chǎn)生了鐘表。鐘表的發(fā)展是非常迅速的,從剛開始的機械式鐘表到現(xiàn)在普遍用到的數(shù)字式鐘表,即使現(xiàn)在鐘表千奇百怪,但是它們都只是完成一種功能計時功能,只是工作原理不同而已,在人們的使用過程中,逐漸發(fā)現(xiàn)了鐘表的功能太單一,沒有更大程度上的滿足人們的需求。因此在這里,我想能不能把一些輔助功能加入鐘表中。使傳統(tǒng)意義的鐘表在顯示當中更加的直觀,并且調(diào)時起來更加的方便快捷。電子萬年歷是采用數(shù)字電路實現(xiàn)對時,分,秒.數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們常生活中不可少的必需品,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠遠超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,但是所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究萬年歷及擴大其應(yīng)用,有著非?,F(xiàn)實的意義。它可以對年、月、日、周日、時、分、秒進行計時,對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、周日、時、分、秒等信息,還具有時間校準等功能。綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景1.2 國內(nèi)外發(fā)展現(xiàn)狀現(xiàn)代人類生活中所用的幾乎每件電子和機械產(chǎn)品中都會集成有單片機。手機、電話、計算器、家用電器、電子玩具、掌上電腦以及鼠標等電腦配件中都配有1-2部單片機。 汽車上一般配備40多部單片機,復(fù)雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百臺單片機在同時工作!單片機的數(shù)量不僅遠超過PC機和其他計算的總和,甚至比人類的數(shù)量還要多單片機自1976年由Intel公司推出MCS-48開始,迄今已有二十多年了。由于單片機集成度高、功能強、可靠性高、體積小、功耗地、使用方便、價格低廉等一系列優(yōu)點,目前已經(jīng)滲入到人們工作和生活的方方面面,幾乎“無處不在,無所不為”。單片機的應(yīng)用領(lǐng)域已從面向工業(yè)控制、通訊、交通、智能儀表等迅速發(fā)展到家用消費產(chǎn)品、辦公自動化、汽車電子、PC機外圍以及網(wǎng)絡(luò)通訊等廣大領(lǐng)域。隨著單片機技術(shù)的成熟,控制功能逐步增強、可靠性越來越高,其應(yīng)用越來越廣泛,和互聯(lián)網(wǎng)連接是一種明顯的走向。目前,其發(fā)展特點大致分為以下幾個方面:1品種多樣、型號繁多。品種型號逐年擴充以適應(yīng)各種需要,是系統(tǒng)開發(fā)者有很大的選擇自由。CPU從4、8、16、32到64位,有些還采用了RISC技術(shù)。2提高性能,擴大容量。集成度已達200萬個晶體管以上,總線速度達到數(shù)十微秒,指令執(zhí)行周期間減小到數(shù)十微秒,ROM發(fā)展到32K、64K。3增加控制功能,向外部接口延伸。把原屬外圍芯片的功能集成到本芯片內(nèi)?,F(xiàn)今的單片機已發(fā)展到一塊含有CPU的芯片上,出嵌入RAM、ROM存儲器和I/O接口外,還有A/D、PWM、UART、Thler/Counter、DMA、Watchdog、Serial、Port、Sensor、driver,以及顯示驅(qū)動、鍵盤控制、函數(shù)發(fā)生器、比較器等,構(gòu)成一個完整的、功能強的計算機應(yīng)用系統(tǒng)。4低功耗。供電電壓從5V降低到3V、2V甚至1V左右,工作電流從mA級降到uA級。5應(yīng)用軟件配套。提供了軟件庫,包括標準應(yīng)用軟件,示范設(shè)計方法。使用戶開發(fā)單片機應(yīng)用系統(tǒng)時更快速、方便。6系統(tǒng)擴展與配置。有供擴展外部電路用的三總線結(jié)構(gòu)DB、AB、CB,以方便構(gòu)成各種應(yīng)用系統(tǒng)。結(jié)合以上各個特點,特別是功耗越來越低、和模擬電路結(jié)合越來越多的性能決定單片機在機械控制、儀器儀表中的普遍應(yīng)用,鑒于其實際應(yīng)用性和課程的緊密聯(lián)系,該課題應(yīng)運而生。 1.3 論文結(jié)構(gòu)安排本論文共分為以下幾個部分:第一部分介紹了本方案的設(shè)計背景、意義等內(nèi)容,并對論文結(jié)構(gòu)安排做了簡要概述。第二部分主要介紹本設(shè)計的設(shè)計要求和方案選擇,以及對最終方案內(nèi)容的具體說明。第三部分則依次介紹了設(shè)計的硬件部分包括對所用芯片的介紹和對萬年歷每個模塊的分析和說明。第四部分介紹了萬年歷設(shè)計中軟件部分對各個功能的程序?qū)崿F(xiàn)。第五部分對整個設(shè)計做了總結(jié),比在之后表達了對老師和同學所提供幫助的感謝。第2章 方案選擇及設(shè)計2.1 設(shè)計要求A. 實現(xiàn)對年、月、日、星期、時、分、秒等的顯示功能。B 可隨意對年、月、日、星期、時、分、秒進行調(diào)節(jié)和校準。2.2 方案比較與選擇2.2.1 顯示模塊選擇方案一: 采用數(shù)碼管顯示屏,數(shù)碼管具有低能耗、耐老化和精度高等特點。但數(shù)碼管與單片機連接時,需要外接鎖存器進行鎖存,使用三極管進行驅(qū)動等,電路較為復(fù)雜。此外數(shù)碼管只能顯示少數(shù)的字符,顯示的內(nèi)容較少,無法顯示漢字。方案二:采用字符式LCD顯示,LCD具有低功耗、無輻射危險、影像穩(wěn)定、可視面積大,畫面效果好,既可以顯示圖形也可以顯示漢字,顯示內(nèi)容多。此外,LCD與單片機連接電路簡單,占用引腳少。權(quán)衡之后選擇了方案二。2.2.2 總體方案選擇方案一:用EDA技術(shù)及VHDL語言控制來實現(xiàn)顯示及測溫度,且顯示也可以用數(shù)碼管,但是數(shù)碼管屏幕有限不是很方便的顯示很多的數(shù)據(jù)以及文字等。對于VHDL語言也不夠了解,故不采用此方案。方案二 :用C語言編程來控制單片機讓它在液晶上顯示數(shù)據(jù)及文字。由于單片機結(jié)構(gòu)簡單、控制功能強、可靠性高、體積小、價格低等優(yōu)點,以及液晶屏幕可以完整的同時顯示數(shù)據(jù)及文字等內(nèi)容.最終方案:本設(shè)計采用AT89S52作為主控芯片,P1口作數(shù)據(jù)口,P2.0-P2.2作12864芯片控制口,P2.5p2.7作鍵盤輸入控制口,。其大致框圖如圖2.1所示:DB07LCD12864RSRWE P0AT89C52P2.3 p2.0 | |P2.7 p2.2控制鍵盤晶振(12M) 圖2.1 電路設(shè)計主框圖(1)使用12MHz的晶振作為單片機的外部時鐘輸入,一個機器周期為1us(2)使用定時器0作為時鐘計數(shù)器,當計數(shù)滿50ms時定時器0產(chǎn)生中斷,當中斷滿20次時,調(diào)用時間模塊進行加1操作。先對秒進行加1,若加1后等于60秒,則清除秒單元,同時向分進1,以此類推,對分、時進行相同操作。(3) P2.0菜單上移控制鍵,P2.3為確定/主菜單鍵,P2.4菜單左移控制鍵,P2.5為右移控制鍵,P2.6為下移控制鍵。利用發(fā)光二極管作為顯示定時用,當定時時間到,從P3.1輸出一低電平點亮發(fā)紅光二極管。第3章 硬件電路設(shè)計3.1 單片機概況 單片微型計算機簡稱單片機,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機,單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學習、應(yīng)用和開發(fā)提供了便利條件。同時,學習使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。它最早是被用在工業(yè)控制領(lǐng)域。 目前,我國生產(chǎn)很多型號的單片機,在此,我們采用型號為STC89C52的單片機。因為:STC89C52是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準MCS-52指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,內(nèi)置功能強大的微型計算機的AT89C52提供了高性價比的解決方案。STC89C52是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,STC89C52可以按照常規(guī)方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。 3.2 單片機基本結(jié)構(gòu)3.2.1 AT89S52單片機基本特性、4k Bytes片內(nèi)程序存儲器; 、128 bytes的隨機存取數(shù)據(jù)存儲器; 、32個外部雙向輸入/輸出口; 、5個中斷優(yōu)先級、2層中斷嵌套中斷; 、6個中斷源; 、2個16位可編程定時器計數(shù)器; 2個全雙工串行通信口; 、看門狗電路; 、片內(nèi)振蕩器和時鐘電路; 、全靜態(tài)工作:0Hz-33MHz; 、三級程序存儲器保密鎖定; 、可編程串行通道; 、低功耗的閑置和掉電模式。3.2.2 AT89S52單片機結(jié)構(gòu)圖 52單片機的內(nèi)部結(jié)構(gòu)及其外部引腳圖如下圖3.1 /3.2表示:圖3.1 單片機內(nèi)部結(jié)構(gòu)簡圖 圖3.2 AT89S52的引腳圖 引腳說明:VCC:電源電壓輸入端。 GND:電源地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫1時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流 RST:復(fù)位輸入端,高電平有效。當振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。 ALE/PROG:地址鎖存允許/編程脈沖信號端。 PSEN:外部程序存儲器的選通信號,低電平有效。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 EA/VPP:外部程序存儲器訪問允許。當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH)。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:片內(nèi)振蕩器反相放大器和時鐘發(fā)生器的輸入端。 XTAL2:片內(nèi)振蕩器反相放大器的輸出端。時鐘周期:Tc=晶振頻率fosc的倒數(shù)機器周期:Tm=12個時鐘周期(Tc)指令周期: Ti:執(zhí)行一條指令所需的機器周期(Tm)數(shù)3.2.3 LCD 12864簡介 基本參數(shù): 液晶屏類型 STN FSTN 模塊顯示效果: 黃綠底黑字 藍底白字 白底黑字 視角 6點鐘 12點鐘 驅(qū)動方式1/64 DUTY 1/9 BIAS 背光 LED白色 LED黃綠色 控制器 KS0108或兼容 ST7920 T6963C 數(shù)據(jù)總線 8 位并口/6800 方式 串口 溫度特性 工作溫度:-20+70 儲藏溫度:-30+80 點陣格式 128 x 64基本用途: 該點陣的屏顯成本相對較低,適用于各類儀器,小型設(shè)備的顯示領(lǐng)域。LCD相關(guān)信息如表3-1 3-2示:表3-1主要外形尺寸項 目標 準 尺 寸模 塊 體 積113.065.012.8定 位 尺 寸105.055.0視 域73.438.8列 點 陣 數(shù) 行12864點 距 離0.520.52點 大 小0.480.48表3-2引腳說明引腳號引腳名稱方向功能說明1VSS-模塊的電源地2VDD-模塊的電源正端3V0-LCD驅(qū)動電壓輸入端4RS(CS)H/L并行的指令/數(shù)據(jù)選擇信號;串行的片選信號5R/W(SID)H/L并行的讀寫選擇信號;串行的數(shù)據(jù)口6E(CLK)H/L并行的使能信號;串行的同步時鐘7DB0H/L數(shù)據(jù)08DB1H/L數(shù)據(jù)19DB2H/L數(shù)據(jù)210DB3H/L數(shù)據(jù)311DB4H/L數(shù)據(jù)412DB5H/L數(shù)據(jù)513DB6H/L數(shù)據(jù)614DB7H/L數(shù)據(jù)715PSBH/L并/串行接口選擇:H-并行;L-串行16NC空腳17/RETH/L復(fù)位 低電平有效18NC空腳19LED_A-背光源正極(LED+5V)20LED_K-背光源負極(LED-OV)邏輯工作電壓(VDD):4.55.5V電源地(GND):0V工作溫度(Ta):060(常溫) / -2075(寬溫)3.3 模塊設(shè)計3.2.1 復(fù)位電路模塊 復(fù)位電路是使單片機的CPU或系統(tǒng)中的其他部位處于某一確定的初始狀態(tài),并從這一狀態(tài)開始工作。通常的復(fù)位電路有兩種:上電自動復(fù)位電路,人工開關(guān)復(fù)位電路。(1)上電自動復(fù)位電路:上電復(fù)位是單片機上電時的復(fù)位操作,保證單片機上電后立即進入規(guī)定的復(fù)位電路。它是利用電容充電的原理來實現(xiàn)的。(2)人工開關(guān)復(fù)位電路:它不僅具有上電自動復(fù)位電路的功能,同時它的操作比商店自動復(fù)位電路的操作要簡單得多。若果實現(xiàn)復(fù)位的話,只要按下reset鍵即可。它主要利用電阻的分壓來實現(xiàn)的。 本次采用的是上電自動復(fù)位電路。 圖3.3 上電自動復(fù)位電路 圖3.4 人工開關(guān)復(fù)位電路3.2.2 液晶顯示模塊顯示模塊使用液晶12864,電路原理圖如下圖。圖3.5 液晶顯示模塊連接圖顯示模塊采用了12864.低電源電壓(VDD:+3.0-+5.5V)。顯示分辨率:12864點 。內(nèi)置漢字字庫,提供8192個1616點陣漢字(簡繁體可選)。內(nèi)置128個168點陣字符。在12864的2、3腳上接上10k的可調(diào)電阻,通過調(diào)節(jié)可調(diào)電阻的阻值,調(diào)整12864的對比度。通過單片機對12864進行寫指令寫數(shù)據(jù)等操作,完成對12864的顯示操作。3.2.3 獨立式鍵盤模塊 由若干個按鍵組成一個鍵盤,其電路結(jié)構(gòu)可分為獨立鍵盤和矩陣式鍵盤設(shè)計,此次設(shè)計采用的是獨立式鍵盤設(shè)計。鍵盤的工作方式可分為編程控制方式和中斷控制方式。CPU在一個工作周期內(nèi),利用完成其他任務(wù)的空余時間,調(diào)用鍵盤掃描子程序,經(jīng)程序查詢,若無鍵操作,則返回。若有鍵操作,則進而判斷是哪個鍵,并執(zhí)行相應(yīng)的鍵處理程序。這種方式稱為變成掃描方式。由于單片機正常應(yīng)用過程中,可能經(jīng)常進行鍵操作,因而編程控制方式使CPU經(jīng)常處于工作狀態(tài),在進行本次設(shè)計中,只涉及到了設(shè)置、上調(diào)、下調(diào)三個功能。應(yīng)該采用獨立式鍵盤如圖3.6。 圖 3.6 獨立式鍵盤按鍵作用: 根據(jù)程序設(shè)計依次包括菜單上移控制鍵,確定/主菜單鍵,菜單左移控制鍵(返回),右移控制鍵,下移控制鍵。(1)菜單左移控制鍵:實現(xiàn)從二級菜單回到初級菜單,以及從確認調(diào)整后的三級菜單返回二級菜單。并在調(diào)時時,依次向左選擇調(diào)整對象。(2)右移控制鍵:在三級菜單中實現(xiàn)調(diào)整對象向右選擇。(3)確定/主菜單鍵:實現(xiàn)由一級菜單到二級菜單再到三級菜單的轉(zhuǎn)化,并且三級菜單調(diào)整完成也有該鍵確認后,才可退出。(4)上移控制鍵:在三級菜單中實現(xiàn)數(shù)字的上調(diào)。(5)下移控制鍵:在三級菜單中實現(xiàn)數(shù)字的下調(diào)。3.2.4 晶振電路模塊晶振電路用于產(chǎn)生單片機工作所需要的時鐘信號,研究的是指令執(zhí)行中信號之間的相互關(guān)系。單片機本身就如一個復(fù)雜的同步時序電路,為了保證同步工作方式的實現(xiàn),電路應(yīng)在唯一的時鐘信號控制下嚴格的工作。通常在引腳X1和X2跨接石英晶體和兩個補償電容構(gòu)成自激振蕩器如圖3.7。圖3.7 晶振電路設(shè)計3.2.5 存儲模塊 主要利用單片機內(nèi)部4k Bytes片內(nèi)程序存儲器以及128 bytes的隨機存取數(shù)據(jù)存儲器。3.2.4 電源模塊 電源模塊直接選擇5v的供電電壓對復(fù)位電路,晶振電路,以及單片機,LCD等進行供電。3.3電路原理圖 (圖3.8) 圖3.8 電路總體設(shè)計原理圖第4章 軟件設(shè)計4.1編程方式選擇51單片機可以利用匯編語言和c語言編程。其中匯編語言特點:匯編語言的實質(zhì)和機器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標識符,更容易識別和記憶。但是,匯編源程序一般比較冗長、復(fù)雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業(yè)知識。C語言編程特點:C語言功能齊全,具有各種各樣的數(shù)據(jù)類型,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大。同時,C 語言可以像匯編語言一樣對位、字節(jié)和地址進行操作。且對實現(xiàn)功能的表述更加直觀。故本次設(shè)計選用C語言進行編程。4.2主程序設(shè)計 主程序開始時,LCD初始化,定時器開啟并賦初值。LCD時間初始化顯示。并進入循環(huán)的鍵盤掃描程序中。程序框圖如下 4.1圖 4.1 主程序設(shè)計框圖程序如下:/*主函數(shù)main()*/void main( void )lcd_init();timeinit();lcd_clear();time_display();while(1)keyscan();4.3按鍵子程序設(shè)計主要用于按鍵操作實現(xiàn)三個菜單界面的切換和返回等,并實現(xiàn)調(diào)時功能。程序?qū)崿F(xiàn)流程圖,如圖4.2圖4.2 按鍵子程序流程圖程序?qū)崿F(xiàn)如下:*鍵盤掃描函數(shù):keyscan()*/void keyscan()if(key_menu=0&menu_flag=0)/進入一級菜單delay_ms(10);if(key_menu=0)while(!key_menu);menu_flag=1;first_menu_flag=1;lcd_clear();first_menu_display();/-主菜單部分-if(key_up=0&menu_flag=1)/菜單選擇delay_ms(10);if(key_up=0)while(!key_up);/上升沿first_menu_flag-;if(first_menu_flag=5)first_menu_flag=1;first_menu_display();if(key_left=0&(first_menu_flag!=0)&menu_flag=1)/退出主菜單,menu_flag=1限制了僅當在主菜單下按key_left才退出主菜單,顯示時間delay_ms(10);if(key_left=0)while(!key_left);/上升沿menu_flag=0;/*每執(zhí)行一次進入或返回菜單操作時都應(yīng)注意更改菜單狀態(tài)變量*first_menu_flag=1;lcd_clear();time_display();/-二級菜單部分-/-調(diào)時部分-if(key_menu=0&first_menu_flag=1&menu_flag=1)/進入調(diào)時(二級菜單)delay_ms(10);if(key_menu=0)while(!key_menu);menu_flag=11;/進入具體二級菜單標志位,進入一級菜單下1選項菜單time_set_flag=1;/調(diào)時位標志位TR0=0;ET0=0;/調(diào)時的時候停止時鐘運行l(wèi)cd_clear();/清屏time_set_display();if(key_menu=0&menu_flag=11)/返回主菜單delay_ms(10);if(key_menu=0)while(!key_menu);menu_flag=1;/退出調(diào)時后恢復(fù)時鐘運行TR0=1;ET0=1;lcd_clear();first_menu_display();if(key_left=0&menu_flag=11)/ 調(diào)時選位delay_ms(10);if(key_left=0)while(!key_left);time_set_flag+;if(time_set_flag=8)time_set_flag=1;time_set_display();if(key_right=0&menu_flag=11)/ 調(diào)時選位delay_ms(10);if(key_right=0)while(!key_right);time_set_flag-;if(time_set_flag=0)time_set_flag=7;time_set_display();if(menu_flag=11&time_set_flag!=0)/調(diào)時+1if(key_up=0)delay_ms(10);if(key_up=0)while(!key_up);if(time_set_flag=1)second=0;time_set_display();if(time_set_flag=2)minute+;if(minute=60)minute=0;time_set_display();if(time_set_flag=3)hour+;if(hour=24)hour=0;time_set_display();if(time_set_flag=4)week=(week+1)%7;time_set_display();if(time_set_flag=5)day+;if(day=32)day=1;time_set_display();if(time_set_flag=6)month+;if(month=13)month=1;time_set_display();if(time_set_flag=7)year+;if(year=2099)year=2000;time_set_display();if(key_down=0)/調(diào)試-1delay_ms(10);if(key_down=0)while(!key_down);/上升沿if(time_set_flag=1)second=0;time_set_display();if(time_set_flag=2)minute=(minute-1+60)%60;time_set_display();if(time_set_flag=3)hour=(hour-1+24)%24;time_set_display();if(time_set_flag=4)week=(week-1+7)%7;time_set_display();if(time_set_flag=5)day-;if(day=0)day=31;time_set_display();if(time_set_flag=6)month-;if(month=0)month=12;time_set_display();if(time_set_flag=7)year-;if(year=1999)year=2099;time_set_display();4.4字體的點陣實現(xiàn)主要確定各個界面字體的實現(xiàn),程序如下:#include unsigned char code first_menu_tab=/*- 文字: 菜 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 -*/0x04,0x40,0xFF,0xFE,0x04,0x40,0x04,0x40,0x3F,0xF8,0x22,0x08,0x11,0x10,0x08,0x20,0x01,0x00,0x7F,0xFE,0x03,0x80,0x05,0x40,0x09,0x30,0x11,0x1C,0x61,0x08,0x01,0x00,/*- 文字: 單 -*/0x08,0x20,0x06,0x30,0x04,0x40,0x3F,0xF8,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,/*- 文字: 調(diào) -*/0x43,0xFC,0x22,0x44,0x32,0x44,0x23,0xF4,0x02,0x44,0xE3,0xF4,0x22,0x04,0x22,0xF4,0x22,0x94,0x22,0x94,0x2A,0xF4,0x32,0x94,0x24,0x04,0x04,0x04,0x08,0x14,0x10,0x08,/*- 文字: 時 -*/0x00,0x10,0x00,0x10,0x7C,0x10,0x44,0x10,0x47,0xFE,0x44,0x10,0x7C,0x10,0x45,0x10,0x44,0x90,0x44,0x90,0x7C,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x20,/*- 文字: 信 -*/0x08,0x80,0x0C,0x60,0x18,0x40,0x17,0xFE,0x30,0x00,0x33,0xF8,0x50,0x00,0x93,0xF8,0x10,0x00,0x13,0xF8,0x12,0x08,0x12,0x08,0x12,0x08,0x13,0xF8,0x12,0x08,0x00,0x00,/*- 文字: 息 -*/0x01,0x00,0x02,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x00,0x00,0x09,0x00,0x28,0x84,0x28,0x92,0x68,0x12,0x07,0xF0,0x00,0x00;unsigned char code week_tab= /*- 文字: 一 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: 二 -*/0x00,0x00,0x00,0x10,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: 三 -*/0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,/*- 文字: 四 -*/0x00,0x00,0x7F,0xFC,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x48,0x84,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x00,0x00,/*- 文字: 五 -*/0x00,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x3F,0xF0,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x24,0xFF,0xFE,0x00,0x00,0x00,0x00,/*- 文字: 六 -*/0x04,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x04,0x80,0x06,0x40,0x04,0x20,0x08,0x10,0x08,0x18,0x10,0x0C,0x20,0x0C,0x40,0x08,0x00,0x00,/*- 文字: 日 -*/0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00;unsigned char code num_tab= /*- 文字: 0 -*/0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*- 文字: 1 -*/0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*- 文字: 2 -*/0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,/*- 文字: 3 -*/0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*- 文字: 4 -*/0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,/*- 文字: 5 -*/0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*- 文字: 6 -*/0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*- 文字: 7 -*/0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,/*- 文字: 8 -*/0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,/*- 文字: 9 -*/0x00,0x00,0x00,0x18,0x

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論