版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單片機(jī)課程設(shè)計(jì)論文</b></p><p> 題 目:基于STC89C52單片機(jī)的電子時鐘(日歷)</p><p> 學(xué) 院: 材料與光電物理學(xué)院</p><p> 專 業(yè): 測控技術(shù)與儀器二班 </p><p> 完成日期: 2011年9月7日 </p
2、><p><b> 目 錄</b></p><p> 目錄------------------------------------------------------------------------------1</p><p> 摘要--------------------------------------------------
3、----------------------------2</p><p> 實(shí)驗(yàn)要求----------------------------------------------------------------2</p><p> 實(shí)驗(yàn)主要元器件介紹-------------------------------------------------3</p><p
4、> 2.1 STC89C52單片機(jī)簡介---------------------------------------------3</p><p> 2.2 LCD1602簡介-------------------------------------------------------6</p><p> 2.3 軟件平臺-------------------------
5、-------------------------------------7</p><p> 實(shí)驗(yàn)原理與設(shè)計(jì)內(nèi)容-------------------------------------------------7</p><p> 3.1 實(shí)驗(yàn)原理--------------------------------------------------------------7</
6、p><p> 3.2 三個組成部分--------------------------------------------------------7</p><p> 3.3 鍵盤控制模塊--------------------------------------------------------8</p><p> 調(diào)試過程----------------
7、------------------------------------------------8</p><p> 4.1 硬件調(diào)試--------------------------------------------------------------8</p><p> 4.2 軟件調(diào)試--------------------------------------------
8、------------------9</p><p> 4.3 測試數(shù)據(jù)與數(shù)據(jù)分析-----------------------------------------------9</p><p> 程序流程圖-------------------------------------------------------------10</p><p> 任務(wù)
9、分工與成果展示-------------------------------------------------11</p><p> 前期準(zhǔn)備--------------------------------------------------------------11</p><p> 課程設(shè)計(jì)過程------------------------------------------
10、--------------11</p><p> 個人主要工作及遇到問題-----------------------------------------11</p><p> 成果展示--------------------------------------------------------------12</p><p> 課程設(shè)計(jì)總結(jié)思考與致謝--
11、-----------------------------------------13</p><p> 參考文獻(xiàn)----------------------------------------------------------------14</p><p> 附錄一:(程序)-----------------------------------------------------
12、--------15</p><p> 附錄二:(原理圖)----------------------------------------------------------25</p><p> 附錄三:(實(shí)物圖)----------------------------------------------------------25</p><p> 附錄四
13、:(元件清單)-------------------------------------------------------26</p><p> 摘要:數(shù)字電子鐘系統(tǒng)設(shè)計(jì)已經(jīng)成熟,但是目前系統(tǒng)設(shè)計(jì)時基本都是采用LED作為顯示電路,造成硬件電路復(fù)雜、功耗高、產(chǎn)品體積龐大等特點(diǎn);液晶顯示模塊由于具有低功耗、壽命長、體積小、顯示內(nèi)容豐富、價格低、接口控制方便等優(yōu)點(diǎn),因此在各類電子產(chǎn)品中被極廣泛地推廣和應(yīng)用。字符型液
14、晶顯示模塊是一類專門用于顯示字母、數(shù)字、符號等點(diǎn)陣式液晶顯示模塊。本系統(tǒng)設(shè)計(jì)采用字符型液品顯示模塊LCD1602作為顯示器件,這樣不僅簡化了系統(tǒng)的硬件設(shè)計(jì),而且極大地提高了系統(tǒng)的可靠性。</p><p> 本文詳細(xì)介紹了以液晶顯示器LCD1602作為系統(tǒng)輸出的數(shù)字電子鐘設(shè)計(jì)方案,其中包括LCD原理及接口方法、硬件電路設(shè)計(jì)、軟件程序編制等內(nèi)容,并在Proteus中進(jìn)行了仿真驗(yàn)證。</p><p
15、> 關(guān)鍵詞:STC89C52單片機(jī)、電子時鐘、鍵盤控制、Proteus仿真。</p><p><b> 一、實(shí)驗(yàn)要求</b></p><p> 課題名稱:基于單片機(jī)STC89C52的電子時鐘(附加日歷功能)。</p><p> 設(shè)計(jì)要求:本設(shè)計(jì)基于單片機(jī)技術(shù)原理,以單片機(jī)芯片STC89C52作為核心控制器,通過硬件電路的制作以及軟
16、件程序的編制,設(shè)計(jì)制作出一個多功能數(shù)字時鐘系統(tǒng)。單片機(jī)擴(kuò)展的LCD顯示器用來顯示秒、分、時、日、月、年、星期七個計(jì)數(shù)單元中的值。</p><p> 目的及意義:隨著計(jì)算機(jī)科學(xué)與技術(shù)的飛速發(fā)展,計(jì)算機(jī)的應(yīng)用已經(jīng)滲透到國民經(jīng)濟(jì)與人們生活的各個角落,正在日益改變著傳統(tǒng)的人類工作方式和生活方式, 而單片機(jī)技術(shù)又作為計(jì)算機(jī)技術(shù)中的一個獨(dú)立分支,有著性價比高,集成度高,體積小,可靠性高,控制功能強(qiáng)大,低功耗,低電壓,便于生
17、產(chǎn),便于攜帶等特點(diǎn),所以得到越來越廣泛的應(yīng)用,特別是在工業(yè)控制和儀表儀器智能化中起極其重要的作用.本文利用單片機(jī)強(qiáng)大的控制功能和內(nèi)部定時器重要部件,設(shè)計(jì)了一款自行對時間進(jìn)行調(diào)整以及把時、分、秒用LCD顯示的電子鐘。</p><p> 二、實(shí)驗(yàn)主要元器件介紹</p><p> STC89C52單片機(jī)簡介</p><p> STC89C52是一種帶8K字節(jié)閃爍可編
18、程可檫除只讀存儲器(FPEROM-Flash Programable and Erasable Read Only Memory )的低電壓,高性能COMOS8的微處理器,俗稱單片機(jī)。該器件采用ATMEL搞密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。</p><p> 單片機(jī)總控制電路如下圖1:</p><p> 圖4—1單片機(jī)總控制電路</p&
19、gt;<p><b> ?。▓D一)</b></p><p><b> 主要特性如下:</b></p><p> 工作電壓:5.5v ~3.3v(5v單片機(jī))/3.8v ~2.0v(3v單片機(jī))</p><p> 工作頻率范圍:0~40MHZ,相當(dāng)于8051的0~80MHZ,實(shí)際工作頻率可大48MHZ。&
20、lt;/p><p> 用戶應(yīng)用程序空間為8K字節(jié)</p><p> 片上集成512字節(jié)RAM</p><p> 通用I/O口(32個),復(fù)位后為:P1/P2/P3/P4是準(zhǔn)雙向口/弱上拉,P0是漏極開路輸出,作為總線擴(kuò)展用時,不用加上拉電阻,作為I/O口使用時,需加上拉電阻。</p><p> 具有EEPROM功能與看門狗功能</p
21、><p> 具有3個16位的定時器/計(jì)數(shù)器。及定時器T0.T1.T2。</p><p><b> 工作模式:</b></p><p> 掉電模式:典型功耗小于0.1uA,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原程序。</p><p> 正常工作模式:典型功耗4mA~7mA</p><p>
22、空閑模式:典型功耗2mA</p><p> P0口:是一組8 位漏極開路型雙向I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在FIash編程時,P0口接收指令字節(jié),而在程序校驗(yàn)時,輸出指令字節(jié),校驗(yàn)時,要求外接上拉
23、電阻。</p><p> P1口:是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因?yàn)閮?nèi)部存在上拉</p><p> 電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。</p><p> FIash編程和程序校驗(yàn)期間,
24、P1接收低8位地址。</p><p> P2口:是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因?yàn)閮?nèi)部存在上</p><p> 拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行M
25、OVX@DPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI 指令)時,P2 口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中R2寄存器的內(nèi)容),在整個訪問期間不改變。Flash編程或校驗(yàn)時,P2亦接收高位地址和其它控制信號。</p><p> P3口:是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL邏輯門電路。對P
26、3 口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時,被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表所示:</p><p> P3口還接收一些用于Flash閃速存儲器編程和程序校驗(yàn)的控制信號。</p><p> RST 復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上高電平將使單片機(jī)復(fù)位
27、。</p><p> ALE/PROG: 當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE 仍以時鐘振蕩頻率的l/6 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時</p><p> 目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。</p><p> 2.2、 LC
28、D1602簡介 </p><p> 液晶顯示屏LCD1602(如圖3)以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點(diǎn)在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到越來越來廣泛的應(yīng)用。</p><p> 這里介紹的是字符型液晶模塊是一種5*7點(diǎn)陣圖形來顯示字符的液晶顯示器,根據(jù)顯示內(nèi)容可分為1行16個字、2行16個字、2行20個字等等,本設(shè)計(jì)用
29、的是常用的2行16個 圖2 </p><p> 字的1602液晶模塊。主要用于顯示時間和定時時間,并且具有字符對比度調(diào)節(jié)和背光功能。 </p><p><b> 其引腳功能如下:</b></p><p> 第1腳:VSS為地電源 </p&g
30、t;<p> 第2腳:VDD接5V正電源 </p><p> 第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度 </p><p> 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 </p><p> 第5腳:RW為
31、讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時可以讀忙信號,當(dāng)RS為高電平RW為低電平時可以寫入數(shù)據(jù)。 </p><p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 </p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p>
32、 第15~16腳:空腳</p><p><b> 2.3軟件平臺</b></p><p><b> 1)Keil 編程</b></p><p> Keil 的開發(fā)工具的使用的基本過程: 1 ○創(chuàng)建 C 或匯編語言的源程序; 2 ○編譯或匯編源文件; 3 ○糾正源文件中的錯誤; 4 ○從編譯器和匯編器連接目標(biāo)文件; 5
33、 ○測試連接的應(yīng)用程序。</p><p> 2)Proteus 仿真</p><p> Proteus 軟件不僅具有其它 EDA 工具軟件的仿真功能,還能仿真單片機(jī)及外圍器 件。 它是目前最好的仿真單片機(jī)及外圍器件的工具。 在編譯方面, 它也支持 IAR, Keil, PLAB 等多種編譯器。</p><p> 三、實(shí)驗(yàn)原理與設(shè)計(jì)內(nèi)容</p>&
34、lt;p><b> 3.1 實(shí)驗(yàn)原理</b></p><p> 電子鐘從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯電路和時序電路。因此,我們此次設(shè)計(jì)與制做數(shù)字鐘就是為了了解數(shù)字鐘的原理,從而學(xué)會制作數(shù)字鐘.而且通過數(shù)字鐘的制作進(jìn)一步的了解各種在制作中用到的中小規(guī)模集成電路的作用及實(shí)用方法.且由于數(shù)字鐘包括組合邏輯電路和時敘電路.通過它可以進(jìn)一步學(xué)習(xí)與掌握各種組合邏輯電路與時序
35、電路的原理與使用方法。</p><p> 本設(shè)計(jì)基于單片機(jī)技術(shù)原理,以單片機(jī)芯片AT89C52作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設(shè)計(jì)制作出一個多功能數(shù)字時鐘系統(tǒng)。單片機(jī)擴(kuò)展的LCD顯示器用來顯示秒、分、時計(jì)數(shù)單元中的值。整個設(shè)計(jì)包括兩大部分: 硬件部分和軟件部分,以單片機(jī)為核心, 配以一定的外圍電路和軟件。硬件是整個系統(tǒng)的基礎(chǔ), 軟件部分則要合理、充分地支持和使用系統(tǒng)的硬件, 從而完成系統(tǒng)所
36、要完成的任務(wù)。</p><p> 3.2 三個組成部分</p><p> 該時鐘系統(tǒng)主要由時鐘模塊、液晶顯示模塊、鍵盤控制模塊以及信號提示模塊組成。能夠準(zhǔn)確顯示時間(顯示格式為時時:分分:秒秒,24小時制),可隨時進(jìn)行時間調(diào)整。設(shè)計(jì)以硬件軟件化為指導(dǎo)思想,充分發(fā)揮單片機(jī)功能,大部分功能通過軟件編程來實(shí)現(xiàn),電路簡單明了,系統(tǒng)穩(wěn)定性高。單片機(jī)在這種情況下誕生了基于單片機(jī)電子時鐘。</
37、p><p> 3.3 鍵盤控制模塊</p><p> 按鍵中有一個復(fù)位鍵及定時鍵、調(diào)時鍵加一鍵和減一鍵,一個按鍵接在復(fù)位電路上,另外四個按鍵接在P0——P4口,低電平表示有按鈕按下;按鈕沒有接防抖電路,需要設(shè)計(jì)軟件防抖。</p><p> 1、定時。按下定時鍵后可以開始定時,過程如下:定時---〉小時加/減---〉按定時---分鐘加/減---按定時。</p&
38、gt;<p> 2、調(diào)時。按下調(diào)時鍵后可以調(diào)時,過程如下:調(diào)時---年加/減---調(diào)時--月加/減---調(diào)時---日加/減---調(diào)時---時加/減---調(diào)時---分加/減---調(diào)時---秒加/減 ---調(diào)時。</p><p><b> 四、調(diào)試過程</b></p><p> 調(diào)試的主要過程包括硬件調(diào)試和軟件調(diào)試,其中軟件調(diào)試,也即程序編譯與仿真過程
39、處于本次設(shè)計(jì)調(diào)試過程的核心環(huán)節(jié)。由于本設(shè)計(jì)已經(jīng)制作出液晶顯示電子鐘,所以硬件調(diào)試也很重要。兩種調(diào)試過程并非孤立或者分開的,而是緊密相關(guān)。在此我們用到的開發(fā)工具是仿真器。</p><p><b> 4.1 硬件調(diào)試</b></p><p> 完成仿真器軟件仿真后,就要連接上硬件也即液晶顯示電子鐘成品板進(jìn)行硬件調(diào)試。</p><p> 將仿真
40、器通過串行電纜連接計(jì)算機(jī)上,將仿真頭接到仿真器,檢查接線是否有誤,確信沒有接錯后,接上電源,打開仿真器的電源開關(guān)。再進(jìn)行仿真器和通信設(shè)置。</p><p> 仿真器和仿真頭設(shè)置正確,并且硬件連接沒有錯誤,出現(xiàn) “硬件仿真”的對話框,并顯示仿真器、仿真頭的型號及仿真器的序列號。表明仿真器初始化正確。</p><p> 硬件調(diào)試很重要也很麻煩,由于本次設(shè)計(jì)硬件非PCB制板,而是手工焊板,焊
41、點(diǎn)質(zhì)量、布線是否合理等對系統(tǒng)的影響比較大,這無疑增加硬件調(diào)試的難度。由于此前沒有很多的練習(xí),本次設(shè)計(jì)我所制作的液晶顯示電子鐘在質(zhì)量工藝上很難達(dá)到滿意程度,不過在調(diào)試中還算穩(wěn)定,基本功能都能較穩(wěn)定地實(shí)現(xiàn)。</p><p> 難達(dá)到滿意程度,不過在調(diào)試中還算穩(wěn)定,基本功能都能較穩(wěn)定地實(shí)現(xiàn)。</p><p><b> 4.2 軟件調(diào)試</b></p>&l
42、t;p> 系統(tǒng)仿真分析電路原理圖在ISIS里設(shè)計(jì)完成,并將系統(tǒng)軟件編譯成.Hex文件,再進(jìn)行電子時鐘的系統(tǒng)虛擬仿真。</p><p> (1)在ISIS的原理圖中,右鍵單擊AT89C51將其選中,然后單擊左鍵打開AT89C51的Edit Component 對話框,如下圖所示。(2)選擇相應(yīng)的.Hex文件,再在Proteus ISIS 編輯窗口的File菜單中選擇Save Design 選項(xiàng),保存設(shè)計(jì),
43、生成.DSN文件。</p><p> 4.3 測試數(shù)據(jù)與數(shù)據(jù)分析</p><p> 在Proteus ISIS的Debug菜單中選擇Execute,運(yùn)行程序,系統(tǒng)仿真結(jié)果如下圖所示。</p><p><b> (圖三) </b></p><p> 實(shí)現(xiàn)功能的具體方法:當(dāng)進(jìn)入調(diào)整功能時,按第一個鍵K1進(jìn)行減運(yùn)算,
44、按第二個鍵K2進(jìn)行加運(yùn)算。</p><p> 按下第三個鍵K3,實(shí)現(xiàn)日期\時間調(diào)整及\定時功能,等數(shù)字閃爍后,按一二鍵進(jìn)行加減,從而可以進(jìn)行具體日期時間調(diào)整。按下第四個鍵K4,可以進(jìn)行時間\日期切換,將顯示時間或日期,采用24小時制。時間顯示格式為:時-分-秒;日期顯示格式為:日-月-年。具有顯示時間和日期的功能</p><p><b> 五、程序流程圖</b>&
45、lt;/p><p><b> 流程圖如下:</b></p><p><b> (圖四)</b></p><p> 六、任務(wù)分工與成果展示</p><p><b> 6.1 前期準(zhǔn)備:</b></p><p> 在課程設(shè)計(jì)前期,我和小江分好任務(wù),便開
46、始著手查閱資料、調(diào)研,通過查閱有關(guān)書籍、論文,最終確定課題為基于STC89C52單片機(jī)的電子時鐘。</p><p> 6.2 課程設(shè)計(jì)過程</p><p> 設(shè)計(jì)電路圖,并根據(jù)所設(shè)計(jì)電路圖和單片機(jī)工作原理,為實(shí)現(xiàn)電子鐘附帶日歷及復(fù)位功能,在書上查找資料程序,并自己進(jìn)行編程。經(jīng)反復(fù)調(diào)試和修改,最終編譯通過,proteus仿真成功,LCD顯示器能根據(jù)程序要求來顯示時間并可通過開關(guān)進(jìn)行顯示位
47、的選擇和時間的加減,而且按復(fù)位鍵可以回到初始設(shè)置,即程序中設(shè)計(jì)的2011-5-18 WED 23:59:20。</p><p> 將所編程序置入單片機(jī)內(nèi),并按照所設(shè)計(jì)電路圖在面包板上連線。經(jīng)反復(fù)連線、檢查元件、檢查線路、檢驗(yàn)程序,最終終于演示通過。</p><p> 按照電路圖,將各元器件焊接在電路板上,再用萬用表檢驗(yàn)線路是否有空焊、短路等情況,進(jìn)一步處理。顯示器正常顯示時間,并能達(dá)到
48、預(yù)期目標(biāo)。課程設(shè)計(jì)完成。</p><p> 6.3 個人主要工作及遇到問題</p><p> 在本次課程設(shè)計(jì)中我主要負(fù)責(zé)軟件方面的程序的查找修改和硬件方面的焊接工作。</p><p> 過程中遇到了各種問題。程序的主體是查找資料得出的,中間加入了自己的修改。但是在改動過程中,幾次運(yùn)行不成功。經(jīng)多次檢查和修改,向同學(xué)請教,最終編譯通過。Proteus仿真過程是另
49、一同學(xué)完成的。</p><p> 在硬件方面,另一同學(xué)負(fù)責(zé)排線布局,我負(fù)責(zé)手工焊接。在面包板上幾次調(diào)試都不成功,顯示器亮的卻不顯示數(shù)字。曾懷疑線路連錯、元器件有損壞、背光沒有調(diào)好等問題,后經(jīng)一一排除。接著就用萬用表測每條線路是否正常,終于發(fā)現(xiàn)有些應(yīng)該是高電平卻不是,經(jīng)過分析討論,認(rèn)為可能是有接觸不良。后借了其他組的面包板嘗試,幾經(jīng)波折,終于演示成功。焊接過程也是很容易出錯。焊好后接通電源,顯示屏不亮,經(jīng)檢查,發(fā)
50、現(xiàn)有一處短路。稍作處理后,我們努力了一個星期的電子時鐘就成功了。</p><p><b> 6.4 成果展示</b></p><p> ?。ê附庸に嚺c排線布局)</p><p> 七、課程設(shè)計(jì)總結(jié)思考與致謝</p><p> 我們進(jìn)行了為期兩周的課程設(shè)計(jì)成功結(jié)束了,時間雖短,但收獲頗多。</p>&l
51、t;p> 這次的課程設(shè)計(jì),是一個嶄新的體驗(yàn),是一個學(xué)習(xí)的平臺,是一次興趣的啟迪,是嘗試著自己動手實(shí)踐的開始,是現(xiàn)實(shí)與需求之間差距的體現(xiàn),也是一個認(rèn)識與改變的過程。</p><p> 安排課程設(shè)計(jì)的基本目的,是在于通過理論與實(shí)際的結(jié)合、人與人的溝通,進(jìn)一步提高思想覺悟和領(lǐng)悟力。尤其是觀察、分析和解決問題的實(shí)際工作能力。作為整個學(xué)習(xí)體系的有機(jī)組成部分,課程設(shè)計(jì)雖然安排在兩周進(jìn)行,但并不具有絕對獨(dú)立的意義。它
52、的一個重要功能,在于運(yùn)用學(xué)習(xí)成果,檢驗(yàn)學(xué)習(xí)成果。運(yùn)用學(xué)習(xí)成果,把課堂上學(xué)到的系統(tǒng)化的理論知識,嘗試性地應(yīng)用于實(shí)際設(shè)計(jì)工作,并從理論的高度對設(shè)計(jì)工作的現(xiàn)代化提出一些有針對性的建議和設(shè)想。檢驗(yàn)學(xué)習(xí)成果,看一看課堂學(xué)習(xí)與實(shí)際工作到底有多大距離,并通過綜合分析,找出學(xué)習(xí)中存在的不足,以便為完善學(xué)習(xí)計(jì)劃,改變學(xué)習(xí)內(nèi)容與方法提供實(shí)踐依據(jù)。</p><p> 對于我們理工類的本科生來說,實(shí)踐能力如何是至關(guān)重要的。而這種能力在
53、課堂上是學(xué)習(xí)不到的,必須從書本走向?qū)嵺`。無論課本上的原理如何經(jīng)典,課文中的描述如何生動,我們都只能理解,只能想象。可是這次的課程設(shè)計(jì)讓我們擁有了一個全新的體驗(yàn),與課堂完全不同,是一種耳目一新的感覺。許多人見看那些小小的元器件會說出:“原來這就是電容啊”“原來電阻這么小”“原來這又四十個引腳的小芯片就是我們所學(xué)的單片機(jī)啊”。有人說興趣是最好的老師。那么我想,在那一刻,許多人的興趣都被激發(fā)出來了。</p><p>
54、 課程設(shè)計(jì)過程中,我們也遇到了各種各樣問題,在面包板上幾次調(diào)試都不成功,顯示器亮的卻不顯示數(shù)字。曾懷疑線路連錯、元器件有損壞、背光沒有調(diào)好等問題,后經(jīng)一一排除。接著用萬用表測每條線路是否正常,終于發(fā)現(xiàn)有些應(yīng)該是高電平卻不是,有些該有電壓差卻沒有,經(jīng)過分析討論,認(rèn)為可能是有接觸不良。后借了其他組的面包板嘗試,幾經(jīng)波折,終于演示成功。</p><p> 在設(shè)計(jì)中我主要負(fù)責(zé)的是硬件布線、焊接工作。無論是布線還是焊接都
55、是精細(xì)的活,且他們的重要性是相當(dāng)?shù)?。布線布的好,焊接起來不但整體布局美觀,同時能省時省力,而且減少空焊、落焊的幾率。焊接確實(shí)要精中有細(xì)。在其他的組中都是男生在焊接,因?yàn)橐苍S他們認(rèn)為拿著烙鐵焊東西不適合女生做,我卻不這么認(rèn)為。男生粗手粗腳,不細(xì)心,這樣的活交給他們很可能會焊成一片,在我的自告奮勇下,帶著組員的信任,我把事先布好的導(dǎo)線與引腳一個一個的焊好。不只要細(xì),還要精、穩(wěn),每次焊接結(jié)束時抬手要果斷迅速。我覺得只要心細(xì)、手穩(wěn),焊接一點(diǎn)都不
56、難。焊好后接電源,起初不亮,經(jīng)檢查有一處短路,稍作處理,我們的顯示就正常了。成功的心情自然愉快,我焊好的板子在班級里幾乎是最漂亮、問題最少的,為此我也竊喜了一下。</p><p> 課程設(shè)計(jì)達(dá)到了專業(yè)學(xué)習(xí)的預(yù)期目的。在一個多星期的課程設(shè)計(jì)之后,我們普遍感到不僅實(shí)際動手能力有所提高,而且掌握單片機(jī)開發(fā)編程設(shè)計(jì)的基本流程,了解 Keil 及 Proteus 軟件的基本使用,了解 LCD 的基本使用,并且學(xué)習(xí)了單片機(jī)
57、硬件制作。在課程實(shí)際和制作過程中進(jìn)一步激發(fā)了我們對專業(yè)知識的興趣,并能夠結(jié)合實(shí)際存在的問題在專業(yè)領(lǐng)域內(nèi)進(jìn)行更深入的學(xué)習(xí)。通過這次課程設(shè)計(jì),我們也看到了自身狀況與現(xiàn)實(shí)需要的差距,有了這樣的認(rèn)識,便于我們在今后的學(xué)習(xí)中及時補(bǔ)充和調(diào)整。</p><p> 我相信這次課程設(shè)計(jì)會對我以后的工作會有很大程度的益處,在此還要感謝學(xué)院為我們提供這次機(jī)會,感謝王子涵老師的用心指導(dǎo)!</p><p><
58、;b> 八、參考文獻(xiàn)</b></p><p><b> 附錄1:(程序)</b></p><p> #include<reg51.h></p><p> #define uchar unsigned char</p><p> void write_hms(uchar,uchar)
59、;</p><p> void time_setup();</p><p> uchar a,count,hh,mm,ss,year,year0=20,year1=11,mon=5,day=18,flagy,flagw=3,flagk;</p><p> uchar code table0[]=" 2011-05-18 WED";</
60、p><p> uchar code table1[]=" 00:00:00";</p><p> sbit RS=P2^0; // 數(shù)據(jù)/命令選擇端(H/L)</p><p> sbit LE=P2^1; // 使能信號</p><p> sbit kfun=P2^2; //功能鍵</p&
61、gt;<p> sbit kadd=P2^3; //增加</p><p> sbit ksub=P2^4; //減少</p><p> void delay(uchar z) </p><p> {uchar x,y;</p><p> for(x=z;x>0;x--)</p><p
62、> for(y=110;y>0;y--);</p><p><b> }</b></p><p> void write_com(uchar com) </p><p> {RS=0; //寫命令</p><p><b> P0=com;</b></p>
63、<p><b> delay(5);</b></p><p><b> LE=1;</b></p><p><b> delay(5);</b></p><p><b> LE=0;</b></p><p><b> }&l
64、t;/b></p><p> void write_data(uchar Data) </p><p> {RS=1; //寫數(shù)據(jù)</p><p><b> P0=Data;</b></p><p><b> delay(5);</b></p><p>
65、;<b> LE=1;</b></p><p><b> delay(5);</b></p><p><b> LE=0;</b></p><p><b> }</b></p><p> void init()</p><p&
66、gt; {LE=0;//初始化使能信號</p><p> write_com(0x38);//設(shè)置顯示模式</p><p> write_com(0x0c);//顯示開關(guān)、光標(biāo)設(shè)置</p><p> write_com(0x06);//屏幕移動操作</p><p> write_com(0x80);//寫入數(shù)據(jù)地址&l
67、t;/p><p> write_com(0x01);//清屏</p><p> //寫入初始化顯示值</p><p> write_com(0x80);</p><p> for(a=0;a<15;a++)</p><p> {write_data(table0[a]);</p><p
68、><b> delay(5);</b></p><p><b> }</b></p><p> write_com(0x80+0x40);</p><p> for(a=0;a<12;a++)</p><p> {write_data(table1[a]);</p>
69、<p><b> delay(5);</b></p><p><b> }</b></p><p> TMOD=0x01; //開啟定時器T0中斷</p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%2
70、56;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> hh=23;</b></p><p><b
71、> mm=58;</b></p><p><b> ss=56;</b></p><p> year=year0*100+year1;</p><p> flagy=(year%4==0&&year%100!=0)||(year%400==0);</p><p> write_
72、hms(0x40+3,hh);</p><p> write_hms(0x40+6,mm);</p><p> write_hms(0x40+9,ss);</p><p><b> }</b></p><p> void write_hms(uchar addr,uchar Data) //顯示:年、月、日、十
73、、分、秒</p><p> {uchar shi,ge; </p><p> shi=Data/10;</p><p> ge=Data%10;</p><p> write_com(0x80+addr);</p><p> write_data(0x30+shi);</p><
74、p> write_data(0x30+ge);</p><p> write_com(0x80+addr);</p><p><b> }</b></p><p> void time0() interrupt 1//定時器T0中斷函數(shù)</p><p> {TH0=(65536-50000)/256;
75、</p><p> TL0=(65536-50000)%256;</p><p><b> count++;</b></p><p> if(count==20)</p><p><b> {count=0;</b></p><p> time_setup();&l
76、t;/p><p><b> }</b></p><p><b> }</b></p><p> void week_setup(uchar fl)//顯示星期</p><p> {switch(fl)</p><p><b> {case 0:<
77、;/b></p><p> {write_com(0x80+12);</p><p> write_data('S');</p><p> write_data('U');</p><p> write_data('N');</p><p> write_
78、com(0x80);</p><p><b> break;</b></p><p><b> }</b></p><p><b> case 1:</b></p><p> {write_com(0x80+12);</p><p> writ
79、e_data('M');</p><p> write_data('O');</p><p> write_data('N');</p><p> write_com(0x80);</p><p><b> break;</b></p><p&g
80、t;<b> }</b></p><p><b> case 2:</b></p><p> {write_com(0x80+12);</p><p> write_data('T');</p><p> write_data('U');</p>
81、<p> write_data('E');</p><p> write_com(0x80);</p><p><b> break;</b></p><p><b> }</b></p><p><b> case 3:</b><
82、/p><p> {write_com(0x80+12);</p><p> write_data('W');</p><p> write_data('E');</p><p> write_data('D');</p><p> write_com(0x80);&
83、lt;/p><p><b> break;</b></p><p><b> }</b></p><p><b> case 4:</b></p><p> {write_com(0x80+12);</p><p> write_data('
84、;T');</p><p> write_data('H');</p><p> write_data('U');</p><p> write_com(0x80);</p><p><b> break;</b></p><p><b>
85、 }</b></p><p><b> case 5:</b></p><p> {write_com(0x80+12);</p><p> write_data('F');</p><p> write_data('R');</p><p>
86、 write_data('I');</p><p> write_com(0x80);</p><p><b> break;</b></p><p><b> }</b></p><p><b> case 6: </b></p>&l
87、t;p> {write_com(0x80+12);</p><p> write_data('S');</p><p> write_data('A');</p><p> write_data('T');</p><p> write_com(0x80);</p>
88、<p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void time_setup() //時間調(diào)整、設(shè)置函數(shù)
89、xxxx-xx-xx XXX</p><p> { ss++; // xx:xx:xx</p><p> if(ss==60)</p><p><b> {ss=0;</b></p><p><b> mm++;</b></p><p> if(m
90、m==60)</p><p><b> {hh++;</b></p><p><b> mm=0;</b></p><p> if(hh==24)</p><p><b> {hh=0;</b></p><p><b> day++;
91、</b></p><p><b> flagw++;</b></p><p> if(flagw==7){flagw=0;}</p><p> week_setup(flagw);</p><p> if(((day>31)&&(mon==1||mon==3||mon==5||m
92、on==7||mon==8||mon==10||mon==12))</p><p> ||((day>30)&&(mon==4||mon==6||mon==9||mon==11))||((day>29)&&(mon==2)&&(flagy==1))</p><p> ||((day>28)&&(mon==
93、2)&&(flagy==0)))</p><p><b> {day=1;</b></p><p><b> mon++;</b></p><p> if(mon==12)</p><p><b> {mon=1;</b></p><
94、p><b> year1++;</b></p><p> if(year1==100) </p><p><b> {year0++;</b></p><p><b> year1=0;</b></p><p> if(year0==100) {year0=20
95、;year1=8;}</p><p><b> }</b></p><p> year=year0*100+year1;</p><p> flagy=(year%4==0&&year%100!=0)||(year%400==0);</p><p> write_hms(1,year0);<
96、/p><p> write_hms(3,year1);</p><p><b> }</b></p><p> write_hms(6,mon);</p><p><b> }</b></p><p> write_hms(9,day);</p><
97、p><b> }</b></p><p> write_hms(0x40+3,hh);</p><p><b> }</b></p><p> write_hms(0x40+6,mm);</p><p><b> }</b></p><p&g
98、t; write_hms(0x40+9,ss);</p><p><b> }</b></p><p> void keysan()</p><p> {if(kfun==0)</p><p> {delay(5);</p><p> if(kfun==0)</p>&l
99、t;p> {while(!kfun);</p><p><b> flagk++;</b></p><p><b> TR0=0;</b></p><p><b> }</b></p><p><b> }</b></p>&
100、lt;p> switch(flagk)</p><p> {case 0: break; //等待中...</p><p> case 1: //設(shè)置秒</p><p> {write_com(0x80+0x40+10);</p><p> write_com(0x0d);</p>
101、<p> if(kadd==0)</p><p> {delay(5);</p><p> if(kadd==0)</p><p> {while(!kadd);</p><p><b> ss++;</b></p><p> if(ss==60) ss=0;</p&g
102、t;<p> write_hms(0x40+9,ss);</p><p> write_com(0x80+0x40+10);</p><p><b> }</b></p><p><b> }</b></p><p> else if(ksub==0)</p>
103、<p> {delay(5);</p><p> if(ksub==0)</p><p> {while(!ksub);</p><p><b> ss--;</b></p><p> if(ss==255) ss=59;</p><p> write_hms(0x40+9,
104、ss);</p><p> write_com(0x80+0x40+10);</p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> }&l
105、t;/b></p><p> case 2://設(shè)置分</p><p> {write_com(0x80+0x40+7);</p><p> write_com(0x0d);</p><p> if(kadd==0)</p><p> {delay(5);</p><p
106、> if(kadd==0)</p><p> {while(!kadd);</p><p><b> mm++;</b></p><p> if(mm==60) mm=0;</p><p> write_hms(0x40+6,mm);</p><p> write_com(0x8
107、0+0x40+7);</p><p><b> }</b></p><p><b> }</b></p><p> else if(ksub==0)</p><p> {delay(5);</p><p> if(ksub==0)</p><p&
108、gt; {while(!ksub);</p><p><b> mm--;</b></p><p> if(mm==255) mm=59;</p><p> write_hms(0x40+6,mm);</p><p> write_com(0x80+0x40+7);</p><p>&l
109、t;b> }</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p> case 3://設(shè)置時</p><p> {w
110、rite_com(0x80+0x40+4);</p><p> write_com(0x0d);</p><p> if(kadd==0)</p><p> {delay(5);</p><p> if(kadd==0)</p><p> {while(!kadd);</p><p>
111、<b> hh++;</b></p><p> if(hh==24) hh=0;</p><p> write_hms(0x40+3,hh);</p><p> write_com(0x80+0x40+4);</p><p><b> }</b></p><p>&
112、lt;b> }</b></p><p> else if(ksub==0)</p><p> {delay(5);</p><p> if(ksub==0)</p><p> {while(!ksub);</p><p><b> hh--;</b></p>
113、;<p> if(hh==255) hh=23;</p><p> write_hms(0x40+3,hh);</p><p> write_com(0x80+0x40+4);</p><p><b> }</b></p><p><b> }</b></p>
114、<p><b> break;</b></p><p><b> }</b></p><p> case 4: //設(shè)置日</p><p> {write_com(0x80+10);</p><p> write_com(0x0d);</p><
115、p> if(kadd==0)</p><p> {delay(5);</p><p> if(kadd==0)</p><p> {while(!kadd);</p><p><b> day++;</b></p><p> if(((day>31)&&(m
116、on==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12))</p><p> ||((day>30)&&(mon==4||mon==6||mon==9||mon==11))||((day>29)&&(mon==2)&&(flagy==1))</p><p> ||((da
117、y>28)&&(mon==2)&&(flagy==0))) day=1;</p><p> write_hms(9,day);</p><p> write_com(0x80+10);</p><p><b> }</b></p><p><b> }</b&
118、gt;</p><p> else if(ksub==0)</p><p> {delay(5);</p><p> if(ksub==0)</p><p> {while(!ksub);</p><p><b> day--;</b></p><p> if(
119、day==0)</p><p> {switch(mon)</p><p><b> {case 1:</b></p><p><b> case 3:</b></p><p><b> case 5:</b></p><p><b>
120、 case 7:</b></p><p><b> case 8:</b></p><p><b> case 10:</b></p><p> case 12:day=31;break;</p><p><b> case 4:</b></p>
121、;<p><b> case 6:</b></p><p><b> case 9:</b></p><p> case 11:day=30;break;</p><p> case 2: if(flagy==1) {day=29;break;}</p><p> else{
122、day=28;break;}</p><p><b> }</b></p><p><b> }</b></p><p> write_hms(9,day);</p><p> write_com(10);</p><p><b> }</b>
123、</p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p> case 5: //設(shè)置月</p><p> {write_com(0x80+7);&
124、lt;/p><p> write_com(0x0d);</p><p> if(kadd==0)</p><p> {delay(5);</p><p> if(kadd==0)</p><p> {while(!kadd);</p><p><b> mon++;</b
125、></p><p> if(mon==13) mon=1;</p><p> write_hms(6,mon);</p><p> write_com(0x80+7);</p><p><b> }</b></p><p><b> }</b></p&g
126、t;<p> else if(ksub==0)</p><p> {delay(5);</p><p> if(ksub==0)</p><p> {while(!ksub);</p><p><b> mon--;</b></p><p> if(mon==0) mon
127、=12;</p><p> write_hms(6,mon);</p><p> write_com(0x80+7);</p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b>&
128、lt;/p><p><b> }</b></p><p> case 6: //設(shè)置年</p><p> {write_com(0x80+4);</p><p> write_com(0x0d);</p><p> if(kadd==0)</p><p>
129、; {delay(5);</p><p> if(kadd==0)</p><p> {while(!kadd);</p><p><b> year1++;</b></p><p> if(year1==100)</p><p><b> {year0++;</b&g
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---基于stc89c52的旋轉(zhuǎn)led時鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于stc89c52單片機(jī)的實(shí)驗(yàn)平臺開發(fā)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于stc89c52單片機(jī)的實(shí)驗(yàn)平臺開發(fā)設(shè)計(jì)
- STC89C52單片機(jī).doc
- STC89C52單片機(jī).doc
- STC89C52單片機(jī).doc
- stc89c52單片機(jī).pdf
- stc89c52單片機(jī).pdf
- STC89C52單片機(jī).doc
- stc89c52單片機(jī).pdf
- STC89C52單片機(jī).doc
- STC89C52單片機(jī).doc
- STC89C52單片機(jī).doc
- STC89C52單片機(jī).doc
- STC89C52單片機(jī).doc
- stc89c52單片機(jī).pdf
- STC89C52單片機(jī).doc
- stc89c52單片機(jī).pdf
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的電子時鐘
- 基于89c52單片機(jī)的電子時鐘設(shè)計(jì)
評論
0/150
提交評論