摘要随着现代社会的发展电子技术的进步我们有目共睹计算机是现代电子技术的成果在现实生活中科学研究中计算机起着越来越重要的作用微型计算机原理这门课程是对计算机进一步的了解与接触微型计算机原理是一门培养计算机应用能力的技术基础课程本课程主要介绍了有关微型计算机的硬件基础知识基本原理掌握汇编语言的指令以及编程应用本课程设计是基于微机原理与接口技术的简单应用本设计以8086cpu为处理器利用8255处理芯片的复位功能来实现对于单词的录入读取以12854点阵液晶屏为显示器件并使用56距阵键盘为输入设备实现了功能全面的人机界面和高速的数据处理功能可储存1020个英文单词作为记忆测试用关键词8086cpu8255处理芯片12854点阵液晶屏56矩阵键盘目录1绪论111基本内容112用途及特点12方案选择及论证221设计方案2211设计方案一2212设计方案二222方案论证23硬件系统说明431硬件设计思路4311中央处理模块4312显示模块的硬件部分介绍4313矩阵键盘732系统构成框图833芯片选择93318086CPU内部结构及其各引脚93328255A处理芯片1034电路原理图设计1335存储空间与IO地址分配144软件系统说明1541软件设计思路15411程序主模块15412单词录入模块16单词测试模块18414矩阵键盘输入模块19415LCD12864显示模块19416显示字模码的提取模块2042源程序清单205所选芯片清单28总结29致谢30参考文献3111绪论随着现代社会的发展电子技术的进步我们有目共睹计算机是现代电子技术的成果在现实生活中科学研究中计算机起着越来越重要的作用多媒体技术网络技术智能信息处理技术自适用控制技术数据挖掘与处理技术等都离不开计算机在越来越多的场合中计算机扮演着意味深远的角色微型计算机原理这门课程是对计算机进一步的了解与接触微型计算机原理是一门培养计算机应用能力的技术基础课程本课程主要介绍了有关微型计算机的硬件基础知识基本原理掌握汇编语言的指令以及编程应用本次课程设计是基于微机原理与接口技术的简单应用11基本内容本设计以8086CPU为处理器利用8255处理芯片的复位功能来实现对于单词的录入读取以12854点阵液晶屏为显示器件并使用56距阵键盘为输入设备实现了功能全面的人机界面和高速的数据处理功能可储存1020个英文单词作为记忆测试用具体内容分为1输入单词提示输入单词输入最少5个最多255个英文单词每个单词不超过20个字符若直接回车则结束单词输入进入单词测试输足20个字符自动进入下一个单词的输入不足20个字符个字符按回车键进入下一个单词的输入2单词记忆测试从输入的第一个单词开始测试键入y不分大小写或n回答是否认识不需按回车键确认其它按键无效紧接着没有提示可按上移键或下移键循环测试按Esc键结束测试3计算单词识别率并显示输出4提示是否进行下一组单词的输入和测试键入y不分大小写或n选择是否继续不需按回车键确认其它按键无效12用途及特点本论文的研究对象是基于808CPU的单词记忆测试器的设计此单词记忆测试器可以实现单词的输入并判断输入的单词是否正确单词背完后给出正确率此项设计为现实生活中人们学习英语提供了很大的帮助在现代社会有着广泛的应用232方案选择及论证21设计方案本题目实质上是一个具有一定复杂程度键盘扫描程序可将单词存储在一个二维数组中根据课题要求使用8086CPU进行编程采用8255处理芯片以及复位电路和时钟电路建立字符型数组存放单词通过LCD显示所存放的单词根据设计书的基本内容有两种设计方案211设计方案一首先利用了编程程序编辑8255芯片控制字对其进行初始化使其工作在方式0即基本输入输出状态将8255的A端口设置为输出C端口进行经CPU运算后输出到CPU芯片的A端口中由此实现对其的初始化其次接入键盘和显示屏进行初始化然后录入单词测试单词可以输入5个单词但不超过255个单词不超过20个字符按回车键进行下一个单词的输入然后进行单词记忆测试从输入的第一个单词开始测试键入y不分大小写或n回答是否认识不需按回车键确认其它按键无效紧接着没有提示可按上移键或下移键循环测试按Esc键结束测试计算单词识别率并显示输出提示是否进行下一组单词的输入和测试键入y不分大小写或n选择是否继续不需按回车键确认其它按键无效212设计方案二对CPU和8255A先进行初始化再对键盘和显示屏进行初始化然后录入单词测试单词可以输入5个单词但不超过255个单词单词的输入分为两种情况第一种是单词必须够20个字符自动进入下一个单词的输入第二种是单词输入不超过20个单词按回车键进行下一个单词的输入出现哪个执行哪个然后进行单词记忆测试从输入的第一个单词开始测试键入y不分大小写或n回答是否认识不需按回车键确认其它按键无效紧接着没有提示可按上移键或下移键循环测试按Esc键结束测试计算单词识别率并显示输出提示是否进行下一组单词的输入和测试键入y不分大小写或n选择是否继续不需按回车键确认其它按键无效22方案论证4认真对比两个方案方案一和方案二都有自己的优点和缺点我们选择的是方案二方案一的单词没有输入够20个字符需要按键才能进行下一个单词的读写这样的话没有考虑到输入够20个字符方案二是输入够20个字符不需要按键就能进行下一个单词的读写输入不够20个字符需要按键才能进行下一项我们可以两个都采用输足20个字符自动进入下一个单词的输入不足20个字符个字符按回车键进入下一个单词的输入这样可以考虑到所有的情况可以实现单词的写入53硬件系统说明此次设计的课题分为硬件和软件两部分硬件方面主要由处理芯片和时钟振荡电路复位电路整个实现字符的输入输出以及电子显示液晶屏的清屏操作硬件系统部分包括三个模块中央处理模块显示模块键盘输入模块中央处理模块选用8086CPU8255处理芯片以及复位电路和时钟电路输出显示模块主要由单色点阵液晶屏来实现矩阵键盘输入模块主要由56的矩阵电路来实现31硬件设计思路此次设计的课题分为硬件和软件两部分硬件系统部分包括三个模块中央处理模块显示模块键盘输入模块中央处理模块选用8086CPU8255处理芯片以及复位电路和时钟电路显示模块主要由单色点阵液晶屏来实现矩阵键盘输入模块主要由56的矩阵电路来实现311中央处理模块中央处理模块选用8086CPU组成电路包括8255处理芯片复位电路时钟振荡电路8086cpu需要在复位电路和时钟振荡电路组成的最小系统下工作时钟电路采用频率采用为12MHZ的晶振复位电路采用电解电容与电阻串联用户可以通过切断电源进行手动复位或者通过重新下载新的程序进行复位312显示模块的硬件部分介绍显示模块采用单色点阵液晶屏12864模块该模块在点阵液晶屏基础上集成了控制器kS0108用户只需设计好接口程序就可让模块显示出各种字符和图像12864为一块128X64点阵的LCD显示模块模块上的LCM采用COG技术将控制包括显存驱动器集成在LCM的玻璃上接口简单操作方便为方便用户的使用在LCM的基础上设计了12864模块将模块所必需的外围电容电阻集成到模块上并引出多种形式的引线接口方便用户使用12864模块与各种MCU均可进行方便简单的接口操作LCD的接口6图31LCD引脚说明图显示RAM区映射情况对于LCD模块应该了解清楚驱动控制IC当中的显存与LCD玻璃上的点的对应关系是非常重要的这是编写LCD的驱动程序的基础12864液晶显示模块的显示器玻璃上的显示点与驱动控制芯片中的显示缓存RAM是一一对应的驱动控制芯片的显示RAM区每个byte的数据对应屏上的点的排列方式为纵向排列低位在上高位在下图32驱动控制芯片的显示RAM区12864液晶显示模块的显示屏上的每一个点都对应有控制器片内的显示缓存RAM中的一个位显示屏上64X128个点分别对应着显示RAM的8个Page每一个Page有128个byte的空间对应因此可知显示RAM区中的一个Page空7间对应8行的点而该Page中的一个byte数据则对应一列8个点图6为显示RAM区与显示屏的点映射图图33显示RAM区与显示屏的点映射图313矩阵键盘要测试记忆的单词就要有字母的输入接口本接口设计为56矩阵键盘输入接入CPU的P1口和P3口进行键盘扫描最大程度地提高了CPU的IO口的利用率设计共30个接键包括了26个英文字母以及四个功能键确定不认识上一个下一个矩阵键盘如图10由30个轻触按键按照6行5列排列连接到P1P3端口其扫描的原理是先将行线所接的CPU的IO口作为输出端而列线所接的IO口则作为输入这样当按键没有按下时所有的输出端都是高电平代表无键按下行线输出是低电平一旦有键按下则输入线就会被拉低这样通过读入输入线的状态就可得知是否有键按下了然后再将行线所接的CPU的IO口作为输入端而列线所接的IO口则作为输出以相同的方法读一次端口程序中就可识别是这个坐标的按键按下了8图34矩阵键盘原理图32系统构成系统主要由8086CPU8255A点陈液晶屏还有矩阵型键盘输入组成以8086CPU为处理器利用8255处理芯片的复位功能来实现对于单词的录入读取以12854点阵液晶屏为显示器件并使用56距阵键盘为输入设备实现了功能全面的人机界面和高速的数据处理功能可储存1020个英文单词作为记忆测试用图35系统构成图8255A点阵液晶屏矩阵型键盘输入8086CPU933芯片选择3318086CPU内部结构及其各引脚图368086cpu引脚图8086cpu的内部结构从功能上划分成两部分总线接口单元和执行单元的组成部分位通用寄存器算术逻辑单元标志寄存器httpswwwbaiducomswdE6938DE4BD9CE68EA7E588B6E599A8amptn44039180cprampfenleimv6quAkxTZn0IZRqIHckPjm4nH00T1YkmHb1rjcLmWPbmHFbPhDk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4BmybIi4WUvYETgNTLwGUv3EnH0dPjRsPHTv操作控制器电路的组成部分段寄存器组指令指针地址加法器指令队列缓冲器总线接口控制逻辑的工作方式10的最小最大工作方式公司在设计芯片时规定了两种工作模式即最小工作模式和最大工作模式通过的第条引脚来控制最小工作模式把的引脚接时系httpwwwsocomsqE5BEAEE5A484E79086E599A8ampieutf8ampsrcwendalink统处于最小工作模式最小模式系统适用于单微处理器组成的小系统系统中通常只有一个微处理器所有的总线控制信号都直接由产生系统中的httpwwwsocomsqE980BBE8BE91E794B5E8B7AFampieutf8ampsrcwendalink总线控制逻辑电路被减到最少最大工作模式当把的引脚接地时系统处于最大工作模式此时系统中存在两个或两个以上的微处理器其中有一个主处理器其他处理器称为协处理器3328255A处理芯片图378255内部结构图118255的引脚图图388255A引脚图8255的方式选择控制字1方式选择控制字把ABC三个端口分为AB两组来设定工作方式A组包括端口A和端口C的上半部B组包括端口B和端口C的下半部2端口A可工作于3种方式中的任何一种端口B只能工作于方式0和方式1而端口C除用作输入输出口方式0外通常用来配合端口A和端口B提供联络控制信号和状态信号3归在同一组的两个端口可分别作为输入端口或输出端口不要求同为输入或输出12图39方式选择控制字8255端口C按位置位复位控制字1端口C按位置位复位控制字尽管是对端口C进行操作的但此控制字必须写入控制口而不写入端口C2一个控制字只能完成端口C中某一位置的置1或置0要对多位置1或置0必须使用多个控制字图310C端口的方式控制字采用的方式控制字使用8255的B口作为数据输入端与开关相连接即D11使用工作方式0即D6D500综上8255的方式控制字为10000010即82H13图311时钟电路图图312复位电路图34电路原理图设计电路原理图设计使用集原理图设计PCB设计电路仿真功能为一体的PROTUES软件以该软件设计的电路原理图14图313单词记忆测试器电路原理图电路设计参数C1C2为2030PF瓷片电容与12M晶振组成时钟振荡电路复位电路使用R1为10K电阻C3为10uF电解电容12864液晶模块与CPUP0口连接因P0口为真正的三态门结构因些作数据总线使用时要外接上拉电阻可使用10K的排阻按键如图的行相连列相连的矩阵接法连入CPU的IO口电路的供电为5V直流电源6D1为输入错误的状态指示灯加220欧限流电阻连到VCC因为CPUIO的电流灌入能力要强于电流输出能力因此一般使IO为低电平时点亮LED灯35存储空间与IO地址分配本设计以8086为中心通过译码器74LS138对各个芯片的工作进行地址分配控制各个芯片在何种工作状态当第一个单词输入后通过采集放到内存显示在LED上依次执行完所有请求直到单词记忆测试完成15164软件系统说明本课题设计总共分为硬件和软件两部分软件部分主要是利用汇编语言来编写程序整个程序代码设计分别将代码和数据存储在代码段数据段以及附加段中扫描单词输入单词再将二进制无符号数转换成显式的十进制码并送显示屏显示清显示屏经复位电路到单词链表进入主程序的循环结构以此反复以至于达到单词测试记忆的目的41软件设计思路因本系统为模块化设计为方便软件编写和移植程序设计采用汇编语言程序流程图如下图41程序流程图CPU初始化键盘扫描输入有按键命令令执行按键命令N显示正确输入正确字符比较确定键显示下一个显示上一个8255A初始化显示屏初始化YNYN开始17411程序主模块4111主程序的定义与录入主程序首先进行存储变量的定义存储各测试单词的长度如果输入的单词长度与存储的不同也为错误为能动态地显示测试的单词先将要测试的单词存在一个二维数组中显示了该数组中的字符时显示函数也会被调用4112主程序的主循环主程序的主循环部分代码及注释如下保存单词数目数据缓冲区地址把第一个节点的前一个节点地址指向最后一个节点把最后一个节点的下一个节点地址指向第一个节点形成循环链表412单词录入模块键盘的输入是通过矩阵扫描的方法通过矩阵扫描可找到按键所在的某行某列但要得到一个英文字母值还得在返回的某行某列位置预先定义个字母值因此56矩阵键盘的整个返回字母表可定义一个二维数组存储该二维数组为行列105即10行5列10行表示有10个单词实际根据存储ROM的大小可以增加单词数列数表示单词在存储器中占的字符数以最长单词5个字符定义不足5个字符的单词后补空格表示输入单词提示输入单词输入最少个最多个英文单词每个单词不超过个字符若直接回车则结束单词输入进入单词测试输足个字18符自动进入下一个单词的输入不足个字符个字符按回车键进入下一个单词的输入单词录入模块程序代码段输入一组单词输入的单词数目初值数据缓冲区地址提示输入单词限定最多个单词初始化识别标志前一个节点地址每个单词最多字符数键盘输入缓冲区地址输入单词读入实际输入的字符个数即单词长度直接回车是结束单词输入累计输入的单词数目使之能用功能调用号功能显示这个字符串单词下一个节点地址输出一个回车换行输入下一个单词限定最少个单词保存单词数目数据缓冲区地址把第一个节点的前一个节点地址指向最后一个节点把最后一个节点的下一个节点地址指向第一个节点形成循环链表19图单词录入模块单词测试模块单词记忆测试从输入的第一个单词开始测试键入不分大小写或回答是否认识不需按回车键确认其它按键无效紧接着没有提示可按上移键或下移键循环测试按键结束测试然后计算单词识别率并显示输出提示是否进行下一组单词的输入和测试键入不分大小写或选择是否继续不需按回车键确认其它按键无效单词测试程序代码段要求回答是否认识这个词汇回答字母不分大小写20图43单词测试模块图414矩阵键盘输入模块矩阵键盘采用56列与行扫描法P1口依次接键盘的每一行而P3口依次接键盘的每一列程序开始先令P1全为高电平P3口全为低电平这样一旦矩阵键盘中有一个键按下时就会在某一行中出现低电平而某一列中出现高电平程序先读P1口以检测到有低电平来确定行再使P1全为低电平P3口全为高电平再读P3口以检测到低电平来确定列这里还要考虑按键的机械抖动问题因为按键的机械特性可能在按下瞬间会有一组抖动的脉冲一般程序中采用延时方法来去抖动415LCD12864显示模块21LCD12864显示模块的程序作为显示部分的底层程序用户可直接调用其函数来达到驱动和显示功能清显示屏将LCD上的显示字符清空字符的显示将输入的字符单词显示在液晶显示屏上进入主程序后先对LCD12864屏进行初始化和清屏操作然后在LCD12864屏上显示单片机单词记忆测试器的静态的图文需要动态刷新的字符则在主循环中进行LCD12864的显示效果如下此时系统进入单词输入测试就绪状态图44单词测试就绪状态在系统进入单词输入测试就绪状态后主程序即进入while1的主循环中循环进行键盘扫描并判断键盘输入值再与待测试的单词进行比较如果输入的字符和字符长度均与被测试的单词一致则显示correct加1即为加1分并进入下一个单词的测试测试完10个单词后重新进入第1个单词的测试416显示字模码的提取模块为了使LCD12864能够显示用户存储的中文汉字和英文单词用户必须将要显示的汉字字模及英文字母字模码存入存储器中因LCD12864只能显示点阵图形因此存储入单片机的字模码必须是通过点阵码转换而成为了软换更方便设计使用了字模转换软件实现英文码的取模42源程序清单22输出不认识的单词回车换行将不认识的单词存到所指单元将不认识的单词存到所指单元将不认识的单词放到所指单元保留的地址输出不认识的单词功能显示指定地址的字符串入口字符串地址要求在数据段用法用法举例23功能输出一个字符入口要显示的字符功能输出回车换行功能把中的二进制无符号数转换成显式的十进制码并送显示屏显示入口二进制数出口在当前光标位置显示转换后的码数字24功能键盘输入一个字符若输入的是或不分大小写则显示并返回入口无出口若输入的是进位标志置位若输入的是进位标志复位不带回显的键盘输入25输入一组单词输入的单词数目初值数据缓冲区地址提示输入单词限定最多个单词初始化识别标志前一个节点地址每个单词最多字符数键盘输入缓冲区地址输入单词读入实际输入的字符个数即单词长度直接回车是结束单词输入累计输入的单词数目使之能用功能调用号功能显示这个字符串单词下一个节点地址输出一个回车换行输入下一个单词限定最少个单词保存单词数目数据缓冲区地址把第一个节点的前一个节点地址指向最后一个节点把最后一个节点的下一个节点地址指向第一个节点形成循环链表26要求回答是否认识这个词汇回答字母不分大小写计算单词识别率取单词数数据缓冲区地址累加识别率提示显示单词识别率把中的二进制无符号数转换成显式的十进制码并送显示屏显示显示输出一个字符27单词最多字符数认识不认识键扫描码键扫描码键扫描码定义结构类型单词链表识别标志是否认识这个单词前一个节点地址下一个节点地址请输入单词提示信息是否认识单词提示信息单词识别率提示信息测试下一组单词提示信息实际输入的单词数目操作完成按任意键结束程序提示信息使数据段附加段与代码段同段输入一组单词测试识别率计算单词识别率再测试一组单词提示操作完成按任意键结束程序结束程序数据缓冲区28ENDStart编译到此结束295所选芯片清单30总结时光飞逝短短的两周的课程设计即将结束现在回头想想两周的设计我们对自己的这次设计有了更深更新的体会在本次设计的全过程中我们对大学几年所学的知识有了一个比较系统的认识和理解涉及了各方面的知识大大扩展了我的知识面同时是我学会了如何使用所学的知识去解决一些实际的问题在设计中我深知自己掌握的知识还远远不够掌握的一些理论知识应用到实践中去总会出现这样或那样的问题不是理论没有掌握好而是光知道书本上的知识是远远不够的一定要把理论知识和实践结合起来把学到的知识应用到时间中去多做多练才可以把理论的精华发挥出来知识不是知道了解就好一定要去应用它发展它让它在现实生活中得到充分的应用从而解决一些问题这才是学习的根本目的而且知识又不是单一的它是互相联系的学科与学科之间都有着内在的联系微机技术与接口技术是一门非常复杂且庞大的学科一项课题往往需要多项技术才可以完成的在设计阶段通过对课题的深入分析与研究迫使我对技术有了一定的了解在遇到问题时得到了指导老师与同学的悉心帮助使我感受到集体的力量是无穷的通过这次设计我学会了和别人配合工作因为一个人所学的知识不可能面面俱到的只有通过合作发挥自己的优点体现团队精神才能使工作做得更为出色通过这次设计我学到了许多书本上学不到的知识增强了自己的动手能力即将毕业我十分珍惜这次锻炼的机会我按部就班的完成了自己的设计任务但由于自己的知识水平有限仍然存在很多的不足之处恳请老师多多指教当今的社会是竞争的社会而人才的竞争则是竞争的焦点毕业设计对于我们即将离校的同学来说是离校前很好的一次锻炼使我们各方面的能力都有了很大的提高为我们踏出校门走上社会增强了能力与自信电子技术的高速发展使我深深地认识到只有不断的加强学习才能在电子技术方面不至于被淘汰今后我还要加强学习努力使自己成为一位专业的技术人员为我自己所从事的工作服务在此感谢老师们对我的谆谆教导感谢他们给了我这次机会31致谢首先我们要感谢老师给我们提供这次机会在本次微机技术与接口技术课题设计和写作过程中得到指导师杨书鸿老师和龚翔老师的悉心指导二位老师认真负责的工作态度治学严谨的作风给我留下了深刻的印象我还要感谢我的同学是他们的无私支持使我们能顺利完成这次课程设计是他们在我们遇到难题时给我及时的帮助与无限的动力所以我们以此课程设计作为我们的学习成果向他们致谢感谢你们在我们的课程设计过程中得到了老师们的悉心教导学到了丰富的知识和做人的道理为我走向社会迎接挑战打下了坚实的基础此时此刻我才真正体会到老师们的苦心和所学知识的重要最后我要再次向给予我帮助的所有老师和同学表示深深的谢意感谢大家在学习生活中对我的帮助谢谢大家32参考文献1微型计算机原理王忠民主编西安电子科技大学出版社20132微型计算机原理与接口技术李长青李泉溪主编中国矿业大学出版社20063电气控制与可编程控制器陈立定吴玉香苏开才编广州华南理工大学出版社20014IBMPC汇编语言程序设计沈美明清华大学出版社2001年8月第2版5IBMPC汇编语言程序设计例题习题集沈美明清华大学出版社1991年6月第1版6微机系统和接口应用技术朱世鸿清华大学出版社2006年9月第1版7微机原理与接口技术课程设计宋世杰机械工业出版社20058汇编语言课程设计案例精编李真香等北京中国水利水电出版社2004