

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計(論文)</b></p><p> 2009 — 2010學年第 二 學期</p><p> 題目: 用DS1302與1602設計的可調式電子日歷時鐘的設計與實現 </p><p> 畢業(yè)設計(論文)任務書</p><p> 畢業(yè)設計(論文)題目(來源、類
2、型)</p><p> 用DS1302與1602LCD設計的可調式電子日歷時鐘的設計與實現 </p><p> 畢業(yè)設計(論文)工作內容與基本要求(目標、任務、途徑、方法、成果形式,應掌握的原始資料(數據)、參考資料(文獻)以及設計技術要求、注意事項等)(紙張
3、不夠可加頁)</p><p> 基本要求: (1)顯示:年、月、日、時、分、秒;(2)具有年、月、日、時、分、秒的設置功能。 </p><p> 成果形式:(主要包括畢業(yè)論文,系統(tǒng)設計技術文檔,軟件等):設計功能演示;論文電子文檔及程序提交光盤;按學院格式要求打印論文3份上交。
4、 </p><p> 參考資料有:單片機的C語言應用程序設計(馬忠梅、)新編單片機應用程序設計(張毅剛) </p><p><b> 教研室審批意見:</b></p><
5、p><b> 審批人簽名:</b></p><p> 畢業(yè)設計(論文)開題報告</p><p> 課題名稱(來源、類型):</p><p> 用DS1302與1602LCD設計的可調式電子日歷時鐘的設計與實現 </p&
6、gt;<p> 開題報告內容:(調研資料的準備,設計/論文的目的、要求、思路與預期成果;任務完成的階段內容及時間安排;完成設計(論文)所具備的條件因素等。)</p><p> 目的:實現日歷和時鐘的顯示并且能夠調整</p><p> 要求:完成可調式電子日歷時鐘的硬件和軟件的設計,包括單片機的相關內容;日歷時鐘模塊的設計,液晶顯示模塊的設計,按鍵模塊的設計??刂瞥绦虻木?/p>
7、寫等。</p><p> 預期成果:仿真成功,做出實物產品。</p><p> 顯示初始值日歷時鐘初始值;</p><p> 用按鍵調整日歷時鐘。</p><p> 時間安排:第1~2周:熟悉課題的基本要求,查閱相關資料,初步擬定設計 的整體方案,完成開題報告。
8、 </p><p> 第3~8周:自學這次課題所涉及的相關內容,包括器件基礎知識、單片機,DS1302時鐘芯片工作原理和相關軟件的使用以及DS1602液晶屏的相關內容。并設計一些簡單的實際電路,熟練所學內容并加以鞏固。熟悉繪圖軟件ProtelDXP的使用;</p><p> 第9~12周:設計DS1302時鐘模塊的控制電路、DS1602液晶顯示電路、電源電
9、路等硬件電路,并用ProtelDXP繪制原理圖,和繪制印刷電路板圖。編寫相關的控制程序;</p><p> 第13~15周:焊接調試電路,根據各部分的作用對硬件電路進行調試,最后聯機調試。</p><p> 最后數周:寫畢業(yè)設計論文,完成全部畢業(yè)設計。 </p><p> 指導教師簽名:
10、 日期: </p><p><b> 目錄</b></p><p> 【摘要】…………………………………………………………………………………....5</p><p> 【關鍵詞】 …………………………………………………………………………………..5</p><p> 第一章
11、、設計要求與方案論證</p><p> 1.1 設計要求 ……………………………………………………………………………………5</p><p> 1.2 系統(tǒng)基本方案選擇和論證 …………………………………………………………………5</p><p> 1.2.1單片機芯片的選擇方案和論證 ………………………………………………………..6</p>&l
12、t;p> 1.2.2 顯示模塊選擇方案和論證 …………………………………………………………….6</p><p> 1.2.3 時鐘芯片的選擇方案和論證 ………………………………………………………….6</p><p> 1.3 電路設計最終方案決定 …………………………………………………………………….7</p><p> 第二章、系統(tǒng)硬件的設計&l
13、t;/p><p> 2.1 電路設計框圖 ……………………………………………………………………………….7</p><p> 2.2 系統(tǒng)硬件概述 ……………………………………………………………………………….7</p><p> 2.3 主要單元電路的設計 ……………………………………………………………………….7</p><p> 2
14、.3.1單片機主控制模塊的設計 ……………………………………………………………...7</p><p> 2.3.2時鐘電路DS1302 ………………………………………………………………………..8</p><p> 2.3.3顯示模塊的設計 ………………………………………………………………………..11</p><p> 第三章、系統(tǒng)的軟件設計</p&
15、gt;<p> 3.1程序流程框圖 ……………………………………………………………………………….20</p><p> 3.2時間調整程序………………………………………………………………………………...21</p><p> 3.3液晶初始化程序 …………………………………………………………………………..27</p><p><b
16、> 第四章、指標測試</b></p><p> 4.1 測試儀器 …………………………………………………………………………………….28</p><p> 4.2硬件測試 ……………………………………………………………………………………..28</p><p> 4.3軟件測試 …………………………………………………………………………………
17、…..28</p><p> 4.4測試結果分析與結論………………………………………………………………………..28</p><p> 4.4.1 測試結果分析………………………………………………………………………… ..28</p><p> 4.4.2 測試結論…………………………………………………………………………………28</p><
18、;p> 作品總結………………………………………………………………………………………….29</p><p> 致謝詞…………………………………………………………………………………………….29</p><p> 參考文獻………………………………………………………………………………………….29</p><p> 附錄一……………………………………………
19、……………………………………………….31</p><p> 附錄二…………………………………………………………………………………………….32</p><p> 附錄三…………………………………………………………………………………………….32</p><p> 【摘要】 隨著科技的快速發(fā)展,時間的流逝,至從觀太陽、擺鐘到現在電子鐘,人類不斷研究,不斷創(chuàng)新紀
20、錄。美國DALLAS公司推出的具有涓細電流充電能的低功耗實時時鐘電路DS1302。它可以對年、月、日、周日、時、分、秒進行計時,還具有閏年補償等多種功能,而且DS1302的使用壽命長,誤差小。對于數字電子萬年歷采用直觀的數字顯示,可以同時顯示年、月、日、周 日、時、分、秒信息,還具有時間校準等功能。該電路采用STC89C52單片機作為核心,功耗小,能在3V的低壓工作,電壓可選用3~5V電壓供電。用1602液晶顯示,較直觀。</p&
21、gt;<p> 綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。</p><p><b> 【關鍵詞】</b></p><p> 時鐘電鐘;DS1302;LCD1602;單片機STC89C52</p><p> 第一章、設計要求與方案論證<
22、;/p><p><b> 1.1 設計要求:</b></p><p> 具有年、月、日、星期、時、分、秒等功能;</p><p> 具備年、月、日、星期、時、分、秒校準功能;</p><p> 1.2 系統(tǒng)基本方案選擇和論證</p><p> 1.2.1單片機芯片的選擇方案和論證:</
23、p><p><b> 方案一: </b></p><p> 采用89C51芯片作為硬件核心,采用Flash ROM,內部具有4KB ROM 存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機完全兼容,但是運用于電路設計中時由于不具備ISP在線編程技術, 當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,對芯片的多次拔插會對芯片造成一定
24、的損壞。</p><p><b> 方案二:</b></p><p> 采用STC89C52,片內ROM全都采用Flash ROM;能以3V的超底壓工作;同時也與MCS-51系列單片機完全該芯片內部存儲器為8KB ROM 存儲空間,同樣具有89C51的功能,且具有在線編程可擦除技術,對所下載的程序能夠加密,比較安全。當在對電路進行調試時,由于程序的錯誤修改或對程序
25、的新增功能需要燒入程序時,不需要對芯片多次拔插,所以不會對芯片造成損壞。</p><p> 所以選擇采用STC89C52作為主控制系統(tǒng).</p><p> 1.2.2 顯示模塊選擇方案和論證:</p><p><b> 方案一:</b></p><p> 采用點陣式數碼管顯示,點陣式數碼管是由八行八列的發(fā)光二極管
26、組成,對于顯示文字比較適合,如采用在顯示數字顯得太浪費,且價格也相對較高,所以不用此種作為顯示.</p><p><b> 方案二:</b></p><p> 采用LED數碼管動態(tài)掃描,雖然LED數碼管價格適中,但要顯示多個數字所需要的個數偏多,功耗較大,所以也不用此種作為顯示。</p><p><b> 方案三:</b&
27、gt;</p><p> 采用LCD液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,與普通數碼管相比功耗較小,硬件連接簡單。所以顯示部分采用1602液晶。</p><p> 1.2.3時鐘芯片的選擇方案和論證:</p><p><b> 方案一:</b></p><p> 直接采用
28、單片機定時計數器提供秒信號,使用程序實現年、月、日、星期、時、分、秒計數。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現的時間誤差較大。所以不采用此方案。</p><p><b> 方案二:</b></p><p> 采用DS1302時鐘芯片實現時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償的年進行計數,而且精度
29、高,位的RAM做為數據暫存區(qū),工作電壓2.5V~5.5V范圍內,2.5V時耗電小于300nA.</p><p> 1.3 電路設計最終方案決定</p><p> 綜上各方案所述,對此次作品的方案選定: 采用STC89C52作為主控制系統(tǒng); DS1302提供時鐘;1602液晶作為顯示。</p><p> 第二章、系統(tǒng)的硬件設計與實現</p><
30、;p> 2.1 電路設計框圖</p><p> 2.2 系統(tǒng)硬件概述</p><p> 本電路是由STC89C52單片機為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信
31、,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數據。DS1302內部有一個31*8的用于臨時性存放數據的RAM寄存器??僧a生年、月、日、周日、時、分、秒,具有使用壽命長,精度高和低功耗等特點,同時具有掉電自動保存功能,本電路采用DS1302單字節(jié)傳送方式實現與主控機之間數據的傳送;顯示部份由1602構成。</p><p> 2.3 主要單元電路的設計</p><p> 2.3.1
32、單片機主控制模塊的設計</p><p> STC89C52單片機為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3, MCS-51單片機共有4個8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨立地作輸出或輸入。</p><p> 單片機的最小系統(tǒng)如下圖所示,18引腳和19引腳接時鐘電路,XTAL1接外部晶振和微調電容的一端,在片內它是振蕩器倒相放大器的輸入,XT
33、AL2接外部晶振和微調電容的另一端,在片內它是振蕩器倒相放大器的輸出.第9引腳為復位輸入端,接上電容,電阻及開關后夠上電復位電路,20引腳為接地端,40引腳為電源端. 如圖-1 </p><p><b> 圖-1 主控制系統(tǒng)</b></p><p> 2.3.2時鐘電路DS1302</p><p> 1. DS1302的性能特性</
34、p><p> 圖-2示出DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數
35、據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數據的傳送手段。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RSTS置為低電平,則會終止此次數據傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動行時,在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平時,才能將RST置為高電平,I/O為串行數據輸入端(雙向)。
36、SCLK始終是輸入端。</p><p> 圖-2 DS1302的引腳圖</p><p> 2. DS1302數據操作原理</p><p> (1) 時鐘芯片DS1302的工作原理:</p><p> DS1302在每次進行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時序如下
37、圖3所示。表1為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對DS1302進行讀寫數據。對于位6,若對程序進行讀/寫時RAM=1,對時間進行讀/寫時,CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;該位為0則表示進行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。表6為DS1302的日歷、時間寄存器內容:“CH”是時鐘暫停標志位,當該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài)
38、;當該位為0時,時鐘開始運行?!癢P”是寫保護位,在任何的對時鐘和RAM的寫操作之前,WP必須為0。當“WP”為1時,寫保護位防止對任一寄存器的寫操作。</p><p> (2) DS1302的控制字節(jié)</p><p> DS1302的控制字如表-1所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入DS1302中,位6如果0,則表示存取日歷時鐘數據,為1表示存取
39、RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出</p><p> RAM RD</p><p> 1 A4 A3 A2 A1 A0 </p><
40、;p> / CK /WR</p><p> 表-1 DS1302的控制字格式</p><p> (3) 數據輸入輸出(I/O)</p><p> 在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指
41、令字后的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0位到高位7。如下圖-3所示</p><p> 圖-3 DS1302單字節(jié)讀/寫時序圖</p><p> (4) DS1302的寄存器</p><p> DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式,其日歷、時間寄存器及其控制字見表-2。&l
42、t;/p><p> 表-2 DS1302的日歷、時間寄存器</p><p> 此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。 DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數為讀操作
43、,偶數為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。</p><p> 2.3.3顯示模塊的設計</p><p><b> 1. 1602介紹</b></p><p><b> 硬件圖:</b></p><p>
44、; 圖-10 LCD液晶驅動電路</p><p> 第三章、系統(tǒng)的軟件設計</p><p><b> 3.1主程序流程圖</b></p><p> 圖-A 主程序流程圖</p><p><b> 主程序:</b></p><p> void main()<
45、;/p><p><b> {</b></p><p><b> init();</b></p><p> write_setds(0x80,0x50); </p><p> write_setds(0x82,0x59); </p><p> wri
46、te_setds(0x84,0x10); </p><p> write_setds(0x86,0x17); </p><p> write_setds(0x88,0x03);</p><p> write_setds(0x8a,0x03); </p><p> write_setds(0x8c,0x10)
47、;</p><p> write_setds(0x90,0xa4);</p><p><b> while(1)</b></p><p><b> { </b></p><p> keyscan();</p><p><b> }</b>&l
48、t;/p><p> display();</p><p><b> }</b></p><p> 3.2 按鍵掃描子程序</p><p> 調整時間用3個調整按鈕,1個作為移位、控制用,另外2個分別作為加調整和減調整用。在調整時間過程中,要調整的位與其他位應該有區(qū)別,所以增加了閃爍功能,即調整的位一直在閃爍,直到調整
49、下一位示值給該位。時間調整程序流程圖如圖-B所示。</p><p> 圖-B 時間調整程序流程圖</p><p><b> 調時程序如下:</b></p><p> void keyscan( )</p><p><b> {</b></p><p> uchar
50、aa,bb;</p><p> if(set==0)</p><p><b> {</b></p><p><b> delay(3);</b></p><p> if(set==0)</p><p><b> { </b></p&g
51、t;<p><b> aa++;</b></p><p> while(!set);</p><p><b> if(aa==1)</b></p><p><b> { </b></p><p><b> flag=1;</b>
52、</p><p> write_ds(0x8e,0x80);</p><p> write_com(0x80+0x40+10);</p><p> write_com(0x0f);</p><p> write_ds(0x8e,0x00);</p><p> bb=read_ds(0x81);</p&
53、gt;<p> miao=(bb/16)*10+bb%16;</p><p> bb=read_ds(0x83);</p><p> fen=(bb/16)*10+bb%16;</p><p> bb=read_ds(0x85);</p><p> shi=(bb/16)*10+bb%16;</p>&l
54、t;p> bb=read_ds(0x87);</p><p> ri=(bb/16)*10+bb%16;</p><p> bb=read_ds(0x89);</p><p> yue=(bb/16)*10+bb%16;</p><p> bb=read_ds(0x8b);</p><p> zhou
55、=(bb/16)*10+bb%16;</p><p> bb=read_ds(0x8d);</p><p> nian=(bb/16)*10+bb%16; </p><p><b> }</b></p><p><b> if(aa==2)</b>
56、</p><p> write_com(0x80+0x40+7);</p><p><b> if(aa==3)</b></p><p> write_com(0x80+0x40+4);</p><p><b> if(aa==4)</b></p><p> wri
57、te_com(0x80+0x0d);</p><p><b> if(aa==5)</b></p><p> write_com(0x80+0x09);</p><p><b> if(aa==6)</b></p><p> write_com(0x80+6);</p><
58、;p><b> if(aa==7)</b></p><p> write_com(0x80+3);</p><p><b> if(aa==8)</b></p><p><b> {</b></p><p><b> aa=0;</b>&l
59、t;/p><p> write_com(0x0c);</p><p> write_ds(0x8e,0x80);</p><p><b> flag=0;</b></p><p><b> }</b></p><p><b> }</b></
60、p><p><b> }</b></p><p><b> if(aa!=0)</b></p><p><b> {</b></p><p><b> if(up==0)</b></p><p><b> {<
61、/b></p><p> delay(5) ;</p><p><b> if(up==0)</b></p><p><b> {</b></p><p> while(!up);</p><p><b> if(aa==1)</b>&l
62、t;/p><p><b> { </b></p><p><b> miao++;</b></p><p> if(miao==61)</p><p><b> miao=1 ;</b></p><p> write_sfm(8,mi
63、ao);</p><p> write_com(0x80+0x4a);</p><p><b> }</b></p><p><b> if(aa==2)</b></p><p><b> {</b></p><p><b> fen
64、++;</b></p><p> if(fen==60)</p><p><b> fen=0;</b></p><p> write_sfm(5,fen);</p><p> write_com(0x80+0x48);</p><p><b> }</b&g
65、t;</p><p><b> if(aa==3)</b></p><p><b> {</b></p><p><b> shi++;</b></p><p> if(shi==24)</p><p><b> shi=0;<
66、/b></p><p> write_sfm(2,shi);</p><p> write_com(0x80+0x40+5);</p><p><b> }</b></p><p><b> if(aa==4)</b></p><p><b> {&
67、lt;/b></p><p><b> zhou++;</b></p><p> if(zhou==8)</p><p><b> zhou=1;</b></p><p> write_nyr(12,zhou);</p><p> write_com(0x80
68、+0x0d);</p><p><b> }</b></p><p><b> if(aa==5)</b></p><p><b> {</b></p><p><b> ri++;</b></p><p> if(ri=
69、=32)</p><p><b> ri=1;</b></p><p> write_nyr(8,ri);</p><p> write_com(0x80+0x0a);</p><p><b> }</b></p><p><b> if(aa==6)&l
70、t;/b></p><p><b> {</b></p><p><b> yue++;</b></p><p> if(yue==13)</p><p><b> yue=1;</b></p><p> write_nyr(5,yue)
71、;</p><p> write_com(0x80+7);</p><p><b> }</b></p><p><b> if(aa==7)</b></p><p><b> {</b></p><p><b> nian++;&l
72、t;/b></p><p> write_nyr(2,nian);</p><p> write_com(0x80+4);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&
73、lt;/p><p> if(down==0)</p><p><b> {</b></p><p> delay(5) ;</p><p> if(down==0)</p><p><b> {</b></p><p> while(!down
74、);</p><p><b> if(aa==1)</b></p><p><b> { </b></p><p><b> miao--;</b></p><p> if(miao==-1)</p><p><b>
75、miao=59;</b></p><p> write_sfm(8,miao);</p><p> write_com(0x80+0x4a);</p><p><b> }</b></p><p><b> if(aa==2)</b></p><p>&l
76、t;b> {</b></p><p><b> fen--;</b></p><p> if(fen==-1)</p><p><b> fen=59;</b></p><p> write_sfm(5,fen);</p><p> write_
77、com(0x80+0x48);</p><p><b> }</b></p><p><b> if(aa==3)</b></p><p><b> {</b></p><p><b> shi--;</b></p><p>
78、; if(shi==-1)</p><p><b> shi=23;</b></p><p> write_sfm(2,shi);</p><p> write_com(0x80+0x45);</p><p><b> }</b></p><p><b>
79、 if(aa==4)</b></p><p><b> {</b></p><p><b> zhou--;</b></p><p> if(zhou==0)</p><p><b> zhou=7;</b></p><p> w
80、rite_nyr(12,zhou);</p><p> write_com(0x80+0x0d);</p><p><b> }</b></p><p><b> if(aa==5)</b></p><p><b> {</b></p><p>
81、<b> ri--;</b></p><p> if(ri==-1)</p><p><b> ri=1;</b></p><p> write_nyr(8,ri);</p><p> write_com(0x80+0x0a);</p><p><b>
82、 }</b></p><p><b> if(aa==6)</b></p><p><b> {</b></p><p><b> yue--;</b></p><p> if(yue==0)</p><p><b> y
83、ue=12;</b></p><p> write_nyr(5,yue);</p><p> write_com(0x87);</p><p><b> }</b></p><p><b> if(aa==7)</b></p><p><b>
84、 {</b></p><p><b> nian--;</b></p><p> write_nyr(2,nian);</p><p> write_com(0x84);</p><p><b> }</b></p><p><b> }<
85、;/b></p><p><b> }</b></p><p> write_ds(0x80,(miao/10)*16+miao%10); </p><p> write_ds(0x82,(fen/10)*16+fen%10);</p><p> write_ds(0x84,(shi/10)*16+shi%
86、10);</p><p> write_ds(0x86,(ri/10)*16+ri%10);</p><p> write_ds(0x88,(yue/10)*16+yue%10);</p><p> write_ds(0x8a,(zhou/10)*16+zhou%10);</p><p> write_ds(0x8c,(nian/10
87、)*16+nian%10); </p><p><b> }</b></p><p> display();</p><p><b> }</b></p><p> 3.3 液晶初始化子程序</p><p> /*************初始化*********
88、****/ </p><p> void init()</p><p><b> {</b></p><p> //uchar i;</p><p><b> lcden=0;</b></p><p> write_com(0x38);
89、</p><p> write_com(0x0c);</p><p> write_com(0x06);</p><p> write_com(0x01);</p><p><b> delay(5);</b></p><p> write_com(0x80+0x01);</p&
90、gt;<p><b> {</b></p><p> write_date(0x32);</p><p><b> delay(2);</b></p><p><b> }</b></p><p> write_com(0x80+0x02);</p
91、><p><b> {</b></p><p> write_date(0x30);</p><p><b> delay(2);</b></p><p><b> }</b></p><p> write_com(0x80+0x05);</
92、p><p><b> {</b></p><p> write_date(0x2d);</p><p><b> delay(2);</b></p><p><b> }</b></p><p> write_com(0x80+0x08);<
93、/p><p><b> {</b></p><p> write_date(0x2d);</p><p><b> delay(2);</b></p><p><b> }</b></p><p> write_com(0x80+0x46);<
94、;/p><p><b> {</b></p><p> write_date(0x3a);</p><p><b> delay(2);</b></p><p><b> }</b></p><p> write_com(0x80+0x49);&l
95、t;/p><p><b> {</b></p><p> write_date(0x3a);</p><p><b> delay(2);</b></p><p><b> } </b></p><p><b> }</b>&
96、lt;/p><p><b> 4.1 測試儀器</b></p><p><b> 第四章、 指標測試</b></p><p><b> 4.2硬件測試</b></p><p> 電子萬年歷的電路系統(tǒng)較大,對于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯誤,則會對檢
97、測造成很大的不便,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否則會刺被帶有包皮的導線,則會對電路造成短路現象。</p><p> 在本成電子萬年歷的設計調試中遇到了很多的問題。回想這些問題只要認真多思考都是可以避免的,以下為主要的問題:</p><p> ?。?)串口下載芯片232發(fā)燙,單片機晶振不起振</p><p> (2)1602在顯示時間時出現黑
98、格子,遮擋了時間</p><p> ?。?)對萬年歷修改時間或日期時,有時時間改變2次。</p><p> 解決:根據儀器的測試,發(fā)現電路引腳有接錯的現象,重新焊接后晶振,復位正常,程序能夠下載。1602出現黑格子是由于在其第三引腳沒加電阻分壓導致,加上5K電阻后正常。按鍵延時較短致使按鍵次數多加。</p><p><b> 4.3軟件測試</b
99、></p><p> 電子成年歷是多功能的數字型,可以看當前日期,時間。電子成年歷功能很多,所以對于它的程序也較為復雜,所以在編寫程序和調試時出現了相對較多的問題。最后經過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調試過程中主要遇到的問題如下:</p><p> 1:1602顯示的時間不完整,最后在液晶初始化程序中給加上該顯示的數字即可。</p>
100、<p> 2:在調整時間時光標閃爍不規(guī)律,原因的由于錯用DS1302停振指令所致,最后加上一個變量進行控制即可。 </p><p> 4.4測試結果分析與結論</p><p> 4.4.1 測試結果分析</p><p> (1).在測試中遇到單片機晶振不起振、232芯片發(fā)燙,首先使用試測儀對電路進行測試,觀察是否存在漏焊,虛焊,或者元件損壞
101、.</p><p> (2).1602液晶有黑色背景出現,首先使用試測儀對電路進行測試,觀察電路是否存在短路現象。查看燒寫的程序是否正確無誤,對程序進行認真修改。</p><p> 4.4.2 測試結論</p><p> 經過多次的反復測試與分析,可以對電路的原理及功能更加熟悉,同時提高了設計能力與及對電路的分析能力.同時在軟件的編程方面得到更到的提高,對編程
102、能力得到加強.同時對所學的知識得到很大的提高與鞏固.</p><p><b> 作品總結</b></p><p> 在整個設計過程中,發(fā)揮團隊精神,分工合作,充分發(fā)揮人的主觀能動性,自主學習,學到了許多沒學到的知識。較好的完成了作品。達到了預期的目的。完了最初的設想。在電路焊接時雖然沒什么大問題,但從中也知道了焊接在整個作品中的重要性,電路工程量大,不能心急,一個
103、個慢慢來不能急于求成。反而達到事半功倍的效果。對電路的設計、布局要先有一個好的構思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時遇到了很多的問題,經過靜下心來思考,理清了思路,反而得心應手。在此次設計中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我們的耐心,做什么事都在有耐心。此次電子制作中學到了很多很多東西,這是最重要的??傊瑓⒓舆@次電子制作我的能力得到了全方位的提高。</p>&
104、lt;p><b> 致謝詞</b></p><p> 感謝學院給我提供了一個展現自己的舞臺,給我一次難得煅煉的機會,使得我的動手能力和專業(yè)技能都有了很大的提高。</p><p> 在做作品的日子里得到了指導教師的悉心指導,在此向我的指導教師致以誠摯的謝意。感謝提供相關技術幫助的老師和同學,你們的支持和鼓勵使我對這次的作品完成有了信心和動力,也給了我很多無私
105、的幫助和支持,我在此深表謝意。</p><p><b> 參考文獻</b></p><p> 1:張毅剛,彭喜元,姜守達,喬立言, 《新編MCS-51單片機應用設計》。哈爾濱工業(yè)大學出版社 ,2008</p><p> 2:馬忠梅,《單片機的C語言應用設計》 北京航空航天大學出版社 。2008</p><p>
106、3:王靜霞,《單片機應用技術》,電子工業(yè)出版社, 2009</p><p><b> 附錄一:系統(tǒng)電路圖</b></p><p> 附錄二:生成的PCB板</p><p> 附錄三:系統(tǒng)程序清單</p><p> #include<reg52.h></p><p> #def
107、ine uchar unsigned char</p><p> #define uint unsigned int</p><p> uchar code table1[]={"2009-00-00 sat"} ;</p><p> uchar code table2[]={ " 20:00:00"};</p&
108、gt;<p> sbit lcdrs=P2^7;</p><p> sbit lcdrw=P2^6;</p><p> sbit lcden=P2^5;</p><p> sbit ACC0=ACC^0;</p><p> sbit ACC7=ACC^7;</p><p> sbit dsio
109、=P2^3; </p><p> sbit dsclk=P2^2; </p><p> sbit dsrst=P2^4; </p><p> sbit set=P1^6; </p><p> sbit up=P1^5 ; </p><p> sbit down=P1^4
110、; </p><p> void keyscan();</p><p> void write_sfm(uchar add,uchar shu);</p><p> uchar shi,fen,miao,ri,yue,nian,zhou,flag;</p><p> void delay(uchar z) </
111、p><p><b> {</b></p><p> uchar x,y;</p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p&g
112、t; /***********往DS1302寫入一字節(jié)***************/</p><p> void inputbyte(uchar add)</p><p><b> {</b></p><p><b> uchar i;</b></p><p><b> ACC
113、=add;</b></p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p> dsio=ACC0;</p><p><b> dsclk=1;</b></p><p><b> dsclk
114、=0;</b></p><p> ACC=ACC>>1;</p><p><b> }</b></p><p><b> }</b></p><p> /**********ds1302輸出一字節(jié)****************/</p><p&g
115、t; uchar outputbyte(void)</p><p><b> {</b></p><p><b> uchar i;</b></p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><
116、p> ACC=ACC>>1;</p><p> ACC7=dsio;</p><p><b> dsclk=1;</b></p><p><b> dsclk=0;</b></p><p><b> }</b></p><p>
117、; return ACC;</p><p><b> }</b></p><p> /*********往ds1302寫入數據*****************/</p><p> void write_ds(uchar add,uchar ucda)</p><p><b> {</b>
118、</p><p><b> dsrst=0;</b></p><p><b> dsclk=0;</b></p><p><b> dsrst=1;</b></p><p> inputbyte(add);</p><p> inputbyte
119、(ucda);</p><p><b> dsclk=1;</b></p><p><b> dsrst=0;</b></p><p><b> }</b></p><p> /*********從DS1302讀出數據*****************/</p&g
120、t;<p> uchar read_ds(uchar add)</p><p><b> {</b></p><p> uchar ucda;</p><p><b> dsrst=0;</b></p><p><b> dsclk=0;</b><
121、/p><p><b> dsrst=1;</b></p><p> inputbyte(add);</p><p> ucda=outputbyte();</p><p><b> dsclk=1;</b></p><p><b> dsrst=0;</
122、b></p><p> return (ucda);</p><p><b> }</b></p><p> /*********往1602液晶寫入指令*****************/</p><p> void write_com(uchar com)</p><p><
123、b> {</b></p><p><b> lcdrs=0;</b></p><p><b> lcdrw=0;</b></p><p><b> P0=com;</b></p><p><b> delay(5);</b>&l
124、t;/p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> /****
125、****往1602液晶寫入數據******************/</p><p> void write_date(uchar date1)</p><p><b> {</b></p><p><b> lcdrs=1;</b></p><p><b> lcdrw=0;&l
126、t;/b></p><p><b> P0=date1;</b></p><p><b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p>
127、;<p><b> lcden=0;</b></p><p><b> }</b></p><p> /**********設置DS1302****************/</p><p> void write_setds(uchar addr,uchar date)</p><
128、;p><b> {</b></p><p> write_ds(0x8e,0x00);</p><p> write_ds(addr,date);</p><p> write_ds(0x8e,0x80);</p><p><b> }</b></p><p>
129、; /*************初始化*************/ </p><p> void init()</p><p><b> {</b></p><p> //uchar i;</p><p><b> lcden=0;</b></p>
130、<p> write_com(0x38);</p><p> write_com(0x0c);</p><p> write_com(0x06);</p><p> write_com(0x01);</p><p><b> delay(5);</b></p><p>
131、 write_com(0x80+0x01);</p><p><b> {</b></p><p> write_date(0x32);</p><p><b> delay(2);</b></p><p><b> }</b></p><p>
132、 write_com(0x80+0x02);</p><p><b> {</b></p><p> write_date(0x30);</p><p><b> delay(2);</b></p><p><b> }</b></p><p>
133、; write_com(0x80+0x05);</p><p><b> {</b></p><p> write_date(0x2d);</p><p><b> delay(2);</b></p><p><b> }</b></p><p&g
134、t; write_com(0x80+0x08);</p><p><b> {</b></p><p> write_date(0x2d);</p><p><b> delay(2);</b></p><p><b> }</b></p><p&
135、gt; write_com(0x80+0x46);</p><p><b> {</b></p><p> write_date(0x3a);</p><p><b> delay(2);</b></p><p><b> }</b></p><p
136、> write_com(0x80+0x49);</p><p><b> {</b></p><p> write_date(0x3a);</p><p><b> delay(2);</b></p><p><b> } </b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---用ds1302與1602lcd設計的可調式電子日歷時鐘的設計與實現
- 日歷時鐘顯示系統(tǒng)畢業(yè)設計
- 數字日歷時鐘畢業(yè)設計論文
- 高精度大屏幕led日歷時鐘 畢業(yè)設計
- 電子信息工程畢業(yè)設計帶實時日歷時鐘的溫度檢測系統(tǒng)的設計
- 電子時鐘設計與實現【畢業(yè)設計】
- 單片機課程設計(可調式中文電子日歷)
- 單片機課程設計--電子日歷時鐘顯示器設計
- 畢業(yè)設計---電子日歷的設計
- 畢業(yè)設計 電子日歷設計
- 畢業(yè)設計--電子日歷
- 可調電子時鐘的設計
- 可調式直流穩(wěn)壓電源畢業(yè)設計
- 基于ds1302實時日歷時鐘顯示系統(tǒng)畢業(yè)設計說明書
- 單片機日歷時鐘開發(fā)
- 單片機日歷時鐘開發(fā)【電子信息科學與技術畢業(yè)論文】
- 單片機日歷和時鐘畢業(yè)設計論文
- 畢業(yè)設計(論文)播量可調式油菜播種機設計
- 畢業(yè)設計---電子數字時鐘
- 電子時鐘畢業(yè)設計
評論
0/150
提交評論