单片机课程设计单词记忆测试器设计报告_第1页
单片机课程设计单词记忆测试器设计报告_第2页
单片机课程设计单词记忆测试器设计报告_第3页
单片机课程设计单词记忆测试器设计报告_第4页
单片机课程设计单词记忆测试器设计报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理与接口技术课程设计题目:单词记忆测试器程序设计_ 院 系:工学院电气与电子工程系 专 业:自动化_ 班 级:自动化1501_姓 名:王黎庆_ 学 号:201502021031_ 指导教师:董云云_ 烟台南山学院教务处二一七年九月单词记忆测试器程序设计摘 要研究对象是基于单片机的单词记忆测试器的设计,此单词记忆测试器可以实现单词的输入并判断输入的单词是否正确,单词背完后给出正确率。该单片机单词记忆测试器为在现实生活中有着广泛的应用,特别是对学习英语方面有很大的作用。 本设计以STC89C52单片机为处理器,以12854点阵液晶屏为显示器件,并使用5×6矩阵键盘为输入设备,实现

2、了功能全面的人机界面和高速的数据处理功能,利用单片机片上FLASH ROM,可储存10-20个英文单词和汉字,作为记忆测试用。关键词 单片机 单词记忆测试器 STC12C5A60S2 12864液晶屏目录第1章 绪论11.1 课题名称11.2 课程设计目的11.3 课程设计内容11.4 课程设计要求2第2章 单词记忆测试器方案设计3第3章 硬件电路设计43.1 硬件模块设计43.1.1 中央处理模块43.1.2 显示模块的硬件部分介绍63.1.3 矩阵键盘103.2 电路原理图设计10第4 章 软件设计134.1 程序设计思路134.2 矩阵键盘的程序设计144.3 LCD12864显示模块的

3、驱动程序154.4 显示字模码的提取17第5章 系统软件主程序结构及其函数19结论20致谢21参考文献22第1章 绪论1.1 课题名称单词记忆测试器程序设计1.2 课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。单片机原理及应用是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计

4、与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。1.3 课程设计内容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条

5、件进行总体方案的设计。2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。4. 调试:在单片机EDA仿真软件环境Proteus下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。1.4 课程设计要求设计一个以单片机为核心的单词记忆测试器:1、实现单词的录入(为使程序具有可演示性,单词不少于10个)。2、单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,也可以直接进入下一个或者上一个。3、单词背完后给出正确

6、率。第2章 单词记忆测试器方案设计2.1 设计思路本题目实质上是一个具有一定复杂程度键盘扫描程序,可将单词存储在一个二维数组中,按“确定”键开始程序后,次显示0行的数组,即第一个单词。之后按下“向上”按键,显示上一行数组,即上一个单词; 按下“向下”按键,显示下一行数组,即下一个单词。当显示的行数超过9时,程序结束,并通过按“确认”的次数,计算出正确率。根据课题要求,使用C51进行编程,建立字符型数组存放单词,通过LCD1602显示所存放的单词。通过对简易键盘的扫描确定按下了那个按键,对单词做以下四种处理:(1)确认:表示对当前单词认识,使显示下一个单词,并置计数数组的对应位为1;(2)不认识

7、:表示对当前单词不认识,使显示下一个单词,并置计数数组的对应位为0;(3)上一个:不对当前单词做任何处理,使显示上一个单词,计数数组对应位不变;(4)下一个:不对当前单词做任何处理,使显示下一个单词,计数数组对应位不变;没显示一个单词,在LCD显示已经显示单词的认识个数,如“1/10”,当10个单词显示完毕,最后给出单词认识率,如“70%”。此时,按下任何按键,系统自动回到初始状态。 程序流程图是程序分析中最基本、最重要的分析技术,它是进行流程程序分析过程中最基本的工具。程序流程图是人们对解决问题的方法、思路或算法的一种描述。流程图的优点:(a)采用简单规范的符号,画法简单;(b)结构清晰,逻

8、辑性强;(c)便于描述,容易理解。第3章 硬件电路设计3.1 硬件模块设计 本单词记忆测试器系统硬件部分分为三个模块:中央处理模块、显示模块、键盘输入模块。系统模型如图3.1所示:单片机中央处理模块5×6矩阵键盘模块LCD12864液晶显示模块图3.1 系统硬件模块图3.1.1中央处理模块中央处理模块选用STC12C5A60S2单片机系统组成,电路包括:STC12C5A60S2单片机、复位电路、时钟振荡电路。STC12C5A60S2单片机需在复位电路和时钟振荡电路组成的最小系统下工作,单片机引脚图如图3.2所示,外围电路如图3.3所示,时钟电路采用频率采用为12MHZ的晶振,C1、C

9、2与晶振构成了外部振荡电路。复位电路采用电解电容与电阻串联,当系统上电时,由于电容充电,在RST端会产生一个高电平,高电平持续的时间由电容和电阻的值决定,当RESET信号为低电平时,系统为工作状态。 STC12C5A60S2具有ISP的功能,可以通过串行口直接将程序下载到单片机内。在下载程序状态下,RESET信号被拉高,系统进行程序下载,待程序下载完毕后,RESET重新拉低。用户可以通过切断电源进行手动复位,或者通下载新的程序进行复位。图3.2 STC12C5A60S2的引脚排列图图3.3复位电路图3.1.2 显示模块的硬件部分介绍显示模块采用单色点阵液晶屏12864模块,该模块在点阵液晶屏基

10、础上集成了控制器ST7920,用户只需设计好接口程序,就可让模块显示出各种字符和图像。通常我们所见到的 LCD 模块,分为几部分:LCM(玻璃)、背光、PCB 板;而背光和PCB板部分其实是可有可无的,视具体的LCD 模块而定。点阵的LCD 模块按照驱动控制器的集成方式,大可分为两种:COB 和COG;COG 其实就是将驱动控制IC 集成到了玻璃里面,这样的而后面的PCB 板上其实只是一些驱动控制IC 无法集成的电容电阻而已;COB 也就是把驱动控制IC 焊接在LCD 模块后面的PCB 板上。12864 为一块128*64 点阵的LCD 显示模块,模块上的 LCM 采用COG 技术将控制(包括

11、显存)、驱动器集成在LCM 的玻璃上,接口简单、操作方便;为方便用户的使用,在LCM 的基础上设计了12864 模块,将模块所必需的外围电容电阻集成到模块上,并引出多种形式的引线接口方便用户使用。12864 模块与各种MCU 均可进行方便简单的接口操作。LCD 的接口:一般来说,LCD 模块(带有驱动控制器)的接口多为总线的接口,不是6800 就是8080,或者是串行SPI(及类SPI 时序);除了这些总线的端口外,有的LCD 模块还引出了一些功能性的端口,如偏压调节输入、负压输出等。表3.1 12864 模块接口定义表显示 RAM 区映射情况:对于 LCD 模块,了解清楚驱动控制IC 当中的

12、显存与LCD 玻璃上的点的对应关系是非常重要的,这是编写LCD 的驱动程序的基础。12864 液晶显示模块的显示器(玻璃)上的显示点与驱动控制芯片中的显示缓存RAM是一一对应的;驱动控制芯片当中共有65(8 Page x 8 bit+1)X 132 个位的显示RAM 区。而显示器的显示点阵大小为64*128 点,所以实际上在液晶显示模块中有用的显示RAM 区为64 X 128 个位;按byte 为单位划分,共分为8 个Page,每个Page 为8 行,而每一行为128 个位(即128 列)。驱动控制芯片的显示RAM区每个byte的数据对应屏上的点的排列方式为:纵向排列,低位在上高位在下;如图3

13、.4所示图3.4驱动控制芯片的显示RAM区12864 液晶显示模块的显示屏上的每一个点都对应有控制器片内的显示缓RAM中的一个位,显示屏上64*128 个点分别对应着显示RAM的8 个Page,每一Page有128 个byte的空间对应。因此可知显示RAM区中的一个Page空间对应8 行的点,而该Page中的一个byte数据则对应一列(8 个点)。图3.6为显示RAM区与显示屏的点映射图:表3.6 显示RAM区与显示屏的点映射图行、列地址:用户如要点亮 LCD 屏上的某一个点时,实际上就是对该点所对应的显示RAM 区中的某一个位进行置1 操作;所以就要确定该点所处的行地址、列地址。从上图中可以

14、看出,MzL02-12864 液晶显示模组的行地址实际上就是Page 的信息,每一个Page 应有8 行;而列地址则表示该点的横坐标,在屏上为从左到右排列,Page 中的一个Byte 对应的是一列(8行,即8 个点),达128 列。可以根据这样的关系在程序中控制 LCD 显示屏的显示。注意:MzL02-12864 的显示缓存RAM 区实际上比模块上的显示器所对应的RAM 区要大;而LCD 模块具体设置Page(有时也称页)时,屏上的位置与驱动控制IC 当中的哪里的RAM区对应,还与驱动控制IC 与屏的连接有关;所以,实际在使用时,请参考所提供的范例设置(主要是设置COM 反向扫描、SEG 设置

15、为正向扫描,以此设置方法,则每个Page 中的前三列以及最后一列是不对应在LCD 屏幕上的)。3.1.3 矩阵键盘 要测试记忆的单词,就要有字母的输入接口,本接口设计为5×6矩阵键盘输入,接入单片机的P1口和P3口进行键盘扫描。最大程度地提高了单片机IO口的利用率,设计共30个接键,包括了26个英文字母以及四个功能键:“确定”、“不认识”、“上一个”、“下一个”。矩阵键盘如图3.7,由30个轻触按键按照6行5列排列,连接到P1、P3端口。其扫描的原理是:先将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按

16、下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。然后再将行线所接的单片机的I/O口作为输入端,而列线所接的I/O口则作为输出,以相同的方法读一次端口,程序中就可识别是坐标的按键按下了。图3.7 5×6矩阵键盘3.2 电路原理图设计 电路原理图设计使用Altium designer。以该软件设计的电路原理图图3.8。图3.8 单片机单词记忆测试器电路原理图图3.9 单片机单词记忆测试器电路PCB图电路设计参数:(1) C1 C2 为30pF瓷片电容,与12M晶振组成时钟振荡电路;(2) 复位电路使用R1为10K电阻、C3为10u

17、F电解电容;(3) 12864液晶模块与单片机P0口连接,因P0口为真正的三态门结构,作数据总线使用时要外接上拉电阻,可使用10K的排阻;(4) 按键如图的行相连,列相连的矩阵接法连入单片机IO口;(5) 电路的供电为5V直流电源;第4 章 软件设计4.1 程序设计思路因本系统为模块化设计,为方便软件编写和移植,程序设计采用C语言,程序开始单片机初始化键盘扫描输入有按键命令?执行按键命令NY显示正确输入正确字符比较确定键显示下一个显示上一个YLCD12864初始化N流程图如图4.1所示:图4.1 流程图4. 2 矩阵键盘的程序设计矩阵键盘采用5×6 列与行扫描法,P1口依次接键盘的每

18、一行,而P3口依次接键盘的每一列,程序开始先令P1全为高电平,P3口全为低电平,这样一旦矩阵键盘中有一个键按下时,就会在某一行中出现低电平,而某一列中出现高电平,程序先读P1口,以检测到有低电平来确定行。再使P1全为低电平,P3口全为高电平,再读P3口,以检测到低电平来确定列。这里还要考虑按键的机械抖动问题,因为按键的机械特性,可能在按下瞬间会有一组抖动的脉冲,一般程序中采用延时方法来去抖动。实现的C程序函数如下:/*-函数名称:unsigned char Key_scan(void) -函数功能:键盘扫描函数-入口参数:无-出口参数:unsigned char key-*/uchar Key

19、_scan(void) uchar hang,lie,key; /P1连行,P3连列P1=0XFF;P3=0X00;if(P1!=0xFF|P3!=0)switch(P1&0xFF) /P1 扫行case 0xFE:hang=0;break; /P1.0为第1行case 0xFD:hang=1;break; /P1.1为第2行case 0xFB:hang=2;break; /P1.2为第3行case 0xF7:hang=3;break; /P1.3为第4行case 0xEF:hang=4;break; /P1.4为第5行case 0xDF:hang=5;break; /P1.5为第6行

20、P1=0X00; P3=0xFF;switch(P3&0xFF)case 0xFE:lie=4;break; /P3.0为第5列case 0xFD:lie=3;break; /P3.1为第4列case 0xFB:lie=2;break; /P3.2为第3列case 0xF7:lie=1;break; /P3.3为第2列case 0xEF:lie=0;break; /P3.4为第1列P1=0xFF; P3=0;while(P1!=0xFF|P3!=0); key=charahanglie;elsekey=0x5f;return (key);4.3 LCD12864显示模块的驱动程序LCD

21、12864显示模块的程序作为显示部分的底层程序,用户可直接调用其函数来达到驱动和显示功能。主要显示命令和显示的函数说明如下:#ifndef _12864_H_#define _12864_H_/*宏定义*/#define uchar unsigned char#define uint unsigned int/*-函数名称:void init_12864(void)-函数功能:12864初始化函数-入口参数:无-出口参数:无-*/void init_12864(void);/*-函数名称:void Write_Com_12864(uchar com)-函数功能:12864写指令函数-入口参数:

22、uchar com-出口参数:无-*/void Write_Com_12864(uchar com);/*-函数名称:void Write_Date_12864(uchar date)-函数功能:12864写数据函数-入口参数:uchar date-出口参数:无-*/void Write_Date_12864(uchar date);-函数名称:void Ch_Disp_12864(uchar x,uchar y,uchar code *s)-函数功能:12864写汉字函数-入口参数:uchar x,uchar y,uchar code *s-出口参数:无-*/void Ch_Disp_128

23、64(uchar x,uchar y,uchar code *s);/*-函数名称:Pic_Disp_12684(uchar *s)-函数功能:12864显示图片函数-入口参数:uchar *s-出口参数:无-*/void Pic_Disp_12684(uchar *s);#endif4.4 显示字模码的提取为了使LCD12864能够显示用户存储的中文汉字和英文单词,用户必须将要显示的汉字字模及英文字母字模码存入单片机存储器中,因LCD12864只能显示点阵图形,因此存储入单片机的字模码必须是通过点阵码转换而成,为了软换更方便,事先先编号代码 /*存储测试汉字*/uchar code chin

24、ese103="左","鸟","书","树","水","去","来","雨","飞","吃"/*测试单词序列*/uchar code chara_num102="1","2","3","4","5","6","7","8","9&

25、quot;,"10"/*存储要测试的单词,放在ROM中*/uchar code word105= "left ", /左 "bird ", /鸟 "book ", /书 "tree ", /树 "water", /水 "go ", /去 "come ", /来 "rain ", /雨 "fly ", /飞 "eat ", /吃 ;/*存储各测试单词的长度*/uchar word

26、_size10=4,4,5,3,2,4,4,3,4,3;/*储存输入的单词*/uchar key_word5; /*存储键盘的字母值 ,放在ROM中*/uchar code chara65=0x61,0x62,0x63,0x64,0x65, /a,b,c,d,e 0x66,0x67,0x68,0x69,0x6a, /f,g,h,i,j 0x6b,0x6c,0x6d,0x6e,0x6f, /k,l,m,n,o 0x70,0x71,0x72,0x73,0x74, /p,q,r,s,t0x75,0x76,0x77,0x78,0x79, /u,v,w,x,y0x7a,0x31,0x32,0x33,0x

27、34 /z,1,2,3,4 ; /最后的 1234 键盘值为功能键, 1表示确定键,2表示不认识,3表示上一个,4表示下一个将此码存入单片机程序存储器里,使用液晶显示的函数就可方便地显示汉字或英文字形。第5章 系统软件主程序结构及其函数系统主程序完成主循环和对各模块函数的调用,调用的文件包括:reg52.h、12864.h,其中reg52.h是 8051内核单片机的标准头文件,定义了单片机内部各寄存器的地址,使用户编程更方便,而12864.h为LCD12864显示屏的底层驱动程序,包括了屏显示的指令函数和显示中英文的函数。函数主题在12864.中。在KEIL uV4环境下将 主程序文件和reg

28、52.h、12864.h放在同一工程工作组中,以便主程序调用,如图5.1所示。图5.1 keil下的程序工程文件主程序的函数:主程序首先进行存储变量的定义:/*引用头文件*/#include<reg52.h>#include<12864.h> /12864输出函数,若单片机要用到12864则必须包含此头文件/*宏定义*/#define uchar unsigned char#define uint unsigned int/*位定义*/bit ERROR=1; /输入字符错误标志位bit result=0; /输入结果对错的标志位,为0是正确bit verify=1;

29、/已按了确认键后清零/*定义全局变量*/uchar num,num1; /*存储测试汉字*/uchar code chinese103="左","鸟","书","树","水","去","来","雨","飞","吃"/*12864汉字位置数组定义*/uchar code Addr1= 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,/第一行汉字位置0x90,0x91,

30、0x92,0x93,0x94,0x95,0x96,0x97,/第二行汉字位置0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,/第三行汉字位置0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,/第四行汉字位置;/*测试单词序列*/uchar code chara_num102="1","2","3","4","5","6","7","8","9","

31、;10"/*存储要测试的单词,放在ROM中*/uchar code word105= "left ", /左 "bird ", /鸟 "book ", /书 "tree ", /树 "water", /水 "go ", /去 "come ", /来 "rain ", /雨 "fly ", /飞 "eat ", /吃 ;/*存储各测试单词的长度*/uchar word_size10=4,4

32、,5,3,2,4,4,3,4,3;/*储存输入的单词*/uchar key_word5; ; /最后的 1234 键盘值为功能键, 1表示确定键,2表示不认识,3表示上一个,4表示下一个前节介绍过键盘的输入是通过矩阵扫描的方法,通过矩阵扫描可使单片机找到按键所在的某行某列,但要得到一个英文字母值,还得在单片机返回的某行某列位置预先定义个字母值,因此5*6矩阵键盘的整个返回字母表可定义一个二维数组存储:/*存储键盘的字母值 ,放在ROM中*/uchar code chara65=0x61,0x62,0x63,0x64,0x65, /a,b,c,d,e 0x66,0x67,0x68,0x69,0x

33、6a, /f,g,h,i,j 0x6b,0x6c,0x6d,0x6e,0x6f, /k,l,m,n,o 0x70,0x71,0x72,0x73,0x74, /p,q,r,s,t0x75,0x76,0x77,0x78,0x79, /u,v,w,x,y0x7a,0x31,0x32,0x33,0x34 /z,1,2,3,4例如在按下键盘时,单片机返回键盘位置为 第二行第三列,就可从上表中查出是对应位置的字母。 键盘扫描函数返回的是键值。 key=charahanglie;进入主程序后,先对LCD12864屏进行初始化和清屏操作,然后在LCD12864屏上显示单片机单词记忆测试器的静态的图文,需要动态

34、刷新的字符则在主循环中进行。 void init_main(void)Ch_Disp_12864(1,2,"WELCOME");Delay(1000);init_12864();Ch_Disp_12864(1,1,"单片机课设");Ch_Disp_12864(2,1,"单词记忆测试");Ch_Disp_12864(3,3,"作者:王黎庆Delay(1000);在系统进入单词输入测试就绪状态后,主程序即进入while(1)的主循环中,循环进行键盘扫描,并判断键盘输入值,再与待测试的单词进行比较,如果输入的字符和字符长度均与被测

35、试的单词一致,则显示correct加1,即为加1分,并进入下一个单词的测试,测试完10个单词后,重新进入第1个单词的测试。-函数名称:void main(void) -函数功能:主函数-入口参数:无-出口参数:unsigned char key-*/void main(void) / uchar ch_num; /uchar temp8; /用于送液晶屏显示的临时变量/uchar iword=0,Nword=0; /输入单词字母下一个计数uchar i;P1=0xFF; P3=0; init_12864(); init_main();init_12864();Ch_Disp_12864(0,1,":");Ch_Disp_12864(1,0,"请输入单词:&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论