版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 緒論</b></p><p> 隨著計(jì)數(shù)器技術(shù)的不斷發(fā)展與進(jìn)步,計(jì)數(shù)器的種類越來(lái)越多,應(yīng)用的范圍越來(lái)越廣,隨之而來(lái)的競(jìng)爭(zhēng)也越來(lái)越激烈。過硬的技術(shù)也成為眾多生產(chǎn)廠商競(jìng)爭(zhēng)的焦點(diǎn)之一。廠商為了在競(jìng)爭(zhēng)中處于不敗之地,從而不斷地改進(jìn)技術(shù),增加產(chǎn)品的種類。</p><p> 現(xiàn)計(jì)數(shù)器的種類以增加到:電磁計(jì)數(shù)器、電子計(jì)數(shù)器、機(jī)械計(jì)數(shù)器(拉動(dòng)機(jī)械計(jì)數(shù)
2、器、轉(zhuǎn)動(dòng)機(jī)械計(jì)數(shù)器、按動(dòng)機(jī)械計(jì)數(shù)器、測(cè)長(zhǎng)機(jī)械計(jì)數(shù)器)、液晶計(jì)數(shù)器等。計(jì)數(shù)器的應(yīng)用范圍也遍布各個(gè)行業(yè)。</p><p> 自單片機(jī)出現(xiàn)至今,單片機(jī)技術(shù)已走過了近20年的發(fā)展路程。縱觀20年來(lái)單片機(jī)發(fā)展歷程可以看出,單片機(jī)技術(shù)的發(fā)展以微處理器(MPU)技術(shù)及超大規(guī)模集成電路技術(shù)的發(fā) 展為先導(dǎo),以廣泛的應(yīng)用領(lǐng)域拉動(dòng),表現(xiàn)出較微處理器更具個(gè)性的發(fā)展趨勢(shì)。單片機(jī)的應(yīng)用在后PC時(shí)代得到了前所未有的發(fā)展,但對(duì)處理器的綜合性能
3、要求也越來(lái)越高。綜觀單片機(jī)的發(fā)展,以應(yīng)用需求為目標(biāo),市場(chǎng)越來(lái)越細(xì)化,充分突出以“單片”解決問題,而不像多年前以MCS51/96等處理器為中心,外擴(kuò)各種接口構(gòu)成各種應(yīng)用系統(tǒng)。單片機(jī)系統(tǒng)作為嵌入式系統(tǒng)的一部分,主要集中在中、低端應(yīng)用領(lǐng)域(嵌入式高端應(yīng)用主要由DSP、ARM、MIPS等高性能處理器構(gòu)成),在這些應(yīng)用中,目前也出現(xiàn)了一些新的需求,主要體現(xiàn)在以下幾個(gè)方面:</p><p> ?。?)以電池供電的應(yīng)用越來(lái)越多
4、,而且由于產(chǎn)品體積的限制,很多是用鈕扣電池供電,要求系統(tǒng)功耗盡可能低,如手持式儀表、水表、玩具等。</p><p> (2)隨著應(yīng)用的復(fù)雜,對(duì)處理器的功能和性能要求不斷提高。既要外設(shè)豐富、功能靈活,又要有一定的運(yùn)算能力,能做一些實(shí)時(shí)算法,而不僅僅做一些簡(jiǎn)單的控制。</p><p> ?。?)產(chǎn)品更新速度快,開發(fā)時(shí)間短,希望開發(fā)工具簡(jiǎn)單、廉價(jià)、功能完善。特別是仿真工具要有延續(xù)性,能適應(yīng)多種
5、MCU,以免重復(fù)投資,增加開發(fā)費(fèi)用。</p><p> ?。?)產(chǎn)品性能穩(wěn)定,可靠性高,既能加密保護(hù),又能方便升級(jí)</p><p> 一.總體設(shè)計(jì)任務(wù)和方案</p><p><b> 1.1設(shè)計(jì)任務(wù)</b></p><p> 要求應(yīng)用以51單片機(jī)為核心設(shè)計(jì)電子計(jì)數(shù)器,能設(shè)置起始數(shù)值,通過加、減鍵實(shí)現(xiàn)計(jì)數(shù)功能,設(shè)計(jì)復(fù)
6、位按鈕。數(shù)字通過數(shù)碼管顯示,計(jì)數(shù)結(jié)束發(fā)出警報(bào)。</p><p><b> 1.2設(shè)計(jì)方案</b></p><p> 根據(jù)儀器的功能,電子計(jì)數(shù)器有通用計(jì)數(shù)器和專用計(jì)數(shù)器</p><p> 通用計(jì)數(shù)器是一種具有多種測(cè)量功能,多種用途的電子計(jì)數(shù)器,它可以測(cè)量頻率,周期,時(shí)間間隔,頻率比,累加功能,計(jì)時(shí)等。配上相應(yīng)的插件還可以測(cè)量相位,電壓等&l
7、t;/p><p> 專用計(jì)數(shù)器指專門用于測(cè)量某一種功能的電子計(jì)數(shù)器,例如:專門測(cè)量高頻和微波頻率的頻率計(jì)數(shù)器;以測(cè)量時(shí)間為基礎(chǔ)的時(shí)間計(jì)數(shù)器;具有某種特殊功能的特種計(jì)數(shù)器,如可逆計(jì)數(shù)器,預(yù)置計(jì)數(shù)器,差值計(jì)數(shù)器等</p><p><b> 二.電路原理</b></p><p><b> 2.1 系統(tǒng)的組成</b></p
8、><p> 本設(shè)計(jì)為累加計(jì)數(shù)的專用計(jì)數(shù)器,應(yīng)用AT89C51芯片作為核心,8位的LED數(shù)管顯示。這種實(shí)現(xiàn)方法的優(yōu)點(diǎn)是電路簡(jiǎn)單,性能可靠,實(shí)時(shí)性強(qiáng),操作簡(jiǎn)單,編程容易。</p><p><b> 原理框圖:</b></p><p> 本設(shè)計(jì)的電子計(jì)數(shù)器的重要功能為:</p><p><b> 逐次累加計(jì)數(shù)&l
9、t;/b></p><p><b> 累加至預(yù)定值報(bào)警</b></p><p> 累加計(jì)數(shù)期間可隨時(shí)中斷</p><p> 2.2 AT89C51單片機(jī)</p><p> 2.2.1 單片機(jī)主要功能特性</p><p> AT89C51是一個(gè)低功耗,高性能CMOS 8位單
10、片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,AT89C51在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。</p><p><b> 主要性能特點(diǎn):
11、</b></p><p> 1.4k Bytes Flash片內(nèi)程序存儲(chǔ)器;</p><p> 2.128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM);</p><p> 3.32個(gè)外部雙向輸入/輸出(I/O)口;</p><p> 4.5個(gè)中斷優(yōu)先級(jí)、2層中斷嵌套中斷;</p><p><b&
12、gt; 5.6個(gè)中斷源;</b></p><p> 6.2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器;</p><p> 7.2個(gè)全雙工串行通信口;</p><p> 8.看門狗(WDT)電路;</p><p> 9.片內(nèi)振蕩器和時(shí)鐘電路;</p><p> 10.與MCS-51兼容;</p>
13、<p> 11.全靜態(tài)工作:0Hz-33MHz;</p><p> 12.三級(jí)程序存儲(chǔ)器保密鎖定;</p><p> 13.可編程串行通道;</p><p> 14.低功耗的閑置和掉電模式。</p><p> 2.2.2 引腳功能及管腳電壓</p><p> VCC:電源電壓輸入端。</p&
14、gt;<p><b> GND:電源地。</b></p><p> P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
15、60;</p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出</
16、p><p> 4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。</p><p> 并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。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)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P
17、2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口除了作為普通I/O口,還有第二功能:</p><p> P3.0 RXD(串行輸入口)
18、</p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 /INT0(外部中斷0)</p><p> P3.3 /INT1(外部中斷1)</p><p> P3.4 T0(T0定時(shí)器的外部計(jì)數(shù)輸入)</p><p> 圖4 PDIP封裝的AT89S51管腳圖 </p>
19、<p> P3.5 T1(T1定時(shí)器的外部計(jì)數(shù)輸入) </p><p> P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器的寫選通)</p><p> P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器的讀選通)</p><p> P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p> I/O口作為輸入口時(shí)有兩種工作方式,即所謂的讀端口與讀引
20、腳。讀端口時(shí)實(shí)際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線,經(jīng)過某種運(yùn)算或變換后再寫回到端口鎖存器。只有讀端口時(shí)才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線。89C51的P0、P1、P2、P3口作為輸入時(shí)都是準(zhǔn)雙向口。除了P1口外P0、P2、P3口都還有其他的功能。</p><p> RST:復(fù)位輸入端,高電平有效。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><
21、;p> ALE/PROG:地址鎖存允許/編程脈沖信號(hào)端。當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX
22、,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。</p><p> PSEN:外部程序存儲(chǔ)器的選通信號(hào),低電平有效。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。</p><p> EA/VPP:外部程序存儲(chǔ)器訪問允許。當(dāng)/EA保持低電平時(shí),則在此期間外部
23、程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> 2.3 單片機(jī)最小系統(tǒng)</p><p> 單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對(duì)于51系列的單片機(jī)來(lái)說,
24、最小系統(tǒng)一般應(yīng)該包括單片機(jī)、晶振電路、復(fù)位電路。圖6給出了51單片機(jī)的最小系統(tǒng)原理圖。</p><p> 圖6 51 單片機(jī)的最小系統(tǒng)</p><p> 2.3.1 晶振電路</p><p> 晶振是晶體振蕩器的簡(jiǎn)稱,在電氣上它可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn),以頻率的高低區(qū)分,其中較低的頻率是串聯(lián)諧振,較
25、高的頻率是并聯(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ì)有很大的變化。</p><p> 一般的晶振振蕩電路都是在一個(gè)反相放大器(注意是放大器不是反
26、相器)的兩端接入晶振,再有兩個(gè)電容分別接到晶振的兩端,每個(gè)電容的另一端再接到地,這兩個(gè)電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容,請(qǐng)注意一般IC的引腳都有等效輸入電容,這個(gè)不能忽略。</p><p> 典型的晶振取值為11.0592MHz(可以準(zhǔn)確地得到9600波特率和19200波特率,用于有串口通訊的場(chǎng)合)和12MHz(產(chǎn)生精確的uS級(jí)時(shí)歇,方便定時(shí)操作)。</p><p> 2.3.2 復(fù)
27、位電路</p><p> 51單片機(jī)是高電平復(fù)位,所以先看給單片機(jī)加5V電源(上電)啟動(dòng)時(shí)的情況:這時(shí)電容充電相當(dāng)于短路,你可以認(rèn)為RST上的電壓就是5V,這是單片機(jī)就是復(fù)位狀態(tài)。隨著時(shí)間推移電容兩端電壓升高,即造成RST上的電壓降低,當(dāng)?shù)椭灵撝惦妷簳r(shí),即完成復(fù)位過程。</p><p> 如果按下復(fù)位鍵,電容C3短路,這時(shí)電容放電,兩端電壓都是5V,即RST引腳電壓為5V,如果超過規(guī)定
28、的復(fù)位時(shí)間,單片機(jī)就復(fù)位了。當(dāng)按鈕彈起后,RST引腳的電壓為0,單片機(jī)處于運(yùn)行狀態(tài)。</p><p> 51單片機(jī)復(fù)位要求是:RST上加高電平時(shí)間大于2個(gè)機(jī)器周期,12MHz的晶振的一個(gè)機(jī)器周期是1us,要復(fù)位就加2us的高電平即可。</p><p> 單片機(jī)復(fù)位電路就好比電腦的重啟部分,當(dāng)電腦在使用中出現(xiàn)死機(jī),按下重啟按鈕電腦內(nèi)部的程序從頭開始執(zhí)行。單片機(jī)也一樣,當(dāng)單片機(jī)系統(tǒng)在運(yùn)行中
29、,受到環(huán)境干擾出現(xiàn)程序跑飛的時(shí)候,按下復(fù)位按鈕內(nèi)部的程序自動(dòng)從頭開始執(zhí)行。</p><p><b> 2.4 顯示模塊</b></p><p> 數(shù)碼管是一種把多個(gè)LED顯示段集成在一起的顯示設(shè)備。有兩種類型,一種是共陽(yáng)型,一種是共陰型。通常的數(shù)碼管又分為8段,即8個(gè)LED顯示段,分別為A、B、C、D、E、F、G、小數(shù)點(diǎn)DP,通過段碼控制LED段位的亮滅,實(shí)現(xiàn)信息
30、的多樣化顯示。</p><p> 數(shù)碼管顯示方法可分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入及其公共端電平一直有效。多位數(shù)碼管的動(dòng)態(tài)顯示時(shí),為簡(jiǎn)化電路,通常將所有顯示位的段碼線的相應(yīng)段并聯(lián)在一起,由一個(gè)8位I/O口作為段選線來(lái)控制;而各位的共陽(yáng)極或共陰極分別由相應(yīng)的I/O口控制,形成各位的分時(shí)選通。</p><p> 此顯示模塊中將P0口最為段選線,P2口為位選線。采用循
31、環(huán)掃描的方式,分時(shí)輪流選通各數(shù)碼管的公共端,使數(shù)碼管輪流導(dǎo)通顯示。利用人眼的“視覺暫留”效應(yīng),依次給出各個(gè)數(shù)碼管公共端加有效信號(hào),與此同時(shí)給出該數(shù)碼管有效的數(shù)據(jù)信號(hào),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要全段掃描速度大于視覺暫留速度時(shí),視覺效果就是一組穩(wěn)定的顯示數(shù)據(jù),認(rèn)為各數(shù)碼管是同時(shí)發(fā)光的。圖7為顯示模塊硬件原理圖。</p><p><b> 三.軟件介紹</b></p>
32、<p> 3.1 51單片機(jī)C語(yǔ)言介紹</p><p> 單片機(jī)就是中央處理器CPU,隨機(jī)存儲(chǔ)器RAM。只讀存儲(chǔ)器ROM。定時(shí)、計(jì)數(shù)器和各種輸入輸出接口I/o接口電路等部件集成在一塊電路芯片上的微型計(jì)算機(jī)。</p><p> 按制造工藝分:HMOS和CHMOS CHMOS包括80c51等中間加了C功耗要小</p><p> 適合便攜式手提式和
33、野外作業(yè)。按不同容量的存儲(chǔ)器配置分:51子系列和52子系列</p><p> 51表示單片機(jī)最后一位數(shù)字為1作為標(biāo)志。片內(nèi)帶有4KbROM或EPROM(Erasable Programmable ROM,可擦除可編程ROM,128BRAM,兩個(gè)16位定時(shí)器/計(jì)數(shù)器和5個(gè)中段器52系列是增強(qiáng)型各項(xiàng)指標(biāo)都高。</p><p> 一個(gè)典型的單片機(jī)應(yīng)用系統(tǒng)包括輸入電路,單片機(jī),輸出電路<
34、/p><p> 3.2 Proteus仿真軟件介紹</p><p> Proteus ISIS是英國(guó)Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路。該軟件的特點(diǎn)是: 1.實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動(dòng)
35、態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。 2.支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、ARM7系列以及各種外圍芯片。 3.提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等
36、的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2等軟件。 4.具有強(qiáng)大的原理圖繪制功能。 5.PCB設(shè)計(jì)以及自動(dòng)布線。</p><p> 特點(diǎn):支持ARM7,PIC ,AVR,HC11以及8051系列的微處理器CPU模型,更多模型正在開發(fā)中,更新信息請(qǐng)參見網(wǎng)頁(yè);交互外設(shè)模型有LCD顯示、RS23
37、2終端、通用鍵盤、開關(guān)、按鈕、LED等;強(qiáng)大的調(diào)試功能,如訪問寄存器與內(nèi)存,設(shè)置斷點(diǎn)和單步運(yùn)行模式;支持如IAR、Keil和Hitech等開發(fā)工具的源碼C和匯編的調(diào)試;一鍵“make”特性:一個(gè)鍵完成編譯與仿真操作;內(nèi)置超過6000標(biāo)準(zhǔn)SPICE模型,完全兼容制造商提供的SPICE模型;DLL界面為應(yīng)用提供特定的模式;基于工業(yè)標(biāo)準(zhǔn)的SPICE3F5混合模型電路仿真器14種虛擬儀器:示波器、邏輯分析儀、信號(hào)發(fā)生器、規(guī)程分析儀
38、等;高級(jí)仿真包含強(qiáng)大的基于圖形的分析功能:模擬、數(shù)字和混合瞬時(shí)圖形;頻率;轉(zhuǎn)換;噪聲;失真;付立葉;交流、直流和音頻曲線;模擬信號(hào)發(fā)生器包括直流、正旋、脈沖、分段線性、音頻、指數(shù)、單頻FM;數(shù)字信號(hào)發(fā)生器包括尖脈沖、脈沖、時(shí)鐘和碼流;集成PROTEUS PCB設(shè)計(jì)形成完整的電子設(shè)計(jì)系統(tǒng)。</p><p> 3.3 Keil uVision2 C語(yǔ)言開發(fā)系統(tǒng)介紹</p><p&
39、gt; Keil uVision2是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),使用接近于傳統(tǒng)c語(yǔ)言的語(yǔ)法來(lái)開發(fā),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用,而且大大的提高了工作效率和項(xiàng)目開發(fā)周期,他還能嵌入?yún)R編,您可以在關(guān)鍵的位置嵌入,使程序達(dá)到接近于匯編的工作效率。KEILC51標(biāo)準(zhǔn)C編譯器為8051微控制器的軟件開發(fā)提供了C語(yǔ)言環(huán)境,同時(shí)保留了匯編代碼高效,
40、快速的特點(diǎn)。C51編譯器的功能不斷增強(qiáng), 使你可以更加貼近CPU本身,及其它的衍生產(chǎn)品。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個(gè)集成開發(fā)環(huán)境包含:編譯器,匯編器,實(shí)時(shí)操作系統(tǒng),項(xiàng)目管理器,調(diào)試器。uVision2 IDE可為它們提供單一而靈活的開發(fā)環(huán)境。</p><p> Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面,使您能在很短的時(shí)間內(nèi)就能學(xué)會(huì)使用k
41、eil c51來(lái)開發(fā)您的單片機(jī)應(yīng)用程序 。 </p><p> 另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。</p><p> 四.Proteus的仿真</p><p><b> 4.1 仿真圖形</b>
42、;</p><p><b> 4.2 元器件代號(hào)</b></p><p> 設(shè)計(jì)的電子計(jì)數(shù)器所需的元器件的代號(hào)為</p><p> 1、單片機(jī)代號(hào)為:AT89C51</p><p> 2、電容C1、C2的代號(hào)為:CERAMIC22P</p><p> 3、電容C3的代號(hào)為:MINELEC
43、T10U16V</p><p> 4、晶振X1的代號(hào)為:CRYSTAL</p><p> 5、電阻R1、R2的代號(hào)分別為:CHIPRES 10K、CHIPRES 100R</p><p> 6、上拉電阻RP1的代號(hào)為:RESPACK-8</p><p> 7、顯示器的代號(hào)為:7SEG-MP*1-CC</p><p&
44、gt; 8、開關(guān)六個(gè)的代號(hào)為BUTTON</p><p> 4.3 元器件的放置與連線</p><p> 在元器件代號(hào)列表里點(diǎn)擊所需元件的代號(hào),就可以選定所需元件,鼠標(biāo)移動(dòng)到元件的放置地點(diǎn),然后點(diǎn)擊鼠標(biāo)右鍵,即可以將元件放置好。依次放置好元件,要確保元件的擺放美觀。</p><p> 在需要連接的元件接線處,點(diǎn)擊左鍵,移動(dòng)鼠標(biāo),可看到導(dǎo)線的出現(xiàn),再在導(dǎo)線的另
45、一端在另一個(gè)元件的端點(diǎn)處點(diǎn)擊,從而連接了電路。</p><p> 4.4程序運(yùn)行流程圖</p><p> 4.5 程序運(yùn)行代碼</p><p> #include<reg52.h></p><p> #define uint unsigned int</p><p> #define uchar
46、unsigned char</p><p> sbit up=P1^0;</p><p> sbit down=P1^3;</p><p> sbit stop=P1^6;</p><p> sbit reset=P1^7;</p><p> sbit beep=P3^7;</p><p&
47、gt; uint num2,num0,num22,num00,temp;</p><p> uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p> void delay(uint z)</p><p><b> {</b></
48、p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> void init()</p>
49、<p><b> {</b></p><p><b> num2=0;</b></p><p><b> num22=0;</b></p><p><b> num0=0;</b></p><p><b> num00=0
50、;</b></p><p><b> temp=0;</b></p><p><b> P0=0;</b></p><p><b> P2=0xff;</b></p><p><b> P3=0xff;</b></p>&
51、lt;p><b> beep=0;</b></p><p><b> //stop=0;</b></p><p> P0=table[num0];</p><p> P2=table[num2];</p><p><b> EA=0;</b></p>
52、<p><b> IT0=1;</b></p><p><b> EX0=1;</b></p><p><b> }</b></p><p> void keyscan()</p><p><b> {</b></p>
53、<p> /*************************************************************************/</p><p> if(stop==0)</p><p><b> {</b></p><p><b> delay(5);</b></
54、p><p> if(stop==0)</p><p><b> {</b></p><p> while(!stop);</p><p> if((num2!=0) || (num0!=0))</p><p><b> {</b></p><p&g
55、t;<b> temp++;</b></p><p> if(temp==1)</p><p><b> EA=1;</b></p><p> if(temp==2)</p><p><b> EA=0;</b></p><p> if(te
56、mp==3)</p><p><b> {</b></p><p><b> temp=1;</b></p><p><b> EA=1;</b></p><p><b> }</b></p><p><b>
57、}</b></p><p><b> }</b></p><p><b> }</b></p><p> /*************************************************************************/</p><p> if
58、(temp==0)</p><p><b> {</b></p><p> /*************************************************************************/</p><p><b> if(up==0)</b></p><p&g
59、t;<b> {</b></p><p><b> delay(5);</b></p><p><b> if(up==0)</b></p><p><b> {</b></p><p> while(!up);</p><p
60、> if(num2==9)</p><p><b> {</b></p><p><b> num2=0;</b></p><p> P2=table[num2];</p><p> if(num0==9)</p><p><b> {</b
61、></p><p><b> num0=0;</b></p><p> P0=table[num0];</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b&
62、gt;</p><p><b> num0++;</b></p><p> P0=table[num0];</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b&g
63、t;</p><p><b> {</b></p><p><b> num2++;</b></p><p> P2=table[num2];</p><p><b> }</b></p><p><b> }</b>&l
64、t;/p><p><b> }</b></p><p> /*************************************************************************/</p><p> if(down==0)</p><p><b> {</b><
65、;/p><p><b> delay(5);</b></p><p> if(down==0)</p><p><b> {</b></p><p> while(!down);</p><p> if(num2==0)</p><p><
66、b> {</b></p><p><b> num2=9;</b></p><p> P2=table[num2];</p><p> if(num0==0)</p><p><b> {</b></p><p><b> num0=9
67、;</b></p><p> P0=table[num0];</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> num0--;
68、</b></p><p> P0=table[num0];</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b&
69、gt;</p><p><b> num2--;</b></p><p> P2=table[num2];</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&
70、lt;/p><p> /*************************************************************************/</p><p><b> }</b></p><p> /********************************************************
71、*****************/</p><p> if(reset==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(reset==0)</p><p><b> {<
72、/b></p><p> while(!reset);</p><p> if((num2!=0) && (num0!=0))</p><p><b> {</b></p><p><b> num22=0;</b></p><p><b&
73、gt; num00=0;</b></p><p> P2=table[num22];</p><p> P0=table[num00];</p><p><b> beep=0;</b></p><p><b> EA=1;</b></p><p>&l
74、t;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /**********************************************
75、***************************/</p><p> void main()</p><p><b> {</b></p><p><b> init();</b></p><p><b> while(1)</b></p><
76、p><b> {</b></p><p> keyscan();</p><p><b> }</b></p><p><b> }</b></p><p> void INT() interrupt 0</p><p><b>
77、; {</b></p><p> if(num22==9)</p><p><b> {</b></p><p><b> num22=0;</b></p><p> P2=table[num22];</p><p><b> num00++
78、;</b></p><p> P0=table[num00];</p><p> /*if(num00==9)</p><p><b> {</b></p><p><b> num00=0;</b></p><p> P0=table[num00];
79、</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> num00++;</b></p><p> P0=table[num00]
80、;</p><p><b> }*/</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> num22++;&l
81、t;/b></p><p> P2=table[num22];</p><p> P0=table[num00];</p><p><b> }</b></p><p> if((num22==num2) && (num00==num0)) &l
82、t;/p><p><b> {</b></p><p><b> EA=0;</b></p><p><b> beep=1;</b></p><p><b> }</b></p><p><b> }</b
83、></p><p><b> 五、仿真調(diào)試</b></p><p> 5.1 電子計(jì)數(shù)器仿真電路調(diào)試</p><p> 5.2 電子計(jì)數(shù)器仿真測(cè)試結(jié)果分析</p><p> 起初設(shè)計(jì)電路完好,且都能很好的工作,但在P3.2端口少接了一個(gè)計(jì)數(shù)按鈕以及蜂鳴器報(bào)警裝置,從而導(dǎo)致無(wú)法計(jì)數(shù)及報(bào)警。</p>
84、<p> 經(jīng)過修正后,能夠正常運(yùn)行,且在按下up鍵,顯示器上能夠逐次加1,按下down鍵,顯示器上能夠逐次減1,在按下stop鍵一次,可以按下beep鍵進(jìn)行計(jì)數(shù),按下stop鍵兩次,停止計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到預(yù)定的數(shù)值時(shí)蜂鳴器報(bào)警,按下reset鍵復(fù)位清零。</p><p> 六.課程設(shè)計(jì)的心得體會(huì)</p><p> 我們度過了為期兩周的單片機(jī)課程設(shè)計(jì),同時(shí)也給我留下了很深刻
85、的印象。兩周的課程設(shè)計(jì)雖然看似很長(zhǎng),卻不知不覺中度過了,而在這兩周的時(shí)間里我設(shè)計(jì)好了電子計(jì)數(shù)器,且能夠運(yùn)行正常。</p><p> 在平時(shí)的上課學(xué)習(xí)中,我們對(duì)于書上所講的感覺很抽象。在做課程設(shè)計(jì)時(shí)我們從最簡(jiǎn)單的實(shí)物開始做起,在制作過程中,我們首先是實(shí)驗(yàn)設(shè)計(jì),設(shè)計(jì)電路圖,然后畫出電路流程圖,設(shè)計(jì)電子計(jì)數(shù)器運(yùn)行程序,同時(shí)我們還花費(fèi)了一些時(shí)間尋找課程設(shè)計(jì)的方法以及一些有關(guān)材料,并小組討論設(shè)計(jì)。最終,我們?cè)诟鱾€(gè)方面實(shí)現(xiàn)
86、了對(duì)各個(gè)部分的電路設(shè)計(jì)。在設(shè)計(jì)過程中,我們遇到了很多的問題,但最終在我們小組的共同努力以及老師和同學(xué)的幫助下,把問題都解決了。</p><p> 在課程設(shè)計(jì)的整個(gè)過程中,我得到了一些感悟:</p><p> 1、在設(shè)計(jì)過程中,我們分工合作進(jìn)行查找資料,我們從Proteus仿真軟件的應(yīng)用,通過閱讀相關(guān)書籍,從而構(gòu)建出電子計(jì)數(shù)器的仿真電路圖,同時(shí)也初步知道了該軟件的應(yīng)用方法。</p&
87、gt;<p> 2、我覺得做課程設(shè)計(jì)同時(shí)也是對(duì)課本知識(shí)的鞏固和加強(qiáng),由于課本上的知識(shí)太多,平時(shí)課間的學(xué)習(xí)并不能很好的理解和運(yùn)用各個(gè)元件的功能,而且考試內(nèi)容有限,所以在這次課程設(shè)計(jì)過程中,我們了解了很多元件的功能,并且對(duì)于其在電路中的使用有了更多的認(rèn)識(shí)。</p><p> 3、同時(shí)我認(rèn)為我們的工作是一個(gè)團(tuán)隊(duì)的工作,團(tuán)隊(duì)需要個(gè)人,個(gè)人也離不開團(tuán)隊(duì),必須發(fā)揚(yáng)團(tuán)結(jié)協(xié)作的精神。某個(gè)人的離群都可能導(dǎo)致導(dǎo)致整
88、項(xiàng)工作的失敗。課程設(shè)計(jì)即是一個(gè)課題的研究與設(shè)計(jì),需要一個(gè)小組的合作,所以要讓每個(gè)人都知道,團(tuán)隊(duì)的精神,團(tuán)結(jié)協(xié)作是我們課程設(shè)計(jì)成功的一項(xiàng)非常重要的保證。</p><p> 4、通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在課程設(shè)計(jì)的過程中遇到問題,可以說是困難
89、重重,無(wú)論做什么事,難免會(huì)遇到過各種各樣的問題,同時(shí)在課程設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固。</p><p> 通過這次的課程設(shè)計(jì),使我們更深刻的體會(huì)到了理論聯(lián)系實(shí)際的重要性,我們今后學(xué)習(xí)工作中會(huì)更加注重實(shí)際,更多的去鍛煉自己的技能,也讓自己更好的發(fā)揮好自己的優(yōu)勢(shì)和特長(zhǎng)!</p><p><b> 七.參考文獻(xiàn)</b&g
90、t;</p><p> [1]張毅剛 彭喜元 彭宇編:《單片機(jī)原理及應(yīng)用》 第二版 高等教育出版社 2010</p><p> [2]路而紅主編:《電子設(shè)計(jì)自動(dòng)化應(yīng)用技術(shù)——FPGA應(yīng)用篇》 高等教育出版社 2009</p><p> [3]張?jiān)?王建軍等著:《單片機(jī)開發(fā)技術(shù)實(shí)例教程》 機(jī)械工業(yè)出版社 2010</p><p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子課程設(shè)計(jì)-雙通道計(jì)數(shù)器
- 光電計(jì)數(shù)器課程設(shè)計(jì)報(bào)告
- 雙通道計(jì)數(shù)器的電子課程設(shè)計(jì)
- 課程設(shè)計(jì)--8位計(jì)數(shù)器eda課程設(shè)計(jì)報(bào)告
- 數(shù)字電子電課程設(shè)計(jì)(光控計(jì)數(shù)器)
- 電子電工課程設(shè)計(jì)頻率計(jì)數(shù)器
- 課程設(shè)計(jì)報(bào)告--循環(huán)碼計(jì)數(shù)器
- 自動(dòng)計(jì)數(shù)器課程設(shè)計(jì)課設(shè)報(bào)告
- 單片機(jī)計(jì)數(shù)器課程設(shè)計(jì)報(bào)告
- 數(shù)電課程設(shè)計(jì)報(bào)告---光電計(jì)數(shù)器設(shè)計(jì)
- 光控計(jì)數(shù)器課程設(shè)計(jì)
- 6進(jìn)制計(jì)數(shù)器課程設(shè)計(jì)
- 里程計(jì)數(shù)器課程設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)之計(jì)數(shù)器
- 里程計(jì)數(shù)器課程設(shè)計(jì)
- 24進(jìn)制計(jì)數(shù)器課程設(shè)計(jì)
- 頻率計(jì)數(shù)器課程設(shè)計(jì)
- 43進(jìn)制光控計(jì)數(shù)器課程設(shè)計(jì)報(bào)告
- 單口ram計(jì)數(shù)器的課程設(shè)計(jì)
- 10進(jìn)制加法計(jì)數(shù)器課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論