基于單片機(jī)的智能調(diào)光燈設(shè)計(jì)_第1頁
基于單片機(jī)的智能調(diào)光燈設(shè)計(jì)_第2頁
基于單片機(jī)的智能調(diào)光燈設(shè)計(jì)_第3頁
基于單片機(jī)的智能調(diào)光燈設(shè)計(jì)_第4頁
基于單片機(jī)的智能調(diào)光燈設(shè)計(jì)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、【有全套cad圖】需完整cad+說明書請(qǐng)聯(lián)系qq1175231241 海量畢業(yè)設(shè)計(jì) 課程設(shè)計(jì),承接定制、更多設(shè)計(jì)請(qǐng)移步:本科畢業(yè)設(shè)計(jì)論文 題 目 基于單片機(jī)的智能調(diào)光燈設(shè)計(jì) 專業(yè)名稱 自動(dòng)化 學(xué)生姓名 屈曉東 指導(dǎo)教師 李雪霞 畢業(yè)時(shí)間 2014.06 更多設(shè)計(jì)請(qǐng)移步:咨詢 西北工業(yè)大學(xué)明德學(xué)院本科畢業(yè)設(shè)計(jì)論文 設(shè)計(jì)論文畢業(yè) 任務(wù)書一、題目:基于單片機(jī)的智能調(diào)光燈設(shè)計(jì)二、指導(dǎo)思想和目的要求:通過畢業(yè)設(shè)計(jì),使學(xué)生對(duì)所學(xué)電子工藝、電路基礎(chǔ)知識(shí)、模電、數(shù)電、等電子基礎(chǔ)課程的基本知識(shí)加深理解,掌握單片機(jī)的基本指令及基本結(jié)構(gòu),并將其與實(shí)際工程應(yīng)用緊密結(jié)合起來,培養(yǎng)創(chuàng)新意識(shí),增強(qiáng)分析問題解決問題能力,為盡

2、快進(jìn)入社會(huì)角色,熟悉相關(guān)開發(fā)工作流程、項(xiàng)目小組組成、分工、合作方式方法等。增強(qiáng)團(tuán)隊(duì)合作意識(shí),提高基本工作技能,為即將踏入社會(huì)奠定理論和實(shí)踐基礎(chǔ)。內(nèi)容:設(shè)計(jì)一電路,不僅亮度可調(diào),還可以顯示時(shí)間等功能。具體要求如下:1) 顯示當(dāng)前的時(shí)間,24 時(shí)制的時(shí)、分、秒;2) 可調(diào)節(jié)時(shí)間;3) 可調(diào)節(jié)led 光亮度;步驟: l、了解所設(shè)計(jì)系統(tǒng)的工作原理及要求。2、設(shè)計(jì)單片機(jī)工作的基本電路,如:晶振電路、復(fù)位電路。3、根據(jù)系統(tǒng)設(shè)計(jì)要求選擇發(fā)光二極管、按鍵等模擬部件。 4、設(shè)計(jì)系統(tǒng)基本電路。5、繪制prtuse電原理圖并編寫系統(tǒng)控制程序。6、聯(lián)機(jī)進(jìn)行系統(tǒng)仿真調(diào)試。三、進(jìn)度與要求:1第一周第一周 收集設(shè)計(jì)系統(tǒng)相關(guān)

3、資料。2第二周第三周 用protuse設(shè)計(jì)硬件原理圖并進(jìn)行器件選型。3第四周第六周 編寫系統(tǒng)各功能模塊控制程序。4第七周第十周 聯(lián)機(jī)進(jìn)行系統(tǒng)調(diào)試。5. 第十一周第十二周 整理并組織論文。6第十三周第十四周 完成修改稿,定稿,打印,交評(píng)閱。7第十五周第十六周 評(píng)閱與答辯學(xué)生 屈曉東 指導(dǎo)教師 李雪霞 系主任 史儀凱摘 要 在實(shí)際的應(yīng)用中發(fā)現(xiàn),當(dāng)周邊亮度大時(shí),led燈過亮,存在電能浪費(fèi);當(dāng)周邊亮度小時(shí),led燈過暗,又不能提供足夠和恰當(dāng)?shù)墓舛取S脕砀纳莆覀兊纳钯|(zhì)量,體驗(yàn)到科學(xué)技術(shù)帶給我們更方便的生活,節(jié)省電能。因此,研究實(shí)用具有時(shí)鐘功能的臺(tái)燈的應(yīng)用,有著非常現(xiàn)實(shí)的意義,具有很大的實(shí)用價(jià)值。本文介

4、紹了設(shè)計(jì)的框架結(jié)構(gòu)和組成模塊以及各模塊的原理,介紹了各部分硬件設(shè)計(jì)和各部分軟件設(shè)計(jì)以及軟件流程圖。該設(shè)計(jì)是以at89c52 單片機(jī)為控制核心的集多種功能于一體的智能led臺(tái)燈。該臺(tái)燈具有燈光亮度調(diào)節(jié)功能;具有時(shí)間顯示功能。硬件設(shè)計(jì)分為單片機(jī)控制模塊、按鍵模塊、臺(tái)燈模塊、時(shí)鐘模塊、顯示模塊等五個(gè)部分。單片機(jī)控制用at89c52,顯示模塊用lcd1602 液晶顯示時(shí)間、日期等內(nèi)容,按鍵模塊用來調(diào)整時(shí)間、日期、led的亮度等,時(shí)鐘用ds1302 時(shí)鐘芯片,臺(tái)燈模塊用13 顆led燈。軟件設(shè)計(jì)用單片機(jī)c /c+編寫,通過proteus和keil仿真軟件進(jìn)行程序仿真,實(shí)現(xiàn)了全部控制功能。關(guān)鍵詞:?jiǎn)纹瑱C(jī),

5、智能,顯示,led燈,時(shí)間abstract in practical applications, we found that the brightness of led lights in the surrounding large power led is still the same, there is a waste of energy; hours in the surrounding brightness led lights do not provide adequate and appropriate luminosity. used to improve our quality

6、 of life, to experience science and technology bring us more convenient life, to save energy.therefore, the study and practical application of electronic bell, has a very real sense, has great practical value. this paper describes the design principles of the framework structure and composition of m

7、odules and each module, introduces the various parts of the various parts of the hardware design and software design and software flow. the design is based on at89c52 microcontroller core set of functions in one smart led lamp. the lamp has a light brightness adjustment function; has a time display

8、function; alarm function. hardware design is divided into five parts.mcu control module, the key modules, lamp modules, clock module, alarm module, display module. mcu control with at89c52, display module displays time, date and other content with lcd1602 , keypad module is used to adjust the time,

9、date, etc. brightness led clock with ds1302 clock chip, lamp module with 13 led. scm software design written in c/c+ language, the realization of all the control functions. key words: microcontroller, smart, display, led lights and time目 錄摘 要iabstractii目 錄iii第一章 緒 論51.1 選題意義51.2 設(shè)計(jì)要求61.2.1 功能實(shí)現(xiàn)61.2.

10、2 系統(tǒng)所需功能模塊61.3 系統(tǒng)基本方案選擇和論證71.3.1 單片機(jī)芯片的選擇方案和論證71.3.2 顯示模塊選擇方案和論證71.3.3 時(shí)鐘芯片的選擇方案和論證8第二章 系統(tǒng)的硬件設(shè)計(jì)92.1 系統(tǒng)模塊框圖92.2 系統(tǒng)整體硬件圖92.3 各模塊電路的設(shè)計(jì)102.3.1 單片機(jī)控制模塊102.3.2 晶振/復(fù)位模塊112.3.3 臺(tái)燈模塊132.3.4 臺(tái)燈調(diào)光按鍵模塊152.3.5 ds1302時(shí)鐘電路模塊152.3.6 1602lcd顯示模塊172.3.7 調(diào)節(jié)時(shí)鐘按鍵模塊19第三章 系統(tǒng)的軟件設(shè)計(jì)203.1 系統(tǒng)軟件編程工具c和c+203.1.1 c簡(jiǎn)介203.1.2 c+213.

11、2 主程序的設(shè)計(jì)流程圖223.3.1 臺(tái)燈模塊流程圖223.3.2 臺(tái)燈模塊程序233.4 lcd1602液晶顯示253.4.1 時(shí)鐘設(shè)置流程圖253.4.2 時(shí)鐘程序26第四章 仿真結(jié)果364.1 仿真軟件proteus和keil364.1.1 proteus仿真軟件364.1.2 keil仿真軟件374.2 proteus仿真圖374.2.1 led燈亮度仿真374.2.2 lcd1602時(shí)鐘仿真394.3 keil仿真404.4 問題及解決414.4.1 存在的問題414.4.2 解決的措施41參考文獻(xiàn)42致 謝43小 結(jié)44iv第一章 緒 論1.1 選題意義現(xiàn)代人類生活中所用的幾乎每件

12、有電子器件的產(chǎn)品中都會(huì)集成有單片機(jī)。手機(jī)、電話、計(jì)算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電子產(chǎn)品中都含有單片機(jī)。智能燈不是傳統(tǒng)燈具,而是智能設(shè)備的一種,除了智能燈體,還有一個(gè)手持智能控制設(shè)備,智能燈控制設(shè)備具備計(jì)算能力和網(wǎng)絡(luò)聯(lián)接能力,通過應(yīng)用程序,功能可以不斷擴(kuò)展。智能燈的核心功能是控制、燈光效果、創(chuàng)作、分享、光與音樂互動(dòng)、光提升健康和幸福。開關(guān)燈的控制,不但可以通過控制器,手動(dòng)遙控?zé)舻拈_關(guān),還可以進(jìn)行定時(shí)開關(guān)燈的控制,可以設(shè)定不同的時(shí)間開燈關(guān)燈。其次是對(duì)光的控制,光的亮度,光的冷暖,光的色彩都可以連續(xù)手動(dòng)控制或自動(dòng)控制。白熾燈和金鹵燈在調(diào)光領(lǐng)域應(yīng)用得比較廣泛,但隨著節(jié)能減排的不斷推廣,

13、led可調(diào)光在攻克了調(diào)光技術(shù)障礙后,開始呈現(xiàn)發(fā)展趨勢(shì),led可調(diào)光與led紅外智能燈管、led聲光控等一起統(tǒng)稱為led智能化系列,在led普通燈具價(jià)格競(jìng)爭(zhēng)日趨激烈的今天,led智能化已經(jīng)成為大型led照明企業(yè)的發(fā)展方向。電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚奈锲罚瑥V泛用于個(gè)人家庭以及車站、碼頭、劇院、辦公室等公共場(chǎng)所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大的方便。隨著技術(shù)的發(fā)展,人們已不再滿足于鐘表原先簡(jiǎn)單的報(bào)時(shí)功能,希望出現(xiàn)一些新的功能,諸如日歷的顯示、鬧鐘的非接觸式止鬧跑表功能、重要日期倒計(jì)時(shí)顯示等,以帶來更大的方便,而所有這些,又都是以數(shù)字化的電子時(shí)鐘為基礎(chǔ)的。因此,研究實(shí)用電子鐘的應(yīng)用,

14、有著非?,F(xiàn)實(shí)的意義,具有很大的實(shí)用價(jià)值。由于數(shù)字集成電路技術(shù)的發(fā)展和采用了先進(jìn)的石英技術(shù),使電子鐘具有走時(shí)準(zhǔn)確、性能穩(wěn)定、攜帶方便等優(yōu)點(diǎn),它還用于計(jì)時(shí)、自動(dòng)報(bào)時(shí)及自動(dòng)控制等各個(gè)領(lǐng)域?,F(xiàn)在市場(chǎng)上已有現(xiàn)成的電子鐘集成電路芯片出售,價(jià)格便宜,使用也靈活,如可以隨意設(shè)置時(shí)、分、秒的輸出,改變顯示數(shù)字的大小等,并且由于集成電路技術(shù)的發(fā)展,特別是mos 集成電路技術(shù)的發(fā)展,使電子鐘具有體積小、攜帶方便的特點(diǎn),這里介紹的實(shí)用電子鐘可以滿足使用者的一些基本要求,輸出方式靈活、功耗低、計(jì)時(shí)準(zhǔn)確、性能穩(wěn)定、維護(hù)方便等優(yōu)點(diǎn)。實(shí)用電子鐘是一個(gè)時(shí)間控制系統(tǒng),既能作為一般的時(shí)間顯示器,也可作為一個(gè)定時(shí)控制器,驅(qū)動(dòng)負(fù)載或顯

15、示信息,同時(shí)可以根據(jù)需要擴(kuò)展其功能。在此項(xiàng)目的設(shè)計(jì)研究過程中需綜合運(yùn)用所學(xué)的數(shù)字電子技術(shù)、單片機(jī)原理與應(yīng)用等課程的知識(shí),掌握實(shí)用電子鐘的設(shè)計(jì)、組裝與調(diào)試方法,利用現(xiàn)代的單片機(jī)等新電子技術(shù)以及現(xiàn)代的設(shè)計(jì)手段,系統(tǒng)地培養(yǎng)了綜合設(shè)計(jì)、操作調(diào)試、故障處理的能力,達(dá)到綜合素質(zhì)以及創(chuàng)新能力的提高。1.2 設(shè)計(jì)要求1.2.1 功能實(shí)現(xiàn)(1)led調(diào)光燈功能:當(dāng)按下按鍵k0、k1、k2分為一級(jí)亮度紅燈、二級(jí)亮度黃燈和三級(jí)亮度綠燈來實(shí)現(xiàn)。(2)時(shí)間、日期顯示:系統(tǒng)采用24小時(shí)制。正常情況下,系統(tǒng)顯示當(dāng)前日期、時(shí)間,由lcd顯示。(3)設(shè)置功能:用戶可以對(duì)led燈光的亮度進(jìn)行調(diào)節(jié),對(duì)時(shí)間、日期、星期進(jìn)行設(shè)置。用戶

16、依次進(jìn)入日期設(shè)置、星期設(shè)置、時(shí)間設(shè)置。在進(jìn)行設(shè)置時(shí),光標(biāo)停留在相應(yīng)位,按下k4鍵、k5鍵對(duì)數(shù)值進(jìn)行加、減調(diào)整。通過k3鍵,在各個(gè)數(shù)位間移動(dòng)。通過k6鍵,確定所設(shè)置的時(shí)間。1.2.2 系統(tǒng)所需功能模塊 由功能分析,臺(tái)燈系統(tǒng)分為燈光模塊、鍵盤模塊、顯示模塊、時(shí)鐘部分、電源模塊和單片機(jī)模塊,考慮成本時(shí)鐘模塊可由單片機(jī)內(nèi)部計(jì)數(shù)器模擬實(shí)現(xiàn)。(1)燈光模塊用d0d12個(gè)led燈實(shí)現(xiàn)。(2)按鍵模塊分為調(diào)光3個(gè)按鍵和調(diào)節(jié)時(shí)間4個(gè)按鍵,分別是k0、k1、k2和k3、k4、k5、k6。(3)顯示模塊負(fù)責(zé)顯示系統(tǒng)的日期、星期、時(shí)間。(4)電源模塊采用+5v直流供電。(5)單片機(jī)模塊內(nèi)部計(jì)數(shù)器負(fù)責(zé)led燈光和時(shí)鐘,

17、通過程序模擬生成亮度調(diào)節(jié)和時(shí)間走時(shí)。同時(shí)負(fù)責(zé)掃描鍵盤,并將時(shí)間送給lcd顯示。 1.3 系統(tǒng)基本方案選擇和論證1.3.1 單片機(jī)芯片的選擇方案和論證方案一:采用stc89c52芯片作為硬件核心,采用flash rom,內(nèi)部具有4kb rom 存儲(chǔ)空間,能于3v的超低壓工作,而且與mcs-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不具備isp在線編程技術(shù), 當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),對(duì)芯片的多次拔插會(huì)對(duì)芯片造成一定的損壞。方案二:采用at89c52,片內(nèi)rom全都采用flash rom;能以3v的超底壓工作;同時(shí)也與mcs-51系列單片機(jī)完

18、全該芯片內(nèi)部存儲(chǔ)器為8kb rom 存儲(chǔ)空間,同樣具有stc89c52的功能,且具有在線編程可擦除技術(shù),對(duì)所下載的程序能夠加密,比較安全。當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),不需要對(duì)芯片多次拔插,所以不會(huì)對(duì)芯片造成損壞。所以選擇采用at89c52作為主控制系統(tǒng)。1.3.2 顯示模塊選擇方案和論證方案一:采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以不用此種作為顯示。方案二:采用led數(shù)碼管動(dòng)態(tài)掃描,雖然led數(shù)碼管價(jià)格適中,但要顯示多個(gè)數(shù)字所需要的個(gè)數(shù)偏多,功耗較大,

19、所以也不用此種作為顯示。方案三:采用lcd液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,與普通數(shù)碼管相比功耗較小,硬件連接簡(jiǎn)單。所以顯示部分采用1602液晶顯示。1.3.3 時(shí)鐘芯片的選擇方案和論證方案一: 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所以不采用此方案。方案二:采用ds1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,ds1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,ram作為數(shù)據(jù)暫存區(qū),工作電壓2.5v5

20、.5v范圍內(nèi),2.5v時(shí)耗電小于300na。第二章 系統(tǒng)的硬件設(shè)計(jì)2.1 系統(tǒng)模塊框圖六大模塊以at89c52 單片機(jī)為控制核心,實(shí)現(xiàn)了該智能臺(tái)燈的各項(xiàng)要求,外接一個(gè)5v 的直流電源,為整個(gè)系統(tǒng)供電。圖2-1 系統(tǒng)結(jié)構(gòu)示意圖 2.2 系統(tǒng)整體硬件圖 該設(shè)計(jì)是以at89c52 單片機(jī)為控制核心的集多種功能于一體的智能 led 臺(tái)燈。該臺(tái)燈具有燈光亮度調(diào)節(jié)功能;具有時(shí)間顯示功能。硬件設(shè)計(jì)分為單片機(jī)控制模塊、按鍵模塊、臺(tái)燈模塊、時(shí)鐘模塊、鬧鈴模塊、顯示模塊等五個(gè)部分。單片機(jī)控制用at89c52,顯示模塊用lcd1602液晶顯示、時(shí)間、日期等內(nèi)容,按鍵模塊用來調(diào)整時(shí)間、日期、led 的亮度等,時(shí)鐘用d

21、s1302 時(shí)鐘芯片,臺(tái)燈模塊用13 顆led,通過按鍵k0、k1、k2調(diào)節(jié)燈光的亮度,分為一級(jí)亮度、二級(jí)亮度和三級(jí)亮度。圖2-2 系統(tǒng)整體硬件圖 2.3 各模塊電路的設(shè)計(jì) 2.3.1 單片機(jī)控制模塊單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器cpu、隨機(jī)存儲(chǔ)器ram、只讀存儲(chǔ)器rom、多種i/o口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、a/d轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。從上世紀(jì)80年代,由當(dāng)時(shí)的4位、8位單片機(jī),發(fā)展到現(xiàn)在的300m的高速單片機(jī)。

22、at89c52單片機(jī)為40引腳雙列直插芯片,有四個(gè)i/o口p0,p1,p2,p3, mcs-51單片機(jī)共有4個(gè)8位的i/o口(p0、p1、p2、p3),每一條i/o線都能獨(dú)立地作輸出或輸入。 圖2-3 at89c52單片機(jī)控制模塊2.3.2 晶振/復(fù)位模塊晶振是晶體振蕩器的簡(jiǎn)稱,在電氣上它可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn),以頻率的高低分其中較低的頻率是串聯(lián)諧振,較高的頻率是并聯(lián)諧振。由于晶體自身的特性致使這兩個(gè)頻率的距離相當(dāng)?shù)慕咏?在這個(gè)極窄的頻率范圍內(nèi),晶振等效為一個(gè)電感,所以只要晶振的兩端并聯(lián)上合適的電容它就會(huì)組成并聯(lián)諧振電路。晶振是給

23、單片機(jī)提供工作信號(hào)脈沖的。這個(gè)脈沖就是單片機(jī)的工作速度。單片機(jī)的工作頻率是有范圍的,不能太大。圖中19與18引腳分別為xtal1、xtal2,他們分別接晶振的輸入與輸出, xtal1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,xtal2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.因?yàn)橐粋€(gè)機(jī)器周期含有6個(gè)狀態(tài)周期,而每個(gè)狀態(tài)周期為2個(gè)振蕩周期,所以一個(gè)機(jī)器周期共有12個(gè)振蕩周期。本設(shè)計(jì)選擇晶振頻率為12mhz,輸入芯片震蕩周期為1/12s,一個(gè)機(jī)器周期為1s。 圖2-4 晶振電路模塊復(fù)位電路,就是利用它把電路恢復(fù)到起始狀態(tài)。就像計(jì)算器的清零按鈕的作用一樣,以

24、便回到原始狀態(tài),重新進(jìn)行計(jì)算。和計(jì)算器清零按鈕有所不同的是,復(fù)位電路啟動(dòng)的手段有所不同。一是在給電路通電時(shí)馬上進(jìn)行復(fù)位操作;二是在必要時(shí)可以由手動(dòng)操作;三是根據(jù)程序或者電路運(yùn)行的需要自動(dòng)地進(jìn)行。在rst復(fù)位輸入引腳上接一電容至vcc端,下接一個(gè)電阻到地即可。復(fù)位電路工作原理如下圖所示,vcc上電時(shí),c3充電,在10k電阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位;幾個(gè)毫秒后,c3充滿,10k電阻上電流降為0,電壓也為0,使得單片機(jī)進(jìn)入工作狀態(tài)。工作期間,按下k7,c3放電,在10k電阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位。k7松手,c3又充電,幾個(gè)毫秒后,單片機(jī)進(jìn)入工作狀態(tài)。第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后

25、夠上電復(fù)位電路。 圖2-5 復(fù)位電路模塊2.3.3 臺(tái)燈模塊臺(tái)燈模塊用13 顆led作為發(fā)光系統(tǒng),每一顆和一個(gè)220 的電阻串聯(lián),用p1.4p1.6 口控制。電阻起限流作用, 13 個(gè)i/o 均采用低電平有效方式,即給相應(yīng)的i/o 低電平led工作。通過按鍵k0、k1、k2調(diào)節(jié)燈光的亮度,亮度分為三個(gè)等級(jí):一級(jí)亮度控制紅色的d0燈亮;二級(jí)亮度控制黃色的d1、d2、d3、d4燈亮;三級(jí)亮度控制綠色的d5、d6、d7、d8、d9、d10、d11、d12燈亮。圖2-6 臺(tái)燈模塊(1)圖2-7 臺(tái)燈模塊(2)2.3.4 臺(tái)燈調(diào)光按鍵模塊圖2-8 臺(tái)燈按鍵模塊按鍵k0、k1、k2用來調(diào)節(jié)臺(tái)燈的亮度,通過

26、按下按鍵k0可以讓臺(tái)燈變亮,按下按鍵k1可以讓臺(tái)燈變的更亮,按下按鍵k2可以讓臺(tái)燈燈光達(dá)到最亮。3 個(gè)i/o 均采用低電平有效方式。2.3.5 ds1302時(shí)鐘電路模塊 下圖示出ds1302的引腳排列圖,其中vcc1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。ds1302由vcc1或vcc2兩者中的較大者供電。當(dāng)vcc2大于vcc1+0.2v時(shí),vcc2給ds1302供電。當(dāng)vcc2小于vcc1時(shí),ds1302由vcc1供電。x1和x2是振蕩源,外接32.768khz晶振。rst是復(fù)位/片選線,通過把rst輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。rst輸入有兩種功

27、能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)rst為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)ds1302進(jìn)行操作。如果在傳送過程中rst置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電動(dòng)行時(shí),在vcc大于等于2.5v之前,rst必須保持低電平。中有在sclk 為低電平時(shí),才能將rst置為高電平,i/o為串行數(shù)據(jù)輸入端(雙向)。sclk始終是輸入端。表1 ds1302引腳功能表引腳號(hào)引腳名稱功能1vcc2主電源2、3x1、x2振蕩源,外接32768hz晶振4gnd地線5rst復(fù)位/片選線6i/o串行數(shù)據(jù)輸入/輸出

28、端(雙向)7sclk串行時(shí)鐘輸入端8vcc1后備電源ds1302在每次進(jìn)行讀、寫程序前都必須初始化,先把sclk端置“0”,接著把rst端置“1”,最后才給予sclk脈沖。ds1302的控制字,此控制字的位7必須置1,若為0則不能把對(duì)ds1302進(jìn)行讀寫數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫時(shí)ram=1,對(duì)時(shí)間進(jìn)行讀/寫時(shí),ck=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。ds1302的日歷、時(shí)間寄存器內(nèi)容:“ch”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,ds1302處于低功耗狀態(tài);當(dāng)該位為

29、0時(shí),時(shí)鐘開始運(yùn)行。“wp”是寫保護(hù)位,在任何的對(duì)時(shí)鐘和ram的寫操作之前,“wp”必須為0。當(dāng)“wp”為1時(shí),寫保護(hù)位防止對(duì)任一寄存器的寫操作。圖2-9 ds1302時(shí)鐘電路模塊2.3.6 1602lcd顯示模塊字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式lcd,目前常用16*1,16*2,20*2和40*2行等的模塊。1602lcd分為背光和不帶背光兩種,基控制大部分為hd44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,引腳功能說明:表2 1602lcd功能表編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1vss電源地9d2數(shù)據(jù)口2vcc電源正極10d3數(shù)據(jù)口3vo液晶顯

30、示對(duì)比度調(diào)節(jié)端11d4數(shù)據(jù)口4rs數(shù)據(jù)/命令選擇端(h/l)12d5數(shù)據(jù)口5r/w讀寫選擇端(h/l)13d6數(shù)據(jù)口6e能使信號(hào)14d7數(shù)據(jù)口7d0數(shù)據(jù)口15bla背光電源正極8d1數(shù)據(jù)口16blk背光電源負(fù)極 1602lcd采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表2所示:第1腳:vss為地電源。第2腳:vdd接5v正電源。第3腳:vee為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10k的電位器調(diào)整對(duì)比度。第4腳:rs為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄器。第5腳:r/w為讀寫信

31、號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)rs和r/w共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)rs為低電平r/w高電平時(shí)可以讀忙信號(hào),當(dāng)rs為高電平r/w為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:e端為使能端,當(dāng)e端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:d0d7為8位雙向數(shù)據(jù)線。1602lcd的一般初始化(復(fù)位)過程延時(shí)15ms寫指令38h(不檢測(cè)忙信號(hào))延時(shí)5ms寫指令38h(不檢測(cè)忙信號(hào))延時(shí)5ms寫指令38h(不檢測(cè)忙信號(hào))以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測(cè)忙信號(hào)寫指令38h:顯示模式設(shè)置寫指令08h:顯示關(guān)閉寫指令01h:顯示清屏寫指令06h:顯示光標(biāo)移動(dòng)設(shè)置寫指令

32、0ch:顯示開及光標(biāo)設(shè)置lcd1602液晶顯示,如下圖所示:圖2-10 1602lcd顯示模塊2.3.7 調(diào)節(jié)時(shí)鐘按鍵模塊因?yàn)橛心暝氯?,時(shí)分秒幾個(gè)參數(shù)要調(diào),所以設(shè)置這幾個(gè)參數(shù)的計(jì)數(shù)。當(dāng)按下一個(gè)鍵時(shí),單片機(jī)進(jìn)行相應(yīng)的操作。根據(jù)設(shè)計(jì)要求需要選擇四個(gè)獨(dú)立按鍵分別為選擇、加、減、確定,按鍵用來調(diào)整時(shí)間和設(shè)置鬧鐘,調(diào)光亮度,各鍵功能在介紹硬件部分已描述。按鍵模塊下圖所示:圖2-11 調(diào)節(jié)時(shí)鐘按鍵模塊第三章 系統(tǒng)的軟件設(shè)計(jì)3.1 系統(tǒng)軟件編程工具c和c+3.1.1 c簡(jiǎn)介c語言是一種計(jì)算機(jī)程序設(shè)計(jì)語言,它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)

33、用程序設(shè)計(jì)語言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到c語言,適于編寫系統(tǒng)軟件、三維、二維圖形和動(dòng)畫,具體應(yīng)用例如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。c程序是由一組變量或是函數(shù)的外部對(duì)象組成的。 函數(shù)是一個(gè)自我包含的完成一定相關(guān)功能的執(zhí)行代碼段。我們可以把函數(shù)看成一個(gè)“黑盒子”,你只要將數(shù)據(jù)送進(jìn)去就能得到結(jié)果,而函數(shù)內(nèi)部究竟是如何工作的的,外部程序是不知道的。外部程序所知道的僅限于輸入給函數(shù)什么以及函數(shù)輸出什么。函數(shù)提供了編制程序的手段,使之容易讀、寫、理解、排除錯(cuò)誤、修改和維護(hù)。c程序中函數(shù)的數(shù)目實(shí)際上是不限的,如果說有什

34、么限制的話,那就是,一個(gè)c程序中必須至少有一個(gè)函數(shù),而且其中必須有一個(gè)并且僅有一個(gè)以main為名,這個(gè)函數(shù)稱為主函數(shù),整個(gè)程序從這個(gè)主函數(shù)開始執(zhí)行。c 語言程序鼓勵(lì)和提倡人們把一個(gè)大問題劃分成一個(gè)個(gè)子問題,對(duì)應(yīng)于解決一個(gè)子問題編制一個(gè)函數(shù),因此,c 語言程序一般是由大量的小函數(shù)而不是由少量大函數(shù)構(gòu)成的,即所謂“小函數(shù)構(gòu)成大程序”。這樣的好處是讓各部分相互充分獨(dú)立,并且任務(wù)單一。因而這些充分獨(dú)立的小模塊也可以作為一種固定規(guī)格的小“構(gòu)件”, 用來構(gòu)成新的大程序。3.1.2 c+c+是在c語言的基礎(chǔ)上開發(fā)的一種集面向?qū)ο缶幊?、泛型編程和過程化編程于一體的編程語言。應(yīng)用較為廣泛,是一種靜態(tài)數(shù)據(jù)類型檢查

35、的,支持多重編程的通用程序設(shè)計(jì)語言。它支持過程化程序設(shè)計(jì),數(shù)據(jù)抽象,面向?qū)ο笤O(shè)計(jì),制作圖標(biāo)等多種程序設(shè)計(jì)風(fēng)格。在操作系統(tǒng)和系統(tǒng)使用程序以及需要對(duì)硬件進(jìn)行操作的場(chǎng)合,用c語言明顯優(yōu)于其它高級(jí)語言,但在編寫大型程序時(shí),c語言仍面臨著挑戰(zhàn)。c語言是c+的基礎(chǔ),c+和c語言在很多方面是兼容的。c語言是一個(gè)結(jié)構(gòu)化語言,它的重點(diǎn)在于算法與數(shù)據(jù)結(jié)構(gòu)。c程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事物)控制)。c+,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問題域,這樣就可以通過獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事物)控制。所以c語言和

36、c+的最大區(qū)別在于它們解決問題的思想方法不一樣。c+語言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面,一是盡量兼容c,二是支持面向?qū)ο蟮姆椒āK俪至薱的簡(jiǎn)潔、高效的接近匯編語言等特點(diǎn),對(duì)c的類型系統(tǒng)進(jìn)行了改革的擴(kuò)充,因此c+比c更安全,c+的編譯系統(tǒng)能檢查出更多的類型錯(cuò)誤。另外,由于c語言的廣泛使用,因而極大的促進(jìn)了c+的普及和推廣。c+由四個(gè)“子語言”組成:c子語言,c+支持c語言的幾乎全部功能,主要是c89的部分,在語法上與c語言僅有極微妙的差別(如括號(hào)表達(dá)式的左右值性,具體請(qǐng)參考c+標(biāo)準(zhǔn)文獻(xiàn))。這部分功能對(duì)應(yīng)于傳統(tǒng)的面向過程的編程泛型,并提供了面向函數(shù)編程泛型的基礎(chǔ)。面向?qū)ο蟮腸+語言,c+語言原本不具備

37、面向?qū)ο蟮脑O(shè)計(jì)功能,然而隨著面向?qū)ο缶幊痰母拍畹钠占埃琧+語言也開發(fā)出了支持面向?qū)ο蠊δ艿陌姹?。這部分功能對(duì)應(yīng)于面向?qū)ο蟮木幊谭盒汀7盒途幊陶Z言,c+強(qiáng)大(但容易失控的)模板功能使它能在編譯期完成許多工作,從而大大提高運(yùn)行期效率,并且大大提高了c+的表達(dá)能力。stl(c+標(biāo)準(zhǔn)模板庫,standard template library)是一個(gè)基于模板技術(shù)的庫。隨著stl的不斷發(fā)展,它已經(jīng)逐漸成為c+程序設(shè)計(jì)中不可或缺的部分,其效率可能比一般的native代碼低些,但是其安全性與規(guī)范性使它大受歡迎。模板使c+能夠支持泛型編程(generic programming)和生成式編程(generativ

38、e programming)的泛型。在c+0x中引入的lambda,使得程序員可以定義匿名函數(shù),完善了c+對(duì)于面向函數(shù)的編程泛型的支持。3.2 主程序的設(shè)計(jì)流程圖 圖3-1 主程序流程圖 一給單片機(jī)上電,單片機(jī)就初始化。通過接收并處理,有人按下開關(guān)就工作。然后檢開始led工作顯示時(shí)間、日期,按鍵按下,修正時(shí)間,設(shè)置鬧鐘系統(tǒng)初始化測(cè)按鍵是否按下,判斷工作在那個(gè)模式下。液晶還顯示當(dāng)前的時(shí)間,日期,最后進(jìn)入循環(huán)。33 臺(tái)燈模塊編程3.3.1 臺(tái)燈模塊流程圖該模塊只需給led紅燈d0的p1.4口、黃燈d1到d4的p1.5口和綠燈d5到d12的p1.6口送低電平即可,再通過按鍵k0、k1、k2調(diào)led燈

39、光亮度。 圖3-2 臺(tái)燈模塊流程圖3.3.2 臺(tái)燈模塊程序#include sbit k0=p25;/調(diào)光燈亮度等級(jí)開關(guān)i/o口分配sbit k1=p26;sbit k2=p27;sbit d0=p14;/led燈i/o口分配sbit d1=p15;sbit d2=p15;sbit d3=p15;sbit d4=p15;sbit d5=p16;sbit d6=p16;sbit d7=p16;sbit d8=p16;sbit d9=p16;sbit d10=p16;sbit d11=p16;sbit d12=p16;void main()/主程序while(1)if(k0=0)/一級(jí)亮度調(diào)光開關(guān)

40、被按下d0=0; /d3燈亮elsed0=1; /d3燈滅if(k1=0)/二級(jí)亮度調(diào)光開關(guān)被按下 d1=0;/d1,d2,d3,d4燈亮d2=0;d3=0;d4=0;elsed1=1;/d1,d2,d3,d4燈滅d2=1;d3=1;d4=1;if(k2=0)/三級(jí)亮度調(diào)光開關(guān)被按下d5=0; /d5,d6,d7,d8,d9,d10,d11,d12燈亮d6=0;d7=0;d8=0;d9=0;d10=0;d11=0;d12=0;elsed5=1; /d5,d6,d7,d8,d9,d10,d11,d12燈滅d6=1;d7=1;d8=1;d9=1;d10=1;d11=1;d12=1;3.4 lcd1

41、602液晶顯示3.4.1 時(shí)鐘設(shè)置流程圖調(diào)整時(shí)間用4個(gè)調(diào)整按鈕,1個(gè)作為選擇控制用,另外3個(gè)分別作為加調(diào)整,減調(diào)整和確定用。 圖3-3 時(shí)鐘設(shè)置流程圖3.4.2 時(shí)鐘程序#include #include #define uchar unsigned char#define uint unsigned intsbit rs=p20; / lcd寄存器選擇sbit rw=p21; / lcd讀寫控制sbit en=p22; / lcd啟動(dòng)/*-延時(shí)子程序-*/void delayms(uint k) uchar i; while(k-) for(i=0;i120;i+); /*-讀取lcd的狀態(tài)

42、-*/uchar read_lcd_state() uchar state; rs=0; rw=1; en=1; delayms(2); state=p0; en=0; delayms(2); return state;/*-忙檢查-*/void lcd_busy_wait() while(read_lcd_state()&0x80)=0x80);delayms(5);/*-寫lcd命令-*/void write_lcd_command(uchar cmd) lcd_busy_wait(); rs=0; rw=0; en=0; p0=cmd; en=1; delayms(2); en=0;/*

43、-向lcd寫入數(shù)據(jù)-*/void write_lcd_data(uchar dat) lcd_busy_wait(); rs=1; rw=0; en=0; p0=dat; en=1; delayms(2); en=0; /*-lcd初始化-*/void initialize_lcd1602() /液晶初始化函數(shù) write_lcd_command(0x38);delayms(2); /功能設(shè)置,數(shù)據(jù)長(zhǎng)度為8位,雙行顯示,57點(diǎn)陣字體 write_lcd_command(0x01);delayms(2);/清屏 write_lcd_command(0x06);delayms(2); /字符進(jìn)入模

44、式:屏幕不動(dòng),字符后移 write_lcd_command(0x0c);delayms(2); / 顯示開,關(guān)光標(biāo)/*-設(shè)置液晶顯示位置-*/void set_lcd_position(uchar pos) write_lcd_command(pos|0x80); /設(shè)置7位的ddram地址值/*-在lcd上顯示字符串-*/void lcd_display(uchar p,uchar *str) uchar i; set_lcd_position(p); for(i=0;i16;i+) write_lcd_data(stri); delayms(2);/*-main.c源程序-*/*-用ds1

45、302和1602液晶顯示的實(shí)時(shí)時(shí)鐘-*/#include #include #include #define uchar unsigned char#define uint unsigned intvoid initialize_lcd1602(); /液晶初始化函數(shù)void lcd_display(uchar p,uchar *str);sbit sda=p10; /ds1302數(shù)據(jù)線sbit clk=p11; /ds1302時(shí)鐘線sbit rst=p12; / ds1302復(fù)位線sbit k1=p34; / 選擇按鍵sbit k2=p35; / 加sbit k3=p36; /減sbit k

46、4=p37; /確定uchar tcount=0;uchar monthsdays=0,31,0,31,30,31,30,31,31,30,31,30,31; / 一年中每個(gè)月的天數(shù),二月的天數(shù)由年份決定uchar *week=sun,mon,tus,wen,thu,fri,sat; /周日,周一到周六/ lcd顯示緩沖uchar lcd_dsy_buffer1=date 00-00-00 ;uchar lcd_dsy_buffer2=time 00:00:00 ;uchar datetime7;/所讀取的日期時(shí)間char adjust_index=-1; /當(dāng)前調(diào)節(jié)的時(shí)間對(duì)象:秒,分,時(shí),日

47、,月,年(0,1,2,3,4,6)uchar change_flag=-mhdm-y;/(分,時(shí),日,月,年)不調(diào)節(jié)秒和周/函數(shù)聲明void write_byte_to_ds1302(uchar x); / 向ds1302寫入一個(gè)字節(jié)uchar read_byte_from_ds1302();/從ds1302中讀取一個(gè)字節(jié)uchar read_data_from_ds1302(uchar addr); /從ds1302指定位置讀取數(shù)據(jù), 讀數(shù)據(jù)void write_data_to_ds1302(uchar addr,uchar dat); / 向ds1302指定位置寫入數(shù)據(jù), 寫數(shù)據(jù)void set_ds1302(); / 設(shè)置時(shí)間void gettime(); / 讀取當(dāng)前時(shí)間void initialization(); /初始化函數(shù)/*-主程序-*/void main() initialization(); while(1) if(adjust_index=-1) gettime();/*-初始化函數(shù)-*/void initialization() initialize_lcd1602(); /調(diào)用液晶初始化函數(shù) ie=0x83; /允許中斷 外部0中斷和t0中斷 ip=0x01; / 設(shè)置中斷優(yōu)先級(jí) it0=0x01; /

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論