欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

學(xué)生計(jì)算器的制作方法

文檔序號(hào):6409290閱讀:661來(lái)源:國(guó)知局
專利名稱:學(xué)生計(jì)算器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及到一種學(xué)生計(jì)算器,具體地講,涉及到一種能夠在顯示器上顯示修改十進(jìn)制豎式運(yùn)算的每一步過(guò)程的學(xué)生計(jì)算器,普通計(jì)算器因其計(jì)算快速準(zhǔn)確而迅速普及,許多中小學(xué)生都有,由于只能直接顯示最終結(jié)果,而無(wú)中間運(yùn)算過(guò)程,長(zhǎng)期使用,對(duì)學(xué)生運(yùn)算能力的提高,智力的開(kāi)發(fā)十分不利,所以中外有識(shí)之士都不主張中小學(xué)生使用計(jì)算器,但計(jì)算器是如此普及,以至于單純的禁止顯得十分無(wú)力。
本發(fā)明的學(xué)生計(jì)算器,用鍵盤-屏顯方式手動(dòng)在屏幕上逐位作十進(jìn)制豎式運(yùn)算,通過(guò)自動(dòng)計(jì)算和逐位檢驗(yàn)程序校對(duì),修改每位結(jié)果,能進(jìn)行多位整數(shù)和小數(shù)的加減乘除開(kāi)方五種運(yùn)算,并可設(shè)置自動(dòng)出題和小測(cè)驗(yàn)程序,自動(dòng)出題和進(jìn)行小測(cè)驗(yàn),適于中小學(xué)生使用,利于學(xué)生運(yùn)算能力的提高,益于學(xué)生智力的開(kāi)發(fā)。
本發(fā)明的學(xué)生計(jì)算器,可以由單片機(jī),顯示器和鍵盤組成,其特征是1.通過(guò)"基準(zhǔn)列"和相關(guān)尋位程序,三種不同的數(shù)據(jù)輸入方式,確保顯示屏上的數(shù)據(jù)和內(nèi)存中的數(shù)據(jù)一一對(duì)應(yīng),并符合豎式要求,實(shí)現(xiàn)鍵盤-屏顯手動(dòng)十進(jìn)制豎式運(yùn)算;設(shè)置加減乘三種單位BCD碼運(yùn)算程序,以其為基礎(chǔ),與其它程序組成加減乘除開(kāi)方五種多位數(shù)自動(dòng)逐位運(yùn)算程序,提供正確答案;兩種校對(duì)程序逐位比較手動(dòng)計(jì)算,自動(dòng)計(jì)算兩種結(jié)果的每一位,指示錯(cuò)誤位置,給以修改機(jī)會(huì),修改數(shù)次仍不對(duì)后,給出正確答案。
2.用單片機(jī)的計(jì)數(shù)器(兩個(gè)以上)作不同步運(yùn)行,加上循環(huán)修正量,構(gòu)成單位整數(shù)隨機(jī)數(shù)程序,用"模式存儲(chǔ)器"和"難度存儲(chǔ)器"配合,決定數(shù)的位數(shù)和個(gè)數(shù),實(shí)現(xiàn)自動(dòng)出題,自動(dòng)出題,計(jì)算,檢驗(yàn)(不包括修改),加上判分程序的連接運(yùn)行,可以實(shí)現(xiàn)"小測(cè)驗(yàn)"功能。
3. 8051系列單片機(jī)和128*64點(diǎn)陣液晶圖形顯示器加24鍵鍵盤可以構(gòu)成一個(gè)實(shí)用學(xué)生計(jì)算器,其中為圖形顯示器專門設(shè)置了5*5點(diǎn)陣專用字符發(fā)生程序和光標(biāo)發(fā)生程序。
下面詳細(xì)說(shuō)明該學(xué)生計(jì)算器的具體設(shè)計(jì)方法要編制以上程序,需要先解決一系列基礎(chǔ)程序,下面一一介紹一.數(shù)據(jù)的存取與傳送本方案中,數(shù)據(jù)的存取與傳送都用BCD碼,鍵盤直接送出BCD碼,顯示器的譯碼程序用BCD碼輸入,內(nèi)存存放數(shù)據(jù)形式也釆用BCD碼(即四位存一位十進(jìn)制數(shù)據(jù))。
在本方案中,每位數(shù)據(jù)逐位調(diào)用,須知道其屬于哪個(gè)數(shù)?第幾位?存在什么地方?故釆用了"數(shù)號(hào)存儲(chǔ)器""信息存儲(chǔ)器""數(shù)據(jù)存儲(chǔ)器"三層方案。"數(shù)號(hào)存儲(chǔ)器"內(nèi)存放數(shù)據(jù)序號(hào);"值息存儲(chǔ)器"存放數(shù)據(jù)存儲(chǔ)器首址,數(shù)的位數(shù)和小數(shù)位數(shù);"數(shù)據(jù)存儲(chǔ)器"內(nèi)存放各位數(shù)據(jù)值。
"信息存儲(chǔ)器"的地址=數(shù)號(hào)*參量+"信息存儲(chǔ)器"首址(參量是指每個(gè)數(shù)的信息存儲(chǔ)器所占字節(jié)數(shù))(A)某位數(shù)的地址=數(shù)據(jù)存儲(chǔ)器首址+位數(shù)/每個(gè)字節(jié)放的位數(shù)(余數(shù)表示該位數(shù)在字節(jié)中的位置)(B)在這里,"數(shù)號(hào)存儲(chǔ)器"是專用存儲(chǔ)器,"信息存儲(chǔ)器"和"數(shù)據(jù)存儲(chǔ)器"可以是指定區(qū)域。
BCD碼僅占4位,在8位以上的單片機(jī)中,如存儲(chǔ)器比較富裕,可用一個(gè)字節(jié)存放一位數(shù)的辦法;如存儲(chǔ)器有限,則一個(gè)字節(jié)存兩位(或多位)數(shù),通過(guò)專門的存取程序存取,取程序按公式B計(jì)算地址,按公式B的余數(shù)確定所取數(shù)在字節(jié)中的地方,決定是取高四位,還是低四位,存程序在分清了高低四位后,把字節(jié)中數(shù)據(jù)取出,清除要送四位的值,和欲存的數(shù)據(jù)相加后送回原字節(jié)。
二.顯示與內(nèi)存的對(duì)應(yīng)這是實(shí)現(xiàn)十進(jìn)制豎式運(yùn)算的要點(diǎn)。
本方案中釆用了以下措施1.符合豎式要求的數(shù)據(jù)輸入方法數(shù)據(jù)連續(xù)輸入,每個(gè)數(shù)的各位無(wú)間斷輸入,以確保屏幕上的每位數(shù)和內(nèi)存中的位數(shù)相對(duì)應(yīng),為此,特設(shè)了專用"輸入方式存儲(chǔ)器",在上下左右移動(dòng)程序中設(shè)置了條件,使在數(shù)據(jù)輸入期間,移動(dòng)鍵無(wú)效。
豎式運(yùn)算中,各個(gè)數(shù)的寫入方式并不相同,如原始數(shù)據(jù),在屏幕上是由左至右,數(shù)位上是由高至低,位數(shù)不可預(yù)知;和,差,分積,積等,在屏幕上是由右至左,數(shù)位上是由低至高;商,根等在屏幕上是由高至低,數(shù)位上是由高至低,但可以預(yù)知其位數(shù)。
對(duì)于這三種不同的寫入方式,本方案提供了三種數(shù)據(jù)輸入程序;原始數(shù)據(jù)的輸入,屏顯上光標(biāo)依次右移,內(nèi)存中先把輸入的高位數(shù)送入數(shù)據(jù)存儲(chǔ)器的第一位;輸入次高位時(shí),從內(nèi)存第一位中取出已有入的高位數(shù),存入次高位,再把取出的高位送入內(nèi)存的第二位(即用次高位數(shù)把高位數(shù)頂入上一位);第三個(gè)數(shù)輸入把次高位數(shù)上頂,次高位數(shù)再把高位數(shù)上頂,如此逐位送入數(shù)據(jù)(如下圖),每送一位,給"信息存儲(chǔ)器"中的位數(shù)加1;按小數(shù)點(diǎn)后,再每送一位,給位數(shù)和小數(shù)位數(shù)同時(shí)加1.按運(yùn)算符鍵或回車鍵,結(jié)束送數(shù),(第一種輸入方式) 和數(shù)等的輸入,屏顯上光標(biāo)依次左移,根據(jù)位數(shù)(每次加1)計(jì)算存儲(chǔ)器地址,把數(shù)值送入指定內(nèi)存,每送一位,給信息存儲(chǔ)器中的位數(shù)加1;按小數(shù)點(diǎn)鍵時(shí),把位數(shù)中的數(shù)值送入(復(fù)制)小數(shù)位,再輸入數(shù),只加1位數(shù),不再增加小數(shù)位,結(jié)束同上,(第二種輸入方式)商數(shù)等的輸入,屏顯上光標(biāo)位置,每次通過(guò)"基準(zhǔn)列""基準(zhǔn)行"(后面介紹)計(jì)算,內(nèi)存的地址通過(guò)運(yùn)算次數(shù),商的高位值,數(shù)號(hào)計(jì)算(其中位數(shù)=高位值+1-運(yùn)算次數(shù)),第一個(gè)商值即商的最高位,其位數(shù)值送入"信息存儲(chǔ)器"的位數(shù)部分即完成位數(shù)的存入,小數(shù)位待所有商值輸入完畢后處理;先移動(dòng)光標(biāo)至小數(shù)位,按下小數(shù)點(diǎn)鍵,程序計(jì)算光標(biāo)和基準(zhǔn)列的差值,就是小數(shù)位,把此值送入"信息存儲(chǔ)器"的小數(shù)位數(shù)部分即可,(第三種輸入方式)2.基準(zhǔn)行與基準(zhǔn)列為保證屏顯和內(nèi)存的對(duì)應(yīng),更為保證屏顯的數(shù)據(jù)符合豎式運(yùn)算法則的要求,本方案引入了"基準(zhǔn)列"和"基準(zhǔn)行"的概念及計(jì)算方法,"基準(zhǔn)行",在加減乘中沒(méi)什么作用,在除法和開(kāi)方中離不了,本方案定義被除數(shù)或開(kāi)方數(shù)所在行為基準(zhǔn)行,無(wú)需計(jì)算,其值存在"基準(zhǔn)行存儲(chǔ)器"中。
"基準(zhǔn)列"在不同的運(yùn)算中定義不一樣,運(yùn)算法則要求;加減法中必須個(gè)位與個(gè)位,十位與十位...一一對(duì)應(yīng);乘法中則是最后一位對(duì)齊,所以在加減法中定義個(gè)位位置為基準(zhǔn)列,乘法中定義尾數(shù)位置為基準(zhǔn)列;除法和開(kāi)方是由一系列的乘法和減法組成的,故其運(yùn)算過(guò)程的基準(zhǔn)列則不固定,隨每步運(yùn)算的種類而定。
3.自動(dòng)尋位和半自動(dòng)尋位在豎式運(yùn)算中每個(gè)數(shù)的起始位置看似無(wú)規(guī)律,實(shí)際上都和前面數(shù)的位數(shù)和基準(zhǔn)列緊密相聯(lián),都可以通過(guò)簡(jiǎn)單的計(jì)算算出;個(gè)別數(shù),如第二加數(shù),減數(shù),乘數(shù),除數(shù),商和根,由于不能預(yù)知其準(zhǔn)確位數(shù),不能準(zhǔn)確定位,但也可以找出其大概位置,再允許左右移動(dòng)鍵有效便可準(zhǔn)確定位,前者為自動(dòng)尋位,后者為半自動(dòng)尋位。
尋位計(jì)算均是通過(guò)基準(zhǔn)列和前數(shù)的位數(shù),有些地方還需要基準(zhǔn)行參與,一般原則是;計(jì)算高位時(shí),取(基準(zhǔn)列-位數(shù))值;計(jì)算低位直接取基準(zhǔn)列值,有了基準(zhǔn)列,基準(zhǔn)行和數(shù)據(jù)輸入方式存儲(chǔ)器及各個(gè)輸入方式,就可以隨時(shí)計(jì)算屏顯上的某數(shù)在內(nèi)存中的地方,或內(nèi)存中的某數(shù)在屏幕上的位置,尋位程序可以幫助使用者很方便地按豎式格式要求準(zhǔn)確輸入數(shù)據(jù),并確保屏顯和內(nèi)存一一對(duì)應(yīng)。
三.單位十進(jìn)制(BCD碼)運(yùn)算這是逐位十進(jìn)制運(yùn)算的基礎(chǔ),單位十進(jìn)制運(yùn)算只有加減乘三種,道理不言自明。
單位加法運(yùn)算程序這樣編制兩數(shù)相加,再加下進(jìn)位,結(jié)果除10(或用單片機(jī)的二十進(jìn)制調(diào)正功能),商為上進(jìn)位,余數(shù)為原位,分存兩個(gè)存儲(chǔ)器備用。
單位乘法程序是兩數(shù)相乘,結(jié)果除10,商為進(jìn)位數(shù),余數(shù)為原位,分存?zhèn)溆谩?br> 單位減法程序稍繁瑣被減數(shù)減去減數(shù),如需上借位,得數(shù)再減6為差,給借位存儲(chǔ)器送1;如無(wú)借位,得數(shù)即差,清零借位存儲(chǔ)器。
有了上述基礎(chǔ)程序就可以編制全部程序了。為清楚起見(jiàn),分手動(dòng)計(jì)算,自動(dòng)檢驗(yàn),自動(dòng)出題和小測(cè)驗(yàn)三部分說(shuō)明。
一.手動(dòng)計(jì)算手動(dòng)計(jì)算實(shí)質(zhì)上是使用者用鍵盤在屏幕上計(jì)算,根據(jù)不同的運(yùn)算方式分加減法,乘法,除法,開(kāi)方四種。
(一)加減法加法和減法豎式格式相同,故一個(gè)程序即可。
未輸入數(shù)據(jù)前,四個(gè)移動(dòng)鍵都處于允許狀態(tài),此時(shí)定數(shù)據(jù)輸入方式為第一種,敲下一個(gè)數(shù)據(jù)鍵即開(kāi)始第一個(gè)數(shù)的輸入,數(shù)號(hào)存儲(chǔ)器加1.運(yùn)算符的輸入,結(jié)束第一個(gè)數(shù)的輸入,程序先轉(zhuǎn)入自動(dòng)尋位,在第二行高位左邊處置顯示運(yùn)算符,再轉(zhuǎn)入半自動(dòng)尋位,在第二行對(duì)應(yīng)高位閃動(dòng)光標(biāo)。如第二個(gè)數(shù)的位數(shù)和第一個(gè)數(shù)不同,從光標(biāo)處開(kāi)始輸入不能保證各位對(duì)應(yīng),則可以左右移動(dòng)光標(biāo),對(duì)準(zhǔn)各位,此時(shí)輸入第二個(gè)數(shù),敲回車后,程序首先比較兩個(gè)數(shù)的基準(zhǔn)列,如不同,則不向下進(jìn)行,等待修改;如相同,則進(jìn)入自動(dòng)尋位,計(jì)算并劃?rùn)M線。再次自動(dòng)尋位,調(diào)光標(biāo)至第三行對(duì)應(yīng)最低位,變數(shù)據(jù)輸入方式為第二種。由右至左輸入和(或差),輸入回車,手動(dòng)計(jì)算結(jié)束,程序自動(dòng)轉(zhuǎn)入自動(dòng)檢驗(yàn)程序。 為修改一旦出現(xiàn)的數(shù)據(jù)輸入錯(cuò)誤,設(shè)清除鍵,在清除鍵下編制有"位清零程序"。該程序的工作與數(shù)據(jù)輸入程序相逆,每按一次,屏幕上退一格(清原格),內(nèi)存中給剛輸入的一位送零;第一種數(shù)據(jù)輸入方式中,是給最高位送0,壓其它數(shù)據(jù)依次下降,把剛輸入的一位壓出數(shù)據(jù)存儲(chǔ)器。該程序不適用第三種數(shù)據(jù)輸入方式(即不適用于商根),也只對(duì)正在輸入的數(shù)有效,對(duì)已經(jīng)確認(rèn)過(guò)的數(shù)無(wú)效。
(二)乘法乘法的被乘數(shù)和乘數(shù)的輸入與加法雷同,區(qū)別在基準(zhǔn)列的定義不同,輸入第二個(gè)數(shù)時(shí)應(yīng)對(duì)齊的是尾數(shù)位。
乘法的分積運(yùn)算程序用循環(huán)方式,循環(huán)次數(shù)=乘數(shù)位數(shù)-乘數(shù)中0的個(gè)數(shù)。
分積的起點(diǎn)(最低位)值=基準(zhǔn)列值+乘數(shù)某位數(shù)-1。
行數(shù)=第一分積所在行+循環(huán)次數(shù)。每個(gè)分積的結(jié)束由目車確認(rèn)。依此編制的程序每當(dāng)某位乘數(shù)為0時(shí),自動(dòng)中斷下面程序,回到循環(huán)起點(diǎn),左移光標(biāo)一位,開(kāi)始下一分積的輸入。循環(huán)結(jié)束后,程序轉(zhuǎn)入自動(dòng)尋位,計(jì)算位置并劃?rùn)M線,再進(jìn)入自動(dòng)尋位,調(diào)光標(biāo)至積的最低位。作加法求積。
積的輸入中,特殊點(diǎn)在于小數(shù)點(diǎn)的輸入是在數(shù)據(jù)全部輸入完后。按豎式運(yùn)算習(xí)慣,乘積作出后,心算兩個(gè)乘數(shù)中小數(shù)位數(shù)的和,依此點(diǎn)上小數(shù)點(diǎn)。本方案完全尊重這一習(xí)慣,積的所有位輸入完畢后,敲回車允許左右移動(dòng)鍵有效。移動(dòng)光標(biāo)至小數(shù)點(diǎn)位,敲下小數(shù)點(diǎn)鍵即輸入小數(shù)點(diǎn)。這時(shí),程序根據(jù)光標(biāo)和基準(zhǔn)列的位置計(jì)算小數(shù)位數(shù)(小數(shù)位=基準(zhǔn)列-光標(biāo)位),送入"信息存儲(chǔ)器"中的小數(shù)位部分。作整數(shù)乘法時(shí),沒(méi)有小數(shù),連敲兩下回車便跳過(guò)該段程序。 (三)除法除法中,首先是尋位,調(diào)光標(biāo)至第二行,然后輸入第一個(gè)數(shù)。輸入運(yùn)算符后,自動(dòng)尋位將光標(biāo)跳到同行第一個(gè)數(shù)左鄰位上,顯示運(yùn)算符并劃上橫線,再將光標(biāo)調(diào)至運(yùn)算符左鄰位,這是除數(shù)的個(gè)位,此時(shí)還是第一種數(shù)據(jù)輸入方式,因除數(shù)可能是一位,二位,三位或更多位,故將光標(biāo)調(diào)到個(gè)位,允許左右移動(dòng)鍵有效,使用者自行調(diào)整,(如除數(shù)為兩位,應(yīng)先左移光標(biāo)一位,然后由高至低輸入兩位除數(shù))在除法正式開(kāi)始前,對(duì)于有小數(shù)的除法,還有一個(gè)去除除數(shù)中的小數(shù)點(diǎn)過(guò)程,程序中考慮到這一點(diǎn),編制了去小數(shù)點(diǎn)程序。對(duì)于內(nèi)存,很簡(jiǎn)單;首先把除數(shù)信息存儲(chǔ)器中的小數(shù)位取出(暫存某處),裝入0;然后取出被除數(shù)信息存儲(chǔ)器中的小數(shù)位數(shù),從中減去除數(shù)的小數(shù)位數(shù),差重新裝入被除數(shù)信息存儲(chǔ)器,這就完成了內(nèi)存中數(shù)據(jù)去小數(shù)點(diǎn)過(guò)程。屏顯上變換小數(shù)點(diǎn)位置的方法很多,本方案用的是"內(nèi)存送顯"的方法先用位清零程序的清屏部分清除屏幕上的被除數(shù),除數(shù),然 后分別找尋被除數(shù),除數(shù)的個(gè)位,把調(diào)整過(guò)的內(nèi)存中的被除數(shù),除數(shù)逐位取出,送至顯示器對(duì)應(yīng)位顯示,從而完成屏顯上去除除數(shù)中的小數(shù)點(diǎn)運(yùn)算。對(duì)于整數(shù)除法,這段程序運(yùn)行也不影響運(yùn)算結(jié)果,當(dāng)然通過(guò)簡(jiǎn)單的條件判斷也可跳過(guò)該段程序。
去小數(shù)點(diǎn)后,程序進(jìn)入半自動(dòng)尋商位,商高位值=基準(zhǔn)列值-(被除數(shù)位值-除數(shù)位值)但如果在預(yù)定位上不夠除,則需向下移動(dòng)商位,故此時(shí)允許左右移動(dòng)鍵有效,敲入商后,光標(biāo)至第1乘積個(gè)位,數(shù)據(jù)輸入方式轉(zhuǎn)第二方式,輸入除數(shù)與本位商的乘積,此時(shí)可能會(huì)發(fā)現(xiàn)商不合適(圖C-4),如不合適可用位清零程序清除該乘積(圖C-5),再敲入回車,光標(biāo)跳到原商數(shù)下閃動(dòng)(圖C-6),此時(shí)重新輸入新的商值即完成修改,這就是本方案中的試商程序,(該程序略改后便可用于試根)試商成功后,程序進(jìn)入減法,算好差后敲回車轉(zhuǎn)入下調(diào)數(shù),就是把被除數(shù)的下一位調(diào)下來(lái),這里須注意內(nèi)存中從被除數(shù)取出的下調(diào) 位應(yīng)用第一種數(shù)據(jù)輸入方式送入差的低位,進(jìn)行完這一步,敲回車,計(jì)算行數(shù),列數(shù),程序返回,試第二位商,進(jìn)入循環(huán),(這中間的劃線程序和前面類似,略去)(顯示如圖C-7至C-9)循環(huán)中,如遇到不夠除時(shí),商應(yīng)上0,此時(shí),程序通過(guò)商位0判斷跳過(guò)乘減部分,在差數(shù)后再下調(diào)一位,試下一位商。
跳出循環(huán)的條件是被除數(shù)的位數(shù)剩余數(shù)=0。
除法中還有一個(gè)特殊問(wèn)題;因除法豎式要用較多的行數(shù),而單純?cè)黾语@示器的行數(shù)不僅會(huì)造成成本上升,而且也不經(jīng)常用。故設(shè)計(jì)了一個(gè)"顯示翻轉(zhuǎn)程序",該程序運(yùn)行的接口在循環(huán)中的行數(shù)計(jì)算,條件是剩余行數(shù)小于等于一時(shí),跳入翻轉(zhuǎn)程序。該程序的運(yùn)行首先用行清除指令(每種顯示器都有各自的行清除指令)逐行清除被除數(shù)以下的各行,再用位清零程序逐位清除被除數(shù)中已調(diào)用過(guò)的各位,最后用"內(nèi)存送顯程序"把剛輸入最后一個(gè)數(shù)(差和下調(diào)數(shù)組成的待除數(shù))送到原被除數(shù)對(duì)應(yīng)的位置(見(jiàn)圖C-7,C-8)。整個(gè)過(guò)程中除數(shù),商,運(yùn)算符,被清除數(shù)的內(nèi)存值和未調(diào)用位(圖C-8的最后一個(gè)2),均不改變。全部過(guò)程由程序自行完成,無(wú)須人工干預(yù)。結(jié)束后返回循環(huán),繼續(xù)往下除。(圖C-9)除法中的最后一個(gè)問(wèn)題是除不盡的除法,作下去無(wú)休止。小小的計(jì)算器很難解決。選用大容量?jī)?nèi)存和大屏幕顯示器都要增加成本,對(duì)于學(xué)生必要性也不大,故增加一個(gè)難度鍵,其下的程序給"難度存儲(chǔ)器"逐次加1,到一定程度返回。除法程序根據(jù)"難度存儲(chǔ)器"的內(nèi)容,選擇是作整數(shù)除法,能除盡的小數(shù)除法,還是除不盡的小數(shù)除法。當(dāng)選擇最后一種時(shí),程序自動(dòng)把被除數(shù)調(diào)整到某個(gè)有限位(例如8位,根據(jù)內(nèi)存和顯示器的大小而定),作到這個(gè)有限位,就結(jié)束除法。
(四)開(kāi)方;開(kāi)方運(yùn)算中有許多地方類似除法,程序編制和運(yùn)行可以參照或調(diào)用除法中的。特殊的地方有四個(gè)1.根的位置和位數(shù)預(yù)留。按運(yùn)算法則,根的位置應(yīng)在整數(shù)的1,3,5,7...位和小數(shù)的2,4,6...位,所以根的最高位置值對(duì)于整數(shù)和代整數(shù)的小數(shù),等于整數(shù)位/2后取其整數(shù)值,再加1;對(duì)于純小數(shù),個(gè)位0即是。預(yù)留的位數(shù),為開(kāi)方數(shù)的位數(shù)作整數(shù)除法除2的商加余數(shù)。
2.小數(shù)開(kāi)方時(shí)數(shù)據(jù)的調(diào)整。能開(kāi)盡的小數(shù),其小數(shù)位不是偶數(shù)時(shí)應(yīng)補(bǔ)一位0,使其成偶數(shù)。開(kāi)不盡的數(shù),也得使其小數(shù)位保持偶數(shù)。
3. 20倍數(shù)。開(kāi)方中,從第二位根開(kāi)始,在豎式左側(cè)要計(jì)算一個(gè)已開(kāi)出根的20倍數(shù),這是除法沒(méi)有的。因此在下調(diào)數(shù)完成后,要加一個(gè)20倍數(shù)程序。該程序先用自動(dòng)尋位把光標(biāo)調(diào)到同行左邊(之前劃一豎線),空一格以上,指示20倍數(shù)的十位。因?yàn)?0倍數(shù)的個(gè)位按法則要求應(yīng)空著(留給下一位根),取第二種輸入方法,輸入20倍數(shù)。用此法內(nèi)存中的個(gè)位也正好給下一位根留著。
4.試根,開(kāi)方中的試根和除法類似,區(qū)別在于開(kāi)方中在向根存 儲(chǔ)器和顯示位送根值后,還要向20倍數(shù)的個(gè)位存儲(chǔ)器和顯示位送入根值。(圖0-3)清當(dāng)前根時(shí)也是清兩處。但光標(biāo)指示可以只選根位一處,也可以同時(shí)指示兩處。
二.檢驗(yàn)程序檢驗(yàn)程序包含加減乘除開(kāi)方五種自動(dòng)十進(jìn)制逐位運(yùn)算程序和兩種逐位校對(duì)程序,根據(jù)"運(yùn)算方式存儲(chǔ)器"中的數(shù)值選擇如何運(yùn)算。下面分別介紹各程序。
(一)加法自動(dòng)運(yùn)算。該程序是個(gè)雙循環(huán)程序,工作過(guò)程如下;計(jì)算一加數(shù)的首址;計(jì)算其一位的地址;取出一位數(shù);計(jì)算和的對(duì)應(yīng)位地址;取出一位和;以上兩數(shù)進(jìn)行BCD碼加法;和位返回原先取出的地址,借位暫存;判斷加數(shù)的位數(shù)是否取完,未完返回位地址計(jì)算,計(jì)算下一位地址,繼續(xù)第一重循環(huán),完了,跳出第一重循環(huán),判斷此時(shí)進(jìn)位等于零否,不等于,計(jì)算再高一位和址,將借位中的數(shù)據(jù)送入后,向下進(jìn)行。等于零則直接向下進(jìn)行;判斷加數(shù)是否取完,未完返回加數(shù)首址計(jì)算,計(jì)算下一個(gè)加數(shù)的首址,繼續(xù)第二重循環(huán)。如取完,跳出循環(huán);存入和的位數(shù),小數(shù)位數(shù),結(jié)束本段程序。用本方案可進(jìn)行兩個(gè)以上加數(shù)的加法運(yùn)算(后面的乘法中分積的加法就用這種多個(gè)數(shù)加法)(二)減法自動(dòng)運(yùn)算。該程序是兩個(gè)單循環(huán)程序,一個(gè)比較程序,一個(gè)減法程序。工作過(guò)程如下進(jìn)入比較程序;先比較兩數(shù)的位數(shù),如被減數(shù)位數(shù)大于減數(shù),進(jìn)入減法程序;如小于減數(shù),提示重新輸入;如等于減數(shù),則進(jìn)行各位數(shù)比較。數(shù)據(jù)比較由高位開(kāi)始,循環(huán)進(jìn)行,一旦某位大于減數(shù),跳出循環(huán),進(jìn)行減法運(yùn)算;一旦出現(xiàn)某位小于減數(shù),則提示重新輸入;至最后一位,全部等于,也進(jìn)入減法程序。
減法程序按下述過(guò)程進(jìn)行計(jì)算被減數(shù)的首址,暫存;計(jì)算減數(shù)首址,暫存;計(jì)算差的首址,暫存;計(jì)算一位被減數(shù)的位地址;取出一位被減數(shù);計(jì)算對(duì)應(yīng)位減數(shù)位地址(如減數(shù)位已取完,則跳至差位計(jì)算);取出一位減數(shù);進(jìn)行單位BCD碼減法,如有下借位,再減一;計(jì)算差的對(duì)應(yīng)位地址;差送存;判斷被減數(shù)位數(shù)是否取完;未完跳回被減數(shù)位地址計(jì)算,再循環(huán)。完了則跳出循環(huán);把位數(shù)和小數(shù)位數(shù)送入差的信息存儲(chǔ)器;由高至低依次清除差數(shù)高位上可能出現(xiàn)的0,對(duì)應(yīng)遞減差的位數(shù)值;結(jié)束程序。
(三)乘法自動(dòng)運(yùn)算。該程序由一個(gè)乘法雙重循環(huán)程序和一個(gè)加法雙重循環(huán)程序組成。其乘法程序工作過(guò)程如下計(jì)算被乘數(shù)首址,暫存;計(jì)算乘數(shù)首址,暫存;計(jì)算乘數(shù)位地址(由低到高);取一乘數(shù),暫存;計(jì)算分積首址,暫存;計(jì)算被乘數(shù)位地址(低至高);取一位被乘數(shù);進(jìn)行單位BCD碼乘法;原位與下進(jìn)位相加后的低位送分積對(duì)應(yīng)位;進(jìn)位送進(jìn)位存儲(chǔ)器;判斷被乘數(shù)位數(shù)是否取完?未完,跳回被乘數(shù)位地址計(jì)算,繼續(xù)第一重循環(huán)。完了,則跳出第一重循環(huán),判斷進(jìn)位為0否?不為0,送入分積的更高一位。為0,跳過(guò)進(jìn)行下面程序;分積位數(shù)存入該分積的值息存儲(chǔ)器;數(shù)號(hào)存儲(chǔ)器加1;判斷乘數(shù)位數(shù)是否取完?未完,跳回取上一位乘數(shù),繼續(xù)第二重循環(huán)。已完,跳出循環(huán),轉(zhuǎn)入加法程序。
加法程序和前面所述程序基本一樣,唯一不同但又必須注意的是第一分積按原位數(shù)送入積中;第二分積必須在位數(shù)上加1才和積的位數(shù)對(duì)應(yīng);第三分積要加2,第四分積要加3...也就是積的位數(shù)=分積位數(shù)+分積序號(hào)-1積的位數(shù),在運(yùn)算過(guò)程中已經(jīng)送入積的信息存儲(chǔ)器。積的小數(shù)位數(shù)需最后計(jì)算送入,其值=被乘數(shù)的小數(shù)位+乘數(shù)的小數(shù)位。
(四)除法自動(dòng)運(yùn)算。除法是由一聯(lián)串的乘法和加法組成的,是一個(gè)較大的循環(huán)過(guò)程,其中還有一個(gè)試除的小循環(huán)。
原始數(shù)據(jù)(被除數(shù)和除數(shù))輸入后,也要按法則要求,進(jìn)行去零和難度調(diào)整(可以調(diào)用手工計(jì)算程序中的,也可以在手工程序作完這部分再轉(zhuǎn)入自動(dòng)程序的除法)。
除法開(kāi)始,先比較除數(shù)和被除數(shù)對(duì)應(yīng)位(商位對(duì)應(yīng)位及以前位)的大小,如大于,則再右移一位商,再比較;如小于等于,則開(kāi)始試除。
試除循環(huán)試除從9開(kāi)始,即用9乘除數(shù),所得的積與被除數(shù)對(duì)應(yīng)的幾位數(shù)比較,若大,則返回試8;若不大,則跳出循環(huán),向下進(jìn)行,每次循環(huán)返目前,還應(yīng)用位清零程序清除內(nèi)存中的積以及積信息存儲(chǔ)器中的位數(shù)值,因?yàn)橄乱粋€(gè)試除積不但小,而且位數(shù)也會(huì)少,單純的替代會(huì)造成內(nèi)存的錯(cuò)誤。
第三步作減法。
第四步下調(diào)一位,這一位應(yīng)用手工計(jì)算程序中的第一種數(shù)據(jù)輸入方式的內(nèi)存輸入方法送入差數(shù)的低位,這里是大循環(huán)的起點(diǎn),同時(shí)也跳出循環(huán)的出口。首先判斷被除數(shù)位數(shù)是否取完未完進(jìn)入循環(huán);完則跳出循環(huán)。
再試除,夠除向下進(jìn)行;不夠除商上0,返回再調(diào)一位。
作減法,跳回第四步繼續(xù)循環(huán)。
凡除不盡的除法(包括整數(shù)除法及小數(shù)除法)最后一個(gè)差為余數(shù),最后計(jì)算商的小數(shù)位值,送入商的信息存儲(chǔ)器。
(五)開(kāi)方自動(dòng)運(yùn)算,開(kāi)方的自動(dòng)運(yùn)算和除法差不多,也須事先調(diào)整數(shù)據(jù),并須計(jì)算根的最高位的位置,之后進(jìn)行試根,和商一樣,從9開(kāi)始,開(kāi)方試根必有結(jié)果,故不必重下調(diào)數(shù)復(fù)試。
試根后作減法。
再下調(diào)數(shù),開(kāi)方中每次下調(diào)數(shù)應(yīng)連調(diào)兩位,調(diào)前先判斷被開(kāi)方數(shù)位數(shù)調(diào)完否?不完則進(jìn)入循環(huán);完則不進(jìn)入循環(huán),直接跳到根小數(shù)位計(jì)算程序。
進(jìn)入循環(huán)后先求20倍數(shù)(乘法),再試根,這里要注意,類同手工運(yùn)算,和第一位根不同,這以后的根要送入20倍數(shù)的個(gè)位(用第二種數(shù)據(jù)輸入方式,因個(gè)位已預(yù)留),求這一位根與20倍數(shù)的積,與上面的差比較大小,判斷該再試根還是進(jìn)行下面的減法,作減法后返回下調(diào)數(shù)循環(huán),直至開(kāi)完,結(jié)束循環(huán),進(jìn)入小數(shù)位數(shù)計(jì)算程序,后結(jié)束開(kāi)方運(yùn)算。
(六)自動(dòng)檢驗(yàn),上述自動(dòng)運(yùn)算和手動(dòng)運(yùn)算的各個(gè)結(jié)果數(shù)分存在兩個(gè)數(shù)據(jù)存儲(chǔ)器區(qū)域中,檢驗(yàn)就是依次分別取出兩種運(yùn)算結(jié)果的對(duì)應(yīng)位,逐一對(duì)比,如果手動(dòng)運(yùn)算的某位結(jié)果和自動(dòng)運(yùn)算不一樣,則在屏幕上該位閃動(dòng)光標(biāo),等候修改,此時(shí)鍵盤輸入的數(shù)據(jù)直接送入該位的手動(dòng)運(yùn)算結(jié)果位,重新開(kāi)始檢驗(yàn),直至所有結(jié)果一致。
還可設(shè)置另一種檢驗(yàn)方式在手動(dòng)運(yùn)算的每一位輸入結(jié)束后,立即調(diào)用位比較程序,進(jìn)行該位的檢驗(yàn),不對(duì),光標(biāo)在原位閃動(dòng),等待修改;對(duì)了,光標(biāo)到下一位閃動(dòng),等待輸入新的一位數(shù),前種方法適合運(yùn)算較熟練的學(xué)生用,后種方法適合初學(xué)學(xué)生用。
三.自動(dòng)出題和小測(cè)驗(yàn)。
該部分的引入,是為了加強(qiáng)本計(jì)算器的功能,和計(jì)算器的基本功能沒(méi)有什么牽制,也就是說(shuō),以上兩大部分已經(jīng)能完成本計(jì)算器的計(jì)算功能,加上本部分,可以便計(jì)算器增加功能,擴(kuò)大計(jì)算器的用途。
自動(dòng)出題,實(shí)質(zhì)是個(gè)隨機(jī)數(shù)問(wèn)題,產(chǎn)生隨機(jī)數(shù)的方法很多,都可考慮釆用,這里僅就利用單片機(jī)的計(jì)數(shù)器(定時(shí)器)來(lái)產(chǎn)生單位整數(shù)隨機(jī)數(shù)的方法作一介紹令單片機(jī)的兩個(gè)(或更多)計(jì)數(shù)器在0-9(取補(bǔ)碼)間不同步運(yùn)行(可令一個(gè)在0-9間,一個(gè)在0-8間),某一時(shí)刻同時(shí)取兩個(gè)計(jì)數(shù)器的值,相加并進(jìn)行BCD碼調(diào)正,再加上前次產(chǎn)生的隨機(jī)數(shù),即可產(chǎn)生一位整數(shù)隨機(jī)數(shù),要進(jìn)一步降低重復(fù)率,還可在其中一個(gè)計(jì)數(shù)器的重裝數(shù)上每次加1,也在0-9間循環(huán)。
自動(dòng)出題中,每個(gè)數(shù)的位數(shù)由"難度存儲(chǔ)器"決定,程序根據(jù)難度存儲(chǔ)器中的數(shù)值,決定應(yīng)出幾位數(shù),用上述隨機(jī)數(shù)程序逐個(gè)取數(shù),按由低至高的原則送入數(shù)據(jù)存儲(chǔ)器,數(shù)的個(gè)數(shù)由程序按不同運(yùn)算方法提出要求,須進(jìn)一步說(shuō)明的是豎式減法要求被減數(shù)大于減數(shù),比較后不合要求應(yīng)返回重新出題,整數(shù)除法中,有時(shí)要求能除盡,故一般除法的出題,不釆用直接出兩個(gè)數(shù),而用下述方式自動(dòng)出兩個(gè)數(shù)后作乘法,取其積為被除數(shù),兩數(shù)中的一個(gè)作除數(shù),開(kāi)方也用類似方法自動(dòng)出一個(gè)數(shù)自乘后,取積作開(kāi)方數(shù)。
自動(dòng)出題要求先輸入運(yùn)算符。
小測(cè)驗(yàn)部分,是自動(dòng)出題,自動(dòng)計(jì)算,手動(dòng)計(jì)算和檢驗(yàn)連接工作,其特殊之處在于檢驗(yàn)部分不運(yùn)行修改部分,就是只判對(duì)否,不給修改機(jī)會(huì),但啟動(dòng)一個(gè)計(jì)分器和計(jì)分程序,這個(gè)計(jì)分程序給定出題的數(shù)量,每作對(duì)一道題,程序給計(jì)分器加分,作完全部題,計(jì)分器中記錄得分并自動(dòng)送顯,學(xué)生即可知道本次小測(cè)驗(yàn)的成績(jī)了。
小測(cè)驗(yàn)程序的進(jìn)入,由面板上設(shè)的"模式鍵"決定。該鍵控制"模式存儲(chǔ)器"內(nèi)的數(shù)值,而程序根據(jù)"模式存儲(chǔ)器"中的數(shù)值來(lái)選擇運(yùn)行的方式,配合"難度存儲(chǔ)器",可以構(gòu)成適合各類學(xué)生使用的形式。例如計(jì)算器可分"計(jì)算""學(xué)習(xí)""練習(xí)""測(cè)驗(yàn)"幾種模式,用"模式存儲(chǔ)器"中的0-3分別代表。"計(jì)算"擋時(shí),程序運(yùn)行手動(dòng)輸入,手動(dòng)計(jì)算,自動(dòng)計(jì)算,最后檢驗(yàn),作一般計(jì)算用,用"難度"中的0代表除(開(kāi))盡的除法(開(kāi)方),1代表除(開(kāi))不盡的除法(開(kāi)方)。"學(xué)習(xí)"擋運(yùn)行手動(dòng)計(jì)算,兩種計(jì)算程序,逐位檢驗(yàn)程序,供初學(xué)者使用,只作整數(shù)運(yùn)算,"難度"選擇不同的運(yùn)算位數(shù)。"練習(xí)"擋運(yùn)行自動(dòng)出題,兩種計(jì)算程序,最后檢驗(yàn)方式,"測(cè)驗(yàn)"擋運(yùn)行自動(dòng)出題,兩種計(jì)算程序,檢驗(yàn)判分程序,作小測(cè)驗(yàn),根據(jù)"難度"選擇出題的位數(shù)和題量…等等。
綜上所述,十進(jìn)制豎式運(yùn)算的實(shí)現(xiàn)沒(méi)有什么特別難的問(wèn)題,就是比較繁瑣,編制程序要有耐心,要特別細(xì)心。
本發(fā)明設(shè)計(jì)的學(xué)生計(jì)算器,由于嚴(yán)格遵守十進(jìn)制豎式運(yùn)算法則,逐步運(yùn)算,學(xué)生無(wú)懶可偷,完全克服了普通計(jì)算器對(duì)學(xué)生的不利影響,反之,由于設(shè)計(jì)有自動(dòng)檢驗(yàn)程序,不必教師批改,學(xué)生即可知道自己做的正確與否,即可減輕教師的負(fù)擔(dān),又可增強(qiáng)學(xué)生的自信心,再加上自動(dòng)出題和小測(cè)驗(yàn)功能,足以提高學(xué)生的學(xué)習(xí)興趣,長(zhǎng)期使用,對(duì)于提高學(xué)生的運(yùn)算能力,開(kāi)發(fā)學(xué)生的智力,將十分有利,本計(jì)算器的錯(cuò)誤的修改,也是逐位進(jìn)行,比較麻煩,這也就十分容易區(qū)分學(xué)生的差別,該計(jì)算器的普及,學(xué)生不必再用演草紙,這將能節(jié)約大量的紙張和鉛筆。
本發(fā)明可以根據(jù)單片機(jī)的種類,內(nèi)存的大小及顯示器的種類,顯示位數(shù)的多少靈活編制程序,設(shè)計(jì)不同成本和不同運(yùn)算位數(shù)的計(jì)算器,有些功能也可根據(jù)需要添減。
附圖
(1)是本發(fā)明選用80C51作CU,128*64點(diǎn)陣圖形液晶顯示器作顯示部件時(shí)的學(xué)生計(jì)算器線路圖。
按照128*64點(diǎn)陣圖形顯示器的要求,顯示器的數(shù)據(jù)輸入(DB0-7)直接連接接80C51的P0口,片選CS1,CS2分接P2-4,P2-5,讀寫控制R/W接P2-1,總線控制D/1接P2-0.80C51的讀,寫兩輸出經(jīng)多輸入正與非門電路接顯示器的使能端E,24鍵單觸點(diǎn)矩陣導(dǎo)電橡膠鍵盤,其六路縱列接80C51的P1.0-5,四路橫行接P3.0-3,兩節(jié)5號(hào)電池通過(guò)OC-DC變換器產(chǎn)生+5V和-10V兩路電源,分別向80C51和顯示器供電,電位器的中端接顯示器V0,作對(duì)比度調(diào)節(jié)用。
因圖形顯示器內(nèi)無(wú)字符發(fā)生器,程序中須編制字符發(fā)生程序。為充分利用顯示器,并考慮到豎式中需要?jiǎng)澗€,釆用5*5點(diǎn)陣,字符只有0-9,+,-,,,,幾種,小數(shù)點(diǎn)不占位,另設(shè)有一個(gè)光標(biāo)發(fā)生程序,供產(chǎn)生光標(biāo)用,RAM中還專設(shè)了"行位置""列位置"專用存儲(chǔ)器,隨時(shí)記錄光標(biāo)的行列位置,"復(fù)位鍵"可使計(jì)算器全部復(fù)位,即程序回到起點(diǎn),清屏,顯示"學(xué)生計(jì)算器"等。
附圖(2)是學(xué)生計(jì)算器的程序流程圖。
外殼設(shè)計(jì)成袖珍式,攜帶方便。24鍵加復(fù)位鍵,電源開(kāi)關(guān)共26鍵附圖(3)即學(xué)生計(jì)算器的一種面板圖(折疊式展開(kāi)圖)用80C51和128*64點(diǎn)陣圖形液晶顯示器構(gòu)成的計(jì)算器,最大計(jì)算能力加減法10位,乘法5位,除法是6步(除數(shù)為5位時(shí),被除數(shù)為10位;除數(shù)小于5位時(shí),被除數(shù)位數(shù)相應(yīng)減少),開(kāi)方為10位。能進(jìn)行整數(shù)和小數(shù)的加減乘除開(kāi)方五種運(yùn)算,可以滿足小學(xué)和初中學(xué)生的需要。
權(quán)利要求
一種學(xué)生計(jì)算器??梢杂蓡纹瑱C(jī),液晶顯示器,鍵盤組成,其特征是1.通過(guò)"基準(zhǔn)列"和相關(guān)尋位程序,三種不同的數(shù)據(jù)輸入方式,確保顯示屏上的數(shù)據(jù)和內(nèi)存中的數(shù)據(jù)一一對(duì)應(yīng),并符合豎式要求,實(shí)現(xiàn)鍵盤-屏顯手動(dòng)十進(jìn)制豎式運(yùn)算;設(shè)置加減乘三種單位BCD碼運(yùn)算程序,以其為基礎(chǔ),與其它程序組成加減乘除開(kāi)方五種多位數(shù)自動(dòng)逐位運(yùn)算程序,提供正確答案;兩種校對(duì)程序逐位比較手動(dòng)計(jì)算,自動(dòng)計(jì)算兩種結(jié)果的每一位,指示錯(cuò)誤位置,給以修改機(jī)會(huì)修改數(shù)次仍不對(duì)后,給出正確答案。
2.用單片機(jī)的計(jì)數(shù)器(兩個(gè)以上)作不同步運(yùn)行,加上循環(huán)修正量,構(gòu)成單位整數(shù)隨機(jī)數(shù)程序,用"模式存儲(chǔ)器"和"難度存儲(chǔ)器"配合決定數(shù)的位數(shù)和個(gè)數(shù),實(shí)現(xiàn)自動(dòng)出題,自動(dòng)出題,計(jì)算,檢驗(yàn)(不包括修改),加上判分程序的連接運(yùn)行,可以實(shí)現(xiàn)"小測(cè)驗(yàn)"功能。
3. 8051系列單片機(jī)和128*64點(diǎn)陣液晶圖形顯示器加24鍵鍵盤可以構(gòu)成一個(gè)實(shí)用學(xué)生計(jì)算器,其中為圖形顯示器專門設(shè)置了5*5點(diǎn)陣字符發(fā)生程序和光標(biāo)發(fā)生程序,
全文摘要
本發(fā)明涉及一種學(xué)生計(jì)算器,具體地說(shuō),涉及一種能進(jìn)行十進(jìn)制逐位運(yùn)算的學(xué)生計(jì)算器,其特征是用鍵盤手動(dòng)方式在屏幕上逐位作十進(jìn)制豎式運(yùn)算,通過(guò)自動(dòng)計(jì)算和逐位檢驗(yàn)程序校對(duì),修改每位結(jié)果,能進(jìn)行多位整數(shù)和小數(shù)的加減乘除開(kāi)方五種運(yùn)算,并可以設(shè)置自動(dòng)出題和小測(cè)驗(yàn)程序,自動(dòng)出題和進(jìn)行小測(cè)驗(yàn),適合中小學(xué)生使用,利于學(xué)生運(yùn)算能力的提高,益于學(xué)生智力的開(kāi)發(fā)。
文檔編號(hào)G06F15/02GK1149158SQ9511674
公開(kāi)日1997年5月7日 申請(qǐng)日期1995年9月28日 優(yōu)先權(quán)日1995年9月28日
發(fā)明者王和平 申請(qǐng)人:王和平
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
龙州县| 海晏县| 巴林右旗| 永和县| 进贤县| 阿拉尔市| 右玉县| 龙海市| 榆树市| 余姚市| 临湘市| 云浮市| 淮安市| 德昌县| 长垣县| 天水市| 丰顺县| 江油市| 武义县| 莱芜市| 郴州市| 东乌| 香港| 乌兰县| 涪陵区| 姜堰市| 新绛县| 沙坪坝区| 滨海县| 高陵县| 保定市| 余干县| 班玛县| 池州市| 安宁市| 什邡市| 集贤县| 黔西县| 柳河县| 昂仁县| 如东县|