单词记忆测试器.docx
- 文档编号:29068309
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:29
- 大小:81.58KB
单词记忆测试器.docx
《单词记忆测试器.docx》由会员分享,可在线阅读,更多相关《单词记忆测试器.docx(29页珍藏版)》请在冰豆网上搜索。
单词记忆测试器
CompanyDocumentnumber:
WUUT-WUUY-WBBGB-BWYTT-1982GT
单词记忆测试器
摘要
随着现代社会的发展,电子技术的进步我们有目共睹,计算机是现代电子技术的成果。
在现实生活中、科学研究中计算机起着越来越重要的作用。
微型计算机原理这门课程是对计算机进一步的了解与接触,微型计算机原理是一门培养计算机应用能力的技术基础课程。
本课程主要介绍了有关微型计算机的硬件基础知识、基本原理,掌握汇编语言的指令以及编程应用。
本课程设计是基于微机原理与接口技术的简单应用。
本设计以8086cpu为处理器,利用8255处理芯片的复位功能来实现对于单词的录入,读取。
以12854点阵液晶屏为显示器件,并使用5×6距阵键盘为输入设备,实现了功能全面的人机界面和高速的数据处理功能,,可储存10-20个英文单词,作为记忆测试用。
关键词:
8086cpu;8255处理芯片;12854点阵液晶屏5*6矩阵键盘
1绪论1
基本内容1
用途及特点1
2方案选择及论证2
设计方案2
2
2
方案论证2
3硬件系统说明4
硬件设计思路4
中央处理模块4
显示模块的硬件部分介绍4
矩阵键盘7
系统构成框图8
芯片选择9
8086CPU内部结构及其各引脚9
8255A处理芯片10
电路原理图设计13
存储空间与I/O地址分配14
4软件系统说明15
软件设计思路15
15
16
18
矩阵键盘输入模块19
LCD12864显示模块19
显示字模码的提取模块20
源程序清单20
5所选芯片清单28
总结29
致谢30
参考文献31
1绪论
随着现代社会的发展,电子技术的进步我们有目共睹,计算机是现代电子技术的成果。
在现实生活中、科学研究中计算机起着越来越重要的作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
在越来越多的场合中,计算机扮演着意味深远的角色。
微型计算机原理这门课程是对计算机进一步的了解与接触,微型计算机原理是一门培养计算机应用能力的技术基础课程。
本课程主要介绍了有关微型计算机的硬件基础知识、基本原理,掌握汇编语言的指令以及编程应用。
本次课程设计是基于微机原理与接口技术的简单应用。
基本内容
本设计以8086CPU为处理器,利用8255处理芯片的复位功能来实现对于单词的录入,读取。
以12854点阵液晶屏为显示器件,并使用5×6距阵键盘为输入设备,实现了功能全面的人机界面和高速的数据处理功能,,可储存10-20个英文单词,作为记忆测试用,具体内容分为:
1.输入单词,提示输入单词,输入最少5个、最多255个英文单词,每个单词不超过20个字符。
若直接回车,则结束单词输入,进入单词测试。
输足20个字符,自动进入下一个单词的输入。
不足20个字符个字符,按回车键进入下一个单词的输入。
2.单词记忆测试:
从输入的第一个单词开始测试。
键入'y'(不分大小写)或'n',回答是否认识,不需按回车键确认,其它按键无效。
紧接着,没有提示,可按上移键或下移键循环测试。
按Esc键结束测试。
3.计算单词识别率并显示输出。
4.提示是否进行下一组单词的输入和测试,键入'y'(不分大小写)或'n'选择是否继续,不需按回车键确认,其它按键无效。
用途及特点
本论文的研究对象是基于808CPU的单词记忆测试器的设计,此单词记忆测试器可以实现单词的输入并判断输入的单词是否正确,单词背完后给出正确率。
此项设计为现实生活中人们学习英语提供了很大的帮助,在现代社会有着广泛的应用。
2方案选择及论证
设计方案
本题目实质上是一个具有一定复杂程度键盘扫描程序,可将单词存储在一个二维数组中。
根据课题要求,使用8086CPU进行编程,采用8255处理芯片以及复位电路和时钟电路,建立字符型数组存放单词,通过LCD显示所存放的单词。
根据设计书的基本内容,有两种设计方案。
首先利用了编程程序,编辑8255芯片控制字,对其进行初始化,使其工作在方式0,即基本输入输出状态,将8255的A端口设置为输出,C端口进行,经CPU运算后,输出到CPU芯片的A端口中,由此实现对其的初始化。
其次接入键盘和显示屏,进行初始化,然后录入单词,测试单词,可以输入5个单词,但不超过255个,单词不超过20个字符,按回车键进行下一个单词的输入,然后进行单词记忆测试:
从输入的第一个单词开始测试。
键入'y'(不分大小写)或'n',回答是否认识,不需按回车键确认,其它按键无效。
紧接着,没有提示,可按上移键或下移键循环测试。
按Esc键结束测试。
计算单词识别率并显示输出。
提示是否进行下一组单词的输入和测试,键入'y'(不分大小写)或'n'选择是否继续,不需按回车键确认,其它按键无效。
对CPU和8255A先进行初始化,再对键盘和显示屏进行初始化,然后录入单词,测试单词,可以输入5个单词,但不超过255个单词,单词的输入分为两种情况,第一种是单词必须够20个字符,自动进入下一个单词的输入,第二种是单词输入不超过20个单词,按回车键进行下一个单词的输入,出现哪个执行哪个,然后进行单词记忆测试,从输入的第一个单词开始测试。
键入'y'(不分大小写)或'n',回答是否认识,不需按回车键确认,其它按键无效。
紧接着,没有提示,可按上移键或下移键循环测试。
按Esc键结束测试。
计算单词识别率并显示输出。
提示是否进行下一组单词的输入和测试,键入'y'(不分大小写)或'n'选择是否继续,不需按回车键确认,其它按键无效。
方案论证
认真对比两个方案,方案一和方案二都有自己的优点和缺点,我们选择的是方案二,方案一的单词没有输入够20个字符,需要按键才能进行下一个单词的读写,这样的话没有考虑到输入够20个字符。
方案二是输入够20个字符,不需要按键就能进行下一个单词的读写,输入不够20个字符,需要按键才能进行下一项,我们可以两个都采用,输足20个字符,自动进入下一个单词的输入,不足20个字符个字符,按回车键进入下一个单词的输入。
这样可以考虑到所有的情况,可以实现单词的写入。
3硬件系统说明
此次设计的课题分为硬件和软件两部分。
硬件方面主要由处理芯片和时钟振荡电路,复位电路整个实现字符的输入、输出以及电子显示液晶屏的清屏操作。
硬件系统部分包括三个模块:
中央处理模块、显示模块、键盘输入模块。
中央处理模块选用8086CPU,8255处理芯片以及复位电路和时钟电路。
输出显示模块主要由单色点阵液晶屏来实现。
矩阵键盘输入模块主要由5*6的矩阵电路来实现。
硬件设计思路
此次设计的课题分为硬件和软件两部分。
硬件系统部分包括三个模块:
中央处理模块、显示模块、键盘输入模块。
中央处理模块选用8086CPU,8255处理芯片以及复位电路和时钟电路。
显示模块主要由单色点阵液晶屏来实现。
矩阵键盘输入模块主要由5*6的矩阵电路来实现。
中央处理模块
中央处理模块选用8086CPU组成,电路包括:
8255处理芯片、复位电路、时钟振荡电路。
8086cpu需要在复位电路和时钟振荡电路组成的最小系统下工作,时钟电路采用频率采用为12MHZ的晶振。
复位电路采用电解电容与电阻串联,。
用户可以通过切断电源进行手动复位,或者通过重新下载新的程序进行复位。
显示模块的硬件部分介绍
显示模块采用单色点阵液晶屏12864模块,该模块在点阵液晶屏基础上集成了控制器kS0108,用户只需设计好接口程序,就可让模块显示出各种字符和图像。
12864为一块128X64点阵的LCD显示模块,模块上的LCM采用COG技术将控制(包括显存)、驱动器集成在LCM的玻璃上,接口简单、操作方便;为方便用户的使用,在LCM的基础上设计了12864模块,将模块所必需的外围电容电阻集成到模块上,并引出多种形式的引线接口方便用户使用。
12864模块与各种MCU均可进行方便简单的接口操作。
LCD的接口:
图LCD引脚说明图
显示RAM区映射情况:
对于LCD模块,应该了解清楚驱动控制IC当中的显存与LCD玻璃上的点的对应关系是非常重要的,这是编写LCD的驱动程序的基础。
12864液晶显示模块的显示器(玻璃)上的显示点与驱动控制芯片中的显示缓存RAM是一一对应的。
驱动控制芯片的显示RAM区每个byte的数据对应屏上的点的排列方式为:
纵向排列,低位在上高位在下
图驱动控制芯片的显示RAM区
12864液晶显示模块的显示屏上的每一个点都对应有控制器片内的显示缓存RAM中的一个位,显示屏上64X128个点分别对应着显示RAM的8个Page,每一个Page有128个byte的空间对应。
因此可知显示RAM区中的一个Page空间对应8行的点,而该Page中的一个byte数据则对应一列(8个点)。
图6为显示RAM区与显示屏的点映射图:
图显示RAM区与显示屏的点映射图
矩阵键盘
要测试记忆的单词,就要有字母的输入接口,本接口设计为5×6矩阵键盘输入,接入CPU的P1口和P3口进行键盘扫描。
最大程度地提高了CPU的IO口的利用率,设计共30个接键,包括了26个英文字母以及四个功能键:
“确定”、“不认识”、“上一个”、“下一个”。
矩阵键盘如图10,由30个轻触按键按照6行5列排列,连接到P1、P3端口。
其扫描的原理是:
先将行线所接的CPU的I/O口作为输出端,而列线所接的I/O口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
然后再将行线所接的CPU的I/O口作为输入端,而列线所接的I/O口则作为输出,以相同的方法读一次端口,程序中就可识别是这个坐标的按键按下了。
图矩阵键盘原理图
系统构成
系统主要由8086CPU,8255A,点陈液晶屏还有矩阵型键盘输入组成。
以8086CPU为处理器,利用8255处理芯片的复位功能来实现对于单词的录入,读取。
以12854点阵液晶屏为显示器件,并使用5×6距阵键盘为输入设备,实现了功能全面的人机界面和高速的数据处理功能,,可储存10-20个英文单词,作为记忆测试用。
图系统构成图
芯片选择
8086CPU内部结构及其各引脚
图8086cpu引脚图
8086cpu的内部结构
8086CPU从功能上划分成两部分:
总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit).
EU的组成部分:
16位通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI)、算术逻辑单元(ALU)、标志寄存器(FLAG)、电路。
BIU的组成部分:
段寄存器组(CS,DS,SS,ES)、指令指针(IP)、地址加法器、指令队列缓冲器、总线接口控制逻辑。
8086cpu的工作方式
8086的最小/最大工作方式Intel公司在设计8086CPU芯片时,规定了两种工作模式,即最小工作模式和最大工作模式。
通过CPU的第33条引脚MN/来控制。
1.最小工作模式(MN/=1):
把8086CPU的33引脚接+5V时,系统处于最小工作模式。
最小模式系统适用于单组成的小系统,系统中通常只有一个微处理器,所有的总线控制信号都直接由8086CPU产生,系统中的总线控制被减到最少。
2.最大工作模式(MN/=0):
当把8086的33引脚接地时,系统处于最大工作模式。
此时,系统中存在两个或两个以上的微处理器,其中有一个主处理器8086,其他处理器称为协处理器。
8255A处理芯片
图8255内部结构图
8255的引脚图:
图8255A引脚图
8255的方式选择控制字:
(1)方式选择控制字把A、B、C三个端口分为A、B两组来设定工作方式。
A组包括端口A和端口C的上半部,B组包括端口B和端口C的下半部。
(2)端口A可工作于3种方式中的任何一种:
端口B只能工作于方式0和方式1;而端口C除用作输入、输出口(方式0)外,通常用来配合端口A和端口B提供联络控制信号和状态信号。
(3)归在同一组的两个端口可分别作为输入端口或输出端口,不要求同为输入或输出。
图方式选择控制字
8255端口C按位置位/复位控制字
(1)端口C按位置位/复位控制字尽管是对端口C进行操作的,但此控制字必须写入控制口,而不写入端口C。
(2)一个控制字只能完成端口C中某一位置的置1或置0,要对多位置1或置0,必须使用多个控制字。
图C端口的方式控制字
采用的方式控制字
使用8255的B口作为数据输入端,与开关相连接(即D1:
1);
使用工作方式0(即D6D5:
00)。
综上:
8255的方式控制字为:
10000010(即82H)
图时钟电路图
图复位电路图
电路原理图设计
电路原理图设计使用集原理图设计、PCB设计、电路仿真功能为一体的PROTUES软件。
以该软件设计的电路原理图。
图单词记忆测试器电路原理图
电路设计参数:
(1)C1C2为20-30PF瓷片电容,与12M晶振组成时钟振荡电路;
(2)复位电路使用R1为10K电阻、C3为10uF电解电容;
(3)12864液晶模块与CPUP0口连接,因P0口为真正的三态门结构,因些作数据总线使用时要外接上拉电阻,可使用10K的排阻;
(4)按键如图的行相连,列相连的矩阵接法连入CPU的IO口;
(5)电路的供电为5V直流电源;
(6)D1为输入错误的状态指示灯,加220欧限流电阻连到VCC,因为CPUIO的电流灌入能力要强于电流输出能力,因此一般使IO为低电平时点亮LED灯。
存储空间与I/O地址分配
本设计以8086为中心,通过译码器74LS138对各个芯片的工作进行地址分配,控制各个芯片在何种工作状态,当第一个单词输入后通过采集放到内存,显示在LED上,依次执行完所有请求,直到单词记忆测试完成。
4软件系统说明
本课题设计总共分为硬件和软件两部分。
软件部分主要是利用汇编语言来编写程序,整个程序代码设计分别将代码和数据存储在代码段、数据段以及附加段中。
扫描单词、输入单词再将二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示。
清显示屏,经复位电路到单词链表进入主程序的循环结构。
以此反复以至于达到单词测试记忆的目的。
软件设计思路
因本系统为模块化设计,为方便软件编写和移植,程序设计采用汇编语言,程序流程图如下:
图程序流程图
主程序的定义与录入
主程序首先进行存储变量的定义:
存储各测试单词的长度,如果输入的单词长度与存储的不同,也为错误。
为能动态地显示测试的单词,先将要测试的单词存在一个二维数组中,显示了该数组中的字符时,显示函数也会被调用
b6db1000hdup('$')
b9db'Youdonotknowthefollowingwords,pleaserememberthemagian',0ah,0dh,'$'
f1db'verygood,congratulationstoyou',0ah,0dh,'$'
主程序的主循环
主程序的主循环部分代码及注释如下:
movWords,cl;保存单词数目
leasi,Buffer;数据缓冲区地址
movbx,[]
mov[],bx;把第一个节点的前一个节点地址指向最后一个节点
mov[],si;把最后一个节点的下一个节点地址指向第一个节点,形成循环链表
键盘的输入是通过矩阵扫描的方法,通过矩阵扫描可找到按键所在的某行某列,但要得到一个英文字母值,还得在返回的某行某列位置预先定义个字母值,因此5*6矩阵键盘的整个返回字母表可定义一个二维数组存储。
该二维数组为行*列10*5,即10行5列,10行表示有10个单词,实际根据存储ROM的大小,可以增加单词数;列数表示单词在存储器中占的字符数,以最长单词(5个字符)定义,不足5个字符的单词后补空格表示。
输入单词:
提示输入单词,输入最少5个、最多255个英文单词,每个单词不超过20个字符;若直接回车,则结束单词输入,进入单词测试;输足20个字符,自动进入下一个单词的输入;不足20个字符个字符,按回车键进入下一个单词的输入。
单词录入模块程序代码段:
Input_WordsProcNear;输入一组单词
xorcl,cl;输入的单词数目初值
leabx,Buffer;数据缓冲区地址
movdi,bx
OutputPrompt_Str1;提示输入单词
@@Input_Words:
cmpcl,255
jz@@Termanate;限定最多255个单词
mov[],No;初始化识别标志
mov[],di;前一个节点地址
mov[],Chrs+1;每个单词最多字符数
movdi,bx
leadx,[];键盘输入缓冲区地址
movah,0ah;输入单词
int21h
movsi,dx
incsi
lodsb;读入实际输入的字符个数,即单词长度
testal,al;直接回车
jz@@Termanate;是,结束单词输入
inccl;累计输入的单词数目
xorah,ah
addsi,ax
mov[si],'$';使之能用dos功能调用9号功能显示这个字符串(单词)
incsi
mov[],si;下一个节点地址
movbx,si
callOutput_CTLF;输出一个回车、换行
jmp@@Input_Words;输入下一个单词
@@Termanate:
cmpcl,10
jb@@Input_Words;限定最少5个单词
movWords,cl;保存单词数目
leasi,Buffer;数据缓冲区地址
movbx,[]
mov[],bx;把第一个节点的前一个节点地址指向最后一个节点
mov[],si;把最后一个节点的下一个节点地址指向第一个节点,形成循环链表
callOutput_CTLF
ret
Input_WordsEndP
图单词录入模块
单词记忆测试:
从输入的第一个单词开始测试。
键入'y'(不分大小写)或'n',回答是否认识,不需按回车键确认,其它按键无效。
紧接着,没有提示,可按上移键或下移键循环测试。
按Esc键结束测试。
然后计算单词识别率并显示输出。
提示是否进行下一组单词的输入和测试,键入'y'(不分大小写)或'n'选择是否继续,不需按回车键确认,其它按键无效。
单词测试程序代码段:
Test_WordsProcNear
callOutput_CTLF
callOutput_CTLF
leadx,[][2]
movah,9
int21h
callOutput_CTLF
OutputPrompt_Str2;要求回答是否认识这个词汇,回答字母不分大小写
@@Recognise:
or[],Yes
callYes_or_No
jc@@Up_Down
and[],No
@@Up_Down:
xorah,ah
int16h
cmpah,KBEsc
jnz$+3
ret
cmpah,KBUp
jnz@@Next_KBDown
movsi,[]
jmpTest_Words
@@Next_KBDown:
cmpah,KBDown
jnz@@Up_Down
movsi,[]
jmpTest_Words
Test_WordsEndP
图单词测试模块图
矩阵键盘输入模块
矩阵键盘采用5×6列与行扫描法,P1口依次接键盘的每一行,而P3口依次接键盘的每一列,程序开始先令P1全为高电平,P3口全为低电平,这样一旦矩阵键盘中有一个键按下时,就会在某一行中出现低电平,而某一列中出现高电平,程序先读P1口,以检测到有低电平来确定行。
再使P1全为低电平,P3口全为高电平,再读P3口,以检测到低电平来确定列。
这里还要考虑按键的机械抖动问题,因为按键的机械特性,可能在按下瞬间会有一组抖动的脉冲,一般程序中采用延时方法来去抖动。
LCD12864显示模块
LCD12864显示模块的程序作为显示部分的底层程序,用户可直接调用其函数来达到驱动和显示功能。
清显示屏,将LCD上的显示字符清空。
字符的显示,将输入的字符,单词显示在液晶显示屏上。
进入主程序后,先对LCD12864屏进行初始化和清屏操作,然后在LCD12864屏上显示单片机单词记忆测试器的静态的图文,需要动态刷新的字符则在主循环中进行。
LCD12864的显示效果如下,此时系统进入单词输入测试就绪状态。
图单词测试就绪状态
在系统进入单词输入测试就绪状态后,主程序即进入while
(1)的主循环中,循环进行键盘扫描,并判断键盘输入值,再与待测试的单词进行比较,如果输入的字符和字符长度均与被测试的单词一致,则显示correct加1,即为加1分,并进入下一个单词的测试,测试完10个单词后,重新进入第1个单词的测试。
显示字模码的提取模块
为了使LCD12864能够显示用户存储的中文汉字和英文单词,用户必须将要显示的汉字字模及英文字母字模码存入存储器中,因LCD12864只能显示点阵图形,因此存储入单片机的字模码必须是通过点阵码转换而成,为了软换更方便,设计使用了字模转换软件实现英文码的取模。
源程序清单
b6db1000hdup('$')
b9db'Youdonotknowthefollowingwords,pleaserememberthemagian',0ah,0dh,'$'
f1db'verygood,congratulationstoyou',0ah,0dh,'$'
callzi4;输出不认识的单词
movah,02h;回车换行
movdl,0dh
int21h
movah,02h
movdl,0ah
int21h
callzi2;将不认识的单词存到B6所指单元
callzi2;将不认识的单词存到B6所指单元
m2:
incdi
movsi,z;保留SI的地址
zi4proc
pushax
pushbx
pushcx
pushdx
pushsi
pushdi
leadx,b9;输出不认识的单词
movah,09h
int21h
leadx,b6
movah,09h
int21h
popdi
popsi
popdx
popcx
popbx
popax
ret
zi4endp
CodeSegment
AssumeCS:
Code,DS:
Code
;-------------------------------------
;功能:
显示指定地址(Str_Addr)的字符串
;入口:
Str_Addr=字符串地址(要求在数据段)
;用法:
OutputStr_Addr用法举例:
OutputPromptStr)
OutputMACROStr_Addr
pushax
leadx,Str_Addr
movah,9
int21h
popax
EndM
;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单词 记忆 测试
![提示](https://static.bdocx.com/images/bang_tan.gif)