單片機(jī)課程設(shè)計(jì)基于單片機(jī)的數(shù)字秒表設(shè)計(jì)_第1頁(yè)
單片機(jī)課程設(shè)計(jì)基于單片機(jī)的數(shù)字秒表設(shè)計(jì)_第2頁(yè)
單片機(jī)課程設(shè)計(jì)基于單片機(jī)的數(shù)字秒表設(shè)計(jì)_第3頁(yè)
單片機(jī)課程設(shè)計(jì)基于單片機(jī)的數(shù)字秒表設(shè)計(jì)_第4頁(yè)
單片機(jī)課程設(shè)計(jì)基于單片機(jī)的數(shù)字秒表設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 引言1.1 單片機(jī)的發(fā)展概況單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表,及通訊設(shè)備、日常消費(fèi)類產(chǎn)品、玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié)以及人民生活的各層次中,如車間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。管腳圖如圖1.1所示。圖1.1 at89c52單片機(jī)引腳圖(1) 電源地組vcc和vss;vcc(40)腳接+5v電壓;vss(20)腳接地(2) 時(shí)鐘電路組xtal1和xtal2(3) 控制信號(hào)組rst/ale/psen和ea(4) i/o端口p0, p1,

2、p2和p3近來(lái),單片機(jī)的發(fā)展尤為迅猛,并且趨于高智能化、存儲(chǔ)器大量化、更多的外圍電路內(nèi)裝化以及工藝上的多元化等方向,廣泛應(yīng)用于單機(jī)應(yīng)用領(lǐng)域、多機(jī)應(yīng)用領(lǐng)域、自動(dòng)控制領(lǐng)域和智能化控制領(lǐng)域等。單片機(jī)應(yīng)用系統(tǒng)的結(jié)構(gòu)通常分為三個(gè)層次,即單片機(jī)、單片機(jī)系統(tǒng)和單片機(jī)應(yīng)用系統(tǒng)。單片機(jī)通常指應(yīng)用系統(tǒng)主處理機(jī),即所選擇的單片機(jī)器件等。單片機(jī)系統(tǒng)指按照單片機(jī)的技術(shù)要求和嵌入對(duì)象的資源要求而構(gòu)成的基本系統(tǒng)。時(shí)鐘電路、復(fù)位電路和擴(kuò)展存儲(chǔ)器等與單片機(jī)共同構(gòu)成了單片機(jī)系統(tǒng)。單片機(jī)應(yīng)用系統(tǒng)指能滿足嵌入對(duì)象要求的全部電路系統(tǒng)。在單片機(jī)系統(tǒng)的基礎(chǔ)上加上面向?qū)ο蟮慕涌陔娐罚缜跋蛲ǖ?、后向通道、人機(jī)交互通道(鍵盤(pán)、顯示器、打印機(jī)等

3、)和串行通信口(rs232)以及應(yīng)用程序等。單片機(jī)應(yīng)用系統(tǒng)層次關(guān)系如圖1.2所示。單片機(jī)向后通道單片機(jī)系統(tǒng)單片機(jī)應(yīng)用系統(tǒng)向前通道人機(jī)交互通道應(yīng)用程序串行通信口圖1.2 單片機(jī)應(yīng)用系統(tǒng)三個(gè)層次的關(guān)系1.2 數(shù)字秒表的描述與分析1.21問(wèn)題描述設(shè)計(jì)一個(gè)秒表,第一次按鍵,開(kāi)始計(jì)數(shù),數(shù)碼管顯示從00.00每10毫秒自動(dòng)加1;第兩二次按鍵,系統(tǒng)暫停計(jì)數(shù),數(shù)碼管顯示當(dāng)前的計(jì)數(shù);第三次按鍵系統(tǒng)清零,數(shù)碼管顯示00.00 。1.22設(shè)計(jì)要求1使用四位數(shù)碼管顯示,顯示時(shí)間00.0099.99秒;2正常計(jì)數(shù)時(shí),每10毫秒自動(dòng)加1;3一個(gè)按鍵(包括開(kāi)始、暫停、清零),一個(gè)復(fù)位按鍵;4實(shí)現(xiàn)計(jì)數(shù)、復(fù)位、清零功能;5單片

4、機(jī)通電后,首先初始化。第一次按鍵用來(lái)控制秒表工作的開(kāi)始;第二次按鍵用來(lái)暫停程序的運(yùn)行;第三次按鍵用來(lái)進(jìn)行顯示器清零;復(fù)位鍵是用來(lái)對(duì)程序復(fù)位用的,當(dāng)程序出現(xiàn)死循環(huán)或想從00.00開(kāi)始重新計(jì)時(shí),按下復(fù)位鍵可返回程序開(kāi)始,重新執(zhí)行。 2 設(shè)計(jì)目的及要求2.1 設(shè)計(jì)目的1建立數(shù)字電子電路系統(tǒng)的基本概念;2通過(guò)本次課程設(shè)計(jì)加深對(duì)單片機(jī)課程的全面認(rèn)識(shí)復(fù)習(xí)和掌握,對(duì)單片機(jī)課程的應(yīng)用進(jìn)一步的了解。3掌握定時(shí)器、外部中斷的設(shè)置和編程原理。4通過(guò)此次課程設(shè)計(jì)能夠?qū)纹瑱C(jī)軟硬件結(jié)合起來(lái),對(duì)程序進(jìn)行編輯,校驗(yàn)。 2.2 設(shè)計(jì)要求設(shè)計(jì)一個(gè)數(shù)字電子秒表,該秒表具有顯示功能和清零、開(kāi)始計(jì)時(shí)、停止計(jì)時(shí)等功能。設(shè)計(jì)的要求如下:

5、1.以10毫秒為最小單位進(jìn)行顯示;2.秒表可顯示00.0099.99秒的量程;3.該秒表具有清零、開(kāi)始計(jì)時(shí)、停止計(jì)時(shí)功能;3 系統(tǒng)硬件電路設(shè)計(jì)3.1數(shù)字秒表電路設(shè)計(jì)數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點(diǎn),在計(jì)時(shí)中廣泛使用。本設(shè)計(jì)用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡(jiǎn)單、精度高為目標(biāo)。設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,計(jì)時(shí)與顯示電路和回零、啟動(dòng)等。主控制器采用單片機(jī)at89c52,顯示電路采用四位共陽(yáng)極led數(shù)碼管顯示計(jì)時(shí)時(shí)間。由于本實(shí)驗(yàn)有四位數(shù)碼管,如果采用靜態(tài)顯示要占用全部的i/o端口,所以本次試驗(yàn)采用靜態(tài)顯示,共使用12個(gè)引腳,即簡(jiǎn)化了電路又節(jié)省了

6、原料。本設(shè)計(jì)利用at89c52單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開(kāi)始和復(fù)位的功能。p2口輸出段碼數(shù)據(jù),74hc573用作驅(qū)動(dòng)輸出,p1.0口接一個(gè)按鈕開(kāi)關(guān),分別實(shí)現(xiàn)開(kāi)始、暫停、清零功能。電路原理圖設(shè)計(jì)最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。秒表原理圖如圖3.1所示。圖3.1秒表原理圖3.2 電源電路電源電路是系統(tǒng)的最基本部分,任何部分都離不開(kāi)電源部分,單片機(jī)系統(tǒng)也不例外,而且我們應(yīng)該高度重視電源部分,不能因?yàn)殡娫床糠蛛娐繁容^簡(jiǎn)單而有所疏忽,其實(shí)有一半的故障或制作失敗都和電源有關(guān),電源部分做好才能保證電路的正常工作

7、。3.3 單片機(jī)晶振電路at89c52單片機(jī)內(nèi)部的振蕩電路是一個(gè)增益反相放大器,引線xyal1和xtal2分別為反相放大器的輸入和內(nèi)部時(shí)鐘電路輸入和來(lái)自反相放大器的輸出,該反相放大器可以配置為片內(nèi)振蕩器。單片機(jī)內(nèi)部雖然有震蕩電路,但要形成時(shí)鐘,外部還需要附加電路石晶振蕩和陶瓷振蕩均可采用,有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,單必須保證脈沖的高低電平要求的寬度。晶振電路如圖3.2、3.3所示。 圖3.2 內(nèi)部晶振電路 圖3.3 外部晶振電路單片機(jī)的時(shí)鐘產(chǎn)生方式有兩種,分別為:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。利用其內(nèi)部的震蕩電路xtal1和xtal2外接定

8、時(shí)元件,內(nèi)部震蕩電路便產(chǎn)生自激震蕩,用示波器可以觀察到xtal2的輸出時(shí)鐘信號(hào)。在at89c52中通常用內(nèi)部時(shí)鐘方式,也就是在xtal1和xtal2之間連接晶體振蕩器與電容構(gòu)成穩(wěn)定的自激震蕩器。晶體和電容決定了單片機(jī)的工作精度為1微秒,晶體可在1.2-12mhz之間選擇。單片機(jī)在通常情況下,使用震蕩頻率為12mhz的石英晶體,而12mhz頻率主要是在高速串行通信情況才使用,在這里我們用的是12mhz的石英晶體。對(duì)電容無(wú)嚴(yán)格要求,但它在取值對(duì)震蕩頻率的輸出的穩(wěn)定性、大小及震蕩電路起震蕩速度有點(diǎn)影響。c1和c2可在10-100pf之間取值,一般情況下取30pf。外部時(shí)鐘方式是把外部震蕩信號(hào)源直接接

9、入xtal1或xtal2。由于xtal2的邏輯電平不是ttl,所以還要接上拉電阻。3.4 單片機(jī)復(fù)位電路單片機(jī)小系統(tǒng)采用上電自動(dòng)復(fù)位和手動(dòng)按鍵復(fù)位兩種方式實(shí)現(xiàn)系統(tǒng)的復(fù)位操作。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。手動(dòng)復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,如果發(fā)生死機(jī),用按鈕開(kāi)關(guān)操作使單片機(jī)復(fù)位。單片機(jī)要完成復(fù)位,必須向復(fù)位端輸出并持續(xù)兩個(gè)機(jī)器周期以上的高電平,從而實(shí)現(xiàn)復(fù)位操作。上電自動(dòng)復(fù)位通過(guò)電容c1充電來(lái)實(shí)現(xiàn)和限流電阻r2。手動(dòng)按鍵復(fù)位是通過(guò)按鍵將電阻r1與vcc接通來(lái)實(shí)現(xiàn)。r1作為上拉電阻,當(dāng)復(fù)位鍵按下是產(chǎn)生一個(gè)觸發(fā)脈沖,進(jìn)行復(fù)位操作。rst引腳是復(fù)位信號(hào)輸入端,復(fù)位信號(hào)為高電

10、平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩周期以上才能完成復(fù)位操作,若使用6mhz晶振,則需持續(xù)4s以上才能完成復(fù)位操作。如圖中在通電瞬間,由于rc的充電過(guò)程,在 rst端出現(xiàn)一定寬度的正脈沖,只要該正脈沖保持10ms以上,就能使單片機(jī)自動(dòng)復(fù)位。圖3.4 復(fù)位電路圖3.5數(shù)碼管顯示系統(tǒng)電路3.51 數(shù)碼管的介紹微機(jī)化測(cè)控系統(tǒng)中常用的測(cè)量數(shù)據(jù)的顯示器有發(fā)光二極管顯示器(簡(jiǎn)稱led或數(shù)碼管)和液晶顯示器(簡(jiǎn)稱lcd)。這兩種顯示器都具有線路簡(jiǎn)單、耗電少、成本低、壽命長(zhǎng)等優(yōu)點(diǎn),本系統(tǒng)輸出結(jié)果選用2個(gè)led顯示。led數(shù)碼管的外形結(jié)構(gòu)如圖2-4,外部有10個(gè)引腳,其中3, 8腳為公共端也稱位選端,其余8個(gè)引腳

11、稱為段選端,當(dāng)要使某一位數(shù)碼管顯示某一數(shù)字(0-9中的一個(gè))必須在這個(gè)數(shù)碼管的段選端加上與數(shù)字顯示數(shù)字對(duì)應(yīng)的8位段選碼(也稱字形碼),在位選端加上低電平即可。led有共陰極和共陽(yáng)極兩種。如圖2-4所示。二極管的陰極連接在一起,通常此公共陰極接地,而共陽(yáng)極則將發(fā)光二極管的陽(yáng)極連接在一起,接入+5v的電壓。一位顯示器由8個(gè)發(fā)光二極管組成,其中7個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆劃(段)ag,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正向電壓時(shí),該段筆劃即亮;不加電壓則暗。為了保護(hù)各段led不被損壞,需外加限流電阻。共陰極 共陽(yáng)極圖 3.5 led數(shù)碼管結(jié)構(gòu)原理圖圖3.6 led數(shù)碼

12、管引腳圖數(shù)碼管顯示器有兩種工作方式,即靜態(tài)顯示方式和動(dòng)態(tài)掃描顯示方式。為節(jié)省端口及降低功耗,本系統(tǒng)采用動(dòng)態(tài)掃描顯示方式。動(dòng)態(tài)掃描顯示方式需要解決多位led數(shù)碼管的“段控”和“位控”問(wèn)題,本電路的通過(guò)p1口實(shí)現(xiàn):而每一位的公共端,即led數(shù)碼管的“位控”,則由p3口控制。這種連接方式由于多位字段線連在一起,因此,要想顯示不同的內(nèi)容,必然要采取輪流顯示的方式,即在某一瞬間,只讓其中的某一位的字位線處于選通狀態(tài),其它各位的字位線處于斷開(kāi)狀態(tài),同時(shí)字段線上輸出這一位相應(yīng)要顯示字符的字段碼。在這一瞬時(shí),只有這一位在顯示,其他幾位則暗。在本系統(tǒng)中,字位線的選通與否是通過(guò)pnp三極管的導(dǎo)通與截止來(lái)控制,即三

13、極管處于“開(kāi)頭”狀態(tài)。使用led顯示器時(shí),要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對(duì)數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì)8段。因此為led顯示器提供的編碼正好是一個(gè)字節(jié)。tx實(shí)驗(yàn)板用共陰led顯示器,根據(jù)電路連接圖顯示16進(jìn)制數(shù)的編碼已列在下表。表3.1 led字形顯示代碼表字型共陽(yáng)極段共陰極段字型共陽(yáng)極段共陰極段0c0h3fh990h6fh1f9h06ha88h77h2a4h5bhb83h7ch3b0h4fhcc6h39h499h66hda1h5eh592h6dhe86h79h682h7dhf84h71h7f8h07h空白ffh00h880h7fhp8ch73h 3

14、.52 四位數(shù)碼管的介紹數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。四位數(shù)碼管陽(yáng)=陰極連接在一起,陽(yáng)極分開(kāi)有各自的位選,動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動(dòng)態(tài)掃描顯示。所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。動(dòng)態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯

15、示電路中的。圖3.7四位數(shù)碼管原理圖圖3.8四位數(shù)碼管接線圖4 軟件設(shè)計(jì)4.1編程環(huán)境的介紹keilsoftware公司推出的uvision3是一款可用于多種8051mcu的集成開(kāi)發(fā)環(huán)境(ide),該ide同時(shí)也是pk51及其它開(kāi)發(fā)套件的一個(gè)重要組件。除增加了源代碼、功能導(dǎo)航器、模板編輯以及改進(jìn)的搜索功能外,uvision3還提供了一個(gè)配置向?qū)Чδ?,加速了啟?dòng)代碼和配置文件的生成。此外其內(nèi)置的仿真器可模擬目標(biāo)mcu,包括指令集、片上外圍設(shè)備及外部信號(hào)等。uvision3提供邏輯分析器,可監(jiān)控基于mcui/o引腳和外設(shè)狀態(tài)變化下的程序變量。uvision3提供對(duì)多種最新的8051類微處理器的支持

16、,包括analogdevices的aduc83x和aduc84x,以及infineon的xc866等4.11keil工程的建立首先啟動(dòng)keil軟件的集成開(kāi)發(fā)環(huán)境,這里假設(shè)讀者已正確安裝了該軟件,可以從桌面上直接雙擊 uvision 的圖標(biāo)以啟動(dòng)該軟件。uvison 啟動(dòng)后,程序窗口的左邊有一個(gè)工程管理窗口,該窗口有3個(gè)標(biāo)簽,分別是files、regs、和books,這三個(gè)標(biāo)簽頁(yè)分別顯示當(dāng)前項(xiàng)目的文件結(jié)構(gòu)、cpu的寄存器及部份特殊功能寄存器的值(調(diào)試時(shí)才出現(xiàn))和所選cpu的附加說(shuō)明文件,如果是第一次啟動(dòng) keil,那么這三個(gè)標(biāo)簽頁(yè)全是空的。4.12源文件的建立使用菜單“file-new ”或者點(diǎn)

17、擊工具欄的新建文件按 鈕,即可在項(xiàng)目窗口的右側(cè)打開(kāi)一個(gè)新的文本編緝窗口, 在該窗口中輸入本實(shí)驗(yàn)c語(yǔ)言源程序。 保存該文件,注意必須加上擴(kuò)展名,這里假定將文件保存為text1.c。4.13建立工程文件在項(xiàng)目開(kāi)發(fā)中,并不是僅有一個(gè)源程序就行了,還要為這個(gè)項(xiàng)目選擇 cpu(keil 支持?jǐn)?shù)百種cpu,而這些cpu的特性并不完全相同),指定調(diào)試的方式,有一些項(xiàng)目還會(huì)有多個(gè)文件組成等,為管理和使用方便,keil使用工程(project)這一概念,將這些參數(shù)設(shè)置和所需的所有文件都加在一個(gè)工程中,只能對(duì)工程而不能對(duì)單一的源程序進(jìn)行編譯和連接等操作,下面我們就一步一步地來(lái)建立工程。圖4.1選擇目標(biāo)cpu點(diǎn)擊“

18、project-new project ”菜單,出現(xiàn)一個(gè)對(duì)話框,要求給將要建立的工程起一個(gè)名字,你可以在編緝框中輸入一個(gè)名字,不需要擴(kuò)展名。點(diǎn)擊“保存”按鈕,出現(xiàn)第二個(gè)對(duì)話框,如圖 2所示,這個(gè)對(duì)話框要求選擇目標(biāo)cpu(即你所用芯片的型號(hào)),keil 支持的cpu很多,我們選擇atmel公司的89c51芯 片。點(diǎn)擊atmel前面的“+”號(hào),展開(kāi)該層,點(diǎn)擊其中的89c52,然后再點(diǎn)擊“確定”按鈕,回到主界面,此時(shí),在 工程窗口的文件頁(yè)中,出現(xiàn)了“target1”,前面有“+”號(hào),點(diǎn)擊“+”號(hào)展開(kāi),可以看到下一層的“source group1”,這時(shí)的工程還是一個(gè)空的工程,里面什么文件也沒(méi)有,需要

19、手動(dòng)把剛才編寫(xiě)好的源程序加入,點(diǎn)擊“source group1”使 其反白顯示,然后,點(diǎn)擊鼠標(biāo)右鍵,出現(xiàn)一個(gè)下 拉菜單,如圖3所示。選中其中的“add file to group”source group1”,出現(xiàn)一個(gè)對(duì)話框,要求 尋找源文件,注意,該對(duì)話框下面的“文件類型”默認(rèn)為c source file(*.c),也就是以c為擴(kuò)展名的文件。雙擊text1.c文件,將文件加入項(xiàng)目,注意,在文件加入項(xiàng)目后,該對(duì)話框并不消失,等待繼續(xù)加入其它文件,但初學(xué)時(shí)常會(huì)誤認(rèn)為操作沒(méi)有成功而再次雙擊同一文件,這時(shí)會(huì)出現(xiàn)如圖4.2所示的對(duì)話框,提 示你所選文件已在列表中,此時(shí)應(yīng)點(diǎn)擊“確定”,返回前一對(duì)話框,然

20、后點(diǎn)擊“close”即可返回主界面,返回后,點(diǎn)擊“source group 1”前的加號(hào),會(huì)發(fā)現(xiàn)text1.c文件已在其中。雙擊文件名,即打開(kāi)該源程序。圖4.2加入文件圖4.3重復(fù)加入文件的錯(cuò)誤工程建立好以后,還要對(duì)工程進(jìn)行進(jìn)一步的設(shè)置,以滿足要求。首先點(diǎn)擊左邊project窗口的 target1,然后使用菜單“project-option for targettarget1”即出現(xiàn)對(duì)工程設(shè)置的對(duì)話框,這個(gè)對(duì)話框可謂非常復(fù)雜,共有8個(gè)頁(yè)面,要全部搞清可不容易,好在絕大部份設(shè)置項(xiàng)取默認(rèn)值就行了。圖4.4對(duì)目標(biāo)進(jìn)行設(shè)置設(shè)置對(duì)話框中的target頁(yè)面,如圖4.4所示,xtal后面的數(shù)值是晶振頻率值,

21、默認(rèn)值是所選目標(biāo)cpu的最高可用頻率值,對(duì)于我們所選的at89c52而言是12m,該數(shù)值與最終產(chǎn)生的目標(biāo)代碼無(wú)關(guān),僅用于軟件模擬調(diào)試時(shí)顯示程序執(zhí)行時(shí)間。正確設(shè)置該數(shù)值可使顯示時(shí)間與實(shí)際所用時(shí)間一致,一般將其設(shè)置成與你的硬件所用晶振頻率相同,如果沒(méi)必要了解程序執(zhí)行的時(shí)間,也可以不設(shè),這里設(shè)置為12。設(shè)置對(duì)話框中的output頁(yè)面,如圖4.5所示,這里面也有多個(gè)選擇項(xiàng),其中creat hex file 用于生成可執(zhí)行代碼文件(可以用編程器寫(xiě)入單片機(jī)芯片的hex格式文件,文件的擴(kuò)展名為.hex),默認(rèn)情況下該項(xiàng)未被選中,如果要寫(xiě)片做硬件實(shí)驗(yàn),就必須選中該項(xiàng),這一點(diǎn)是初學(xué)者易疏忽的,在此特別提醒注意。

22、選中debug information 將會(huì)產(chǎn)生調(diào)試信息,這些信息用于調(diào)試,如果需要對(duì)程序進(jìn)行調(diào)試,應(yīng)當(dāng)選中該項(xiàng)。browse information是產(chǎn)生瀏覽信息,該信息可以用菜單view-browse 來(lái)查看,這里取默認(rèn)值。按鈕select folder for objects”是用來(lái)選擇最終的目標(biāo)文件所在的文件夾,默認(rèn)是與工程文件在同一個(gè)文件夾中。name of executable用于指定最終生成的目標(biāo)文件的名字,默認(rèn)與工程的名字相同,這兩 項(xiàng)一般不需要更改。工程設(shè)置對(duì)話框中的其它各頁(yè)面與c51編譯選項(xiàng)、a51的匯編選項(xiàng)、bl51連接器的連接選項(xiàng)等用法有關(guān),這里均取默認(rèn)值,不作任何修改

23、。以下僅對(duì)一些有關(guān)頁(yè)面中常用的選項(xiàng)作一個(gè)簡(jiǎn)單介紹。圖4.5對(duì)輸出進(jìn)行控制listing標(biāo)簽頁(yè)用于調(diào)整生成的列表文件選項(xiàng)。在匯編或編譯完成后將產(chǎn)生(*.lst)的列表文件,在連接完成后也將產(chǎn)生(*.m51)的列表文件,該頁(yè)用于對(duì)列表文件的內(nèi)容和形式進(jìn)行細(xì)致的調(diào)節(jié),其中比較常用的選項(xiàng)是“c compile listing”下的“assamble code”項(xiàng),選中該項(xiàng)可以在列表文件中生成c語(yǔ)言源程序所對(duì)應(yīng)的匯編代碼。圖4.6代碼生成控制c51標(biāo)簽頁(yè)用于對(duì)keil的c51編譯器的編譯過(guò)程進(jìn)行控制,其中比較常用的是“code optimization”組,如圖7所示,該組中l(wèi)evel是優(yōu)化等級(jí),c51

24、在對(duì)源程序進(jìn)行編譯時(shí),可以對(duì)代碼多至9級(jí)優(yōu)化,默認(rèn)使用第8級(jí),一般不必修改,如果在編譯中出現(xiàn)一些問(wèn)題,可以降低優(yōu)化級(jí)別試一試。emphasis是選擇編譯優(yōu)先方式,第一項(xiàng)是代碼量?jī)?yōu)化(最終生成的代碼量?。?;第二項(xiàng)是速度優(yōu)先(最終生成的代碼速度快);第三項(xiàng)是缺省。默認(rèn)的是速度優(yōu)先,可根據(jù)需要更改。設(shè)置完成后按確認(rèn)返回主界面,工程文件建立、設(shè)置完畢。4.14編譯、連接圖4.7有關(guān)編譯、連接、項(xiàng)目設(shè)置的工具條在設(shè)置好工程后,即可進(jìn)行編譯、連接。選擇菜單project-build target,對(duì)當(dāng)前工程進(jìn)行連接,如果當(dāng)前文件已修改,軟件會(huì)先對(duì)該文件進(jìn)行編譯,然后再連接以產(chǎn)生目標(biāo)代碼;如果選擇rebui

25、ld all target files將會(huì)對(duì)當(dāng)前工程中的所有文件重新進(jìn)行編譯然后再連接,確保最終生產(chǎn)的目標(biāo)代碼是最新的,而translate .項(xiàng)則僅對(duì)該文件進(jìn)行編譯,不進(jìn)行連接。以上操作也可以通過(guò)工具欄按鈕直接進(jìn)行。圖 8 是有關(guān)編譯、設(shè)置的工具欄按鈕,從左到右分別是:編譯、編譯連接、全部重建、停止編譯和對(duì)工程進(jìn) 行設(shè)置。編譯過(guò)程中的信息將出現(xiàn)在輸出窗口中的build頁(yè)中,如果源程序中有語(yǔ)法錯(cuò)誤,會(huì)有錯(cuò)誤報(bào)告出現(xiàn),雙擊該行,可以定位到出錯(cuò)的位置,對(duì)源程序反復(fù)修改之后,最終會(huì)得到如圖4.8所示的結(jié)果,提示獲得了名為text1.hex的文件,該文件即可被編程器讀入并寫(xiě)到芯片中,同時(shí)還產(chǎn)生了一些其

26、它相關(guān)的文件,可被用于keil的仿真與調(diào)試,這時(shí)可以進(jìn)入下一步調(diào)試的工作。圖4.8正確編譯、連接之后的結(jié)果4.2設(shè)計(jì)思想本設(shè)計(jì)采用了c語(yǔ)言編寫(xiě),由于c語(yǔ)言編程靈活,可移植性強(qiáng)。在一定程度上簡(jiǎn)化了編程過(guò)程。模塊化結(jié)構(gòu)程序的設(shè)計(jì),可以使系統(tǒng)軟件便于調(diào)試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計(jì)。4.3主程序設(shè)計(jì) 本系統(tǒng)程序主要模塊由主程序、定時(shí)中斷服務(wù)程序、外部中斷0服務(wù)程序組成。其中主程序是整個(gè)程序的主體??梢詫?duì)各個(gè)中斷程序進(jìn)行調(diào)用。協(xié)調(diào)各個(gè)子程序之間的聯(lián)系。系統(tǒng)(上電)復(fù)位后,進(jìn)入主程序,主程序流程圖如圖8所示。當(dāng)外部中斷有請(qǐng)求則去執(zhí)行外部中斷服務(wù)程序。并在執(zhí)行完后返回主程序。k=1te

27、mp+圖4.9主程序流程圖開(kāi)始程序初始化temp=0k=2temp=tempk=0temp=0顯示數(shù)據(jù)4.4外部中斷程序設(shè)計(jì)中斷的概念cpu在處理某一事件a時(shí),發(fā)生了另一事件b請(qǐng)求cpu迅速去處理(中斷發(fā)生);cpu暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件b(中斷響應(yīng)和中斷服務(wù));待cpu將事件b處理完畢后,再回到原來(lái)事件a被中斷的地方繼續(xù)處理事件a(中斷返回),這一過(guò)程稱為中斷 。圖4.10 中斷程序子流程圖否k=2是k+int0中斷k=04.5 定時(shí)中斷程序設(shè)計(jì)4.51定時(shí)/計(jì)數(shù)器的結(jié)構(gòu) 定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成。tmod是定時(shí)/計(jì)數(shù)器的工作方式寄存

28、器,確定工作方式和功能;tcon是控制寄存器,控制t0、t1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。4.52定時(shí)/計(jì)數(shù)器的原理加1計(jì)數(shù)器輸入的計(jì)數(shù)脈沖有兩個(gè)來(lái)源,一個(gè)是由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后送來(lái);一個(gè)是t0或t1引腳輸入的外部脈沖源。每來(lái)一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使tcon中tf0或tf1置1,向cpu發(fā)出中斷請(qǐng)求(定時(shí)/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。 可見(jiàn),由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是加1計(jì)數(shù)器的計(jì)數(shù)值。否是中斷返回定時(shí)器t0入口地址調(diào)用數(shù)碼顯

29、示子程序temp加1置初值定時(shí)器溢出中斷圖4.11定時(shí)器t0子程序流程圖4.6實(shí)驗(yàn)程序at89c52顯示00.0099.99匯編語(yǔ)言程序。要實(shí)現(xiàn)四位數(shù)碼管顯示00.0099.99依次循環(huán)的秒表設(shè)計(jì),必須得將at89c52芯片寫(xiě)入程序,只有將程序?qū)戇M(jìn)at89c52芯片,才能實(shí)現(xiàn)其秒表的原理功能。4.61主函數(shù)設(shè)計(jì)void main()init();/初始化子程序while(1)if(k=0)init();/初始化子程序wela=1;/初始設(shè)置顯示00.00p2=0xff;wela=0;p0=0xc0; if(k=1)/第二次按鍵開(kāi)始計(jì)數(shù)if(temp=9999)/當(dāng)計(jì)數(shù)超過(guò)99.99秒時(shí)清零 t

30、emp=0; qian=temp/1000;/計(jì)算數(shù)碼管第一位bai=temp%1000/100;/計(jì)算數(shù)碼管第二位shi=temp%1000%100/10;/計(jì)算數(shù)碼管第三位ge=temp%10;/計(jì)算數(shù)碼管第四位display(qian,bai,shi,ge);/顯示時(shí)間else/第二次按鍵時(shí)停止qian=temp/1000;bai=temp%1000/100;shi=temp%1000%100/10;ge=temp%10;display(qian,bai,shi,ge); if(k=3)/第三次按鍵時(shí)清零k=0; 4.62中斷子程序設(shè)計(jì)void time0() interrupt 0/中

31、斷子程序k+;4.63延時(shí)子函數(shù)設(shè)計(jì)void delay(uint z)/延時(shí)子函數(shù)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);4.64顯示子程序設(shè)計(jì)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ù)碼管第三位p2=0x04;wela=0;p0=tableshi;de

32、lay(1);wela=1;/顯示數(shù)碼管第四位p2=0x08;wela=0;p0=tablege;delay(1);4.65初始化子程序設(shè)計(jì)void init()/初始化子程序wela=0;temp=0;tmod=0x01; /設(shè)置定時(shí)器0為工作方式1th0=0xc8;tl0=0xf0;ea=1;/開(kāi)總中斷et0=1; /開(kāi)定時(shí)器0中斷tr0=1; /啟動(dòng)定時(shí)器0ex0=1;it0=1;4.7 仿真結(jié)果仿真環(huán)境proteus 是英國(guó)labcenter公司開(kāi)發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于windows操作系統(tǒng)上,可以仿真、分析(spice)各種模擬器件和集成電路,該軟件的特點(diǎn)是:實(shí)現(xiàn)了單片機(jī)仿真和spice電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、rs232動(dòng)態(tài)仿真、i2c調(diào)試器、spi調(diào)試器、鍵盤(pán)和lcd系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:arm7(lpc21xx)、 8051/52系列、avr系列、pic10/12/16/18系列、hc11系列以及多種外圍芯片。提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論