第一篇: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!='