單詞記憶測(cè)試器_第1頁(yè)
單詞記憶測(cè)試器_第2頁(yè)
單詞記憶測(cè)試器_第3頁(yè)
單詞記憶測(cè)試器_第4頁(yè)
單詞記憶測(cè)試器_第5頁(yè)
已閱讀5頁(yè),還剩34頁(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)介

單詞記憶測(cè)試器Documentserialnumber【UU89WT-UU98YT-UU8CB-UUUT-UUT108】隨著現(xiàn)代社會(huì)的發(fā)展,電子技術(shù)的進(jìn)步我們有目共睹,計(jì)算機(jī)是現(xiàn)代電子技術(shù)的成果。在現(xiàn)實(shí)生活中、科學(xué)研究中計(jì)算機(jī)起著越來(lái)越重要的作用。微型計(jì)算機(jī)原理這門(mén)課程是對(duì)計(jì)算機(jī)進(jìn)一步的了解與接觸,微型計(jì)算機(jī)原理是一門(mén)培養(yǎng)計(jì)算機(jī)應(yīng)用能力的技術(shù)基礎(chǔ)課程。本課程主要介紹了有關(guān)微型計(jì)算機(jī)的硬件基礎(chǔ)知識(shí)、基本原理,掌握匯編語(yǔ)言的指令以及編程應(yīng)用。本課程設(shè)計(jì)是基于微機(jī)原理與接口技術(shù)的簡(jiǎn)單應(yīng)用。本設(shè)計(jì)以8086cpu為處理器,利用8255處理芯片的復(fù)位功能來(lái)實(shí)現(xiàn)對(duì)于單詞的錄入,讀取。以12854點(diǎn)陣液晶屏為顯示器件,并使用5X6距陣鍵盤(pán)為輸入設(shè)備,實(shí)現(xiàn)了功能全面的人機(jī)界面和高速的數(shù)據(jù)處理功能,,可儲(chǔ)存10-20個(gè)英文單詞,作為記憶測(cè)試用。關(guān)鍵詞:8086cpu;8255處理芯片;12854點(diǎn)陣液晶屏5*6矩陣鍵盤(pán)目錄TOC\o"1-5"\h\z\o"CurrentDocument"1緒論 1\o"CurrentDocument"基本內(nèi)容 1\o"CurrentDocument"用途及特點(diǎn) 12方案選擇及論證 2設(shè)計(jì)方案 2 2TOC\o"1-5"\h\z\o"CurrentDocument"方案論證 23硬件系統(tǒng)說(shuō)明 4\o"CurrentDocument"硬件設(shè)計(jì)思路 4\o"CurrentDocument"中央處理模塊 4\o"CurrentDocument"顯示模塊的硬件部分介紹 4\o"CurrentDocument"矩陣鍵盤(pán) 7系統(tǒng)構(gòu)成框圖 8芯片選擇 9\o"CurrentDocument"8086CPU內(nèi)部結(jié)構(gòu)及其各引腳 9\o"CurrentDocument"8255A處理芯片 10電路原理圖設(shè)計(jì) 13\o"CurrentDocument"存儲(chǔ)空間與I/O地址分配 144軟件系統(tǒng)說(shuō)明 15\o"CurrentDocument"軟件設(shè)計(jì)思路 15 15 16TOC\o"1-5"\h\z矩陣鍵盤(pán)輸入模塊 19\o"CurrentDocument"LCD12864顯示模塊 19\o"CurrentDocument"顯示字模碼的提取模塊 20源程序清單 20\o"CurrentDocument"5所選芯片清單 28總結(jié) 29\o"CurrentDocument"致謝 30\o"CurrentDocument"參考文獻(xiàn) 311緒論隨著現(xiàn)代社會(huì)的發(fā)展,電子技術(shù)的進(jìn)步我們有目共睹,計(jì)算機(jī)是現(xiàn)代電子技術(shù)的成果。在現(xiàn)實(shí)生活中、科學(xué)研究中計(jì)算機(jī)起著越來(lái)越重要的作用。多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)、智能信息處理技術(shù)、自適用控制技術(shù)、數(shù)據(jù)挖掘與處理技術(shù)等都離不開(kāi)計(jì)算機(jī)。在越來(lái)越多的場(chǎng)合中,計(jì)算機(jī)扮演著意味深遠(yuǎn)的角色。微型計(jì)算機(jī)原理這門(mén)課程是對(duì)計(jì)算機(jī)進(jìn)一步的了解與接觸,微型計(jì)算機(jī)原理是一門(mén)培養(yǎng)計(jì)算機(jī)應(yīng)用能力的技術(shù)基礎(chǔ)課程。本課程主要介紹了有關(guān)微型計(jì)算機(jī)的硬件基礎(chǔ)知識(shí)、基本原理,掌握匯編語(yǔ)言的指令以及編程應(yīng)用。本次課程設(shè)計(jì)是基于微機(jī)原理與接口技術(shù)的簡(jiǎn)單應(yīng)用?;緝?nèi)容本設(shè)計(jì)以8086CPU為處理器,利用8255處理芯片的復(fù)位功能來(lái)實(shí)現(xiàn)對(duì)于單詞的錄入,讀取。以12854點(diǎn)陣液晶屏為顯示器件,并使用5X6距陣鍵盤(pán)為輸入設(shè)備,實(shí)現(xiàn)了功能全面的人機(jī)界面和高速的數(shù)據(jù)處理功能,,可儲(chǔ)存10-20個(gè)英文單詞,作為記憶測(cè)試用,具體內(nèi)容分為:1.輸入單詞,提示輸入單詞,輸入最少5個(gè)、最多255個(gè)英文單詞,每個(gè)單詞不超過(guò)20個(gè)字符。若直接回車(chē),則結(jié)束單詞輸入,進(jìn)入單詞測(cè)試。輸足20個(gè)字符,自動(dòng)進(jìn)入下一個(gè)單詞的輸入。不足20個(gè)字符個(gè)字符,按回車(chē)鍵進(jìn)入下一個(gè)單詞的輸入。2.單詞記憶測(cè)試:從輸入的第一個(gè)單詞開(kāi)始測(cè)試。鍵入’y'(不分大小寫(xiě))或'n',回答是否認(rèn)識(shí),不需按回車(chē)鍵確認(rèn),其它按鍵無(wú)效。緊接著,沒(méi)有提示,可按上移鍵或下移鍵循環(huán)測(cè)試。按Esc鍵結(jié)束測(cè)試。3.計(jì)算單詞識(shí)別率并顯示輸出。4.提示是否進(jìn)行下一組單詞的輸入和測(cè)試,鍵入’y'(不分大小寫(xiě))或'n'選擇是否繼續(xù),不需按回車(chē)鍵確認(rèn),其它按鍵無(wú)效。用途及特點(diǎn)本論文的研究對(duì)象是基于808CPU的單詞記憶測(cè)試器的設(shè)計(jì),此單詞記憶測(cè)試器可以實(shí)現(xiàn)單詞的輸入并判斷輸入的單詞是否正確,單詞背完后給出正確率。此項(xiàng)設(shè)計(jì)為現(xiàn)實(shí)生活中人們學(xué)習(xí)英語(yǔ)提供了很大的幫助,在現(xiàn)代社會(huì)有著廣泛的應(yīng)用。2方案選擇及論證設(shè)計(jì)方案本題目實(shí)質(zhì)上是一個(gè)具有一定復(fù)雜程度鍵盤(pán)掃描程序,可將單詞存儲(chǔ)在一個(gè)二維數(shù)組中。根據(jù)課題要求,使用 8086CPU進(jìn)行編程,采用8255處理芯片以及復(fù)位電路和時(shí)鐘電路,建立字符型數(shù)組存放單詞,通過(guò)LCD顯示所存放的單詞。根據(jù)設(shè)計(jì)書(shū)的基本內(nèi)容,有兩種設(shè)計(jì)方案。首先利用了編程程序,編輯8255芯片控制字,對(duì)其進(jìn)行初始化,使其工作在方式0,即基本輸入輸出狀態(tài),將8255的A端口設(shè)置為輸出,C端口進(jìn)行,經(jīng)CPU運(yùn)算后,輸出到CPU芯片的A端口中,由此實(shí)現(xiàn)對(duì)其的初始化。其次接入鍵盤(pán)和顯示屏,進(jìn)行初始化,然后錄入單詞,測(cè)試單詞,可以輸入5個(gè)單詞,但不超過(guò)255個(gè),單詞不超過(guò)20個(gè)字符,按回車(chē)鍵進(jìn)行下一個(gè)單詞的輸入,然后進(jìn)行單詞記憶測(cè)試:從輸入的第一個(gè)單詞開(kāi)始測(cè)試。鍵入’y'(不分大小寫(xiě))或'n',回答是否認(rèn)識(shí),不需按回車(chē)鍵確認(rèn),其它按鍵無(wú)效。緊接著,沒(méi)有提示,可按上移鍵或下移鍵循環(huán)測(cè)試。按Esc鍵結(jié)束測(cè)試。計(jì)算單詞識(shí)別率并顯示輸出。提示是否進(jìn)行下一組單詞的輸入和測(cè)試,鍵入’y'(不分大小寫(xiě))或'n'選擇是否繼續(xù),不需按回車(chē)鍵確認(rèn),其它按鍵無(wú)效。對(duì)CPU和8255A先進(jìn)行初始化,再對(duì)鍵盤(pán)和顯示屏進(jìn)行初始化,然后錄入單詞,測(cè)試單詞,可以輸入5個(gè)單詞,但不超過(guò)255個(gè)單詞,單詞的輸入分為兩種情況,第一種是單詞必須夠20個(gè)字符,自動(dòng)進(jìn)入下一個(gè)單詞的輸入,第二種是單詞輸入不超過(guò)20個(gè)單詞,按回車(chē)鍵進(jìn)行下一個(gè)單詞的輸入,出現(xiàn)哪個(gè)執(zhí)行哪個(gè),然后進(jìn)行單詞記憶測(cè)試,從輸入的第一個(gè)單詞開(kāi)始測(cè)試。鍵入’y'(不分大小寫(xiě))或'n',回答是否認(rèn)識(shí),不需按回車(chē)鍵確認(rèn),其它按鍵無(wú)效。緊接著,沒(méi)有提示,可按上移鍵或下移鍵循環(huán)測(cè)試。按Esc鍵結(jié)束測(cè)試。計(jì)算單詞識(shí)別率并顯示輸出。提示是否進(jìn)行下一組單詞的輸入和測(cè)試,鍵入'y'(不分大小寫(xiě))或'n'選擇是否繼續(xù),不需按回車(chē)鍵確認(rèn),其它按鍵無(wú)效。方案論證認(rèn)真對(duì)比兩個(gè)方案,方案一和方案二都有自己的優(yōu)點(diǎn)和缺點(diǎn),我們選擇的是方案二,方案一的單詞沒(méi)有輸入夠20個(gè)字符,需要按鍵才能進(jìn)行下一個(gè)單詞的讀寫(xiě),這樣的話沒(méi)有考慮到輸入夠20個(gè)字符。方案二是輸入夠20個(gè)字符,不需要按鍵就能進(jìn)行下一個(gè)單詞的讀寫(xiě),輸入不夠20個(gè)字符,需要按鍵才能進(jìn)行下一項(xiàng),我們可以兩個(gè)都采用,輸足20個(gè)字符,自動(dòng)進(jìn)入下一個(gè)單詞的輸入,不足20個(gè)字符個(gè)字符,按回車(chē)鍵進(jìn)入下一個(gè)單詞的輸入。這樣可以考慮到所有的情況,可以實(shí)現(xiàn)單詞的寫(xiě)入。此次設(shè)計(jì)的課題分為硬件和軟件兩部分。硬件方面主要由處理芯片和時(shí)鐘振蕩電路,復(fù)位電路整個(gè)實(shí)現(xiàn)字符的輸入、輸出以及電子顯示液晶屏的清屏操作。硬件系統(tǒng)部分包括三個(gè)模塊:中央處理模塊、顯示模塊、鍵盤(pán)輸入模塊。中央處理模塊選用8086CPU,8255處理芯片以及復(fù)位電路和時(shí)鐘電路。輸出顯示模塊主要由單色點(diǎn)陣液晶屏來(lái)實(shí)現(xiàn)。矩陣鍵盤(pán)輸入模塊主要由5*6的矩陣電路來(lái)實(shí)現(xiàn)。硬件設(shè)計(jì)思路此次設(shè)計(jì)的課題分為硬件和軟件兩部分。硬件系統(tǒng)部分包括三個(gè)模塊:中央處理模塊、顯示模塊、鍵盤(pán)輸 入模塊。中央處理模塊選用8086CPU,8255處理芯片以及復(fù)位電路和時(shí)鐘電路。顯示模塊主要由單色點(diǎn)陣液晶屏來(lái)實(shí)現(xiàn)。矩陣鍵盤(pán)輸入模塊主要由5*6的矩陣電路來(lái)實(shí)現(xiàn)。中央處理模塊中央處理模塊選用8086CPU組成,電路包括:8255處理芯片、復(fù)位電路、時(shí)鐘振蕩電路。8086cpu需要在復(fù)位電路和時(shí)鐘振蕩電路組成的最小系統(tǒng)下工作,時(shí)鐘電路采用頻率采用為12MHZ的晶振。復(fù)位電路采用電解電容與電阻串聯(lián),。用戶可以通過(guò)切斷電源進(jìn)行手動(dòng)復(fù)位,或者通過(guò)重新下載新的程序進(jìn)行復(fù)位。顯示模塊的硬件部分介紹顯示模塊采用單色點(diǎn)陣液晶屏12864模塊,該模塊在點(diǎn)陣液晶屏基礎(chǔ)上集成了控制器kS0108,用戶只需設(shè)計(jì)好接口程序,就可讓模塊顯示出各種字符和圖像。12864為一塊128X64點(diǎn)陣的LCD顯示模塊,模塊上的LCM采用COG技術(shù)將控制(包括顯存)、驅(qū)動(dòng)器集成在LCM的玻璃上,接口簡(jiǎn)單、操作方便;為方便用戶的使用,在LCM的基礎(chǔ)上設(shè)計(jì)了12864模塊,將模塊所必需的外圍電容電阻集成到模塊上,并引出多種形式的引線接口方便用戶使用。12864模塊與各種MCU均可進(jìn)行方便簡(jiǎn)單的接口操作。LCD的接口:圖LCD引腳說(shuō)明圖顯示RAM區(qū)映射情況:對(duì)于LCD模塊,應(yīng)該了解清楚驅(qū)動(dòng)控制IC當(dāng)中的顯存與LCD玻璃上的點(diǎn)的對(duì)應(yīng)關(guān)系是非常重要的,這是編寫(xiě)LCD的驅(qū)動(dòng)程序的基礎(chǔ)。12864液晶顯示模塊的顯示器(玻璃)上的顯示點(diǎn)與驅(qū)動(dòng)控制芯片中的顯示緩存RAM是一一對(duì)應(yīng)的。驅(qū)動(dòng)控制芯片的顯示RAM區(qū)每個(gè)byte的數(shù)據(jù)對(duì)應(yīng)屏上的點(diǎn)的排列方式為:縱向排列,低位在上高位在下圖驅(qū)動(dòng)控制芯片的顯示RAM區(qū)12864液晶顯示模塊的顯示屏上的每一個(gè)點(diǎn)都對(duì)應(yīng)有控制器片內(nèi)的顯示緩存RAM中的一個(gè)位,顯示屏上64X128個(gè)點(diǎn)分別對(duì)應(yīng)著顯示RAM的8個(gè)Page,每一個(gè)Page有128個(gè)byte的空間對(duì)應(yīng)。因此可知顯示RAM區(qū)中的一個(gè)Page空間對(duì)應(yīng)8行的點(diǎn),而該P(yáng)age中的一個(gè)byte數(shù)據(jù)則對(duì)應(yīng)一列(8個(gè)點(diǎn))。圖6為顯示RAM區(qū)與顯示屏的點(diǎn)映射圖:圖顯示RAM區(qū)與顯示屏的點(diǎn)映射圖矩陣鍵盤(pán)要測(cè)試記憶的單詞,就要有字母的輸入接口,本接口設(shè)計(jì)為5X6矩陣鍵盤(pán)輸入,接入CPU的P1口和P3口進(jìn)行鍵盤(pán)掃描。最大程度地提高了CPU的IO口的利用率,設(shè)計(jì)共30個(gè)接鍵,包括了26個(gè)英文字母以及四個(gè)功能鍵:“確定”、“不認(rèn)識(shí)”、“上一個(gè)”、“下一個(gè)”。矩陣鍵盤(pán)如圖10,由30個(gè)輕觸按鍵按照6行5列排列,連接到P1、P3端口。其掃描的原理是:先將行線所接的CPU的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。然后再將行線所接的CPU的I/O口作為輸入端,而列線所接的I/O口則作為輸出,以相同的方法讀一次端口,程序中就可識(shí)別是這個(gè)坐標(biāo)的按鍵按下了。圖矩陣鍵盤(pán)原理圖系統(tǒng)構(gòu)成系統(tǒng)主要由8086CPU,8255A系統(tǒng)主要由8086CPU,8255A,點(diǎn)陳液晶屏還有矩陣型鍵盤(pán)輸入組成。矩陣型鍵盤(pán)輸入芯片選擇8086CPU內(nèi)部結(jié)構(gòu)及其各引腳圖8086cpu引腳圖8086cpu的內(nèi)部結(jié)構(gòu)8086CPU從功能上劃分成兩部分:總線接口單元BIU(BusInterfaceUnit)和執(zhí)行單元EU(ExecutionUnit).??EU的組成部分:16位通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI)、算術(shù)邏輯單元(ALU)、標(biāo)志寄存器(FLAG)、電路。BIU的組成部分:段寄存器組(CS,DS,SS,ES)、指令指針(IP)、地址加法器、指令隊(duì)列緩沖器、總線接口控制邏輯。8086cpu的工作方式8086的最小/最大工作方式Intel公司在設(shè)計(jì)8086CPU芯片時(shí),規(guī)定了兩種工作模式,即最小工作模式和最大工作模式。通過(guò)CPU的第33條引腳MN/來(lái)控制。1.最小工作模式(MN/=1):把8086CPU的33引腳接+5V時(shí),系統(tǒng)處于最小工作模式。最小模式系統(tǒng)適用于單組成的小系統(tǒng),系統(tǒng)中通常只有一個(gè)微處理器,所有的總線控制信號(hào)都直接由8086CPU產(chǎn)生,系統(tǒng)中的總線控制被減到最少。2.最大工作模式(MN/=0):當(dāng)把8086的33引腳接地時(shí),系統(tǒng)處于最大工作模式。此時(shí),系統(tǒng)中存在兩個(gè)或兩個(gè)以上的微處理器,其中有一個(gè)主處理器8086,其他處理器稱為協(xié)處理器。8255A處理芯片圖8255內(nèi)部結(jié)構(gòu)圖8255的引腳圖:圖8255A引腳圖8255的方式選擇控制字:(1) 方式選擇控制字把入、B、CM個(gè)端口分為A、B兩組來(lái)設(shè)定工作方式。A組包括端口A和端口C的上半部,B組包括端口B和端口C的下半部。(2) 端口A可工作于3種方式中的任何一種:端口B只能工作于方式0和方式1;而端口C除用作輸入、輸出口(方式0)外,通常用來(lái)配合端口A和端口B提供聯(lián)絡(luò)控制信號(hào)和狀態(tài)信號(hào)。(3) 歸在同一組的兩個(gè)端口可分別作為輸入端口或輸出端口,不要求同為輸入或輸出。圖方式選擇控制字8255端口C按位置位/復(fù)位控制字(1) 端口C按位置位/復(fù)位控制字盡管是對(duì)端口C進(jìn)行操作的,但此控制字必須寫(xiě)入控制口,而不寫(xiě)入端口C。(2) 一個(gè)控制字只能完成端口C中某一位置的置1或置0,要對(duì)多位置1或置0,必須使用多個(gè)控制字。圖C端口的方式控制字采用的方式控制字使用8255的B口作為數(shù)據(jù)輸入端,與開(kāi)關(guān)相連接(即D1:1);使用工作方式0(即D6D5:00)。綜上:8255的方式控制字為:10000010(即82H)圖時(shí)鐘電路圖

圖復(fù)位電路圖電路原理圖設(shè)計(jì)電路原理圖設(shè)計(jì)使用集原理圖設(shè)計(jì)、PCB設(shè)計(jì)、電路仿真功能為一體的PROTUES軟件。以該軟件設(shè)計(jì)的電路原理圖。圖單詞記憶測(cè)試器電路原理圖電路設(shè)計(jì)參數(shù):(1) C1C2為20-30PF瓷片電容,與12M晶振組成時(shí)鐘振蕩電路;(2) 復(fù)位電路使用R1為10K電阻、C3為10uF電解電容;(3) 12864液晶模塊與CPUP0口連接,因P0口為真正的三態(tài)門(mén)結(jié)構(gòu),因些作數(shù)據(jù)總線使用時(shí)要外接上拉電阻,可使用10K的排阻;(4) 按鍵如圖的行相連,列相連的矩陣接法連入CPU的IO口;(5) 電路的供電為5V直流電源;(6) D1為輸入錯(cuò)誤的狀態(tài)指示燈,加220歐限流電阻連到VCC,因?yàn)镃PUIO的電流灌入能力要強(qiáng)于電流輸出能力,因此一般使IO為低電平時(shí)點(diǎn)亮LED燈。存儲(chǔ)空間與I/O地址分配本設(shè)計(jì)以8086為中心,通過(guò)譯碼器74LS138對(duì)各個(gè)芯片的工作進(jìn)行地址分配,控制各個(gè)芯片在何種工作狀態(tài),當(dāng)?shù)谝粋€(gè)單詞輸入后通過(guò)采集放到內(nèi)存,顯示在LED上,依次執(zhí)行完所有請(qǐng)求,直到單詞記憶測(cè)試完成。語(yǔ)言來(lái)編寫(xiě)程序,整個(gè)程序代碼設(shè)計(jì)分別將代碼和數(shù)據(jù)存儲(chǔ)在代碼段、數(shù)據(jù)段以及附加段中。掃描單詞、輸入單詞再將二進(jìn)制無(wú)符號(hào)數(shù)轉(zhuǎn)換成顯式的十進(jìn)制ASCII碼,并送顯示屏顯示。清顯示屏,經(jīng)復(fù)位電路到單詞鏈表進(jìn)入主程序的循環(huán)結(jié)構(gòu)。以此反復(fù)以至于達(dá)到單詞測(cè)試記憶的目的。軟件設(shè)計(jì)思路因本系統(tǒng)為模塊化設(shè)計(jì),為方便軟件編寫(xiě)和移植,程序設(shè)計(jì)采用匯編語(yǔ)言,程序流程圖如 一顯示屏初始化鍵盤(pán)掃描輸入有按鍵命執(zhí)行按鍵命令顯示下.輸入正確.NY圖程序流程圖主程序的定義與錄入Y顯示正確確N8255入初始化2CPU顯示屏初始化鍵盤(pán)掃描輸入有按鍵命執(zhí)行按鍵命令顯示下.輸入正確.NY圖程序流程圖主程序的定義與錄入Y顯示正確確N8255入初始化2CPU初始化顯示主程序首先進(jìn)行存儲(chǔ)變量的定義:存儲(chǔ)各測(cè)試單詞的長(zhǎng)度,如果輸入的單詞長(zhǎng)度與存儲(chǔ)的不同,也為錯(cuò)誤。為能動(dòng)態(tài)地顯示測(cè)試的單詞,先將要測(cè)試的單詞存在一個(gè)二維數(shù)組中,顯示了該數(shù)組中的字符時(shí),顯示函數(shù)也會(huì)被調(diào)用b6db1000hdup('$')b9db'Youdonotknowthefollowingwords,pleaserememberthemagian',0ah,0dh,'$'f1db'verygood,congratulationstoyou',0ah,0dh,'$'主程序的主循環(huán)主程序的主循環(huán)部分代碼及注釋如下:movWords,cl;保存單詞數(shù)目leasi,Buffer;數(shù)據(jù)緩沖區(qū)地址movbx,[]mov口,bx;把第一個(gè)節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)地址指向最后一個(gè)節(jié)點(diǎn)mov口,si;把最后一個(gè)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)地址指向第一個(gè)節(jié)點(diǎn),形成循環(huán)鏈表鍵盤(pán)的輸入是通過(guò)矩陣掃描的方法,通過(guò)矩陣掃描可找到按鍵所在的某行某列,但要得到一個(gè)英文字母值,還得在返回的某行某列位置預(yù)先定義個(gè)字母值,因此5*6矩陣鍵盤(pán)的整個(gè)返回字母表可定義一個(gè)二維數(shù)組存儲(chǔ)。該二維數(shù)組為行*列10*5,即10行5列,10行表示有10個(gè)單詞,實(shí)際根據(jù)存儲(chǔ)ROM的大小,可以增加單詞數(shù);列數(shù)表示單詞在存儲(chǔ)器中占的字符數(shù),以最長(zhǎng)單詞(5個(gè)字符)定義,不足5個(gè)字符的單詞后補(bǔ)空格表示。輸入單詞:提示輸入單詞,輸入最少5個(gè)、最多255個(gè)英文單詞,每個(gè)單詞不超過(guò)20個(gè)字符;若直接回車(chē),則結(jié)束單詞輸入,進(jìn)入單詞測(cè)試;輸足20個(gè)字符,自動(dòng)進(jìn)入下一個(gè)單詞的輸入;不足20個(gè)字符個(gè)字符,按回車(chē)鍵進(jìn)入下一個(gè)單詞的輸入。單詞錄入模塊程序代碼段:Input_WordsProcNear;輸入一組單詞xorcl,cl;輸入的單詞數(shù)目初值leabx,Buffer;數(shù)據(jù)緩沖區(qū)地址movdi,bxOutputPrompt_Str1;提示輸入單詞@@Input_Words:cmpcl,255jz@@Termanate;限定最多255個(gè)單詞mov:],No;初始化識(shí)別標(biāo)志mov口,di;前一個(gè)節(jié)點(diǎn)地址mov[],Chrs+1;每個(gè)單詞最多字符數(shù)movdi,bxleadx,[];鍵盤(pán)輸入緩沖區(qū)地址movah,0ah;輸入單詞int21hmovsi,dxincsilodsb;讀入實(shí)際輸入的字符個(gè)數(shù),即單詞長(zhǎng)度testal,al;直接回車(chē)?jz@@Termanate;是,結(jié)束單詞輸入inccl;累計(jì)輸入的單詞數(shù)目xorah,ahaddsi,axmov[si],'$';使之能用dos功能調(diào)用9號(hào)功能顯示這個(gè)字符串(單詞)incsimov口,si;下一個(gè)節(jié)點(diǎn)地址movbx,sicallOutput_CTLF;輸出一個(gè)回車(chē)、換行jmp@@Input_Words;輸入下一個(gè)單詞@@Termanate:cmpcl,10jb@@Input_Words;限定最少5個(gè)單詞movWords,cl;保存單詞數(shù)目leasi,Buffer;數(shù)據(jù)緩沖區(qū)地址movbx,[]mov[],bx;把第一個(gè)節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)地址指向最后一個(gè)節(jié)點(diǎn)mov口,si;把最后一個(gè)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)地址指向第一個(gè)節(jié)點(diǎn),形成循環(huán)鏈表callOutput_CTLFretInput_WordsEndP

圖單詞錄入模塊單詞記憶測(cè)試:從輸入的第一個(gè)單詞開(kāi)始測(cè)試。鍵入'y'(不分大小寫(xiě))或'n',回答是否認(rèn)識(shí),不需按回車(chē)鍵確認(rèn),其它按鍵無(wú)效。緊接著,沒(méi)有提示,可按上移鍵或下移鍵循環(huán)測(cè)試。按Esc鍵結(jié)束測(cè)試。然后計(jì)算單詞識(shí)別率并顯示輸出。提示是否進(jìn)行下一組單詞的輸入和測(cè)試,鍵入'y'(不分大小寫(xiě))或'n'選擇是否繼續(xù),不需按回車(chē)鍵確認(rèn),其它按鍵無(wú)效。單詞測(cè)試程序代碼段:Test_WordsProcNearcallOutput_CTLFcallOutput_CTLFleadx,[][2]movah,9int21hcallOutput_CTLFOutputPrompt_Str2;要求回答是否認(rèn)識(shí)這個(gè)詞匯,回答字母不分大小寫(xiě)@@Recognise:or口,YescallYes_or_Nojc@@Up_Downand[],No@@Up_Down:xorah,ahint16hcmpah,KBEscjnz$+3retcmpah,KBUpjnz@@Next_KBDownmovsi,[]jmpTest_Words@@Next_KBDown:cmpah,KBDownjnz@@Up_Downmovsi,[]jmpTest_WordsTest_WordsEndP圖單詞測(cè)試模塊圖矩陣鍵盤(pán)輸入模塊矩陣鍵盤(pán)采用5X6列與行掃描法,P1口依次接鍵盤(pán)的每一行,而P3口依次接鍵盤(pán)的每一列,程序開(kāi)始先令P1全為高電平,P3口全為低電平,這樣一旦矩陣鍵盤(pán)中有一個(gè)鍵按下時(shí),就會(huì)在某一行中出現(xiàn)低電平,而某一列中出現(xiàn)高電平,程序先讀P1口,以檢測(cè)到有低電平來(lái)確定行。再使P1全為低電平,P3口全為高電平,再讀P3口,以檢測(cè)到低電平來(lái)確定列。這里還要考慮按鍵的機(jī)械抖動(dòng)問(wèn)題,因?yàn)榘存I的機(jī)械特性,可能在按下瞬間會(huì)有一組抖動(dòng)的脈沖,一般程序中采用延時(shí)方法來(lái)去抖動(dòng)。LCD12864顯示模塊LCD12864顯示模塊的程序作為顯示部分的底層程序,用戶可直接調(diào)用其函數(shù)來(lái)達(dá)到驅(qū)動(dòng)和顯示功能。清顯示屏,將LCD上的顯示字符清空。字符的顯示,將輸入的字符,單詞顯示在液晶顯示屏上。進(jìn)入主程序后,先對(duì)LCD12864屏進(jìn)行初始化和清屏操作,然后在LCD12864屏上顯示單片機(jī)單詞記憶測(cè)試器的靜態(tài)的圖文,需要?jiǎng)討B(tài)刷新的字符則在主循環(huán)中進(jìn)行。LCD12864的顯示效果如下,此時(shí)系統(tǒng)進(jìn)入單詞輸入測(cè)試就緒狀態(tài)。圖單詞測(cè)試就緒狀態(tài)在系統(tǒng)進(jìn)入單詞輸入測(cè)試就緒狀態(tài)后,主程序即進(jìn)入while(1)的主循環(huán)中,循環(huán)進(jìn)行鍵盤(pán)掃描,并判斷鍵盤(pán)輸入值,再與待測(cè)試的單詞進(jìn)行比較,如果輸入的字符和字符長(zhǎng)度均與被測(cè)試的單詞一致,則顯示correct加1,即為加1分,并進(jìn)入下一個(gè)單詞的測(cè)試,測(cè)試完10個(gè)單詞后,重新進(jìn)入第1個(gè)單詞的測(cè)試。顯示字模碼的提取模塊為了使LCD12864能夠顯示用戶存儲(chǔ)的中文漢字和英文單詞,用戶必須將要顯示的漢字字模及英文字母字模碼存入存儲(chǔ)器中,因LCD12864只能顯示點(diǎn)陣圖形,因此存儲(chǔ)入單片機(jī)的字模碼必須是通過(guò)點(diǎn)陣碼轉(zhuǎn)換而成,為了軟換更方便,設(shè)計(jì)使用了字模轉(zhuǎn)換軟件實(shí)現(xiàn)英文碼的取模。源程序清單b6db1000hdup('$')b9db'Youdonotknowthefollowingwords,pleaserememberthemagian',0ah,0dh,'$'f1db'verygood,congratulationstoyou',0ah,0dh,'$'callzi4;輸出不認(rèn)識(shí)的單詞movah,02h;回車(chē)換行movdl,0dhint21hmovah,02hmovdl,0ahint21hcallzi2;將不認(rèn)識(shí)的單詞存到B6所指單元callzi2;將不認(rèn)識(shí)的單詞存到B6所指單元m2:incdimovsi,z;保留SI的地址zi4procpushaxpushbxpushcxpushdxpushsipushdi

leadx,b9;輸出不認(rèn)識(shí)的單詞movah,09hint21hleadx,b6movah,09hint21hpopdipopsipopdxpopcxpopbxpopaxretzi4endpCodeSegmentAssumeCS:Code,DS:Code; 功能:顯示指定地址(Str_Addr)的字符串入口:Str_Addr=字符串地址(要求在數(shù)據(jù)段)用法:OutputStr_Addr用法:OutputStr_Addr用法舉例:OutputPromptStr)OutputMACROStr_AddrOutputMACROStr_Addrpushaxleadx,Str_Addrmovah,9int21hpopaxEndM; ;功能:輸出一個(gè)字符;入口:dl=要顯示的字符Output_ChrprocNearpushaxmovah,02hint21hpopaxretO:蘭蘭—;功能:輸出回車(chē)換行Output_CTLFprocNearpushaxpushdxmovah,02hmovdl,0dhint21hmovdl,0ahint21hpopdxpopaxretOutput_CTLFendp; ;功能:把AX中的二進(jìn)制無(wú)符號(hào)數(shù)轉(zhuǎn)換成顯式的十進(jìn)制ASCII碼,并送顯示屏顯示;入口:AX=X進(jìn)制數(shù);出口:在當(dāng)前光標(biāo)位置顯示轉(zhuǎn)換后的ASCII碼數(shù)字Dec_ASCIIProcNearpushdxpushbxpushdimovbx,10leadi,@@Temp_Save[6]movBYTEptr[di],'$'decdi@@Divide:xordx,dxdivbxordl,30hmov[di],dldecditestax,0ffffhjnz@@Divideincdipushdipopdxmovah,9int21hpopdipopbxpopdxret@@Temp_Savedb7dup(?)Dec_ASCIIEndP;功能:鍵盤(pán)輸入一個(gè)字符,若輸入的是'y'或'n'(不分大小寫(xiě)),則顯示并返回;入口:無(wú);出口:若輸入的是'y',進(jìn)位標(biāo)志置位;若輸入的是'n',進(jìn)位標(biāo)志復(fù)位。Yes_or_NoprocNearpushdxpushax@@Input_Chr:movah,7;不帶回顯的鍵盤(pán)輸入int21hmovdl,alandal,0dfhcmpal,'Y'jnz$+5stcjmp$+7cmpal,'N'jnz@@Input_Chrclcmovah,2int21hpopaxpopdxretYes_or_NoEndp; Input_WordsProcNear;輸入一組單詞xorcl,cl;輸入的單詞數(shù)目初值leabx,Buffer;數(shù)據(jù)緩沖區(qū)地址movdi,bxOutputPrompt_Str1;提示輸入單詞@@Input_Words:cmpcl,255jz@@Termanate;限定最多255個(gè)單詞mov:],No;初始化識(shí)別標(biāo)志mov[],di;前一個(gè)節(jié)點(diǎn)地址mov[],Chrs+1;每個(gè)單詞最多字符數(shù)movdi,bxleadx,口;鍵盤(pán)輸入緩沖區(qū)地址movah,0ah;輸入單詞int21hmovsi,dxincsilodsb;讀入實(shí)際輸入的字符個(gè)數(shù),即單詞長(zhǎng)度testal,al;直接回車(chē)?jz@@Termanate;是,結(jié)束單詞輸入inccl;累計(jì)輸入的單詞數(shù)目xorah,ahaddsi,axmov[si],'$';使之能用dos功能調(diào)用9號(hào)功能顯示這個(gè)字符串(單詞)incsimov口,si;下一個(gè)節(jié)點(diǎn)地址movbx,sicallOutput_CTLF;輸出一個(gè)回車(chē)、換行jmp@@Input_Words;輸入下一個(gè)單詞@@Termanate:cmpcl,5jb@@Input_Words;限定最少5個(gè)單詞movWords,cl;保存單詞數(shù)目leasi,Buffer;數(shù)據(jù)緩沖區(qū)地址movbx,[]mov[],bx;把第一個(gè)節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)地址指向最后一個(gè)節(jié)點(diǎn)mov[],si;把最后一個(gè)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)地址指向第一個(gè)節(jié)點(diǎn),形成循環(huán)鏈表callOutput_CTLFretInput_WordsEndP; TestWordsProcNear\。…CTLFcallOutput_ClLFcallOutput_CTLFleadx,[][2]movah,9int21hcallOutput_CTLFOutputPrompt_Str2;要求回答是否認(rèn)識(shí)這個(gè)詞匯,回答字母不分大小寫(xiě)@@Recognise:or[],YescallYes_or_Nojc@@Up_Downand[],No@@Up_Down:xorah,ahint16hcmpah,KBEscjnz$+3retcmpah,KBUp

jnz@@NextKBDownmovsi,口jmpTestWords@@NextKBDown:cmpah,KBDownjnz@@Up_Downmovsi,口jnz@@NextKBDownmovsi,口jmpTestWords@@NextKBDown:cmpah,KBDownjnz@@Up_Downmovsi,口jmpTestWordsTestWordsEndPStatics_WordsProcNear;計(jì)算單詞識(shí)別率movcl,Words;取單詞數(shù)xorch,chleasi,Buffer;數(shù)據(jù)緩沖區(qū)地址movbx,[]xorax,ax@@L0:addal,口;累加識(shí)別率movsi,[]loop@@L0movbl,100mulbldivWordsOutputPrompt_Str3;提示顯示單詞識(shí)別率callDec_ASCII;把AX中的二進(jìn)制無(wú)符號(hào)數(shù)轉(zhuǎn)換成顯式的十進(jìn)制ASCII碼,并送顯示屏顯示movdl,'%'callOutput_Chr;顯示輸出一個(gè)字符retStatics_WordsEndP; Chrsequ20;單詞最多字符數(shù)Yesequ1;認(rèn)識(shí)Noequ0;不認(rèn)識(shí)KBEscequ1;Esc鍵掃描碼KBUpequ48H;1鍵掃描碼KBDownequ50H;1鍵掃描碼;定義結(jié)構(gòu)類型Words_TableStruc;單詞鏈表Recognisedb?;識(shí)別標(biāo)志(是否認(rèn)識(shí)這個(gè)單詞)previousdw?;前一個(gè)節(jié)點(diǎn)地址Nextdw?;下一個(gè)節(jié)點(diǎn)地址Words_TableEndS; Prompt_Str1db'Pleaseinputwords:',13,10,'$';“請(qǐng)輸入單詞”提示信息Prompt_Str2db'doyouknowit?(y/n):$';“是否認(rèn)識(shí)單詞”提示信息Prompt_Str3db7,13,10,13,10,'youranswerrateis:$';“單詞識(shí)別率”提示信息Prompt_Str4db7,13,10,13,10,'Doyouwanttotestagain(y/n)?$';“測(cè)試下一組單詞?”提示信息Wordsdb0;實(shí)際輸入的單詞數(shù)目Press_Keydb7,13,10,13,10,'Thecomplated.Pressanykeytoexit...$';操作完成按任意鍵結(jié)束程序提示信息Start: pushcspopdspushcspopes;使數(shù)據(jù)段、附加段與代碼段同段@@InputWord:callInput_Words;輸入一組單詞callTest_Words;測(cè)試識(shí)別率callStatics_Words;計(jì)算單詞識(shí)別率OutputPrompt_Str4;再測(cè)試一組單詞?callYes_or_NocallOutput_CTLFcallOutput_CTLFjc@@InputWord; Exit_Proc:OutputPress_Key;提示操作完成,按任意鍵結(jié)束程序movah,1int21hmovah,4ch;結(jié)束程序int21hBuffer:;數(shù)據(jù)緩沖區(qū)CodeENDSENDStart;編譯到此結(jié)束5所選芯片清單總結(jié)時(shí)光飛逝,短短的兩周的課程設(shè)計(jì)即將結(jié)束,現(xiàn)在回頭想想兩周的設(shè)計(jì),我們對(duì)自己的這次設(shè)計(jì)有了更深,更新

溫馨提示

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