版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、桂 林 電 子 科 技 大 學(xué) 微 機(jī) 綜 合 設(shè) 計(jì) 設(shè) 計(jì) 報(bào) 告 指導(dǎo)老師:吳 兆 華 學(xué) 生:fdb 學(xué) 號(hào):1000150310目錄一、設(shè)計(jì)題目2二、設(shè)計(jì)內(nèi)容與要求2三、設(shè)計(jì)目的和意義2四、設(shè)計(jì)任務(wù)分析2五、系統(tǒng)硬件電路35.1 電路原理圖繪制75.1.1 電路圖繪制要點(diǎn)75.1.2 硬件電路制作85.2 硬件電路說(shuō)明85.2.1 單片機(jī)基本知識(shí)85.2.2 AT89S51單片機(jī)介紹11145.2.4 數(shù)碼管顯示電路部分17六、軟件設(shè)計(jì)20程序流程圖206.2程序源代碼22八、調(diào)試過(guò)程27 硬件調(diào)試278.1.1 靜態(tài)調(diào)試278.1.2 動(dòng)態(tài)調(diào)試278.2 軟件調(diào)試29 調(diào)試收獲與改
2、進(jìn)意見(jiàn)29九、設(shè)計(jì)總結(jié)30十、參考文獻(xiàn)31一、設(shè)計(jì)題目 用8031單片機(jī)控制可測(cè)方波1100Hz,并顯示每分鐘計(jì)數(shù)的脈沖。二、設(shè)計(jì)內(nèi)容與要求 設(shè)計(jì)方波脈沖控制顯示系統(tǒng),用51單片機(jī)控制輸出方波輸出,頻率范圍為1100Hz,并用數(shù)碼管顯示每分鐘計(jì)數(shù)的脈沖數(shù)和當(dāng)前頻率,用兩個(gè)按鍵分別控制頻率的增減,同時(shí)用一個(gè)復(fù)位鍵,可以快速回到起始狀態(tài)。三、設(shè)計(jì)目的和意義1、 通過(guò)方波脈沖控制系統(tǒng)的設(shè)計(jì),將單片機(jī)原理課上所學(xué)的知識(shí)融會(huì)貫通、加深理解。培養(yǎng)獨(dú)立設(shè)計(jì)、制作和調(diào)試單片機(jī)應(yīng)用系統(tǒng)的能力,熟悉單片機(jī)應(yīng)用系統(tǒng)的軟硬件調(diào)試方法和系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)過(guò)程,為今后的工作實(shí)踐活動(dòng)夯實(shí)基礎(chǔ)。2、 通過(guò)方波脈沖計(jì)數(shù)控制系統(tǒng)的設(shè)
3、計(jì),掌握51系列單片機(jī)的內(nèi)部定時(shí)/計(jì)數(shù)器的功能和使用方法;掌握單片機(jī)外部中斷的應(yīng)用和程序的編程方法;掌握數(shù)碼管的使用和編程方法。通過(guò)設(shè)計(jì)方案分析、選擇和設(shè)計(jì),設(shè)計(jì)并搭制硬件電路,編寫(xiě)控制程序等一系列工作,掌握單片機(jī)應(yīng)用的基本方法,更重要的是學(xué)會(huì)一種科學(xué)的解決問(wèn)題的邏輯思維,和完成任務(wù)的方法。3、 培養(yǎng)一個(gè)解決困難問(wèn)題的積極心態(tài),為今后在工作上奠定堅(jiān)實(shí)的基礎(chǔ)。四、設(shè)計(jì)任務(wù)分析設(shè)計(jì)題目要求用單片機(jī)控制可測(cè)方波脈沖1100Hz,并顯示每分鐘計(jì)數(shù)的脈沖數(shù)。由要求可知道,任務(wù)包括方波的產(chǎn)生和方波脈沖數(shù)的顯示兩個(gè)部分。方波由單片機(jī)內(nèi)部定時(shí)器來(lái)產(chǎn)生,通過(guò)改變其定時(shí)初值來(lái)改變方波的頻率,在硬件電路中可利用按鍵
4、來(lái)控制頻率的增減。方波的波形利用示波器來(lái)觀察。由此,可有幾個(gè)方案來(lái)實(shí)現(xiàn)題目的要求。方案一:51單片機(jī)最小系統(tǒng),外接上一個(gè)數(shù)碼管顯示電路用以顯示每分鐘的脈沖數(shù)。數(shù)碼管的斷碼選擇端直接與單片機(jī)的P0口連接,位碼選擇端與P2口連接。利用改變定時(shí)初值的方式來(lái)改變方波頻率。這個(gè)方案的優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,節(jié)省元器件,程序編寫(xiě)容易。但是缺點(diǎn)也明顯,只用一個(gè)數(shù)碼管,無(wú)法顯示當(dāng)前的脈沖頻率,而且無(wú)法用硬件實(shí)現(xiàn)頻率的+1,-1的變化。雖然實(shí)現(xiàn)了題目的基本功能,但是功能簡(jiǎn)單有限,也就達(dá)不到課程設(shè)計(jì)的目的了。以下是方案一的電路圖:圖1 方案一原理圖方案二:51單片機(jī)最小系統(tǒng),加上兩個(gè)數(shù)碼管顯示電路,分別顯示脈沖數(shù)和頻
5、率。此外,每個(gè)數(shù)碼管用74HC573數(shù)據(jù)鎖存器來(lái)驅(qū)動(dòng),增加兩個(gè)按鍵用來(lái)控制頻率的增減。這個(gè)方案的優(yōu)點(diǎn)是能利用數(shù)碼管顯示當(dāng)前的頻率和脈沖數(shù),并且能用按鍵控制頻率的大小。數(shù)碼管利用數(shù)據(jù)鎖存器驅(qū)動(dòng),驅(qū)動(dòng)能力更強(qiáng),還可以支持I/O口擴(kuò)展。缺點(diǎn)是,數(shù)碼管電路布線比較困難,跳線多。綜合分析以后,我們決定用方案二,雖然方案二難度相比方案一而言難度加大了,但是功能實(shí)現(xiàn)得很徹底。當(dāng)然,面對(duì)PCB布局布線的困難,我們只能采用雙面板的形式。我們也相信,這個(gè)對(duì)我們而言將更具挑戰(zhàn)性。下面就對(duì)方案二進(jìn)行詳細(xì)分析。五、系統(tǒng)硬件電路硬件電路主要包括51單片機(jī)最小系統(tǒng)(晶振電路和復(fù)位電路)、數(shù)碼管顯示電路。原理圖如下。圖1 5
6、1單片機(jī)最小系統(tǒng)原理圖圖2 51單片機(jī)最小系統(tǒng)PCB圖圖3 數(shù)碼管顯示電路原理圖圖4 數(shù)碼管顯示電路PCB圖圖5 元器件清單5.1 電路原理圖繪制5.1.1 電路圖繪制要點(diǎn)繪制電路原理圖要熟悉運(yùn)用繪制軟件(Protel 99 SE或者Altium Designer軟件),繪制的最終目的是得到美觀、清晰的圖。因而在繪制前根據(jù)需要,對(duì)繪圖環(huán)境參數(shù)設(shè)計(jì);繪制時(shí)正確元件載入(特別是元器件的封裝形式一定要選著正確)與編輯;元件載入后正確連線,調(diào)整得到美觀的原理圖電路圖繪制注意事項(xiàng):1、元器件之間連線用Wire命令而不是用Line命令,雖然從表面上看,兩者都是直線,只是顏色稍有些不同,但用Wire命令放置
7、的導(dǎo)線是具有電氣特性的,而用Line命令放置的直線是不具有電氣意義的,兩者具有根本區(qū)別的。2、注意理解說(shuō)明文字(Annotation)和網(wǎng)絡(luò)標(biāo)號(hào)(Net Label)的區(qū)別:說(shuō)明文字是沒(méi)有電氣特性的,只是純粹的文字解釋?zhuān)W(wǎng)絡(luò)標(biāo)號(hào)是有電氣特性的,它可以把電路圖具有相同網(wǎng)絡(luò)標(biāo)號(hào)的電氣連線是連在一起的,即在兩個(gè)以上沒(méi)有相互連接的網(wǎng)絡(luò)中,把應(yīng)該連接在一起的電氣連接點(diǎn)定義成相同的網(wǎng)絡(luò)標(biāo)號(hào),可以使它們?cè)陔姎夂x上屬于真正的同一網(wǎng)絡(luò)。 3、導(dǎo)線的端點(diǎn)與元件引腳的端點(diǎn)相連,而不是把導(dǎo)線和元件的引腳重疊,最常見(jiàn)的錯(cuò)誤是當(dāng)導(dǎo)線與元件引腳重疊時(shí),這時(shí)軟件會(huì)自動(dòng)在元件引腳的端點(diǎn)加一節(jié)點(diǎn),這時(shí)再
8、把節(jié)點(diǎn)刪除掉,認(rèn)為就這樣就正確了,實(shí)際上如果只是為了得到一張?jiān)韴D,這樣做并沒(méi)有什么不妥,但卻不能得到正確的網(wǎng)絡(luò)表。4、導(dǎo)線與導(dǎo)線之間不要有重疊。5、不要在同一地方放兩個(gè)以上相同的元件(如兩個(gè)電源地符號(hào)重疊在一起)。6、在放置電源地符號(hào)時(shí),電源地符號(hào)的顯示類(lèi)型(Style)為Power Ground,這時(shí)Power Port的屬性對(duì)話框中網(wǎng)絡(luò)標(biāo)號(hào)(Net)的內(nèi)容默認(rèn)是不顯示的,因此有些初學(xué)者在放置電源地符號(hào)時(shí),沒(méi)有留意網(wǎng)絡(luò)標(biāo)號(hào)的內(nèi)容,致使有網(wǎng)絡(luò)標(biāo)號(hào)(Net)的內(nèi)容網(wǎng)絡(luò)標(biāo)號(hào)為“GND”,有些網(wǎng)絡(luò)標(biāo)號(hào)的內(nèi)容卻為“VCC”,如果純粹只為得到一張?jiān)韴D,這樣做是沒(méi)有問(wèn)題的,但是若利
9、用自動(dòng)布線來(lái)設(shè)計(jì)PCB板時(shí),卻會(huì)造成電源和地短路,從而使整塊PCB板報(bào)廢。正確的做法是在放置電源地符號(hào)符號(hào),把Power Port的屬性對(duì)話框中網(wǎng)絡(luò)標(biāo)號(hào)(Net)的內(nèi)容全部設(shè)置為GND。 7、在繪制電路原理圖時(shí),通??偩€、總線分支線和網(wǎng)絡(luò)標(biāo)號(hào)是一起存在的,要注意總線和總線分支線不具有電氣特性的,而網(wǎng)絡(luò)標(biāo)號(hào)是具有電氣特性的,因此在放置總線時(shí)不能用加粗了的導(dǎo)線來(lái)替代,也不能用導(dǎo)線來(lái)替代總線分支線,總線分支線和元件引腳之間不能直接連在一起,而應(yīng)通過(guò)導(dǎo)線接在一起,網(wǎng)絡(luò)標(biāo)號(hào)應(yīng)放在導(dǎo)線上,不能放在元件引腳上,不能用說(shuō)明文字(Annotation)來(lái)替代網(wǎng)絡(luò)標(biāo)號(hào)(Net Label)。8
10、、元器件封必需要有合適的封裝方式。沒(méi)封裝會(huì)影響后面生產(chǎn)PCB原理圖。封裝形式不正確,后面生產(chǎn)PCB原理圖時(shí),期間的形式可能跟元器件的真實(shí)外形尺寸不相似。5.1.2 硬件電路制作 材料準(zhǔn)備 元器件測(cè)試 PCB制作組裝和焊接 測(cè)試5.2 硬件電路說(shuō)明5.2.1 單片機(jī)基本知識(shí)圖6 單片機(jī)的基本組成單片機(jī)各部分的組成及功能的說(shuō)明:(1)處理器單片機(jī)的中央處理器(CPU)是單片機(jī)的核心,完成運(yùn)算和控制操作。中央處理器主要包括運(yùn)算器和控制器兩部分。單片機(jī)CPU和通用微處理器基本相同,只是增加了“面向控制”的處理功能,如位處理、查表、多種跳轉(zhuǎn)等。(2)運(yùn)算器運(yùn)算器主要用來(lái)實(shí)現(xiàn)算術(shù)、邏輯運(yùn)算和位操作。其中包
11、括算術(shù)和邏輯運(yùn)算單元ALU、累加器ACC、B寄存器、程序狀態(tài)字PSW和兩個(gè)暫存器。ALU是運(yùn)算電路的核心,實(shí)質(zhì)上是一個(gè)全加器,完成基本算術(shù)和邏輯運(yùn)算。算術(shù)運(yùn)算包括加、減、乘、除、增量、減量、BCD碼運(yùn)算;邏輯運(yùn)算包括“與”、“或”、“異或”、左移位、右移位和半字節(jié)交換,以及位操作中的位置位、位復(fù)位和位取反等。暫存器1和暫存器2是ALU的兩個(gè)輸入,用于暫存參與運(yùn)算的數(shù)據(jù)。ALU的輸出也是兩個(gè):一個(gè)是累加器,數(shù)據(jù)經(jīng)運(yùn)算后,其結(jié)果又通過(guò)內(nèi)部總線返回到累加器;另一個(gè)是程序狀態(tài)字PSW,用于存儲(chǔ)運(yùn)算和操作結(jié)果的狀態(tài)。累加器是CPU使用最頻繁的一個(gè)寄存器。ACC既是ALU處理數(shù)據(jù)的來(lái)源,又是ALU運(yùn)算結(jié)果
12、的存放單元。CPU中的數(shù)據(jù)傳送大多通過(guò)累加器實(shí)現(xiàn),因此累加器又是數(shù)據(jù)的中轉(zhuǎn)站。如單片機(jī)與片外ROM或I/O擴(kuò)展口進(jìn)行數(shù)據(jù)交換必須通過(guò)ACC來(lái)進(jìn)行。B寄存器在乘法和除法指令中作為ALU的輸入之一,另一個(gè)輸入來(lái)自ACC。運(yùn)算結(jié)果存于AB寄存器對(duì)中。(3)控制器控制器是識(shí)別指令并根據(jù)指令性質(zhì)協(xié)調(diào)計(jì)算機(jī)內(nèi)各組成單元進(jìn)行工作的部件??刂破髦灰ǔ绦蛴?jì)數(shù)器PC、PC增量器、指令寄存器、指令譯碼器、定時(shí)及控制邏輯電路等。其功能是控制指令的讀入、譯碼和執(zhí)行,并對(duì)指令執(zhí)行過(guò)程進(jìn)行定時(shí)和邏輯控制。程序計(jì)數(shù)器PC(Program Counter)是控制器中最基本的寄存器,是一個(gè)獨(dú)立的計(jì)數(shù)器,存放著下一條將要從程序
13、存儲(chǔ)器中取出指令代碼的地址。PC的基本工作過(guò)程是:讀指令時(shí),PC將其內(nèi)容送給地址寄存器,作為所取指令的地址給程序存儲(chǔ)器,然后程序存儲(chǔ)器按此地址輸出指令字節(jié),同時(shí)PC自動(dòng)加1,指向下一條指令的地址。PC的變化軌跡決定了程序的流程。PC是不可訪問(wèn)的,順序執(zhí)行程序時(shí)自動(dòng)加1;執(zhí)行轉(zhuǎn)移程序時(shí),自動(dòng)將其內(nèi)容更改成指向轉(zhuǎn)移目的地址。程序計(jì)數(shù)器的計(jì)數(shù)寬度決定了程序存儲(chǔ)器的地址范圍。在AT89單片機(jī)中,PC是一個(gè)16位的計(jì)數(shù)器,可對(duì)64KB程序存儲(chǔ)器進(jìn)行尋址。復(fù)位時(shí)PC的內(nèi)容為0000H,說(shuō)明程序應(yīng)從程序存儲(chǔ)器0000H單元開(kāi)始執(zhí)行。指令寄存器是用來(lái)存放指令操作碼的專(zhuān)業(yè)寄存器。執(zhí)行程序時(shí),首先要從程序存儲(chǔ)器中
14、取出指令,送給指令寄存器;指令寄存器再將其輸出到指令譯碼器;指令譯碼器將該指令進(jìn)行譯碼,根據(jù)指令性質(zhì)送到定是邏輯和條件轉(zhuǎn)移邏輯電路,產(chǎn)生定時(shí)控制信號(hào),完成程序的執(zhí)行過(guò)程。定時(shí)及控制邏輯電路根據(jù)指令的性質(zhì)發(fā)出一系列定時(shí)和控制信號(hào),控制計(jì)算機(jī)個(gè)組成器件進(jìn)行相應(yīng)的操作,執(zhí)行指令。(4)存儲(chǔ)器單片機(jī)內(nèi)部的存儲(chǔ)器分為程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。程序存儲(chǔ)器主要用來(lái)存儲(chǔ)指令代碼和一些常數(shù)及表格。程序在開(kāi)發(fā)調(diào)試成功之后就永久性地駐留在程序存儲(chǔ)器中,在停機(jī)斷電狀態(tài)下代碼也不會(huì)丟失。程序存儲(chǔ)器在操作運(yùn)行過(guò)程中只讀不寫(xiě),因而又被稱(chēng)為只讀存儲(chǔ)器Rom(Read Only Memory)。標(biāo)準(zhǔn)型AT89單片機(jī)的程序存儲(chǔ)器采
15、用4KB的快速擦寫(xiě)存儲(chǔ)器Flash Memory,編程和擦除完全是電氣實(shí)現(xiàn)的。編程和擦除速度快,可以使用通用的編程器脫機(jī)編程,也可以在線編程。Flaash的應(yīng)用,是AT89系列單片機(jī)的顯著特點(diǎn)之一。在單片機(jī)中,用隨機(jī)存儲(chǔ)器RAM(Random Access Memory)來(lái)存儲(chǔ)程序運(yùn)行期間的工作變量和數(shù)據(jù),所以又稱(chēng)為數(shù)據(jù)存儲(chǔ)器。一定容量的RAM集成在單片機(jī)內(nèi),提高了單片機(jī)的運(yùn)行速度,也降低了功耗。標(biāo)準(zhǔn)型AT89單片機(jī)含有128×8位RAM,采用單字節(jié)地址。實(shí)際上片內(nèi)的字節(jié)地址空間是256個(gè)(00HFFH),其中高128字節(jié)地址(80HFFH)被特殊功能寄存器SFR占用,用戶只能使用低
16、128字節(jié)單元(00H7FH)來(lái)存放可讀/寫(xiě)的數(shù)據(jù)。(5)外圍接口電路CPU與外部設(shè)備的信息交換都要通過(guò)接口電路來(lái)進(jìn)行。這主要是為了解決CPU的高速處理能力和外部設(shè)備的低速運(yùn)行之間的速度匹配問(wèn)題,并可以有效地提高CPU的工作效率;同時(shí)也提高了CPU對(duì)外的驅(qū)動(dòng)能力。輸出接口電路具有鎖存器和驅(qū)動(dòng)器,輸入接口電路具有三態(tài)門(mén)控制,成為接口電路的基本特征。由于受集成度的影響,片內(nèi)存儲(chǔ)器和外圍接口電路的規(guī)模和數(shù)量都受到一定的限制。為了適應(yīng)外部復(fù)雜的控制功能,單片機(jī)具有較強(qiáng)的擴(kuò)展功能,可以方便地?cái)U(kuò)展外部存儲(chǔ)器ROM、RAM和I/O口等。(6)時(shí)鐘振蕩電路時(shí)鐘振蕩電路是CPU所需要的各種定時(shí)控制信號(hào)的必備單元
17、。CPU只有在時(shí)序信號(hào)和控制信號(hào)的協(xié)調(diào)工作下,才能執(zhí)行各種指令。單片機(jī)芯片內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需要外接。系統(tǒng)的主控芯片選用AT89S51單片機(jī)。AT89S51單片機(jī)是低功耗的、具有4KB在線可編程Flash存儲(chǔ)器的單片機(jī),與51系列單片機(jī)的指令系統(tǒng)和引腳兼容。片內(nèi)Flash可允許在線重新編程,也可使用通用非易失性存儲(chǔ)器編程器編程。它將通用CPU和在線可編程Flash集成在一個(gè)芯片上,形成了功能強(qiáng)大、使用靈活和具有較高性能價(jià)格比的微控制器。5.2.2 AT89S51單片機(jī)介紹 AT89S51單片機(jī)是美國(guó)ATMEL公司生產(chǎn)的低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4K bytes
18、的可系統(tǒng)編程的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度,非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序存儲(chǔ)器,既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強(qiáng)大,低價(jià)AT89S51單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。圖7 AT89S51引腳圖AT89S51引腳簡(jiǎn)介:VCC:供電電壓。GND:接地。 P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第
19、八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉
20、的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存 儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器 的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89S51的一些特殊功能口,如下表格所示: 表2 P3口管腳功能管腳功能管腳功能RXD(串行
21、輸入口)T0(計(jì)數(shù)器0外部輸入)P3. 1TXD(串行輸出口)T1(計(jì)數(shù)器1外部輸入)/WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器 時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),
22、ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí), /EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)
23、鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及89C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。1、AT89S51具有如下特點(diǎn):40個(gè)引腳,8k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存
24、取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。2、AT89S51的運(yùn)行模式 (1)空閑模式 在空閑模式下,CPU處于睡眠狀態(tài),振蕩器和所有片內(nèi)外圍電路仍然有效??臻e模式可由軟件設(shè)置進(jìn)入(設(shè)IDL1)。在這種模式下,片內(nèi)RAM和SFR中的內(nèi)容保持不變??臻e模式可通過(guò)任何一個(gè)允許中斷或硬件復(fù)位退出。 若用硬件復(fù)位方式結(jié)束空閑模式,則在片內(nèi)復(fù)位控制邏輯發(fā)生作用前長(zhǎng)達(dá)約兩個(gè)機(jī)器周期時(shí)間內(nèi),器件從斷點(diǎn)處開(kāi)始執(zhí)行程序。片內(nèi)硬件禁止訪問(wèn)內(nèi)部RAM,但不禁止訪問(wèn)端口。為避免采
25、用復(fù)位方式退出空閑模式時(shí)對(duì)端口的不應(yīng)有的訪問(wèn),在緊隨設(shè)置進(jìn)入空閑指令(即設(shè)IDL1)的后面,不能是寫(xiě)端口或外部RAM的指令。(2)掉電模式引起掉電模式的指令是執(zhí)行程序中的最后一條指令(使PD1的指令)。在掉電模式下,振蕩器停止工作,CPU和片內(nèi)所有外圍部件均停止工作,但片內(nèi)RAM和SFR中的內(nèi)容保留不變,直到掉電模式結(jié)束。 退出掉電模式可用硬件復(fù)位或任何一個(gè)有效的外部中斷INT0和INT1。復(fù)位可重新設(shè)置SFR中的內(nèi)容,但不改變片內(nèi)RAM中的內(nèi)容。在Vcc電源恢復(fù)到正常值并維持足夠長(zhǎng)的時(shí)間之后,允許振蕩器恢復(fù)并達(dá)到穩(wěn)定,方可進(jìn)行復(fù)位,以退出掉電模式。3、MCS-51系列單片機(jī)的并行I/O口接口
26、電路是微機(jī)必不可少的組成部分,并行輸入確出接口是CPU和外部進(jìn)行信息交換的主要通道。MSC51系列單片有4個(gè)8位并行雙向I/O口P0P3,共32根I/O線。每一根線能獨(dú)立用作輸入或輸出。單片機(jī)可以外接鍵盤(pán)、顯示器等外圍設(shè)備還可以進(jìn)行系統(tǒng)擴(kuò)展,以解決硬件資源不足問(wèn)題。4個(gè)并行口都是雙向口,既可以輸入又可以輸出。P0、P2口經(jīng)常作外部擴(kuò)展存儲(chǔ)器時(shí)的數(shù)據(jù)、地址線,P3口除作I/O口外,每一根都有第二功能。這4個(gè)I/O口結(jié)構(gòu)基本相同,但仍存在差別。(1) P1口是最常用的I/O口。如圖4所示,因?yàn)椴蛔鲾?shù)據(jù)地址線,其結(jié)構(gòu)中沒(méi)有數(shù)據(jù)地址線,也沒(méi)有多路開(kāi)關(guān)MUX,輸出驅(qū)動(dòng)電路接有上拉電阻。P1口輸入輸出時(shí)與
27、P0作I/O時(shí)相似,輸出數(shù)據(jù)時(shí)先寫(xiě)入鎖存器,經(jīng)Q端反相,再經(jīng)場(chǎng)效應(yīng)管反相輸出到引腳。輸入時(shí),先向鎖存器寫(xiě)l,使v管截止外部引腳信號(hào)由下方讀緩沖器送入內(nèi)部總線,完成讀引腳操作。P1口也可以讀鎖存器。外部提升電阻將引腳拉升至高電平,但輸人的低電平信號(hào)能將其拉低,不會(huì)影響低電平的輸入。圖8 P1口一位結(jié)構(gòu)(2)P3口為雙功能口,當(dāng)P3口作為通用I/O口使用時(shí),它為準(zhǔn)雙向口,且每位都可定義為輸入或輸出口,其工作原理同P1口類(lèi)似。 (3)P3口還具有第二功能,其引腳描述,P3口特殊功能口線特殊功能信號(hào)名稱(chēng)RXD串行輸入口TXD串行輸出口 外部中斷0輸入口 外部中斷1輸入口T0定時(shí)器0
28、外部輸入口T1定時(shí)器1外部輸入口WR寫(xiě)選通輸出口RD讀選通輸出口(1)晶振電路 圖9 晶振電路晶振是晶體振蕩器的簡(jiǎn)稱(chēng),在電氣上它可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn),以頻率的高低分其中較低的頻率是串聯(lián)諧振,較高的頻率是并聯(lián)諧振。由于晶體自身的特性致使這兩個(gè)頻率的距離相當(dāng)?shù)慕咏?,在這個(gè)極窄的頻率范圍內(nèi),晶振等效為一個(gè)電感,所以只要晶振的兩端并聯(lián)上合適的電容它就會(huì)組成并聯(lián)諧振電路。這個(gè)并聯(lián)諧振電路加到一個(gè)負(fù)反饋電路中就可以構(gòu)成正弦波振蕩電路,由于晶振等效為電感的頻率范圍很窄,所以即使其他元件的參數(shù)變化很大,這個(gè)振蕩器的頻率也不會(huì)有很大的變化。 晶振
29、有一個(gè)重要的參數(shù),那就是負(fù)載電容值,選擇與負(fù)載電容值相等的并聯(lián)電容,就可以得到晶振標(biāo)稱(chēng)的諧振頻率。 一般的晶振振蕩電路都是在一個(gè)反相放大器(注意是放大器不是反相器)的兩端接入晶振,再有兩個(gè)電容分別接到晶振的兩端,每個(gè)電容的另一端再接到地,這兩個(gè)電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容,請(qǐng)注意一般IC的引腳都有等效輸入電容,這個(gè)不能忽略。一般單片機(jī)中的晶振的負(fù)載電容為22pf或30pf ,如果再考慮元件引腳的等效輸入電容,則兩個(gè)30pf的電容構(gòu)成晶振的振蕩電路就是比較好的選擇。在單片機(jī)中,晶振電路的設(shè)計(jì)一定要和單片機(jī)靠近,路線盡量短,路線過(guò)長(zhǎng)有可能會(huì)導(dǎo)致工作不穩(wěn)定,時(shí)有時(shí)無(wú),而且還有盡量避免在高頻電路
30、附近工作。在89S51中晶振起振的兩端穩(wěn)定電壓是1.7V/2.1V,用的是兩個(gè)30Pf的電容。我們因此選擇兩個(gè)30Pf的電容與12MHZ的晶振一起構(gòu)成晶振回路。判斷單片機(jī)芯片及時(shí)鐘系統(tǒng)是否正常工作有一個(gè)簡(jiǎn)單的辦法,就是用萬(wàn)用表測(cè)量單片機(jī)晶振引腳(XTAL2、XTAL1腳)的對(duì)地電壓,以正常工作的單片機(jī)用數(shù)字萬(wàn)用表測(cè)量為例:XTAL2腳對(duì)地約2.24V, XTAL1腳對(duì)地約2.09V。對(duì)于懷疑是復(fù)位電路故障而不能正常工作的單片機(jī)也可以采用模擬復(fù)位的方法來(lái)判斷,單片機(jī)正常工作時(shí)第9腳對(duì)地電壓為零,可以用導(dǎo)線短時(shí)間和5V連接一下,模擬一下上電復(fù)位,如果單片機(jī)能正常工作了,說(shuō)明這個(gè)復(fù)位電路沒(méi)有問(wèn)題。電
31、源引腳Vcc和VssVcc:電源端,接5V。Vss:接地端。時(shí)鐘電路引腳XTAL1和XTAL2XTAL1:接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,若使用外部TTL時(shí)鐘時(shí),該引腳必須接地。XTAL2:接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出,若使用外部TTL時(shí)鐘時(shí),該引腳為外部時(shí)鐘的輸入端。系統(tǒng)擴(kuò)展時(shí),ALE用于控制地址鎖存器鎖存P0口輸出的低8位地址,從而實(shí)現(xiàn)數(shù)據(jù)與低位地址的復(fù)用。系統(tǒng)的時(shí)鐘電路設(shè)計(jì)是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路(如圖5所示)。AT89S單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放
32、大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個(gè)自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。對(duì)外接電容的值雖然沒(méi)有嚴(yán)格的要求,但電容的大小會(huì)影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應(yīng)盡可能的選擇陶瓷電容,電容值約為22F。在焊接刷電路板時(shí),晶體振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。外部程序存儲(chǔ)器讀選通信號(hào),是讀外部程序存儲(chǔ)器的選通信號(hào),低電平有效。程序存儲(chǔ)器地址允許輸入端 /VPP。 當(dāng)為高電平時(shí)
33、,CPU執(zhí)行片內(nèi)程序存儲(chǔ)器指令,但當(dāng)PC中的值超過(guò)0FFFH時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行片外程序存儲(chǔ)器指令。當(dāng)為低電平時(shí),CPU只執(zhí)行片外程序存儲(chǔ)器指令。輸入/輸出口引腳P0、P1、P2和P3。P0口():該端口為漏極開(kāi)路的8位準(zhǔn)雙向口,負(fù)載能力位8高LSTTL負(fù)載,它為8位地址線和8位數(shù)據(jù)線的復(fù)用端口。P1口():它是一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口,P1口的驅(qū)動(dòng)能力為4個(gè)LSTTL負(fù)載。P2口():它為一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口,P2口的驅(qū)動(dòng)能力也為4個(gè)LSTTL負(fù)載。在訪問(wèn)外部程序存儲(chǔ)器時(shí),它作存儲(chǔ)器的高8位地址線。P3口():P3口同樣是內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口,P3
34、口除了作為一般的I/O口使用之外,其還具有特殊功能。(2)復(fù)位電路復(fù)位使單片機(jī)處于起始狀態(tài),并從此狀態(tài)開(kāi)始運(yùn)行MCS5-51單片機(jī)RST引腳為復(fù)位端,該引腳連續(xù)保持2個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)以上的高電平。可使單片機(jī)復(fù)位。本文使用的是外部復(fù)位電路,單片機(jī)在啟動(dòng)后要從復(fù)位狀態(tài)開(kāi)始運(yùn)行,因此上電時(shí)要完成復(fù)位工作,稱(chēng)上電復(fù)位,如圖10a所示。上電瞬間電容兩端的電壓不能發(fā)生突變,只有RST端為高電平5v,上電后電容通過(guò)及RC電路放電RST端電壓逐漸下降,直至低電平0V,如圖10c所示。適當(dāng)選擇R、C的值,使RST端的高I電平維持2個(gè)機(jī)器周期以上即可完成復(fù)位。單片機(jī)L在運(yùn)行過(guò)程中,出于本身或外并干
35、擾的原因會(huì)導(dǎo)致出錯(cuò)。這時(shí)可按復(fù)位鍵以重新開(kāi)始遠(yuǎn)行,按鍵復(fù)位可分為按鍵電平復(fù)位或按健脈沖復(fù)位,如圖10b所示。按鍵脈沖復(fù)位和上電平復(fù)值的原理是一樣的,都是利用RC電路的放電原理,如圖10d所示。讓RST端能保持一段時(shí)間的高電平,以完成復(fù)位,按鍵電平復(fù)位時(shí),按鍵時(shí)間也應(yīng)保持在兩個(gè)機(jī)器周期以上。(a) 上電復(fù)位 (b) 按鍵電平復(fù)位 (c) RC放電過(guò)程 (d) 電平復(fù)位過(guò)程圖10 單片機(jī)常用復(fù)位電路5.2.4 數(shù)碼管顯示電路部分(1)74HC573介紹74HC573是一種包含八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器,常用于數(shù)碼管、按鍵等的控制,圖11是其引腳圖。圖11 74HC573引腳圖輸入是和標(biāo)準(zhǔn) CMOS
36、 輸出兼容的;加上拉電阻,他們能和 LS/ALSTTL 輸出兼容。當(dāng)鎖存使能端LE為高時(shí),這些器件的鎖存對(duì)于數(shù)據(jù)是透明的(也就是說(shuō)輸出同步)。當(dāng)鎖存使能變低時(shí),符合建立時(shí)間和保持時(shí)間的數(shù)據(jù)會(huì)被鎖存。×u36755X出能直接接到 CMOS,NMOS 和 TTL 接口上×u25805X作電壓××CMOS 器件的高噪聲抵抗特性·三態(tài)總線驅(qū)動(dòng)輸出·置數(shù)全并行存取·緩沖控制輸入·使能輸入有改善抗擾度的滯后作用原理說(shuō)明:M54HC563/74HC563/M54HC573/74HC573的八個(gè)鎖存器都是透明的D 型鎖存器,當(dāng)使能
37、(G)為高時(shí),Q 輸出將隨數(shù)據(jù)(D)輸入而變。當(dāng)使能為低時(shí),輸出將鎖存在已建立的數(shù)據(jù)電平上。輸出控制不影響鎖存器的內(nèi)部工作,即老數(shù)據(jù)可以保持,甚至當(dāng)輸出被關(guān)閉時(shí),新的數(shù)據(jù)也可以置入。這種電路可以驅(qū)動(dòng)大電容或低阻抗負(fù)載,可以直接與系統(tǒng)總線接口并驅(qū)動(dòng)總線,而不需要外接口。特別適用于緩沖寄存器,I/O 通道,雙向總線驅(qū)動(dòng)器和工作寄存器。數(shù)據(jù)鎖存當(dāng)輸入的數(shù)據(jù)消失時(shí),在芯片的輸出端,數(shù)據(jù)仍然保持; 這個(gè)概念在并行數(shù)據(jù)擴(kuò)展中經(jīng)常使用到。圖12 74HC573真值表1腳三態(tài)允許控制端低電平有效1D8D為數(shù)據(jù)輸入端1Q8Q為數(shù)據(jù)輸出端LE為鎖存控制端;OE為使能端圖13 74HC573內(nèi)部原理圖 (2)數(shù)碼管
38、介紹數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管。共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平
39、時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類(lèi)。 靜態(tài)顯示驅(qū)動(dòng):靜態(tài)驅(qū)動(dòng)也稱(chēng)直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×840根I/O端口來(lái)驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè)呢:),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電
40、路的復(fù)雜性。 動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每
41、位數(shù)碼管的點(diǎn)亮?xí)r間為12ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。圖14 四位數(shù)碼管引腳圖四位數(shù)碼管引腳如上圖所示,在實(shí)際判別中,讓有小數(shù)點(diǎn)的端對(duì)著自己,上面引腳的功能為1,a,f,2,3,b下面引腳為e,d,p,c,g,4。此次設(shè)計(jì)采用共陰極接法的數(shù)碼管,高電平點(diǎn)亮。通過(guò)軟件程序定義斷碼和位碼,通過(guò)74HC573鎖存器將斷碼和位碼送到數(shù)碼管即可控制各個(gè)位的數(shù)碼管顯示的數(shù)字。六、軟件設(shè)計(jì)程序流程圖6.2程序源
42、代碼#include"reg52.h"unsigned char count;unsigned char fenmu;/ fenmu用來(lái)表示方波頻率sbit pwm=P30;/ 表示脈沖電平狀態(tài)sbit jia=P37;sbit jian=P36;unsigned char jd,b;sbit dula=P26;sbit wela=P27;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/ 數(shù)碼管顯示斷碼定義voi
43、d delay(unsigned char i) unsigned char j,k;/ 按鍵消抖延時(shí) for(j=i;j>0;j-) for(k=125;k>0;k-);void Time0_Init()/ 內(nèi)部定時(shí)器0初始化、寫(xiě)入初值 TMOD=0X00; EA=1;/ CPU中斷開(kāi)放 TH0=(8192-4607)/32; TL0=(8192-4607)%32;/定時(shí)5ms TR0=1;/ 啟動(dòng)定時(shí)器0 ET0=1;/ 定時(shí)器0中斷允許void T0_time() interrupt 1/ 定時(shí)器中斷 TH0=(8192-4607)/32; TL0=(8192-4607)%3
44、2; if(count<(100/fenmu)/一個(gè)方波脈沖高電平時(shí)間為100/fenmu ms pwm=1; else pwm=0; count=(count+1); count=count%(200/fenmu); /方波周期為200/fenmu ms / 此方波的占空比為50%void keyscan() / 按鍵掃描if(jia=0)/ 按鍵按下時(shí)為低電平 delay(10);/ 調(diào)用消抖 if(jia=0) if(fenmu>=100) fenmu=99; count=0; fenmu=fenmu+1;while(jia=0); if(jian=0) delay(10);
45、 if(jian=0) if(fenmu<=1) fenmu=2; count=0; fenmu=fenmu-1;while(jian=0); void display()/共陰極數(shù)碼管顯示方波頻率以及每分鐘脈沖數(shù) unsigned char qian, bai,shi,ge,fqian, fbai,fshi,fge; unsigned int a; a=60*fenmu;/ 脈沖數(shù) qian=(a)/1000; bai =(a)%1000/100; shi =(a)%100/10; ge =(a)%10;/ 脈沖數(shù)數(shù)碼管顯示 fqian=fenmu/1000; fbai =fenmu%
46、1000/100; fshi =fenmu%100/10; fge =fenmu%10;/ 方波頻率數(shù)碼管顯示 dula=0; P0=tableqian; dula=1; dula=0; wela=0; P1=0xfe; wela=1; wela=0; delay(5); dula=0; P0=tablebai; dula=1; dula=0; wela=0; P1=0xfd; wela=1; wela=0; delay(5); dula=0; P0=tableshi; dula=1; dula=0; wela=0; P1=0xfb; wela=1; wela=0; delay(5); dul
47、a=0; P0=tablege; dula=1; dula=0; wela=0; P1=0xf7; wela=1; wela=0; delay(5); dula=0; P0=tablefqian; dula=1; dula=0; wela=0; P1=0xef; wela=1; wela=0; delay(5); dula=0; P0=tablefbai; dula=1; dula=0; wela=0; P1=0xdf; wela=1; wela=0; delay(5); dula=0; P0=tablefshi; dula=1; dula=0; wela=0; P1=0xbf; wela=1
48、; wela=0; delay(5); dula=0; P0=tablefge; dula=1; dula=0; wela=0; P1=0x7f; wela=1; wela=0; delay(5);void main()/ 本程序的思路是利用主函數(shù)調(diào)用各個(gè)功能模塊的子函數(shù)來(lái)實(shí)現(xiàn)所要求的功能 fenmu=1; count=0; Time0_Init(); while(1) keyscan(); display(); 七、系統(tǒng)功能分析與說(shuō)明設(shè)計(jì)題目要求用單片機(jī)控制可測(cè)方波1100HZ,并顯示每分鐘計(jì)數(shù)的脈沖數(shù)。我們所設(shè)計(jì)的系統(tǒng)用了兩個(gè)四位數(shù)碼管,一個(gè)用以顯示每分鐘脈沖數(shù),一個(gè)用以顯示方波頻率。同時(shí)
49、,用P3.6,P3.7口外接按鍵,按鍵每按下一次,方波頻率增(減)加1HZ,用P3.0口接示波器觀察波形。方波由單片機(jī)內(nèi)部定時(shí)器產(chǎn)生,方波的頻率通過(guò)硬件觸發(fā)軟件來(lái)改變,通過(guò)程序來(lái)設(shè)置方波高低電平的占空比。按題目的要求,在程序中設(shè)定了頻率從1100HZ,所以方波頻率最大只能為100HZ,最小顯示1HZ。即系統(tǒng)復(fù)位后,數(shù)碼管顯示的方波頻率為1HZ。若要產(chǎn)生頻率更大的方波,可以在源程序中設(shè)置。八、調(diào)試過(guò)程 硬件調(diào)試8.1.1 靜態(tài)調(diào)試電路的靜態(tài)調(diào)試主要是檢測(cè)線路通斷情況和元器件極性是否正確,還有就是各芯片是否插裝正確,是否與原理圖一致。將電源斷開(kāi),用萬(wàn)用表檢測(cè)所有電路導(dǎo)線是否都導(dǎo)通,以及是否發(fā)生短路
50、;對(duì)于需要連接PCB板兩面的焊點(diǎn)尤其要注意檢測(cè)板子兩面是否導(dǎo)通;芯片是通過(guò)芯片插座與基板連接,所以要注意檢測(cè)芯片引腳與焊盤(pán)是否導(dǎo)通;對(duì)于數(shù)碼管,也可以利用萬(wàn)用表來(lái)檢測(cè)其是否可以正常亮滅。8.1.2 動(dòng)態(tài)調(diào)試由于這個(gè)設(shè)計(jì)主要部分是單片機(jī)最小系統(tǒng)和數(shù)碼管顯示部分,所以調(diào)試的主要工作是對(duì)最小系統(tǒng)的調(diào)試。(1)晶振電路首先應(yīng)該確認(rèn)電源電壓是否正常。用電壓表測(cè)量接地引腳跟電源引腳之間的電壓,看是否是電源電壓,例如常用的5V。接下來(lái)就是檢查復(fù)位引腳電壓是否正常。分別測(cè)量按下復(fù)位按鈕和放開(kāi)復(fù)位按鈕的電壓值,看是否正確。然后再檢查晶振是否起振了,一般用示波器來(lái)看晶振引腳的波形,注意應(yīng)該使用示波器探頭的“X10
51、”檔。另一個(gè)辦法是測(cè)量復(fù)位狀態(tài)下的IO口電平,按住復(fù)位鍵不放,然后測(cè)量IO口(沒(méi)接外部上拉的P0口除外)的電壓,看是否是高電平,如果不是高電平,則多半是因?yàn)榫д駴](méi)有起振。另外還要注意的地方是,如果使用片內(nèi)ROM的話(大部分情況下如此,現(xiàn)在已經(jīng)很少有用外部擴(kuò)ROM的了),一定要將EA引腳拉高,否則會(huì)出現(xiàn)程序亂跑的情況。有時(shí)用仿真器可以,而燒入片子不行,往往是因?yàn)镋A引腳沒(méi)拉高的緣故(當(dāng)然,晶振沒(méi)起振也是原因之一)。經(jīng)過(guò)上面幾點(diǎn)的檢查,一般即可排除故障了。如果系統(tǒng)不穩(wěn)定的話,有時(shí)是因?yàn)殡娫礊V波不好導(dǎo)致的。在單片機(jī)的電源引腳跟地引腳之間接上一個(gè)0.1uF的電容會(huì)有所改善。如果電源沒(méi)有濾波電容的話,則
52、需要再接一個(gè)更大濾波電容,例如220uF的。遇到系統(tǒng)不穩(wěn)定時(shí),就可以并上電容試試(越靠近芯片越好)。(2)復(fù)位電路當(dāng)MCS-5l系列單片機(jī)的復(fù)位引腳RST(全稱(chēng)RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位和上電或開(kāi)關(guān)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。常用的上電復(fù)位電路如下圖A中左圖所示。圖中電容C1和電阻R1對(duì)電源十5V來(lái)說(shuō)構(gòu)成微分電路。上電后,保持RST一段高電平時(shí)間,由于單片機(jī)內(nèi)的等效電阻的作用,不用圖中電阻R1,也能達(dá)到上電復(fù)位的操作功能(3)單片機(jī)復(fù)
53、位后的狀態(tài)單片機(jī)的復(fù)位操作使單片機(jī)進(jìn)入初始化狀態(tài),其中包括使程序計(jì)數(shù)器PC0000H,這表明程序從0000H地址單元開(kāi)始執(zhí)行。單片機(jī)冷啟動(dòng)后,片內(nèi)RAM為隨機(jī)值,運(yùn)行中的復(fù)位操作不改變片內(nèi)RAM區(qū)中的內(nèi)容,21個(gè)特殊功能寄存器復(fù)位后的狀態(tài)為確定值,見(jiàn)下表。值得指出的是,記住一些特殊功能寄存器復(fù)位后的主要狀態(tài),對(duì)于了解單片機(jī)的初態(tài),減少應(yīng)用程序中的韌始化部分是十分必要的。A00H,表明累加器已被清零;特殊功能寄存器 初始狀態(tài) 特殊功能寄存器 初始狀態(tài) A 00H TMOD 00H B 00H TCON 00H PSW 00H TH0 00H SP 07H TL0 00H DPL 00H TH1
54、00H DPH 00H TL1 00H P0P3 FFH SBUF 不定 IP *00000B SCON 00H IE 0*00000B PCON 0*B PSW00H,表明選寄存器0組為工作寄存器組;SP07H,表明堆棧指針指向片內(nèi)RAM 07H字節(jié)單元,根據(jù)堆棧操作的先加后壓法則,第一個(gè)被壓入的內(nèi)容寫(xiě)入到08H單元中;Po-P3FFH,表明已向各端口線寫(xiě)入1,此時(shí),各端口既可用于輸入又可用于輸出;IP×××00000B,表明各個(gè)中斷源處于低優(yōu)先級(jí);IE0××00000B,表明各個(gè)中斷均被關(guān)斷;系統(tǒng)復(fù)位是任何微機(jī)系統(tǒng)執(zhí)行的第一步,使整個(gè)控制芯
55、片回到默認(rèn)的硬件狀態(tài)下。51單片機(jī)的復(fù)位是由RESET引腳來(lái)控制的,此引腳與高電平相接超過(guò)24個(gè)振蕩周期后,51單片機(jī)即進(jìn)入芯片內(nèi)部復(fù)位狀態(tài),而且一直在此狀態(tài)下等待,直到RESET引腳轉(zhuǎn)為低電平后,才檢查EA引腳是高電平或低電平,若為高電平則執(zhí)行芯片內(nèi)部的程序代碼,若為低電平便會(huì)執(zhí)行外部程序。51單片機(jī)在系統(tǒng)復(fù)位時(shí),將其內(nèi)部的一些重要寄存器設(shè)置為特定的值,(在特殊寄存器介紹時(shí)再做詳細(xì)說(shuō)明)至于內(nèi)部RAM內(nèi)部的數(shù)據(jù)則不變。8.2 軟件調(diào)試程序的編寫(xiě)我們使用的是Keil C51。Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 口腔科業(yè)務(wù)培訓(xùn)
- 口腔知識(shí)演講
- 口腔執(zhí)業(yè)醫(yī)師講座課件
- 口腔醫(yī)院院感知識(shí)
- 口腔主治病理課件
- 制作教程員工培訓(xùn)
- 口算小幫手課件
- 口技課件教學(xué)
- 商業(yè)銀行單位中關(guān)于小企業(yè)融資的研究分析
- 制作入門(mén)教師學(xué)前培訓(xùn)
- 企業(yè)安全生產(chǎn)責(zé)任培訓(xùn)課件
- 綠化防寒合同范本
- 2025年中國(guó)礦產(chǎn)資源集團(tuán)所屬單位招聘筆試參考題庫(kù)附帶答案詳解(3卷)
- 煙草山東公司招聘考試真題2025
- 海爾管理會(huì)計(jì)案例分析
- 水果合同供貨合同范本
- 酒吧宿舍管理制度文本
- 數(shù)字化教學(xué)平臺(tái)的數(shù)據(jù)隱私保護(hù)策略
- TCD經(jīng)顱多普勒課件
- 2025年考研英語(yǔ)真題試卷及答案
- 酒店治安安全管理制度范本
評(píng)論
0/150
提交評(píng)論