基于单片机的单词记忆测试器毕业设计_说明
- 格式:doc
- 大小:1.06 MB
- 文档页数:22
编号051060062湖南广播电视大学毕业设计(论文)题目英语单词记忆软件开发作者李双全学号051060062专业计算机科学与技术指导教师李健完成时间 2006年10月25日摘要学好英语的重要性大家都知道,而英文词汇量掌握的多寡又是英语学习的重中之重,但捧着书本背单词不但枯燥无味而且效率不高。
现在电脑上使用背单词软件能大大提高单词记忆的效率,鉴于这种情况,我用VC开发了一款英语单词辅助记忆软件,其中利用了微软公司的语音开发包,也就是TTS(Text-To-Speak)和数据库技术。
本文重点介绍了在实际研究开发过程中采用的一些技术手段,并简要介绍了一些相关理论基础,同时指出了软件开发有待于进一步完善发展的方向。
关键词:VC; TTS;语音开发包;数据库ABSTRACTAs we all known,it is important for us to learn english well.The most important thing in learning english is how much english vocabulary we grasp.But,Dully holds the books back word not only moreover the efficiency not to be high.Now on the computer uses back word software to be able greatly to enhance the word memory the efficiency,In view of this kind of situation.I used VC to develop section English word auxiliary memory software,in which have used Microsoft Corporation's pronunciation development package,also was TTS (Text-To-Speak) and the data bank technology.This article introduced with emphasis uses some technical methods in the actual research performance history, and briefly introduced some related rationales, at the same time had pointed out the software development waits for further consummates the development the direction.Key word: VC; TTS; Pronunciation development package; Database目录摘要 (I)ABSTRACT (II)1 概述 (1)1.1国内外研究动 (1)l.2 单词记忆软件特点和设计基本原则 (1)1.3 开发系统所用到的软件工程方法 (2)2 开发工具的选择 (4)2.1 TTS简介 (4)2.2 Microsoft Access 2000简介 (5)2.3 Visual C++ 6.0简介 (5)2.4 数据库技术介绍 (5)2.4.1 数据库设计方法 (5)2.4.2 ADO (Active Data Object)简介 (6)2.4.3 SQL语言 (6)3编写单词记忆软件主要解决的问题 (7)3.1 用户使用上的问题 (7)3.2 开发者在程序设计中的问题 (7)4编写单词记忆软件主要问题的解决方法 (8)4.1使用上的问题的解决方法 (8)4.2 软件设计中的问题的解决方法 (8)5系统的总体设计 (9)5.1系统的总体结构框架 (9)5.2系统的功能介绍 (9)5.2.1 主界面功能: (9)5.2.2 列举功能 (10)5.2.3 添加功能 (11)5.2.4 删除功能 (12)5.2.5 修改功能 (12)5.2.6 查询功能 (12)5.2.7 自动浏览功能 (13)5.2.8 更换界面功能 (14)5.2.9 关于界面 (15)6 系统的详细设计 (16)6.1 数据库设计 (16)6.2 程序与数据库相连 (16)6.3 列举功能的实现 (16)6.4 添加、删除和修改功能的实现 (18)6.5 查找功能的实现 (20)6.6 自动浏览功能的实现 (20)6.7更换界面功能的实现 (21)6.8智能保存功能的实现 (22)7单词记忆软件系统的完善与改进意见 (23)参考文献 (24)致谢 (25)附录 (26)1 概述1.1国内外研究动全球化的时代已经来临,贸易往来,资讯传递,文化交流……更是任何国家赖以生存的不二法门.因此迈向国际化才是现代人的生存之道,因此就必须具有国际观,并且具有口语的沟通能力,才是明智之举。
基于单片机的单词记忆器设计单片机单词记忆器设计可以通过以下步骤实现:1. 硬件设计:选择适合的单片机开发板或芯片,例如Arduino、Raspberry Pi等。
根据需求,设计并连接合适的输入和输出设备,如按钮、显示屏和喇叭等。
2. 单词库准备:将需要记忆的单词以文本文件的形式存储在单片机的存储器中,可以使用SD卡、SPI Flash或EEPROM等。
3.用户界面设计:使用按钮和显示屏实现用户与记忆器的交互界面。
例如,通过按下按钮来选择单词,并在显示屏上显示相应的单词和释义等信息。
4.单词显示和播放:根据用户选择的单词,在显示屏上显示该单词的释义,并通过喇叭或耳机输出单词的发音。
可以使用相应的语音合成库或芯片实现发音功能。
5.记忆训练模式:设计相应的记忆训练模式,例如根据顺序或随机选择单词进行测试和复习。
可以通过按下不同的按钮或在界面上选择相应的模式。
6.学习记录和进度统计:设计记忆器可以记录用户的学习历史和进度,例如已经学习的单词数量、学习时间等信息。
可以通过单片机的存储器或在外部存储设备中保存这些信息。
7.能源管理:考虑使用低功耗设计,例如增加电源管理模块,以延长记忆器的电池寿命。
添加睡眠模式,当记忆器长时间不使用时,自动进入低功耗状态。
8.软件运行控制:根据硬件设计、用户界面和功能要求,编写相应的单片机代码。
包括读取单词库文件、界面交互、单词显示和发音等功能的实现。
9.调试和测试:将代码烧录到单片机上,并通过调试和测试验证各个功能的正确性和稳定性。
根据测试结果进行适当的优化和改进。
最后,对于特定需求和设计约束,可能需要根据实际情况进行适当的调整和修改。
背单词系统毕业设计背单词系统毕业设计在现代社会中,英语已经成为了全球通用的语言之一。
无论是学术研究、商务交流还是国际旅行,都离不开对英语的掌握。
而背单词作为学习英语的基础,一直以来都是学习者们的头疼问题。
为了解决这一问题,我设计了一款背单词系统作为我的毕业设计。
1. 系统概述我的背单词系统旨在帮助用户高效、有趣地记忆英语单词。
它采用了多种学习方法和技巧,结合了语音、图像和互动等元素,使用户能够更加深入地理解和记忆单词。
系统具有良好的用户界面和友好的用户体验,适用于各个年龄段的学习者。
2. 单词学习模式我的系统提供了多种学习模式,包括拼写、选择和填空等。
用户可以根据自己的学习需求选择适合自己的模式。
在拼写模式中,系统会读出一个单词,用户需要正确拼写出来。
在选择模式中,系统会给出一个单词的选项,用户需要选择正确的意思。
在填空模式中,系统会给出一个句子,用户需要填入正确的单词。
3. 个性化学习为了满足不同用户的学习需求,我的系统提供了个性化学习功能。
用户可以根据自己的水平和目标设定学习计划,并记录自己的学习进度。
系统会根据用户的学习情况智能调整难度和复习频率,以提高学习效果。
同时,用户还可以收藏自己喜欢的单词和句子,方便日后复习和回顾。
4. 互动学习社区为了增加学习的趣味性和互动性,我的系统还提供了一个学习社区。
用户可以在社区中与其他学习者交流和分享学习心得,互相激励和帮助。
系统还会定期举办各种英语学习活动和竞赛,让用户能够在竞争中提高自己的学习能力。
5. 系统评估和反馈为了帮助用户更好地了解自己的学习情况,我的系统提供了系统评估和反馈功能。
用户可以进行自测和模拟考试,系统会根据用户的表现给出评分和建议。
同时,系统还会根据用户的学习情况生成学习报告,帮助用户分析和改进学习策略。
6. 系统优化和改进为了不断提高系统的性能和用户体验,我会根据用户的反馈和需求进行系统优化和改进。
我会收集用户的意见和建议,并根据实际情况进行相应的调整和改进。
毕业设计中文题目基于艾宾浩斯记忆曲线的单词记忆系统的设计与实现英文题目Design and Implementation ofthe Word-Memory System Based onEbbinghaus Curve摘要摘要当前英语地位日趋重要,词汇量成为制约大部分人英语能力的障碍。
为帮助人们更加轻松、高效的完成单词记忆过程,本次项目将结合心理学原理设计开发一个基于B/S架构的单词记忆系统。
系统主要实现记忆单词的基本功能,如:基于艾宾浩斯记忆曲线的任务进程初始化、进程参数动态更新、记忆曲线每日修正、任务列表动态初始化、动态调整任务推送次序等核心功能。
与其他同类系统不同的是,该系统采用了心理学的研究成果,更符合人类的记忆活动,并能够根据用户的操作不断地更新用户的记忆曲线使之更符合用户个性化的记忆能力。
系统采用java编程,核心技术涉及:数据库编程、Strut2框架、轻量级数据交换格式JSON、ExtJS的Ajax数据代理模式及界面显示技术。
关键词:艾宾浩斯;单词记忆系统;记忆曲线更新ABSTRACTABSTRACTEnglish has being become more and more important, Limited vocabulary is a barrier to so many people. To help people remember words comfortable and more efficient. This project applied the psychological principles, design and implementation of system base-on B/S architecture. The system achieve basic function of remember words.The core business includes the following functions. Initialize a user forgetting curve base-on Ebbinghaus Curve.C urve’s parameters update dynamically by user operation. Refresh user curve. Generate a review plan by user forgetting curve.Unlike other wordmemory system, This system is base-on Ebbinghaus Curve so it can update C urve’s parameters dynamically.It means that it becomes more in accordance with human’s memory level. This system code in Java and it applied technique like: SQL programming, Struts2, JSON, Ajax, ExtJS.Key Words: Ebbinghaus Forgetting Curve;WordMemory system; Refresh user curve目录第1章开发背景 (1)1.1 目的和意义 (1)1.2 设计思想 (1)1.3 开发目标 (2)第2章使用技术说明 (3)2.1 Struts2 (3)2.2 SQL编程 (3)2.3 AJAX与ExtJS (3)2.4 JSON轻量级数据格式简介 (4)第3章系统需求分析 (5)3.1 引言 (5)3.1.1 项目背景 (5)3.1.2 假定和约束 (5)3.2 系统总体结构图 (5)3.3 系统功能模块分解 (6)3.3.1 用户模块 (6)3.3.2 词库模块 (6)3.3.3 记忆曲线模块 (7)3.3.4 复习计划模块 (7)3.3.5 复习模块及浏览模块 (8)第4章系统概要设计 (9)4.1 系统设计思想 (9)4.2 系统总体设计 (9)4.3 系统工程分离 (9)4.4 系统类结构设计 (10)4.4.1 数据模型 (10)4.4.2 DAO层 (10)4.4.3 业务逻辑层 (11)4.4.4 控制层 (11)4.5 数据库设计 (12)4.5.1 E-R模型 (12)4.5.2 物理模型 (14)第5章核心业务逻辑介绍 (17)5.1 核心业务逻辑层简述 (17)5.2 记忆曲线的相关业务逻辑详解 (20)5.2.1 记忆曲线初始化 (20)5.2.2 记忆曲线参数更新 (20)5.2.3 记忆曲线更新 (21)5.3单词复习的业务逻辑详解 (23)5.3.1 任务列表初始化 (23)5.3.2 复习单词的过程 (24)5.4 单词卡片式浏览时的业务逻辑详解 (26)5.4.1 文字说明 (26)5.4.2 选择这种方式的原因 (27)5.4.3方法的优点 (27)第6章系统实现 (28)6.1 核心模块实现效果及说明 (28)6.1.1 首页 (28)6.1.2 复习模块页面 (28)6.1.3 单词浏览页面 (29)6.1.4 数据分析 (30)6.2 新技术应用 (31)6.2.1 Extjs、Ajax、JSON (31)第7章系统测试 (34)7.1 测试对象和要点 (34)7.2 测试环境 (34)7.3 测试用例 (34)第8章结论与展望 (37)8.1 结论 (37)8.2 展望 (38)结束语 (39)致谢 (40)参考文献 (1)第1章开发背景1.1 目的和意义目前英语地位日趋重要,单词的词汇量是一个人英语能力及水平极大的重要体现, 而背单词依旧是困扰许多人的地方,原因如下:英语单词多而繁杂,面对整整一本的单词词典人们总是望而却步,不从何入手。
单词记忆测试器程序设计课程设计
本次课程设计项目为单词记忆测试器程序设计,旨在设计一个可以帮
助人们更好地掌握英语单词的程序。
本程序主要包含以下几个模块:用户
信息管理模块、单词库管理模块、测试模块、统计分析模块等。
用户信息管理模块
本模块旨在提供用户信息的管理功能,包括用户的注册、登录、修改
信息等。
用户可以通过该模块完成注册,并设置用于登录的账号和密码。
同时,用户也可以在此模块中修改个人信息、修改密码等操作。
单词库管理模块
测试模块
本模块用于进行单词测试,包括单词听力测试、单词拼写测试等。
用户可以在此模块中选择自己想要进行的测试类型,然后根据测试内
容进行测试。
测试结果将会在测试完成后显示出来,用户可以查看自己的
测试成绩。
统计分析模块
本模块用于对用户测试结果进行统计分析。
管理员可以通过该模块查看用户的测试记录、测试成绩等信息,并对
用户测试数据进行统计分析,以便更好地了解用户在单词学习方面的表现。
总结
本项目设计旨在帮助用户更好地掌握英语单词,提供了用户信息管理、单词库管理、测试及统计分析等功能。
通过该项目的实现,用户可以方便
地进行单词学习和测试,提升英语单词水平。
大学能源与动力工程学院课程设计报告题目:单词记忆测试器程序设计课程:单片机原理与应用课程设计专业:电气工程与其自动化班级:电气1102姓名:学号:第一部分任务书《单片机原理与应用》课程设计任务书一、课题名称单词记忆测试器程序设计二、课程设计目的课程设计是课程教学中的一项重要容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面结实地掌握课堂教学容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
《单片机原理与应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。
单片机原理与应用课程设计的目的是让学生在理论学习的根底上,通过完成一个涉与MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。
为今后能够独立进展某些单片机应用系统的开发设计工作打下一定的根底。
通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的根本技能,逐步熟悉开展科学实践的程序和方法。
三、课程设计容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。
1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进展总体方案的设计。
2. 硬件电路设计:对方案中以单片机为核心的电路进展设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。
3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。
4. 调试:在单片机EDA仿真软件环境Proteus下进展仿真设计并调试;或在单片机周立功实验箱上进展相关设计并调试。
附件9:武汉长江工商学院本科毕业论文(设计)任务书论文名称:基于单片机的单词记忆测试器设计系、专业:电子信息工程学生姓名:指导教师:下达时间:2011-12一、论文(设计)的选题意义随着经济的发展,科技的突飞猛进,芯片技术也取得了飞速发展,使单片机技术在各种民用和工业测控等领域得到了更为广泛的应用。
单片机凭借其低成本、高性能的不可替代优势,已经成为微电脑控制的主力军。
据统计,我国的单片机年需求量已达2亿片以上,且每年以大约15%的速度增长,发展迅速的单片机行业有着广阔的前景。
相比于发展迅猛的单片机行业,国内的单片机设计开发从业人员缺口很大。
据统计,到2015年,我国单片机开发从业人员将达350万人,而目前的从业者大约只有一百五十万人,两百万的人才缺口正驱动着大量的人员加入这个庞大的群体。
目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。
学习单片机的最有效方法就是理论与实践并重,因此通过单片机对单词记忆测试器的设计和研究,对于切实掌握单片机相关知识具有重要的理论和实际意义。
现在,社会越来越多重视英语的学习,单词的记忆很大程度上决定了英语成绩的好坏。
因此,很多家长会给自己的孩子购买一个记忆单词的工具,目前这类产品在市场上层出不穷。
这些产品都有一个共同的特点:都是以单片机为基础演变开发而来。
因此,以单片机为基础设计单词记忆测试器很基础,同时对切实掌握单片机相关知识具有重要的理论和实际意义。
二、论文(设计)的任务和基本要求(1)实现单词的录入(为使程序具有可演示性,单词不少于10个);(2)单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,也可以直接进入下一个或者上一个;(3)单词背完后给出正确率;(4)使用Proteus软件仿真电路原理图;(5)使用Keil软件编译程序。
三、论文(设计)的进程安排2011.12.10~2012.2.29 明确设计题目的任务要求,并完成开题报告2012.3.1~2012.3.10 熟悉课题背景,查阅和学习相关资料2012.3.10~2012.3.31 完成主要工序要求的程序顺序功能图2012.4.1~2012.4.20 实际调试,测试仿真过程中可能存在的问题,并查找书籍并及时与指导老师沟通解决相关问题。
单片机单词记忆测试器C程序源代码/************************************************************************ /**单片机单词测试程序/**设计一个以单片机为核心的单词记忆测试器;/** 实现单词的录入(为使程序具有可演示性,单词不少于10个);/**单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,/**也可以直接进入下一个或者上一个;/**单词背完后给出正确率。
/*************************************************************************/ #define uchar unsigned char#define uint unsigned int#include <reg52.h>#include "asc.h" //ASCII字模表#include "12864.h" //12864液晶屏底层驱动程序bit ERROR=1; //输入字符错误标志位bit result=0; //输入结果对错的标志位,为0是正确bit verify=1; //已按了确认键后清零sbit ERR=P2^7;uchar correctNUM; //统计测试正确的单词数,即得分/*****************************************/** 存储要测试的单词,放在ROM中/****************************************/uchar code S[10][5]={ "left ", //左"bird ", //鸟"book ", //书"tree ", //树"water ", //水"go ", //去"come ", //来"rain ", //雨"fly ", //飞"eat ", //吃} ;uchar code SL[10]={4,4,5,3,2,4,4,3,4,3};//存储各测试单词的长度uchar KeyNum[8]; //储存输入的单词/*****************************************/** 存储键盘的字母值,放在ROM中/****************************************/uchar code tab1[6][5]={{'a','b','c','d','e'},{'f','g','h','i','j'},{'k','l','m','n','o'},{'p','q','r','s','t'},{'u','v','w','x','y'},{'z',1,2,3,4}};//最后的1234 键盘值为功能键,1表示确定键,2表示不认识,3表示上一个,4表示下一个/*************************************************** 键盘扫描程序*************************************************/unsigned char kbscan() //键盘扫描{uchar hang,lie,key; //P1连行,P3连列if(P1!=0xFF||P3!=0){switch(P1&0xFF) //P1 扫行{case 0xFE:hang=5;break;//P1.0为第6行case 0xFD:hang=4;break;//P1.1为第5行case 0xFB:hang=3;break;//P1.2为第4行case 0xF7:hang=2;break;//P1.3为第3行case 0xEF:hang=1;break;//P1.4为第2行case 0xDF:hang=0;break;//P1.5为第1行}P1=0; //P1全低电平P3=0xFF;//P3全高电平switch(P3&0xFF){case 0xFE:lie=4;break; //P1.0为第5列case 0xFD:lie=3;break; //P0.5为第4列case 0xFB:lie=2;break; //P0.6为第3列case 0xF7:lie=1;break; //P0.7为第2列case 0xEF:lie=0;break; //P0.7为第1列}P1=0xFF; //P1全高电平P3=0; //P3全低电平while(P1!=0xFF||P3!=0); //按键松开后才返回值key=tab1[hang][lie];}elsekey='_';return (key);}/************************************************************************/** 主函数/**/**/*************************************************************************/void main(void){uchar hz_Num; //用于计当前测试的是第几个词,第一个为0 uchar temp[8]; //用于送液晶屏显示的临时变量uchar iword=0,Nword=0; //输入单词字母下一个计数LCD12864_init(); //LCD12864初始化ClearLCD(); //清屏en_disp(2,1,11,Asc,"INPUT WORD:",1); //在第2行第1列en_disp(4,1,1,Asc,">",1); //在第5行,第2列开始显示en_disp(6,0,8,Asc,"correct:",1); //在第7行,第1列开始显示en_disp(6,80,5,Asc,"00/10",1); //在第7行第81列P1=0xFF; //P1全高电平P3=0; //P3全低电平while(1){KeyNum[iword]=kbscan(); //扫描键盘的输入值,没按下时返回下横线hz_disp(0,48,1,hz1+hz_Num*32,1); //在第1行,第49列开始显示测试的汉字temp[0]=(hz_Num+1)/10+0x30; //将十进制数转换为ASCII字符temp[1]=(hz_Num+1)%10+0x30; //算出测试汉字的序号的第一位和第二位en_disp(0,20,1,Asc,":",1); //在第1行第21列en_disp(0,4,2,Asc,temp,1); //在第1行第5列显示测试序号if(KeyNum[iword]!='_') //键盘有按键按下{if(KeyNum[iword]==1) //如果按下了确定键{if(SL[hz_Num]==iword&&verify) //输入长度等于测试单词的长度,则正确,verify 表示按下了确认后有效一次{correctNUM+=1;if(correctNUM>10){correctNUM=10; //最多10个正确的}verify=0; //标志位清零hz_Num++; //测试下一个单词if(hz_Num==10) hz_Num=0; //最多设10个单词temp[0]=(correctNUM)/10+0x30; //将十进制数转换为ASCII字符temp[1]=(correctNUM)%10+0x30; //算出测试汉字的序号的第一位和第二位en_disp(6,80,2,Asc,temp,1); //在第7行第81列iword=0;Nword=0;en_disp(4,16,8,Asc," ",1); //在第5行,第17列开始显示}}else if(KeyNum[iword]==2||KeyNum[iword]==4)//如果按下了“不认识”或“下一个”键,直接跳到下一个单词{result=0; //跳下一个时错误灯灭ERROR=0;hz_Num++; //测试下一个单词if(hz_Num==10) hz_Num=0; //最多设10个单词iword=0;Nword=0;en_disp(4,16,8,Asc," ",1); //在第5行,第17列开始显示}else if(KeyNum[iword]==3) //如果按下了“上一个”键,直接跳到上一个单词{result=0; //跳下一个时错误灯灭ERROR=0;//测试下一个单词if(hz_Num==0) hz_Num=10; //最多设10个单词hz_Num--;iword=0;Nword=0;en_disp(4,16,8,Asc," ",1); //在第4行,第16列开始显示}else if(S[hz_Num][iword]==KeyNum[iword]) //输入的字符与测试的标准字符比较{ temp[0]=KeyNum[iword];ERROR=0; //正确就标志位置0en_disp(4,Nword+16,1,Asc,temp,1); //在第5行,第17列开始显示iword++;if(iword==8) iword=0;Nword=iword*8;verify=1;}else{ temp[0]=KeyNum[iword];ERROR=1; //错误就置1en_disp(4,Nword+16,1,Asc,temp,1); //在第5行,第17列开始显示iword++;if(iword==8) iword=0;Nword=iword*8;}result=ERROR|result; //0表示结果正确}ERR=!result; //错误指示灯}}/***********************************************************/* ASCII字模的数据表/* 码表从0x20~0x7e 即ASCII的32-127/* 纵向取模下高位8x16/*********************************************************/ unsigned char code Asc[] = // ASCII 表{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xFC,0xFC,0x38,0x00,0x00, // -!-0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00,0x00,0x0E,0x1E,0x00,0x00,0x1E,0x0E,0x00, // -"-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xF8,0xF8,0x20,0xF8,0xF8,0x20,0x00, // -#-0x02,0x0F,0x0F,0x02,0x0F,0x0F,0x02,0x00,0x38,0x7C,0x44,0x47,0x47,0xCC,0x98,0x00, // -$-0x03,0x06,0x04,0x1C,0x1C,0x07,0x03,0x00,0x30,0x30,0x00,0x80,0xC0,0x60,0x30,0x00, // -%-0x0C,0x06,0x03,0x01,0x00,0x0C,0x0C,0x00,0x80,0xD8,0x7C,0xE4,0xBC,0xD8,0x40,0x00, // -&-0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,0x00, // -'-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF8,0x0C,0x04,0x00,0x00, // -(-0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00,0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00, // -)-0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00,0x80,0xA0,0xE0,0xC0,0xC0,0xE0,0xA0,0x80, // -*-0x00,0x02,0x03,0x01,0x01,0x03,0x02,0x00,0x00,0x80,0x80,0xE0,0xE0,0x80,0x80,0x00, // -+-0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -,-0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, // ---0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -.-0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x00, // -/-0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00, // -0- 0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00,0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00, // -1- 0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00, // -2- 0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00, // -3- 0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00, // -4- 0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x7C,0x7C,0x44,0x44,0xC4,0xC4,0x84,0x00, // -5- 0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,0xF0,0xF8,0x4C,0x44,0x44,0xC0,0x80,0x00, // -6- 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,0x0C,0x0C,0x04,0x84,0xC4,0x7C,0x3C,0x00, // -7- 0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0xB8,0xFC,0x44,0x44,0x44,0xFC,0xB8,0x00, // -8- 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,0x38,0x7C,0x44,0x44,0x44,0xFC,0xF8,0x00, // -9- 0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, // -:-0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, // -;-0x00,0x00,0x08,0x0E,0x06,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x18,0x08,0x00, // -<- 0x00,0x00,0x01,0x03,0x06,0x0C,0x08,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, // -=- 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x08,0x18,0x30,0x60,0xC0,0x80,0x00, // ->- 0x00,0x08,0x0C,0x06,0x03,0x01,0x00,0x00,0x18,0x1C,0x04,0xC4,0xE4,0x3C,0x18,0x00, // -?- 0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00,0xF0,0xF8,0x08,0xC8,0xC8,0xF8,0xF0,0x00, // -@- 0x07,0x0F,0x08,0x0B,0x0B,0x0B,0x01,0x00,0xE0,0xF0,0x98,0x8C,0x98,0xF0,0xE0,0x00, // -A- 0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00, // -B- 0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00,0xF0,0xF8,0x0C,0x04,0x04,0x0C,0x18,0x00, // -C- 0x03,0x07,0x0C,0x08,0x08,0x0C,0x06,0x00,0x04,0xFC,0xFC,0x04,0x0C,0xF8,0xF0,0x00, // -D- 0x08,0x0F,0x0F,0x08,0x0C,0x07,0x03,0x00,0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00, // -E- 0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00,0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00, // -F- 0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0xF0,0xF8,0x0C,0x84,0x84,0x8C,0x98,0x00, // -G- 0x03,0x07,0x0C,0x08,0x08,0x07,0x0F,0x00,0xFC,0xFC,0x40,0x40,0x40,0xFC,0xFC,0x00, // -H- 0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00, // -I- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x00, // -J- 0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,0x00,0x04,0xFC,0xFC,0xC0,0xF0,0x3C,0x0C,0x00, // -K- 0x08,0x0F,0x0F,0x00,0x01,0x0F,0x0E,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00, // -L- 0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00,0xFC,0xFC,0x38,0x70,0x38,0xFC,0xFC,0x00, // -M- 0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0xFC,0xFC,0x38,0x70,0xE0,0xFC,0xFC,0x00, // -N- 0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0xF0,0xF8,0x0C,0x04,0x0C,0xF8,0xF0,0x00, // -O- 0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00,0x04,0xFC,0xFC,0x44,0x44,0x7C,0x38,0x00, // -P- 0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0xF8,0xFC,0x04,0x04,0x04,0xFC,0xF8,0x00, // -Q- 0x07,0x0F,0x08,0x0E,0x3C,0x3F,0x27,0x00,0x04,0xFC,0xFC,0x44,0xC4,0xFC,0x38,0x00, // -R- 0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,0x18,0x3C,0x64,0x44,0xC4,0x9C,0x18,0x00, // -S-0x06,0x0E,0x08,0x08,0x08,0x0F,0x07,0x00,0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00, // -T- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00, // -U- 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00, // -V- 0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00,0xFC,0xFC,0x00,0x80,0x00,0xFC,0xFC,0x00, // -W- 0x03,0x0F,0x0E,0x03,0x0E,0x0F,0x03,0x00,0x0C,0x3C,0xF0,0xC0,0xF0,0x3C,0x0C,0x00, // -X- 0x0C,0x0F,0x03,0x00,0x03,0x0F,0x0C,0x00,0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00, // -Y- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x1C,0x0C,0x84,0xC4,0x64,0x3C,0x1C,0x00, // -Z- 0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0E,0x00,0x00,0x00,0xFC,0xFC,0x04,0x04,0x00,0x00, // -[- 0x00,0x00,0x0F,0x0F,0x08,0x08,0x00,0x00,0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00, // -\-0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x00,0x00,0x00,0x04,0x04,0xFC,0xFC,0x00,0x00, // -]- 0x00,0x00,0x08,0x08,0x0F,0x0F,0x00,0x00,0x08,0x0C,0x06,0x03,0x06,0x0C,0x08,0x00, // -^- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -_-0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x03,0x07,0x04,0x00,0x00,0x00, // -`-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x00, // -a- 0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0x04,0xFC,0xFC,0x20,0x60,0xC0,0x80,0x00, // -b- 0x08,0x0F,0x07,0x08,0x08,0x0F,0x07,0x00,0xC0,0xE0,0x20,0x20,0x20,0x60,0x40,0x00, // -c- 0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00,0x80,0xC0,0x60,0x24,0xFC,0xFC,0x00,0x00, // -d- 0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0xC0,0xE0,0xA0,0xA0,0xA0,0xE0,0xC0,0x00, // -e- 0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00,0x40,0xF8,0xFC,0x44,0x0C,0x18,0x00,0x00, // -f- 0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00, // -g- 0x27,0x6F,0x48,0x48,0x7F,0x3F,0x00,0x00,0x04,0xFC,0xFC,0x40,0x20,0xE0,0xC0,0x00, // -h- 0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x20,0xEC,0xEC,0x00,0x00,0x00, // -i- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xEC,0xEC,0x00, // -j- 0x00,0x30,0x70,0x40,0x40,0x7F,0x3F,0x00,0x04,0xFC,0xFC,0x80,0xC0,0x60,0x20,0x00, // -k- 0x08,0x0F,0x0F,0x01,0x03,0x0E,0x0C,0x00,0x00,0x00,0x04,0xFC,0xFC,0x00,0x00,0x00, // -l- 0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0xE0,0xE0,0x60,0xC0,0x60,0xE0,0xC0,0x00, // -m- 0x0F,0x0F,0x00,0x0F,0x00,0x0F,0x0F,0x00,0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00, // -n- 0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,0xC0,0xE0,0x20,0x20,0x20,0xE0,0xC0,0x00, // -o- 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00, // -p- 0x40,0x7F,0x7F,0x48,0x08,0x0F,0x07,0x00,0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00, // -q- 0x07,0x0F,0x08,0x48,0x7F,0x7F,0x40,0x00,0x20,0xE0,0xC0,0x60,0x20,0x60,0xC0,0x00, // -r- 0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x40,0xE0,0xA0,0x20,0x20,0x60,0x40,0x00, // -s- 0x04,0x0C,0x09,0x09,0x0B,0x0E,0x04,0x00,0x20,0x20,0xF8,0xFC,0x20,0x20,0x00,0x00, // -t-0x00,0x00,0x07,0x0F,0x08,0x0C,0x04,0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00, // -u- 0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00, // -v- 0x00,0x03,0x07,0x0C,0x0C,0x07,0x03,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00, // -w-0x07,0x0F,0x0C,0x07,0x0C,0x0F,0x07,0x00,0x20,0x60,0xC0,0x80,0xC0,0x60,0x20,0x00, // -x-0x08,0x0C,0x07,0x03,0x07,0x0C,0x08,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00, // -y-0x47,0x4F,0x48,0x48,0x68,0x3F,0x1F,0x00,0x60,0x60,0x20,0xA0,0xE0,0x60,0x20,0x00, // -z-0x0C,0x0E,0x0B,0x09,0x08,0x0C,0x0C,0x00,0x00,0x40,0x40,0xF8,0xBC,0x04,0x04,0x00, // -{-0x00,0x00,0x00,0x07,0x0F,0x08,0x08,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x00,0x00, // -|-0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x04,0x04,0xBC,0xF8,0x40,0x40,0x00, // -}-0x00,0x08,0x08,0x0F,0x07,0x00,0x00,0x00,0x08,0x0C,0x04,0x0C,0x08,0x0C,0x04,0x00, // -~-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x60,0xC0,0x80,0x00, // -•-0x07,0x07,0x04,0x04,0x04,0x07,0x07,0x00,};/***********************************************************/* 显示汉字的字模数组存储要测试的单词中文/* 纵向取模下高位16x16/* 下一个汉字为上一个汉字在数组中位置的hz1+32/*********************************************************/unsigned char code hz1[] ={/*-- 文字: 左--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x10,0x10,0x10,0x11,0x1E,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00, 0x04,0x08,0x12,0x62,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x02,0x02,0x00, /*-- 文字: 鸟--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x3F,0x20,0x20,0x68,0xA6,0x20,0x22,0x21,0x3E,0x00,0x00,0x00,0x00, 0x00,0x08,0x08,0xC8,0x48,0x48,0x48,0x48,0x48,0x48,0x4A,0x41,0x42,0x7C,0x00,0x00, /*-- 文字: 书--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x9F,0x40,0x20,0x00,0x00,0x00, 0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x84,0x82,0x84,0xF8,0x00,0x00,/*-- 文字: 树--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x09,0xFF,0x09,0x08,0x24,0x23,0x20,0x3F,0x00,0x09,0x08,0x08,0xFF,0x08,0x00, 0x60,0x80,0xFF,0x00,0x84,0x08,0x30,0xC0,0x38,0x00,0x00,0xC2,0x01,0xFE,0x00,0x00, /*-- 文字: 水--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x04,0x04,0x04,0x05,0x06,0x00,0xFF,0x06,0x01,0x02,0x04,0x18,0x00,0x00,0x00, 0x04,0x08,0x10,0x60,0x80,0x02,0x01,0xFE,0x00,0x80,0x40,0x20,0x10,0x08,0x08,0x00, /*-- 文字: 去--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00, 0x80,0x80,0x82,0x86,0x8A,0x92,0xE2,0x82,0x82,0x82,0x8A,0x86,0x83,0x80,0x80,0x00, /*-- 文字: 来--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x10,0x10,0x14,0x13,0x10,0x10,0xFF,0x10,0x10,0x11,0x16,0x10,0x10,0x00,0x00, 0x84,0x84,0x88,0x88,0x90,0xA0,0xC0,0xFF,0xC0,0xA0,0x90,0x88,0x88,0x84,0x84,0x00, /*-- 文字: 雨--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x47,0x44,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x44,0x47,0x40,0x00, 0x00,0xFF,0x00,0x00,0x90,0x48,0x00,0xFE,0x00,0x90,0x48,0x02,0x01,0xFE,0x00,0x00, /*-- 文字: 飞--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x02,0x05,0x08,0x10,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x08,0x84,0x42,0x0F,0x00, /*-- 文字: 吃--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x3F,0x20,0x20,0x3F,0x04,0x08,0x32,0xD2,0x12,0x12,0x12,0x13,0x10,0x10,0x00, 0x00,0xF0,0x20,0x20,0xF0,0x00,0x0C,0x12,0x22,0x42,0x42,0x82,0x02,0x02,0x0E,0x00, };/*-----------------------------------------------------------*/#define LCD_OFF 0x3E#define LCD_ON 0x3F#define Add_X 0xB8 //the start address of the page 0 ;(0~7)#define Add_Y 0x40 //the start address of the Y counter ; (0~64)#define Add_Z 0xC0 //the start address of the DDRAM ; (0~64)/*-----------------------------------------------------------*/#define LCD12864_DATA_PORT P0sbit LCD12864_EN =P2^4;sbit LCD12864_RW =P2^3; //0:write ; 1:readsbit LCD12864_RS =P2^2; //0:the command .1:the datasbit LCD12864_CS_L =P2^1; //select the left of the lcd when 1sbit LCD12864_CS_R =P2^0;sbit LCD12864_RST =P2^5;/*------------------------------------------------------------*/void delayus(unsigned int us){while(us--);}void delayms(unsigned ms){unsigned int i,j;for (i=0;i<ms;i++){for (j=0;j<1000;j++);}}/*--------------------------select the LCD--------------------*/void LCDSel(unsigned char sel){switch(sel){case 0: LCD12864_CS_L=0;LCD12864_CS_R=0;break;case 1: LCD12864_CS_L=1;LCD12864_CS_R=0;break; //leftcase 2: LCD12864_CS_L=0;LCD12864_CS_R=1;break; //rightdefault:;};}/*------------------------------------------------------------*/void WaitLCD(){unsigned char flag;LCD12864_DATA_PORT=0xFF;LCD12864_RW=1;LCD12864_RS=0;LCD12864_EN=1;LCD12864_EN=1;LCD12864_EN=0;LCD12864_DATA_PORT=0xFF; //读有效数据LCD12864_RW=1;LCD12864_RS=0;;LCD12864_EN=1;do{flag=LCD12864_DA TA_PORT;LCD12864_DATA_PORT=0xFF;} while((flag&0x80)==1); //读BUSY信号//仅当第7位为0时才可操作LCD12864_EN=0;} //*//*-------------------------------------------------------------*/void WriteDatToLCD12864(unsigned char dat){WaitLCD();LCD12864_RS=1; //the dataLCD12864_RW=0; //writeLCD12864_DATA_PORT=dat;LCD12864_EN=1;;LCD12864_EN=0;}/*-------------------------------------------------------------*/void WriteCmdToLCD12864(unsigned char cmd){WaitLCD();LCD12864_RS=0; //the commandLCD12864_RW=0; //writeLCD12864_DATA_PORT=cmd;LCD12864_EN=1;;LCD12864_EN=0;}/*-------------------------------------------------------------*/unsigned char ReadDatFromLCD12864(void){unsigned char dat;WaitLCD();LCD12864_DATA_PORT=0xFF; //读空操作LCD12864_RS=1; //the dataLCD12864_RW=1; //readLCD12864_EN=1;LCD12864_EN=1;LCD12864_EN=0;LCD12864_DATA_PORT=0xFF; //来读有效数据LCD12864_RS=1; //the dataLCD12864_RW=1; //readLCD12864_EN=1;dat=LCD12864_DATA_PORT;LCD12864_EN=0;return dat;}/*--------------------------------------------------------------*///from the chip manualvoid LCD12864_init(void){LCD12864_RST=0;delayus(50);LCD12864_RST=1;LCDSel(0); //left and rightWriteCmdToLCD12864(LCD_OFF);WriteCmdToLCD12864(LCD_ON);}//x:0~7void SetX(unsigned char x) //写入X的地址{WriteCmdToLCD12864(Add_X+x);}//y:0~127void SetY(unsigned char y){WriteCmdToLCD12864(Add_Y+y);}//z:0~63void SetZ(unsigned char z){WriteCmdToLCD12864(Add_Z+z);}void ClearLCD(){int i,j;LCDSel(0);for(j=0;j<8;j++){WriteCmdToLCD12864(LCD_ON);SetX(j);WriteCmdToLCD12864(Add_Y); //diffrent from SetY(0),SetY(64);SetZ(0);for (i=0;i<64;i++){WriteDatToLCD12864(0x00);}}}/*-------------------------显示某点------------------*///左上角第一个点为原点,向下Y为轴,向右为X轴//x:0~63~127 y:0~63//flag : 0:擦除某个点// 1:显示某个点unsigned char code Tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void Dot(char x,char y,bit flag){unsigned char dat;// y=63-y; //坐标轴的移动和反转if(x<64) //如果小于64则是在左半屏,CS1片选{LCDSel(1);SetX(y/8); //set the page addressSetY(x); //set the Y adressdat=ReadDatFromLCD12864();if(flag)dat=dat|(Tab[y%8]);elsedat=dat&(~(Tab[y%8])); //擦除某个点就是在原来的数据基础上与上(要擦的位置的取反)SetY(x); //set the Y adressWriteDatToLCD12864(dat);}else if(x<128){LCDSel(2);SetX(y/8);SetY(x-64);dat=ReadDatFromLCD12864();if(flag)dat=dat|(Tab[y%8]);elsedat=dat&(~(Tab[y%8]));SetY(x-64);WriteDatToLCD12864(dat);}}//draw a line between point(x1,y1) and point(x2,y2)//flag 0:erase the line 1:draw a linevoid Line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit flag){unsigned char i;unsigned char temp;float k;if(x1==x2){if(y1>y2){ temp=x1;x1=x2;x2=temp;temp=y1;y1=y2;y2=temp;}for(i=y1;i<=y2;i++){Dot(x1,i,flag);}}else{if(x1>x2){temp=x1;x1=x2;x2=temp;temp=y1;y1=y2;y2=temp;}k=(float)(y2-y1)/(float)(x2-x1);for(i=0;i<x2-x1;i++){Dot(x1+i,(unsigned char)(y1+k*i),flag);}}}/*-------------------------------------------------------------*/void Rect(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit flag){Line(x1,y1,x2,y1,flag);Line(x2,y1,x2,y2,flag);Line(x2,y2,x1,y2,flag);Line(x1,y2,x1,y1,flag);}/*-------------------------------------------------------------*//*void RectArea(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit flag) {unsigned char temp;unsigned char i;if(x1>x2){temp=x1;x1=x2;x2=temp;temp=y1;y1=y2;y2=temp;}for(i=0;i<=x2-x1;i++){Line(x1+i,y1,x1+i,y2,flag);}}//16*16//x行0~7 y列0~127//flag 0:汉字反白显示void hz_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code * hz,bit flag) {unsigned char i,j;for (j=0;j<n;j++){//显示上半个汉字for(i=0;i<16;i++){//点的位置是在左还是右if(y+16*j+i<64){LCDSel(1);WriteCmdToLCD12864(LCD_ON);SetX(x);SetZ(0);SetY(y+16*j+i);if(flag)WriteDatToLCD12864(hz[32*j+i]);elseWriteDatToLCD12864(~hz[32*j+i]);}else if(y+16*j+i<128){LCDSel(2);WriteCmdToLCD12864(LCD_ON);SetX(x);SetZ(0);SetY(y+16*j+i-64);if(flag)WriteDatToLCD12864(hz[32*j+i]);elseWriteDatToLCD12864(~hz[32*j+i]);}}//显示下半个汉字for(i=16;i<32;i++){//先判断点是在左还是在右if(y+16*j+i-16<64){ if(x+1<8) //最后一行显示上半个字{LCDSel(1);WriteCmdToLCD12864(LCD_ON);SetX(x+1);SetZ(0);SetY(y+16*j+i-16);if(flag)WriteDatToLCD12864(hz[32*j+i]);elseWriteDatToLCD12864(~hz[32*j+i]);}}else if(y+16*j+i-16<127){if(x+1<8) //最后一行{LCDSel(2);WriteCmdToLCD12864(LCD_ON);SetX(x+1);SetZ(0);SetY(y+16*j+i-16-64);if(flag)WriteDatToLCD12864(hz[32*j+i]);elseWriteDatToLCD12864(~hz[32*j+i]);}}}}}//x:行0~7//y:列0~127//asc: 指向标准交换码//string: 指向要显示的字符串//flag: 0 反白显示void en_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code *asc,unsigned char *string,bit flag){unsigned char i,j,loc;for (j=0;j<n;j++){loc=string[j]-0x20; //确定要显示的字符在asc表中的位置(乘上16),见字模ASC表,H头文件//显示上半个字母for(i=0;i<8;i++){//点的位置是在左还是右if(y+8*j+i<64){LCDSel(1);WriteCmdToLCD12864(LCD_ON);SetX(x);SetZ(0);SetY(y+8*j+i);if(flag)WriteDatToLCD12864(asc[16*loc+i]);elseWriteDatToLCD12864(~asc[16*loc+i]);}else if(y+8*j+i<128){LCDSel(2);WriteCmdToLCD12864(LCD_ON);SetX(x);SetZ(0);SetY(y+8*j+i-64);if(flag)WriteDatToLCD12864(asc[16*loc+i]);elseWriteDatToLCD12864(~asc[16*loc+i]);}}//显示下半个字母for(i=8;i<16;i++){//先判断点是在左还是在右if(y+8*j+i-8<64){if(x+1<8) //最后一行{LCDSel(1);WriteCmdToLCD12864(LCD_ON);SetX(x+1);SetZ(0);SetY(y+8*j+i-8);if(flag)WriteDatToLCD12864(asc[16*loc+i]);elseWriteDatToLCD12864(~asc[16*loc+i]);}}else if(y+8*j+i-8<128){if(x+1<8) //最后一行{LCDSel(2);WriteCmdToLCD12864(LCD_ON);SetX(x+1);SetZ(0);SetY(y+8*j+i-8-64);if(flag)WriteDatToLCD12864(asc[16*loc+i]);elseWriteDatToLCD12864(~asc[16*loc+i]);}}}}}/******************************** END ************************************/。
b6 db 1000h dup('$')b9 db 'You do not know the following words , please remember them agian',0ah,0dh,'$' f1 db 'very good,congratulations to you',0ah,0dh,'$'call zi4;输出不认识的单词mov ah,02h;回车换行mov dl,0dhint 21hmov ah,02hmov dl,0ahint 21hcall zi2;将不认识的单词存到B6所指单元call zi2;将不认识的单词存到B6所指单元m2:inc dilea si,b6;将不认识的单词放到B6所指单元1111mov si,z;保留SI的地址zi4 procpush axpush bxpush cxpush dxpush sipush dilea dx,b9;输出不认识的单词mov ah,09hint 21hlea dx,b6mov ah,09hint 21hpop dipop sipop dxpop cxpop bxpop axretzi4 endp操作说明:一、输入单词:;1、提示输入单词,输入最少5个、最多255个英文单词,每个单词不超过20个字符。
2、若直接回车,则结束单词输入,进入单词测试;3、输足20个字符,自动进入下一个单词的输入;4、不足20个字符个字符,按回车键进入下一个单词的输入。
;二、单词记忆测试:1、从输入的第一个单词开始测试2、键入'y'(不分大小写)或'n',回答是否认识,不需按回车键确认,其它按键无效;3、紧接着,没有提示,可按上移键或下移键循环测试;4、按Esc键结束测试。
三、计算单词识别率并显示输出;四、提示是否进行下一组单词的输入和测试,键入'y'(不分大小写)或'n'选择是否继续,不需按回车键确认,其它按键无效。
基于单片机的单词记忆测试器目录第一章单词记忆测试器的设计 (2)1.1 硬件模块设计 (2)1.1.1中央处理模块 (2)1.1.2 显示模块的硬件部分介绍 (3)1.1.3 矩阵键盘 (6)1.2 电路原理图设计 (6)1.3 软件程序设计 (8)1.3.1 程序设计思路 (8)1.3.2矩阵键盘的程序设计 (8)1.3.3 LCD12864显示模块的驱动程序 (9)1.3.4 显示字模码的提取 (11)1.3 系统软件主程序结构及其函数 (12)1.4 软件的仿真 (17)第二章结语 (19)附录单片机单词记忆测试器C程序源代码基于单片机的单词记忆测试器摘要本论文的研究对象是基于单片机的单词记忆测试器的设计,此单词记忆测试器可以实现单词的输入并判断输入的单词是否正确,单词背完后给出正确率。
该单片机单词记忆测试器为在现实生活中有着广泛的应用,特别是对学习英语方面有很大的作用。
本设计以STC89C52单片机为处理器,以12854点阵液晶屏为显示器件,并使用5×6距阵键盘为输入设备,实现了功能全面的人机界面和高速的数据处理功能,利用单片机片上FLASH ROM,可储存10-20个英文单词和汉字,作为记忆测试用。
关键词:单片机单词记忆测试器 AT89C52 12864液晶屏第一章 单词记忆测试器的设计1.1 硬件模块设计本单词记忆测试器系统硬件部分分为三个模块:中央处理模块、显示模块、键盘输入模块。
系统模型图如下:图4 系统硬件模块图1.1.1中央处理模块中央处理模块选用STC89C52单片机系统组成,电路包括:STC89C52单片机、复位电路、时钟振荡电路。
STC89C52单片机需在复位电路和时钟振荡电路组成的最小系统下工作,单片机引脚图如图5,外围电路如图6和图7所示,时钟电路采用频率采用为12MHZ 的晶振,C1、C2与晶振构成了外部振荡电路。
复位电路采用电解电容与电阻串联,当系统上电时,由于电容充电,在RST 端会产生一个高电平,高电平持续的时间由电容和电阻的值决定,当RESET 信号为低电平时,系统为工作状态。
毕业设计开题报告基于python的英文单词记忆题目:基于Python的英文单词记忆一、题目背景随着全球化的发展,英语已经成为了世界通用语言,而在学习英语的过程中,记单词是必不可少的一部分。
因此,本毕业设计旨在开发一个基于Python的英文单词记忆工具,以方便用户在学习英语的过程中记忆单词,提升其英语学习效率。
二、设计目标及意义本设计的目标是开发一款基于Python的英文单词记忆工具,主要包括以下特点:1. 支持单词添加、删除、修改、查询等功能;2. 支持单词学习、测试、记忆曲线绘制等功能,能够根据用户的学习情况自适应调整记忆曲线;3. 能够提供单词发音、示例句子等功能,便于用户学习和记忆;4. 支持数据备份和还原等功能,用户可以通过备份功能将单词库备份到云端或本地,以避免数据丢失。
本设计的意义在于:1. 为英语学习者提供一个方便、高效的单词记忆工具,提升其英语学习效率;2. 拓展Python应用领域,提高Python开发者的技能水平,培养Python编程思维。
三、技术路线和实施方案本设计的技术路线包括Python语言、GUI框架、数据库等技术的应用。
具体实施方案如下:1. 使用Python语言开发程序,利用Tkinter等GUI框架开发图形界面,支持单词添加、删除、修改、查询等功能;2. 利用SQLite等数据库,存储单词库的相关数据,支持数据备份和还原等功能;3. 利用Python的音频处理库(如pydub),实现单词发音等功能;4. 利用Python的自然语言处理库(如nltk),实现示例句子的获取和展示。
四、预期成果本设计的预期成果包括:1. 实现一个基于Python的英文单词记忆工具,支持单词添加、删除、修改、查询等功能;2. 实现单词学习、测试、记忆曲线绘制等功能,能够根据用户的学习情况自适应调整记忆曲线;3. 实现单词发音、示例句子等功能,便于用户学习和记忆;4. 实现数据备份和还原等功能,用户可以通过备份功能将单词库备份到云端或本地,以避免数据丢失。
一种基于PIC单片机的便携式磁记忆检测仪引言金属构件和零部件发生损坏的主要原因,是各种微观和宏观机械应力集中导致疲劳失效,其基本特征表现为材料在低于静强度极限的交变应力持续作用下,生成多种类型的微观内部缺陷,并逐渐演化为宏观裂纹,裂纹扩展最终导致结构破坏。
因此,进行疲劳分析,有效评价应力变形状况,测定未来裂缝发展的位置、大小和方向,成为评价金属零部件与构件结构强度和可靠性的一个重要依据。
为了及时准确的找出最大机械应力变形区域,20引言金属构件和零部件发生损坏的主要原因,是各种微观和宏观机械应力集中导致疲劳失效,其基本特征表现为材料在低于静强度极限的交变应力持续作用下,生成多种类型的微观内部缺陷,并逐渐演化为宏观裂纹,裂纹扩展最终导致结构破坏。
因此,进行疲劳分析,有效评价应力变形状况,测定未来裂缝发展的位置、大小和方向,成为评价金属零部件与构件结构强度和可靠性的一个重要依据。
为了及时准确的找出最大机械应力变形区域,20世纪90年代后期,以杜波夫为代表的俄罗斯学者率先提出一种崭新的诊断技术—金属磁记忆检测。
本文采用PIC单片机,设计了高性价比的便携式磁记忆检测仪,具有低成本、低功耗和快速检测等特点,可以满足各种场合,特别是难以到达部位的应力集中区检测。
磁记忆检测铁磁学研究表明,当弹性应力作用于铁磁材料时,铁磁体不但会产生弹性应变,还会产生磁致伸缩性质的应变,改变其自发磁化的方向,这就是磁弹性效应。
根据“实际存在的状态必定是能量最小的状态”原则,由于磁机械效应的作用引起工件内部的磁畴重新取向排列,以增加磁弹性能的形式来抵消应力能的增加,结果在铁磁工件内部产生的磁场强度将高于地球磁场强度,在应力集中区,形成类似缺陷的漏磁场分布形式,磁场的切向分量Hp(x)为最大值,而法向分量Hp(y)在应力集中线两侧符号发生变化,应力集中线处有过零点。
磁记忆检测技术,是基于磁记忆效应原理的全新无损检测方式。
磁记忆检测技术在地磁环境下,通过对铁磁材料所制成的工件表面散射磁场法向分量Hp(y)的测量,确定工件应力集中区域,从而有效预测缺陷发生的区域。
上海电力学院嵌入式系统课程设计报告题目:记忆训练器姓名:王光东学号:14105016院系:电子与信息工程学院专业年级:电工理论与新技术一年级2015年1月15日1.设计题目:记忆训练器屏幕显示记忆内容, 然后开始输入倒计时, 倒计时期间可以输入记忆内容, 若输入正确, 则加分, 错误或超时则显示提示信号。
2.设计要求和目标1.1 基本要求1.1.1记忆内容通过键盘输入, 键盘各键对应值可以自己定义。
1.1.2屏幕显示倒计时和所输内容, 输入内容后需点击确认键, 然后程序判断并决定下一步动作。
1.2 扩展内容1.2.1 加入不同评分规则, 如可基于单个字符对错评分。
1.2.2 设置不同游戏级别。
3.硬件模块图和程序流程图硬件:PC机,ARM仿真器,S32410实验箱软件:Keil uVision图1.程序流程图图2.watchdog中断流程图图3.TSP中断流程图图4.系统结构框图4.程序说明4.1 烧入程序运行后,LCD显示开机界面,数码管显示学号,然后按keypad 任意键,LCD显示游戏说明(游戏时,你也可以通过按‘FUN’键查看游戏说明),再按任意键,LCD清屏,正式进入游戏。
4.2 游戏说明(1).用keypad选择游戏难度(其中A、B、C键分别对应easy,normal,hard三个难度),按键按下后,会语音(可优化:加入代码,使可以用keypad的一个键来切换是否语音播报)提示您选择游戏关卡;(2). 用keypad选择游戏关卡(其中0~9键分别对应1~10十个游戏关卡,而且难度递增,每关的难度系数是通过改变记忆时间(显示所有图片正面的时间)和回忆时间(进度条显示的最大时间,也是该关结束后数码管前四位上会显示的时间,即规定时间)来确定的),按键按下后,产生一串随机数,根据这串数据显示出所有图片的正面,并给您留出一定的时间来记忆图片的位置,时间到后,全部翻转到背面(在这之前请不要触摸屏幕);(3).待图片都翻转过来后,进度条开始倒计时,这时请您根据您刚才的记忆(有些关卡比较难,没有留出记忆时间,其实这样更有意思,因为您可以边找边记,也更利于训练记忆),在规定的时间内找出所有的相同图片,具体步骤如下:首先点击(请尽量用大拇指,像按指纹一样来点击屏幕)一张图片,待它翻转到正面并看清是什么动物的图片后,根据您的记忆寻找相同动物的图片的位置并点击,如果图片一样,则两张图片一起消失,如果不一样,则都翻转到背面(有待优化:(1)硬件上的bug,有时会出现,您按的是某处的坐标,而触摸屏测的却是另外一处的坐标,这会导致游戏出错(因为如果图片消失后,那么这些地方不能再被触摸),请用软件解决这个问题;(2)软件上的小缺点,一张图片如果被一连触摸了两次,程序会判断出您找到了一对图片,并将该图片隐藏,进而出现错误,请解决该问题),如此循环下去,一共分三种结果(要是您能在规定的时间内找出所有的相同图片,则LCD清屏后显示成功图片,数码管前四位显示该关的规定时间且后四位显示您完成该关后还剩余的时间(可优化:你可以换算出分数并在数码管上显示),并进行语音播报“恭喜你通过了”,该关结束;要是您没能在规定的时间内找出所有图片,则LCD清屏后显示失败图片,数码管前四位显示该关的规定时间且后四位显示“0000”,并进行语音播报“对不起你失败了”,该关结束;正在游戏中时,如果您不想玩这关了,则可通按keypad 的任意键使该关停止,此时数码管会在前四位显示该关的规定时间且后四位显示该关停止后还剩余的时间,该关结束(可优化:您可以加入代码,使按任意键后又可接着玩)。
单词记忆测试器程序设计<i>微机原理</i>STACK ***** STACKDB 50 DUP(0)STACK ENDSDATA *****WORD1 DB 300 DUP(0)WORD2 DB 20 DUP(0)MSG0 DB 'THE NUMBER OF WORD YOU HAVE *****ED : $' MSG1 DB 'THE NUMBER OF WORD YOU HAVE NOT ***** :$ ' MSG2 DB 'PLEASE INPUT WORDS,END WITH END.PRESS ENTER TOEND INPUT AND START TEST!',0AH,0DH,'$'MSG3 DB 'THE WORD YOU HAVE NOT *****ED:$'MSG4 DB 'THE SOURCE WORD:$'STR1 DB 0AH,'PERSS K OR U TO JUDGE IF YOU KNOW THIS WORD!YOU CAN PRESS N OR L TO ***** THE NEXT WORD!',0AH,'$'STR2 DB 0AH,'PERSS N OR L TO CHOOSE THE NEXT WORD,PERSS OIS JUMP OUT THE GAME!',0AH,'$'RATE0 DB 'THE RIGHT RATE IS:$'DATA ENDSCODE *****ASSUME CS:CODE , DS:DATA, SS:STACKSTART: MOV AX,DATA ;取数据段地址MOV DS,AXMOV CX,0MOV DI,OFFSET WORD2PUSH DIMOV DX,OFFSET MSG2 ;调用中断显示字符串MOV AH,09HINT 21HLEA SI,WORD1INPUT: INC SIMOV AH,01H ;输入单词MOV DL,0FFHINT 21HMOV [SI],ALCMP AL,0DHJZ FIRSTJMP INPUTFIRST: CALL CLEAR<i>微机原理</i>LEA BX ,WORD1 ;准备显示第一个单词SHOW: MOV DL,[BX+1]CMP DL ,20H ;判断是否显示完一个单词(是否空格)JZ KU CMP DL,0DH ;判断是否测试完毕JZ HPMOV AH,02HINT 21HINC BXJMP SHOWHP: JMP STOPKU: MOV DX,OFFSET STR1MOV AH,09HINT 21HMOV AH,07H ;从键盘输入字符选择是否认识或者直接选择显示哪个单词INT 21HCMP AL,'K'JZ KNOWCMP AL,'U'JZ UNKNOWCMP AL,'N'JZ NEXTCMP AL,'L'JZ LASTJMP KUNL: MOV DX,OFFSET STR2MOV AH,09HINT 21HMOV AH,07H ;从键盘输入字符选择下个一或者上一个或者跳出程序INT 21HCMP AL,'N'JZ NEXTCMP AL,'L'JZ LASTCMP AL,'O'JZ STOPJMP NLLAST: CALL CLEAR ; 清屏<i>微机原理</i>CALL SET_*****N ; 置光标位置DEC BXMOV DL,[BX]CMP DL,20HJZ LAST1JMP LASTLAST1: DEC BXMOV DL ,[BX]CMP DL,20HJZ SHOWJMP LAST1NEXT: CALL CLEARCALL SET_*****NINC BXMOV DL,[BX]CMP DL,20HJZ SHOWJMP NEXTKNOW: CALL CLEARCALL SET_*****NINC CH ;统计记忆单词个数JMP NLUNKNOW: CALL CLEARCALL SET_*****NPUSH BX*****: DEC BXMOV DL,[BX]CMP DL,20HJZ SAVEJMP **********: POP BXINC CL ;统计未记忆单词个数JMP NLSAVE: MOV [DI],BX ;记录未记忆单词的偏移地址ADD DI,2JMP *****STOP: CALL CLEARKS: MOV AH,02 ;调用中断置光标位置MOV BX,0MOV DX,0500HINT 10H<i>微机原理</i>MOV DX,OFFSET MSG0 ; 显示记忆单词个数MOV AH,09H INT 21HMOV BL,CH ;调用过程实现数据转换和显示CALL ZH US: MOV AH ,02H ; 显示未记忆单词个数MOV BX,0MOV DX,0600HINT 10HMOV DX,OFFSET MSG1MOV AH,09HINT 21HMOV BL,CLCALL ZHRATE: MOV AH ,02H ;显示正确率MOV BX,0MOV DX,0700HINT 10HMOV DX,OFFSET RATE0MOV AH,09HINT 21HMOV BL,CHCALL ZHMOV DL,'/'MOV AH,02HINT 21HADD CL,CHMOV BL,CLCALL ZHMOV AH ,02H ; 置光标位置MOV BX,0MOV DX,0900HINT 10HU0: LEA DX,MSG3 ;显示未记忆单词MOV AH,09H INT 21HPOP DIU1: MOV BX,[DI]<i>微机原理</i>CMP BX,0JZ OVERU2: MOV DL,[BX+1]MOV AH,02HINT 21HINC BXCMP DL,20HJZ U3JMP U2U3: ADD DI,02HJMP U1OVER: JMP OVERMOV AX,4C00H INT 21HZH PROCPUSH CXMOV AL,00HADD AL,BLMOV BL,ALH: AND AL,0F0HCMP AL,00HJZ LMOV CL,04HSHR AL,CLADD AL,30HMOV DL,ALMOV AH,02HINT 21HL: MOV AL,BLAND AL,0FHADD AL,30HMOV DL,ALMOV AH,02HINT 21HPOP CXRETZH ENDPCLEAR PROC PUSH CXPUSH DX ;调用dos中断,返回系统;子程序清屏<i>微机原理</i>PUSH BXMOV AX,0600H MOV CX,0000H MOV DX,184FH MOV BH,07H INT 10HPOP BXPOP DXPOP CXCLEAR ENDPSET_*****N PROC PUSH BX PUSH DX MOV BH,0MOV DX,0808H MOV AH,02H INT 10H POP DX POP BX RETSET_*****N ENDPCODE ENDSEND START 子程序置光标位置;。
基于单片机的单词记忆测试器设计
设计一个基于单片机的单词记忆测试器可以包括以下功能:
1.单词输入功能:设计一个键盘或触摸屏,允许用户输入需要记忆的单词。
用户可以使用字母键盘或者屏幕上的虚拟键盘进行输入。
2.单词存储功能:使用单片机的内部存储器或外部存储器,将用户输入的单词进行存储。
可以使用数组或者链表等数据结构来进行存储。
3.单词显示功能:在屏幕上显示需要记忆的单词。
可以使用LCD屏幕或者其他显示设备来显示单词。
4.记忆测试功能:设计一个定时器,在指定的时间间隔后,显示存储的单词。
用户需要根据记忆进行选择,是否能正确地回忆出之前输入存储的单词。
5.记忆结果反馈功能:根据用户的选择结果,给出相应的反馈。
如果用户选择正确,可以在屏幕上显示“正确”;如果选择错误,可以在屏幕上显示“错误”并显示正确答案。
6.重复记忆功能:如果用户选择错误,可以设置继续记忆该单词,直到选择正确为止。
7.总记忆测试结果统计功能:记录并统计用户的记忆测试结果,包括记忆测试次数、正确率等信息。
8.设置功能:提供用户设置记忆测试的参数,如记忆时间间隔、测试次数等。
以上是一个简单的基于单片机的单词记忆测试器设计方案,具体的实现方式可以根据实际需求和使用的单片机型号进行调整。
摘要现如今单片机在电子设计领域应用相当的广泛,因此基于单片机的设计对我们来说越来越有实际意义。
在硬件方面,此课程设计主要是以单片机为主体,附加其他的一些元器件,再通过一定的编程语言编程实现特定的记忆训练功能。
此次课设通过人为按键的输入,将键值转送到单片机,在单片机中进行判断处理后,通过数码管显示出来,为了能过大量的存储数据,采用SRAM6264芯片作为外部数据存储器,同时以74LS373作为锁存器。
单片机采用按键电平复位电路和并接12MHz晶体震荡器、两只电容器(30pF)的振荡电路。
在软件方面,整个程序包含了一个主程序与四个子程序:1位数的显示子程序“P1XS”、4键输入子程序“KEY4”、比较子程序“BJ”、延时子程序DELAY。
关键词:单片机、按键、显示、编程目录1、课程设计内容及实现功能 (3)1.1、课设内容 (3)1.2、课设功能 (3)2、课程设计总体设计方案 (4)2.1、电路设计方案 (4)2.2、整体电路系统设计框图 (5)3、硬件设计 (5)3.1、显示电路 (5)3.1.1、数码管简介 (6)3.2、复位电路 (7)3.3、时钟电路 (9)3.4、按键控制电路 (10)3. 5、数据存储器扩展电路 (11)3.5.1、74LS373性能简述 (12)3.5.2、89C51单片机功能介绍 (15)3.5.3、SRAM6264简要描述 (18)4、软件设计 (20)4.1、程序流程图 (20)4.2、记忆训练器程序 (22)5、检测与调试 (25)5.1、硬件调试 (25)5.2、软件调试 (26)6、心得体会 (26)附录 (27)1、记忆训练器PCB图 (27)2、元器件清单 (27)3、参考文献 (28)1、课程设计内容及实现功能1.1、课设内容此次课程设计要求我们熟练运用单片机、模电及数电等知识设计一个电路。
此课程设计是用扩展外部存储器方式设计一个记忆训练器。
为了能够存储大量的数据,扩展外部数据存储器采用SRAM6264实现1.2、课设功能本课设的具体功能及操作步骤如下:(1)开机后显示“一”,按下“1”键后训练测试过程开始;(2)单片机随机产生一个1~4中的数(如“3”);(3)使用者按下相应的数字键(“3”);(4)单片机又产生一个随机数,并通过LED显示器显示出来(如“2”);(5)使用者要按之前出现的数字顺序按下相应的数字键(“3、2”);(6)又显示一个随机数(如“4”);(7)重复步骤(5)的操作。