器課程設(shè)計(jì)報(bào)告_第1頁(yè)
器課程設(shè)計(jì)報(bào)告_第2頁(yè)
器課程設(shè)計(jì)報(bào)告_第3頁(yè)
器課程設(shè)計(jì)報(bào)告_第4頁(yè)
器課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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、課程設(shè)計(jì)報(bào)告電 子 信 息 與 電 氣 工 程 系課程設(shè)計(jì)報(bào)告設(shè)計(jì)類型: 綜合設(shè)計(jì) 設(shè)計(jì)題目: 基于單片機(jī)數(shù)字顯示計(jì)算器 系 別: 電子信息與電氣工程系 年級(jí)專業(yè): 07電子信息工程(2)班 姓名學(xué)號(hào): muzili 指導(dǎo)教師: 2010 年 6月 22 日目錄摘要:2一、計(jì)算器系統(tǒng)21.1 單片機(jī)及計(jì)算器概述21.2系統(tǒng)設(shè)計(jì)要求與整體規(guī)劃31.2.1基礎(chǔ)設(shè)計(jì)要求31.2.1系統(tǒng)規(guī)劃31.3 AT89C52單片機(jī)的主要性能參數(shù)和主要引腳41.3.1 主要性能參數(shù)41.3.2功能引腳說(shuō)明4二、硬件設(shè)計(jì)52.1.系統(tǒng)總框圖52.2數(shù)碼管原理62.2.1動(dòng)態(tài)掃描62.3 4X4鍵盤(pán)的工作原理72.4

2、 計(jì)算器控制線路圖82.5計(jì)算器控制線路圖9三、計(jì)算器系統(tǒng)詳細(xì)軟件設(shè)計(jì)93.1計(jì)算器控制算法實(shí)現(xiàn)10四、系統(tǒng)調(diào)試124.1基于PROTEUS的電路仿真124.1.1用PROTEUS 繪制原理圖124.1.2 PROTEUS 對(duì)單片機(jī)內(nèi)核的仿真134.2 計(jì)算器硬件調(diào)試14五、結(jié) 論15參 考 文 獻(xiàn):16附1:硬件仿真圖17附2:程序清單17基于單片機(jī)的數(shù)字顯示計(jì)算器設(shè)計(jì) 摘要:本設(shè)計(jì)中,采用了單片機(jī)采用 80S52 單片機(jī),它能夠滿足數(shù)據(jù)的采集、控制和數(shù)據(jù)處理的需求。顯示用 8 段 LED 數(shù)碼管,輸入采用按鍵方式。再采用AT89C52單片機(jī)進(jìn)行控制,AT89C52單片機(jī)有8字節(jié)FLASH閃

3、速存儲(chǔ)器,256字竹內(nèi)部RAM , 32個(gè)I/O口線,3個(gè)16 位定時(shí)計(jì)數(shù)器,一個(gè)6向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。AT89c52可降至OHz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電上作模式??臻e方式停止CPU 的工作,但允許RAM,定時(shí)計(jì)數(shù)器。串行通信口及中斷系統(tǒng)繼續(xù)工作。在本系統(tǒng)設(shè)計(jì)中共有以下四個(gè)模塊組成:開(kāi)關(guān)模塊、輸入模塊、單片機(jī)控制模塊、數(shù)碼管顯示模塊。能實(shí)現(xiàn)四則運(yùn)算、累計(jì)運(yùn)算、溢出判斷。關(guān)鍵字:矩陣鍵盤(pán)、AT89C52、一、計(jì)算器系統(tǒng)1.1 單片機(jī)及計(jì)算器概述單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是頗具生命力的機(jī)種。單片機(jī)微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),特

4、別適用于控制領(lǐng)域,故又稱為微控制器。通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器、存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。通常,單片機(jī)由單個(gè)集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件,中央處理器,存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。隨著社會(huì)的發(fā)展,科學(xué)的進(jìn)步,人們的生活水平在逐步的提高,尤其是微電子技術(shù)的發(fā)展,猶如雨后春筍般的變化。單片機(jī)的應(yīng)用已經(jīng)越來(lái)越貼近生活,用單片機(jī)來(lái)實(shí)現(xiàn)一些電子設(shè)計(jì)也變得容易起來(lái)。計(jì)算器在人們的日常中是比

5、較的常見(jiàn)的電子產(chǎn)品之一??墒撬€在發(fā)展之中,以后必將出現(xiàn)功能更加強(qiáng)大的計(jì)算器,基于這樣的理念,本次設(shè)計(jì)是用單片機(jī)來(lái)設(shè)計(jì)的計(jì)算器。該設(shè)計(jì)系統(tǒng)是以 AT89C52 為單片機(jī),P0 口作為輸入端,外接 4X4 的鍵盤(pán),通過(guò)鍵盤(pán)掃描來(lái)對(duì)輸入數(shù)的控制,在 P1 口,P2 口接了驅(qū)動(dòng)電路。用來(lái)保證 LED 的工作正常。計(jì)算器將完成的功能有加、減、乘、除等功能。1.2系統(tǒng)設(shè)計(jì)要求與整體規(guī)劃1.2.1基礎(chǔ)設(shè)計(jì)要求該設(shè)計(jì)通過(guò)89S52芯片控制6個(gè)一位數(shù)碼管顯示,并實(shí)時(shí)檢測(cè)按鍵按下情況來(lái)實(shí)現(xiàn)計(jì)算器功能,16個(gè)按鍵有10個(gè)為數(shù)字按鍵 其他6個(gè)分別為加、減、乘、除、復(fù)位、等于根據(jù)功能和指標(biāo)要求,本系統(tǒng)選用 89S 5

6、1 單片機(jī)為主控機(jī)。通過(guò)擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對(duì)計(jì)算器的設(shè)計(jì)。具體設(shè)計(jì)考慮如下:由于要設(shè)計(jì)的是簡(jiǎn)單的計(jì)算器,可以進(jìn)行四則運(yùn)算,對(duì)數(shù)字的大小范圍要求不高,故我們采用可以進(jìn)行四位數(shù)字的運(yùn)算,選用 8 個(gè) LED 數(shù)碼管顯示數(shù)據(jù)和結(jié)果。另外鍵盤(pán)包括數(shù)字鍵(09)、符號(hào)鍵(+、-、×、÷)、清除鍵和等號(hào)鍵,故只需要16 個(gè)按鍵即可。1.2.1系統(tǒng)規(guī)劃電路板一塊,AT89S52單片機(jī)一片,七段數(shù)碼管6個(gè),1K歐姆電阻8個(gè),5V穩(wěn)定電源1個(gè)等。系統(tǒng)結(jié)構(gòu)框圖如下圖1-1: 七段數(shù)碼顯示鍵盤(pán)AT89C52 圖1-11.3 AT89C52單片機(jī)的主要性能參數(shù)和主要引腳1.3.1 主要性

7、能參數(shù)AT89C52 提供以下標(biāo)準(zhǔn)功能:8字節(jié)FLASH閃速存儲(chǔ)器,256字竹內(nèi)部RAM , 32個(gè)I/O口線,3個(gè)16 位定時(shí)計(jì)數(shù)器,一個(gè)6向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89c52可降至OHz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電上作模式??臻e方式停止CPU 的工作,但允許RAM,定時(shí)計(jì)數(shù)器串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM 中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位.1.3.2功能引腳說(shuō)明Vcc:電源電壓 GND:地P0:P0口是一組8位漏極開(kāi)路型雙向1/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí)每位能

8、吸收電流的方式驅(qū)動(dòng)8個(gè)TTL 邏輯門電路,對(duì)端口P0 寫(xiě)“1”時(shí),可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部 上拉電阻。在FLASH由編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字 節(jié),校驗(yàn)時(shí),要求外接上拉電阻。P1口:PI 是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,Pl的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流IIL與AT89C51不同之處是,Pl.0

9、 和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(Pl.0/T2 )和輸入(P1.1/T2EX) 。AT89S51 引腳圖如下圖1-2: 圖1-2 AT89C52芯片二、硬件設(shè)計(jì)2.1.系統(tǒng)總框圖如圖2-1:AT89C52鍵盤(pán)七段數(shù)碼顯示圖2-1系統(tǒng)總框圖(1)主要器件:?jiǎn)纹瑱C(jī)采用 80S52 單片機(jī),它能夠滿足數(shù)據(jù)的采集、控制和數(shù)據(jù)處理的需求。顯示用 8 段 LED 數(shù)碼管,輸入采用按鍵方式。(2)功能和操作:加減乘除運(yùn)算和顯示,溢出判斷出錯(cuò)。上電后,屏幕初始化。計(jì)算。按下數(shù)字鍵,屏幕顯示要運(yùn)算的第一個(gè)數(shù)字,再按下符號(hào)鍵,然后再按下數(shù)字鍵,屏幕顯示要運(yùn)算的第二個(gè)數(shù)字,最后按下“”號(hào)鍵,

10、屏幕上顯示出計(jì)算結(jié)果。如果要再次計(jì)算,可以按下“CLC”鍵清零,或者按下單片機(jī)的復(fù)位鍵,重新初始化。2.2數(shù)碼管原理七段數(shù)碼顯示管七段數(shù)碼管的顯示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上OFE所以SP上為伏不亮其余為TTL高電平,全亮則顯示為。采用共陰極連接:圖2-22.2.1動(dòng)態(tài)掃描在本電路中,使用的是動(dòng)態(tài)掃描顯示方法。在動(dòng)態(tài)LED顯示程序中,需要不停地掃描字位口,從而實(shí)現(xiàn)不同字位的數(shù)據(jù)的動(dòng)態(tài)顯示效果。動(dòng)態(tài)借口采用各數(shù)碼管循環(huán)輪流顯示的方法,由于一次只能讓一個(gè)數(shù)碼管顯示,因此,要顯示6位的數(shù)據(jù),必須經(jīng)過(guò)讓數(shù)碼管一個(gè)一個(gè)輪流顯示才可以,同時(shí)每個(gè)數(shù)碼管顯示的時(shí)間大約在1ms到5

11、ms之間,所以為了保證正確顯示,我們必須每隔1ms,就得刷新一個(gè)數(shù)碼管。而這刷新時(shí)間我們采用單片機(jī)的定時(shí)/計(jì)數(shù)器0來(lái)控制,每定時(shí)1ms對(duì)數(shù)碼管刷新一次,T0采用方式2。在進(jìn)行數(shù)碼顯示的時(shí)候,要對(duì)顯示單元開(kāi)辟6個(gè)顯示緩沖區(qū),每個(gè)顯示緩沖區(qū)裝有顯示的不同數(shù)據(jù)即可。對(duì)于現(xiàn)實(shí)的字形碼數(shù)據(jù)我們采用查表方法來(lái)完成。數(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ù)碼管都接收到相同

12、的字形碼,但究竟是那個(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ò)程中,每位數(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端口,而且功耗更低圖2-2 七段數(shù)碼管的顯示顯示數(shù)值a b c d e f g dop 驅(qū)

13、動(dòng)代碼(16進(jìn)制)01 1 1 1 1 1 1 1 0x3fH1 0 0 0 0 0 1 1 00x06H2 1 1 0 1 1 0 1 00x5bH3 1 1 1 1 0 0 1 00x4fH4 0 1 1 0 0 1 1 00x66H5 1 0 1 1 0 1 1 00x6bH6 1 0 1 1 1 1 1 00x7dH7 1 1 1 0 0 0 0 00x07H8 1 1 1 1 1 1 1 10x7fH9 1 1 1 0 1 1 1 10x6fH2.3 4X4鍵盤(pán)的工作原理矩陣鍵盤(pán)又稱為行列式鍵盤(pán),它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤(pán)。在行線和列線的每一個(gè)交叉點(diǎn)上

14、,設(shè)置一個(gè)按鍵。這樣鍵盤(pán)中按鍵的個(gè)數(shù)是4×4個(gè)。這種行列式鍵盤(pán)結(jié)構(gòu)能夠有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。圖2-3為ME300B矩陣鍵盤(pán)電路圖,行線接P1.4P1.7,列線接P1.0P1.3。圖2-4按鍵排列 圖2-3 矩陣鍵盤(pán)電路圖2-4按鍵排列2.4 計(jì)算器控制線路圖 圖2-5 單片機(jī)晶振電路圖2-6 復(fù)位電路 2.5計(jì)算器控制線路圖圖2-7 計(jì)算器線路圖三、計(jì)算器系統(tǒng)詳細(xì)軟件設(shè)計(jì)在程序設(shè)計(jì)方法上,模塊化程序設(shè)計(jì)是單片機(jī)應(yīng)用中最常用的程序設(shè)計(jì)方法。設(shè)計(jì)的中心思想是把一個(gè)復(fù)雜應(yīng)用程序按整體功能劃分成若干相對(duì)獨(dú)立的程序模塊,各模塊可以單獨(dú)設(shè)計(jì)、編程和調(diào)試,然后組合起來(lái)。這種方法便

15、于設(shè)計(jì)和調(diào)試,容易實(shí)現(xiàn)多個(gè)程序共存,但各個(gè)模塊之間的連接有一定的難度。根據(jù)需要我們可以采用自上而下的程序設(shè)計(jì)方法,此方法先從主程序開(kāi)始設(shè)計(jì),然后再編制各從屬程序和子程序,層層細(xì)化逐步求精,最終完成一個(gè)復(fù)雜程序的設(shè)計(jì)。這種方法比較符合人們的日常思維,缺點(diǎn)是一級(jí)的程序錯(cuò)誤會(huì)對(duì)整個(gè)程序產(chǎn)生影響。主程序流程圖如下圖3-1:輸入一個(gè)數(shù)輸入運(yùn)算符號(hào)開(kāi)始 初始化輸入另一數(shù)判斷結(jié)果是否 NO小于999999YESE輸出 圖3-1 主程序流程圖3.1計(jì)算器控制算法實(shí)現(xiàn)void main()flag1=0;/標(biāo)志關(guān)機(jī)while(1)if(keyscan()=15)/開(kāi)機(jī)檢測(cè)flag1=1;/標(biāo)志開(kāi)機(jī)shu1=sh

16、u2=fuhao=flag_shu=newkey=0;/初始化變量while(flag1)if(!flag_fuhao)display(shu1);else display(shu2);key_shu=keyscan();if(newkey=1)/有新鍵值if(key_shu=15)/按下ON/C鍵,清零flag_fuhao=update=0;shu1=shu2=fuhao=flag_shu=newkey=0;error=0;else if(key_shu=14&&flag_shu=1&&fuhao)/按下"="switch(fuhao)ca

17、se 10:shu1=shu2+shu1;break;case 11:shu1=shu2-shu1;break;case 12:shu1=shu2*shu1;break;case 13:shu1=shu2/shu1;break;flag_fuhao=0;fuhao=0;update=1; else if(key_shu>=0)&&(key_shu<=9)/按下數(shù)字鍵if(update)shu1=0;if(shu1<100000)shu1=key_shu+shu1*10;flag_shu=1;update=0;flag_fuhao=0;else if(key_s

18、hu>=10)&&(key_shu<=13)/按下運(yùn)算符flag_fuhao=1;update=0;if(flag_shu=1)if(fuhao=0)shu2=shu1;shu1=0;fuhao=key_shu;flag_shu=2;else switch(fuhao)case 10:shu2=shu2+shu1;break;case 11:shu2=shu2-shu1;break;case 12:shu2=shu2*shu1;break;case 13:shu2=shu2/shu1;break;shu1=0;fuhao=key_shu;else if(flag_s

19、hu=2)fuhao=key_shu;newkey=0;四、系統(tǒng)調(diào)試4.1基于PROTEUS的電路仿真PROTEUS嵌入式系統(tǒng)仿真與開(kāi)發(fā)平臺(tái)是由英國(guó)公司開(kāi)發(fā)(授權(quán)風(fēng)標(biāo)科技公司為中國(guó)大陸總代理)的EDA工具軟件,是目前世界上最先進(jìn)最完整的嵌入式系統(tǒng)設(shè)計(jì)和仿真平臺(tái)。Proteus軟件有十多年的歷史,在全球廣泛使用,除了其具有和其它EDA工具一樣的原理布圖、PCB自動(dòng)或人工布線及電路仿真的功能外,其革命性的功能是,他的電路仿真是互動(dòng)的,針對(duì)微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實(shí)現(xiàn)實(shí)時(shí)調(diào)試,如有顯示及輸出,還能看到運(yùn)行后輸入輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等

20、,您不需要?jiǎng)e的,Proteus為您建立了完備的電子設(shè)計(jì)開(kāi)發(fā)環(huán)境!真正實(shí)現(xiàn)了在沒(méi)有目標(biāo)原形時(shí)就可對(duì)系統(tǒng)進(jìn)行調(diào)試,測(cè)試和驗(yàn)證。 4.1.1用PROTEUS 繪制原理圖運(yùn)行PROTEUS VSM 的ISIS 后出現(xiàn)相應(yīng)的界面, 點(diǎn)狀的柵格區(qū)域?yàn)槔L圖區(qū)。左側(cè)的上方為電路圖概覽區(qū), 下方是元器件列表區(qū)。單擊P 后出現(xiàn)的Pick Device添加元器件的對(duì)話框, 輸入所要添加的器件名稱, 則該器件就會(huì)出現(xiàn)在右側(cè), 單擊OK 按鈕, 完成一個(gè)元器件的添加。重復(fù)以上過(guò)程, 添加好電路中所需的元器件。在元器件列表區(qū)選中某元器件后, 在電路圖概覽區(qū)會(huì)出現(xiàn)該元器件, 用鼠標(biāo)將其拖至繪圖區(qū), 將所有需要的元器件在繪圖

21、區(qū)放置好, 即可開(kāi)始連線。連線方法很簡(jiǎn)單, 將鼠標(biāo)移至元器件引腳后會(huì)出現(xiàn)一個(gè)小十字, 單擊鼠標(biāo)左鍵后移動(dòng)鼠標(biāo), 將線引至某一引腳處會(huì)再次出現(xiàn)小十字, 再次單擊左鍵就完成了一條連線。在布線時(shí), 如果需要轉(zhuǎn)彎,可以在轉(zhuǎn)彎處單擊鼠標(biāo)左鍵。圖4-1就是繪制完成的電路圖。 圖4-1 在PROTEUS繪制的電路圖4.1.2 PROTEUS 對(duì)單片機(jī)內(nèi)核的仿真電路圖繪制完成后, 再添加AT89C52 的應(yīng)用程序。將鼠標(biāo)移至AT89C52 上, 單擊鼠標(biāo)右鍵使之處于選中狀態(tài), 在該器件上單擊左鍵, 打開(kāi)如圖4-2所示的對(duì)話框。在 Program File 欄添加編譯好的十六進(jìn)制格式的程序文件AA.hex(可以

22、接受3 種格式的文件) , 單擊OK 按鈕完成程序添加工作,圖4-2。 下面就可以進(jìn)行系統(tǒng)仿真了。單擊主界面下方的按鈕開(kāi)始系統(tǒng)仿真。PROTEUS 所進(jìn)行的是一種交互式仿真, 在仿真進(jìn)行中可以對(duì)各控制按鈕、開(kāi)關(guān)等進(jìn)行操作, 系統(tǒng)對(duì)輸入的響應(yīng)會(huì)被真實(shí)的反映出來(lái)。仿真結(jié)果如圖4-3。開(kāi)始仿真后,開(kāi)關(guān),按鈕通過(guò)鼠標(biāo)單擊來(lái)改變狀態(tài),所改變狀態(tài)的結(jié)果會(huì)在LED和數(shù)碼管顯示出來(lái)。仿真結(jié)果與設(shè)計(jì)方案相符。圖4-2為AT89C52添加程序文件圖4-3計(jì)算器仿真界面4.2 計(jì)算器硬件調(diào)試按照系統(tǒng)硬件連線圖連接好系統(tǒng)并調(diào)試 (由于個(gè)人原因沒(méi)有做實(shí)物調(diào)試,只有軟件測(cè)試)1、調(diào)試程序(1)把編寫(xiě)好的16進(jìn)制文件(jt

23、d.hex) 輸入單片機(jī)AT89S52仿真器和對(duì)其進(jìn)行初始化。(2)給實(shí)驗(yàn)板進(jìn)行通電,觀察運(yùn)行結(jié)果,不一致則跳到第一步進(jìn)行反復(fù)調(diào)試,直到與預(yù)定目的一致。2、硬件調(diào)試中常見(jiàn)故障:(1)邏輯錯(cuò)誤:它是由設(shè)計(jì)錯(cuò)誤或加工過(guò)程中的工藝性錯(cuò)誤所造成的。這類錯(cuò)誤包括錯(cuò)線、開(kāi)路、短路等。(2元器件失效:有兩方面的原因:一是器件本身已損壞或性能不符合要求;二是組裝錯(cuò)誤造成元件失效,如電解電容、二極管的極性錯(cuò)誤、集成電路安裝方向錯(cuò)誤等。(3)可靠性差:引起可靠性差的原因很多,如金屬化孔、接插件接觸不良會(huì)造成統(tǒng)時(shí)好時(shí)壞,經(jīng)不起振動(dòng);走線和布局不合理也會(huì)引起系統(tǒng)可靠性差。(4)電源故障:若樣機(jī)有電源故障,則加電后很容

24、易造成器件損壞。電源故障包括電壓值不符合設(shè)計(jì)要求,電源引線和插座不對(duì),功率不足,負(fù)載能力差等。調(diào)試方法:包括多級(jí)調(diào)試和聯(lián)機(jī)調(diào)試。在調(diào)試過(guò)程中要針對(duì)可能出現(xiàn)的故障認(rèn)真分析,直至檢查出原因并且排除。五、結(jié) 論通過(guò)這次單片機(jī)課程設(shè)計(jì),不僅加深了對(duì)單片機(jī)理論的理解,將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且還學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎(chǔ)上進(jìn)行改進(jìn),使之功能不斷完善,成為真己的東西。設(shè)計(jì)結(jié)果能夠符合題意,成功完成了此次課程設(shè)計(jì)要求,不只在乎這一結(jié)果,更加在乎的,是這個(gè)過(guò)程。這個(gè)過(guò)程中,花費(fèi)了大量的時(shí)間和精力。在高老師的精心指導(dǎo)和嚴(yán)格要求下,獲得了豐富的理論

25、知識(shí),極大地提高了實(shí)踐能力,單片機(jī)領(lǐng)域這對(duì)我今后進(jìn)一步學(xué)習(xí)及工作有極大的幫助。參 考 文 獻(xiàn):1 何立民.單片機(jī)應(yīng)用技術(shù)大全.北京:北京航空航天大學(xué)出版社, 1993.2 譚浩強(qiáng).單片機(jī)課程設(shè)計(jì).北京:清華大學(xué)出版社,1989.3 張毅剛,彭喜元.單片機(jī)原理及應(yīng)用M,北京:電子工業(yè)出版社,2008.附1:硬件仿真圖附2:程序清單#include <reg52.H>#define uchar unsigned char#define uint unsigned int#define duan P0/數(shù)碼管顯示段選定義#define wei P2/數(shù)碼管顯示位選定義#define ke

26、y P3/鍵盤(pán)接口定義sbit OFF = P10;/關(guān)機(jī)鍵定義float shu1,shu2;/進(jìn)行運(yùn)算的兩個(gè)變量數(shù)uchar num;/鍵盤(pán)掃描返回值char flag1,flag_shu,flag_fuhao,fuhao,newkey,update;/flag1開(kāi)機(jī)標(biāo)志newkey新按鍵標(biāo)志,fuhao運(yùn)算符,update表示等于號(hào)/之后緊接著輸入的是數(shù)的話則清零shu1char key_shu;/按鍵值char ge=0xdf;bit error=0;char code Wela=0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/六位數(shù)碼管的位選unsigned char

27、code Duan=0x3f,0x06,0x5b,/ 0 1 20x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00; /3 4 5 6 7 8 9 無(wú)顯示共陰極數(shù)碼管uchar keyscan();/鍵盤(pán)掃描函數(shù)void display(float);/數(shù)碼管顯示函數(shù)void delay(uint i)/延時(shí)函數(shù)while(i-);/* 主函數(shù)*/void main()flag1=0;/標(biāo)志關(guān)機(jī)while(1)if(keyscan()=15)/開(kāi)機(jī)檢測(cè)flag1=1;/標(biāo)志開(kāi)機(jī)shu1=shu2=fuhao=flag_shu=newkey=0;/初始化變量while

28、(flag1)if(!flag_fuhao)display(shu1);else display(shu2);key_shu=keyscan();if(newkey=1)/有新鍵值if(key_shu=15)/按下ON/C鍵,清零flag_fuhao=update=0;shu1=shu2=fuhao=flag_shu=newkey=0;error=0;else if(key_shu=14&&flag_shu=1&&fuhao)/按下"="switch(fuhao)case 10:shu1=shu2+shu1;break;case 11:shu

29、1=shu2-shu1;break;case 12:shu1=shu2*shu1;break;case 13:shu1=shu2/shu1;break;flag_fuhao=0;fuhao=0;update=1; else if(key_shu>=0)&&(key_shu<=9)/按下數(shù)字鍵if(update)shu1=0;if(shu1<100000)shu1=key_shu+shu1*10;flag_shu=1;update=0;flag_fuhao=0;else if(key_shu>=10)&&(key_shu<=13)/按

30、下運(yùn)算符flag_fuhao=1;update=0;if(flag_shu=1)if(fuhao=0)shu2=shu1;shu1=0;fuhao=key_shu;flag_shu=2;else switch(fuhao)case 10:shu2=shu2+shu1;break;case 11:shu2=shu2-shu1;break;case 12:shu2=shu2*shu1;break;case 13:shu2=shu2/shu1;break;shu1=0;fuhao=key_shu;else if(flag_shu=2)fuhao=key_shu;newkey=0;/顯示函數(shù)/void

31、 display(float dis_shu)if(dis_shu>999999)error=1;if(!error)long zhengshu=(long)dis_shu;char dis_flag,dis_aa,dis_zero=0;uchar dis_data6=0,0,0,0,0,0,xiaoshu6=0,0,0,0,0,0;ge=0xdf;if(zhengshu>99999) dis_flag=6;else if(zhengshu>9999) dis_flag=5;else if(zhengshu>999) dis_flag=4;else if(zhengsh

32、u>99) dis_flag=3;else if(zhengshu>9) dis_flag=2;else dis_flag=1;dis_shu=dis_shu-zhengshu;for(dis_aa=0;(dis_aa<6-dis_flag)&&(dis_shu=(dis_shu-(char)dis_shu)*10);dis_aa+)xiaoshudis_aa=(long)dis_shu;for(dis_aa=0;(dis_aa<6-dis_flag);dis_aa+)/小數(shù)部分顯示if(dis_zero|xiaoshu5-dis_flag-dis_aa

33、)duan=Duanxiaoshu5-dis_flag-dis_aa;wei=ge;ge>>=1;delay(100);wei=0xff;dis_zero=1;for(dis_aa=0;dis_aa<dis_flag;dis_aa+) dis_datadis_aa=zhengshu%10;zhengshu=zhengshu/10;/數(shù)碼管段選 for(dis_aa=0;dis_aa<dis_flag;dis_aa+) if(0xdf!=ge&&dis_aa=0)duan=Duandis_datadis_aa|0x80;wei=ge;ge>>=1;delay(100);wei=0xff;elseduan=Duandis_datadis_aa;wei=ge;ge>>=1;delay(100);wei=0xff;/數(shù)碼管位選 else duan=0x79;/計(jì)算結(jié)果溢出時(shí),顯示”E“wei=0xfe;delay(100);wei=0xff;/鍵盤(pán)掃描/uchar keyscan()/1key=0xfe;if(key!=0xfe)delay(500);if(key!=0xfe)switch(key)case 0xee:num=7;break;case 0

溫馨提示

  • 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)論