欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      DXP 2004 第九章單片機(jī)綜合實(shí)驗(yàn)板的制作

      時(shí)間:2019-05-11 23:03:03下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《DXP 2004 第九章單片機(jī)綜合實(shí)驗(yàn)板的制作》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《DXP 2004 第九章單片機(jī)綜合實(shí)驗(yàn)板的制作》。

      第一篇:DXP 2004 第九章單片機(jī)綜合實(shí)驗(yàn)板的制作

      目錄

      一、新建工程...................................................................................................................................2

      二、建立集成元件庫(kù).......................................................................................................................3

      三、設(shè)計(jì)電路原理圖.......................................................................................................................9

      四、ERC檢查.................................................................................................................................13

      五、原理圖報(bào)表.............................................................................................................................13

      六、規(guī)劃電路板.............................................................................................................................14

      七、導(dǎo)入網(wǎng)絡(luò)表和元件封裝.........................................................................................................17

      八、手工布局.................................................................................................................................17

      九、設(shè)置網(wǎng)絡(luò)類.............................................................................................................................18

      十、設(shè)置布線規(guī)則.........................................................................................................................19

      十一、自動(dòng)布線、手動(dòng)調(diào)整.........................................................................................................21

      十二、DRC設(shè)計(jì)規(guī)劃?rùn)z查.............................................................................................................22

      十三、3D效果圖...........................................................................................................................23

      十四、心得體會(huì).............................................................................................................................24

      一、新建工程

      點(diǎn)擊【File】→【New】→【Project】→【PCB Project】,由此創(chuàng)建一個(gè)新的PCB項(xiàng)目,執(zhí)行菜單命令【File】→【Save Project】將項(xiàng)目更名為“單片機(jī)基礎(chǔ)綜合實(shí)驗(yàn)板.PrjPCB”并保存在指定文件夾下。

      圖1 創(chuàng)建項(xiàng)目

      圖2 保存項(xiàng)目

      圖3 放置文件

      二、建立集成元件庫(kù)

      (1)建立集成元件庫(kù)項(xiàng)目

      1)在Protel DXP 2004 設(shè)計(jì)系統(tǒng)的主界面上執(zhí)行菜單命令【File】→【New】→【Project】→【Integrated Library】,由此創(chuàng)建一個(gè)新的集成元件庫(kù)項(xiàng)目。

      圖4 創(chuàng)建集成元件庫(kù)項(xiàng)目 2)在該集成元件庫(kù)項(xiàng)目下添加一個(gè)新的元件原理圖文件和一個(gè)新的PCB元件封裝庫(kù)文件。在該集成項(xiàng)目上單擊鼠標(biāo)右鍵選擇【Add New to Project】→【Schematic Library】【/PCB Library】,并保存,完成的工作面板如圖6所示。

      圖5 創(chuàng)建元件庫(kù)和封裝文件

      圖6 【Project】工作面板

      (2)制作原理圖元件STC12C5A60S2、HD7279、LG5641AH、PL2303、DS18B20和USB口。1)單擊【Project】工作面板中的“單片機(jī)基礎(chǔ)綜合實(shí)驗(yàn)板.SchLib”,切換到元件原理圖庫(kù)編輯界面下,系統(tǒng)將自動(dòng)彈出【SCH Library】工作面板,并且存在一個(gè)一個(gè)默認(rèn)名為”COMPONENT_1“的元件。

      圖7 元件原理圖庫(kù)工作界面

      2)雙擊默認(rèn)元件,對(duì)其屬性進(jìn)行編輯,編輯界面如圖8。

      圖8 編輯COMPONENT_1屬性

      3)單擊【SCH Library】工作面板上的Add鍵,可以添加一個(gè)新的自定義元件,如圖9。

      圖9 自定義元件的添加

      4)繪制所需元件。

      (a)元件STC12C5A60S2

      (b)元件HD7279

      (c)元件LG5641AH

      (d)元件DS18B20(e)元件PL2303

      (f)USB接口

      圖10 繪制的元件

      (3)制作元件封裝

      為6個(gè)自定義元件中STC12C5A60S2、LG5641AH兩個(gè)器件需要繪制相應(yīng)的元件封裝。1)單擊【Project】工作面板中的”單片機(jī)基礎(chǔ)綜合實(shí)驗(yàn)板.PcbLib”,切換到PCB元件封裝庫(kù)編輯器界面下,系統(tǒng)將自動(dòng)彈出【PCB Library】工作面板,并且存在一個(gè)一個(gè)默認(rèn)名為”P(pán)CBCOMPONENT_1“的元件,如圖11。

      圖11 【PCB Library】工作面板

      2)在PCB工作面板的空白區(qū)域單擊鼠標(biāo)右鍵,選擇[New Blank Component]選項(xiàng),再建一個(gè)元件封裝如圖12,然后對(duì)兩個(gè)元件封裝進(jìn)行編輯。

      圖12 再建一個(gè)元件封裝

      3)完成后的STC12C5A60S2元件封裝PLCC44zuo如圖13所示。4)完成后的LG5641AH元件封裝LEDDIP-12如圖14所示。

      圖13元件封裝STC12C5A60S2 圖14元件封裝LG5641AH(4)在元件庫(kù)中找封裝

      1)雙擊所需編輯元件,點(diǎn)擊Add添加元件封裝,如圖15所示。

      圖15 2)點(diǎn)擊【Browse】,彈出的表格中默認(rèn)的是自己制作的封裝,如果想要其他封裝,可以點(diǎn)擊【find】在庫(kù)中尋找自己所需的封裝。

      圖16

      三、設(shè)計(jì)電路原理圖

      為了本實(shí)驗(yàn)的PCB板的制作的方便,我將所有元器件全部集中在一張?jiān)韴D中,下面我將把整張電路圖分成10個(gè)小的電路圖分別展示,最后將整張電路圖展示。

      (1)由于將所有部分集中在一張圖紙中,所以在繪制原理圖開(kāi)始前,我們需要對(duì)我們?cè)镜膱D紙進(jìn)行設(shè)置,將其換成A3大小。

      在系統(tǒng)主界面上執(zhí)行【Design】→【Document Options】,更改圖紙屬性。

      圖17 選擇【Document Options】

      圖18編輯圖紙屬性(2)根據(jù)所給電路繪制原理圖

      1)完成后的MCU電路如圖19所示。

      圖19 MCU電路原理圖

      2)完成后的時(shí)鐘電路如圖20所示。

      圖20時(shí)鐘電路原理圖

      3)完成后的電源接口和復(fù)位電路如圖21所示。

      圖21電源接口和復(fù)位電路原理圖 4)完成后的外擴(kuò)RAM電路如圖22所示。

      圖22外擴(kuò)RAM電路原理圖

      5)完成后的DAC電路如圖23所示。

      圖23 DAC電路原理圖

      6)完成后的232電路如圖24所示。

      圖24 232電路原理圖

      7)完成后的溫度傳感器電路如圖25所示。

      圖25溫度傳感器電路原理圖 8)完成后的流水燈電路如圖26所示。

      圖26流水燈電路電路原理圖

      9)完成后的鍵盤(pán)數(shù)碼顯示電路如圖27所示。

      圖27鍵盤(pán)數(shù)碼顯示電路電路圖

      10)完成后的USB電路如圖28所示。

      圖28 USB電路原理圖(3)將這10個(gè)部分全部整理在一張?jiān)韴D,并根據(jù)實(shí)際情況布局。

      圖29單片機(jī)基礎(chǔ)綜合實(shí)驗(yàn)板原理圖

      四、ERC檢查

      執(zhí)行菜單命令【Project】→【Compile PCB Project】進(jìn)行電氣規(guī)格檢查如圖28所示,如果有錯(cuò)誤將會(huì)彈出一個(gè)【Message】的對(duì)話框,此時(shí)需要根據(jù)系統(tǒng)所提示的信息進(jìn)行修改,直到符合設(shè)計(jì)要求為止。

      圖30電氣規(guī)格檢查

      五、原理圖報(bào)表

      完成原理圖的設(shè)計(jì)操作后,還要根據(jù)設(shè)計(jì)的需要輸出元件報(bào)表已經(jīng)網(wǎng)絡(luò)表等文件。1)執(zhí)行菜單命令【Report】→【Bill of Materials】,生成元件報(bào)表,單擊【Report】按鈕保存該元件報(bào)表。

      2)選擇菜單命令【Design】→【Netlist For Project】→【Protel】,系統(tǒng)將在該工程項(xiàng)目下生成一個(gè)與該工程文件同名的網(wǎng)絡(luò)表文件。

      圖31生成網(wǎng)絡(luò)報(bào)表

      六、規(guī)劃電路板

      1)點(diǎn)擊軟件左下角Files界面,選擇PCB板向?qū)А?/p>

      圖32 2)設(shè)置PCB板的大小

      圖33 3)將電源層設(shè)置為0。

      圖34 4)將PCB板設(shè)置成過(guò)孔式單軌道。

      圖35 5)點(diǎn)擊向?qū)瓿蒔CB板的設(shè)置

      圖36利用向?qū)е谱鞯腜CB圖

      七、導(dǎo)入網(wǎng)絡(luò)表和元件封裝

      1)執(zhí)行命令【Design】→【Import Changes From…】后,會(huì)彈出如圖37所示的【Engineering Change Order】對(duì)話框。

      圖37【Engineering Change Order】對(duì)話框

      2)在該對(duì)話框中單擊

      功能按鈕檢查原理圖中的網(wǎng)絡(luò)和元件封裝是否正確。

      功能按鈕就可以將網(wǎng)絡(luò)和元件封裝加3)如果2)檢查沒(méi)有錯(cuò)誤,那么單擊載到PCB文件中,從而實(shí)現(xiàn)了從原理圖向PCB的更新。4)單擊按鈕關(guān)閉【Engineering Change Order】對(duì)話框,這時(shí)網(wǎng)絡(luò)和元件封裝已經(jīng)加載到PCB文件中了,如圖38所示。

      圖38 導(dǎo)入網(wǎng)絡(luò)表和元件封裝

      八、手工布局

      按照之前布置的原理圖模塊對(duì)加載到PCB的元件進(jìn)行布局,如圖39所示。

      圖39 對(duì)PCB板進(jìn)行手工布局

      九、設(shè)置網(wǎng)絡(luò)類

      為了在自動(dòng)布線的時(shí)候?qū)ν粋€(gè)網(wǎng)絡(luò)類中的所以對(duì)象一起操作,因此在布線之前可以對(duì)板子上的所有網(wǎng)絡(luò)進(jìn)行分類。

      1)打開(kāi)對(duì)象類對(duì)話框。在PCB編輯器的主菜單上執(zhí)行菜單命令【Design】→【Classes】,即可進(jìn)入對(duì)象類對(duì)話框,如圖40所示。

      圖40生成網(wǎng)絡(luò)類選項(xiàng)

      2)建立一個(gè)新的網(wǎng)絡(luò)類,并更名為”power”,如圖40所示。3)向新建的網(wǎng)絡(luò)類添加成員。

      圖41設(shè)置后的網(wǎng)絡(luò)類列表

      4)關(guān)閉對(duì)話框,完成設(shè)置。

      十、設(shè)置布線規(guī)則

      (1)【Electrial】規(guī)則的設(shè)置

      選擇【Electrial】規(guī)則下的【Clearance】規(guī)則,將【Constraints】中的【Minimum Clearance】設(shè)置為10mil。

      圖42安全間距設(shè)置

      (2)【Routing】規(guī)則的設(shè)置

      首先添加一個(gè)新的【W(wǎng)idth】規(guī)則。在【W(wǎng)idth】規(guī)則上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇【New Rule】,并更名為“power”。

      修改線寬和優(yōu)先順序。

      圖43導(dǎo)線寬度設(shè)置

      圖44【W(wǎng)idth】規(guī)則中優(yōu)先順序設(shè)置

      (3)【Manufacturing】規(guī)則的設(shè)置

      由于232電路中元件封裝過(guò)大,超過(guò)系統(tǒng)默認(rèn),因此有必要對(duì)【Manufacturing】規(guī)則下【HoleSize】更改允許孔徑的范圍。

      圖45孔尺寸的設(shè)置

      十一、自動(dòng)布線、手動(dòng)調(diào)整

      執(zhí)行菜單命令【Auto Route】→【All】,系統(tǒng)將彈出自動(dòng)布線器對(duì)話框,單擊按鈕,設(shè)置布線方向。

      圖46布線策略的選擇

      圖47編輯方向?qū)υ捒?/p>

      圖48 PCB布線圖

      十二、DRC設(shè)計(jì)規(guī)劃?rùn)z查

      完成PCB的布線操作后,通常需要對(duì)PCB進(jìn)行設(shè)計(jì)規(guī)則檢查(DRC)執(zhí)行菜單命令【Tools】→【Design Rule Check…】

      圖49DRC報(bào)告

      十三、3D效果圖

      執(zhí)行PCB編輯器中【View】→【Board in 3D】命令,查看該P(yáng)CB的效果圖,結(jié)果如圖50。

      圖50 PCB的3D效果圖

      十四、心得體會(huì)

      通過(guò)本周對(duì)Protel DXP的學(xué)習(xí),讓我學(xué)會(huì)了一些基本電路圖繪制和PCB的制作。剛接觸Protel DXP軟件時(shí),對(duì)其操作什么都不會(huì),但在老師的講解和操作指導(dǎo)下,以及自己的努力下。慢慢會(huì)做了,開(kāi)始會(huì)建原理圖文件和PCB文件,但都不會(huì)查找元件和繪制元件。

      剛開(kāi)始做Protel DXP時(shí),最難的是對(duì)元件的查找和對(duì)元件庫(kù)的管理和添加,還有PCB封裝的繪制。的確對(duì)于不懂 Protel DXP的我們,實(shí)在很難找到成功的感覺(jué),往往錯(cuò)誤百出,到處都存在問(wèn)題,每一個(gè)詳細(xì)的步驟都要認(rèn)真記下,不然后期都不會(huì)操作。

      隨著對(duì)Protel DXP的了解,我也慢慢地開(kāi)始有感覺(jué)會(huì)做了。開(kāi)始學(xué)習(xí)原理圖元件的繪制了,在做原理圖繪制之前要打開(kāi)原理圖繪制界面,在繪制原理圖元件時(shí)要注意元件一般的尺寸大小適中,還有元件管腳電氣屬性的設(shè)置和消箭頭的一些簡(jiǎn)單的方法。原理圖的繪制完成后便是修改文件名稱和添加元件庫(kù)了。只要對(duì)這些基本方法都掌握后,就可以繪制一些基本的原理圖了,繪制圖形時(shí)一定要注意元件的擺放,以及原理圖要求美觀,清晰等等。

      PCB的封裝,是做Protel DXP很難的一步,制作圖時(shí)都要以元器件實(shí)物的型號(hào)和大小為依據(jù),實(shí)物元件的種類繁多,以種類的不同大小又不一,所以要以對(duì)待不同的PCB封裝是不一樣的。PBC封裝尺寸的大小主要在管腳的距離上,管腳距離的大小決定了實(shí)物元件能否安裝,要從原理圖生成PCB就要保證每個(gè)元件都有對(duì)應(yīng)的封裝,不僅大小要對(duì)應(yīng)符號(hào)也要對(duì)應(yīng)。在這些步驟都完成后就可以從原理圖生成PCB了,在從原理圖生成PCB時(shí)要保證每個(gè)元件都是正確的,確保每個(gè)元件都被導(dǎo)入。

      PCB生成后最主要的工作就是對(duì)元件的布局和布線了,PCB元件的布局的要求是功能元件要盡量在一起,主要功能集成塊要放在電路板中央,重元件要有支架,開(kāi)關(guān)和發(fā)熱元件靠邊放,高頻部分布線要盡量短,最后元件擺放要整齊、美觀。元件布局好后就是布線了,布線可以是單層,雙層和多層的。布線后盡量不要存在飛線,布局好后就是布線了,布線可以是單層,雙層和多層的。布線后盡量不要存在飛線,若布線存在極少飛線,依實(shí)際情況可不從新布線而手動(dòng)布線。布線完后添加淚滴和敷銅,PCB就制作完成了,可以進(jìn)行3D仿真觀察。

      Protel 的學(xué)習(xí)注重實(shí)際練習(xí),練習(xí)多了便有了經(jīng)驗(yàn),經(jīng)驗(yàn)積累多了便有了感覺(jué),有了感覺(jué)便學(xué)會(huì)了Protel,所以在以后的學(xué)習(xí)中我定會(huì)從實(shí)際出發(fā),加強(qiáng)練習(xí)。

      第二篇:萬(wàn)年歷單片機(jī)綜合實(shí)驗(yàn)

      綜合實(shí)驗(yàn)報(bào)告

      實(shí)驗(yàn)題目: 萬(wàn)年歷

      學(xué)生班級(jí): 學(xué)生姓名: 學(xué)生學(xué)號(hào): 指導(dǎo)教師: 實(shí)驗(yàn)時(shí)間:

      摘要

      本設(shè)計(jì)是電子萬(wàn)年歷。具備三個(gè)功能:能顯示:年、月、日、時(shí)、分、秒及星期信息,并具有可調(diào)整日期和時(shí)間功能。

      我選用的是單片機(jī)STC89C52來(lái)實(shí)現(xiàn)電子萬(wàn)年歷的功能。該電子萬(wàn)年歷能夠成功實(shí)現(xiàn)時(shí)鐘運(yùn)行,調(diào)整,顯示年月日時(shí)分秒等信息。

      該電子萬(wàn)年歷使用12MHZ晶振與單片機(jī)STC89C52相連接,通過(guò)軟件編程的方法實(shí)現(xiàn)了以24小時(shí)為一個(gè)周期,同時(shí)顯示小時(shí)、分鐘和秒的要求。利用單片機(jī)定時(shí)器及計(jì)數(shù)器產(chǎn)生定時(shí)效果通過(guò)編程形成數(shù)字鐘效果,再利用數(shù)碼管動(dòng)態(tài)掃描顯示單片機(jī)內(nèi)部處理的數(shù)據(jù)。同時(shí)通過(guò)端口讀入當(dāng)前外部控制狀態(tài)來(lái)改變程序的不同狀態(tài),實(shí)現(xiàn)不同功能。

      電子萬(wàn)年歷設(shè)計(jì)與制作可采用數(shù)字電路實(shí)現(xiàn),也可以采用單片機(jī)來(lái)完成。若用數(shù)字電路完成,所設(shè)計(jì)的電路相當(dāng)復(fù)雜,大概需要十幾片數(shù)字集成塊,其功能也主要依賴于數(shù)字電路的各功能模塊的組合來(lái)實(shí)現(xiàn),焊接的過(guò)程比較復(fù)雜,成本也非常高。若用單片機(jī)來(lái)設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完成,這樣一來(lái)就降低了硬件電路的復(fù)雜性,從而使得其成本降低,更適合我們大學(xué)生自主研發(fā)。所以在該設(shè)計(jì)與制作中我選用了單片機(jī)STC89C52,它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫(xiě)或用編程器編程。另外, 單片機(jī)STC89C52的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128B 的RAM、32條I/O口線、2個(gè)16位定時(shí)計(jì)數(shù)器、5個(gè)中斷源、一個(gè)全雙工串行口等。

      因此,采用單片機(jī)STC89C52原理制作的電子萬(wàn)年歷,不僅僅在原理上能夠成功實(shí)現(xiàn)計(jì)時(shí)等功能,也更經(jīng)濟(jì),更適用,更符合我們實(shí)際生活的需要,對(duì)我們大學(xué)生來(lái)說(shuō)也更加有用。

      關(guān)鍵詞:STC89S52,DS1302,LCD,PROTEUS

      目錄

      一、實(shí)驗(yàn)要求:...............................................................................................................................3

      1.1基本要求:.........................................................................................................................3 1.2拓展要求:.........................................................................................................................3

      二、方案論證:...............................................................................................................................3

      2.1.顯示部分:...........................................................................................................................3 2.2.數(shù)字時(shí)鐘:.........................................................................................................................3

      三、總體方案:...............................................................................................................................4

      四、系統(tǒng)硬件設(shè)計(jì):.......................................................................................................................4

      4.1.時(shí)間設(shè)置模塊:...............................................................................................................4 4.2.時(shí)鐘模塊:...........................................................................................................................4 4.3.整點(diǎn)報(bào)時(shí)電路.....................................................................................................................5 4.4.LCD液晶顯示模塊:.......................................................................................................5

      五、整體電路:...............................................................................................................................6

      5.1.電路.....................................................................................................................................6

      六、數(shù)字時(shí)鐘使用說(shuō)明:...............................................................................................................7

      七、心得體會(huì):...............................................................................................................................7

      八、程序代碼:...............................................................................................................................7

      一、實(shí)驗(yàn)要求:

      1.1基本要求:

      1、能動(dòng)態(tài)顯示年、月、日、星期、小時(shí)、分鐘、秒。

      2、可用鍵盤(pán)進(jìn)行日期時(shí)間的修改。1.2拓展要求:

      3、具有鬧鐘功能:可設(shè)定鬧鐘時(shí)間,在時(shí)間到達(dá)后,發(fā)出報(bào)警時(shí)間,持續(xù)5秒。

      二、方案論證:

      2.1.顯示部分: 顯示部分是本次設(shè)計(jì)的重要部分,一般有以下兩種方案: 方案一:

      采用LED顯示,分靜態(tài)顯示和動(dòng)態(tài)顯示。對(duì)于靜態(tài)顯示方式,所需的譯碼驅(qū)動(dòng)裝置很多,引線多而復(fù)雜,且可靠性也較低。而對(duì)于動(dòng)態(tài)顯示方式,雖可以避免靜態(tài)顯示的問(wèn)題,但設(shè)計(jì)上如果處理不當(dāng),易造成亮度低,有閃爍等問(wèn)題。方案二:

      采用LCD顯示。LCD液晶顯示具有豐富多樣性、靈活性、電路簡(jiǎn)單、易于控制而且功耗小等優(yōu)點(diǎn),對(duì)于信息量多的系統(tǒng),是比較適合的。

      鑒于上述原因,我們采用方案二。2.2.數(shù)字時(shí)鐘:

      數(shù)字時(shí)鐘是本設(shè)計(jì)的核心的部分。根據(jù)需要可采用以下兩種方案實(shí)現(xiàn): 方案一:

      方案完全用軟件實(shí)現(xiàn)數(shù)字時(shí)鐘。原理為:在單片機(jī)內(nèi)部存儲(chǔ)器設(shè)三個(gè)字節(jié)分別存放時(shí)鐘的時(shí)、分、秒信息。利用定時(shí)器與軟件結(jié)合實(shí)現(xiàn)1秒定時(shí)中斷,每產(chǎn)生一次中斷,存儲(chǔ)器內(nèi)相應(yīng)的秒值加1;若秒值達(dá)到60,則將其清零,并將相應(yīng)的分字節(jié)值加1;若分值達(dá)到60,則清零分字節(jié),并將時(shí)字節(jié)值加1;若時(shí)值達(dá)到24,則將時(shí)字節(jié)清零。該方案具有硬件電路簡(jiǎn)單的特點(diǎn),但當(dāng)單片機(jī)不上電,程序?qū)⒉粓?zhí)行。而且由于每次執(zhí)行程序時(shí),定時(shí)器都要重新賦初值,所以該時(shí)鐘精度不高。

      方案二:

      方案采用Dallas公司的專用時(shí)鐘芯片DS1302。該芯片內(nèi)部采用石英晶體振蕩器,其芯片精度不大于10ms/年,且具有完備的時(shí)鐘鬧鐘功能,因此,可直接對(duì)其以用于顯示或設(shè)置,使得軟件編程相對(duì)簡(jiǎn)單。為保證時(shí)鐘在電網(wǎng)電壓不足或突然掉電等突發(fā)情況下仍能正常工作,芯片內(nèi)部包含鋰電池。當(dāng)電網(wǎng)電壓不足或突然掉電時(shí),可使系統(tǒng)自動(dòng)轉(zhuǎn)換到內(nèi)部鋰電池供電系統(tǒng)。而且即使系統(tǒng)不上電,程序不執(zhí)行時(shí),鋰電池也能保證芯片的正常運(yùn)行,以備隨 時(shí)提供正確的時(shí)間。

      基于時(shí)鐘芯片的上述優(yōu)點(diǎn),本設(shè)計(jì)采用方案二完成數(shù)字時(shí)鐘的功能。

      三、總體方案:

      本設(shè)計(jì)采用STC89C52RC單片機(jī)作為本系統(tǒng)的控制模塊。單片機(jī)可把由DS1302、LCD液晶顯示模塊中的數(shù)據(jù)利用軟件來(lái)進(jìn)行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊,實(shí)現(xiàn)日歷和修改的顯示。以LCD液晶顯示器為顯示模塊,把單片機(jī)傳來(lái)的數(shù)據(jù)顯示出來(lái),并且顯示多樣化。在顯示電路中,主要靠按鍵來(lái)實(shí)現(xiàn)日期的修改和選擇。

      四、系統(tǒng)硬件設(shè)計(jì):

      4.1.時(shí)間設(shè)置模塊:

      時(shí)間設(shè)置模塊通過(guò)四個(gè)按鍵實(shí)現(xiàn)萬(wàn)年歷的時(shí)間調(diào)整設(shè)置。KEY1鍵進(jìn)入時(shí)間設(shè)置模式,KEY2鍵實(shí)現(xiàn)設(shè)置內(nèi)容選擇,KEY3鍵實(shí)現(xiàn)設(shè)置內(nèi)容加1,KEY4鍵實(shí)現(xiàn)設(shè)置內(nèi)容減1。

      圖1.時(shí)間設(shè)置模塊

      4.2.時(shí)鐘模塊: 時(shí)鐘模塊采用DS1302芯片,DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM通過(guò)簡(jiǎn)單的串行接口與單片機(jī)進(jìn)行通信實(shí)時(shí)時(shí)鐘/日歷電路提供秒分時(shí)日日期月年的信息每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整時(shí)鐘操作可通過(guò) 4 AM/PM指示決定采用24或12小時(shí)格式DS1302與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信僅需用到三個(gè)口線:

      RST復(fù)位、I/O數(shù)據(jù)線、SCLK串行時(shí)鐘。時(shí)鐘/RAM的讀/寫(xiě)數(shù)據(jù)以一個(gè)字節(jié)或多達(dá)31個(gè)字節(jié)的字符組方式通信。DS1302工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW,其接線電路如圖2所示:

      圖2.時(shí)鐘模塊

      4.3.整點(diǎn)報(bào)時(shí)電路

      整點(diǎn)報(bào)時(shí)電路由一個(gè)NPN三極管和蜂鳴器組成,當(dāng)時(shí)間走到整點(diǎn)時(shí)分,會(huì)每間隔一秒發(fā)出一次報(bào)時(shí),連響五次。

      圖3.報(bào)時(shí)電路

      4.4.LCD液晶顯示模塊: LCD液晶顯示模塊采用LCD1602型號(hào),具有很低的功耗,正常工作時(shí)電流僅2.0mA/5.0V。通過(guò)編程實(shí)現(xiàn)自動(dòng)關(guān)閉屏幕能夠更有效的降低功耗。LCD1602分兩行顯示,每行可顯示多達(dá)16個(gè)字符。LCD1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,通過(guò)內(nèi)部指令可實(shí)現(xiàn)對(duì)其顯示多樣的控制,并且還能利用空余的空間自定義字符。其接線如圖4所示:

      圖4.LCD液晶顯示

      五、整體電路:

      5.1.電路

      圖5.整體電路

      六、數(shù)字時(shí)鐘使用說(shuō)明:

      調(diào)整時(shí)間設(shè)定:在時(shí)間顯示界面中按KEY1鍵后,進(jìn)入時(shí)間調(diào)整,通過(guò)KEY2選擇需要修改的或設(shè)定的時(shí)間。按KEY2鍵對(duì)應(yīng)內(nèi)容向右移動(dòng),KEY3鍵加1,KEY4鍵減1,設(shè)置完畢,自動(dòng)退出設(shè)置功能。

      七、心得體會(huì):

      通過(guò)這一周的課程設(shè)計(jì),加深了我對(duì)于單片機(jī)和數(shù)字電路的認(rèn)識(shí),通過(guò)查閱大量的資料,我獲得了以前在課堂上學(xué)不到的東西,我想這對(duì)于以后的畢業(yè)設(shè)計(jì),或者工作也好,都是很有幫助的。在設(shè)計(jì)電路中,往往是先仿真后連接實(shí)物圖,但有時(shí)候仿真和電路連接并不是完全一致的,例如仿真的連接示意圖中,往往沒(méi)有接高電平的16腳或14腳以及接低電平的7腳或8腳,因此在實(shí)際的電路連接中往往容易遺漏。在設(shè)計(jì)的過(guò)程中遇到了很多問(wèn)題,本來(lái)自己的單片機(jī)基礎(chǔ)就比較弱,又是第一次做這樣的設(shè)計(jì),難免會(huì)遇到過(guò)各種各樣的問(wèn)題。同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,比如對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,對(duì)單片機(jī)匯編語(yǔ)言掌握得不好。此次的電子萬(wàn)年歷設(shè)計(jì)重在于仿真和接線,雖然能把電路圖接出來(lái),并能正常顯示,但對(duì)于電路本身的原理并不是十分熟悉.總的來(lái)說(shuō),通過(guò)這次的設(shè)計(jì)實(shí)驗(yàn)更進(jìn)一步地增強(qiáng)了實(shí)驗(yàn)的動(dòng)手能力。

      八、程序代碼:

      #include “reg51.h” #include “intrins.h” typedef unsigned char uint8;typedef unsigned int uint16;

      #define LED_Y P2 #define LCD_DATA 1 #define LCD_COMMAND 0 #define WORDNUU 11

      sbit ALARM=P2^0;sbit LCD_RS=P1^5;sbit LCD_RW=P1^6;sbit LCD_EN=P1^7;sbit RTC_SDA=P3^6;sbit RTC_SCL=P3^5;sbit RTC_RST=P3^4;sbit KEY1=P1^0;sbit KEY2=P1^1;sbit KEY3=P1^2;sbit KEY4=P1^3;

      #define LCD_PORT P0 uint8 LCD_NO;uint16 i1,i2;uint8 bdata AA;sbit AA7 = AA^7;#define READ_SECOND #define WRITE_SECOND #define READ_MINE

      #define WRITE_MINE

      #define READ_HOUR

      #define WRITE_HOUR #define READ_DAY #define WRITE_DAY #define READ_MONTH #define WRITE_MONTH #define READ_WEEK #define WRITE_WEEK #define READ_YEAR

      #define WRITE_YEAR

      uint8 SET;uint8 PRE_HOUR;uint8 DATE[16];uint8 TIME[16];

      0x81 0x80 0x83 0x82 0x85 0x84 0x87 0x86 0x89 0x88 0x8b 0x8a 0x8d 0x8c 8

      void delaynus(uint8 n){

      uint8 i;

      for(i=0;i

      }

      void RTC_Write(uint8 dat){ uint8 i;

      RTC_SCL=0;

      //拉低SCLK,為脈沖上升沿寫(xiě)入數(shù)據(jù)做好準(zhǔn)備

      delaynus(2);

      //稍微等待,使硬件做好準(zhǔn)備

      for(i=0;i<8;i++)

      //連續(xù)寫(xiě)8個(gè)二進(jìn)制位數(shù)據(jù)

      {

      RTC_SDA=dat&0x01;

      //取出dat的第0位數(shù)據(jù)寫(xiě)入1302

      delaynus(2);

      //稍微等待,使硬件做好準(zhǔn)備

      RTC_SCL=1;

      //上升沿寫(xiě)入數(shù)據(jù)

      delaynus(2);

      //稍微等待,使硬件做好準(zhǔn)備

      RTC_SCL=0;

      //重新拉低SCLK,形成脈沖

      dat>>=1;

      //將dat的各數(shù)據(jù)位右移1位,準(zhǔn)備寫(xiě)入下一個(gè)數(shù)據(jù)位

      }

      }

      uint8 RTC_Read(){ uint8 i,dat;

      delaynus(2);

      //稍微等待,使硬件做好準(zhǔn)備

      for(i=0;i<8;i++)

      //連續(xù)讀8個(gè)二進(jìn)制位數(shù)據(jù)

      {

      dat>>=1;

      //將dat的各數(shù)據(jù)位右移1位,因?yàn)橄茸x出的是字節(jié)的最低位

      if(RTC_SDA==1)

      //如果讀出的數(shù)據(jù)是1

      dat|=0x80;

      //將1取出,寫(xiě)在dat的最高位

      RTC_SCL=1;

      //將SCLK置于高電平,為下降沿讀出

      delaynus(2);//稍微等待

      RTC_SCL=0;

      //拉低SCLK,形成脈沖下降沿

      delaynus(2);//稍微等待

      }

      return dat;

      //將讀出的數(shù)據(jù)返回 }

      void RTC_Write_Byte(uint8 addr,uint8 dat){

      RTC_RST=0;

      //禁止數(shù)據(jù)傳遞

      RTC_SCL=0;

      //確保寫(xiě)數(shù)居前SCLK被拉低

      RTC_RST=1;

      //啟動(dòng)數(shù)據(jù)傳輸

      delaynus(2);

      //稍微等待,使硬件做好準(zhǔn)備

      RTC_Write(addr);

      //寫(xiě)入命令字

      RTC_Write(dat);

      //寫(xiě)數(shù)據(jù)

      RTC_SCL=1;

      //將時(shí)鐘電平置于已知狀態(tài)

      RTC_RST=0;

      //禁止數(shù)據(jù)傳遞

      }

      uint8 RTC_Read_Byte(uint8 addr){

      uint8 dat;

      RTC_RST=0;

      //拉低RST

      RTC_SCL=0;

      //確保寫(xiě)數(shù)居前SCLK被拉低

      RTC_RST=1;

      //啟動(dòng)數(shù)據(jù)傳輸

      RTC_Write(addr);

      //寫(xiě)入命令字

      dat=RTC_Read();

      //讀出數(shù)據(jù)

      RTC_SCL=1;

      //將時(shí)鐘電平置于已知狀態(tài)

      RTC_RST=0;

      //禁止數(shù)據(jù)傳遞

      return dat;

      //將讀出的數(shù)據(jù)返回 }

      typedef struct __SYSTEMTIME__ { uint8 Second;uint8 Mine;uint8 Hour;uint8 Day;uint8 Month;uint8 Week;uint8 Year;}SYSTEMTIME;

      static SYSTEMTIME TIMETYPE;

      void CurrentTime(SYSTEMTIME *dat){ uint8 TimeValue;

      TimeValue=RTC_Read_Byte(READ_SECOND);dat->Second=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);

      TimeValue=RTC_Read_Byte(READ_MINE);dat->Mine=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);

      TimeValue=RTC_Read_Byte(READ_HOUR);dat->Hour=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);

      TimeValue=RTC_Read_Byte(READ_DAY);dat->Day=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);

      TimeValue=RTC_Read_Byte(READ_MONTH);dat->Month=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);

      TimeValue=RTC_Read_Byte(READ_WEEK);dat->Week=(TimeValue&0x0f);

      TimeValue=RTC_Read_Byte(READ_YEAR);dat->Year=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);}

      bit LCD_BUSY(){ bit result;LCD_RS=0;LCD_RW=1;LCD_EN=1;_nop_();_nop_();result=(bit)(LCD_PORT&0x80);LCD_EN=0;return result;}

      void LCD_Write(uint8 dat,uint8 type)

      //LCD寫(xiě)字符 { uint8 i;while((LCD_BUSY()&&i<100)){i++;} if(i>99)LCD_NO=1;LCD_RS=type;LCD_RW=0;LCD_EN=0;_nop_();_nop_();_nop_();_nop_();LCD_PORT=dat;_nop_();_nop_();_nop_();_nop_();LCD_EN=1;_nop_();_nop_();_nop_();_nop_();LCD_EN=0;}

      void LCD_INITIALIZE()

      //LCD初始化 { LCD_Write(0x06,LCD_COMMAND);LCD_Write(0x38,LCD_COMMAND);LCD_Write(0x0c,LCD_COMMAND);LCD_Write(0x01,LCD_COMMAND);}

      void LCD_Prints(uint8 *dat,uint8 add)

      //LCD打印函數(shù) { LCD_Write(add|0x80,LCD_COMMAND);while(*dat!='