




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)訓(xùn)成績(jī)批閱教師日 期課程設(shè)計(jì)課程名稱(chēng) 單片機(jī)原理及接口技術(shù) 專(zhuān)業(yè)班級(jí) 電氣 學(xué) 號(hào) 2013118508 學(xué)生姓名 指導(dǎo)教師 實(shí)訓(xùn)地點(diǎn) 2015年07月17日摘要隨著社會(huì)的發(fā)展,科學(xué)的進(jìn)步,人們的生活水平在逐步的提高,尤其是微電子技術(shù)的發(fā)展,猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了, 單片機(jī)的應(yīng)用已經(jīng)越來(lái)越貼近生活,用單片機(jī)來(lái)實(shí)現(xiàn)一些電子設(shè)計(jì)也變得容易起來(lái)。近年來(lái),單片機(jī)以其體積小、價(jià)格廉、面向控制等獨(dú)特優(yōu)點(diǎn),在各種工業(yè)控制、儀器儀表、設(shè)備、產(chǎn)品的自動(dòng)化、智能化方面獲得了廣泛的應(yīng)用。與此同時(shí),單片機(jī)應(yīng)用系統(tǒng)的可靠性成為人們?cè)絹?lái)越關(guān)注的重要課題。影響可靠性的因素是多方面的,如構(gòu)成
2、系統(tǒng)的元器件本身的可靠性、系統(tǒng)本身各部分之間的相互耦合因素等。其中系統(tǒng)的抗干擾性能是系統(tǒng)可靠性的重要指標(biāo)。本設(shè)計(jì)采用80S51 芯片,實(shí)現(xiàn)了利用單片機(jī)進(jìn)行了一個(gè)簡(jiǎn)單計(jì)算器設(shè)計(jì)。允許對(duì)輸入數(shù)據(jù)進(jìn)行加減乘除運(yùn)算及LCD 顯示。實(shí)例所設(shè)計(jì)的計(jì)算器是用LCD1LM016L顯示的,當(dāng)然也可以用其他的器件顯示,如LED 顯示屏,這樣就可以顯示出更多的字符。科技的進(jìn)步告別了以前復(fù)雜的模擬電路,一塊幾厘米平方的單片機(jī)可以省去很多繁瑣的電路?,F(xiàn)在應(yīng)用較廣泛的是科學(xué)計(jì)算器,但在市場(chǎng)還是需要簡(jiǎn)易計(jì)算器,因?yàn)槠鋬r(jià)格低廉,設(shè)計(jì)簡(jiǎn)單,使用方便被廣泛的運(yùn)用于我們的日常生活之中。 目錄一、設(shè)計(jì)的大體思路1二、所用元件的詳細(xì)功
3、能11、運(yùn)算模塊AT89C5112、鍵盤(pán)輸入43、液晶模塊簡(jiǎn)介6三、計(jì)算器程序流程圖7四、總的設(shè)計(jì)圖8五、計(jì)算器C語(yǔ)言編程9六、功能實(shí)現(xiàn)截圖171、圖注釋172、圖注釋?zhuān)?83、圖注釋?zhuān)?94、圖注釋?zhuān)?05、圖注釋?zhuān)?1七、實(shí)訓(xùn)心得與體會(huì)22一、設(shè)計(jì)的大體思路我選到的本次課程設(shè)計(jì)的最終目的是要實(shí)現(xiàn)一個(gè)簡(jiǎn)單計(jì)算器,要求編寫(xiě)一個(gè)程序,每運(yùn)行一次可執(zhí)行程序,可以實(shí)現(xiàn)數(shù)的加減乘除四則運(yùn)算。比如,十進(jìn)制數(shù)的加減乘除四則運(yùn)算。我們?cè)?jīng)學(xué)習(xí)過(guò)兩個(gè)具體數(shù)字進(jìn)行加減法運(yùn)算,但是對(duì)于簡(jiǎn)單計(jì)算器用匯編語(yǔ)言實(shí)現(xiàn)難點(diǎn)在于寄存器所存的數(shù)據(jù)較少,很難實(shí)現(xiàn)多位數(shù)的四則運(yùn)算,C語(yǔ)言確有著解決匯編語(yǔ)言的優(yōu)點(diǎn),所以選用C語(yǔ)言完成
4、該程序的制作,首先運(yùn)用單片機(jī)AT89c51掃描4*4矩陣鍵盤(pán),從而實(shí)現(xiàn)按鍵的輸入功能,鍵盤(pán)的輸入是按照每行的電平掃描,并判斷按下數(shù)字鍵之后是否有符號(hào)鍵,如果沒(méi)有則在原數(shù)之后添加數(shù)字,如果按下符號(hào)接收符號(hào)后數(shù)據(jù),并判斷是否有等號(hào)鍵按下,如果按下,則調(diào)用運(yùn)算函數(shù)和輸出結(jié)果。二、所用元件的詳細(xì)功能1、運(yùn)算模塊AT89C51MCS-51單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多功能I/O等一臺(tái)計(jì)算機(jī)所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM/EPROM)、并行I/O 口、串行口、定時(shí)器/計(jì)數(shù)器、中
5、斷系統(tǒng)及特殊功能寄存器(SFR)。單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過(guò)不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,通過(guò)使用單片機(jī)編寫(xiě)的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性!因此我們采用單片機(jī)作為計(jì)算器的主要功能部件,可以進(jìn)行很快地實(shí)現(xiàn)運(yùn)算功能,如圖所示:第 2 頁(yè)單片機(jī)(AT89S51)的引腳功能51系列單片機(jī)8031、8051及89c51/89s51均采用40Pin封裝的雙列直接DIP結(jié)構(gòu)。上圖是它們的引腳配置:40個(gè)引腳中,正電源和地線(xiàn)兩根,外置石英振蕩器的時(shí)鐘線(xiàn)兩根,4組8位共32個(gè)I/O口,中斷口線(xiàn)與P3口線(xiàn)復(fù)用,如圖所示:完整引腳圖引腳介紹電源引腳:Vcc40腳正電
6、源腳,工作電壓為5V,另有AT89LV51工作電壓則是2.7-6V, 引腳功能一樣。GND20腳接地端。型號(hào)同樣為AT89C51的芯片,在其后面還有頻率編號(hào),有12,16,20,24MHz可選。大家在購(gòu)買(mǎi)和選用時(shí)要注意了。如AT89C51 24PC就是最高振蕩頻率為24MHz,40P6封裝的普通商用芯片。復(fù)位:在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上的高電平出現(xiàn)在此引腳時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0P3口均置1引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的0000H處開(kāi)始運(yùn)行程序。復(fù)
7、位操作不會(huì)對(duì)內(nèi)部RAM有所影響。當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。什么叫復(fù)位?復(fù)位是單片機(jī)重新執(zhí)行程序代碼的意思。8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位,如圖3-6所示。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電期間,此腳可接上備用電源, 以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。輸入輸出(I/O)引腳:P39-P32為P0.0-P0.7輸入輸出腳,稱(chēng)為P0口,是一個(gè)8位漏極開(kāi)路型雙向I/O口。內(nèi)部不帶上拉電阻,當(dāng)外接上拉電阻時(shí),P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載電路。通常在使用時(shí)外接上拉電阻,用來(lái)驅(qū)動(dòng)多
8、個(gè)數(shù)碼管。 在訪問(wèn)外部程序和外部數(shù)據(jù)存儲(chǔ)器時(shí),P0口是分時(shí)轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線(xiàn),不需要外接上拉電阻。P1-P8為P1.0-P1.7輸入輸出腳,稱(chēng)為P1口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/0口。P1口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。 通常在使用時(shí)外不需要外接上拉電阻,就可以直接驅(qū)動(dòng)發(fā)光二極管。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。P21-P28為P2.0-P2.7輸入輸出腳,稱(chēng)為P2口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P2口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接收高8位地址和控制信息。在訪問(wèn)外
9、部程序和16位外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址。而在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí)其引腳上的內(nèi)容在此期間不會(huì)改變。 P10-P17為P3.0-P3.7輸入輸出腳,稱(chēng)為P3口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P2口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載,這8個(gè)引腳還用于專(zhuān)門(mén)的第二功能。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。P1P3端口在做輸入使用時(shí),因內(nèi)部有上接電阻,被外部拉低的引腳會(huì)輸出一定的電流。除此之外P3端口還用于一些專(zhuān)門(mén)功能,如P3引腳兼用功能P3.0串行通訊輸入(RXD)P3.1串行通訊輸出(TXD)P3.2外部中斷0( INT0)P3.3外部中斷1(INT1)P3.4
10、定時(shí)器0輸入(T0)P3.5定時(shí)器1輸入(T1)P3.6外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通WRP3.7外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通RD控制或復(fù)用引腳:(1) ALE/PROG 30 訪問(wèn)外部存儲(chǔ)器時(shí),ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ALE端仍以不變的頻率輸出脈沖信號(hào)(此頻率是振蕩器頻率的1/6)。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),出現(xiàn)一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程時(shí),這個(gè)引腳用于輸入編程脈沖PROG(2) PSEN 29 該引是外部程序存儲(chǔ)器的選通信號(hào)輸出端。當(dāng)AT89C51由外部程序存儲(chǔ)器取指令或常數(shù)時(shí),每個(gè)機(jī)器周期輸出2個(gè)脈沖即兩次有效。但訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將不會(huì)有脈
11、沖輸出。(3) EA/Vpp 31 外部訪問(wèn)允許端。當(dāng)該引腳訪問(wèn)外部程序存儲(chǔ)器時(shí),應(yīng)輸入低電平。要使AT89S51只訪問(wèn)外部程序存儲(chǔ)器(地址為0000H-FFFFH),這時(shí)該引腳必須保持低電平。對(duì)Flash存儲(chǔ)器編程時(shí),用于施加Vpp編程電壓。2、鍵盤(pán)輸入當(dāng)無(wú)按鍵閉合時(shí),P10P13 與P14P17 之間開(kāi)路;當(dāng)有鍵閉合時(shí),與閉合鍵相連的兩條I/O 口線(xiàn)之間短路。判斷有無(wú)按鍵按下的方法是:第一步,置列線(xiàn)P14P17 為輸入狀態(tài),從行線(xiàn)P10P13 輸出低電平,讀入列線(xiàn)數(shù)據(jù),若某一列線(xiàn)為低電平,則該列線(xiàn)上有鍵閉合。第二步,行線(xiàn)輪流輸出低電平,從列線(xiàn)P14P17 讀入數(shù)據(jù),若有某一列為低電平,則對(duì)
12、應(yīng)行線(xiàn)上有鍵按下。綜合一二兩步的結(jié)果,可確定按鍵編號(hào)。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因此須等到按鍵釋放后,再進(jìn)行鍵功能操作,否則按一次鍵,有可能會(huì)連續(xù)多次進(jìn)行同樣的鍵操作。這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O 口資源,因此在很多情況下都不采用這種方式。為此,我們引入了矩陣鍵盤(pán)的應(yīng)用,采用四條I/O 線(xiàn)作為行線(xiàn),四條I/O 線(xiàn)作為列線(xiàn)組成鍵盤(pán)。在行線(xiàn)和列線(xiàn)的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤(pán)上按鍵的個(gè)數(shù)就為4×4個(gè)。這種行列式鍵盤(pán)結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O 口的利用率,如圖所示:鍵盤(pán)介紹:每個(gè)按鍵都有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩
13、陣的行線(xiàn)和列線(xiàn)分別通過(guò)兩并行接口和CPU通信。鍵盤(pán)的一端(列線(xiàn))通過(guò)電阻接VCC,而接地是通過(guò)程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤(pán)處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地;另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。3、液晶模塊簡(jiǎn)介L(zhǎng)M016L的結(jié)構(gòu)及功能LM016L液晶模塊采用HD44780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,
14、hd44780控制器由兩個(gè)8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計(jì)數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫(xiě)入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫(xiě)入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來(lái)存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼,CGROM由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種.8位字符編碼和字符的對(duì)應(yīng)關(guān)系Proteus仿真:使用P
15、roteus仿真1602-即LM016L-依照數(shù)據(jù)手冊(cè)說(shuō)明可能遇到困難,可以嘗試采用以下方案解決:1、數(shù)據(jù)手冊(cè)中可能介紹1602內(nèi)部D0D7已有上拉,可以使用P0口直接驅(qū)動(dòng)。在Proteus里L(fēng)M016L內(nèi)部可能沒(méi)有,應(yīng)該人為加上拉電阻。建議不要使用排阻,使用普通電阻一個(gè)一個(gè)拉應(yīng)該可以解決問(wèn)題;2、可能碰到不能檢測(cè)忙信號(hào)的問(wèn)題,嘗試使用延時(shí)把忙信號(hào)拖過(guò)去.引腳說(shuō)明1602字符型LCD通常有14條引腳線(xiàn)電路接口設(shè)計(jì),AT889C51的P0口作為數(shù)據(jù)的輸出端,P2.0和P2.1,P2.2作為控制信號(hào)的輸出端三、計(jì)算器程序流程圖 系統(tǒng)程序流程圖 LCD顯示流程圖開(kāi)始預(yù)設(shè)數(shù)據(jù)顯示開(kāi)始調(diào)整指針指向下一行
16、LCD初始化功能設(shè)置系統(tǒng)初始化LCD初始化顯示結(jié)束?顯示RAM區(qū)清 N顯示指針指向下一行處理按鍵值 Y待顯示數(shù)據(jù)送緩沖判斷當(dāng)前狀態(tài)結(jié)束LCD顯示四、總的設(shè)計(jì)圖簡(jiǎn)易計(jì)算器主要包括:鍵盤(pán)電路、顯示電路。以下是設(shè)計(jì)的整個(gè)系統(tǒng)的圖五、計(jì)算器C語(yǔ)言編程#include<reg51.h> /頭文件 #define uint unsigned int / 將unit定義為無(wú)符號(hào)整數(shù)#define uchar unsigned char / 將uchar定義為無(wú)符號(hào)變量sbit lcden=P23; /定義引腳 sbit rs=P24; /定義引腳sbit rw=P20; /定義引腳sbit bu
17、sy=P07; /定義引腳char i,j,temp,num,num_1;long a,b,c;/a為第一個(gè)數(shù) b為第二個(gè)數(shù) c,得數(shù)float a_c,b_c;uchar flag,fuhao;/flag表示是否有符號(hào)鍵按下,fuhao表征按下的是哪個(gè)符號(hào) uchar code table=7,8,9,0,4,5,6,0,1,2,3,0,0,0,0,0;定義無(wú)符號(hào)數(shù)組uchar code table1=7,8,9,0x2f-0x30,4,5,6,0x2a-0x30,1,2,3,0x2d-0x30,0x01-0x30,0,0x3d-0x30,0x2b-0x30; /十六進(jìn)制碼 2f(除法)2a
18、(乘法)2d(減)01(清零)3d(等號(hào))2b(加號(hào))void delay(uchar z) / 延遲函數(shù)uchar y; uchar/定義為無(wú)符號(hào)變量for(z;z>0;z-)for(y=0;y<110;y+);void check() / 判斷忙或空閑doP0=0xFF;rs=0; /指令rw=1; /讀lcden=0; /禁止讀寫(xiě)delay(1); /等待,液晶顯示器處理數(shù)據(jù)lcden=1; /允許讀寫(xiě) while(busy=1); /判斷是否為空閑,1為忙,0為空閑 void write_com(uchar com) / 寫(xiě)指令函數(shù) P0=com; /com指令付給P0口r
19、s=0;rw=0;lcden=0;check();lcden=1; void write_date(uchar date) / 寫(xiě)數(shù)據(jù)函數(shù) P0=date;rs=1;rw=0;lcden=0;check();lcden=1; void init() /初始化 num=-1;lcden=1; /使能信號(hào)為高電平write_com(0x38); /8位,2行write_com(0x0c); /顯示開(kāi),光標(biāo)關(guān),不閃爍*/write_com(0x06); /增量方式不移位 顯竟獗暌貧 柚?write_com(0x80); /檢測(cè)忙信號(hào)write_com(0x01); /顯示開(kāi),光標(biāo)關(guān),不閃爍num_1
20、=0;i=0;j=0;a=0; /第一個(gè)參與運(yùn)算的數(shù)b=0; /第二個(gè)參與運(yùn)算的數(shù)c=0;flag=0; /flag表示是否有符號(hào)鍵按下,fuhao=0; / fuhao表征按下的是哪個(gè)符號(hào)void keyscan() / 鍵盤(pán)掃描程序P3=0xfe;if(P3!=0xfe) delay(20); /延遲20ms if(P3!=0xfe) temp=P3&0xf0; switch(temp) case 0xe0:num=0;break;case 0xd0:num=1;break;case 0xb0:num=2;break; case 0x70:num=3;break; while(P3
21、!=0xfe);/鍵盤(pán)第一行7 8 9 /if(num=0|num=1|num=2)/如果按下的是'7','8'或'9 if(j!=0) write_com(0x01); j=0; if(flag=0)/沒(méi)有按過(guò)符號(hào)鍵 a=a*10+tablenum; else/如果按過(guò)符號(hào)鍵 b=b*10+tablenum; else/如果按下的是'/' flag=1; fuhao=4;/4表示除號(hào)已按 i=table1num; write_date(0x30+i);P3=0xfd;if(P3!=0xfd)delay(5);if(P3!=0xfd)te
22、mp=P3&0xf0;switch(temp) case 0xe0:num=4; break;case 0xd0:num=5;break;case 0xb0:num=6;break;case 0x70:num=7;break;while(P3!=0xfd);/鍵盤(pán)第二行4 5 6 *if(num=4|num=5|num=6&&num!=7)/如果按下的是'4','5'或'6'if(j!=0) write_com(0x01); j=0;if(flag=0)/沒(méi)有按過(guò)符號(hào)鍵 a=a*10+tablenum;else/如果按過(guò)符
23、號(hào)鍵 b=b*10+tablenum; else/如果按下的是'/'flag=1; fuhao=3;/3表示乘號(hào)已按i=table1num;write_date(0x30+i);P3=0xfb;if(P3!=0xfb)delay(5); if(P3!=0xfb) temp=P3&0xf0; switch(temp) case 0xe0:num=8; break; case 0xd0:num=9; break; case 0xb0:num=10; break; case 0x70:num=11; break; while(P3!=0xfb); /鍵盤(pán)第三行1 2 3 -
24、if(num=8|num=9|num=10)/如果按下的是'1','2'或'3' if(j!=0) write_com(0x01); j=0; if(flag=0)/沒(méi)有按過(guò)符號(hào)鍵 a=a*10+tablenum; else/如果按過(guò)符號(hào)鍵 b=b*10+tablenum; else if(num=11)/如果按下的是'-' flag=1; fuhao=2;/2表示減號(hào)已按 i=table1num; write_date(0x30+i); P3=0xf7; if(P3!=0xf7) delay(5); if(P3!=0xf7) t
25、emp=P3&0xf0; switch(temp) case 0xe0:num=12; break; case 0xd0:num=13; break; case 0xb0:num=14; break; case 0x70:num=15; break; /鍵盤(pán)第四行 while(P3!=0xf7); switch(num) case 12:write_com(0x01);a=0;b=0;flag=0;fuhao=0;/按下的是"清零" break; case 13: /按下的是"0" if(flag=0) /沒(méi)有按過(guò)符號(hào)鍵 a=a*10; writ
26、e_date(0x30); P1=0; else if(flag=1)/如果按過(guò)符號(hào)鍵 b=b*10; write_date(0x30); break; /加法 case 14:j=1; if(fuhao=1)write_com(0x80+0x4f);/按下等于鍵,光標(biāo)前進(jìn)至第二行最后一個(gè)顯示處 write_com(0x04); /設(shè)置從后住前寫(xiě)數(shù)據(jù),每寫(xiě)完一個(gè)數(shù)據(jù),光標(biāo)后退一格 c=a+b; while(c!=0) write_date(0x30+c%10); c=c/10; write_date(0x3d); /再寫(xiě)"=" a=0;b=0;flag=0;fuhao=0;
27、 /減法 else if(fuhao=2)write_com(0x80+0x4f); /光標(biāo)前進(jìn)至第二行最后一個(gè)顯示處 write_com(0x04); /設(shè)置從后住前寫(xiě)數(shù)據(jù),每寫(xiě)完一個(gè)數(shù)據(jù),光標(biāo)后退一格 if(a-b>0) c=a-b; else c=b-a; while(c!=0) write_date(0x30+c%10); c=c/10; if(a-b<0) write_date(0x2d); write_date(0x3d); /再寫(xiě)"=" a=0;b=0;flag=0;fuhao=0; /乘法 else if(fuhao=3)write_com(0x
28、80+0x4f); write_com(0x04); c=a*b; while(c!=0) write_date(0x30+c%10); c=c/10; write_date(0x3d); a=0;b=0;flag=0;fuhao=0; /除法 else if(fuhao=4)write_com(0x80+0x4f); write_com(0x04); i=0; c=(long)(float)a/b)*1000); while(c!=0) write_date(0x30+c%10); c=c/10; i+; if(i=3) write_date(0x2e); /如果除數(shù)為零輸出=/ if(a/
29、b=0) write_date(0x30); write_date(0x3d); a=0;b=0;flag=0;fuhao=0; break;case 15:write_date(0x30+table1num);flag=1;fuhao=1; break; main()init();while(1) keyscan();六、功能實(shí)現(xiàn)截圖圖1、圖注釋?zhuān)嚎蓪?shí)現(xiàn)小數(shù)點(diǎn)后3位的顯示,來(lái)自源程序c=(long)(float)a/b)*1000);Float:?jiǎn)尉葘?shí)型變量取值范圍在-1038到1038,有4字節(jié),有效位數(shù)78位圖2、圖注釋?zhuān)簻p法的實(shí)現(xiàn)可以實(shí)現(xiàn)負(fù)數(shù),源程序if(fuhao=2)write_
30、com(0x80+0x4f); /光標(biāo)前進(jìn)至第二行最后一個(gè)顯示處 write_com(0x04); /設(shè)置從后住前寫(xiě)數(shù)據(jù),每寫(xiě)完一個(gè)數(shù)據(jù),光標(biāo)后退一格 if(a-b>0) c=a-b; else c=b-a; while(c!=0) write_date(0x30+c%10); c=c/10; if(a-b<0) write_date(0x2d); write_date(0x3d); /再寫(xiě)"=" a=0;b=0;flag=0;fuhao=0; 圖3、圖注釋?zhuān)涸闯绦騣f(fuhao=1)write_com(0x80+0x4f);/按下等于鍵,光標(biāo)前進(jìn)至第二行最后
31、一個(gè)顯示處 write_com(0x04); /設(shè)置從后住前寫(xiě)數(shù)據(jù),每寫(xiě)完一個(gè)數(shù)據(jù),光標(biāo)后退一格 c=a+b; while(c!=0) write_date(0x30+c%10); c=c/10; write_date(0x3d); /再寫(xiě)"=" a=0;b=0;flag=0;fuhao=0;圖4、圖注釋?zhuān)涸闯绦騣f(fuhao=3)write_com(0x80+0x4f); write_com(0x04); c=a*b; while(c!=0) write_date(0x30+c%10); c=c/10; write_date(0x3d); a=0;b=0;flag=0;fuhao=0; /最大可實(shí)現(xiàn)被
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45336-2025塑料熔融狀態(tài)下熱塑性塑料拉伸性能的測(cè)定
- GB/T 45359.2-2025海工平臺(tái)定位系泊纖維繩索第2部分:聚酯纖維
- 2025中文居間服務(wù)合同樣本
- 2025華彩債券投資基金合同
- 2025股權(quán)轉(zhuǎn)讓中介合同
- 原單位未提供2025年的勞動(dòng)合同證明如何辦理
- 2025建筑項(xiàng)目施工主要結(jié)構(gòu)勞務(wù)分包合同
- 食品生產(chǎn)工藝與質(zhì)量控制試題及答案
- 2025保險(xiǎn)公司賠償貿(mào)易借款合同
- 2025租賃合同模板大全分享
- 湖北省十一校2024-2025學(xué)年高三第二次聯(lián)考數(shù)學(xué)試卷(解析版)
- 《手工制作》課件-幼兒園掛飾
- 人武專(zhuān)干考試題型及答案
- 2025屆高三化學(xué)二輪復(fù)習(xí) 化學(xué)反應(yīng)原理綜合 課件
- 2025年北京五湖四海人力資源有限公司招聘筆試參考題庫(kù)含答案解析
- 常見(jiàn)的酸和堿第2課時(shí)酸的化學(xué)性質(zhì) 2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)下冊(cè)
- 歡樂(lè)購(gòu)物街-認(rèn)識(shí)人民幣(說(shuō)課稿)-2024-2025學(xué)年人教版數(shù)學(xué)一年級(jí)下冊(cè)
- 2025年中國(guó)南方航空股份有限公司招聘筆試參考題庫(kù)含答案解析
- 疫苗與接種管理制度
- 電子商務(wù)案例分析知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋西安郵電大學(xué)
- 《通信用開(kāi)關(guān)電源的元器件降額準(zhǔn)則-》
評(píng)論
0/150
提交評(píng)論