畢業(yè)設(shè)計(jì)(論文)基于C51單片機(jī)的計(jì)算器系統(tǒng)設(shè)計(jì)_第1頁
畢業(yè)設(shè)計(jì)(論文)基于C51單片機(jī)的計(jì)算器系統(tǒng)設(shè)計(jì)_第2頁
畢業(yè)設(shè)計(jì)(論文)基于C51單片機(jī)的計(jì)算器系統(tǒng)設(shè)計(jì)_第3頁
畢業(yè)設(shè)計(jì)(論文)基于C51單片機(jī)的計(jì)算器系統(tǒng)設(shè)計(jì)_第4頁
畢業(yè)設(shè)計(jì)(論文)基于C51單片機(jī)的計(jì)算器系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄 引言引言: : .4 1. 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù) .4 2. 方案論證方案論證 .5 3電路的硬件設(shè)計(jì)電路的硬件設(shè)計(jì) .5 3.1 系統(tǒng)框圖.5 3.2 微處理器的選擇.5 3.3 電源模塊.6 3.4 at89c51 單片機(jī)參數(shù).6 3.5 鍵盤的設(shè)計(jì).8 3.6 復(fù)位電路的設(shè)計(jì).9 3.7 振蕩電路的設(shè)計(jì).9 3.8 數(shù)碼顯示及驅(qū)動(dòng)電路.9 4. 電路調(diào)試和結(jié)論電路調(diào)試和結(jié)論 .11 4.1 具體電路系統(tǒng)圖.11 4.2 復(fù)位電路的測試.11 4.3 振蕩電路及端口測試.12 4.4 電源的測試.12 4.5 數(shù)碼顯示電路及測試.13 5 5軟件設(shè)計(jì)部分軟件設(shè)計(jì)部分 .14 5.1 軟件

2、設(shè)計(jì)總寬圖.14 5.2 程序流程圖.15 6本次設(shè)計(jì)的心得與體會(huì)本次設(shè)計(jì)的心得與體會(huì) .16 6.1 設(shè)計(jì)需考慮下列幾點(diǎn).16 6.2 硬件系統(tǒng)穩(wěn)定工作應(yīng)考慮的幾點(diǎn)問題.16 6.3 軟件編程注意事項(xiàng).17 6.4 c 語言編程與匯編編程的比較.18 7本次課程設(shè)計(jì)已完成如下功能本次課程設(shè)計(jì)已完成如下功能 .20 8結(jié)論:結(jié)論: .21 參考文獻(xiàn)參考文獻(xiàn) .21 附錄一:pcb 的 3d 效果:.22 附錄二:總的程序.23 附錄三:元件清單表.38 致致 謝謝 .39 基于 c51 單片機(jī)的計(jì)算器系統(tǒng)設(shè)計(jì) 專業(yè):電子信息科學(xué)與技術(shù) 引言: 隨著社會(huì)的發(fā)展,科學(xué)的進(jìn)步,人們的生活水平在逐步的

3、提高, 尤其是微電子技術(shù)的發(fā)展,猶如雨后春筍般的變化。電子產(chǎn)品的更新 速度快就不足驚奇了。 計(jì)算器在人們的日常中是比較的常見的電子產(chǎn)品之一??墒撬€ 在發(fā)展之中,以后必將出現(xiàn)功能更加強(qiáng)大的計(jì)算器,基于這樣的理念, 本次設(shè)計(jì)是用單片機(jī)來設(shè)計(jì)的兩位數(shù)計(jì)算器。該設(shè)計(jì)系統(tǒng)是以 at89c51 為單片機(jī), p1 口作為輸入端,外接 4x4 的鍵盤,通過鍵盤 掃描來對輸入數(shù)的控制,在 p0 口,p2 口接了驅(qū)動(dòng)電路。用來保證 led 的工作正常。計(jì)算器將完成的功能有加,減,乘,除等功能。 該系統(tǒng)還設(shè)了功能鍵,開始顯示 0,按了鍵后就進(jìn)入計(jì)算狀態(tài), 再按該鍵就進(jìn)入時(shí)鐘狀態(tài)。當(dāng)然還有一些不足之處,本次設(shè)計(jì)還不

4、能 進(jìn)行小數(shù)計(jì)算。在做除法運(yùn)算時(shí)也只能計(jì)算除數(shù)是被除數(shù)的整數(shù)倍的 情況。但是硬件的設(shè)計(jì)上是可以實(shí)現(xiàn)的。比如,設(shè)幾個(gè)功能鍵,還可以 實(shí)現(xiàn)時(shí)間的調(diào)時(shí),頻率計(jì),秒表等。 1. 設(shè)計(jì)任務(wù) 基于at89c51芯片的應(yīng)用及端口的擴(kuò)展,來實(shí)現(xiàn)兩位數(shù)的計(jì)算即 加,減,乘,除等功能;在硬件的基礎(chǔ)上做擴(kuò)展功能,如時(shí)鐘顯示。 2. 方案論證 方案一: :用分立元件來做計(jì)算器系統(tǒng),分別用4x4鍵盤、加法器、移 位寄存器、譯碼器、存儲(chǔ)器、4個(gè)1位的共陰led顯示管;其中乘法運(yùn) 算是用加法和移位兩種操作實(shí)現(xiàn),除法運(yùn)算可用減法和移位操作來 實(shí)現(xiàn)。 方案二: :采用at89c51為核心,4x4的鍵盤,用共陰的四位來顯示 計(jì)算

5、數(shù)值,其中數(shù)碼管的段碼驅(qū)動(dòng)電路是選用74ls245,un2003來 做位選。經(jīng)過對兩個(gè)方案的比較,本設(shè)計(jì)運(yùn)用方案二來實(shí)現(xiàn)計(jì)算器 系統(tǒng)。 3電路的硬件設(shè)計(jì) 3.1 系統(tǒng)框圖 鍵盤輸入驅(qū)動(dòng)芯片數(shù)碼顯示at89c51 3.1 系統(tǒng)框圖系統(tǒng)框圖 3.2 微處理器的選擇 1控制中心用 at89c51 來實(shí)現(xiàn)。 2驅(qū)動(dòng)是用 74ls245 , un2003 來實(shí)現(xiàn)。 3顯示是用共陰的四位數(shù)碼管來完成。 4用 7805 來做穩(wěn)壓,提供+5v 電源(實(shí)際是+4.98v),符合設(shè)計(jì)的 要求。 3.3 電源模塊 圖3.3電源模塊 參數(shù)設(shè)置:變壓器選取原則:vi 比 vo 一般高出 2-6v;d1-d4 為 普通整

6、流二極管,d5 為發(fā)光二極管;c1 取 1000uf-4700uf 的電解電 容;c2,c4 取 0.1-1uf 的無極性的電容;c3 取 100-470uf;此系統(tǒng)的元 件參數(shù)如上圖 3.3。 在 7805 的 1,3 兩端可以在就加個(gè)二極管可以有效的保護(hù)電路, 在電流過大時(shí)候可以對 7805 的耐壓起到了保護(hù)作用一致于燒毀 7805 芯片。在 c1 的電容增大時(shí)可以提高電路的穩(wěn)壓效應(yīng),當(dāng)然也不 是說越大越是好。還的受其使用電路的制約,c2 是一個(gè)濾波電容可 以有效的濾掉高平信號(hào)產(chǎn)生的干擾。d5 是一個(gè)發(fā)光的二極管可以在 上電是看到電路是不是導(dǎo)通。c3 和 c4 構(gòu)成了電容的反饋有效的濾 低

7、平波和進(jìn)行保護(hù)電路。 3.4 at89c51 單片機(jī)參數(shù) vcc 正常的運(yùn)行的電壓是 5v 的電源,vss 為地端。i/o 總線, p0 口,p1 口,p2 口,p3 口。at89c51 是 mcs-51 產(chǎn)品的兼容型, rom、128 字節(jié) rom,32 根 i/o 引線,每根都可以獨(dú)立的使用。每個(gè) 的端口包含一個(gè) 8 位的數(shù)據(jù)鎖存和一個(gè)輸入緩沖器。輸出時(shí),數(shù)據(jù)可 以鎖存;輸入是,數(shù)據(jù)可以緩沖。作為一般的 i/o 口使用時(shí),在指令的 控制下,可以有三種基本的方式:輸入輸出和讀修改寫。在 at89c51 用作輸入端時(shí),將首先向引腳寫“1”而使內(nèi)部 mos 管截止 以便引腳處于懸浮狀態(tài),從而可獲

8、得高阻抗輸入。 引腳圖如下圖 圖 3.4 at89c51 單片機(jī)的注意事項(xiàng) 1 在把電流輸入單片機(jī)的過程中我們要做的事前有 4 步,第一:用萬 用表測電壓是不是在 5v+1.5v5v-1.5v 之間,因?yàn)殡妷禾髸?huì)給單片 機(jī)工作造成硬件的損害。電流要求是(1.5a0.5a)安全電流。第二步: 確保電壓輸入,電流的安全情況下。先斷電源,再插 89c51 芯片測量 各個(gè)端口電壓。第三:在各個(gè)端口的電壓在調(diào)試相關(guān)的用電器件達(dá)到 了規(guī)定的數(shù)值,然后就可以編程了。第四:要是出現(xiàn)電壓為 0v 的情況 我們就要首先查看有沒有虛焊的現(xiàn)象。 2 在 p0 口加上拉電阻(10k)目的是提供單片機(jī)的內(nèi)部電壓。因?yàn)閱?/p>

9、 片機(jī) p0 口內(nèi)部是由 cmos 管構(gòu)成的,電壓偏低,不能使單片機(jī) p0 口正常工作。 3.5 鍵盤的設(shè)計(jì) 1234 a b c d 4321 d c b a title numberrevisionsize a4 date:11-may-2007sheet of file:c:documents and settingsadministrator業(yè)業(yè)業(yè)業(yè)業(yè)mydesign.ddbdrawn by: s1 sw d pst s5 sw d pst s2 sw d pst s3 sw d pst s4 sw d pst s13 sw d pst s6 sw d pst s7 sw d pst

10、s8 sw d pst s10 sw d pst s9 sw d pst s12 sw d pst s11 sw d pst s14 sw d pst s16 sw d pst s15 sw d pst p1.0vcc p0.0p1.1 p0.1 p0.2 p1.2 p0.3 p0.4 p1.3 p0.5 p0.6 p1.4 p0.7 vpp p1.5 ale psen p1.6 p2.7 p2.6 p1.7 p2.5 p2.4 vpd p2.3 p2.2 p3.0 p2.1 p2.0 p3.1 p3.2 p3.3 p3.4 p3.5 p3.6 p3.7 txal2 txal1 vss jp1

11、 at 89c51 r1 2 r2 3 r3 4 r4 5 vcc 1 rp1 10k 圖 3.5 鍵盤的設(shè)計(jì) 圖是鍵盤設(shè)計(jì),采用 at89c51 芯片接口構(gòu)成 4x4 的的鍵盤,p1 口的高四位作為輸入,p1 口的低四位作為輸出.如果有鍵按下,則應(yīng) 輸出為低電平,否則輸出為高電平,通過這樣可以判斷按下什么鍵。 在鍵按下后,要有一定的延時(shí),防止由于鍵盤的抖動(dòng)而引起誤操作。 鍵盤電路設(shè)計(jì)說明: 1 在安裝前首先要確保開關(guān)沒有什么問題。 2 看電路有沒有短接的現(xiàn)象。 3 在把開關(guān)安裝好后要測一下看看有沒有虛焊。 4 在 p1 口的低四位都加了 10k 的電阻,把電壓拉高的目的。 3.6 復(fù)位電路的

12、設(shè)計(jì) 123456 a b c d 654321 d c b a title num berrevisionsize b date:24-apr-2007sheet of file:h:業(yè)業(yè)業(yè)業(yè)業(yè)業(yè)業(yè)m ydesign.ddbdrawn b y: c3 10uf r14 470 vc c r15 10k f1 圖3.6 復(fù)位電路的設(shè)計(jì) 圖中的rc為延時(shí)電路,只要rst端出現(xiàn)2個(gè)機(jī)器周期的高電平就可 以使單片機(jī)復(fù)位。單片機(jī)復(fù)位后rst端出現(xiàn)底電平。 3.7 振蕩電路的設(shè)計(jì) y1 crys tal c4 33pf c5 33pf t11 t12 圖3.7振蕩電路的設(shè)計(jì) 單片機(jī)芯片內(nèi)部設(shè)有一個(gè)反向放

13、大器所構(gòu)成的振蕩器,18腳和19 腳分別為振蕩電路的輸入端和輸出端,時(shí)鐘由內(nèi)部電路產(chǎn)生,定時(shí)器 件為石英晶體和電容組成的并聯(lián)諧振回路,電容c5,c6的取值在5 30pf;y1的取值在1.212m之間選取。 3.8 數(shù)碼顯示及驅(qū)動(dòng)電路 如圖所示,at89c51 的 p0 口用于數(shù)碼管的段選,由 74ls245 來驅(qū)動(dòng); p2 口用于數(shù)碼管的位選,由 uln2003 來驅(qū)動(dòng)。所用數(shù)碼管為共陰極 1234 a b c d 4321 d c b a title numberrevisionsize a4 date:13-may-2007sheet of file:c:documents and set

14、tingsadministrator業(yè)業(yè)業(yè)業(yè)業(yè)mydesign.ddbdrawn by: c7 104pf vcc p1.0vcc p0.0p1.1 p0.1 p0.2 p1.2 p0.3 p0.4 p1.3 p0.5 p0.6 p1.4 p0.7 vpp p1.5 ale psen p1.6 p2.7 p2.6 p1.7 p2.5 p2.4 vpd p2.3 p2.2 p3.0 p2.1 p2.0 p3.1 p3.2 p3.3 p3.4 p3.5 p3.6 p3.7 txal2 txal1 vss jp1 at 89c51 1 2 3 4 5 6 7 8 9 j33 co n9 p00 p0

15、1 p02 p03 p04 p05 p06 p07 p00 p01 p02 p03 p04 p05 p06 l1 l2 l3 l4 l1 l2 l3 l4 dir a1 a2 a3 a4 a5 a6 a7 a8 gn db8 b7 b6 b5 b4 b3 b2 b1 -g vcc j22 74ls245 int1 int2 int3 int4 int5 int6 int7 gn d out2 out3 out4 out5 out6 out7 out1 vcc j44 ul n2003 t1 t2 t3 t4 t5 t6 t7 h1 h2 h3 h4 l5 vcc vcc vcc p07 t8

16、a bf c g d e dp a bf c g d e dp a bf c g d e dp a bf c g d e dp 2 11 10 6 1 9 b s3 s2 f a s15 4 8 3 7 12 e d dp c g s4 q5 gongyin t1 t2 t3 t4 t5 t6 t7 h1 h2 h3 h4 t8 r111 470 r112 470 r113 470 r114 470 r115 470 r116 470 r117 470 r118 470 vcc 1 r1 2 r2 3 r3 4 r4 5 r5 6 r6 7 r7 8 r8 9 rp2 10k vcc 圖 3.

17、8 數(shù)碼顯示及驅(qū)動(dòng)電路 四位數(shù)碼管,段碼端為高電平有效,位碼端為低電平有效。 在設(shè)計(jì)驅(qū)動(dòng)電路時(shí),是把驅(qū)動(dòng)分成了兩部分,即斷碼驅(qū)動(dòng)和位驅(qū) 動(dòng)。 斷碼驅(qū)動(dòng)電路:芯片從單片機(jī)的 p0 口加上拉(10k)的電阻并且送 數(shù)據(jù)到 74ls245 芯片。位選擇驅(qū)動(dòng)電路:從單片機(jī)的 p2 口加上拉選 擇(10k)的電阻送數(shù)據(jù)到頭 un2003 芯片的低四位。在從低四位送數(shù) 據(jù)到數(shù)碼管。 4. 電路調(diào)試和結(jié)論 4.1 具體電路系統(tǒng)圖 s1 sw d pst s5 sw d pst s2 sw d pst s3 sw d pst s4 sw d pst s13 sw d pst s6 sw d pst s7 sw

18、 d pst s8 sw d pst s10 sw d pst s9 sw d pst s12 sw d pst s11 sw d pst s14 sw d pst s16 sw d pst s15 sw d pst c3 10ufy1 crystal c4 33pf c5 33pf c7 104pf vcc r14 470 vcc r15 10k r24 2.2k vcc d4 le d p1.0vcc p0.0p1.1 p0.1 p0.2 p1.2 p0.3 p0.4 p1.3 p0.5 p0.6 p1.4 p0.7 vpp p1.5 ale psen p1.6 p2.7 p2.6 p1.

19、7 p2.5 p2.4 vpd p2.3 p2.2 p3.0 p2.1 p2.0 p3.1 p3.2 p3.3 p3.4 p3.5 p3.6 p3.7 txal2 txal1 vss jp1 at 89c51 1 2 3 4 5 6 7 8 9 j33 co n9 p00 p01 p02 p03 p04 p05 p06 p07 p00 p01 p02 p03 p04 p05 p06 l1 l2 l3 l4 l1 l2 l3 l4 t11 t12 t11 t12 f1 f1 dir a1 a2 a3 a4 a5 a6 a7 a8 gn db8 b7 b6 b5 b4 b3 b2 b1 -g vc

20、c j22 74ls245 int1 int2 int3 int4 int5 int6 int7 gn d out2 out3 out4 out5 out6 out7 out1 vcc j44 ul n2003 t1 t2 t3 t4 t5 t6 t7 h1 h2 h3 h4 l5 l5 vcc vcc vcc p07 t8 r1 2 r2 3 r3 4 r4 5 vcc 1 rp1 10k a bf c g d e dp a bf c g d e dp a bf c g d e dp a bf c g d e dp 2 11 10 6 1 9 b s3 s2 f a s15 4 8 3 7

21、12 e d dp c g s4 q5 gongyin t1 t2 t3 t4 t5 t6 t7 h1 h2 h3 h4 t8 78 1 2 3 u? 78業(yè)業(yè)3業(yè)業(yè)業(yè)業(yè) 1 2 3 jp業(yè) 業(yè)業(yè)業(yè)業(yè) c11 0.1uf c14 0.1uf c15 0.1uf c16 0.1uf a a k k d12 1n4148 r111 470 r112 470 r113 470 r114 470 r115 470 r116 470 r117 470 r118 470 vcc 1 r1 2 r2 3 r3 4 r4 5 r5 6 r6 7 r7 8 r8 9 rp2 10k vcc 圖 4.1 具體電路

22、系統(tǒng)圖 4.2 復(fù)位電路的測試 經(jīng)過測試復(fù)位后,單片機(jī)的 1 腳電壓為 0,只是在復(fù)位的瞬間出 現(xiàn) 4.95 v 的高電平 ,從而使單片機(jī)復(fù)位。 在測試中,在上電后還會(huì)出現(xiàn)不能復(fù)位的現(xiàn)象,或者是復(fù)位跳變 (有時(shí)候可以復(fù)位有時(shí)候不能跳變)。分析情況有電容太小了,或者是 電容的保護(hù)電阻選擇不是很正確,通常電阻 4701k 而電容是 10u- 1000u。電容大電阻也要相應(yīng)的變大。在與單片機(jī)連接處還要加一個(gè) 10k 的電阻,電阻接地,使復(fù)位工作穩(wěn)定。 4.3 振蕩電路及端口測試 在電路中,我們用示波器看到晶振不能起振波形,對這樣的情況, 我們可查看硬件電路,一看:電容(33p104p)是不是有引腳沒

23、有接地, 二看:是不是存在虛焊。三看:單片機(jī)有沒有電流輸出。四測:把晶振 拿下來,再測是不是正常。 經(jīng)過測試單片機(jī) 4 腳電壓為 3.7v,5 腳的電壓為 2.2v;振蕩電路 的波形測試為 11.0522mhz 的正弦波。復(fù)位后的端口除 10 腳和 1 腳 為低電平 0v 外,其他腳為高電平 4.95v 4.4 電源的測試 電源通過示波器測試圖形如下: : 圖 4.4 電源的測試 電源在調(diào)試過程中 1 在穩(wěn)壓管前面的電容太小,出現(xiàn)電源的輸出不是很穩(wěn)定情況。 常在穩(wěn)壓管前面加的電容是有極限的 470u1000u 左右。 2 接通電源以后會(huì)出現(xiàn)穩(wěn)壓管很燙的現(xiàn)象,出現(xiàn)的情況可能是輸入 的電流功率太大

24、,也有可能是硬件的接法存在問題,基于第一種, 我們可以用人為的加一個(gè)煽熱片,保證穩(wěn)壓管的正常工作。第二 種可加入一個(gè)反向的穩(wěn)壓二級管,不讓穩(wěn)壓管燒壞。在穩(wěn)壓管的 后面還要加濾波電容和反饋電容。 4.5 數(shù)碼顯示電路及測試 在進(jìn)行調(diào)試過程中我們會(huì)發(fā)現(xiàn)數(shù)碼管顯示不是很正常,問題如: 比較的暗,顯示的斷碼不是很全面以及數(shù)碼顯示時(shí)出現(xiàn)閃動(dòng)的現(xiàn)象等。 下面簡要地描述一些解決問題的方法。 首先,檢查在編寫程序沒有出現(xiàn)編寫錯(cuò)誤的前提下,要從單片機(jī) 的輸出口查起,看看輸出值跟編寫的程序輸出值是不是相一致。接下 來就要看看各個(gè)端口連接處是不是有虛焊的存在。 再次,就要用萬用表測量電壓,電流的輸出結(jié)果,看看能不能

25、達(dá) 到可以讓數(shù)碼管正常工作,有擊穿的話就應(yīng)該立即更換。 最后,要是數(shù)碼管的相關(guān)的問題還是沒有解決,那就要看自己的 電路圖是不是存在問題,以及電阻選擇上的錯(cuò)誤。 5軟件設(shè)計(jì)部分 5.1 程序流程圖 初始化地址參數(shù) 輸出列掃描信號(hào) 列掃描信號(hào)移位 讀入行信號(hào) 時(shí)鐘記時(shí)間狀態(tài) 模式鍵再次按下 四列掃描完? 返回 模式鍵第一次 按下? 開始 計(jì)算器狀態(tài) 讀入鍵值執(zhí)行運(yùn)算操作 等于操作 終止 圖 5.1 程序流程圖 5.2 軟件設(shè)計(jì)總寬圖 顯示緩沖初始地址 led 顯 示 開 始 讀取鍵值 鍵值轉(zhuǎn)換為顯示數(shù) 判斷有鍵輸 入? 圖 5.2 軟件設(shè)計(jì)總寬圖 6本次設(shè)計(jì)的心得與體會(huì) 6.1 設(shè)計(jì)需考慮下列幾點(diǎn)

26、 1.盡可能選擇典型電路。 2.系統(tǒng)的擴(kuò)充與外圍裝置,應(yīng)充分滿足應(yīng)用系統(tǒng)的要求,并保留一些 擴(kuò)充槽,以便進(jìn)行第二次開發(fā)。 3硬件結(jié)構(gòu)應(yīng)結(jié)合應(yīng)用軟件一并考慮。軟件有執(zhí)行的功能盡可能用 軟件來執(zhí)行,以便簡化硬件結(jié)構(gòu)。但必須注意,用軟件執(zhí)行硬件的 功能,其響應(yīng)時(shí)間比直接使用硬件時(shí)間長,且占cpu時(shí)間。 4整個(gè)系統(tǒng)器件應(yīng)盡可能做到性能匹配,例如選用石英振蕩頻率較 高時(shí),應(yīng)選擇存儲(chǔ)速度較快的ic,選擇cmos單片機(jī)構(gòu)成低功耗系 統(tǒng)時(shí),系統(tǒng)ic都應(yīng)選擇低功耗的ic。 5可靠性及抗干擾設(shè)計(jì)是硬件設(shè)計(jì)極其重要的部分,包括器件選擇、 電路版布線、通道隔離等。 6單片機(jī)微處理器外接電路較多時(shí),必須考慮其驅(qū)動(dòng)能力,

27、驅(qū)動(dòng)能 力不足時(shí),系統(tǒng)工作不可靠,解決辦法是:增加驅(qū)動(dòng)能力或減小ic 功耗,降低總線負(fù)載。 6.2 硬件系統(tǒng)穩(wěn)定工作應(yīng)考慮的幾點(diǎn)問題 1.與外界容易產(chǎn)生干擾的輸入接點(diǎn),繼電器的輸出接點(diǎn)等器件部 分,采用光耦隔離,使外界雜散信號(hào)無法干擾 cpu 的運(yùn)行。 2.沒有使用的端口引腳應(yīng)接到一個(gè)固定的邏輯電位以免受到外界 的靜電干擾,導(dǎo)致 cpu 運(yùn)行失常而死機(jī)。 3易受雜散信號(hào)干擾處則接一個(gè) 0.01uf 的樹脂電容的機(jī)體外殼, 使雜散信號(hào)的尖峰毛刺經(jīng)此電容到外殼。 4每一顆 ic 的 vcc 與 gnd 之間一般接 0.01uf 到 0.1uf 的積層 電容以使電源的電壓波紋及雜散信號(hào)有所旁路同時(shí)可

28、以抵消電路 的電感性,使整個(gè)電路有較好的穩(wěn)定性。 5所設(shè)計(jì)的邏輯門盡量使用高速 cmos 型來配合 cpu 的快速動(dòng) 作要求。硬件設(shè)計(jì)時(shí)盡量使用商品化的設(shè)計(jì)電路,以減小個(gè)人開發(fā) 時(shí)間。 6.3 軟件編程注意事項(xiàng) 1編程時(shí)先畫流程圖,使編程思路更清晰 2. 嵌入?yún)R編語言的非主函數(shù)必須放在同主函數(shù)不同的文件中。放 在同一文件中時(shí),會(huì)在程序初始化時(shí)產(chǎn)生不能跳轉(zhuǎn)至主函數(shù)的錯(cuò) 誤。 3. 編程中,間接尋址要使用 dptr、pc、r0、r1 寄存器,寫入數(shù) 據(jù)時(shí)亦同,且不能寫入立即數(shù),而應(yīng)用寄存器,如 a。例子如下: mov r1, sp mov a, r1 mov a, #03h mov r1, a 4

29、. 堆棧壓入時(shí)指針為從低地址到高地址移動(dòng),先壓入高地址,后 壓入低地址,堆棧指針?biāo)笧榭?。函?shù)返回后,pc 修改為所彈出 的地址,由此可通過修改堆棧中的地址,而達(dá)成修改函數(shù)返回后 的運(yùn)行位置。 5.關(guān)于 movx 的使用。 對于 dptr 在程序運(yùn)行中不能直接賦值,由于沒有其他寄存器同 為 16 位,想直接賦值只能用直接數(shù)。但間接賦值很方便,把寄存 器內(nèi)容 mov 給 dph 和 dpl 賦值就可以了。在 movx 中,p0 與 p2 的值都只是在前半部分跳變一下,后面就不再輸出地址了,若 想將 p2 的數(shù)值鎖存,另需他法。ale 的信號(hào)亦同,但需注意,其 他命令也會(huì)導(dǎo)致 ale 的跳變,故不

30、可認(rèn)為使用 movx 之后,所 存器的輸出端會(huì)一直為 p0 所輸出的低地址。 6注意跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍,例如jz跳轉(zhuǎn)范圍為256個(gè)字節(jié),而 ajmp為2kb的跳轉(zhuǎn)范圍,當(dāng)碰到跳轉(zhuǎn)范圍不夠時(shí),可以想辦法搞 一個(gè)中間跳轉(zhuǎn)。先讓jz跳到某個(gè)位置,然后用ajmp去跳到所需要 跳的地方。 7編程時(shí)盡量優(yōu)化代碼。 6.4 c 語言編程與匯編編程的比較 1匯編語言是一種用文字助記符來表示機(jī)器指令的符號(hào)語言,是最 接近機(jī)器碼的一種語言。其主要優(yōu)點(diǎn)是占用資源少、程序執(zhí)行效率 高。但是不同的cpu,其匯編語言可能有所差異,所以不易移植。 2c語言是一種結(jié)構(gòu)化的高級語言。其優(yōu)點(diǎn)是可讀性好,移植容易, 是普遍使用的一

31、種計(jì)算機(jī)語言。缺點(diǎn)是占用資源較多,執(zhí)行效率沒 有匯編高。 3對于目前普遍使用的risc架構(gòu)的8bit mcu來說,其內(nèi)部 rom、ram、stack等資源都有限,如果使用c語言編寫,一條c 語言指令編譯后,會(huì)變成很多條機(jī)器碼,很容易出現(xiàn)rom空間不夠、 堆棧溢出等問題。而且一些單片機(jī)廠家也不一定能提供c編譯器。 而匯編語言,一條指令就對應(yīng)一個(gè)機(jī)器碼,每一步執(zhí)行什么動(dòng)作都 很清楚,并且程序大小和堆棧調(diào)用情況都容易控制,調(diào)試起來也比 較方便。所以在單片機(jī)開發(fā)中,還是采用匯編語言比較好。 而 c 語言是一種編譯型程序設(shè)計(jì)語言,它兼顧了多種高級語言的 特點(diǎn),并具備匯編語言的功能。c 語言有功能豐富的庫

32、函數(shù)、運(yùn) 算速度快、編譯效率高、有良好的可移植性,而且可以直接實(shí)現(xiàn) 對系統(tǒng)硬件的控制。c 語言是一種結(jié)構(gòu)化程序設(shè)計(jì)語言,它支持 當(dāng)前程序設(shè)計(jì)中廣泛采用的由頂向下結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)。此外, c 語言程序具有完善的模塊程序結(jié)構(gòu),從而為軟件開發(fā)中采用模 塊化程序設(shè)計(jì)方法提供了有力的保障。因此,使用 c 語言進(jìn)行程 序設(shè)計(jì)已成為軟件開發(fā)的一個(gè)主流。用 c 語言來編寫目標(biāo)系統(tǒng) 軟件,會(huì)大大縮短開發(fā)周期,且明顯地增加軟件的可讀性,便于 改進(jìn)和擴(kuò)充,從而研制出規(guī)模更大、性能更完備的系統(tǒng)。 4.深刻的理解了 at89c51 的芯片的功能。 5.學(xué)會(huì)用 74ls245 芯片, un2003 芯片的應(yīng)用。 6能夠

33、解決一些在設(shè)計(jì)過程中的存在問題,包括在軟件的設(shè)計(jì)。 7.掌握了設(shè)計(jì)過程中存在電路問題的分析方法。例如:怎么樣測試 芯片的好壞,電路在沒有電壓大于 5v 或小于 5v 時(shí)是怎么樣解決 問題,以及怎么樣用軟件來測試硬件的問題。 7本次課程設(shè)計(jì)已完成如下功能 1. 可以進(jìn)行兩位的數(shù)字計(jì)算加,減(可以顯示負(fù)數(shù)),乘,除功能。 2. 進(jìn)行電子時(shí)鐘計(jì)時(shí)(誤差 2ms)。 8結(jié)論: 本次設(shè)計(jì)完成對數(shù)字的兩位計(jì)算功能,其中還存在一些不足的地 方,在做除法運(yùn)算時(shí)也只能計(jì)算除數(shù)是被除數(shù)的整數(shù)倍的情況。在該 次設(shè)計(jì)還添加了電子時(shí)鐘的顯示功能。由于帶有 4x4 的鍵盤,對功能 的擴(kuò)展是完全可以實(shí)現(xiàn)的,只要用軟件設(shè)定功

34、能鍵就可以完成。今后 電子產(chǎn)品的發(fā)展也會(huì)順著多功能應(yīng)用的趨勢。 在設(shè)計(jì)與實(shí)現(xiàn)過程中,遇到了很多的困難。在老師和同學(xué)的幫助 下,本設(shè)計(jì)基本上實(shí)現(xiàn)了所要求的功能 ,能滿足題目的基本要求。盡 量做到了硬件電路簡單、穩(wěn)定。減少了電磁干擾及其它的環(huán)境干擾。充 分發(fā)揮了軟件編程的優(yōu)點(diǎn),減少了因元件精度不夠引起的誤差。 由于時(shí)間有限和我們本身知識(shí)水平的限制,我們一致認(rèn)為本系統(tǒng) 還有需要改進(jìn)和提高的地方。例如,選用精度更高的電子元器件,采用 更人性化的顯示、控制系統(tǒng)等,使硬件電路部分更加精確穩(wěn)定,選用更 加簡便的算法來進(jìn)一步的完善軟件部分。 參考文獻(xiàn) 1余錫存,曹國華.單片機(jī)原理及接口技術(shù). 西安電子科技大學(xué)

35、出版社, 2000。 2 閻石.數(shù)字電子技術(shù)基礎(chǔ)(第四版).高等教育出版社,1998。 3 童詩白,華成英.模擬電子技術(shù)基礎(chǔ)(第三版).高等教育出版社.2001 4朱善君,孫新亞.單片機(jī)接口技術(shù)與應(yīng)用.清華大學(xué)出版社,2005. 5曾一江.單片微機(jī)原理與接口技術(shù).科學(xué)出版社,2006. 6單片機(jī)無線數(shù)據(jù)通信ic原理與應(yīng)用 黃智偉 北航出版社 7單片機(jī)微型機(jī)原理接口應(yīng)用徐費(fèi)民 北京郵電大學(xué)出版社 附件 附錄一:pcb 的 3d 效果: 圖a(1) pcb 板三維圖 圖 a(2) 元?dú)怄I分派三維圖 圖 a(4) pcb 板 附錄二:總的程序 #include regx51.h #include i

36、ntrins.h #define uchar unsigned char #define uint unsigned int uchar code disptab=0 xb7,/*0*/0 xa0,/*1*/0 xd3,/*2*/0 xf1,/*3*/0 xe4,/*4*/0 x75,/ *5*/ 0 x77,/*6*/0 xa1,/*7*/0 xf7,/*8*/0 xf5/*9*/;/顯示器緩沖區(qū)段碼 /p10 到 p13 的鍵驅(qū)動(dòng)碼 /uchar code drive_code4=0 x7f,0 xdf,0 xbf,0 xef; /p1 口的鍵盤譯碼 uchar code key_yima

37、16=0 x77,0 xb7,0 xd7,0 xe7,0 x7b,0 xbb,0 xdb,0 xeb, 0 x7d,0 xbd,0 xdd,0 xed,0 x7e,0 xbe,0 xde,0 xee; / 第一操作數(shù) 第二操作數(shù) / 一秒到的標(biāo)志 運(yùn)算符標(biāo)志 負(fù)號(hào)標(biāo)志 uint second_flag, op,fuhao=0; / 時(shí)間存儲(chǔ)器/操作數(shù)存儲(chǔ)區(qū) uint data timebuf6=0,0,0,0,9,1,shuju24=0,0,0,0, 0,0,0,0; void mdelay(uint delay)/延時(shí) 1ms 子程序 uint s; for(;delay0;delay-)

38、for(s=0;s124;s+) ; /顯示掃描次數(shù)*顯示數(shù)據(jù)*位選口初值/ void timer0_init()/定時(shí)器 0 初始化子程序 ea=0; tr0=0; tmod=0 x01; th0=(65536-10000)/256; tl0=(65536-10000)%256; tr0=1; ea=1; et0=1; static void timer0_work(void) interrupt tf0_vector using 1/ 定時(shí)器 0 中斷子程序 th0=(65536-10000)/256; tl0=(65536-10000)%256; second_flag+; if(sec

39、ond_flag=100) timebuf0+=1; if(timebuf0=10)/分個(gè)位為十則清 0,分十位加 1 timebuf0=0;timebuf1+=1; if(timebuf1=6)/分十位為 6 則清 0,時(shí)個(gè)位加 1 timebuf1=0;timebuf2+=1; if(timebuf2=10)/十位為 4 則清 0,時(shí)十位加 1 timebuf2=0;timebuf3+; if(timebuf3=6)/時(shí)十位為 3 則清 0 timebuf3=0;timebuf4+; if(timebuf4=4)/時(shí)十位為 3 則清 0 timebuf3=0;timebuf5+; if(t

40、imebuf5=3)/時(shí)十位為 3 則清 0 timebuf5=0; second_flag=0; void time_disp(uint time1,uint wei1,uchar first1) /時(shí)間顯示子程序 uint scan_time1=0; p2=first1; if(time1=4) for(;scan_time1time1;scan_time1+) p0=disptabwei1(scan_time1+2); mdelay(2); p2=_crol_(p2,1); p0=0 x00; /段碼置 0,消影 void key_disp(uint wei,uchar first)/鍵

41、盤顯示子程序 static uint scan_time; p2=first; if(fuhao=0)/fuhao=0 表示顯示的數(shù)據(jù)是正數(shù) if(wei0=0)p0=0 xb7; else if(wei3=0)p0=disptabwei0; else if(wei3=0 for(scan_time=0;scan_time2;scan_time+) p0=disptabweiscan_time; mdelay(3); p2=_crol_(p2,1); p0=0 x00; /段碼置 0,消影 else if(wei3=0)/ 顯示* p2=first; for(scan_time=0;scan_

42、time3;scan_time+) p0=disptabweiscan_time; mdelay(3); p2=_crol_(p2,1); p0=0 x00; /段碼置 0,消影 else p2=first; for(scan_time=0;scan_time4;scan_time+) /顯示* p0=disptabweiscan_time; mdelay(3); p2=_crol_(p2,1); p0=0 x00; /段碼置 0,消影 else/否則 fuhao=1 表示顯示的數(shù)據(jù)是正數(shù) if(wei0=0)p0=0 xb7; else if(wei3=0) for(scan_time=0;

43、scan_time2;scan_time+) p0=disptabweiscan_time; mdelay(3); p2=_crol_(p2,1); p0=0 x00; /段碼置 0,消影 mdelay(3); p0=0 x40; mdelay(3); p0=0 x00; else if(wei3=0)/ 顯示* p2=first; for(scan_time=0;scan_time3;scan_time+) p0=disptabweiscan_time; mdelay(3); p2=_crol_(p2,1); p0=0 x00; /段碼置 0,消影 mdelay(3); p0=0 x40;

44、mdelay(3); p0=0 x00; else p2=first; for(scan_time=0;scan_time4;scan_time+) /顯示* p0=disptabweiscan_time; mdelay(3); p2=_crol_(p2,1); p0=0 x00; /段碼置 0,消影 mdelay(3); p2=_crol_(p2,1); p0=0 x40; /mdelay(3); /p0=0 x00; uchar key_search(void)/鍵盤譯碼數(shù)據(jù)獲取子程序 calculate(uint m)/計(jì)算器存儲(chǔ)子程序 uint result,temp0,temp1; temp0=shuju00+shuju01*10+shuju02*100+shuju0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論