歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)專升本論文.doc

  • 資源ID:116495830       資源大小:1.20MB        全文頁數(shù):68頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)專升本論文.doc

1 畢 業(yè) 論 文 題題 目目 基于基于 AVR 的可調(diào)電子鐘設(shè)計(jì)的可調(diào)電子鐘設(shè)計(jì) 院系名稱:院系名稱:計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù) 專業(yè)班級:專業(yè)班級:1111 專升本專升本 學(xué)生姓名:學(xué)生姓名: 學(xué)學(xué) 號:號: 指導(dǎo)教師:指導(dǎo)教師: 2 目錄目錄 摘摘 要要4 4 第一章第一章 引言引言5 5 1.11.1 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù)5 1.21.2 設(shè)計(jì)要求設(shè)計(jì)要求5 第二章第二章 總體方案論證與設(shè)計(jì)總體方案論證與設(shè)計(jì)總體方案論證與設(shè)計(jì)總體方案論證與設(shè)計(jì)6 6 第三章第三章 系統(tǒng)硬件設(shè)置系統(tǒng)硬件設(shè)置7 7 3.13.1 ATmega16ATmega16 單片機(jī)簡介單片機(jī)簡介.7 3.23.2 ATmega16ATmega16 單片機(jī)的工作原理單片機(jī)的工作原理.7 3.2.13.2.1 I/OI/O 端口的工作原理端口的工作原理 7 3.2.23.2.2 定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器 .8 3.2.33.2.3 中斷系統(tǒng)中斷系統(tǒng)8 3.2.43.2.4 振蕩器振蕩器9 3.33.3 時(shí)鐘模塊設(shè)計(jì)時(shí)鐘模塊設(shè)計(jì).10 3.3.13.3.1 DS1302DS1302 特性介紹特性介紹 10 3.3.23.3.2 DS1302DS1302 引腳介紹引腳介紹 11 3.3.33.3.3 DS1302DS1302 有關(guān)日歷,時(shí)間的寄存器有關(guān)日歷,時(shí)間的寄存器 12 3.3.43.3.4 DS1302DS1302 與單片機(jī)接口電路與單片機(jī)接口電路 12 3.43.4 顯示模塊設(shè)計(jì)顯示模塊設(shè)計(jì).13 3.4.13.4.1 LCD1602LCD1602 的特性介紹的特性介紹 .14 3.4.23.4.2 LCD1602LCD1602 引腳介紹引腳介紹 .15 3.4.33.4.3 16021602 內(nèi)部功能器件及相關(guān)功能內(nèi)部功能器件及相關(guān)功能 16 3.4.43.4.4 16021602 液晶與單片機(jī)接口電路液晶與單片機(jī)接口電路 18 3.53.5 設(shè)置模塊設(shè)置模塊 20 3.63.6 振蕩電路振蕩電路 21 3.73.7 復(fù)位電路復(fù)位電路 22 第四章第四章 系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì)2323 4.14.1 時(shí)鐘函數(shù)模塊時(shí)鐘函數(shù)模塊 25 4.1.14.1.1 實(shí)現(xiàn)功能實(shí)現(xiàn)功能 .25 3 4.1.24.1.2 函數(shù)設(shè)計(jì)函數(shù)設(shè)計(jì).25 4.24.2 顯示函數(shù)模塊顯示函數(shù)模塊 30 4.2.14.2.1 實(shí)現(xiàn)功能實(shí)現(xiàn)功能 .30 4.2.24.2.2 函數(shù)設(shè)計(jì)函數(shù)設(shè)計(jì).30 4.2.34.2.3 小結(jié)小結(jié).31 4.34.3 按鍵函數(shù)模塊按鍵函數(shù)模塊 32 4.3.14.3.1 實(shí)現(xiàn)功能實(shí)現(xiàn)功能.32 4.3.24.3.2 函數(shù)設(shè)計(jì)函數(shù)設(shè)計(jì).32 4.3.34.3.3 小結(jié)小結(jié).32 4.44.4 主函數(shù)模塊主函數(shù)模塊 32 第五章第五章 心得體會心得體會3333 第六章第六章 致謝致謝3333 附錄附錄 1 1 元器件表元器件表 3434 附錄附錄 2 2 仿真圖仿真圖 3535 附錄附錄 3 3 源碼源碼 3636 附錄附錄 4 4 參考文獻(xiàn)參考文獻(xiàn) 6868 4 摘摘 要要 單片機(jī)就是微控制器,是面向應(yīng)用對象設(shè)計(jì)、突出控制功能的芯片。單片機(jī) 接上晶振、復(fù)位電路和相應(yīng)的接口電路,裝載軟件后就可以構(gòu)成單片機(jī)應(yīng)用系統(tǒng)。 本設(shè)計(jì)就是應(yīng)用單片機(jī)強(qiáng)大的控制功能制作而成的指針式電子鐘,該指針式電子 鐘實(shí)現(xiàn)如下功能:液晶屏模擬表盤與時(shí)分秒指針顯示當(dāng)前時(shí)鐘,K1 鍵用于選擇 調(diào)節(jié)對象,K2 鍵用于調(diào)整時(shí)分秒,在按下 K4 鍵時(shí)確定調(diào)節(jié)值,時(shí)鐘繼續(xù)運(yùn)行。 本設(shè)計(jì)采用的是 AVR 單片機(jī),AVR 系列的單片機(jī)不僅具有良好的集成性能, 而且都具備在線編程接口,其中的 Mega 系列還具備 JTAG 仿真和下載功能;含有 片內(nèi)看門狗電路、片內(nèi)程序 Flash、同步串行接口 SPI;多數(shù) AVR 單片機(jī)還內(nèi)嵌 了 AD 轉(zhuǎn)換器、EEPROM、模擬比較器、PWM 定時(shí)計(jì)數(shù)器等多種功能;AVR 單片機(jī) 的 IO 接口具有很強(qiáng)的驅(qū)動能力,灌入電流可直接驅(qū)動繼電器、LCD 等元件。 芯片采用 DALLAS 公司的涓細(xì)充電時(shí)鐘芯片 DS1302,該芯片通過簡單的串行通 信與單片機(jī)進(jìn)行通信,時(shí)鐘/日歷電路能夠?qū)崟r(shí)提供年、月、日、時(shí)分、秒信息, 采用雙電源供電,當(dāng)外部電源掉電時(shí)能夠利用后備電池準(zhǔn)確計(jì)時(shí)。 顯示器件采用 LCD1602 液晶,通過相應(yīng)的按鍵調(diào)整相應(yīng)的值。通過此次設(shè) 計(jì)能夠更加牢固的掌握單片機(jī)的應(yīng)用技術(shù),增強(qiáng)動手能力、硬件設(shè)計(jì)能力以及軟 件設(shè)計(jì)能力。 關(guān)鍵詞關(guān)鍵詞 AVR 單片機(jī) 時(shí)鐘芯片 DS1302 LCD1602 液晶 5 第一章第一章 引言引言 本例采用 LCD1602 液晶作為顯示元件,液晶屏顯示當(dāng)前時(shí)鐘。該電子鐘實(shí) 現(xiàn)如下功能:液晶屏模擬表盤與時(shí)分秒指針顯示當(dāng)前時(shí)鐘,K1 鍵用于選擇調(diào)節(jié) 對象,K2 鍵用于調(diào)整時(shí)分秒,在按下 K3 鍵時(shí)確定調(diào)節(jié)值,時(shí)鐘繼續(xù)運(yùn)行。本例 程序包含控制模塊、顯示模塊、實(shí)時(shí)時(shí)間計(jì)算模塊、設(shè)置模塊(時(shí)間設(shè)置模塊) 。 1.11.1 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù) 利用 AVR 單片機(jī)等實(shí)現(xiàn)一個(gè)簡單的基于 AVR 的可調(diào)電子鐘。 1.21.2 設(shè)計(jì)要求設(shè)計(jì)要求 a實(shí)現(xiàn)年月日時(shí)分秒指針式顯示功能 b用三個(gè)按鍵來實(shí)現(xiàn)調(diào)整時(shí)分秒的功能 6 第二章第二章 總體方案論證與設(shè)計(jì)總體方案論證與設(shè)計(jì)總體方案論證與設(shè)計(jì)總體方案論證與設(shè)計(jì) 組成框圖中包含顯示模塊,控制器,時(shí)間模塊,設(shè)置模塊。顯示模塊有 LCD1602 來控制顯示,整個(gè)代碼實(shí)現(xiàn)主要由控制器來實(shí)現(xiàn),時(shí)間模塊有 DS1302 來實(shí)現(xiàn),可以顯示系統(tǒng)時(shí)間,也可自行調(diào)整,設(shè)置模塊為按鍵處理。具體模塊分 析在相關(guān)的軟硬件設(shè)計(jì)中詳細(xì)介紹。 本設(shè)計(jì)中的可調(diào)電子鐘擬采用 AVR 系列單片機(jī) ATMEGA16 作為主控制器, 以 DS1302 時(shí)鐘芯片和 16M 的外置晶振提供準(zhǔn)確時(shí)間標(biāo)準(zhǔn),以期實(shí)現(xiàn)對“時(shí)、分、 秒”的數(shù)字顯示和校準(zhǔn)時(shí)間的計(jì)時(shí)裝置;可調(diào)電子鐘不但可以顯示當(dāng)前時(shí)間,而 且可以顯示年、月、日等,給人們的生活帶來方便。另外可調(diào)電子鐘還具備日期 時(shí)間的調(diào)節(jié)與寫入功能。本設(shè)計(jì)將以 AVR 單片機(jī)為控制核心,通過與 DS1302 信獲取實(shí)時(shí)時(shí)間,并將得到的數(shù)據(jù)通過 LCD1602 液晶顯示出來,同時(shí)通過相應(yīng) 的按鍵調(diào)整相應(yīng)的值。因此本設(shè)計(jì)可分為以下模塊:控制模塊、顯示模塊、實(shí)時(shí) 時(shí)間計(jì)算模塊、設(shè)置模塊(時(shí)間設(shè)置模塊) 。 7 第三章第三章 系統(tǒng)硬件設(shè)置系統(tǒng)硬件設(shè)置 3.13.1 ATmega16 單片機(jī)簡介單片機(jī)簡介 ATmega16 單片機(jī)是 ATmega 系列 AVR 單片機(jī)中內(nèi)容接口豐富,功能齊全,性 能價(jià)格比較高的產(chǎn)品。它具有高性能、低功耗的 8 位 AVR 微處理器,先進(jìn)的 RISC 結(jié)構(gòu),非易失性程序和數(shù)據(jù)存儲器等。ATmega16 單片機(jī)的中央處理器由 32 個(gè) 8 位通用寄存器,1 個(gè)算術(shù)運(yùn)算單元及狀態(tài)和控制邏輯單元組成。AVR 采用了 哈弗結(jié)構(gòu),具有獨(dú)立的程序總線和數(shù)據(jù)總線,程序存儲器里的指令通過一級流水 線運(yùn)行。它的存儲器分為獨(dú)立尋址的 flash 程序存儲器,片內(nèi) SRAM 數(shù)據(jù)存儲器 和 EEPROM 3 部分,均采用線性編址。 圖 3-1 3.23.2 ATmega16ATmega16 單片機(jī)的工作原理單片機(jī)的工作原理 3.2.13.2.1 I/OI/O 端口的工作原理端口的工作原理 8 ATmeage16 單片機(jī)具有 32 個(gè)通用 I/O 口,分為 PA,PB,PC,PD,每組都是八位。 這些 I/O 都是可以通過各自的端口寄存器設(shè)置為輸入或置成輸出,有些 I/O 口還 具有第二功能。 所有的端口引腳都具有內(nèi)部上拉電阻,可以通過寄存器獨(dú)立選擇是否連接, 復(fù)位時(shí)所有的引腳都為高阻態(tài)。ATmega16 單片機(jī)的每個(gè)端口都有三個(gè) I/O 寄存 器地址:數(shù)據(jù)寄存器 PORTx(x=ABCD,下同)、方向寄存器 DDRx 和輸入引腳 PINx。 3.2.23.2.2 定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器 ATmega16 單片機(jī)有三個(gè)定時(shí)/計(jì)數(shù)器:T/C0,T/C1,T/C2。其中 T/C0,T/C2 是兩個(gè)八位的定時(shí)/計(jì)數(shù)器,而 T/C1 是 16 位的定時(shí)/計(jì)數(shù)器。 T/Cx(0,1,2)是一個(gè)通用的帶有輸出比較匹配和 PWM 波形發(fā)生器的單通道 8 位定時(shí)/計(jì)數(shù)器模塊。T/Cx 可以選擇通過預(yù)分頻器由系統(tǒng)時(shí)鐘驅(qū)動,或通過 T0 引腳的外部時(shí)鐘驅(qū)動,時(shí)鐘邏輯模塊控制使用哪個(gè)時(shí)鐘源及哪個(gè)邊沿來進(jìn)行加或 者減計(jì)數(shù)。 T/Cx(0,1,2)的時(shí)鐘分頻器對系統(tǒng)分頻后作為 T/Cx(0,1,2)的驅(qū)動時(shí) 鐘。T/Cx(0,1,2)的時(shí)鐘可以是系統(tǒng)時(shí)鐘或者系統(tǒng)時(shí)鐘的 8 分頻、64 分頻、 256 分頻及 1024 分頻,通過控制寄存器 TCCRx(0,1,2)。 T/Cx 雙緩沖結(jié)構(gòu)的八位輸出比較寄存器 OCRx(0,1,2)一直與 T/Cx(0,1,2)的計(jì)數(shù)值 TCNTx(0,1,2)進(jìn)行比較。一旦 TCNTx(0,1,2)等于 OCRx(0,1,2),比較器就給出匹配信號。有 4 種工作模式:普通模式,CTC 模式, 快速 PWM 模式,相位修正 PWM 模式。 3.2.33.2.3 中斷系統(tǒng)中斷系統(tǒng) ATmega16 單片機(jī)有 21 個(gè)中斷源,每一個(gè)中斷源都有一個(gè)獨(dú)立的中斷向量作 為中斷服務(wù)程序的入口地址,而且所有的中斷源都有自己的獨(dú)立的使能位。如果 全局中斷 I 和相應(yīng)使能位都置位,則在中斷標(biāo)志位置位時(shí)將執(zhí)行中斷服務(wù)程序。 9 一個(gè)中斷產(chǎn)生后,全局中斷使能位 I 將被清零,后續(xù)中斷被屏蔽。 中斷相關(guān)的寄存器:MCU 控制寄存器 MCUCR,MCU 控制和狀態(tài)寄存器 MCUCSR,通用中斷控制寄存器 GICR,通用中斷狀態(tài)寄存器 GIFR. 3.2.43.2.4 振蕩器振蕩器 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 振蕩器特性:XTAL1 和 XTAL2 分別為反向放大器的輸入和輸出。該反向放大 器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū) 動器件,XTAL2 應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號要通過一個(gè)二分頻觸發(fā)器,因 此對外部時(shí)鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。 10 3.33.3 時(shí)鐘模塊設(shè)計(jì)時(shí)鐘模塊設(shè)計(jì) 實(shí)時(shí)時(shí)間計(jì)算模塊 方案(1):AVR 單片機(jī)內(nèi)部帶有定時(shí)/計(jì)數(shù)功能,此定時(shí)功能是通過對外部 晶振的脈沖進(jìn)行計(jì)數(shù),從而達(dá)到計(jì)時(shí)功能,只要使用 11.0592 的晶振就能實(shí)現(xiàn)零 誤差的計(jì)時(shí),因此可以利用此功能實(shí)現(xiàn)計(jì)時(shí),但因?yàn)橹挥袉我坏挠?jì)時(shí)功能要實(shí)現(xiàn) “萬年歷”的功能需要較復(fù)雜的程序,而且如果單片機(jī)掉電無法繼續(xù)進(jìn)行計(jì)時(shí), 所以使用不便。 方案(2):DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗的實(shí) 時(shí)時(shí)鐘芯片,附加 31 字節(jié)靜態(tài) RAM,采用 SPI 三線接口與 CPU 進(jìn)行通信,并 可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號和 RAM 數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、 分、時(shí)、日、星期、月和年,一個(gè)月小與 31 天時(shí)可以自動調(diào)整,且具有閏年補(bǔ) 償功能。工作電壓寬達(dá) 2.55.5V。采用雙電源供電(主電源和備用電源) ,可設(shè) 置備用電源充電方式,提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。利用單片機(jī) 強(qiáng)大的控制功能就可實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)的功能,而且消耗的系統(tǒng)資源少,程序簡單。 綜合上述兩種方案,宜采用方案(2)實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)功能。 3.3.13.3.1 DS1302DS1302 特性介紹特性介紹 DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片, 附加 31 字節(jié)靜態(tài) RAM,采用 SPI 三線接口與 CPU 進(jìn)行通信,并可采用突發(fā)方 式一次傳送多個(gè)字節(jié)的時(shí)鐘信號和 RAM 數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、 星期、月和年,一個(gè)月小與 31 天時(shí)可以自動調(diào)整,且具有閏年補(bǔ)償功能。工作 電壓寬達(dá) 2.55.5V。采用雙電源供電(主電源和備用電源) ,可設(shè)置備用電源充 電方式,提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。利用單片機(jī)強(qiáng)大的控制功 能就可實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)的功能,而且消耗的系統(tǒng)資源少,程序簡單。 11 DS1302 可以對年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償 等多種功能 DS1302 有 12 個(gè)寄存器,其中有 7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存 放的數(shù)據(jù)位為 BCD 碼形式;采用單片機(jī)計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用硬 件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費(fèi)單片機(jī)的資源,而采用時(shí)鐘 芯片 DS1302。 3.3.23.3.2 DS1302DS1302 引腳介紹引腳介紹 圖 3-2 8 、Vcc1:備用電池端; 1、Vcc2:5V 電源。當(dāng) Vcc2Vcc1+0.2V 時(shí),由 Vcc2 向 DS1302 供電, 當(dāng) Vcc2/單片機(jī)寄存器的頭文件 #include #include #include /a 為要操作的寄存器,b 為要操作的位數(shù) #define SET_1(a,b) a|=(10; i-) if(_data else DIO_CLE_0; SCLK_SET_1;/時(shí)鐘信號 _delay_us(2); SCLK_CLE_0; _data=1;/移位,準(zhǔn)備好下次要寫的數(shù)據(jù) 43 /向 DS1302 讀取一個(gè)字節(jié) uchar DS1302OreadByte(void) uchar i; uchar d_data=0; CLE_0(DDRD,PD5); for(i=8; i0; i-) d_data=1;/移位,以便下次存放讀出的數(shù)據(jù) if(PIND SCLK_SET_1; _delay_us(2); SCLK_CLE_0; SET_1(DDRD,PD5); return (d_data);/返回讀到的數(shù)據(jù) 44 /*寫 ds1302 寄存器*/ void Write1302(uchar ucAddr,uchar ucDa) RST_CLE_0; SCLK_CLE_0; RST_SET_1; DS1302writeByte(ucAddr);/地址 DS1302writeByte(ucDa);/寫 1byte 數(shù)據(jù) SCLK_SET_1; RST_CLE_0; /*讀 ds1302 的寄存器*/ uchar Read1302(uchar ucAddr) uchar ucData; RST_CLE_0; SCLK_CLE_0; RST_SET_1; 45 DS1302writeByte(ucAddr|0X01);/地址,命令 ucData = DS1302OreadByte(); SCLK_SET_1; RST_CLE_0; return (ucData); void get_time(uchar *time) *(time+5) = Read1302(READ_SECOND); *(time+4) = Read1302(READ_MINUTE); *(time+3) = Read1302(READ_HOUR); *(time+2) = Read1302(READ_DAY); *(time+1) = Read1302(READ_MONTH); *(time+0) = Read1302(READ_YEAR); /*void Initial(void) Write1302(WRITE_PROTECT,0 x00); Write1302(WRITE_SECOND,0 x45); 46 Write1302(WRITE_MINUTE,0 x24); Write1302(WRITE_HOUR,0 x09); Write1302(WRITE_DAY,0 x13); Write1302(WRITE_MONTH,0 x04); Write1302(WRITE_PROTECT,0 x80); void adopt_data(uchar n,uchar *show_data) *show_data = n4; *(show_data +1) = n */ void T1_int(void) TCCR1B = 0 x00;/控制寄存器,停止定時(shí) TIMSK |= 0 x04;/中斷屏蔽寄存器,中斷允許 TCNT1 = 0 xcf2c;/100ms 溢出一次 TCCR1B = 0 x02; sei();/使能全局中斷 47 void init_1302(void) Write1302(WRITE_PROTECT,0 x00);/禁止寫保護(hù) Write1302(WRITE_SECOND,time4);/秒位初始化 Write1302(WRITE_MINUTE,time3);/分鐘 Write1302(WRITE_HOUR,time2);/小時(shí) Write1302(WRITE_DAY,time1);/日 Write1302(WRITE_MONTH,time0);/月 Write1302(WRITE_PROTECT,0 x80);/允許寫保護(hù) /*按鍵函數(shù)*/ uchar get_key(void) uchar i=0; PORTD |= 0 x0f; DDRD = 0 xf0;/設(shè)置為輸出 NOP(); NOP(); if(PIND/消除抖動 switch(PINDbreak;/選擇鍵 case 0 x0d:i = 3;break;/減值鍵 case 0 x0b:i = 2;break;/增值鍵 case 0 x07:i = 1;break;/確定鍵 while(PIND/等待按鍵松開 else i = 0;/沒有按鍵被按下 DDRD = 0 xff;/設(shè)置為輸出 return i;/返回按鍵值 /*轉(zhuǎn)換為 lcd 要顯示的數(shù)據(jù)*/ 49 void adopt_data() uchar i,j=0; for (i=0;i4; lcd_showj+1 = timei j += 2; /*轉(zhuǎn)換為 ds1302 的時(shí)間*/ void affirm_data(void) uchar i ,j = 0 ; for (i=0;i0) lcd_shown-; else if(lcd_shown=max) lcd_shown=0; 51 else lcd_shown=max; value=lcd_shown; /*功能顯示函數(shù)*/ void show_function(void) uchar i; uchar function25=0 x43,0 x4c,0 x4f,0 x43,0 x4b, 0 x41,0 x4c,0 x41,0 x52,0 x4d, ; wr_dictate(0 x01); display_lcd(0 x84,0 x7e); for (i=0;i6;i+) display_lcd(0 x85+i,function0i);/顯示時(shí)間 display_lcd(0 xc5+i,function1i); /*設(shè)置時(shí)間*/ 52 void set_clock(void) uchar cursor = 0;/光標(biāo) uchar i,j; wr_dictate(0 x01);/清屏 Write1302(WRITE_PROTECT,0 x00); Write1302(WRITE_SECOND,time4|0 x80);/暫時(shí)停止時(shí)鐘的 運(yùn)行 Write1302(WRITE_PROTECT,0 x80); display_lcd(0 x82,0 x00);/顯示年 display_lcd(0 x85,0 x01);/月 display_lcd(0 x88,0 x02);/日 display_lcd(0 xc2,0 x03);/時(shí) display_lcd(0 xc5,0 x03);/分 display_lcd(0 xc8,0 x03);/秒 for (i=0,j=0;i10;i+=2) display_lcd(0 x80+j,numberlcd_showi); display_lcd(0 x80+j+1,numberlcd_showi+1); 53 j = j+3; wr_dictate(0 x02); wr_dictate(0 x0e); j = 0; while(1) NOP(); switch(get_key() case 1:/確認(rèn) cursor+; j+; if (cursor%2=0) j+; wr_dictate(0 x14); wr_dictate(0 x14); 54 else wr_dictate(0 x14); if (cursor=10) j = 0; cursor = 0; wr_dictate(0 x02);/光標(biāo)歸位 place = 0 x80+j; break; case 2:/加 switch(cursor) /*一下的 case 成功選擇項(xiàng)為光標(biāo)對應(yīng)的調(diào) 55 整位數(shù)*/ case 0:add_d(cursor,1);break; case 1: if(lcd_show0=1) add_d(cursor,2); else add_d(cursor,9); break; case 2:add_d(cursor,3);break; case 3: if(lcd_show2=3) add_d(cursor,0); else add_d(cursor,9); break; 56 case 4:add_d(cursor,2);break; case 5: if(lcd_show4=2) add_d(cursor,3); else add_d(cursor,9); break; case 6:add_d(cursor,5);break; case 7:add_d(cursor,9);break; case 8:add_d(cursor,5);break; case 9:add_d(cursor,9);break; display_lcd(place,numbervalue);/顯示在 液晶屏的相應(yīng)的位置 wr_dictate(0 x10); break; 57 case 3:/減 switch(cursor) /*一下的 case 成功選擇項(xiàng)為光標(biāo)對應(yīng)的調(diào) 整位數(shù)*/ case 0:dec_d(cursor,1);break; case 1: if(lcd_show0=1) dec_d(cursor,2); else dec_d(cursor,9); break; case 2:dec_d(cursor,3);break; case 3: if(lcd_show2=3) 58 dec_d(cursor,0); else dec_d(cursor,9); break; case 4:add_d(cursor,2);break; case 5: if(lcd_show4=2) dec_d(cursor,3); else dec_d(cursor,9); break; case 6:dec_d(cursor,5);break; case 7:dec_d(cursor,9);break; case 8:dec_d(cursor,5);break; case 9:dec_d(cursor,9);break; 59 display_lcd(place,numbervalue);/顯示在 液晶屏的相應(yīng)的位置 wr_dictate(0 x10); break; case 4:/退格 affirm_data(); init_1302(); T1_OPEN; goto OUT; default: break; OUT:NOP(); /*補(bǔ)充顯示*/ void allowance(void) 60 uchar i,j; display_lcd(0 x82,0 x00);/顯示月 display_lcd(0 x85,0 x01);/日 display_lcd(0 x88,0 x02);/時(shí) display_lcd(0 x8b,0 x03);/分 get_time(time); adopt_data(); for (i=0,j=0;i10;i+=2) display_lcd(0 x80+j,numberlcd_showi); display_lcd(0 x80+j+1,numberlcd_showi+1); j = j+3; int main(void) uchar chinese58 = 61 0 x08,0 x0f,0 x12,0 x0f,0 x0a,0 x1f,0 x02,0 x02, 0 x0f,0 x09,0 x0f,0 x0,0 x0f,0 x09,0 x13,0 x00, 0 x1f,0 x11,0 x11,0 x1f,0 x11,0 x11,0 x11,0 x1f,0 x00, 0 x01,0 x1d,0 x17,0 x1d,0 x17,0 x1d,0 x03,0 x01, 0 x04,0 x0a,0 x11,0 x0e,0 x02,0 x0a,0 x16,0 x00,; uchar i,j; uchar key_Enter = 0;/確認(rèn)鍵被按下的次數(shù) /控制線 DDRC = 0 xff;/方向寄存器 PORTC = 0 xff;/數(shù)據(jù)寄存器 /數(shù)據(jù)端 DDRB = 0 xff;/端口 B 設(shè)置為輸出 PORTB = 0 xff; DDRD = 0 xff;/按鍵設(shè)為輸入 PORTD = 0 xff; 62 init_1302(); init_lcd(); T1_int(); wr_dictate(0 x40); for (j=0;j5;j+) for (i=0;i8;i+) wr_data(chineseji);/利用循環(huán)語句把點(diǎn)陣字 符寫進(jìn) CGRAM 中 allowance();/補(bǔ)充顯示 while(1) NOP(); i=get_key(); if (i=1)/所有的功能以確認(rèn)鍵按下才開始操作 63 while (1) NOP(); switch(i) case 1:/確認(rèn)鍵 T1_CLOSE;/確認(rèn)鍵按下,停止顯示數(shù)字 key_Enter+; switch(key_Enter) case 1: show_function();/顯示功能 break; case 2: set_clock();/設(shè)置時(shí)間 64 goto OUT; break; case 2:/加值鍵 display_lcd(0 x84,0 x20);/清除上行的 箭頭 display_lcd(0 xc4,0 x7e);/顯示一個(gè)箭 頭 break; case 3:/減值鍵 display_lcd(0 xc4,0 x20);/消除下行的 箭頭 display_lcd(0 x84,0 x7e);/顯示一個(gè)箭 頭 break; 65 case 4:/確定鍵 OUT: wr_dictate(0 x01); key_Enter =0; allowance(); wr_dictate(0 x0c); T1_OPEN;/繼續(xù)顯示 break; default:break; i = get_key(); if(key_Enter=0)/操作完成,退出 break; 66 return 0; /*利用中斷程序來訪問 ds1302*/ SIGNAL(TIMER1_OVF_vect)/T1 中斷程序,執(zhí)行中斷程序時(shí)將關(guān) 閉全局中斷使能位,不能響應(yīng)其他中斷 uchar i,j; TCNT1 = 0 xcf2c;/16 位計(jì)數(shù)寄存器 T1_INIT_CLOSE; count-; if (count=0) count=10; T1_CLOSE; get_time(time); adopt_data();/轉(zhuǎn)化為 lcd 顯示的數(shù)據(jù) for (i=0,j=0;i10;i +=2) display_lcd(0 x80+j,numberlcd_showi); 67 display_lcd(0 x80+j+1,numberlcd_showi+1); T1_INIT_OPEN;/再次開定時(shí)中斷 68 附錄附錄 4 4 參考文獻(xiàn)參考文獻(xiàn) 1 沈文,Eagle lee,詹衛(wèi)前. AVR 單片機(jī) C 語言開發(fā)入門指 導(dǎo)M.北京:清華大學(xué)出版社, 2003. 2 Richard Barnett 等.嵌入式 C 編程與 Atmel AVRM.北京: 清華大學(xué)出版社,2003. 3 Ying HuangSanthosh KumaranJen-Yao Chung.A model- driven framework for enterprise service managementJ.IseB,2005,3:201-217 4 耿德根等.AVR 高速嵌入式單片機(jī)原理與應(yīng)用M.北京: 航空航天大學(xué)出版社,2001. 5 Mohamadi, T. Real Time Operating System for AVR microcontrollers. Design & Test Symposium (EWDTS),2011 9th East- West,9-12 Sept. 2011:376-380 6金春林等.AVR 系列單片機(jī) C 語言編程與應(yīng)用實(shí)例M.北 京:清華大學(xué)出版社,2003. 7 張軍,宋濤.AVR 單片機(jī) C 語言程序設(shè)計(jì)實(shí)例精粹M.北 京:電子工業(yè)出版社,2009 8 Von Dhananjay V. Gadre .Programming And Customizing the AVR MicrocontrollerM. McGraw-Hill Companies,2008 9 丁化成等.AVR 單片機(jī)應(yīng)用設(shè)計(jì)M.北京:航空航天大學(xué)出 版社,2002. 10 丁正林等.AVR 單片機(jī)原理及應(yīng)用M.北京:國防工業(yè)出 版社,2009.

注意事項(xiàng)

本文(計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)專升本論文.doc)為本站會員(good****022)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!