版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 引言1.1 單片機的發(fā)展概況單片機以其高可靠性、高性價比、低電壓、低功耗等一系列優(yōu)點,近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表,及通訊設(shè)備、日常消費類產(chǎn)品、玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個環(huán)節(jié)以及人民生活的各層次中,如車間流水線控制、自動化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。管腳圖如圖1.1所示。圖1.1 at89c52單片機引腳圖(1) 電源地組vcc和vss;vcc(40)腳接+5v電壓;vss(20)腳接地(2) 時鐘電路組xtal1和xtal2(3) 控制信號組rst/ale/psen和ea(4) i/o端口p0, p1,
2、p2和p3近來,單片機的發(fā)展尤為迅猛,并且趨于高智能化、存儲器大量化、更多的外圍電路內(nèi)裝化以及工藝上的多元化等方向,廣泛應(yīng)用于單機應(yīng)用領(lǐng)域、多機應(yīng)用領(lǐng)域、自動控制領(lǐng)域和智能化控制領(lǐng)域等。單片機應(yīng)用系統(tǒng)的結(jié)構(gòu)通常分為三個層次,即單片機、單片機系統(tǒng)和單片機應(yīng)用系統(tǒng)。單片機通常指應(yīng)用系統(tǒng)主處理機,即所選擇的單片機器件等。單片機系統(tǒng)指按照單片機的技術(shù)要求和嵌入對象的資源要求而構(gòu)成的基本系統(tǒng)。時鐘電路、復(fù)位電路和擴展存儲器等與單片機共同構(gòu)成了單片機系統(tǒng)。單片機應(yīng)用系統(tǒng)指能滿足嵌入對象要求的全部電路系統(tǒng)。在單片機系統(tǒng)的基礎(chǔ)上加上面向?qū)ο蟮慕涌陔娐罚缜跋蛲ǖ?、后向通道、人機交互通道(鍵盤、顯示器、打印機等
3、)和串行通信口(rs232)以及應(yīng)用程序等。單片機應(yīng)用系統(tǒng)層次關(guān)系如圖1.2所示。單片機向后通道單片機系統(tǒng)單片機應(yīng)用系統(tǒng)向前通道人機交互通道應(yīng)用程序串行通信口圖1.2 單片機應(yīng)用系統(tǒng)三個層次的關(guān)系1.2 數(shù)字秒表的描述與分析1.21問題描述設(shè)計一個秒表,第一次按鍵,開始計數(shù),數(shù)碼管顯示從00.00每10毫秒自動加1;第兩二次按鍵,系統(tǒng)暫停計數(shù),數(shù)碼管顯示當(dāng)前的計數(shù);第三次按鍵系統(tǒng)清零,數(shù)碼管顯示00.00 。1.22設(shè)計要求1使用四位數(shù)碼管顯示,顯示時間00.0099.99秒;2正常計數(shù)時,每10毫秒自動加1;3一個按鍵(包括開始、暫停、清零),一個復(fù)位按鍵;4實現(xiàn)計數(shù)、復(fù)位、清零功能;5單片
4、機通電后,首先初始化。第一次按鍵用來控制秒表工作的開始;第二次按鍵用來暫停程序的運行;第三次按鍵用來進(jìn)行顯示器清零;復(fù)位鍵是用來對程序復(fù)位用的,當(dāng)程序出現(xiàn)死循環(huán)或想從00.00開始重新計時,按下復(fù)位鍵可返回程序開始,重新執(zhí)行。 2 設(shè)計目的及要求2.1 設(shè)計目的1建立數(shù)字電子電路系統(tǒng)的基本概念;2通過本次課程設(shè)計加深對單片機課程的全面認(rèn)識復(fù)習(xí)和掌握,對單片機課程的應(yīng)用進(jìn)一步的了解。3掌握定時器、外部中斷的設(shè)置和編程原理。4通過此次課程設(shè)計能夠?qū)纹瑱C軟硬件結(jié)合起來,對程序進(jìn)行編輯,校驗。 2.2 設(shè)計要求設(shè)計一個數(shù)字電子秒表,該秒表具有顯示功能和清零、開始計時、停止計時等功能。設(shè)計的要求如下:
5、1.以10毫秒為最小單位進(jìn)行顯示;2.秒表可顯示00.0099.99秒的量程;3.該秒表具有清零、開始計時、停止計時功能;3 系統(tǒng)硬件電路設(shè)計3.1數(shù)字秒表電路設(shè)計數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點,在計時中廣泛使用。本設(shè)計用單片機組成數(shù)字電子秒表,力求結(jié)構(gòu)簡單、精度高為目標(biāo)。設(shè)計中包括硬件電路的設(shè)計和系統(tǒng)程序的設(shè)計。其硬件電路主要有主控制器,計時與顯示電路和回零、啟動等。主控制器采用單片機at89c52,顯示電路采用四位共陽極led數(shù)碼管顯示計時時間。由于本實驗有四位數(shù)碼管,如果采用靜態(tài)顯示要占用全部的i/o端口,所以本次試驗采用靜態(tài)顯示,共使用12個引腳,即簡化了電路又節(jié)省了
6、原料。本設(shè)計利用at89c52單片機的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)開始和復(fù)位的功能。p2口輸出段碼數(shù)據(jù),74hc573用作驅(qū)動輸出,p1.0口接一個按鈕開關(guān),分別實現(xiàn)開始、暫停、清零功能。電路原理圖設(shè)計最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。秒表原理圖如圖3.1所示。圖3.1秒表原理圖3.2 電源電路電源電路是系統(tǒng)的最基本部分,任何部分都離不開電源部分,單片機系統(tǒng)也不例外,而且我們應(yīng)該高度重視電源部分,不能因為電源部分電路比較簡單而有所疏忽,其實有一半的故障或制作失敗都和電源有關(guān),電源部分做好才能保證電路的正常工作
7、。3.3 單片機晶振電路at89c52單片機內(nèi)部的振蕩電路是一個增益反相放大器,引線xyal1和xtal2分別為反相放大器的輸入和內(nèi)部時鐘電路輸入和來自反相放大器的輸出,該反相放大器可以配置為片內(nèi)振蕩器。單片機內(nèi)部雖然有震蕩電路,但要形成時鐘,外部還需要附加電路石晶振蕩和陶瓷振蕩均可采用,有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,單必須保證脈沖的高低電平要求的寬度。晶振電路如圖3.2、3.3所示。 圖3.2 內(nèi)部晶振電路 圖3.3 外部晶振電路單片機的時鐘產(chǎn)生方式有兩種,分別為:內(nèi)部時鐘方式和外部時鐘方式。利用其內(nèi)部的震蕩電路xtal1和xtal2外接定
8、時元件,內(nèi)部震蕩電路便產(chǎn)生自激震蕩,用示波器可以觀察到xtal2的輸出時鐘信號。在at89c52中通常用內(nèi)部時鐘方式,也就是在xtal1和xtal2之間連接晶體振蕩器與電容構(gòu)成穩(wěn)定的自激震蕩器。晶體和電容決定了單片機的工作精度為1微秒,晶體可在1.2-12mhz之間選擇。單片機在通常情況下,使用震蕩頻率為12mhz的石英晶體,而12mhz頻率主要是在高速串行通信情況才使用,在這里我們用的是12mhz的石英晶體。對電容無嚴(yán)格要求,但它在取值對震蕩頻率的輸出的穩(wěn)定性、大小及震蕩電路起震蕩速度有點影響。c1和c2可在10-100pf之間取值,一般情況下取30pf。外部時鐘方式是把外部震蕩信號源直接接
9、入xtal1或xtal2。由于xtal2的邏輯電平不是ttl,所以還要接上拉電阻。3.4 單片機復(fù)位電路單片機小系統(tǒng)采用上電自動復(fù)位和手動按鍵復(fù)位兩種方式實現(xiàn)系統(tǒng)的復(fù)位操作。上電復(fù)位要求接通電源后,自動實現(xiàn)復(fù)位操作。手動復(fù)位要求在電源接通的條件下,在單片機運行期間,如果發(fā)生死機,用按鈕開關(guān)操作使單片機復(fù)位。單片機要完成復(fù)位,必須向復(fù)位端輸出并持續(xù)兩個機器周期以上的高電平,從而實現(xiàn)復(fù)位操作。上電自動復(fù)位通過電容c1充電來實現(xiàn)和限流電阻r2。手動按鍵復(fù)位是通過按鍵將電阻r1與vcc接通來實現(xiàn)。r1作為上拉電阻,當(dāng)復(fù)位鍵按下是產(chǎn)生一個觸發(fā)脈沖,進(jìn)行復(fù)位操作。rst引腳是復(fù)位信號輸入端,復(fù)位信號為高電
10、平有效,其有效時間應(yīng)持續(xù)24個振蕩周期以上才能完成復(fù)位操作,若使用6mhz晶振,則需持續(xù)4s以上才能完成復(fù)位操作。如圖中在通電瞬間,由于rc的充電過程,在 rst端出現(xiàn)一定寬度的正脈沖,只要該正脈沖保持10ms以上,就能使單片機自動復(fù)位。圖3.4 復(fù)位電路圖3.5數(shù)碼管顯示系統(tǒng)電路3.51 數(shù)碼管的介紹微機化測控系統(tǒng)中常用的測量數(shù)據(jù)的顯示器有發(fā)光二極管顯示器(簡稱led或數(shù)碼管)和液晶顯示器(簡稱lcd)。這兩種顯示器都具有線路簡單、耗電少、成本低、壽命長等優(yōu)點,本系統(tǒng)輸出結(jié)果選用2個led顯示。led數(shù)碼管的外形結(jié)構(gòu)如圖2-4,外部有10個引腳,其中3, 8腳為公共端也稱位選端,其余8個引腳
11、稱為段選端,當(dāng)要使某一位數(shù)碼管顯示某一數(shù)字(0-9中的一個)必須在這個數(shù)碼管的段選端加上與數(shù)字顯示數(shù)字對應(yīng)的8位段選碼(也稱字形碼),在位選端加上低電平即可。led有共陰極和共陽極兩種。如圖2-4所示。二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管的陽極連接在一起,接入+5v的電壓。一位顯示器由8個發(fā)光二極管組成,其中7個發(fā)光二極管構(gòu)成字型“8”的各個筆劃(段)ag,另一個小數(shù)點為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。為了保護(hù)各段led不被損壞,需外加限流電阻。共陰極 共陽極圖 3.5 led數(shù)碼管結(jié)構(gòu)原理圖圖3.6 led數(shù)碼
12、管引腳圖數(shù)碼管顯示器有兩種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。為節(jié)省端口及降低功耗,本系統(tǒng)采用動態(tài)掃描顯示方式。動態(tài)掃描顯示方式需要解決多位led數(shù)碼管的“段控”和“位控”問題,本電路的通過p1口實現(xiàn):而每一位的公共端,即led數(shù)碼管的“位控”,則由p3口控制。這種連接方式由于多位字段線連在一起,因此,要想顯示不同的內(nèi)容,必然要采取輪流顯示的方式,即在某一瞬間,只讓其中的某一位的字位線處于選通狀態(tài),其它各位的字位線處于斷開狀態(tài),同時字段線上輸出這一位相應(yīng)要顯示字符的字段碼。在這一瞬時,只有這一位在顯示,其他幾位則暗。在本系統(tǒng)中,字位線的選通與否是通過pnp三極管的導(dǎo)通與截止來控制,即三
13、極管處于“開頭”狀態(tài)。使用led顯示器時,要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管加上一個小數(shù)點,共計8段。因此為led顯示器提供的編碼正好是一個字節(jié)。tx實驗板用共陰led顯示器,根據(jù)電路連接圖顯示16進(jìn)制數(shù)的編碼已列在下表。表3.1 led字形顯示代碼表字型共陽極段共陰極段字型共陽極段共陰極段0c0h3fh990h6fh1f9h06ha88h77h2a4h5bhb83h7ch3b0h4fhcc6h39h499h66hda1h5eh592h6dhe86h79h682h7dhf84h71h7f8h07h空白ffh00h880h7fhp8ch73h 3
14、.52 四位數(shù)碼管的介紹數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。四位數(shù)碼管陽=陰極連接在一起,陽極分開有各自的位選,動態(tài)顯示的特點是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動態(tài)掃描顯示。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應(yīng)略小于靜態(tài)顯
15、示電路中的。圖3.7四位數(shù)碼管原理圖圖3.8四位數(shù)碼管接線圖4 軟件設(shè)計4.1編程環(huán)境的介紹keilsoftware公司推出的uvision3是一款可用于多種8051mcu的集成開發(fā)環(huán)境(ide),該ide同時也是pk51及其它開發(fā)套件的一個重要組件。除增加了源代碼、功能導(dǎo)航器、模板編輯以及改進(jìn)的搜索功能外,uvision3還提供了一個配置向?qū)Чδ?,加速了啟動代碼和配置文件的生成。此外其內(nèi)置的仿真器可模擬目標(biāo)mcu,包括指令集、片上外圍設(shè)備及外部信號等。uvision3提供邏輯分析器,可監(jiān)控基于mcui/o引腳和外設(shè)狀態(tài)變化下的程序變量。uvision3提供對多種最新的8051類微處理器的支持
16、,包括analogdevices的aduc83x和aduc84x,以及infineon的xc866等4.11keil工程的建立首先啟動keil軟件的集成開發(fā)環(huán)境,這里假設(shè)讀者已正確安裝了該軟件,可以從桌面上直接雙擊 uvision 的圖標(biāo)以啟動該軟件。uvison 啟動后,程序窗口的左邊有一個工程管理窗口,該窗口有3個標(biāo)簽,分別是files、regs、和books,這三個標(biāo)簽頁分別顯示當(dāng)前項目的文件結(jié)構(gòu)、cpu的寄存器及部份特殊功能寄存器的值(調(diào)試時才出現(xiàn))和所選cpu的附加說明文件,如果是第一次啟動 keil,那么這三個標(biāo)簽頁全是空的。4.12源文件的建立使用菜單“file->new
17、”或者點擊工具欄的新建文件按 鈕,即可在項目窗口的右側(cè)打開一個新的文本編緝窗口, 在該窗口中輸入本實驗c語言源程序。 保存該文件,注意必須加上擴展名,這里假定將文件保存為text1.c。4.13建立工程文件在項目開發(fā)中,并不是僅有一個源程序就行了,還要為這個項目選擇 cpu(keil 支持?jǐn)?shù)百種cpu,而這些cpu的特性并不完全相同),指定調(diào)試的方式,有一些項目還會有多個文件組成等,為管理和使用方便,keil使用工程(project)這一概念,將這些參數(shù)設(shè)置和所需的所有文件都加在一個工程中,只能對工程而不能對單一的源程序進(jìn)行編譯和連接等操作,下面我們就一步一步地來建立工程。圖4.1選擇目標(biāo)cp
18、u點擊“project->new project ”菜單,出現(xiàn)一個對話框,要求給將要建立的工程起一個名字,你可以在編緝框中輸入一個名字,不需要擴展名。點擊“保存”按鈕,出現(xiàn)第二個對話框,如圖 2所示,這個對話框要求選擇目標(biāo)cpu(即你所用芯片的型號),keil 支持的cpu很多,我們選擇atmel公司的89c51芯 片。點擊atmel前面的“+”號,展開該層,點擊其中的89c52,然后再點擊“確定”按鈕,回到主界面,此時,在 工程窗口的文件頁中,出現(xiàn)了“target1”,前面有“+”號,點擊“+”號展開,可以看到下一層的“source group1”,這時的工程還是一個空的工程,里面什么
19、文件也沒有,需要手動把剛才編寫好的源程序加入,點擊“source group1”使 其反白顯示,然后,點擊鼠標(biāo)右鍵,出現(xiàn)一個下 拉菜單,如圖3所示。選中其中的“add file to group”source group1”,出現(xiàn)一個對話框,要求 尋找源文件,注意,該對話框下面的“文件類型”默認(rèn)為c source file(*.c),也就是以c為擴展名的文件。雙擊text1.c文件,將文件加入項目,注意,在文件加入項目后,該對話框并不消失,等待繼續(xù)加入其它文件,但初學(xué)時常會誤認(rèn)為操作沒有成功而再次雙擊同一文件,這時會出現(xiàn)如圖4.2所示的對話框,提 示你所選文件已在列表中,此時應(yīng)點擊“確定”,返
20、回前一對話框,然后點擊“close”即可返回主界面,返回后,點擊“source group 1”前的加號,會發(fā)現(xiàn)text1.c文件已在其中。雙擊文件名,即打開該源程序。圖4.2加入文件圖4.3重復(fù)加入文件的錯誤工程建立好以后,還要對工程進(jìn)行進(jìn)一步的設(shè)置,以滿足要求。首先點擊左邊project窗口的 target1,然后使用菜單“project->option for targettarget1”即出現(xiàn)對工程設(shè)置的對話框,這個對話框可謂非常復(fù)雜,共有8個頁面,要全部搞清可不容易,好在絕大部份設(shè)置項取默認(rèn)值就行了。圖4.4對目標(biāo)進(jìn)行設(shè)置設(shè)置對話框中的target頁面,如圖4.4所示,xtal
21、后面的數(shù)值是晶振頻率值,默認(rèn)值是所選目標(biāo)cpu的最高可用頻率值,對于我們所選的at89c52而言是12m,該數(shù)值與最終產(chǎn)生的目標(biāo)代碼無關(guān),僅用于軟件模擬調(diào)試時顯示程序執(zhí)行時間。正確設(shè)置該數(shù)值可使顯示時間與實際所用時間一致,一般將其設(shè)置成與你的硬件所用晶振頻率相同,如果沒必要了解程序執(zhí)行的時間,也可以不設(shè),這里設(shè)置為12。設(shè)置對話框中的output頁面,如圖4.5所示,這里面也有多個選擇項,其中creat hex file 用于生成可執(zhí)行代碼文件(可以用編程器寫入單片機芯片的hex格式文件,文件的擴展名為.hex),默認(rèn)情況下該項未被選中,如果要寫片做硬件實驗,就必須選中該項,這一點是初學(xué)者易疏
22、忽的,在此特別提醒注意。選中debug information 將會產(chǎn)生調(diào)試信息,這些信息用于調(diào)試,如果需要對程序進(jìn)行調(diào)試,應(yīng)當(dāng)選中該項。browse information是產(chǎn)生瀏覽信息,該信息可以用菜單view->browse 來查看,這里取默認(rèn)值。按鈕select folder for objects”是用來選擇最終的目標(biāo)文件所在的文件夾,默認(rèn)是與工程文件在同一個文件夾中。name of executable用于指定最終生成的目標(biāo)文件的名字,默認(rèn)與工程的名字相同,這兩 項一般不需要更改。工程設(shè)置對話框中的其它各頁面與c51編譯選項、a51的匯編選項、bl51連接器的連接選項等用法有
23、關(guān),這里均取默認(rèn)值,不作任何修改。以下僅對一些有關(guān)頁面中常用的選項作一個簡單介紹。圖4.5對輸出進(jìn)行控制listing標(biāo)簽頁用于調(diào)整生成的列表文件選項。在匯編或編譯完成后將產(chǎn)生(*.lst)的列表文件,在連接完成后也將產(chǎn)生(*.m51)的列表文件,該頁用于對列表文件的內(nèi)容和形式進(jìn)行細(xì)致的調(diào)節(jié),其中比較常用的選項是“c compile listing”下的“assamble code”項,選中該項可以在列表文件中生成c語言源程序所對應(yīng)的匯編代碼。圖4.6代碼生成控制c51標(biāo)簽頁用于對keil的c51編譯器的編譯過程進(jìn)行控制,其中比較常用的是“code optimization”組,如圖7所示,該
24、組中l(wèi)evel是優(yōu)化等級,c51在對源程序進(jìn)行編譯時,可以對代碼多至9級優(yōu)化,默認(rèn)使用第8級,一般不必修改,如果在編譯中出現(xiàn)一些問題,可以降低優(yōu)化級別試一試。emphasis是選擇編譯優(yōu)先方式,第一項是代碼量優(yōu)化(最終生成的代碼量小);第二項是速度優(yōu)先(最終生成的代碼速度快);第三項是缺省。默認(rèn)的是速度優(yōu)先,可根據(jù)需要更改。設(shè)置完成后按確認(rèn)返回主界面,工程文件建立、設(shè)置完畢。4.14編譯、連接圖4.7有關(guān)編譯、連接、項目設(shè)置的工具條在設(shè)置好工程后,即可進(jìn)行編譯、連接。選擇菜單project->build target,對當(dāng)前工程進(jìn)行連接,如果當(dāng)前文件已修改,軟件會先對該文件進(jìn)行編譯,然后
25、再連接以產(chǎn)生目標(biāo)代碼;如果選擇rebuild all target files將會對當(dāng)前工程中的所有文件重新進(jìn)行編譯然后再連接,確保最終生產(chǎn)的目標(biāo)代碼是最新的,而translate .項則僅對該文件進(jìn)行編譯,不進(jìn)行連接。以上操作也可以通過工具欄按鈕直接進(jìn)行。圖 8 是有關(guān)編譯、設(shè)置的工具欄按鈕,從左到右分別是:編譯、編譯連接、全部重建、停止編譯和對工程進(jìn) 行設(shè)置。編譯過程中的信息將出現(xiàn)在輸出窗口中的build頁中,如果源程序中有語法錯誤,會有錯誤報告出現(xiàn),雙擊該行,可以定位到出錯的位置,對源程序反復(fù)修改之后,最終會得到如圖4.8所示的結(jié)果,提示獲得了名為text1.hex的文件,該文件即可被編
26、程器讀入并寫到芯片中,同時還產(chǎn)生了一些其它相關(guān)的文件,可被用于keil的仿真與調(diào)試,這時可以進(jìn)入下一步調(diào)試的工作。圖4.8正確編譯、連接之后的結(jié)果4.2設(shè)計思想本設(shè)計采用了c語言編寫,由于c語言編程靈活,可移植性強。在一定程度上簡化了編程過程。模塊化結(jié)構(gòu)程序的設(shè)計,可以使系統(tǒng)軟件便于調(diào)試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計。4.3主程序設(shè)計 本系統(tǒng)程序主要模塊由主程序、定時中斷服務(wù)程序、外部中斷0服務(wù)程序組成。其中主程序是整個程序的主體。可以對各個中斷程序進(jìn)行調(diào)用。協(xié)調(diào)各個子程序之間的聯(lián)系。系統(tǒng)(上電)復(fù)位后,進(jìn)入主程序,主程序流程圖如圖8所示。當(dāng)外部中斷有請求則去執(zhí)行外部中斷服務(wù)
27、程序。并在執(zhí)行完后返回主程序。k=1temp+圖4.9主程序流程圖開始程序初始化temp=0k=2temp=tempk=0temp=0顯示數(shù)據(jù)4.4外部中斷程序設(shè)計中斷的概念cpu在處理某一事件a時,發(fā)生了另一事件b請求cpu迅速去處理(中斷發(fā)生);cpu暫時中斷當(dāng)前的工作,轉(zhuǎn)去處理事件b(中斷響應(yīng)和中斷服務(wù));待cpu將事件b處理完畢后,再回到原來事件a被中斷的地方繼續(xù)處理事件a(中斷返回),這一過程稱為中斷 。圖4.10 中斷程序子流程圖否k=2是k+int0中斷k=04.5 定時中斷程序設(shè)計4.51定時/計數(shù)器的結(jié)構(gòu) 定時/計數(shù)器的實質(zhì)是加1計數(shù)器(16位),由高8位和低8位兩個寄存器組
28、成。tmod是定時/計數(shù)器的工作方式寄存器,確定工作方式和功能;tcon是控制寄存器,控制t0、t1的啟動和停止及設(shè)置溢出標(biāo)志。4.52定時/計數(shù)器的原理加1計數(shù)器輸入的計數(shù)脈沖有兩個來源,一個是由系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)12分頻后送來;一個是t0或t1引腳輸入的外部脈沖源。每來一個脈沖計數(shù)器加1,當(dāng)加到計數(shù)器為全1時,再輸入一個脈沖就使計數(shù)器回零,且計數(shù)器的溢出使tcon中tf0或tf1置1,向cpu發(fā)出中斷請求(定時/計數(shù)器中斷允許時)。如果定時/計數(shù)器工作于定時模式,則表示定時時間已到;如果工作于計數(shù)模式,則表示計數(shù)值已滿。 可見,由溢出時計數(shù)器的值減去計數(shù)初值才是加1計數(shù)器的計數(shù)值。
29、否是中斷返回定時器t0入口地址調(diào)用數(shù)碼顯示子程序temp加1置初值定時器溢出中斷圖4.11定時器t0子程序流程圖4.6實驗程序at89c52顯示00.0099.99匯編語言程序。要實現(xiàn)四位數(shù)碼管顯示00.0099.99依次循環(huán)的秒表設(shè)計,必須得將at89c52芯片寫入程序,只有將程序?qū)戇M(jìn)at89c52芯片,才能實現(xiàn)其秒表的原理功能。4.61主函數(shù)設(shè)計void main()init();/初始化子程序while(1)if(k=0)init();/初始化子程序wela=1;/初始設(shè)置顯示00.00p2=0xff;wela=0;p0=0xc0; if(k=1)/第二次按鍵開始計數(shù)if(temp=99
30、99)/當(dāng)計數(shù)超過99.99秒時清零 temp=0; qian=temp/1000;/計算數(shù)碼管第一位bai=temp%1000/100;/計算數(shù)碼管第二位shi=temp%1000%100/10;/計算數(shù)碼管第三位ge=temp%10;/計算數(shù)碼管第四位display(qian,bai,shi,ge);/顯示時間else/第二次按鍵時停止qian=temp/1000;bai=temp%1000/100;shi=temp%1000%100/10;ge=temp%10;display(qian,bai,shi,ge); if(k=3)/第三次按鍵時清零k=0; 4.62中斷子程序設(shè)計void t
31、ime0() interrupt 0/中斷子程序k+;4.63延時子函數(shù)設(shè)計void delay(uint z)/延時子函數(shù)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);4.64顯示子程序設(shè)計void display(uint qian,uint bai,uint shi,uint ge)/顯示子函數(shù)wela=1;/顯示數(shù)碼管第一位p2=0x01;wela=0;p0=tableqian;delay(1); wela=1;/顯示數(shù)碼管第二位p2=0x02;wela=0;p0=table1bai;delay(1);wela=1;/顯示數(shù)碼管第三位p
32、2=0x04;wela=0;p0=tableshi;delay(1);wela=1;/顯示數(shù)碼管第四位p2=0x08;wela=0;p0=tablege;delay(1);4.65初始化子程序設(shè)計void init()/初始化子程序wela=0;temp=0;tmod=0x01; /設(shè)置定時器0為工作方式1th0=0xc8;tl0=0xf0;ea=1;/開總中斷et0=1; /開定時器0中斷tr0=1; /啟動定時器0ex0=1;it0=1;4.7 仿真結(jié)果仿真環(huán)境proteus 是英國labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于windows操作系統(tǒng)上,可以仿真、分析(spice)各種模擬器件和集成電路,該軟件的特點是:實現(xiàn)了單片機仿真和spice電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、rs232動態(tài)仿真、i2c調(diào)試器、spi調(diào)試器、鍵盤和lcd系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有:arm7(lpc21xx)、 8051/52系列、avr系列、pic10/12/16/18系列、hc11系列以及多種外圍芯片。提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年川味復(fù)合調(diào)味料合作協(xié)議書
- 2025年五年級品德教學(xué)工作總結(jié)模版(三篇)
- 2025年代理售后服務(wù)合同模板(2篇)
- 2025年代理加工合同標(biāo)準(zhǔn)版本(2篇)
- 2025年九年級語文下冊教學(xué)工作總結(jié)范文(二篇)
- 2025年個人簡易倉庫租賃合同(4篇)
- 2025年二手車賣車協(xié)議樣本(4篇)
- 2025年代理合作協(xié)議范例(三篇)
- 2025年人教版小學(xué)二年級語文下冊教學(xué)工作總結(jié)范文(二篇)
- 2025年個人工程勞務(wù)合同樣本(三篇)
- 中國古代文學(xué)史 馬工程課件(上)01總緒論
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質(zhì)量分級指南第1部分:鋼
- 上海中心大廈-介紹 課件
- 《口腔修復(fù)學(xué)》種植義齒-課件
- 非酒精性脂肪性肝病防治指南解讀課件
- 地理微格教學(xué)課件
- 合成氨操作規(guī)程
- 清華大學(xué)抬頭信紙
- 牛津譯林版六年級下冊單詞詞匯表匯總(完整打印版)
- JJF 1975-2022 光譜輻射計校準(zhǔn)規(guī)范
- Q∕SY 05268-2017 油氣管道防雷防靜電與接地技術(shù)規(guī)范
評論
0/150
提交評論