《單片機(jī)原理及應(yīng)用》期末課程設(shè)計(jì)計(jì)算器模擬系統(tǒng)

上傳人:仙*** 文檔編號(hào):28367589 上傳時(shí)間:2021-08-27 格式:DOC 頁(yè)數(shù):26 大?。?36KB
收藏 版權(quán)申訴 舉報(bào) 下載
《單片機(jī)原理及應(yīng)用》期末課程設(shè)計(jì)計(jì)算器模擬系統(tǒng)_第1頁(yè)
第1頁(yè) / 共26頁(yè)
《單片機(jī)原理及應(yīng)用》期末課程設(shè)計(jì)計(jì)算器模擬系統(tǒng)_第2頁(yè)
第2頁(yè) / 共26頁(yè)
《單片機(jī)原理及應(yīng)用》期末課程設(shè)計(jì)計(jì)算器模擬系統(tǒng)_第3頁(yè)
第3頁(yè) / 共26頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《《單片機(jī)原理及應(yīng)用》期末課程設(shè)計(jì)計(jì)算器模擬系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《單片機(jī)原理及應(yīng)用》期末課程設(shè)計(jì)計(jì)算器模擬系統(tǒng)(26頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、數(shù)理與信息工程學(xué)院?jiǎn)纹瑱C(jī)原理及應(yīng)用期末課程設(shè)計(jì)計(jì)算器模擬系統(tǒng) 數(shù)理與信息工程學(xué)院?jiǎn)纹瑱C(jī)原理及應(yīng)用期末課程設(shè)計(jì) 題 目: 計(jì)算器模擬系統(tǒng) 專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(專(zhuān)升本) 班 級(jí): 07計(jì)專(zhuān)升本 姓 名: 學(xué) 號(hào): 指導(dǎo)老師: 成 績(jī): ( 2008.6 )目 錄 第一節(jié) 引 言21.1 AT89C51單片機(jī)介紹21.2 LED數(shù)碼管顯示器概述51.3 輸入設(shè)備鍵盤(pán)的簡(jiǎn)述6第二節(jié) 系統(tǒng)總體方案及硬件設(shè)計(jì)72.1 設(shè)計(jì)要求72.2 設(shè)計(jì)方案72.3 硬件系統(tǒng)設(shè)計(jì)72.3.1時(shí)鐘電路設(shè)計(jì)72.3.2復(fù)位電路82.3.3顯示驅(qū)動(dòng)電路82.3.4蜂鳴器提示9第三節(jié) 軟件設(shè)計(jì)103.1鍵盤(pán)的掃描103

2、.2按鍵的處理113.3 動(dòng)態(tài)數(shù)碼顯示12第四節(jié) Proteus軟件仿真134.1 Proteus ISIS簡(jiǎn)介134.2 Proteus工作過(guò)程134.2.1加法演示結(jié)果144.2.2減法演示結(jié)果144.2.3乘法演示結(jié)果154.2.4除法演示結(jié)果16結(jié) 束 語(yǔ)27參考文獻(xiàn)28計(jì)算器模擬系統(tǒng)數(shù)理與信息工程學(xué)院 07計(jì)算機(jī)專(zhuān)升本 指導(dǎo)教師: 第一節(jié) 引 言 本設(shè)計(jì)是一個(gè)計(jì)算器模擬系統(tǒng),可以實(shí)現(xiàn)加減乘除的運(yùn)算以及對(duì)計(jì)算器的數(shù)字信息的輸入和運(yùn)算結(jié)果并且顯示在相應(yīng)的LED上,輸入完畢要求有聲音提示。對(duì)于計(jì)算器模擬系統(tǒng)的實(shí)現(xiàn),很多種語(yǔ)言都可以實(shí)現(xiàn),但C語(yǔ)言是我們學(xué)到的一種高級(jí)語(yǔ)言程序,用它來(lái)實(shí)現(xiàn)程序較

3、為簡(jiǎn)單,易于實(shí)現(xiàn)。又由于要求模擬的計(jì)算器顯示8位數(shù)字,所以采用八位LED動(dòng)態(tài)顯示,為了簡(jiǎn)化線路采用以軟件為主的接口方法,即不使用專(zhuān)門(mén)的硬件譯碼器,而采用軟件程序進(jìn)行譯碼。輸出采用動(dòng)態(tài)掃描的方式,每次中斷時(shí)間一到,選通所要顯示那一個(gè)的L ED ,并對(duì)其送相應(yīng)的二進(jìn)制代碼,使其顯示一位字符。中斷時(shí)間很短,人眼分辨不出,所以可以實(shí)現(xiàn)數(shù)字一起顯示出來(lái)由于輸入采用4X4矩陣式鍵盤(pán),所以本設(shè)計(jì)避免了I/O口擴(kuò)展使程序簡(jiǎn)化。對(duì)于鍵盤(pán)為了消除抖動(dòng),需要進(jìn)行延遲,再判斷,確實(shí)有鍵按下后,可以根據(jù)該行不同的值用選擇分支語(yǔ)句進(jìn)行相應(yīng)的操作。 八個(gè)引腳用來(lái)掃描鍵盤(pán)的輸入,八個(gè)引腳用來(lái)驅(qū)動(dòng)八位LED顯示,八個(gè)引腳用作八

4、位LED的位選信號(hào)。當(dāng)顯示器輸出大于八位時(shí),可以在剩下的I/O口中任意選一個(gè)用來(lái)使一揚(yáng)聲器發(fā)出聲音表示輸出超出預(yù)定的范圍。本設(shè)計(jì)實(shí)現(xiàn)功能:(1)計(jì)算器最多只能顯示8位數(shù)字,開(kāi)機(jī)運(yùn)行時(shí),只有數(shù)碼管最低位顯示為“0”,其余位全部不顯示;(2)具有44鍵盤(pán),分別表示09、/ 、和清零鍵CL,輸入的數(shù)字從設(shè)計(jì)的鍵盤(pán)輸入;(3)第一次按下時(shí),顯示“D1”;第二次按下時(shí),顯示“D1D2”;第三次按下時(shí),顯示“D1D2D3”,8個(gè)全顯示完畢,再按下按鍵下時(shí),發(fā)出“嘀”提示音;(4)可以對(duì)計(jì)算結(jié)果小于256的兩個(gè)無(wú)符號(hào)數(shù)進(jìn)行加、減、乘、除運(yùn)算,并顯示計(jì)算結(jié)果。(5)結(jié)果溢出時(shí)發(fā)出“嘀”報(bào)警聲。1.1 AT89

5、C51單片機(jī)介紹AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱(chēng)單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C單片

6、機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。圖1-1 AT89C51結(jié)構(gòu)圖管腳說(shuō)明: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ù)/地址的第八位。在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í),將輸出電流,這

7、是由于內(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)部上拉的緣故。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)部上拉

8、電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 RST:復(fù)位輸入

9、。當(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í), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在

10、由外部程序存儲(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í)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩

11、均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。芯片擦除:整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器

12、,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。1.2 LED數(shù)碼管顯示器概述LED,發(fā)光二極管,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。LED的心臟是一個(gè)半導(dǎo)體的晶片,晶片的一端附在一個(gè)支架上,一端是負(fù)極,另一端連接電源的正極,使整個(gè)晶片被環(huán)氧樹(shù)脂封裝起來(lái)。半導(dǎo)體晶片由兩部分組成,一部分是P型半導(dǎo)體,在它里面空穴占主導(dǎo)地位,另一端是N型半導(dǎo)體,在這邊主要是電子。但這兩種半導(dǎo)體連接起來(lái)的時(shí)候,它們之間就形成一個(gè)“P-N結(jié)”。當(dāng)電流通過(guò)導(dǎo)線作用于這個(gè)晶片的時(shí)候,電子就會(huì)被推向P區(qū),在P區(qū)里電子跟空穴復(fù)合,然后就會(huì)以光子的形式發(fā)出能量,這就是LED發(fā)光的原理。而光的波長(zhǎng)也就是光的顏色,是由

13、形成P-N結(jié)的材料決定的。LED的內(nèi)在特征決定了它是最理想的光源去代替?zhèn)鹘y(tǒng)的光源,它有著廣泛的用途。七段LED有7個(gè)發(fā)光二極管按”日”字形排列,所有二極管的陽(yáng)極或陰極連在一起。當(dāng)某個(gè)發(fā)光二極管的陰極接低電平或陽(yáng)極接高電平是時(shí),對(duì)應(yīng)二極管點(diǎn)亮,根據(jù)不同的組合。形成不同的字符0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。 LED具有靜態(tài)和動(dòng)態(tài)顯示之分,動(dòng)態(tài)是一個(gè)字位一個(gè)字位各只LED輪流點(diǎn)亮,每個(gè)字位停留小于人的視覺(jué),好像LED是點(diǎn)亮的。LCD顯示器有分段式和點(diǎn)陣式兩種結(jié)構(gòu)。LCD是一種被動(dòng)顯示器,由于它的功耗極低,抗干擾能力強(qiáng),因而在低功耗的單片機(jī)系統(tǒng)中大量使用。1.3 輸入設(shè)

14、備鍵盤(pán)的簡(jiǎn)述鍵盤(pán)是有若干案件組成的開(kāi)關(guān)矩陣,他能實(shí)現(xiàn)簡(jiǎn)單的人機(jī)對(duì)話(huà)。而與計(jì)算機(jī)系統(tǒng)的鍵盤(pán)有兩類(lèi):一類(lèi)是編碼鍵盤(pán),即鍵盤(pán)上比合建的識(shí)別由專(zhuān)門(mén)硬件來(lái)實(shí)現(xiàn);另一類(lèi)是非編碼鍵盤(pán),即鍵盤(pán)輸入及閉合鍵的識(shí)別由軟件來(lái)完成。圖1-2 輸入設(shè)備鍵盤(pán)圖第二節(jié) 系統(tǒng)總體方案及硬件設(shè)計(jì)2.1 設(shè)計(jì)要求設(shè)計(jì)具體要求:(1)要求模擬的計(jì)算器至少顯示8位數(shù)字,開(kāi)機(jī)運(yùn)行時(shí),只有數(shù)碼管最低位顯示為“0”,其余位全部不顯示;(2)設(shè)計(jì)44鍵盤(pán),分別表示09、/ 、和清零鍵CL,輸入的數(shù)字從設(shè)計(jì)的鍵盤(pán)輸入;(3)第一次按下時(shí),顯示“D1”;第二次按下時(shí),顯示“D1D2”;第三次按下時(shí),顯示“D1D2D3”,8個(gè)全顯示完畢,再按下按

15、鍵下時(shí),給出“嘀”提示音;(4)可以對(duì)計(jì)算結(jié)果小于256的兩個(gè)無(wú)符號(hào)數(shù)進(jìn)行加法運(yùn)算,并顯示計(jì)算結(jié)果。對(duì)于、/、和的運(yùn)算為提高部分;(5)編寫(xiě)程序,用proteus軟件進(jìn)行仿真。報(bào)告中給出操作過(guò)程及運(yùn)行效果圖。2.2 設(shè)計(jì)方案(1)I/O口擴(kuò)展問(wèn)題本次設(shè)計(jì)要用到8個(gè)口作為輸出顯示LED的位選通信號(hào),8個(gè)口用作LED的驅(qū)動(dòng)而對(duì)于16個(gè)輸入鍵,可以用矩陣式4X4鍵盤(pán)僅用8個(gè)口來(lái)實(shí)現(xiàn),這樣可以節(jié)省I/O口,不過(guò)需要對(duì)各個(gè)鍵盤(pán)進(jìn)行動(dòng)態(tài)掃描。另外,還需要一個(gè)口作為輸入大于8位時(shí)的報(bào)警信號(hào)。這樣,還會(huì)剩余一些個(gè)I/O口。小于AT89C51的32個(gè)口,因此不需要進(jìn)行I/O口的擴(kuò)展。(2)語(yǔ)言的選擇根據(jù)設(shè)計(jì)要求

16、需完成加減乘除的算術(shù)運(yùn)算,若使用匯編語(yǔ)言來(lái)編程,語(yǔ)句可能會(huì)較多而且比較復(fù)雜,編起來(lái)會(huì)不大方便。而采用現(xiàn)在比較流行的C語(yǔ)言來(lái)編寫(xiě)會(huì)比較方便。2.3 硬件系統(tǒng)設(shè)計(jì)2.3.1時(shí)鐘電路設(shè)計(jì)本設(shè)計(jì)采用內(nèi)部時(shí)鐘產(chǎn)生方式。內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)比較穩(wěn)定。在XTAL1和XTAL2兩端跨接晶體或陶瓷諧振器,與內(nèi)部反相器構(gòu)成穩(wěn)定的自激振蕩器。晶振選用的是12MHZ的內(nèi)部振蕩方式,電路如圖:電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,電容值取33P。 圖2-1 內(nèi)部振蕩結(jié)構(gòu)圖2.3.2復(fù)位電路采用上電+按鍵復(fù)位電路如下,上電后,由于電容充電,使RST持續(xù)一段高電平時(shí)間。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能

17、使用使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電加開(kāi)關(guān)復(fù)位的操作。C3選擇30uF,R2選擇10K。這不僅能使單片機(jī)復(fù)位,而且還能使單片機(jī)的外圍芯片也同時(shí)復(fù)位。圖2-2 復(fù)位電路圖2.3.3顯示驅(qū)動(dòng)電路數(shù)碼管發(fā)光需要一定的電流,但單片機(jī)本身不可能提供足夠的電流,即拉電流和灌電流不能滿(mǎn)足要求,所以想要數(shù)碼管正常發(fā)光,就要加適當(dāng)?shù)尿?qū)動(dòng)電路。首先考慮數(shù)碼管的段碼輸出端,單片機(jī)的P0口可帶8個(gè)TTL負(fù)載,而其他的I/O口只能帶4個(gè)TTL負(fù)載,所以采用P0口作數(shù)碼管的段碼輸出端,但P0口是集電極開(kāi)路輸出,要想輸出拉電流,必須加上拉電阻,提高驅(qū)動(dòng)能力,電路如圖所示。圖2-3 顯示驅(qū)動(dòng)電路圖2.3.4蜂鳴器提

18、示在89s52的p3.6連一個(gè)蜂鳴器,在輸入8位數(shù)后,再輸入數(shù)時(shí),從p3.6腳輸入一低電平,并延時(shí)一定時(shí)間,蜂鳴器發(fā)出一“嘀”的聲音,提醒使用者輸入也達(dá)8位數(shù)。為限制電流,在電路中加一限流電阻。圖2-4 蜂鳴器電路圖第三節(jié) 軟件設(shè)計(jì)3.1鍵盤(pán)的掃描所有列鍵盤(pán)送高電平逐行送底電平進(jìn)行掃描是達(dá)姆否達(dá)姆進(jìn)行按鍵處理否達(dá)姆是達(dá)姆某列值為低電平該列值仍為低電平開(kāi)始延時(shí) 圖3-1 鍵盤(pán)掃描流程圖對(duì)鍵盤(pán)的識(shí)別可以對(duì)鍵盤(pán)所有列送高電平1,然后逐行送低電平,并判斷列的值是否全為高電平,若不是說(shuō)明該行有鍵按下,為了消除抖動(dòng),需要進(jìn)行一延遲環(huán)節(jié),再判斷,確實(shí)有鍵按下后,可以根據(jù)該行不同的值用選擇分支語(yǔ)句進(jìn)行相應(yīng)的操

19、作。3.2按鍵的處理數(shù)值處理存儲(chǔ)并等待第二個(gè)操作數(shù)否否顯示并存儲(chǔ)數(shù)據(jù)運(yùn)算并顯示清零清零鍵 為零第一個(gè)按鍵操作數(shù)有有效鍵按下等于鍵清零是是是是否否否圖3-2 鍵盤(pán)處理流程圖當(dāng)有有效鍵按下后,需要對(duì)它進(jìn)行一系列判斷和處理。3.3 動(dòng)態(tài)數(shù)碼顯示數(shù)碼管采取的動(dòng)態(tài)掃描,每一位數(shù)碼管被點(diǎn)亮一小段時(shí)間,并且每只有一個(gè)被點(diǎn)亮次,就又熄滅,但當(dāng)掃描頻率大于一定時(shí),人眼就不能分辨出閃爍的現(xiàn)象,看起來(lái)就像一直被點(diǎn)亮,若掃描頻率太低,就會(huì)出現(xiàn)閃爍現(xiàn)象。第四節(jié) Proteus軟件仿真4.1 Proteus ISIS簡(jiǎn)介Proteus的ISIS是一款Labcenter出品的電路分析實(shí)物仿真系統(tǒng),可仿真各種電路和IC,并支

20、持單片機(jī),元件庫(kù)齊全,使用方便,是不可多得的專(zhuān)業(yè)的單片機(jī)軟件仿真系統(tǒng)。該軟件的特點(diǎn): 全部滿(mǎn)足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類(lèi)產(chǎn)品中具有明顯的優(yōu)勢(shì)。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS一232動(dòng)態(tài)仿真、1 C調(diào)試器、SPI調(diào)試器、鍵盤(pán)和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。 目前支持的單片機(jī)類(lèi)型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。 支持大量的存儲(chǔ)器和外圍芯片。總之該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟

21、件,功能極其強(qiáng)大 ,可仿真51、AVR、PIC。4.2 Proteus工作過(guò)程單擊屏幕左下方的“開(kāi)始”“程序”“Proteus 7 Professional” “ISIS 7 Professional”,出現(xiàn)如圖所示屏幕,表明進(jìn)入Proteus ISIS集成環(huán)境。圖4-1 Proteus界面圖4.2.1加法演示結(jié)果在鍵盤(pán)上依次按下如圖所示:圖4-2-1 按111LED顯示圖按下“+”號(hào)鍵后屏幕顯示如圖所示:圖4-2-2 按“+”號(hào)LED顯示圖在鍵盤(pán)上依次按下111 LED顯示如圖所示:圖4-2-3 按111LED顯示圖按下“=”號(hào)鍵后屏幕顯示正確結(jié)果222如圖所示:圖4-2-4 按“=”號(hào)11

22、1LED顯示圖4.2.2減法演示結(jié)果在鍵盤(pán)上依次按下87LED顯示如圖所示:圖4-2-5 按下87LED顯示圖按下“-”號(hào)鍵后屏幕顯示如圖所示:圖4-2-6 按“-”號(hào)LED顯示圖在鍵盤(pán)上依次按下32 LED顯示如圖所示:圖4-2-7 按下32LED顯示圖按下“=”號(hào)鍵后屏幕顯示正確結(jié)果55如圖所示:圖4-2-8 按“=”號(hào)LED顯示圖4.2.3乘法演示結(jié)果在鍵盤(pán)上依次按下35LED顯示如圖所示:圖4-2-9 按下35LED顯示圖按下“”號(hào)鍵后屏幕顯示如圖所示:圖4-2-10 按 “X”號(hào)LED顯示圖在鍵盤(pán)上依次按下12LED顯示如圖所示:圖4-2-11 按下12LED顯示圖按下“=”號(hào)鍵后屏

23、幕顯示正確結(jié)果420如圖所示:圖4-2-12 按“=”號(hào)LED顯示圖4.2.4除法演示結(jié)果在鍵盤(pán)上依次按下62LED顯示如圖所示:圖4-2-13 按下62LED顯示圖按下“”號(hào)鍵后屏幕顯示如圖所示:圖4-2-14 按“”號(hào)LED顯示圖在鍵盤(pán)上依次按下2LED顯示如圖所示:圖4-2-15 按下2LED顯示圖按下“=”號(hào)鍵后屏幕顯示正確結(jié)果31如圖所示:圖4-2-16 按“=”號(hào)LED顯示圖系統(tǒng)具體代碼如下:#include#includesbit P1_0=P10;sbit P3_5=P35;sbit P3_6=P36;sbit P3_7=P37;sbit P3_4=P34;unsigned i

24、nt num0,result;unsigned int number,num1;unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00;unsigned char code dispbitcode=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char dispbuf8=0,16,16,16,16,16,16,16;unsigned char disp8=0,16,16,16

25、,16,16,16,16;unsigned char dispbitcount;unsigned char temp;unsigned char i,j;unsigned char key;unsigned char keypres;unsigned char yunsuanfu; /*運(yùn)算標(biāo)志符*/bit alarmflag; /*溢出報(bào)警標(biāo)識(shí)符*/bit eq; void rresult() /*拆分result并送入顯示數(shù)組*/ i=0;number=result; if(number0) alarmflag=1; else for(i=0;i0) for(i=0;icount-1;i+

26、) *(p+count-1)=(*(p+count-1)*10; num0+=*(p+count-1); count-; return(num0);/*/void reset(void) for(i=0;i0) *(p+count)=*(p+count-1); count-; dispbuf0=key; /*中斷動(dòng)態(tài)顯示LED*/void t0(void) interrupt 1 TH0=(65536-4000) / 256; TL0=(65536-4000) % 256; P2=dispbitcodedispbitcount; P0=dispcodedispbufdispbitcount;

27、dispbitcount+; if (dispbitcount=8) dispbitcount=0; if (alarmflag=1) for(i=0;i50;i+) P1_0=P1_0; for(j=0;j0;i-) for(j=100;j0;j-); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: key=7; break; case 0x0d: key=8; break; case 0x0b: key=9; break; case 0x07: key

28、=10; break; /*加法*/ if (key=10) yunsuanfu=1; result=num1process(dispbuf,keypres); reset(); if (key=7&key10) keypres+; if(keypres=1) dispbuf0=key; else if(keypres8) alarmflag=1; temp=P3; temp=temp & 0x0f; while(temp!=0x0f) temp=P3; temp=temp & 0x0f; P3=0xff; /*掃描2*/ P3_5=0; temp=P3; temp=temp & 0x0f;

29、if (temp!=0x0f) for(i=50;i0;i-) for(j=100;j0;j-); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=11; break; if(key=11) /*減法*/ yunsuanfu=2; result=num1process(dispbuf,keypres)

30、; reset(); if (key=4) & (key7) keypres+; if(keypres=1) dispbuf0=key; else if(keypres8) alarmflag=1; temp=P3; temp=temp & 0x0f; while(temp!=0x0f) temp=P3; temp=temp & 0x0f; P3=0xff; /*掃描3*/ P3_6=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) for(i=50;i0;i-) for(j=100;j0;j-); temp=P3; temp=temp & 0x0f;

31、 if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: key=1;break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=12;break; /*乘法*/ if(key=12)yunsuanfu=3; result=num1process(dispbuf,keypres); reset(); if (key=1) & (key4) keypres+; if(keypres=1) dispbuf0=key; else if(ke

32、ypres=9) alarmflag=1; temp=P3; temp=temp & 0x0f; while(temp!=0x0f) temp=P3; temp=temp & 0x0f; P3=0xff; /*掃描4*/ P3_7=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) for(i=50;i0;i-) for(j=100;j0;j-); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: key=0; bre

33、ak; case 0x0d: key=13; break; case 0x0b: key=14; break; case 0x07: key=15; break; if(key=15) /*除法*/ yunsuanfu=4; result=num1process(dispbuf,keypres); reset(); if(key=14) reset(); eq=0;if(key=13) if(eq!=1) num1=num1process(dispbuf,keypres); reset(); calcul(); rresult(); if(key=0&keypres!=0) keypres+;

34、 if(keypres8) alarmflag=1; temp=P3; temp=temp & 0x0f; while(temp!=0x0f) temp=P3; temp=temp & 0x0f; 系統(tǒng)原理圖如下:圖4-2-17 系統(tǒng)原理圖結(jié) 束 語(yǔ)通過(guò)這次課程設(shè)計(jì),我對(duì)MCS-51單片機(jī)的學(xué)習(xí)有了進(jìn)一步的認(rèn)識(shí)。真正將課本上的理論知識(shí)聯(lián)系到了實(shí)際中。在這次設(shè)計(jì)中發(fā)現(xiàn)對(duì)單片機(jī)的硬件設(shè)計(jì),軟件設(shè)計(jì)掌握的深度不夠,但通過(guò)此次課程設(shè)計(jì),卻改變了很多,首先對(duì)于硬件電路的工作原理有了進(jìn)一步的學(xué)習(xí),同樣就有了進(jìn)一步的認(rèn)識(shí);其次軟件方面,在程序的設(shè)計(jì),程序的調(diào)試方面都學(xué)到了很多東西,學(xué)會(huì)了 利用WAVE600

35、0系統(tǒng)調(diào)試程序,檢查其中的錯(cuò)誤并做相應(yīng)的修改,再將它連到電路中對(duì)它的實(shí)際運(yùn)行的結(jié)果有個(gè)直觀的了解。也通過(guò)查閱大量的書(shū)籍 進(jìn)一步提高了單片機(jī)語(yǔ)言編程的掌握,得到靈活的運(yùn)用。也在查閱資料中學(xué)習(xí)了好多他們的思路和方法。在已度過(guò)的大學(xué)的時(shí)間里我們大多數(shù)接觸的是專(zhuān)業(yè)基礎(chǔ)課。我們?cè)谡n堂上掌握的僅僅是專(zhuān)業(yè)基礎(chǔ)課的理論面,如何去鍛煉我們的實(shí)踐面?如何把我們所學(xué)到的專(zhuān)業(yè)基礎(chǔ)理論知識(shí)用到實(shí)踐中去呢?我想單片機(jī)課程設(shè)計(jì)就為我們提供了良好的實(shí)踐平臺(tái)。在剛開(kāi)始的時(shí)間余老師就和我們講了許多單片機(jī)運(yùn)用于實(shí)際方面的例的,那時(shí)我就被單片機(jī)牢牢吸引住,打算這學(xué)期一定要學(xué)好也像余老師那樣能作品,但到這次課程設(shè)計(jì)中我發(fā)現(xiàn)理論與實(shí)踐之

36、間真的距離很大,編寫(xiě)的程序從理論上沒(méi)有錯(cuò)誤,可就是不能運(yùn)行。雖然我用的是PROTUES仿真但我還是要去考慮一些關(guān)硬件的東西,這樣才能使自己的軟件程序與硬件配套,然后做出一份合格的作品。一開(kāi)始編寫(xiě)的程序混亂,缺乏邏輯性,甚至自己調(diào)試時(shí)都覺(jué)得很費(fèi)勁。通過(guò)翻閱資料才有所了解,后來(lái)通過(guò)老師的幫助,終于做出了一份相對(duì)比較滿(mǎn)意的程序。雖然我做的程序極其簡(jiǎn)單,但我實(shí)際收獲的卻遠(yuǎn)遠(yuǎn)不止這些。參考文獻(xiàn)1 張?chǎng)?,華臻,陳書(shū)謙.單片機(jī)原理及應(yīng)用.電子工業(yè)出版社,20062 周明德.微機(jī)計(jì)算機(jī)系統(tǒng)原理及應(yīng)用(第五版).清華大學(xué)出版社,20073 朱定華.單片機(jī)原理與接口技術(shù)(M).電子工業(yè)出版社,2001,44 劉源,李勛 單片機(jī)實(shí)用教程.北京航空航天大學(xué)出版社5 余發(fā)山.單片機(jī)原理及應(yīng)用技術(shù).中國(guó)礦業(yè)大學(xué)出版社,20046 康華光.電子技術(shù)基礎(chǔ). 高等教育出版社 7 呂淑萍.微型計(jì)算機(jī)原理及應(yīng)用.哈爾濱工程大學(xué)出版社, 2004 8 陸紅偉.微機(jī)原理實(shí)驗(yàn)與課程設(shè)計(jì)指導(dǎo)書(shū).中國(guó)電力出版社,2006 9 沙占友.單片機(jī)外圍電路設(shè)計(jì).電子工業(yè)出版社,200310 趙亮等.單片機(jī)c語(yǔ)言編程與實(shí)例.人民郵電出版社 25

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!