微機原理及應(yīng)用課程設(shè)計-帶LCD顯示的定時鬧鐘_第1頁
微機原理及應(yīng)用課程設(shè)計-帶LCD顯示的定時鬧鐘_第2頁
微機原理及應(yīng)用課程設(shè)計-帶LCD顯示的定時鬧鐘_第3頁
微機原理及應(yīng)用課程設(shè)計-帶LCD顯示的定時鬧鐘_第4頁
微機原理及應(yīng)用課程設(shè)計-帶LCD顯示的定時鬧鐘_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 微機原理及應(yīng)用課程設(shè)計說明書pcb圖,仿真 c語言程序 原理圖等全套設(shè)計,聯(lián)系 153893706課程設(shè)計說明書課 程 名 稱: 微機原理及應(yīng)用課程設(shè)計 課 程 代 碼: 題 目: 帶lcd顯示的定時鬧鐘 年級/專業(yè)/班: 09級汽電三班 學(xué) 生 姓 名: 學(xué) 號: 開 始 時 間: 2012 年 07 月 02 日完 成 時 間: 2012 年 07 月 06 日課程設(shè)計成績:學(xué)習(xí)態(tài)度及平時成績(30)技術(shù)水平與實際能力(20)創(chuàng)新(5)說明書(計算書、圖紙、分析報告)撰寫質(zhì)量(45)總 分(100)指導(dǎo)教師簽名: 年 月 日目 錄摘 要21 引 言31.1 問題的提出31.2任務(wù)與分析4

2、2 系統(tǒng)方案設(shè)計52.1 系統(tǒng)設(shè)計方案52.2 系統(tǒng)總體框圖63 系統(tǒng)硬件電路設(shè)計73.1 89c51單片機73.2 1602lcd93.3 鍵盤124 系統(tǒng)軟件設(shè)計134.1 proteus軟件環(huán)境介紹134.2 protel軟件環(huán)境介紹134.3系統(tǒng)軟件分析144.3.1 系統(tǒng)時鐘電路設(shè)計144.3.2系統(tǒng)復(fù)位電路的設(shè)計144.3.3 鬧鐘指示電路設(shè)計154.3.4 電子鬧鐘的顯示電路設(shè)計154.4 程序流程圖155.系統(tǒng)調(diào)試過程21結(jié) 論24致 謝25參考文獻(xiàn)26附表(本設(shè)計所有程序)38摘 要本設(shè)計是基于at89c51單片機為控制核心的定時鬧鐘設(shè)計。系統(tǒng)采用了美國dallas公司的ds

3、1302實時時鐘芯片構(gòu)成了計時電路,實現(xiàn)了時間和日期的顯示。t89c51單片機結(jié)合七段顯示器設(shè)計的簡易定時鬧鈴時鐘,可以設(shè)置現(xiàn)在的時間及顯示鬧鈴設(shè)置時間,若時間到則發(fā)出一陣聲響,進(jìn)步可以擴充控制電器的啟停。本設(shè)計說明書對該系統(tǒng)的硬件電路,工作原理進(jìn)行了詳細(xì)的介紹。同時給出了軟件設(shè)計的流程圖和主要源代碼。關(guān)鍵詞: 89c51單片機 ds1302時鐘芯片 led顯示器1 引 言1.1 問題的提出隨著人類科技文明的發(fā)展,人們對于時鐘的要求在不斷地提高。時鐘已不僅僅被看成一種用來顯示時間的工具,在很多實際應(yīng)用中它還需要能夠?qū)崿F(xiàn)更多其它的功能。高精度、多功能、小體積、低功耗,是現(xiàn)代時鐘發(fā)展的趨勢。而單片

4、機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器cpu隨機存儲器ram、只讀存儲器rom、多種i/o口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、a/d轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。定時鬧鐘是采用數(shù)字電路實現(xiàn)對.時,分,秒.數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能

5、。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。定時鬧鐘已成為人們?nèi)粘I钪校罕夭豢缮俚谋匦杵?,廣泛用于個人家庭以及車站、碼頭、劇場、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大的方便。由于數(shù)字集成電路技術(shù)的發(fā)展和采用了先進(jìn)的石英技術(shù),使數(shù)字鐘具有走時準(zhǔn)確、性能穩(wěn)定、攜帶方便等優(yōu)點,它還用于計時自動報時及自動控制的領(lǐng)域。因此,研究數(shù)字鐘及擴大其應(yīng)用,有著非?,F(xiàn)實的意義。本文正是基于這個原因以單片機為控制核心,設(shè)計制作一個多功能的數(shù)字時鐘。本設(shè)計基于單片機技術(shù)原理

6、,以單片機芯片at89c51作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設(shè)計制作出一個多功能定時鬧鐘系統(tǒng)。該時鐘系統(tǒng)主要由秒信號發(fā)生器、時間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路組成。系統(tǒng)具有簡單清晰的操作界面,可隨時進(jìn)行時間調(diào)整。同時,該時鐘系統(tǒng)還具有功耗小、成本低的特點,具有很強的實用性。由于系統(tǒng)所用元器件較少,單片機所被占用的i/o口不多,因此系統(tǒng)具有一定的可擴展性。1.2任務(wù)與分析本次設(shè)計的系統(tǒng)的控制中心是at89c51單片機。首先,在protel軟件環(huán)境中進(jìn)行硬件電路圖的設(shè)計。然后在kell軟件環(huán)境中進(jìn)行系統(tǒng)的軟件編程,并進(jìn)行程序源文件的編譯和調(diào)試,最后生成.hex文

7、件。此.hex文件是硬件電路運行實現(xiàn)的源代碼來源。把.hex文件加載到at89c51單片機芯片,然后在proteus軟件環(huán)境中運行硬件電路,時鐘的日期就可以正常顯示了。 本設(shè)計的系統(tǒng)主要由:at89c51為中央處理芯片,用于數(shù)據(jù)處理,初值設(shè)定。時鐘芯片ds1302是本例的核心模塊,由他提供時鐘信息并由led顯示,c語言進(jìn)行編程。本系統(tǒng)可以分為以下4大模塊:1、at89c51模塊:用于數(shù)據(jù)處理,和外圍的時鐘芯片通信,并控制時鐘傳輸過程,采集時間信息并予以處理。2、ds1302模塊:實時顯示可以通過軟件編程來實現(xiàn),但這種方法需要編制的程序復(fù)雜,代碼多,且單片機軟件開銷大,時間信息也不容易長期保存。

8、而采用時鐘芯片ds1302可以避免這些問題,它可以長期保存此信息,因此本例中我們使用此芯片來實現(xiàn)此系統(tǒng)。3、數(shù)碼管顯示模塊:顯示模塊采用普通的共陽led數(shù)碼管,此模塊用于實時的顯示時間信息。4、程序:包括單片機控制時鐘芯片的接口程序(實現(xiàn)單片機和時鐘芯片之間的數(shù)據(jù)傳輸過程)和數(shù)碼管顯示程序。2 系統(tǒng)方案設(shè)計2.1 系統(tǒng)設(shè)計方案通過查閱相關(guān)資料,設(shè)計初期共有3個方案供我選擇,分別是:(1)采用89c2051單片機組成的系統(tǒng);(2)采用at89c51單片機,8155芯片組成的系統(tǒng);(3)采用89c51單片機,ds1302實時時鐘芯片組成的系統(tǒng)。(1)采用89c2051單片機組成的系統(tǒng)此系統(tǒng)的硬件部

9、分主要是由89c2051單片機,74ls48芯片,uln2003芯片所組成。該系統(tǒng)硬件結(jié)構(gòu)簡單,但是單片機的i/o接口太少,不足以實現(xiàn)多種功能,軟件設(shè)計部分,程序冗長而復(fù)雜,易產(chǎn)生混淆。(2)采用89c51單片機,8155芯片組成的系統(tǒng) 這個方案采用89c51單片機,8155芯片,led顯示器,4*4鍵盤來組成系統(tǒng)的硬件。該系統(tǒng)采用的是單片機內(nèi)部的定時/計數(shù)器進(jìn)行中斷定時,配合軟件延時實現(xiàn)時,分,秒的計時。但這樣的話,程序復(fù)雜化,時間信息也不容易長期保存。(3)采用89c51單片,ds1302實時時鐘芯片組成的系統(tǒng) 此方案在硬件部分采用了89c51單片機,ds13o2時鐘芯片,led顯示器,幾

10、個按鍵。該系統(tǒng)的最大特點是采用了新的芯片即ds1302。在功能上進(jìn)行了擴充,并且使得硬件連線顯得較為簡單,在軟件部分,程序顯得層次分明。 最后確定設(shè)計采用第3方案,即 系統(tǒng)是由89c51單片機, ds1302時鐘芯片,led顯示器組成。2.2 系統(tǒng)總體框圖復(fù)位、時鐘等電路按鈕電路cpu數(shù)碼管顯示電路鬧鈴聲指示電路電源系統(tǒng)圖2-1 系統(tǒng)總體框圖 電子鬧鐘應(yīng)包括秒信號發(fā)生器、時間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分。 電子鬧鐘的主電路指的是圖中虛線框內(nèi)部分,主要涉及到cpu電路和按鍵按鈕電路。主機的設(shè)計具體地說有:1)系統(tǒng)時鐘電路設(shè)計;2)系統(tǒng)復(fù)位電路設(shè)計;3)按鍵與按鈕電路設(shè)計;

11、4)鬧鈴聲指示電路設(shè)計。   3 系統(tǒng)硬件電路設(shè)計3.1 89c51單片機 at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(fperomfalsh programmable and erasable read only memory)的低電壓,高性能cmos 8位微處理器,俗稱單片機。at89c2051是一種帶2k字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個芯片中,atmel的at89c51

12、是一種高效微控制器,at89c2051是它的一種精簡版本。at89c51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。圖3-1 89c51單片機引腳圖 89c51單片機與早期intel的8051/8751/8031芯片的外部引腳和指令系統(tǒng)完全兼容,只不過用flash rom 替代了rom/eprom而已3。89c51單片機內(nèi)部結(jié)構(gòu)如圖所示。圖3-2 89c51單片機內(nèi)部結(jié)構(gòu)示意圖各引腳的功能如下: vcc:供電電壓。 gnd:接地。  p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序

13、數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗時,p0輸出原碼,此時p0外部必須被拉高3。 p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收。 p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當(dāng)p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳

14、被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗時接收高八位地址信號和控制信號。  p3口:p3口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持rst腳兩個機器

15、周期的高電平時間。ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr 8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。/psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次

16、/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。 /ea:當(dāng)/ea保持低電平時,則在此期間cpu只訪問外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時,則執(zhí)行內(nèi)部程序存儲器中的程序。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。 3.2 1602lcdlcd1602顯示方式的方案比較。方案一:采用花樣顯示,花樣顯示是指lcd顯示某一屏字符時,采

17、取從左到右或者是從右到左的整屏移動的顯示方式。在這種顯示方式下,給人的感覺就是程序是在執(zhí)行的,同時如果控制好了移動一屏的時間間隔的話,在整體視覺上可以達(dá)到很好的效果。方案二:采用靜態(tài)顯示,靜態(tài)顯示是指lcd顯示某一屏字符時,時鐘保持當(dāng)前字符的顯示,不使用移屏顯示。便于控制,同時能夠滿足正常的顯示效果。由于在顯示中存在播放時間的動態(tài)變化,這樣的話,即使是不產(chǎn)生整屏移動,也能給人動態(tài)感,也易于控制。基于以上各種特點,我選擇了方案二。1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表2-1所示. 表3-2 1602液晶模塊控制指令序號指令rsr/wd7d6d5d4d3d2d1d01清顯示00000

18、000012光標(biāo)返回000000001*3置輸入模式00000001i/ds4顯示開/關(guān)控制0000001dcb5光標(biāo)或字符移位000001s/cr/l*6置功能00001dlnf*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01bf計數(shù)器地址10寫數(shù)到cgram或ddram)10要寫的數(shù)據(jù)內(nèi)容11從cgram或ddram讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602字符型lcd通常有14條引腳線或16條引腳線的lcd,多出來的2條線是背光電源線。vcc(15腳)和地線gnd(16腳),其控制原理與14腳的lcd完全一樣,各引腳符號及其功能表如下表

19、2-1所示。表3-3各引腳及其功能表引腳符號功能說明1vss一般接地2vdd接電源(+5v)3v0液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10k的電位器調(diào)整對比度)。4rsrs為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。4rsrs為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。5r/wr/w為讀寫信號線,高電平(1)時進(jìn)行讀操作,低電平(0)時進(jìn)行寫操作。6ee(或en)端為使能(enable)端,下降沿使能。7db0低4位三態(tài)、 雙向數(shù)據(jù)總線 0位(最低位)8db1低4

20、位三態(tài)、 雙向數(shù)據(jù)總線 1位9db2低4位三態(tài)、 雙向數(shù)據(jù)總線 2位10db3低4位三態(tài)、 雙向數(shù)據(jù)總線 3位11db4高4位三態(tài)、 雙向數(shù)據(jù)總線 4位12db5高4位三態(tài)、 雙向數(shù)據(jù)總線 5位13db6高4位三態(tài)、 雙向數(shù)據(jù)總線 6位14db7高4位三態(tài)、 雙向數(shù)據(jù)總線 7位(最高位)(也是busy flag)15bla背光電源正極16blk背光 電源負(fù)極3.3 鍵盤按鍵用于控制數(shù)碼顯示、lcd顯示、揚聲器等模塊的工作。通過掃描按鍵是否按下,來設(shè)定各模塊的工作情況,使各模塊可以在按鍵的控制下,有序地進(jìn)行工作。設(shè)計

21、中使用單個按鍵實現(xiàn)單個功能,屬于較為簡單的控制方式。按鍵采用5個button,分別控制倒計時開始、調(diào)分個位、調(diào)分十位、調(diào)秒個位、調(diào)秒十位;另外還加一個總開關(guān)用于控制所有電路的通電情況4 系統(tǒng)軟件設(shè)計4.1 proteus軟件環(huán)境介紹本系統(tǒng)的硬件設(shè)計首先是在proteus軟件環(huán)境中仿真實現(xiàn)的。proteus軟件是來自英國labcenter electronics公司的eda工具軟件,proteus軟件有十多年的歷史,在全球廣泛使用,除了具有和其它eda工具一樣的原理布圖、pcb自動或人工布線及電路仿真的功能外,其革命性的功能是,它的電路仿真是互動的。針對微處理器的應(yīng)用,還可以直接在基于原理圖的虛

22、擬原型上編程,并實現(xiàn)軟件源碼級的實時調(diào)試。如果有顯示及輸出,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等,還能看到運行后輸入輸出的效果。proteus建立了完備的電子設(shè)計開發(fā)環(huán)境,尤其重要的是proteus lite可以完全免費,也可以花微不足道的費用注冊達(dá)到更好的效果2。proteus是目前最好的模擬單片機外圍器件的工具??梢苑抡?1系列、avr、pic等常用的mcu及其外圍電路(如lcd,ram,rom,鍵盤,馬達(dá),led,ad/da,部分spi器件,部分iic器件.)。其實proteus 與 multisim比較類似,只不過它可以仿真mcu,當(dāng)然,軟件仿真精度有限,而且不可能所有的器件都

23、找得到相應(yīng)的仿真模型,用開發(fā)板和仿真器當(dāng)然是最好選擇,可是初學(xué)者擁有它們的可能性比較小。當(dāng)然,硬件實踐還是必不可少的。在沒有硬件的情況下,proteus能像pspice 仿真模擬/數(shù)字電路那樣仿真mcu及外圍電路。另外,即使有硬件,在程序編寫早期用軟件仿真一下也是很有必要的。proteus軟件主要具有以下幾個方面的特點:1、設(shè)計和仿真軟件proteus 是一個很有用的工具,它可以幫助學(xué)生和專業(yè)人士提高他們的模擬和數(shù)字電路的設(shè)計能力。2、它允許對電路設(shè)計采用圖形環(huán)境,在這種環(huán)境中,可以使用一個特定符號來代替元器件,并完成不會對真實電路造成任何損害的電路仿真操作。3、它可以仿真儀表以及可描述在仿真

24、過程中所獲得的信號的圖表。4、它可以仿真目前流行的單片機,如pics, atmel-avr, motorola, 8051 等。5、在設(shè)計綜合性方案中,還可以利用ares開發(fā)印制電路板。4.2 protel軟件環(huán)境介紹protel印制板設(shè)計軟件包是澳大利亞protel technology公司與1990年推出的電子cad產(chǎn)品,具有方便、易學(xué)、實用、快速以及高速度、高步通率的特點。它采用了分層次下拉窗口菜單結(jié)構(gòu)形式,用戶基本上不需要記背太多的鍵盤命令,用鼠標(biāo)點擊菜單命令就能操作,protel有著很高的自動布線布通率。布通率是電子產(chǎn)cad產(chǎn)品的一項重要指標(biāo),它反映電子元件在電路圖中連接關(guān)系有多少能

25、在印刷版圖中實現(xiàn)。在設(shè)計常用的單、雙面印制板時只要選擇適當(dāng)?shù)脑季趾筒季€策略方法,protel就可以輕易的達(dá)到98%-100%的布通率。對于極少數(shù)不能布通的定方,protel可以用飛線指示出來,引導(dǎo)用戶用手工方法連通。另外,protel有強大的宏命令設(shè)置功能,利用宏命令功能多定義的熱鍵可以大大提高操作速度1。 protel對微機的軟硬件配置要求很低:cpu在8088以上,dos2.0以上版本,內(nèi)存640kb以上,雙軟件(或一個軟件一個硬盤),單色顯示器(多層板設(shè)計時最好用彩色),各種兼容打印機。也能在windows9x平臺的模擬dos下運行。protel已成為印制板設(shè)計加工方面的工業(yè)標(biāo)準(zhǔn)。據(jù)

26、初步統(tǒng)計protel在cad的市場占有率達(dá) 95%,成為電子產(chǎn)品制造業(yè)界的首選cad軟件。4.3系統(tǒng)軟件分析任何一個應(yīng)用系統(tǒng),它們都有著自己的硬件系統(tǒng)和軟件系統(tǒng),少了任何一個部分都不可能稱之為一個完整的應(yīng)用系統(tǒng),它們之間是相互依存的一個整體,硬件系統(tǒng)是軟件系統(tǒng)的一個基礎(chǔ)和前提,為軟件系統(tǒng)提供了一個操作平臺;而軟件系統(tǒng)是硬件系統(tǒng)的靈魂,它對硬件系統(tǒng)起到擴充和完善的作用??上攵浖到y(tǒng)與硬件系統(tǒng)同等重要,下面為系統(tǒng)軟件設(shè)計過程4.3.1 系統(tǒng)時鐘電路設(shè)計對于時間要求不是很高的系統(tǒng),只要按圖進(jìn)行設(shè)計就能使系統(tǒng)可靠起振并穩(wěn)定運行。但由于原理圖中的c1、c2電容起著系統(tǒng)時鐘頻率微調(diào)和穩(wěn)定的作用,因此,

27、在本鬧鐘系統(tǒng)的實際應(yīng)用中一定要注意正確選擇參數(shù)(30±10 pf),并保證對稱性(盡可能匹配),選用正牌廠家生產(chǎn)的瓷片或云母電容,如果可能的話,溫度系數(shù)要盡可能低。實驗表明,這2個電容元件對鬧鐘的走時誤差有較大關(guān)系。4.3.2系統(tǒng)復(fù)位電路的設(shè)計智能系統(tǒng)一般應(yīng)有手動或上電復(fù)位電路。復(fù)位電路的實現(xiàn)通常有兩種方式:)rc復(fù)位電路;)專用µ監(jiān)控電路。前者實現(xiàn)簡單,成本低,但復(fù)位可靠性相對較低;后者成本較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位。對于復(fù)位要求高、并對電源電壓進(jìn)行監(jiān)視的場合,大多采用這種方式。本次課程設(shè)計采用了上電按鈕電平復(fù)位電路。4.3.3 鬧鐘指示電路設(shè)計鬧鈴指示可

28、以有聲或光兩種形式。本系統(tǒng)采用聲音指示。關(guān)鍵元件是蜂鳴器。蜂鳴器有無源和有源兩種,前者需要輸入聲音頻率信號才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,元件內(nèi)部已封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場上的有源蜂鳴器分為3、5、6等系列,以適應(yīng)不同的應(yīng)用需要。鬧鐘電路是用比較器來比較計時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài),如果計時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個脈沖信號,再和一個高頻信號混合,送到放大電路驅(qū)動揚聲器發(fā)聲,從而實現(xiàn)定時鬧響的功能。其電路設(shè)計參見系統(tǒng)原理圖。4.3.4 電子鬧鐘的顯示電路設(shè)計本次課程設(shè)計采用了6位數(shù)碼管顯示電路。在6位led顯示時,為了簡化電路,降低成本,

29、采用動態(tài)顯示的方式, 6個led顯示器共用一個8位的i/o, 6位led數(shù)碼管的位選線分別由相應(yīng)的p2. 0p2. 5控制,而將其相應(yīng)的段選線并聯(lián)在一起,由一個8位的i/o口控制,即p0口。譯碼顯示電路將“時”、“分”、計數(shù)器的輸出狀態(tài)菁七段顯示譯碼器譯碼,通過led顯示器顯示出來。到達(dá)定時電路時根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)一音頻發(fā)生器實現(xiàn)鬧鈴。校時電路時用來對“時”、“分”顯示數(shù)字進(jìn)行校對調(diào)整的。4.4 程序流程圖1.主程序流程圖 主程序流程圖說明:主模塊是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計一般有“自上而下”和“自下而上”兩種方式,“自上而下”法的核心就是主框架的構(gòu)建。它的

30、合理與否關(guān)系到程序最終的功能的多少和性能的好壞。開始cpu系統(tǒng)初始化定時0初始化中斷初始化串口初始化顯示待機指示符y設(shè)定鬧鈴時間顯示刷新啟動走時有關(guān)變量初始化判時或分變化否?刷新顯示判秒到否?秒指示判是否到鬧鈴時間?鬧鈴延時nnnyny圖4-1 主程序流程框圖時間設(shè)定開始2.時間設(shè)定模塊流程圖n設(shè)置鍵嗎?y設(shè)置模塊初始化將在編參數(shù)送顯示緩沖區(qū)閃爍標(biāo)志為真?y將當(dāng)前位的顯示代碼置暗代碼n調(diào)基本顯示模塊刷新顯示n設(shè)置鍵嗎?鍵嗎?n當(dāng)前編輯的是分各位?結(jié)束設(shè)定yy根據(jù)當(dāng)前位的性質(zhì)分別進(jìn)行處理(含上下限判斷)當(dāng)前編輯位下移(下一位) 圖4-2 時間設(shè)定模塊程序流程圖框圖 時間設(shè)定模塊流程圖說明:時間設(shè)

31、定模塊的設(shè)計要點是按鍵的去抖處理與“一鍵多態(tài)”的處理。即只涉及4個鍵完成了時間參數(shù)的設(shè)定。軟件法去抖動的實質(zhì)是軟件延時,即檢測到某一鍵狀態(tài)變化后延時一段時間,再檢測該按鍵的狀態(tài)是否還保持著,如是則作為按鍵處理,否則,視為抖動,不予理睬。去抖中的延時時間一般參考資料多描述為10ms左右,實際應(yīng)用中,應(yīng)大于20ms,否則,會導(dǎo)致按一次作多次處理,影響程序正常執(zhí)行?!耙绘I多態(tài)”即多功能鍵的實現(xiàn)思想是,根據(jù)按鍵時刻的系統(tǒng)狀態(tài),決定按鍵采取何種動作,即何種功能。3.鬧鈴功能的實現(xiàn)流程圖n中斷開始鬧鈴判別處理時十位、個位,分十位、個位改變了是否設(shè)置了鬧鈴判當(dāng)前時間是設(shè)定時間設(shè)置鬧鈴標(biāo)志清除鬧鈴標(biāo)志中斷返回

32、yyn圖4-3鬧鈴功能的實現(xiàn)流程圖框圖 鬧鈴功能的實現(xiàn)涉及到兩個方面:鬧鈴時間設(shè)定和是否鬧鈴判別與相應(yīng)處理。鬧鈴時間設(shè)定模塊的設(shè)計可參照時間設(shè)定模塊,這里著重闡述鬧鈴判別與處理模塊的設(shè)計問題。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時要進(jìn)行鬧鈴。當(dāng)時十位、時個位、分十位、分個位中任一位發(fā)生改變(進(jìn)位)時,就必須進(jìn)行鬧鈴判別。譯碼顯示電路將“時”、“分”計數(shù)器的輸出送到七段顯示譯碼驅(qū)動器譯碼驅(qū)動,通過六個七段led顯示器顯示出來。鬧鈴電路根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后加上一個高頻或低頻信號送到放電路驅(qū)動蜂鳴器發(fā)聲實現(xiàn)報時。校時電路是直接加一個脈沖信號到時計數(shù)器或者分計數(shù)或者秒計數(shù)器來對“時

33、”、“分”顯示數(shù)字進(jìn)行校對調(diào)整。 考慮到實用性,在該電子鐘的設(shè)計中修改定時或調(diào)整時間時采用了閃爍,而且以定時20組鬧鐘。在編程上,首先進(jìn)行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一組固定單元用來存儲計數(shù)的秒,分,時以及定時時間的序號等。在顯示程序段中主要進(jìn)行了閃爍的處理,采用定時器中斷置標(biāo)志位,再與位選相互結(jié)合的方法來控制調(diào)時或定時中的閃爍。時,分顯示則是用了軟件譯碼(查表)的方式,再用了一段固定的程序段進(jìn)行進(jìn)制轉(zhuǎn)化。初始化之后,用中斷方式對其計數(shù),計數(shù)的同時采用了定時器比較的方法,比較當(dāng)前計數(shù)時間與定時時間是否相等,若相等則將鬧鈴標(biāo)志位置數(shù)。由于定義了定時鬧鐘組,

34、在這里采用中斷組次,每中斷一次比較一組鬧鐘,避免了一次比較中斷時間過長,影響下次中斷時間。顯示之后查詢鬧鈴標(biāo)志位是否與前面所置數(shù)相等,若相等則響鈴。為了避免響鈴影響顯示,采用了每顯示幾屏以后在顯示程序中出現(xiàn)脈沖,驅(qū)動喇叭,不會影響顯示。之后用查詢方式對按鍵進(jìn)行判斷,若有鍵按下,則進(jìn)行軟件延時消抖,避免了抖動引起的干擾,執(zhí)行相應(yīng)的定時,選時或調(diào)時程序段。對當(dāng)前時間或定時時間修改后又返回到最初的顯示程序段,如此循環(huán)下去。4.基本顯示模塊的實現(xiàn)流程圖基本顯示模塊設(shè)計的重點是由顯示代碼取得相應(yīng)的段碼,顯示段碼數(shù)據(jù)的并行發(fā)送,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用

35、了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用led顯示器代替顯示器代替指針顯示進(jìn)而顯示時間,減小了計時誤差,這種表具有時,分顯示時間的功能,還可以進(jìn)行時和分的校對,片選的靈活性好。程序流程如圖所示。顯示開始將進(jìn)制時分秒數(shù)據(jù)轉(zhuǎn)化為顯示代碼通過串口將時分秒數(shù)據(jù)傳入數(shù)碼管打開顯示通過串口將時分秒數(shù)據(jù)傳入數(shù)碼管打開顯示圖4-4基本顯示模塊的實現(xiàn)流程圖5.系統(tǒng)調(diào)試過程通過上面的硬件設(shè)計和軟件設(shè)計過程,設(shè)計的工作已經(jīng)基本完成,接下來的工作就是對所設(shè)計好的應(yīng)用系統(tǒng)進(jìn)行調(diào)試。通過調(diào)試可以檢查出系統(tǒng)出現(xiàn)的一些錯誤,從而進(jìn)行下一步的修改。(1

36、)在protel 99 se中,對硬件電路圖進(jìn)行erc電氣規(guī)則檢查。 圖 5-1 protel原理圖圖5-2 erc電氣規(guī)則檢查結(jié)果 圖5-3 pcb圖(2)程序調(diào)試程序經(jīng)過調(diào)試顯示“0錯誤,0警告”。表示程序調(diào)試通過。圖5-3 程序調(diào)試通過示意圖(3)protues調(diào)試圖5-4 protues仿真圖結(jié) 論單片機是一門應(yīng)用性很強的學(xué)科,課程設(shè)計是培養(yǎng)我們綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們實際工作能力的具體訓(xùn)練和考察過程。雖然在做課程設(shè)計以前已經(jīng)系統(tǒng)的把單片機課本認(rèn)真的學(xué)習(xí)了一下,但是在剛拿到設(shè)計任務(wù)書時還是有點一頭霧水,不知道該從哪里下手。令人欣

37、慰的是經(jīng)過一周的學(xué)習(xí),雖然過程很艱辛,但是總算實現(xiàn)了定時鬧鐘的功能,所有的努力都很值得。這一周的大部分時間都在研究程序怎么處理,在這個過程中加深了我對匯編語言命令的應(yīng)用,而且也更加了解到軟硬件配套的重要性。通過這次課程設(shè)計,使我們對這們功課有了更深刻的認(rèn)識和了解。首先對于硬件電路的工作原理有了進(jìn)一步系統(tǒng)的學(xué)習(xí),同樣就有了進(jìn)一步的認(rèn)識,使我懂得了理論與實際相結(jié)合的重要性,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,才能提高自己的實際動手能力和獨立思考的能力。其次軟件在這次設(shè)計中也有不足之處,比如音樂的響聲不連續(xù),但又不知道從哪個地方入手解決這個問題,這要求在以后的學(xué)習(xí)中,拓寬

38、自己的知識面,解決設(shè)計的不足之處。總之,通過這次課程設(shè)計不僅使我鞏固了本課程所學(xué)的基本知識,還使我們具有了撰寫科研報告的初步訓(xùn)練能力,我相信這些能力在我們以后的工作或者是再學(xué)習(xí)中一定會起到不小的作用,一切的辛苦和艱難都是值得的。致 謝在陳飛老師的指導(dǎo)下,我完成了本次設(shè)計。本設(shè)計從選題到完成,都得到了陳老師細(xì)心的指導(dǎo)。另外,本設(shè)計的完成也離不開其他老師和各位同學(xué)給我的建議和幫助,是他們讓我明白了團(tuán)隊合作的精神。當(dāng)然,這之中也有我自己的努力。這次課程設(shè)計最令我高興的是:遇到困難,翻閱書本解決困難的同時鞏固了已學(xué)知識,也學(xué)到了新知識。在此,我謹(jǐn)向陳飛老師和幫助過我的老師和同學(xué)們,表示崇高的敬意和衷心

39、的感謝!參考文獻(xiàn)1張毅剛,彭喜元. 單片機原理與應(yīng)用設(shè)計. 北京:電子工業(yè)出版社,2008.42徐錚穎,孫海維.protel 99 se eda技術(shù)及應(yīng)用.北京:機械工業(yè)出版社,2012.2 3譚浩強.c程序設(shè)計(第三版).北京:清華大學(xué)出版社,20054劉文濤.單片機應(yīng)用開發(fā)實例.北京:清華大學(xué)出版社,2005.95高衛(wèi)東,辛友順,韓彥征.51單片機原理與實踐.北京:北京航空航天大學(xué)出版社.2008.1附表(本設(shè)計所有程序)#include<reg52.h>#define uint unsigned int #define uchar unsigned char uint mia

40、o,fen,fen1,shi,shi1,flag1,flag2,flag3,aa,k1num,k2num,k3num,k4num,n;/k1num-k1按鍵被按下的標(biāo)記變量,k2num-k2按鍵被按下的標(biāo)記變量,k3num=0-k3按鍵被按下的標(biāo)記變量uchar code table=" timing clock"/定義初始上電時液晶默認(rèn)顯示狀態(tài)sbit k1=p10;/四個按鍵sbit k2=p11;sbit k3=p12;sbit k4=p13;sbit rs=p20;sbit lcden=p22;sbit led=p23;/發(fā)光二極管控制端sbit beep=p24;

41、 /蜂鳴器控制端sbit relay=p25;/繼電器控制端void delay(uint z)/延時函數(shù)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)/液晶寫命令函數(shù)rs=0;lcden=0;p0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/液晶寫數(shù)據(jù)函數(shù)rs=1;lcden=0;p0=date;delay(5);lcden=1;delay(5);lcden=0;void write_sfm(uchar a

42、dd,uchar date)/液晶寫時分秒函數(shù)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void init()/初始化函數(shù)uint num;/寫液晶的循環(huán)控制變量aa=0;/中斷次數(shù)標(biāo)志k1num=0;/k1按鍵被按下的標(biāo)記變量k2num=0;/k2按鍵被按下的標(biāo)記變量k3num=0;/k3按鍵被按下的標(biāo)記變量k4num=0;flag1=1;/控制lcd屏刷新的變量flag2=1;/控制鬧鐘響鬧和繼電器開啟關(guān)閉的標(biāo)記flag3=1;/

43、控制鬧鐘響起時,按下k4停止鬧鐘響鬧的標(biāo)記led=1; /發(fā)光二極管初始化relay=0;/繼電器初始化n=100;/系統(tǒng)啟動時,鬧鐘時間到發(fā)出的聲音為連續(xù)三次發(fā)出“嘩”的一聲miao=0;/系統(tǒng)初始化時間fen=0;shi=0;fen1=1;/初始化鬧鐘的時間shi1=0;beep=0;/蜂鳴器初始化lcden=0;/液晶使能端初始化write_com(0x38);/1602液晶初始化,設(shè)置16*2顯示。5*7點陣,8位數(shù)據(jù)接口write_com(0x0c);/設(shè)置開顯示,不顯示光標(biāo)write_com(0x06);/寫一個字符后地址指針自動加1write_com(0x01);/顯示清0,數(shù)據(jù)

44、指針清0write_com(0x80);/將數(shù)據(jù)指針定位到第一行,第一個字處for(num=0;num<15;num+)/顯示鬧鐘標(biāo)示:timing clockwrite_date(tablenum);delay(10);write_com(0x80+0x40+7);/寫出時間顯示部分的兩個冒號write_date(':');write_sfm(8,fen);/送去液晶顯示秒,分,時write_sfm(5,shi);tmod=0x01;/設(shè)置定時器0為工作方式1th0=(65536-50000)/256;/定時器裝初值tl0=(65536-50000)%256;ea=1;

45、/開總中斷et0=1;/開定時器0中斷tr0=1;/啟動定時器0void keyscan()/鍵盤掃描函數(shù)if(k1=0&&k3num=0)/判斷k1按下,按下前沒有按下k3鍵,則開始修改時間delay(5);if(k1=0&&k1num=0)k1num=1;while(!k1)/判斷是否松開按鍵,后同if(k1num=1)tr0=0;/關(guān)閉計數(shù)器0write_com(0x80+0x40+9);/第一次按下光標(biāo)定位到分鐘位置write_com(0x0f); /光標(biāo)開始閃爍if(k3=0&&k3num=0&&k1num=0)/判斷k

46、3首次被按下,則設(shè)置鬧鐘delay(5);/延時消抖,后同if(k3=0)flag1=0;write_com(0x80+0x40+9);/第一次按下光標(biāo)定位到分鐘位置while(!k3);k3num=1;write_sfm(8,fen1);/送去液晶顯示定時的分,時write_sfm(5,shi1);write_com(0x0f);/光標(biāo)開始閃爍write_com(0x80+0x40+9);/顯示位置回到調(diào)節(jié)處if(k1=0&&k1num=1)/判斷k1按下,修改系統(tǒng)時間的小時delay(5);if(k1=0)write_com(0x80+0x40+6);/光標(biāo)定位到小時位置k

47、1num=1;/置k1num=1while(!k1);shi+; /則調(diào)整時加1if(shi=24) shi=0;/若滿24后將清零write_sfm(5,shi);/每調(diào)節(jié)一次送液晶顯示一下write_com(0x80+0x40+6);/顯示位置重新回到調(diào)節(jié)處if(k2=0&&k1num=1)/判k2按下,修改系統(tǒng)時間的分鐘delay(5);if(k2=0)write_com(0x80+0x40+9);/光標(biāo)定位到分鐘位置k1num=1;while(!k2);fen+; /則調(diào)整分加1if(fen=60)fen=0;/若滿60后將清零write_sfm(8,fen);/每調(diào)節(jié)

48、一次送液晶顯示一下write_com(0x80+0x40+9);/顯示位置重新回到調(diào)節(jié)處if(k1num=1|k3num=1)/當(dāng)設(shè)置時間或鬧鐘時,k3被按下設(shè)置完成。if(k3=0)/判斷k3按下delay(5);if(k3=0)k1num=0;k3num=0;while(!k3);write_com(0x0c);/取消光標(biāo)閃tr0=1;/啟動定時器使時鐘開始走flag1=1;/flag=1.則修改系統(tǒng)時間時液晶顯示的系統(tǒng)時間值,flag=0,則為修改鬧鐘時間時,屏幕顯示的是修改鬧鐘時間的值write_sfm(8,fen);/送去液晶顯示分,時write_sfm(5,shi);if(k2=0

49、&&k1num=0&&k3num=0)/k2被按下時顯示定時時間delay(5);if(k2=0)write_sfm(8,fen1);/送去液晶顯示定時的分,時write_sfm(5,shi1);while(!k2);write_sfm(8,fen);/k2松開顯示當(dāng)前時間write_sfm(5,shi);if(k1=0&&k3num=1)/修改小時,判斷k1鍵按下,k3num=1,表示k3按鍵按下,則此時修改的是鬧鐘時間的小時delay(5);if(k1=0)write_com(0x80+0x40+6);/光標(biāo)定位到小時位置k3num=1;while(

溫馨提示

  • 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

提交評論