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

《多功能電子時(shí)鐘》word版.doc

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

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

《多功能電子時(shí)鐘》word版.doc

嵌入式課程設(shè)計(jì)報(bào)告摘要隨著科學(xué)技術(shù)的不斷發(fā)展,電子時(shí)鐘已經(jīng)成為一種普遍的工藝了。日常生活中到處可見(jiàn)。電子時(shí)鐘的設(shè)計(jì)有很多種,普遍的電子時(shí)鐘是基于單片機(jī)用匯編語(yǔ)言做成的擴(kuò)展。ARM功能也一樣且更精確。本文是詳細(xì)介紹基于ARM上做成的電子時(shí)鐘。這個(gè)電子時(shí)鐘的硬件是用LPC2103板, 8個(gè)按鍵和8個(gè)數(shù)碼管組成的鍵盤(pán)顯示板,還有LED燈當(dāng)成鬧鈴使用。此時(shí)鐘還可以當(dāng)成秒表使用。這是一個(gè)基于ARM實(shí)現(xiàn)多功能的電子時(shí)鐘。關(guān)鍵詞:ARM;數(shù)碼顯示管;按鍵;LED燈;目 錄前言 3第一章 概述 41.1 電子時(shí)鐘概述 4第二章工作原理 52.1系統(tǒng)框圖 52.2時(shí)鐘的工作原理與功能 5第三章硬件電路設(shè)計(jì) 63.1鍵盤(pán)顯示板的電路設(shè)計(jì) 63.12數(shù)碼管的電路設(shè)計(jì) 83.12鍵盤(pán)電路設(shè)計(jì) 83.14蜂鳴器電路的設(shè)計(jì) 83.15LPC2103的電路設(shè)計(jì) 9第四章軟件設(shè)計(jì) 114.1軟件設(shè)計(jì) 11第五章調(diào)試過(guò)程 185.1調(diào)試過(guò)程 185.2 總結(jié) 18附錄 18參考文獻(xiàn) 20謝辭 20前言時(shí)鐘是人們生活中必不可少的一種工具,更是更是在人類(lèi)生產(chǎn),生活,學(xué)習(xí)等多個(gè)領(lǐng)域得到廣泛的應(yīng)用。然而隨著時(shí)間的推移,尤其是在現(xiàn)在科技的發(fā)達(dá),生活水平高,什么都講究效率的年代。人們不僅對(duì)時(shí)鐘的精度要求高,而且對(duì)時(shí)鐘的功能的要求也越來(lái)越多。時(shí)鐘已不僅僅是一種用來(lái)顯示時(shí)間的工具,而是在很多實(shí)際應(yīng)用中它還需要能夠?qū)嵏嗟钠渌δ?。比如日歷顯示功能,秒表功能,鬧鐘功能,溫度或濕度的測(cè)量電壓測(cè)量等。時(shí)鐘數(shù)字化給人們的生活帶來(lái)了極大的方便,而且也大大地?cái)U(kuò)展了鐘表原先的保濕功能。諸如定時(shí)自動(dòng)報(bào)警,按時(shí)自動(dòng)鬧鈴,定時(shí)廣播,各種定時(shí)電氣的自動(dòng)啟用等。這些功能都是一鐘表數(shù)字化為基礎(chǔ)的??梢哉f(shuō)設(shè)計(jì)多功能數(shù)字時(shí)鐘的意義已不不只在于數(shù)字時(shí)鐘本身,更大的意義在于多功能數(shù)字時(shí)鐘在許多實(shí)時(shí)控制系統(tǒng)中的應(yīng)用。在很多實(shí)際應(yīng)用中,只要對(duì)數(shù)字時(shí)鐘的程序和硬件電路加以一定的修改,便可以得到實(shí)施控制的實(shí)用系統(tǒng),從而應(yīng)用到實(shí)際工作與生產(chǎn)中去。因此,研究數(shù)字時(shí)鐘及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實(shí)的意義。怎樣讓時(shí)鐘更好的為我們服務(wù)?怎樣讓時(shí)鐘更符合實(shí)際應(yīng)用的需求?這就要求人們不斷設(shè)計(jì)出新型時(shí)鐘,不斷設(shè)計(jì)出適合實(shí)際應(yīng)用的多功能時(shí)鐘。本設(shè)計(jì)方案正是根據(jù)以上所述并結(jié)合日常生活中對(duì)時(shí)鐘功能需求的分析,運(yùn)用ARM編寫(xiě)技術(shù),設(shè)計(jì)出一個(gè)適合日常生活需要的多功能數(shù)字時(shí)鐘。此多功能數(shù)字時(shí)鐘除了傳統(tǒng)的顯示時(shí)間功能之外還有日歷功能以及秒表及定時(shí)鬧鐘功能。第一章概述1.1 電子時(shí)鐘概述加入世貿(mào)組織以后,中國(guó)會(huì)面臨激烈的競(jìng)爭(zhēng)。這種競(jìng)爭(zhēng)將是一場(chǎng)技實(shí)力、管理水平和人才素質(zhì)的較量,風(fēng)險(xiǎn)和機(jī)遇共存。于是我們?cè)趯W(xué)習(xí)ARM基礎(chǔ)上,要會(huì)做成多功能的時(shí)鐘。電子時(shí)鐘是要用硬件和軟件組成?,F(xiàn)在設(shè)計(jì)的電子時(shí)鐘的硬件由LPC2103,鍵盤(pán)顯示板和蜂鳴器組成,軟件由基于ARM編寫(xiě)程序。LPC2103是一個(gè)基于支持實(shí)時(shí)仿真的16/32位ARM7 TDMI-S CPU的微控制器,并帶有32kB的嵌入高速Flash存儲(chǔ)器,128位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu)使32位代碼能夠在最大時(shí)鐘速率下運(yùn)行。較小的封裝和極低的功耗使LPC2103適用于訪(fǎng)問(wèn)控制器和POS機(jī)等小型應(yīng)用系統(tǒng)中;由于內(nèi)置了寬范圍的串行通信接口(2個(gè)UART、SPI、SSP和2個(gè)I2C)和8KB的片內(nèi)SRAM,LPC2103也適合用在通信網(wǎng)關(guān)和協(xié)議轉(zhuǎn)換器中。32/16位定時(shí)器、增強(qiáng)型10位ADC、定時(shí)器輸出匹配PWM特性、多達(dá)13個(gè)邊沿、電平觸發(fā)的外部中斷、32條高速GPIO,使得LPC2103微控制器特別適用于工業(yè)控制和醫(yī)療系統(tǒng)中。鍵盤(pán)顯示板是用按鍵控制LED數(shù)碼管的顯示。不同的按鍵及不同的按鍵次數(shù)已表明不同的功能使數(shù)碼管顯示不同功能。鍵盤(pán)顯示板有5個(gè)排針,分別是要來(lái)接電源,地,輸入數(shù)據(jù)引腳,檢測(cè)按鍵引腳,輸入位碼和段碼的引腳。蜂鳴器是輸入低電平就鳴叫的。鍵盤(pán)顯示板和蜂鳴器都是用LPC2103的CPU控制數(shù)據(jù)的。第二章工作原理2.1系統(tǒng)框圖 系統(tǒng)是以L(fǎng)PC2103為核心,由按鍵向2103輸入信號(hào),向LED顯示板和蜂鳴器發(fā)送信號(hào)。系統(tǒng)的基本工作的框圖如圖2.1.圖2.1系統(tǒng)框圖2.2時(shí)鐘的工作原理與功能用接在電腦上的串口線(xiàn)與電源線(xiàn)接到LPC2103上,并用導(dǎo)線(xiàn)把LPC2103上的P0.4,P0.5,P0。6與鍵盤(pán)顯示板連接。P0.4引腳為SCK(SPI0)功能P0.5為GPIO的功能。P0.6引腳設(shè)置為MSOI(SPI0)功能 還要把LPC2103上P0.16引腳與蜂鳴器連接。鍵盤(pán)顯示板與蜂鳴器各接上電源線(xiàn)和地線(xiàn)。運(yùn)行程序時(shí),數(shù)據(jù)輸入,利用74LS164譯碼器給數(shù)碼管。在LPC2103開(kāi)發(fā)系統(tǒng)中,均采用了 8 位數(shù)碼管動(dòng)態(tài)掃描顯示。它將所數(shù)碼管的 8 個(gè)段線(xiàn)相應(yīng)地并接在一起,并接到LPC2103的P0.4 口,由P0.4口控制字段輸出。各位數(shù)碼管的共陰極由LPC2103的 P0.6 口控制Q20Q27 來(lái)實(shí)現(xiàn) 8 位數(shù)碼管的位輸出控制。如圖2.1這樣,對(duì)于一組數(shù)碼管動(dòng)態(tài)掃描顯示需要由兩組信號(hào)來(lái)控制:一組是字段輸出口輸出的形代碼,用來(lái)控制顯示的字形,稱(chēng)為段碼;另一組是位輸出口輸出的控制信號(hào),用來(lái)選第幾位數(shù)碼管工作,稱(chēng)為位碼。 由于各位數(shù)碼管的段線(xiàn)并聯(lián),段碼的輸出對(duì)各位數(shù)碼管來(lái)說(shuō)都是相同的。因此,在同一刻如果各位數(shù)碼管的位選線(xiàn)都處于選通狀態(tài)的話(huà),8 位數(shù)碼管將顯示相同的字符。若要各數(shù)碼管能夠顯示出與本位相應(yīng)的字符,就必須采用掃描顯示方式。即在某一時(shí)刻,只讓某位的位選線(xiàn)處于導(dǎo)通狀態(tài),而其它各位的位選線(xiàn)處于關(guān)閉狀態(tài)。同時(shí),段線(xiàn)上輸出相應(yīng)位顯示字符的字型碼。這樣在同一時(shí)刻,只有選通的那一位顯示出字符,而其它各位則是熄的,如此循環(huán)下去,就可以使各位數(shù)碼管顯示出將要顯示的字符。 雖然這些字符是在不同時(shí)刻出現(xiàn)的,而且同一時(shí)刻,只有一位顯示,其它各位熄滅,但于數(shù)碼管具有余輝特性和人眼有視覺(jué)暫留現(xiàn)象,只要每位數(shù)碼管顯示間隔足夠短,給人眼的視覺(jué)印象就會(huì)是連續(xù)穩(wěn)定地顯示。圖2.12數(shù)碼管電路圖這個(gè)時(shí)鐘有如下的功能如下一是顯示時(shí)間,則當(dāng)開(kāi)始運(yùn)行時(shí)就會(huì)是顯示定時(shí)的時(shí)間。如果想改變時(shí)間了就按下按鍵KEY2,則是分鐘加或減1.如果按下按鍵KEY3,則是小時(shí)加或減1。當(dāng)你在按下按鍵KEY1時(shí)則是顯示日歷,如果按下按鍵KEY4,則是天數(shù)加或減1.如果按下按鍵KEY5,則是月數(shù)加或減1。如果你再按下按鍵KEY1則是實(shí)現(xiàn)秒表,按下按鍵KEY7,則是啟動(dòng)秒表,如果再按下按鍵KEY7就會(huì)停止。如果想要從新開(kāi)始計(jì)時(shí),只要按下按鍵KEY8,就可以使秒表復(fù)位。如果你再按下按鍵KEY1,你就可以定時(shí),時(shí)間到了蜂鳴器就會(huì)響。當(dāng)然,你想加或減了,就有你自己決定了。為了方便,我們把按鍵KEY6設(shè)計(jì)成方向鍵。它默認(rèn)為是加1的,當(dāng)你想減1時(shí),你只要在按一下按鍵KEY6即可。第三章硬件電路設(shè)計(jì)3.1鍵盤(pán)顯示板的電路設(shè)計(jì) 鍵盤(pán)顯示板是由電阻,電容,74LS164,排針,按鍵,數(shù)碼管,板組成的。如圖3.1所示是鍵盤(pán)顯示板的原理圖。如圖3.12是組成鍵盤(pán)顯示板的器件。圖3.13是實(shí)圖。圖3.1鍵盤(pán)顯示板原理圖名稱(chēng)封裝數(shù)量按鍵SPST-28排針HDR1X51電容CAPR2.5-51電容CC2012-08051電阻AXLAL9數(shù)碼管874HC1642圖3.12鍵盤(pán)顯示板部件清單 圖3.133.12數(shù)碼管的電路設(shè)計(jì) 數(shù)碼管又叫LED數(shù)碼管。LED是發(fā)光二極管的縮寫(xiě)。一個(gè)LED數(shù)碼管是由8個(gè)發(fā)光二極管構(gòu)成的。每一個(gè)發(fā)光二極管的陽(yáng)極都接一個(gè)電阻到外部引腳上。用陰極做公共端,連接在一起接地。如圖3.14。器件表格如3.15圖3.14圖3.16名稱(chēng)數(shù)量備注發(fā)光二極管64組成8個(gè)8段數(shù)碼管表3,15數(shù)碼管的器件3.13鍵盤(pán)電路設(shè)計(jì)鍵盤(pán)顯示板上總共使用了8個(gè)獨(dú)立按鍵。獨(dú)立按鍵是每個(gè)按鍵都有一個(gè)信號(hào)線(xiàn)與機(jī)電路相連,所有按鍵有一個(gè)公共地或公共正端,每個(gè)鍵相互獨(dú)立互不影響。按鍵相互獨(dú)立的接通一條輸入數(shù)據(jù)線(xiàn),每個(gè)鍵的工作不會(huì)影響其它的I/0口,如圖3.153.14蜂鳴器電路的設(shè)計(jì)該蜂鳴器是一個(gè)無(wú)源蜂鳴器,要使用PWM驅(qū)動(dòng)。它是由一個(gè)1K的電阻,PNP三極管和蜂鳴器組成了蜂鳴器電路。如圖3.16,實(shí)圖3.17,圖3.18器件表。圖3.16蜂鳴器電路圖 圖3.17 蜂鳴器實(shí)圖名稱(chēng)數(shù)量備注排針1引腳連接三極管1NPN型PLC21031主板鳴蜂器1當(dāng)成鬧鐘精密電阻1K*1(%1)10K*1(%1)萬(wàn)用表部分TL431部分圖3.18蜂鳴器部件3.15LPC2103的電路設(shè)計(jì)一:LPC2103 特性 16/32 位 ARM7 TDMI-S微控制器,超小 LQFP48 封裝; 8KB 的片內(nèi)靜態(tài) RAM 和 32KB 的片內(nèi) Flash 程序存儲(chǔ)器。128 位寬度接口/加速器可實(shí)現(xiàn)高達(dá) 70 MHz 工作頻率; 通過(guò)片內(nèi) boot 裝載程序?qū)崿F(xiàn)在系統(tǒng)/在應(yīng)用編程(ISP/IAP)。單個(gè)Flash 扇區(qū)或整片擦除時(shí)100ms,256字節(jié)編程時(shí)間為1ms; 嵌入式 ICE RT 通過(guò)片內(nèi) RealMonitor軟件提供實(shí)時(shí)調(diào)試; 10位A/D轉(zhuǎn)換器提供8路模擬輸入(每個(gè)通道的轉(zhuǎn)換時(shí)間低至 2.44us),以及特定的結(jié)果寄存器來(lái)最大限度地減少中斷開(kāi)銷(xiāo); 2個(gè)32位定時(shí)器/外部事件計(jì)數(shù)器(帶7路捕獲和7路比較通道); 16位定時(shí)器/外部事件計(jì)數(shù)器(帶 3 路捕獲和 7 路比較通道); 低功耗實(shí)時(shí)時(shí)鐘(RTC)具有獨(dú)立的電源和特定32KHz時(shí)鐘輸入; 多個(gè)串行接口,包括2個(gè)UART(16C550協(xié)議標(biāo)準(zhǔn))、2個(gè)高速12C總線(xiàn)(400 Kbit/s)、SPI和具有緩沖作用和數(shù)據(jù)長(zhǎng)度可變功能的 SSP; 向量中斷控制器(VIC),可配置優(yōu)先級(jí)和向量地址; 多達(dá) 32 個(gè)通用 I/O口(可承受 5V電壓); 多達(dá) 13 個(gè)邊沿、電平觸發(fā)的外部中斷管腳; 通過(guò)一個(gè)可編程的片內(nèi) PLL(100us 的設(shè)置時(shí)間)可實(shí)現(xiàn)最大為 70MHz 的CPU操。作頻率,其具有 10MHz25MHz 的輸入頻率; 片內(nèi)集成振蕩器與外部晶體的操作頻率范圍為 125MHz; 低功耗模式包括空閑模式、帶 RTC的睡眠模式和掉電模式; 可通過(guò)個(gè)別使能/禁止外圍功能和外圍時(shí)鐘分頻來(lái)優(yōu)化額外功耗; 通過(guò)外部中斷或 RTC 將處理器從掉電模式中喚醒。二引腳的功能如表3.19PINSEL0引腳名稱(chēng)00 01 10 11 復(fù)位值9:8P0.4GPIO P0.4SCK0(SPI0)CAP0.1(定時(shí)器0)保留 00 11:10P0.5GPIO P0.5MISO0(SPI0)MAT0.1(定時(shí)器0)保留 00 13:12P0.6GPIO P0.6MOSI0(SPI0)CAP0.2(定時(shí)器0) 保留 00 圖表3.19LPC2103的引腳功能圖3.20芯片及其引腳說(shuō)明第四章軟件設(shè)計(jì)4.1軟件設(shè)計(jì)系統(tǒng)通過(guò)ADS1.2軟件平臺(tái)把十六進(jìn)制轉(zhuǎn)換二進(jìn)制主要是實(shí)現(xiàn)四個(gè)功能,一是顯示時(shí)間,二是顯示日歷,三是實(shí)現(xiàn)秒表,四是定時(shí)鬧鈴。把系統(tǒng)分為了主程序、中斷服務(wù)程序、發(fā)送程序、延時(shí)程序、等幾個(gè)部分,再逐個(gè)編寫(xiě),單獨(dú)調(diào)試通過(guò)。程序如下:#include config.h#define LED 117uint8 T0Flag = 0;uint8 stop = 1;/秒表uint8 director=1;/加減方向uint8 h=0,m=0;/定時(shí)uint32 msecond=0;uint32 hour=1,minute=4,second=45;uint32 minute1=0,second1=0;uint32 year=11,month=1,date=10,date1=0;/數(shù)碼管顯示的數(shù)據(jù) uint8 selectable8 = 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/送位碼uint8 digitable10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /送段碼uint32 data8;uint32 Key = 1 0; j -) for(k = 50;k 0; k -);void Time0_InitExt() T0TC = 0; /設(shè)置計(jì)時(shí)器初始值為0 T0PR = 0; /預(yù)分頻器不分頻 T0MCR = 0 x03; /當(dāng)T0MR0與TC值發(fā)生匹配時(shí),將使TC復(fù)位,并產(chǎn)生中斷標(biāo)志 T0MR0 = Fpclk/400; /設(shè)置定時(shí)器的時(shí)間為2.5毫秒 T0TCR = 0 x01; /啟動(dòng)定時(shí)器/* 函數(shù)名稱(chēng):void _irq IRQ_Time0()* 功能描述:定時(shí)器timer0中斷服務(wù)程序,這個(gè)中斷的作用就是為了計(jì)時(shí)* 入口參數(shù):無(wú)* 出口參數(shù):無(wú)*/void _irq IRQ_Timer0(void) T0Flag = 1; /定時(shí)器中斷處理,即中斷標(biāo)志 T0IR = 0 x01; /清除中斷標(biāo)志 VICVectAddr = 0 x00; /通知VIC中斷處理結(jié)束,清零表示為下一次中斷做準(zhǔn)備/* 函數(shù)名稱(chēng):void IRQ_Init()* 功能描述:設(shè)置定時(shí)器TIMR0中斷IRQ* 入口參數(shù):無(wú)* 出口參數(shù):無(wú)*/void IRQ_Init() VICIntSelect = 0 x00; /所有中斷分配為IRQ中斷 VICVectCntl0 = 0 x20 | 0 x04; /設(shè)置定時(shí)器中斷分配為向量IRQ通道0,即其具有最高優(yōu)先級(jí) VICVectAddr0 = (uint32)IRQ_Timer0; /向量IRQ通道0的中斷服務(wù)程序地址為IRQ_Timer0,當(dāng)產(chǎn)生中斷時(shí) /就到地址為IRQ_Timer0這個(gè)地點(diǎn)執(zhí)行程序,即執(zhí)行函數(shù)IRQ_Timer0 VICIntEnable = (1 4); /定時(shí)器中斷使能/* 函數(shù)名稱(chēng):void CONVBIT()* 功能描述:/給全局變量數(shù)組data8賦值* 入口參數(shù):無(wú)* 出口參數(shù):無(wú)*/void CONVBIT0(void) data0 = second % 10; /個(gè)位 data1 = second / 10; /十位 data2 = 11; /百位 data3 = minute % 10; /千位 data4 = minute / 10; /萬(wàn)位 data5 = 11; /十萬(wàn)位 data6 = hour % 10; /百萬(wàn)位 data7 = hour / 10; /千萬(wàn)位void CONVBIT1(void) data0 = date % 10; /個(gè)位 data1 = date / 10; /十位 data2 = 11; /百位 data3 = month % 10; /千位 data4 = month / 10; /萬(wàn)位 data5 = 11; /十萬(wàn)位 data6 = year % 10; /百萬(wàn)位 data7 = year / 10; /千萬(wàn)位void CONVBIT2(void) data0 = msecond % 10; /個(gè)位 data1 = msecond / 10; /十位 data2 = 11; /百位 data3 = second1 % 10; /千位 data4 = second1 / 10; /萬(wàn)位 data5 = 11; /十萬(wàn)位 data6 = minute1 % 10; /百萬(wàn)位 data7 = minute1 / 10; /千萬(wàn)位void CONVBIT3(void) data0 =0; /個(gè)位 data1 =0; /十位 data2 = 11; /百位 data3 = m % 10; /千位 data4 = m / 10; /萬(wàn)位 data5 = 11; /十萬(wàn)位 data6 = h%10; /百萬(wàn)位 data7 = h/10; /千萬(wàn)位/* 函數(shù)名稱(chēng):void MSPI_Init()* 功能描述:初始化SPI接口,并設(shè)置為主機(jī)* 入口參數(shù):無(wú)* 出口參數(shù):無(wú)*/void MSPI_Init() SPI_SPCCR = 0 x52; SPI_SPCR = (0 3) | /CPHA = 0,數(shù)據(jù)在SCK的第一個(gè)跳變沿(時(shí)鐘沿)采樣。傳輸從SSEL信號(hào)激活時(shí)開(kāi)始, /并在SSEL信號(hào)無(wú)效時(shí)結(jié)束 (1 4) | /CPOL = 1,時(shí)鐘為低電平有效 (1 5) | /設(shè)置為主機(jī) (0 6) | /LSBF = 0時(shí),SPI數(shù)據(jù)據(jù)MSB(即最高位(位7))在先 (1 7); /SPI中斷使能/* 函數(shù)名稱(chēng):void MSendData(uint8 data)* 功能描述:向SPI總線(xiàn)發(fā)送數(shù)據(jù),即發(fā)送位碼和段碼* 入口參數(shù):data表示需要發(fā)送的數(shù)據(jù)* 出口參數(shù):*/void MSendData(uint8 data) SPI_SPDR = data; /發(fā)送數(shù)據(jù) while(SPI_SPSR & 0 x80) = 0); /等待SPIF置位(當(dāng)SPSR狀態(tài)寄存器的第七位(功能為SPIF)置位, /表示一次SPI數(shù)據(jù)傳輸完畢,即等待數(shù)據(jù)發(fā)送完畢/* 函數(shù)名稱(chēng):int main (void)* 功能描述:實(shí)現(xiàn)數(shù)據(jù)的顯示* 入口參數(shù):無(wú) * 出口參數(shù):無(wú)*/int main (void) / add user source code uint32 i = 0,function=0; /定義i初始值為0,i表示的是所顯示的數(shù)據(jù)在數(shù)碼管的第幾位,顯示一位后,執(zhí)行i+;使i加1/這樣就顯示下一位數(shù),直到第八位,也就是i等于8時(shí),給i賦值為0,這樣就可循環(huán)顯示數(shù)據(jù) uint32 W = 0,ms=0; uint8 Tk = 0 x09; uint8 h1=0,m1=0; PINSEL0 = (0 x01 Gpio (0 x01 =100) msecond=0;second1+; if(second1=60) second1=0;minute1+; / switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12:date1=31; break; case 2:date1=28; break; case 4: case 6: case 9: case 11:date1;/ if(ms=100) ms=0; second+; if(second=60) second=0;minute+; if(minute=60) minute=0;hour+; if(hour=24) hour=0;date+; if(datedate1) date=1;month+; if(month12) month=1;year+; W +; / W 自加2.5毫秒 / if(IO0PIN & Key) != 0) /按鍵處理初始化 uint8 Tk = 0 x09; if(Tk = i) switch(Tk) case 1:function=(function+1)%4; break; case 2:if(function=0) if(director=1) minute+; else if(minute0) minute-; else minute=59; if(function=3)m=(m+1)%60; break; case 3:if(function=0) if(director=1) hour+; else if(hour0) hour-; else hour=23; if(function=3) h=(h+1)%23; break; case 4:if(function=1) if(director=1)date+; else if(date1) date-; else date=date1; if(function=3) h1=h;m1=m; break; case 5:if(function=1) if(director=1) month+; else if(month1) month-; else month=12; break; case 6:director=(director+1)%2; break; case 7:if(function=2) stop=(stop+1)%2; break; case0:if(function=2)msecond=0;second1=0;minute1=0; Tk = 0 x09; else if(IO0PIN & Key) = 0) delay(100); if(IO0PIN & Key) = 0) Tk = i; / if(hour=h1 & minute=m1 & second=0) IOCLR |=LED; else IOSET |=LED; / if(datai=11) MSendData(0 x40); else MSendData(digitabledatai); /發(fā)送段碼 MSendData(selectablei); /發(fā)送位碼 i +; / i 自加 ,即顯示第 i (即數(shù)碼管上的第 i 位數(shù)字) 位數(shù)字 if(i 7) /如果第八位數(shù)字顯示完畢,則再重新顯示第一位數(shù)字,如此循環(huán) i = 0; /重新在數(shù)碼管上顯示第 1 位數(shù)字 / return 0;第五章調(diào)試過(guò)程5.1調(diào)試過(guò)程調(diào)試是一個(gè)很重要的過(guò)程,也是一個(gè)很艱巨的任務(wù),經(jīng)常遇到很多意想不的錯(cuò)誤。比如說(shuō),1:對(duì)中斷還不夠熟悉。2:對(duì)LED數(shù)碼管認(rèn)識(shí)不夠等。由于這次的設(shè)計(jì)使用的是LPC2103的開(kāi)發(fā)板,所以在硬件上不需要太多的去調(diào)試。在利用開(kāi)發(fā)板硬件資源的基礎(chǔ)上,由于這次的多功能鬧鐘設(shè)計(jì)使用的模塊較多,基本上各個(gè)模塊的調(diào)試是分開(kāi)進(jìn)行的。主要包括初始化的程序調(diào)試、按鍵子程序調(diào)試、LED顯示調(diào)試這幾部分子程序的調(diào)試。將這三部分調(diào)試成功,那么整個(gè)設(shè)計(jì)的軟件部分也就基本完成了。在該課程設(shè)計(jì)中,采用的集成開(kāi)發(fā)環(huán)境是ADS1.2,在軟件設(shè)計(jì)過(guò)程中,有時(shí)候不小心插入了一個(gè)中文的符號(hào)(如分號(hào)),就會(huì)使軟件編譯不通過(guò),開(kāi)始在這個(gè)錯(cuò)誤上浪費(fèi)不少時(shí)間,但后來(lái)注意到了這個(gè)情況,避免了類(lèi)似的錯(cuò)誤的發(fā)生。四位的數(shù)碼管采用的是動(dòng)態(tài)顯示模式,刷新頻率為50Hz,另外,由于開(kāi)發(fā)板的硬件采用的是移位寄存器送筆段碼,所以在軟件設(shè)計(jì)方面要用到將8位筆段碼不斷循環(huán)右移,增加了設(shè)計(jì)的難度。起初我認(rèn)為一切程序都編寫(xiě)得差不多的時(shí)候,燒進(jìn)芯片的程序使數(shù)碼管顯示一片模糊,基本上顯示的都是8,后來(lái)從程序的開(kāi)始查起,終于找到原因,原來(lái)動(dòng)態(tài)顯示程序中,每次只能是一位的數(shù)碼管點(diǎn)亮,但在程序設(shè)計(jì)中,在點(diǎn)亮下一位數(shù)碼管時(shí),忘記了將上一次點(diǎn)亮的位給關(guān)掉,導(dǎo)致四位數(shù)碼管時(shí)同時(shí)被點(diǎn)亮的,最后,在點(diǎn)亮數(shù)碼管前首先將四位數(shù)碼管全部關(guān)閉,再以50Hz的頻率進(jìn)行點(diǎn)亮刷新,顯示方回到正常狀態(tài)。最后就是在這兩個(gè)模塊的基礎(chǔ)上來(lái)對(duì)整體的程序進(jìn)行相關(guān)的調(diào)試和完善。例如在原先設(shè)置有當(dāng)進(jìn)入時(shí)間設(shè)置或者鬧鐘掛起時(shí)有LED點(diǎn)亮進(jìn)行提示,設(shè)置時(shí)間時(shí)相關(guān)的設(shè)置超過(guò)相應(yīng)的極限值,這些在最后的調(diào)試過(guò)程中得到完善,使其工作在正常的狀態(tài),調(diào)試過(guò)程也就這樣基本得到完成。5.2 總結(jié)通過(guò)本電子時(shí)鐘的設(shè)計(jì),我學(xué)到了很多東西。首先,在設(shè)計(jì)電子表的過(guò)程中,我們把系統(tǒng)分為了主程序、中斷服務(wù)程序、顯示程序、延時(shí)程序、等幾個(gè)部分,再逐個(gè)編寫(xiě),單獨(dú)調(diào)試通過(guò),再連接在一起。大大的減小了工作量,這主要體現(xiàn)在調(diào)試工作中。其次,在多功能電子鐘實(shí)際設(shè)計(jì)過(guò)程中,所有的模塊都是通過(guò)不同進(jìn)制的計(jì)數(shù)器來(lái)實(shí)現(xiàn)其主要功能的,各模塊之間是通過(guò)進(jìn)位信號(hào)連接在一起的。前一級(jí)的進(jìn)位信號(hào)作為下一級(jí)的計(jì)數(shù)clk信號(hào),通過(guò)層次關(guān)系使設(shè)計(jì)思路清晰一開(kāi)始由于程序的設(shè)計(jì)考慮置位調(diào)整。沒(méi)有好的思路,走了不少?gòu)澛贰:髞?lái)(有人)想到了在程序里設(shè)置總控制端,于是解決了問(wèn)題。和同學(xué)的合作使我的程序更加優(yōu)化。在此次課程設(shè)計(jì)中,更加感到了團(tuán)結(jié)協(xié)作的重要性,當(dāng)一個(gè)人陷入困境人助十分重要的。大家共同商量還可以發(fā)現(xiàn)許多個(gè)人無(wú)法發(fā)現(xiàn)的題。附錄:實(shí)物圖如下圖1 顯示燈亮(鬧鐘響)圖2顯示年月日?qǐng)D3顯示秒表圖4顯示時(shí)間謝辭首先,在這里感謝學(xué)校給我們安排了這次課設(shè),使我們有一個(gè)可以自己動(dòng)手的機(jī)會(huì),通過(guò)動(dòng)手,進(jìn)一步熟悉自己所學(xué)的理論知識(shí),體會(huì)自己動(dòng)手得出結(jié)果的那種感覺(jué)。再次,在這要感謝我們的指導(dǎo)老師,老師在我們的實(shí)踐過(guò)程中不提自己的辛苦,耐心講所有的標(biāo)題,幫助我們解決一些程序和調(diào)試,在這表示感謝!感謝這次課程設(shè)計(jì)中給我?guī)椭耐瑢W(xué),是你們的幫助,我才順利的完成了課程設(shè)計(jì)任務(wù)。謝謝你們的幫助!27

注意事項(xiàng)

本文(《多功能電子時(shí)鐘》word版.doc)為本站會(huì)員(good****022)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

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




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

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

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


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