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

摘要隨著現(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\z1緒論1基本內(nèi)容1用途及特點(diǎn)12方案選擇及論證3設(shè)計(jì)方案3設(shè)計(jì)方案一3設(shè)計(jì)方案二3方案論證33硬件系統(tǒng)說(shuō)明5硬件設(shè)計(jì)思路5中央處理模塊5顯示模塊的硬件部分介紹5矩陣鍵盤(pán)7系統(tǒng)構(gòu)成框圖8芯片選擇98086CPU內(nèi)部結(jié)構(gòu)及其各引腳98255A處理芯片10電路原理圖設(shè)計(jì)13存儲(chǔ)空間與I/O地址分配144軟件系統(tǒng)說(shuō)明16軟件設(shè)af思路16程序主模塊16單詞錄入模塊17單詞測(cè)試模塊19矩陣鍵盤(pán)輸入模塊20LCD12864顯示模塊20顯示字模碼的提取模塊21源程序清單215所選芯片清單29總結(jié)30致謝31參考文獻(xiàn)321緒論隨著現(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ì)以8086CPM處理器,利用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!行編程,采用8255處理芯片以及復(fù)位電路和時(shí)鐘電路,建立字符型數(shù)組存放單詞,通過(guò)LCD顯示所存放的單詞。根據(jù)設(shè)計(jì)書(shū)的基本內(nèi)容,有兩種設(shè)計(jì)方案。設(shè)計(jì)方案一首先利用了編程程序,編輯8255芯片控制字,對(duì)其進(jìn)行初始化,使其工作在方式0,即基本輸入輸出狀態(tài),將8255的A端口設(shè)置為輸出。端口進(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ú)效。設(shè)計(jì)方案二對(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ě)入。3硬件系統(tǒng)說(shuō)明此次設(shè)計(jì)的課題分為硬件和軟件兩部分。硬件方面主要由處理芯片和時(shí)鐘振蕩電路,復(fù)位電路整個(gè)實(shí)現(xiàn)字符的輸入、輸出以及電子顯示液晶屏的清屏操作。硬件系統(tǒng)部分包括三個(gè)模塊:中央處理模塊、顯示模塊、鍵盤(pán)輸入模塊。中央處理模塊選用8086CPU8255處理芯片以及復(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)輸入模塊。中央處理模塊選用8086CPU8255處理芯片以及復(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的接口:

序號(hào)接口引腳名說(shuō)明序號(hào)接口引腳名說(shuō)明1VDDLCM供電2LEDA背光正極輸入3DBOB位數(shù)據(jù)總線4CS片通f低電邛有效)5DBI6RST復(fù)位腳(■低電平復(fù)位)7DB28RS(AO)數(shù)孤命令選擇腳gDBS10WR6800系列MPU的詼.?寫(xiě)信號(hào)小爾)11DB412EPeaoo系列MP口的時(shí)鐘信廿使能腳fEP}13DB51415DBS1617DB71319VSS地20LEDK背光負(fù)極輸入圖3.1LCD引腳說(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)控制芯片的顯示RAME每個(gè)byte的數(shù)據(jù)對(duì)應(yīng)屏上的點(diǎn)的排列方式為:縱向排列,低位在上高位在下圖3.2驅(qū)動(dòng)控制芯片的顯示RAMK12864液晶顯示模塊的顯示屏上的每一個(gè)點(diǎn)都對(duì)應(yīng)有控制器片內(nèi)的顯示緩存RAMfr的一個(gè)位,顯示屏上64X128個(gè)點(diǎn)分別對(duì)應(yīng)著顯示RAM勺8個(gè)Page,每一個(gè)Page有128個(gè)byte的空間對(duì)應(yīng)。因此可知顯示RAMK中的一個(gè)Page空問(wèn)對(duì)應(yīng)8行的點(diǎn),而該P(yáng)age中的一個(gè)byte數(shù)據(jù)則對(duì)應(yīng)一列(8個(gè)點(diǎn))。圖6為顯示RAMK與顯示屏的點(diǎn)映射圖:LCD國(guó)示號(hào)橫向坐標(biāo):自左奉小0123?用電-4]為13612"£bit數(shù)據(jù)0126fVI.tobitotiiObicO?■*4dblxObitObiTObitLbillbillbit1?T■■bi-lbitlbitlbit:bit?bit??**dbit3bit2bit口???■???????,.■?■…■■■■■■bit6hit6bltG***4bit6bitBbit7binLit7bid**■bli7bit7Ebix數(shù)據(jù)8bltObltObilOblcO.1bi-0bitObitD9bitlbitlbillbid?**ibit1bitlbitl■■■???■????*????????,.■…*■■■??????,15bit7hit:laltTblt7***■…bit7bit"bit7******……—……-■??******7?■V******Page7Rbit數(shù)據(jù)5&bitObitObitObicO?*?■bitObitflbit。596。616263ri'一>>…—,??,?,bit7hilltliFbit7堂I…bti7bit;bl(7bitobitobKO?+blxObitotirobltlbitlbillbid?*■■birlbitlbixLbit2bit:bil2bit:bit2bit:bit2bi+3bit3bit3bitSbiT3bit3bit3圖3.3顯示RAM區(qū)與顯示屏的點(diǎn)映射圖3.1,3矩陣鍵盤(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)就可得知是否有鍵按下了。然后再將行線所接的cpuBI/O口作為輸入端,而列線所接的I/O口則作為輸出,以相同的方法讀一次端口,程序中就可識(shí)別是這個(gè)坐標(biāo)的按鍵按下了。

系統(tǒng)構(gòu)成系統(tǒng)主要由8086CPU,8255A點(diǎn)陳液晶屏還有矩陣型鍵盤(pán)輸入組成。以8086CPM處理器,利用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è)試用。圖3.5系統(tǒng)構(gòu)成圖

芯片選擇8086CPU內(nèi)部結(jié)構(gòu)及其各弓I腳七.11,口%'1七.11,口%'111233gAL%A37色鳥(niǎo)]536AD]g工3S714ftU力d33“口JJ丁SOS6.尸」J1031dJ|IrL|113011L112M21J-1326iL1i.1427AD;IS16好251W【——1721nrTR——IS23CLK——1922地2021白居/瑞自必0BFE/St——MNJ一RD-HDLD—IWA—WR_一M打Q一LTEDEN—ALE—NtaTEST—READYKKSET圖3.68086cpu引腳圖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處理芯片雙向數(shù)況總線RD5TtAlAOKESFTJ■制部件數(shù)總蟠黑BnkIOYPA"-PAO雙向數(shù)況總線RD5TtAlAOKESFTJ■制部件數(shù)總蟠黑BnkIOYPA"-PAOkIOYPC3-PC0入10/PB7-PB0圖3.78255內(nèi)部結(jié)構(gòu)圖8255的弓I腳圖:PA3-PA2PA1PA3-PA2PA1————PAD■■RT一CSGND-A1―Ao-PC7一~一PC6一―PC5r——PC4————PCO————PC1-PC2———PC3————PE0-■PE1--PB2.-123456789101112131415161713192040393837363534338255A3231302928277625242322211-PA4-■PA5PAeV--PA7-■TO-E3SETDoD1一—DaD3-■D4D5B6--D7--——Vcc(+5V)--PB了__PB6-■PB5-.PB4T——APB3圖3.88255A引腳圖8255的方式選擇控制字:(1)方式選擇控制字把A、B、C三個(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è)端口可分別作為輸入端口或輸出端口,不要求同為輸入或輸出

圖3.9方式選擇控制字8255端口C按位置位/復(fù)位控制字(1)端口C按位置位/復(fù)位控制字盡管是對(duì)端口C進(jìn)行操作的,但此控制字必須寫(xiě)入控制口,而不寫(xiě)入端口Co一個(gè)控制字只能完成端口C中某一位置的置1或置0,要對(duì)多位置1或置0,必須使用多個(gè)控制字。0D6D5D4D3D2D1D01:置位0:復(fù)位位選擇01I234567010101010011:001100001111圖3.10C端口的方式控制字采用的方式控制字使用8255的B口作為數(shù)據(jù)輸入端,與開(kāi)關(guān)相連接(即D1:1);使用工作方式0(即D6D5:00)。綜上:8255的方式控制字為:10000010(即82H)

CjXTALiCjMCS-51圖3.11時(shí)鐘電路圖圖圖3.11時(shí)鐘電路圖圖3.12復(fù)位電路圖3.4電路原理圖設(shè)計(jì)電路原理圖設(shè)計(jì)使用集原理圖設(shè)計(jì)、PCB設(shè)計(jì)、電路仿真功能為一體的PROTUESC件。以該軟件設(shè)計(jì)的電路原理圖。

L甑-視里河刑/所廣度“一t■上里巾貳巧思也叫鬼?聞憶師朗:嚴(yán)立現(xiàn)總司的京人《力世HnA貨r遇平龍,單M爐L甑-視里河刑/所廣度“一t■上里巾貳巧思也叫鬼?聞憶師朗:嚴(yán)立現(xiàn)總司的京人《力世HnA貨r遇平龍,單M爐怕人》IL單ifl用敏融UflEH在(KE顯不.米林班iUP在彼不認(rèn)口.版可U苴,上f內(nèi)用*中高融中,if喈工.3Tli15后物匏窕,1rln|GFAL■X7JU1FTalJJL_zrecE:ftln[cmmJL1AF1■|KlQmU-2印DIm_>mzPUMMRWiKan■匹■4T*Ufi±seI?wnjAiniP2MHP2i-^lZ,氏13,P2SAI*PYX停FamiL”*費(fèi)l>3*HT1i力,WE.四M5?Ftmk翻4kFP1HFP.H圖3.13單詞記憶測(cè)試器電路原理圖電路設(shè)計(jì)參數(shù):C1C2為20-30PF瓷片電容,與12M晶振組成時(shí)鐘振蕩電路;復(fù)位電路使用R1為10K電阻、C3為10uF電解電容;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燈。3.5存儲(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è)試完成。154軟件系統(tǒng)說(shuō)明本課題設(shè)計(jì)總共分為硬件和軟件兩部分。軟件部分主要是利用匯編語(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ǔ)言,程序流程圖如下:開(kāi)始CPU初始化確定鍵顯示上一個(gè)執(zhí)行按鍵命令8255A初始化顯示屏初始化N,字符比較輸入正確NY圖確定鍵顯示上一個(gè)執(zhí)行按鍵命令8255A初始化顯示屏初始化N,字符比較輸入正確NY圖4.1程序流程圖顯示正確程序主模塊主程序的定義與錄入主程序首先進(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,[bx.previous]mov[si.previous],bx;把第一個(gè)節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)地址指向最后一個(gè)節(jié)mov[bx.Next],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[bx.Recognise],No;初始化識(shí)別標(biāo)志mov[bx.previous],di;前一個(gè)節(jié)點(diǎn)地址mov[bx.Next],Chrs+1;每個(gè)單詞最多字符數(shù)movdi,bxleadx,[bx.Next];鍵盤(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[bx.Next],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,[bx.previous]mov[si.previous],bx;把第一個(gè)節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)地址指向最后一個(gè)節(jié)mov[bx.Next],si;把最后一個(gè)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)地址指向第一個(gè)節(jié)點(diǎn),形成循環(huán)鏈表callOutput_CTLFretInput_WordsEndP圖4.2單詞錄入模塊單詞測(cè)試模塊單詞記憶測(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,[si.Next][2]movah,9int21hcallOutput_CTLFOutputPrompt_Str2;要求回答是否認(rèn)識(shí)這個(gè)詞匯,回答字母不分大小寫(xiě)@@Recognise:or[si.Recognise],YescallYes_or_Nojc@@Up_Downand[si.Recognise],No@@Up_Dowxorah,ahint16hcmpah,KBEscjnz$+3retcmpah,KBUpjnz@@Next_KBDownmovsi,[si.previous]jmpTest_Words@@Next_KBDowcmpah,KBDownjnz@@Up_Downmovsi,[si.Next]jmpTest_WordsTest_WordsEndP圖4.3單詞測(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顯示模塊LCD1286姓示模塊的程序作為顯示部分的底層程序,用戶可直接調(diào)用其函數(shù)來(lái)達(dá)到驅(qū)動(dòng)和顯示功能。清顯示屏,將LCD上的顯示字符清空。字符的顯示,將輸入的字符,單詞顯示在液晶顯示屏上。進(jìn)入主程序后,先對(duì)LCD12864W進(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)。圖4.4單詞測(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è)試。4.1.6顯示字模碼的提取模塊為了使LCD12864tt夠顯示用戶存儲(chǔ)的中文漢字和英文單詞,用戶必須將要顯示的漢字字模及英文字母字模碼存入存儲(chǔ)器中,因LCD1286瞑能顯示點(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:incdileasi,b6;將不認(rèn)識(shí)的單詞放到B6所指單元111111111111111111111movsi,z;保留SI的地址zi4procpushaxpushbxpushcxpushdxpushsipushdileadx,b9;輸出不認(rèn)識(shí)的單詞movah,09hint21hleadx,b6movah,09hint21hpopdipopsipopdxpopcxpopbxpopaxretzi4endpCodeSegmentAssumeCS:Code,DS:Code;;功能:顯示指定地址(Str_Addr)的字符串;入口:Str_Addr=字符串地址(要求在數(shù)據(jù)段);用法:OutputStr_Addr用法舉例:OutputPromptStr)pushaxleadx,Str_Addrmovah,9int21hpopaxEndM;;功能:輸出一個(gè)字符;入口:dl=要顯示的字符Output_ChrprocNearpushaxmovah,02hint21hpopaxretOutput_Chrendp;;功能:輸出回車(chē)換行Output_CTLFprocNearpushaxpushdxmovah,02hmovdl,0dhint21hmovdl,0ahint21hpopdxpopaxretOutput_CTLFendp;;功能:把AX中的二進(jìn)制無(wú)符號(hào)數(shù)轉(zhuǎn)換成顯式的十進(jìn)制ASCII碼,并送顯示屏顯示;入口:AX=二進(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ú);出口:若輸入的是V,進(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_NoEndpJInput_WordsProcNear;輸入一組單詞xorcl,cl;輸入的單詞數(shù)目初值leabx,Buffer;數(shù)據(jù)緩沖區(qū)地址movdi,bxOutputPrompt_Str1;提示輸入單詞@@Input_Words:cmpcl,255jz@@Termanate;限定最多255個(gè)單詞mov[bx.Recognise],No;初始化識(shí)別標(biāo)志mov[bx.previous],di;前一個(gè)節(jié)點(diǎn)地址mov[bx.Next],Chrs+1;每個(gè)單詞最多字符數(shù)movdi,bxleadx,[bx.Next];鍵盤(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[bx.Next],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,[bx.previous]mov[si.previous],bx;把第一個(gè)節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)地址指向最后一個(gè)節(jié)點(diǎn)mov[bx.Next],si;把最后一個(gè)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)地址指向第一個(gè)節(jié)點(diǎn),形成循環(huán)鏈表callOutput_CTLFretInput_WordsEndP;Test_WordsProcNearcallOutput_CTLFleadx,[si.Next][2]movah,9int21hcallOutput_CTLFOutputPrompt_Str2;要求回答是否認(rèn)識(shí)這個(gè)詞匯,回答字母不分大小寫(xiě)@@Recognise:or[si.Recognise],YescallYes_or_Nojc@@Up_Downand[si.Recognise],No@@Up_Down:xorah,ahint16hcmpah,KBEscjnz$+3retcmpah,KBUpjnz@@Next_KBDownmovsi,[si.previous]jmpTest_Words@@Next_KBDown:cmpah,KBDownjnz@@Up_Downmovsi,[si.Next]jmpTest_WordsTest_WordsEndP;Statics_WordsProcNear;計(jì)算單詞識(shí)別率movcl,Words;取單詞數(shù)xorch,chleasi,Buffer;數(shù)據(jù)緩沖區(qū)地址movbx,[si.Next]xorax,ax@@L0:addal,[si.Recognise];累加識(shí)別率movsi,[si.Next]loop@@L0movbl,100mulbldivWordsOutputPrompt_Str3;提示顯示單詞識(shí)別率callDec_ASCII;把AX中的二進(jìn)制無(wú)符號(hào)數(shù)轉(zhuǎn)換成顯式的十進(jìn)制ASCII碼,并送顯示屏顯示movdl,'%'callOutput_Chr;顯示輸出一個(gè)字符retStatics_WordsEndPChrsequ20;單詞最多字符數(shù)Yesequ1;認(rèn)識(shí)Noequ0;不認(rèn)識(shí)KBEscequ1;Esc鍵掃描碼KBUpequ48H;健掃描碼KBDownequ50H;獨(dú)掃描碼J;定義結(jié)構(gòu)類(lèi)型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_Ke

溫馨提示

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