嵌入式课程设计电子词典硬件设计说明

合集下载

嵌入式系统硬件设计技术手册

嵌入式系统硬件设计技术手册

嵌入式系统硬件设计技术手册一、引言嵌入式系统是指集成了特定功能的计算机系统,通常被应用于各种电子设备中。

硬件设计技术是嵌入式系统开发中至关重要的一环。

本手册将详细介绍嵌入式系统硬件设计所需的技术知识和实践经验,旨在帮助读者全面理解和掌握这一领域的核心内容。

二、嵌入式系统硬件设计概述1. 嵌入式系统硬件设计的定义和作用2. 嵌入式系统硬件设计与软件设计的关系3. 嵌入式系统硬件设计的基本流程三、嵌入式系统硬件设计的主要技术要点1. 嵌入式处理器的选择与设计a) 嵌入式处理器的分类和特点b) 嵌入式处理器的选型原则c) 嵌入式处理器的系统设计与集成2. 嵌入式系统的存储器设计a) 存储器的分类和特点b) 存储器的选型原则c) 存储器的布局与接口设计3. 嵌入式系统的外设设计a) 常见外设的功能与特点b) 外设的选型原则c) 外设的接口设计与连接方式4. 嵌入式系统的电源管理设计a) 电源管理的目标和原则b) 电源管理的方法和技术c) 电源管理的设计考虑因素四、嵌入式系统硬件设计的实践经验与案例分析1. PCB设计和布局要点a) PCB设计的基本原则b) PCB布局的注意事项2. 信号完整性与电磁兼容设计a) 信号完整性的概念和关键问题b) 电磁兼容设计的基本原则3. 故障排查与调试技巧a) 常见故障排查方法和工具b) 调试技巧和实践经验分享4. 案例分析:XXX嵌入式系统硬件设计方案a) 项目背景和需求分析b) 系统架构设计c) 硬件设计与验证d) 项目总结和经验总结五、结论本手册通过对嵌入式系统硬件设计技术的系统梳理和深入讲解,希望读者能够全面了解并掌握这一领域的核心知识和实践技巧。

嵌入式系统的硬件设计是嵌入式产品开发中至关重要的一环,只有掌握了正确的设计技术和方法,才能保证产品的高性能、稳定性和可靠性。

希望本手册能为读者在嵌入式硬件设计领域提供有益的参考和指导。

注:所标记的小节符号只是为了文章结构的清晰,实际正文中不需要出现。

电子词典课程设计说明书

电子词典课程设计说明书
点击背单词,将今天要背的数量已背的数量和未完成的数量显示处理。
每日例句和推荐:
进入主界面,首先向服务器请求今日的数据,服务器端将数据库中最新的名言名句和最新推荐返回到客户端显示。
3.2
单词App数据库通过建立两个数据库,一个主要存储数据词库,另一个主要存储用户信息。用户的计划数据则是每个数据库都有存储,目的在于通过服务器端和客户端的双存储既起到备份作用,又可用于一份用户计划可跨设备及平台使用。
信息查询:点击我的信息查看我的信息,首先验证是否登录,若登录显示我的信息,否则提示先登录。
注销账户:点击查看我的信息,点击注 Nhomakorabea账户注销。
信息修改:点击查看我的信息,点击修改信息进入修改信息页,信息修改后点击确定提交修改。
2、单词管理
背单词:点击开始学习,读取计划表中制定的背单词计划,计划未制定需要先制定计划,将每日计划读取的单词存储到一个临时表中,然后再读取单词,背诵一个单词后修改其状态,以记录该单词已背。
2.2
本系统开发平台:Java + MySql+HTML5
本系统集成开发环境:Eclipse+SDK+Tomact7.0
本系统运行环境:windows7+android
总体设计
3.1
1、用户管理
登录:根据用户输入的用户名和密码传送到网络数据库进行验证,验证成功进入主页。
注册:用户点击注册进入注册页面输入用户名、密码、邮箱、学历点击注册首先在前台验证两次密码是否相同和邮箱的格式是否正确,都正确后传入服务器端验证输入的用户名是否被使用,没有被使用写入数据库返回提示注册成功,回到登录页面,否则显示用户名已被使用或注册失败。
4.8
关于angularjs提交请求到Java Servlet服务器程序的后台逻辑的相应处理

武汉理工大学《嵌入式系统设计》课程设计说明书

武汉理工大学《嵌入式系统设计》课程设计说明书
3
武汉理工大学《嵌入式系统设计》课程设计说明书
然后调用 ioctl 函数即可完成。
开始 在虚拟机中找到LED的驱动文件
根据需求对驱动程序进行修改 编译内核镜像并烧写至实验箱
用终端启动zImage
编写、编译并下载测试应用程序 测试LED驱动程序是否满足要求
是 否
结束
LED 驱动程序流程图
LED 驱动程序代码如下所示: #define DEVICE_NAME "cled" static void __iomem *io_base; static long cpldleds_ioctl(struct file *filp, unsigned int cmd, unsigned int arg) { switch(cmd) { case 0: writeb(arg, io_base); return 0; default: return -EINVAL; } } static struct file_operations dev_fops = { .owner = THIS_MODULE, .unlocked_ioctl = cpldleds_ioctl,
1
武汉理工大学《嵌入式系统设计》课程设计说明书
2、 系统总体分析
2.1 设计需要的软硬件资源
要完成本次嵌入式系统课程设计, 需要用到的硬件有 Cortex-A8 嵌入式实验箱一个, SD 卡一张,PC 电脑一台。需要用到的软件有 PC 操作系统,BootLoader 程序,Linux 内 核,tftp 服务器,Fedora10 系统环境,U-boot 镜像,超级终端。
应用程序
LED
蜂鸣器
矩阵LED
数码管
LED
蜂鸣器

C语言课程设计——电子英汉词典

C语言课程设计——电子英汉词典

课程设计报告课程名称 C语言课程设计课题名称电子英汉词典专业纺织服装学院班级纺工1203学号姓名指导教师田媛2014年 01 月06 日湖南工程学院课程设计任务书课程名称 C语言课程设计课题电子英汉词典专业班级纺工工程学生姓名学号指导老师田媛审批任务书下达日期 2013 年 12 月 26 日任务完成日期2014年 01 月 06 日一、设计内容与设计要求1.设计内容:课题一:电子英汉词典。

具体内容见附录。

2.设计要求:1)设计正确,方案合理。

2)界面友好,使用方便。

3)程序精炼,结构清晰。

4)上机演示。

3.设计报告要求:课程设计报告格式如下:1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。

2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释),课程设计报告需5000字左右(不含附件)。

3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。

二、进度安排上课时间另外安排上课时间另外安排。

附录:设计课题三:电子英汉词典一、问题描述:该设计实现简单电子英汉词典的功能,具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。

二、功能描述:1、本设计采用结构体数组,每个数据的结构应当包括:单词的英文拼写,单词的中文释义。

2、系统功能:a.词条录入:即添加单词记录。

b.信息显示:将所有的单词按字母顺序显示。

c.词条修改:对已经输入的单词信息进行修改。

d.词条删除:删除某个单词记录。

e.单词查询: 输入单词英文拼写,输出该单词的中文释义。

f.信息保存:将单词信息保存到文件。

g.退出系统3、系统使用说明:执行一个具体的功能之后,程序将重新显示功能菜单。

系统的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。

C语言电子词典课程设计

C语言电子词典课程设计

C语言电子词典课程设计一、课程目标知识目标:1. 理解C语言中结构体、数组、字符串等基本概念及其应用;2. 学会使用C语言实现基本的查找、插入、删除等数据操作;3. 掌握C语言中文件读写功能,实现对电子词典数据的存储和读取。

技能目标:1. 能够运用结构体创建电子词典的数据结构,并实现单词的录入、查询、修改和删除等功能;2. 学会使用二分查找算法优化电子词典的查询速度,提高程序运行效率;3. 能够独立编写C语言程序,完成一个具有基本功能的电子词典项目。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们探索计算机科学领域的热情;2. 培养学生的团队协作意识,学会与他人共同解决问题;3. 培养学生严谨、细心的编程习惯,提高他们面对问题的分析能力和解决能力。

本课程旨在帮助学生在掌握C语言基础知识的基础上,学会运用编程解决实际问题。

结合课程性质、学生特点和教学要求,将课程目标分解为具体的学习成果,以便于后续的教学设计和评估。

在教学过程中,注重培养学生的实际操作能力,提高他们运用C语言解决实际问题的综合素质。

二、教学内容1. C语言基础知识回顾:结构体、数组、字符串、指针等基本概念及其应用。

相关教材章节:第一章至第四章2. 算法介绍:二分查找算法原理及其在电子词典查询中的应用。

相关教材章节:第七章3. 文件读写操作:C语言文件操作函数,实现对电子词典数据的存储和读取。

相关教材章节:第九章4. 电子词典功能实现:- 单词录入:设计录入界面,实现单词信息的输入和保存;- 单词查询:实现按单词查找,展示单词释义;- 单词修改:实现对已录入单词的修改功能;- 单词删除:实现对已录入单词的删除功能。

相关教材章节:第五章、第六章、第七章5. 项目实践:分组进行电子词典项目实践,完成一个具有基本功能的电子词典程序。

教学内容安排和进度:第一周:C语言基础知识回顾,学习结构体、数组、字符串等;第二周:学习文件读写操作,理解二分查找算法;第三周:电子词典功能实现(单词录入、查询、修改、删除);第四周:项目实践,分组完成电子词典项目,并进行演示和评价。

电子英汉词典课程设计

电子英汉词典课程设计

课程设计报告2020~2021学年第一学期课程可视化程序设计课程设计题目电子英汉词典院(系): 计算机学院(软件学院)姓名学号专业班级2019级计科2班指导教师2020年 12 月 31 日目录第一章绪论 (1)1.1 课题背景及意义 (1)1.2 开发环境及技术 (2)第二章概要设计 (2)2.1页面设计 (2)2.1.1 系统首页设计 (2)2.1.2 注册界面设计 (3)2.2 数据库设计 (4)2.2.1 数据库概念结构设计 (4)2 2.2数据库逻辑结构设计 (6)2.2.3 数据库物理结构设计 (7)第三章功能详细设计与实现 (8)3.1实现的全部功能表 (9)3.2功能1 (10)3.3功能2 (11)3.4功能3 (12)3.5功能4 (13)3.6功能5 (14)3.7功能6 (15)3.8功能7 (16)第四章检测及评价 (17)第五章结语 (23)第一章绪论当今时代是信息化时代,而信息的数字化也越来越被人们所重视,所以,数字化技术的重要性也逐渐体现了出来,主要体现在以下几个方面: 数字化是数字计算机的基础,数字化是软件技术的基础,是智能技术的基础,数字化是信息社会的技术基础,数字化是信息社会的经济基础。

词典作为一种为大众服务的工具书,已经渐渐退居二线了,进而出现了另一种查找方式更加简便,更加精确,词汇量更加丰富而且随身携带更加方便的工具,那就是电子英汉词典,应该说这是一个新旧交替的过程,电子英汉词典取代传统词典只是时间的问题。

所以说电子词典的发展前景是明朗的,电子英汉词典生产厂家也如同雨后春笋般崛起了。

电子英汉词典是一种将传统的印刷词典转成数码方式、进行快速查询的数字学习工具。

电子英汉词典以轻便易携、查询快捷、功能丰富等特点,成为21世纪学生学习生活、社会人士移动办公的掌上利器。

它不仅可实现英译汉、汉译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形成自己的词库。

嵌入式课设说明书

嵌入式课设说明书

引言嵌入式技术是将计算机作为一个信息处理部件,嵌入到应用系统中的一种技术,也就是说,它将软件固化集成到硬件系统中,将硬件系统与软件系统一体化。

嵌入式具有软件代码小、高度自动化和响应速度快等特点,因而进入21世纪后其应用越来越广泛,例如,各种家用电器如电冰箱、自动洗衣机、数字点电视机、数码相机等广泛应用这种技术。

在本设计中硬件平台采用ARM9些列,属于中高端性能的芯片。

ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。

而这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。

同时采用型号为WXCAT35-TG3的LCD液晶显示器,该液晶显示器的尺寸为 3.5寸,分辨率为320×240,可以实现触摸屏的相应时间小于10ms。

本设计的最终目的是在LCD液晶显示器上动态显示多张图片,涉及到了从LCD 驱动层到应用层的实现,关键技术为LCD驱动实现、图片解码、LCD应用程序实现。

嵌入式技术是将计算机作为一个信息处理部件,嵌入到应用系统中的一种技术,也就是说,它将软件固化集成到硬件系统中,将硬件系统与软件系统一体化。

嵌入式具有软件代码小、高度自动化和响应速度快等特点,因而进入21世纪后其应用越来越广泛,例如,各种家用电器如电冰箱、自动洗衣机、数字点电视机、数码相机等广泛应用这种技术。

此设计是为了在ARM9硬件平台上,通过Linux系统实现LCD液晶显示器的驱动,并通过LCD 应用程序实现图片在该LCD液晶显示器上进行动态显示。

该LCD驱动只是在Linux-2.6.38.8内核的基础上实现,对于不同版本的内核,可能需要进行相应的修改变动;同时设置的LCD的时序要根据不同的LCD显示器说明书进行设置。

对于在Linux内核中实现LCD液晶显示器的驱动,内核中本身有相应的实现,可以进行参考实现,但是本项目实现中,不采用内核中的定义实现方法,而是采用独立对相关变量进行定义和赋值,最终向Linux内核的上层进行提交fb_info结构体实现对LCD 硬件的向上层注册。

c语言课程设计-电子英汉词典(含源码)

c语言课程设计-电子英汉词典(含源码)

c语言课程设计-电子英汉词典(含源码)————————————————————————————————作者:————————————————————————————————日期:C语言课程设计软件学院指导老师:学号:姓名:一、实验题目及要求题目:电子英汉词典设计要求:1.用图形用户界面实现2.能够编辑词典库中的信息3.能够实现英译汉,汉译英。

(要考虑一词多义)二、实验过程主要思想: 1 建立词典库(相关文件的处理)2 设计词典图形用户界面3 查找单词及词典的重复使用(实现一词多义)主要过程1.词典库的建立:文件的建立,写入和调出参考老师给的FILE.C 文件FILE.C大致内容{FILE *fp/*建立文件指针*/fp=fopen("d:\list.txt","wb+");/*在指定路径建立文本文件*/for(i=0;i<SIZE;i++) /*将结构体中的内容if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) 写进指定文件中并进{ printf("file write error!"); 行判断是否写入*/ exit(0);}fread(&stu_temp,sizeof(struct student),1,fp); /*将文件中的指定内容调出*/ }单词库存储在指定路径的指定文件中方便后文的查询和调出单词库的建立利用结构体可以包含一词多义,并将汉译英和英译汉的词典库分开以便实现英汉互译(在中文dos环境下运行)图例:(未在中文dos环境下运行)2. 设计词典图形用户界面参考文件Graph.c 进行图形驱动void init(){int gdriver, gmode, i, j;gdriver = DETECT;registerbgidriver(EGA VGA_driver);initgraph(&gdriver, &gmode, "");}图例(未设置鼠标前)上网查找相关资料调用鼠标鼠标绘制函数设置鼠标指针位置函数设置函数得到鼠标左右键点击的不同状态(设置鼠标后运行结果全屏无法截图)在图形界面下设计用户界面并使用该鼠标设置相关区域的鼠标键点击后得到不同的结果,进入英译汉或汉译英界面3. 查找单词及词典的重复使用(考虑一词多义)利用文件指针和函数fseek ,fread 对结构体内的单词名称查找和该相关释义的调用同时考虑英汉互译设置查找不到单词的页面和利用while语句使实现词典是否需要重复使用功能图例:三、实验结果及心得根据题目描述基本达到题目要求。

c语言课程设计电子词典

c语言课程设计电子词典

c语言课程设计电子词典随着科技的不断进步和发展,计算机技术也在不断的发展和完善。

计算机编程语言也应运而生,其中c语言成为了最为流行和广泛应用的一种编程语言。

为了更好地学习和掌握c语言,我们需要不断地进行练习和实践。

而课程设计电子词典就是一个非常好的实践项目。

本文将对c语言课程设计电子词典进行详细的介绍和分析。

一、电子词典简介电子词典是一种类似于纸质词典的电子设备。

电子词典将词典内容数字化存储在内部芯片中,通过一个屏幕显示出来。

电子词典拥有很多优点,比如存储空间更大、功能更强大、可搜索性更高等等。

今天,电子词典是很多人学习和工作必不可少的工具之一。

二、c语言课程设计电子词典的设计思路c语言课程设计电子词典是一种将词典内容和c程序功能相结合的设计项目。

他的设计思路如下:1.定义词典内容结构体在程序中需要定义一个结构体,用来存储词典内容。

结构体的成员包括单词、单词的释义、音标等。

typedef struct word{ char name[30]; // 单词名称char symbol[30]; // 单词音标charmean[400]; // 单词含义}word;2.构建词典数据将词典中的单词、释义、音标等内容保存到结构体中。

并将多个结构体数据包含在一个数组中。

word dictionary[] = { { "apple", "[ˈæpl]", "a round fruit with smooth red or yellow skin and firm white flesh" }, { "banana", "[bəˈnɑː.nə]", "a long curved fruit with a yellow skin" }, { "cat", "[kæt]", "a small animal with fur, four legs, a tail, and claws" }, { "dog", "[dɒɡ]", "a common animal with four legs, fur, and a tail" }, { "elephant", "[ˈel.ɪ.fənt]", "a very large grey animal with a long nose called a trunk" }};3.实现单词查询功能在程序中,我们需要实现一个单词查询的功能。

嵌入式课程设计--基于S3C44BOX电子词典软件开发

嵌入式课程设计--基于S3C44BOX电子词典软件开发

《嵌入式系统》课程设计说明书基于S3C44BOX电子词典软件开发系、部:计算机与信息科学系组成员:指导教师:职称专业:计算机科学与技术班级:计本0801班完成时间:2011年12月12日摘要随着电子系技术的发展,以ARM微处理器为核心的电子应用系统已经进入人们日常生产生活的各个方面,ARM以其出色的性能优势赢得了广大电子产品开发者的认可。

本文作者根据自己的课程学习,掌握了 ARM系统微处理器相关的基础知识和基本技术,而这些技术需要实地的实验设计来帮助巩固和深入。

本案例属于日常生活当中和学习研究中比较常见和熟悉的应用,不但有比较强的综合性,而且有很高的趣味性。

在我们系统学习了嵌入式系统开发与应用实践课程之后,结合对ARM微处理器的基础知识和基本技术的掌握,实现了简单电子词典设计。

本设计主要解决了基于S3C44B0X 通过I/O控制发光二极管的电子词典。

关键词:ARM微处理器;词典设计;S3C44B0XABSTRACTAlong with the electronic technology development, with ARM microprocessor as the core of the electronic application system has entered people's daily production in all aspects of life, ARM with its excellent performance advantages to win the majority of electronic product developers recognized. In this paper the authors according to their course of study, master of the ARM system related to the basic knowledge and technology, and these technologies require field experiments designed to help consolidate and development. This case belongs to the daily life and study in the more common and familiar with the application, not only have strong comprehensive, but also have high interest.In our system, learning embedded system development and application practice of course, according to the ARM microprocessor basic knowledge and basic technical mastery, the realization of a simple directory design. The design of the main solution based on S3C44B0X through I / O control led flashing.Key words: ARM microprocessor; directory; S3C44B0X目录1 前言 (1)1.1课题研究背景 (1)1.2课程研究目的和意义 (2)1.3 S3C44BOX处理器介绍 (3)2 基于S3C44BOX电子词典开发概述 (4)2.1电子词典系统定义与需求分析 (4)2.2电子词典方案设计 (7)2.2.1硬件设计方案 (7)2.2.2软件设计方案 (7)3 基于S3C4BOX电子词典的硬件开发 (8)3.1基于S3C4BOX的最小系统软件 (8)3.2显示模块 (9)3.3触摸屏及键盘模块 (10)4 基于S3C44BOX电子词典软件开发环境的建立 (10)4.1开发环境 (10)5 基于S3C44BOX电子词典的软件开发 (11)5.1电子词典各模块测试软件设计 (11)5.2电子词典应用软件开发 (13)5.3无操作系统电子词典硬件驱动程序设计 (15)5.3.1Uart驱动程序 (16)5.3.2LCD驱动程序 (16)5.3.3键盘驱动程序 (17)5.3.4触摸屏驱动程序 (17)5.4电子词典系统应用软件个功能模块设计实现 (18)5.4.1键盘接口功能软件 (18)5.4.2触摸屏接口功能软件 (18)5.4.3LCD显示接口功能软件 (18)5.4.4输入键值识别功能软件 (18)5.4.5英译汉功能软件 (21)5.4.6已查单词记忆功能软件 (23)5.4.7汉语词库编写和英语词库编写 (23)6 总结 (26)7 参考文献 (27)1 前言1.1课题研究背景随着3C融合进程和我国传统产业结构升级的加速,人们对设备越来越高的应用需要已经无法满足当前和未来高性能的应用与发展需求。

嵌入式系统课程设计 (2)

嵌入式系统课程设计 (2)

嵌入式系统课程设计一、题目背景嵌入式系统是指硬件与软件均集成在一个小型的系统中,通常应用于智能家居、智能交通、医疗等领域。

因此,对于计算机专业的学生来说,掌握嵌入式系统的设计和开发至关重要。

二、题目要求本次课程设计要求学生设计一个嵌入式系统,要求如下:1.硬件平台:使用STM32F429开发板,至少包含3种不同类型的外设。

2.软件开发:使用Keil uVision 5进行软件开发,使用C语言进行编程。

3.功能要求:–实现基本的IO控制(包括LED、按键等)。

–实现串口通信功能,并通过串口与PC进行通信。

–实现至少一项比较复杂的功能,例如:PWM控制、蓝牙通信、LCD屏幕显示等。

三、设计思路1.硬件平台选择:使用STM32F429作为硬件平台的主要考虑是其强大的处理能力和丰富的外设资源,能够满足本次课程设计的功能要求。

2.软件开发环境选择:使用Keil uVision 5进行软件开发的主要原因是其易于上手和调试的特点,后期维护也相对简单。

3.功能设计:–基本IO控制:通过采用STM32F429板载的LED、按键等外设,实现基本IO控制功能。

其中,LED闪烁频率可以通过键盘调整,以达到一定的交互效果。

–串口通信功能:使用STM32F429板载的串口与电脑进行通信,将板载的LED闪烁频率、按键状态等信息发送到电脑上,以实现与电脑的交互。

–PWM控制功能:使用STM32F429板载的定时器,连接一个舵机,使用PWM方式控制舵机的角度。

通过拨码开关更改PWM波的占空比,实现舵机角度的调整。

四、程序流程程序初始化:在主函数开始时,首先进行一些必要的初始化,例如:•调用SystemInit()对系统进行初始化。

•调用LED_Init()对LED灯进行初始化。

•调用KEY_Init()对按键进行初始化。

•调用USART1_Init()对串口进行初始化。

•调用PWM_Init()对定时器进行初始化。

主流程:1.通过按键更改LED灯闪烁频率。

电子词典设计方案

电子词典设计方案
S3C44B0X LCD 控制器概述 LCD 控制器在嵌入式系统中的功能概述 一套完整的液晶显示系统主要由三部分组成:液晶显示屏、液晶显示 驱动器和液晶显示控制器。 液晶显示控制器具有两大作用:其一,控制器为液晶显示提供时序信 号和显示数据;其二,在计算机系统中,液晶显示控制器是一种专业 IC 芯片,专用于计算机与液晶显示系统的接口,控制器接受计算机 的直接操作,并可以脱机独立控制液晶显示驱动系统,从而解除了计 算机在显示上的繁琐工作。
硬件设计方案 根据第二章介绍的 ARM 芯片的选择原则,此处选择集成了丰富的外围 功能模块,便于低成本设计嵌入式应用系统的 S3C44B0X 处理器作为 系统的主控制器。 利用其内置的 LCD 控制器实现 LCD 控制接口; 利用 IIC 总线控制器实现键盘控制接口; 利用 ADC 转换器实现触摸屏控制接口; 利用 UART 实现调试接口; 利用 GPIO 连接 LED 灯显示有关状态。 利用其内置的 LCD 控制器实现 LCD 控制接口; 利用 IIC 总线控制器实现键盘控制接口; 利用 ADC 转换器实现触摸屏控制接口; 利用 UART 实现调试接口; 利用 GPIO 连接 LED 灯显示有关状态。
色),对于不同尺寸的 LCD,具有不同数量的垂直和水平像素,数据 接口的数据宽度,接口时序及刷新率,而 LCD 控制器可以进行编程控 制相应的寄存器值,以适应不同的 LCD 显示板
S3C44B0X LCD 控制器基本功能 S3C44B0X LCD 控制器的特性 支持彩色/灰度/单色的 LCD 板; 支持 3 种类型 LCD 板:4 位双扫描,4 位单扫描,以及 8 位单扫描的 显示类型; 支持多路虚拟显示屏(支持硬件的水平/垂直移动滚读); 系统存储器被用作显示存储器; 专用的 DMA 支持从系统存储器的视频缓冲中读取映象数据; 支持多种荧屏大小;

嵌入式课程设计电子词典硬件设计

嵌入式课程设计电子词典硬件设计

嵌入式课程设计电子词典硬件设计嵌入式课程设计是现代电子技术专业中非常重要的一个课程,其作用是帮助学生掌握嵌入式系统的设计与开发技术,从而能够开发出满足实际应用需求的高性能硬件设备。

在嵌入式课程设计中,电子词典硬件设计是一个既重要又有挑战性的任务,本文将着重介绍该任务的具体内容和实现过程。

一、电子词典硬件设计所涉及的主要内容电子词典硬件设计的主要任务就是设计出一款能够实现扫描、存储、查询等功能的小型化电子设备,以帮助用户快速准确地查询词语的意义、拼音、读音以及基本用法等相关信息。

具体而言,其设计涉及以下方面:1. 控制器模块:主要作用是完成电子词典的各项控制功能,包括键盘输入、液晶显示、声音播放等操作。

2. 存储器模块:主要作用是储存待查询的词库信息,以便在查询时能够快速地提供所需信息。

3. 人机交互模块:主要作用是提供用户与电子词典之间的交互接口,包括屏幕显示、声音输出、键盘输入等操作。

4. 供电模块:主要作用是为整个电子词典提供稳定可靠的电源,以保证其正常工作。

5. 其他模块:包括外壳设计、线路板设计、软件编写等多个方面,以保证电子词典具有完整、稳定的功能。

二、电子词典硬件设计的实现过程1. 原理图设计:在完成电子词典硬件设计之前,需要根据其功能需求绘制一套完整的原理图,以确定各个电路模块的布局、连接方式等详细参数。

2. PCB设计:根据原理图设计的电路连接方式,需要完成电路板的布局、走线等设计工作。

通过点击绘制工具和观察其3D效果,我们可以查看设计的钢板与其他元件的距离是否合适。

即可进入到样板板打样的阶段。

3. 程序编写:完成硬件设计之后,还需要编写相应的软件程序,以控制各个电路模块的工作,实现电子词典的各个功能。

4. 组装调试:完成原理图设计、PCB设计以及程序编写之后,还需要组装整个电子词典,并进行调试,以确保其所有功能正常可用。

5. 产品测试:在完成组装调试之后,还需要进行一些必要的测试和评估工作,以确保电子词典的性能和品质都能够满足所需的技术要求和市场需求。

英汉电子词典设计报告_设计_C语言_C语言程序设计

英汉电子词典设计报告_设计_C语言_C语言程序设计

英汉电子词典设计报告_设计_C语言_C语言程序设计设计报告英汉电子词典一、设计目标:设计一个英汉电子词典,实现用户输入英文单词能够得到对应的中文翻译,并提供简单的用户界面。

二、设计思路:1.定义词典数据库结构:使用结构体来表示一个词条,包括英文单词和中文翻译两个成员变量。

2.读取词典文件:从外部文件中读取词典数据,并将数据存储到内存中的数组中。

3.用户交互界面设计:使用基本的文本界面,提示用户输入英文单词。

4.查询单词:根据用户输入的英文单词,在内存中的数组中查找对应的词条,并将中文翻译打印出来。

5.处理用户输入:对用户输入的英文单词进行处理,如将大写字母转换为小写字母,去除多余的空格等。

三、程序设计:1.定义词典结构体:```ctypedef structchar word[100];char translation[100];} DictionaryEntry;```2.读取词典文件:```cvoid readDictionary(DictionaryEntry* dictionary, int* size) //打开词典文件FILE* file = fopen("dictionary.txt", "r");if (file == NULL)printf("Unable to open dictionary file\n");return;}//逐行读取词典数据char line[256];int i = 0;while (fgets(line, sizeof(line), file))sscanf(line, "%s %s", dictionary[i].word,dictionary[i].translation);i++;}//设置词典大小*size = i;//关闭文件fclose(file);```3.用户交互界面设计:```cvoid printUserInterfacprintf("Please enter an English word: ");```4.查询单词:```cvoid searchWord(DictionaryEntry* dictionary, int size, char* word)for (int i = 0; i < size; i++)if (strcmp(dictionary[i].word, word) == 0)printf("%s: %s\n", dictionary[i].word,dictionary[i].translation);return;}}printf("Word not found\n");```5.处理用户输入:```cvoid processInput(char* input)//去除输入字符串中的多余空格int len = strlen(input);int j = 0;for (int i = 0; i < len; i++)if (input[i] != ' ')input[j] = tolower(input[i]);j++;}}input[j] = '\0';```四、总结:通过以上设计思路和程序设计,实现了一个简单的英汉电子词典。

嵌入式课程设计电子词典硬件设计

嵌入式课程设计电子词典硬件设计

嵌入式课程设计电子词典硬件设计嵌入式系统是现代电子技术发展的重要分支之一,它应用于各个领域,如航空航天、军事、医疗、工业、家庭等。

随着人们对信息化的关注和需求增加,软件和硬件系统的嵌入式技术也越来越成熟和普及。

电子词典是一种便携式的电子产品,它的主要功能是存储和查询语言和文化知识,同时具备语音提示和翻译、笔画输入等多种功能特点。

电子词典在课堂教学、商务交流、旅游出行等方面都有着广泛的应用场景。

为了满足用户的需求和提高电子词典的使用效率,本文将介绍一种基于嵌入式系统的电子词典硬件设计方案。

1.方案介绍本方案采用单片机、LCD显示屏、扬声器、按键、存储卡等硬件组件,通过软件实现词典功能的设计。

电子词典具备中英文互译、生词选读、笔画输入和语音播放等多种功能。

2.硬件设计1)单片机本方案采用STM32F103ZE系列的单片机,它具备低功耗、高性能和强大的计算能力,可以支持多种接口和功能。

单片机主要负责处理和控制硬件组件的运行,如LCD显示、按键输入、存储卡读取等。

2)LCD显示屏本方案采用3.5英寸LCD显示屏,分辨率为320*240,具备较高的清晰度和亮度,显示速度也很快。

显示屏可以显示中英文字符和图形,同时还支持触摸屏输入和反光功能。

3)扬声器本方案采用比较小的扬声器,主要负责音频播放和提示功能。

扬声器可以播放中英文发音和语音提示,同时还支持音量调节和多种音效。

4)按键本方案采用5个按键,主要负责电子词典的输入和控制功能。

按键分别为菜单键、返回键、上翻键、下翻键和确认键,在电子词典的操作中起到了关键作用。

5)存储卡本方案采用TF存储卡,可以存放大量的词库和语音信息,具有较高的存储容量和数据传输速度。

存储卡可以实现电子词典的离线使用和在线更新,满足不同用户的需求。

3.软件设计本方案采用C语言编程,结合Keil嵌入式开发环境,充分利用STM32F103ZE单片机的资源和功能,完成了电子词典的软件设计和编程。

嵌入式答题器课程设计

嵌入式答题器课程设计

嵌入式答题器课程设计一、课程目标知识目标:1. 让学生理解嵌入式系统的基本概念,掌握答题器的工作原理;2. 学会使用编程语言进行嵌入式系统编程,实现对答题器功能的设计与实现;3. 了解答题器在现实生活中的应用,认识到嵌入式技术的实用价值。

技能目标:1. 培养学生运用所学知识,动手设计和制作简单嵌入式系统的能力;2. 提高学生的问题分析和解决能力,通过编程实现答题器功能;3. 培养学生的团队协作能力和沟通能力,共同完成答题器项目。

情感态度价值观目标:1. 培养学生对嵌入式技术的兴趣和爱好,激发学生的学习热情;2. 培养学生敢于尝试、勇于创新的探索精神,增强自信心;3. 培养学生的诚信意识和责任感,遵守项目纪律,尊重他人成果。

课程性质:本课程为实践性较强的信息技术课程,结合理论知识与实践操作,培养学生动手能力和创新意识。

学生特点:六年级学生具备一定的信息技术基础,好奇心强,喜欢动手操作,具备一定的团队合作能力。

教学要求:教师需结合学生特点,采用任务驱动法,引导学生自主探究和合作学习,注重培养学生的实践能力和创新能力。

在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。

通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高综合素养。

二、教学内容1. 嵌入式系统基本概念:介绍嵌入式系统的定义、特点及应用领域,结合课本第二章内容,让学生对嵌入式系统有整体的认识。

2. 答题器工作原理:分析答题器的基本结构、功能模块及其工作原理,参考课本第四章相关内容,为学生提供实际案例。

3. 嵌入式编程语言:学习C语言基础知识,掌握Keil等开发工具的使用,结合课本第五章,让学生学会编写简单的嵌入式程序。

4. 答题器功能设计与实现:引导学生运用所学知识,分组讨论并设计答题器功能,如题目显示、答案输入、结果判断等,参考课本第六章进行编程实现。

5. 嵌入式系统实践操作:组织学生进行答题器硬件组装和软件编程,实际操作过程中发现问题、解决问题,提高动手能力。

嵌入式课程设计 - 电子词典硬件设计.

嵌入式课程设计 - 电子词典硬件设计.

上海电力学院嵌入式系统课程设计报告题目:电子词典的设计姓名:学号:院系:专业年级:同组成员:年月日一、实验内容及要求在LCD屏幕左侧绘制出单词输入框和释义显示框以及一个搜索键,右侧绘制4*4键盘按钮,模拟出简易电子词典的功能,按钮操作用触摸屏或键盘实现均可。

实现功能:(1)LCD屏幕上显示4*4键盘,显示单词及其翻译、例句。

(2)一个键可完成2个英文字母的输入,如左上角第一个键可实现输入a,b两个字母,第一次按下时为输入a,如果需输入b,只需连续快速按键两次即可。

(3)在输入完单词后,点击搜索键,即可在释义显示框中显示该单词的词性、中文解释、示例词组和句子等。

(4)当发现输入的单词在库中不存在时,可实现将该单词添加入库的操作。

二、设计思路(1)通过LCD显示模块画出电子词典操作界面。

(2)对应界面中各键的位置设置键盘对应键值。

(3)设定功能键,实现以下3个功能:①退格键:删除最后一位字母;②搜索∕保存键:对输入框的单词进行判断,若单词存在于词库中,则显示单词词性、词义、例句;若单词不存在则自动进行保存;③转换键:按下后,字母键输出对应的第二个字母。

(4)按键后赋值并显示。

三、软件构架开始LCD模块键盘模块结束四、模块分析(1)键盘模块流程图:源代码:/********************************************************************************************** File : keyboard.c* Author: embest* Desc : keyboard source code* History:*********************************************************************************************//*--- include files ---*/ 开始 键盘初始化 键盘是否按下 Y 读取键值 是否是功能键 Y N 执行功能赋值 显示 结束 N#include "44b.h"#include "44blib.h"#include "def.h"#include "keyboard.h"#include "lcd.h"#include "dict.h"#ifndef KEY_INT#define KEY_INT#endif#ifndef BUT_INT#define BUT_INT#endif/*--- global variables ---*/int input_char,n=0;char word[20];int wordIndex=0;int x = 15;int num=0;int counter=0;/* keyboard control address */volatile UCHAR *keyboard_base = (UCHAR *)0x06000000;/*--- function declare ---*/void init_keyboard();void close_keyboard();void KeyboardInt(void);// __attribute__ ((interrupt ("IRQ")));void Eint4567Isr(void);// __attribute__ ((interrupt ("IRQ")));/*--- function code ---*//****************************************************************************** **************** name: Test_Keyboard* func: test keyboard* para: none* ret: none* modify:* comment:******************************************************************************* *************/void Test_Keyboard(){Uart_Printf("\n Keyboard Test Example\n");Uart_Printf("\n Please press one key on keyboard and look at LED ...\n");// init keyboardinit_keyboard();while(1);// close keyboard// close_keyboard();}/****************************************************************************** **************** name: init_keyboard* func: init keyboard interrupt* para: none* ret: none* modify:* comment:******************************************************************************* *************/extern void isrEINT1(void);extern void isrEint4567(void);void init_keyboard(){/* enable interrupt */rINTMOD = 0x0;rINTCON = 0x1;/* set EINT1 interrupt handler */rINTMSK =~(BIT_GLOBAL|BIT_EINT1|BIT_EINT4567);pISR_EINT1 = (int)isrEINT1;pISR_EINT4567 = (int)isrEint4567;/* PORT G */rPCONG = 0xffff; // EINT7~0rPUPG = 0x0; // pull up enablerEXTINT = rEXTINT|0x20; // EINT1 falling edge moderI_ISPC = BIT_EINT1|BIT_EINT4567; // clear pending bitrEXTINTPND = 0xf; // clear EXTINTPND reg}/****************************************************************************** **************** name: close_keyboard* func: close keyboard interrupt* para: none* ret: none* modify:* comment:******************************************************************************* *************/void close_keyboard(){pISR_EINT1 = NULL;pISR_EINT4567 = NULL;/* Mask interrupt */rINTMSK = rINTMSK | BIT_EINT1 | BIT_EINT4567;}/****************************************************************************** **************** name: KeyboardInt* func: keyboard interrupt handler function* para: none* ret: none* modify:* comment:******************************************************************************* *************/void KeyboardInt(void){int nTemp,i,j,k,m=0;char bbyte;rI_ISPC = BIT_EINT1; // clear pending bitchar pbyte[10];nTemp = key_read();if(nTemp > -1){// Lcd_Draw_HLine(10, 310, 80, WHITE, 50);input_char = nTemp;Lcd_DspAscII8x16(15,45,WHITE,word);switch(input_char){case 0:num=1;break;case 1:num=2;break;case 2:num=3;break;case 3:num=4;break;case 4:num=5;break;case 5:num=6;break;case 6:num=7;break;case 7:num=8;break;case 8:num=9;break;case 9:counter=1;break;case 10:counter=2;break;case 11:counter=3;break;case 12:m=1;Lcd_Draw_HLine(15+n-10, 15+n, 45, WHITE, 16); n-=10;word[wordIndex]='\0';wordIndex--;break;/*if(n==0){word[20]=0;wordIndex=0;Lcd_Draw_HLine(10, 310,85, WHITE, 160);}break;*/case 13:word[wordIndex]='\0';wordIndex=0;for(i=0;i<20;i++){if(strcmp(word,vocab[i].c)==0){j=0;k=i;break;}elsej=1;}if(j==0){//#ifdef Eng_vLcd_DspAscII8x16(15,40,BLUE,vocab[k].c);Lcd_DspAscII8x16(15,60,BLUE,vocab[k].d);Lcd_DspAscII8x16(15,80,BLUE,vocab[k].f);//#elseLcd_DspHz16(15,100,BLUE,vocab[k].e);//#endif}else{Lcd_DspHz16(15,120,BLUE,"未找到相应的单词");DelayMs(600);Lcd_DspHz16(15,120,WHITE,"未找到相应的单词"); }break;case 14:word[wordIndex]='\0';wordIndex=0;for(i=0;i<20;i++){if(strcmp(word,vocab[i].c)==0){j=0;k=i;break;}elsej=1;}if(j==0){//#ifdef Eng_vLcd_DspAscII8x16(15,40,BLUE,vocab[k].c);Lcd_DspAscII8x16(15,60,BLUE,vocab[k].d);Lcd_DspAscII8x16(15,80,BLUE,vocab[k].f);//#elseLcd_DspHz16(15,100,BLUE,vocab[k].e);//#endif}else{if(20>x>0){for(i = 0; i < 20; i++)vocab[x].c[i]=word[i];word[i]='\0';Lcd_DspAscII8x16(15,40,BLUE,vocab[x].c);x++;}elsex=15;//Lcd_DspAscII8x16(15,45,BLUE,word);for(i = 0; i < 20; i++)word[i]='\0';}break;case 15://Lcd_Draw_Box(10,40,310,80,GREEN);break;}if(num!=0&&counter!=0){switch(3*(num-1)+counter-1){case 0:bbyte='a';break;case 1:bbyte='b';break;case 2:bbyte='c';break;case 3:bbyte='d';break;case 4:bbyte='e';break;case 5:bbyte='f';break;case 6:bbyte='g';break;case 7:bbyte='h';break;case 8:bbyte='i';break;case 9:bbyte='j';break;case 10:bbyte='k';break;case 11:bbyte='l';break;case 12:bbyte='m';break;case 13:bbyte='n';break;case 14:bbyte='o';break;case 15:bbyte='p';break;case 16:bbyte='q';break;case 17:bbyte='r';break;case 18:bbyte='s';break;case 19:bbyte='t';break;case 20:bbyte='u';break;case 21:bbyte='v';break;case 22:bbyte='w';break;case 23:bbyte='x';break;case 24:bbyte='y';break;case 25:bbyte='z';break;case 26:bbyte='y';break;}num=0;counter=0;if(m==0){word[wordIndex]=bbyte; wordIndex++;//n+=10;}Lcd_DspAscII8x16(15,210,BLUE,word);// Uart_Printf("Key is:%x \r",input_char);}}/****************************************************************************** **************** name: key_read* func: read key value* para: none* ret: key value, -1 -- error* modify:* comment:******************************************************************************* *************/inline int key_read(){int value;char temp;/* read line 1 */temp = *(keyboard_base+0xfd);/* not 0xF mean key down */if(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK){if( (temp&0x1) == 0 )value = 3;else if( (temp&0x2) == 0 )value = 2;else if( (temp&0x4) == 0 )value = 1;else if( (temp&0x8) == 0 )value = 0;while(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK) // releasetemp = *(keyboard_base+0xfd);return value;}/* read line 2 */temp = *(keyboard_base+0xfb);/* not 0xF mean key down */if(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK){if( (temp&0x1) == 0 )value = 7;else if( (temp&0x2) == 0 )value = 6;else if( (temp&0x4) == 0 )value = 5;else if( (temp&0x8) == 0 )value = 4;while(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK) // release temp = *(keyboard_base+0xfb);return value;}/* read line 3 */temp = *(keyboard_base+0xf7);/* not 0xF mean key down */if(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK){if( (temp&0x1) == 0 )value = 0xb;else if( (temp&0x2) == 0 )value = 0xa;else if( (temp&0x4) == 0 )value = 9;else if( (temp&0x8) == 0 )value = 8;while(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK) // release temp = *(keyboard_base+0xf7);return value;}/* read line 4 */temp = *(keyboard_base+0xef);/* not 0xF mean key down */if(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK){if( (temp&0x1) == 0 )value = 0xf;else if( (temp&0x2) == 0 )value = 0xe;else if( (temp&0x4) == 0 )value = 0xd;else if( (temp&0x8) == 0 )value = 0xc;while(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK) // releasetemp = *(keyboard_base+0xef);return value;}return -1;}/****************************************************************************** **************** name: Eint4567Isr* func:* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Eint4567Isr(void){unsigned char which_int;Uart_Printf("\n SB2 or SB3 had pressed and light LED.");which_int=rEXTINTPND;rEXTINTPND=0xf; //clear EXTINTPND reg.rI_ISPC=BIT_EINT4567; //clear pending_bitif(which_int == 4) // SB2{Led_Display(0x0);Led_Display(0x1);}else if(which_int == 8) // SB3{Led_Display(0x0);Led_Display(0x2);}}(2)LCD模块流程图:开始LCD初始化显示开机画面显示操作界面结束源代码:/****************************************************************************** **************** File:lcd.c* Author: embest* Desc: LCD control and display functions* History:******************************************************************************* **************//*--- include files ---*/#include "lcd.h"//#include "bmp.h"#include "44b.h"/*--- global variables ---*/INT32U aLcdActiveBuffer[LCD_YSIZE][LCD_XSIZE/4];/*--- extern variables ---*/extern const INT8U aucTempBitmap[][76800];/*--- function code ---*//****************************************************************************** **************** name: Lcd_Init()* func: Initialize LCD Controller* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Init (void){rDITHMODE=0x12210;rDP1_2 =0xa5a5;rDP4_7 =0xba5da65;rDP3_5 =0xa5a5f;rDP2_3 =0xd6b;rDP5_7 =0xeb7b5ed;rDP3_4 =0x7dbe;rDP4_5 =0x7ebdf;rDP6_7 =0x7fdfbfe;// disable,8B_SNGL_SCAN,WDL Y=16clk,WLH=16clk,rLCDCON1=(0x0)|(2<<5)|(MV AL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<< 12);// LINEBLANK=10 (without any calculation)rLCDCON2=(LINEV AL)|(HOZV AL_COLOR<<10)|(10<<21);rLCDCON3=0;// 256-color, LCDBANK, LCDBASEUrLCDSADDR1= (0x3<<27) | ( ((unsigned int)aLcdActiveBuffer>>22)<<21 ) | M5D((unsigned int)aLcdActiveBuffer>>1);rLCDSADDR2= M5D((((unsigned int)aLcdActiveBuffer+(SCR_XSIZE*LCD_YSIZE))>>1)) | (MV AL<<21);rLCDSADDR3= (LCD_XSIZE/2) | ( ((SCR_XSIZE-LCD_XSIZE)/2)<<9 );//The following value has to be changed for better display.rREDLUT =0xfdb96420; // 1111 1101 1011 1001 0110 0100 0010 0000rGREENLUT=0xfdb96420; // 1111 1101 1011 1001 0110 0100 0010 0000rBLUELUT =0xfb40; // 1111 1011 0100 0000rLCDCON1=(0x1)|(2<<5)|(MV AL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<< 12);// rPDATE=rPDATE&0x0e;rPDATE=0xfe;Lcd_Clr();}/****************************************************************************** **************** name: Lcd_Clr()* func: clear LCD screen* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Clr(void){INT32U i;INT32U *pDisp = (INT32U*)aLcdActiveBuffer;for (i = 0; i < (SCR_XSIZE * SCR_YSIZE / 4); i++){*pDisp++ = ALLWHITE;}}/****************************************************************************** **************** name: LcdClrRect()* func: fill appointed area with appointed color* para: usLeft,usTop,usRight,usBottom -- area's rectangle acme coordinate* ucColor -- appointed color value* ret: none* modify:* comment: also as clear screen function******************************************************************************* **************/void LcdClrRect(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8U ucColor) {INT32U i, j;INT8U *pDisp = (INT8U*)aLcdActiveBuffer;for(i=usTop;i<=usBottom;i++){for(j=usLeft;j<=usRight;j++){LCD_PutPixel(j, i, ucColor);}}}#ifdef MON_LCD/****************************************************************************** **************** name: LcdClrRect()* func: fill appointed area with appointed color* para: usLeft,usTop,usRight,usBottom -- area's rectangle acme coordinate* ucColor -- appointed color value* ret: none* modify:* comment: also as clear screen function******************************************************************************* **************/void LcdClrRect(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8U ucColor) {INT16 i=0;INT16 k,l;INT16 m;INT32U ulColor = (ucColor << 28) | (ucColor << 24) | (ucColor << 20) | (ucColor << 16) |(ucColor << 12) | (ucColor << 8) | (ucColor << 4) | ucColor;if((usRight-usLeft)<=8){for(i=usTop;i<=usBottom;i++){for(m=usLeft;m<=usRight;m++){LCD_PutPixel(m, i, ucColor);}}return;}if((usLeft%8)==0)k=usLeft;else{k=(usLeft/8)*8+8;}if(( usRight%8)==0)l= usRight;else{l=( usRight/8)*8;}for(i=usTop;i<=usBottom;i++){for(m=usLeft;m<=(k-1);m++){LCD_PutPixel(m, i, ucColor);}for(m=k;m<l;m+=8){(*(INT32U*)(aLcdActiveBuffer + i * SCR_XSIZE / 2 + m / 2)) = ulColor;}for(m=l;m<=usRight;m++){LCD_PutPixel(m, i, ucColor);}}}#endif/****************************************************************************** **************** name: Lcd_Draw_Box()* func: Draw rectangle with appointed color* para: usLeft,usTop,usRight,usBottom -- rectangle's acme coordinate* ucColor -- appointed color value* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Draw_Box(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8UucColor){Lcd_Draw_HLine(usLeft, usRight, usTop, ucColor, 1);Lcd_Draw_HLine(usLeft, usRight, usBottom, ucColor, 1);Lcd_Draw_VLine(usTop, usBottom, usLeft, ucColor, 1);Lcd_Draw_VLine(usTop, usBottom, usRight, ucColor, 1);}/****************************************************************************** **************** name: Lcd_Draw_Line()* func: Draw line with appointed color* para: usX0,usY0 -- line's start point coordinate* usX1,usY1 -- line's end point coordinate* ucColor -- appointed color value* usWidth -- line's width* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Draw_Line(INT16 usX0, INT16 usY0, INT16 usX1, INT16 usY1, INT8U ucColor, INT16U usWidth){INT16 usDx;INT16 usDy;INT16 y_sign;INT16 x_sign;INT16 decision;INT16 wCurx, wCury, wNextx, wNexty, wpy, wpx;if( usY0 == usY1 ){Lcd_Draw_HLine (usX0, usX1, usY0, ucColor, usWidth);return;}if( usX0 == usX1 ){Lcd_Draw_VLine (usY0, usY1, usX0, ucColor, usWidth);return;}usDx = abs(usX0 - usX1);usDy = abs(usY0 - usY1);if( ((usDx >= usDy && (usX0 > usX1)) ||((usDy > usDx) && (usY0 > usY1))) ){GUISWAP(usX1, usX0);GUISWAP(usY1, usY0);}y_sign = (usY1 - usY0) / usDy;x_sign = (usX1 - usX0) / usDx;if( usDx >= usDy ){for( wCurx = usX0, wCury = usY0, wNextx = usX1,wNexty = usY1, decision = (usDx >> 1);wCurx <= wNextx; wCurx++, wNextx--, decision += usDy ) {if( decision >= usDx ){decision -= usDx;wCury += y_sign;wNexty -= y_sign;}for( wpy = wCury - usWidth / 2;wpy <= wCury + usWidth / 2; wpy++ ){LCD_PutPixel(wCurx, wpy, ucColor);}for( wpy = wNexty - usWidth / 2;wpy <= wNexty + usWidth / 2; wpy++ ){LCD_PutPixel(wNextx, wpy, ucColor);}}}else{for( wCurx = usX0, wCury = usY0, wNextx = usX1,wNexty = usY1, decision = (usDy >> 1);wCury <= wNexty; wCury++, wNexty--, decision += usDx ) {if( decision >= usDy ){decision -= usDy;wCurx += x_sign;wNextx -= x_sign;}for( wpx = wCurx - usWidth / 2;wpx <= wCurx + usWidth / 2; wpx++ ){LCD_PutPixel(wpx, wCury, ucColor);}for( wpx = wNextx - usWidth / 2;wpx <= wNextx + usWidth / 2; wpx++ ){LCD_PutPixel(wpx, wNexty, ucColor);}}}}/****************************************************************************** **************** name: Lcd_Draw_HLine()* func: Draw horizontal line with appointed color* para: usX0,usY0 -- line's start point coordinate* usX1 -- line's end point X-coordinate* ucColor -- appointed color value* usWidth -- line's width* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Draw_HLine(INT16 usX0, INT16 usX1, INT16 usY0, INT8U ucColor, INT16U usWidth){INT16 usLen;if( usX1 < usX0 ){GUISWAP (usX1, usX0);}while( (usWidth--) > 0 ){usLen = usX1 - usX0 + 1;while( (usLen--) > 0 ){LCD_PutPixel(usX0 + usLen, usY0, ucColor);}usY0++;}}/****************************************************************************** **************** name: Lcd_Draw_VLine()* func: Draw vertical line with appointed color* para: usX0,usY0 -- line's start point coordinate* usY1 -- line's end point Y-coordinate* ucColor -- appointed color value* usWidth -- line's width* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Draw_VLine (INT16 usY0, INT16 usY1, INT16 usX0, INT8U ucColor, INT16U usWidth){INT16 usLen;if( usY1 < usY0 ){GUISWAP (usY1, usY0);}while( (usWidth--) > 0 ){usLen = usY1 - usY0 + 1;while( (usLen--) > 0 ){LCD_PutPixel(usX0, usY0 + usLen, ucColor);}usX0++;}}/*--- extern variables ---*/extern INT8U g_auc_Ascii8x16[];/****************************************************************************** **************** name: Lcd_DspAscII8x16()* func: display 8x16 ASCII character string* para: usX0,usY0 -- ASCII character string's start point coordinate* ForeColor -- appointed color value* pucChar -- ASCII character string* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_DspAscII8x16(INT16U x0, INT16U y0, INT8U ForeColor, INT8U * s){INT16 i,j,k,x,y,xx;INT8U qm;INT32U ulOffset;INT8 ywbuf[16],temp[2];for( i = 0; i < strlen((const char*)s); i++ ){if( (INT8U)*(s+i) >= 161 ){temp[0] = *(s + i);temp[1] = '\0';return;}else{qm = *(s+i);ulOffset = (INT32U)(qm) * 16; //Here to be changed tomorrowfor( j = 0; j < 16; j ++ ){ywbuf[j] = g_auc_Ascii8x16[ulOffset + j];}for( y = 0; y < 16; y++ ){for( x = 0; x < 8; x++ ){k = x % 8;if( ywbuf[y] & (0x80 >> k) ){xx = x0 + x + i*8;LCD_PutPixel(xx, y + y0, (INT8U)ForeColor);}}}}}}/*--- extern variables ---*/extern INT8U g_auc_Ascii6x8[];#define XWIDTH 6/****************************************************************************** **************** name: Lcd_DspAscII6x8()* func: display 6x8 ASCII character string* para: usX0,usY0 -- ASCII character string's start point coordinate* ForeColor -- appointed color value* pucChar -- ASCII character string* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_DspAscII6x8(INT16U usX0, INT16U usY0,INT8U ForeColor, INT8U* pucChar) {INT32U i,j;INT8U ucTemp;while( *pucChar != 0 ){for( i=0; i < 8; i++ ){ucTemp = g_auc_Ascii6x8[(*pucChar) * 8 + i];for( j = 0; j < 8; j++ ){if( (ucTemp & (0x80 >> j)) != 0 ){LCD_PutPixel(usX0 + i, usY0 + 8 - j, (INT8U)ForeColor);}}}usX0 += XWIDTH;pucChar++;}}#ifndef Eng_v/****************************************************************************** **************** name: Lcd_DspHz16()* func: display chinese character string in 16x16 dot array* para: usX0,usY0 -- ASCII character string's start point coordinate* ForeColor -- appointed color value* pucChar -- ASCII character string* ret: none* modify:* comment:******************************************************************************* **************/extern const INT8U g_auc_HZK16[];void Lcd_DspHz16(INT16U x0, INT16U y0, INT8U ForeColor, INT8U *s){INT16 i,j,k,x,y,xx;INT8U qm,wm;INT32U ulOffset;INT8 hzbuf[32],temp[2];for( i = 0; i < strlen((const char*)s); i++ ){if( ((INT8U)(*(s+i))) < 161 ){temp[0] = *(s+i);temp[1] = '\0';break;}else{qm = *(s+i) - 161;wm = *(s + i + 1) - 161;ulOffset = (INT32U)(qm * 94 + wm) * 32;for( j = 0; j < 32; j ++ ){hzbuf[j] = g_auc_HZK16[ulOffset + j];}for( y = 0; y < 16; y++ ){for( x = 0; x < 16; x++ ){k = x % 8;if( hzbuf[y * 2 + x / 8] & (0x80 >> k) ){xx = x0 + x + i * 8;LCD_PutPixel( xx, y + y0, (INT8U)ForeColor);}}}i++;}}}#endif/****************************************************************************** **************** name: Lcd_Test()* func: LCD test function* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Test(void){int i, j;Uart_Printf("\n LCD display Test Example(please look at LCD screen)\n");/* initial LCD controller */Lcd_Init();/* clear screen */Lcd_Clr();/* draw rectangle pattern */#ifdef Eng_v // english versionLcd_DspAscII8x16(10,0,BLUE,"Embest S3CEV40");#elseLcd_DspAscII8x16(100, 50, RED, "2009073 20091989 ");Lcd_DspHz16(155, 70, RED, "马一鸣");Lcd_DspAscII8x16(100, 90, BLACK, "2009073 20091993 ");Lcd_DspHz16(155, 110, BLACK, "邓家坤");Lcd_DspAscII8x16(100, 130, BLUE, "2009073 20092022 ");Lcd_DspHz16(155, 150, BLUE, "蒋赵睿");DelayMs(500);Lcd_DspHz16( 100, 100, BLUE, "欢迎使用电子词典");Lcd_DspAscII8x16(100, 50, WHITE, "2009073 20091989 ");Lcd_DspHz16(155,70, WHITE, "马一鸣");Lcd_DspAscII8x16(100, 90, WHITE, "2009073 20091993 ");Lcd_DspHz16(155, 110, WHITE, "邓家坤");Lcd_DspAscII8x16(100, 130, WHITE, "2009073 20092022 ");Lcd_DspHz16(155, 150, WHITE, "蒋赵睿");DelayMs(500);Lcd_Clr();Lcd_DspHz16(15,15,BLUE,"电子词典");#endif//Lcd_DspAscII8x16(10,24,GREEN-55,"ShenZhen Embest Info&Tech Co.,LTD");Lcd_Draw_Box(5,30,115,180,GREEN);/*显示窗口*/Lcd_Draw_Box(5,190,75,230,GREEN);/*输入窗口*/Lcd_Draw_Box(75,190,115,230,GREEN);/*搜索键*/Lcd_Draw_Box(120,30,165,75,GREEN);/*abc*/Lcd_Draw_Box(170,30,215,75,GREEN);/*def*/Lcd_Draw_Box(220,30,265,75,GREEN);/*ghi*/Lcd_Draw_Box(270,30,315,75,GREEN);/*jkl*/Lcd_Draw_Box(120,80,165,125,GREEN);/*mno*/Lcd_Draw_Box(170,80,215,125,GREEN);/*pqr*/Lcd_Draw_Box(220,80,265,125,GREEN);/*stu*/Lcd_Draw_Box(270,80,315,125,GREEN);/*vwx*/Lcd_Draw_Box(120,130,165,175,GREEN);/*yz*/Lcd_Draw_Box(170,130,215,175,GREEN);/*选择1*/Lcd_Draw_Box(220,130,265,175,GREEN);/*选择2*/Lcd_Draw_Box(270,130,315,175,GREEN);/*选择3*/Lcd_Draw_Box(120,180,165,225,GREEN);/*back*/Lcd_Draw_Box(170,180,215,225,GREEN);/*ent*/Lcd_Draw_Box(220,180,265,225,GREEN);/*save*/Lcd_Draw_Box(270,180,315,225,GREEN);/* output ASCII symbol */Lcd_DspAscII6x8(90,210,BLACK,"scan");Lcd_DspAscII6x8(140,50,BLACK,"abc");Lcd_DspAscII6x8(190,50,BLACK,"def");Lcd_DspAscII6x8(240,50,BLACK,"ghi");Lcd_DspAscII6x8(290,50,BLACK,"jkl");Lcd_DspAscII6x8(140,100,BLACK,"mno");Lcd_DspAscII6x8(190,100,BLACK,"pqr");Lcd_DspAscII6x8(240,100,BLACK,"stu");Lcd_DspAscII6x8(290,100,BLACK,"vwx");Lcd_DspAscII6x8(140,150,BLACK,"yz");Lcd_DspAscII6x8(190,150,BLACK,"ch1");Lcd_DspAscII6x8(240,150,BLACK,"ch2");Lcd_DspAscII6x8(290,150,BLACK,"ch3");Lcd_DspAscII6x8(140,200,BLACK,"back");Lcd_DspAscII6x8(190,200,BLACK,"ent");Lcd_DspAscII6x8(240,200,BLACK,"save");Lcd_DspAscII6x8(290,200,BLACK," ");/*for (j = 0; j < 1000000 * 5; j++);while (1){for (i = 0; i < 5; i++){BitmapView320x240x256((INT8U*)(aucTempBitmap[i]));for (j = 0; j < 1000000 * 5; j++);}}*/}/****************************************************************************** **************** name: Lcd_Test_board()* func: LCD test function for board all test* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Test_board(void){int i, j;/* initial LCD controller */Lcd_Init();/* clear screen */Lcd_Clr();/* draw rectangle pattern */#ifdef Eng_v // english versionLcd_DspAscII8x16(10,0,BLUE,"Embest S3CEV40 ");#elseLcd_DspHz16(10,10,BLUE,"英蓓特三星实验平台");#endif。

嵌入式系统硬件设计说明

嵌入式系统硬件设计说明

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊嵌入式系统硬件设计课程设计报告书指导老师学号院系机械设计制造及其自动化班级机械电子完成时间┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊嵌入式硬件系统设计课程设计报告摘要嵌入式系统已经广泛应用于生产生活的方方面面,从电磁炉到机器人控制,从电子玩具到智能手机,都离不开嵌入式系统的应用。

本报告主要记录了在《嵌入式硬件系统》课程中的所学所感。

关键词:嵌入式系统,PCB焊接,Altium Designer,51单片机┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊目录1概述 (4)1.1本课程主要教学容 (4)1.2 嵌入式硬件系统简介 (4)1.3 本报告结构安排 (4)2PCB焊接练习 (5)2.1元器件符号的认识 (5)2.1.1了解元器件的尺寸 (5)2.1.2 常见电路图元件符号 (5)2.1.3 常见元器件实物 (5)2.1.4 认识元器件参数 (6)2.2元器件封装的认识 (7)2.2.1 实物封装 (7)2.2.2 封装尺寸介绍 (7)2.3焊接方法 (8)2.3.1 焊接工具介绍 (8)2.3.2 焊接要求 (8)2.3.3 焊接过程中遇到的问题及解决方法 (8)3电路原理图设计 (9)3.1电路功能分析 (9)3.1.1 51单片机 (9)3.1.2 LED (9)3.1.3 外部晶振 (9)3.1.4 复位电路 (9)3.1.5 报警器 (9)3.1.6 CH340G (9)3.1.7 USB (9)3.1.8 24C02CT-E (9)3.1.9 数码管 (9)3.2原理图设计 (10)3.2.1 原理图设计软件 (10)3.2.2 原理图设计要求 (10)3.3 PCB设计 (10)3.3.1 原理图导入 (10)3.3.2 设置PCB尺寸大小 (11)3.3.3 布局 (11)3.3.4 布线 (11)3.3.5 覆铜 (11)3.3.6 检查 (11)3.4 设计过程中遇到的问题及解决方法 (11)4PCB焊接及调试 (13)4.1 焊接过程中遇到的问题 (13)4.2调试过程 (13)4.2.2 调试过程遇到的问题 (13)5项目任务书 (14)5.1 任务书 (14)┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊5.2项目可行性分析 (14)6项目装置设计制作及调试 (15)6.1 装置结构设计 (15)6.2 硬件设计 (15)6.2.1 电机选择 (15)6.2.2 开关选择 (15)6.2.3 单片机类型选择 (16)6.2.4 WIFI模块选择 (16)6.3 算法流程 (17)6.4 运行代码 (17)6.5 装置制作及调试 (17)6.5.1 盒子的制作 (17)6.5.2 ESP8266调试 (18)7 结语 (19)参考文献 (20)辞 (21)附录(程序) (22)┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊1概述1.1本课程主要教学容本课程由浅入深,主要讲授怎样设计运用一套完整的嵌入式系统。

嵌入式系统课程设计 快译通词典

嵌入式系统课程设计 快译通词典

软件学院课程设计报告书课程名称嵌入式系统课程设计设计题目快译通词典专业班级嵌入式软件09-2班学号 0920010201 姓名车文通指导教师王建立年月1 设计时间2012年6月11日-2012年6月15日2 设计目的通过本次课程设计,全面掌握、熟悉C语言的程序设计与技巧,进一步提高编写程序,分析程序及上机操作,调试程序的能力,提高动手操作能力及分析问题和解决问题的能力3设计任务一单词查询给定文本文件“dict.txt”,该文件用于存储词库。

词库为“英-汉”,“汉-英”双语词典,每个单词和其解释的格式固定,如下所示:#单词Trans:解释1@解释2@…解释n每个新单词由“#”开头,解释之间使用“@”隔开。

一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:”开头。

下面是一个典型的例子:#abyssinianTrans:a. 阿比西尼亚的@n. 阿比西尼亚人;依索比亚人该词有两个解释,一个是“a. 阿比西尼亚的”;另一个是“n. 阿比西尼亚人;依索比亚人”。

要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,并且将解释输出到屏幕上。

用户可以反复输入,直到用户输入“exit”字典程序退出。

程序执行格式如下所示:./app –text-text表示使用文本词库进行单词查找。

二、建立索引,并且使用索引进行单词查询要求建立二进制索引,索引格式如下图所示。

将文本文件“dict.txt”文件转换为上图所示索引文件“dict.dat”,使用索引文件实现单词查找。

程序执行格式如下:./app –index-index表示使用文本词库dict.txt建立二进制索引词库dict.dat./app –bin-bin表示使用二进制索引词库进行单词查找。

三、支持用户自添加新词用户添加的新词存放在指定文件中。

如果待查单词在词库中找不到,则使用用户提供的词库。

用户的词库使用文本形式保存,便于用户修改。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上海电力学院嵌入式系统课程设计报告题目:电子词典的设计姓名:学号:院系:专业年级:同组成员:年月日一、实验内容及要求在LCD屏幕左侧绘制出单词输入框和释义显示框以及一个搜索键,右侧绘制4*4键盘按钮,模拟出简易电子词典的功能,按钮操作用触摸屏或键盘实现均可。

实现功能:(1)LCD屏幕上显示4*4键盘,显示单词及其翻译、例句。

(2)一个键可完成2个英文字母的输入,如左上角第一个键可实现输入a,b两个字母,第一次按下时为输入a,如果需输入b,只需连续快速按键两次即可。

(3)在输入完单词后,点击搜索键,即可在释义显示框中显示该单词的词性、中文解释、示例词组和句子等。

(4)当发现输入的单词在库中不存在时,可实现将该单词添加入库的操作。

二、设计思路(1)通过LCD显示模块画出电子词典操作界面。

(2)对应界面中各键的位置设置键盘对应键值。

(3)设定功能键,实现以下3个功能:①退格键:删除最后一位字母;②搜索∕保存键:对输入框的单词进行判断,若单词存在于词库中,则显示单词词性、词义、例句;若单词不存在则自动进行保存;③转换键:按下后,字母键输出对应的第二个字母。

(4)按键后赋值并显示。

三、软件构架四、模块分析(1)键盘模块流程图:源代码:/****************************************************************************** **************** File:keyboard.c* Author: embest* Desc:keyboard source code* History:******************************************************************************* **************//*--- include files ---*/#include "44b.h"#include "44blib.h"#include "def.h"#include "keyboard.h"#include "lcd.h"#include "dict.h"#ifndef KEY_INT#define KEY_INT#endif#ifndef BUT_INT#define BUT_INT#endif/*--- global variables ---*/int input_char,n=0;char word[20];int wordIndex=0;int x = 15;int num=0;int counter=0;/* keyboard control address */volatile UCHAR *keyboard_base = (UCHAR *)0x06000000;/*--- function declare ---*/void init_keyboard();void close_keyboard();void KeyboardInt(void);// __attribute__ ((interrupt ("IRQ")));void Eint4567Isr(void);// __attribute__ ((interrupt ("IRQ")));/*--- function code ---*//****************************************************************************** **************** name: Test_Keyboard* func: test keyboard* para: none* ret: none* modify:* comment:******************************************************************************* *************/void Test_Keyboard(){Uart_Printf("\n Keyboard Test Example\n");Uart_Printf("\n Please press one key on keyboard and look at LED ...\n");// init keyboardinit_keyboard();while(1);// close keyboard// close_keyboard();}/****************************************************************************** **************** name: init_keyboard* func: init keyboard interrupt* para: none* ret: none* modify:* comment:******************************************************************************* *************/extern void isrEINT1(void);extern void isrEint4567(void);void init_keyboard(){/* enable interrupt */rINTMOD = 0x0;rINTCON = 0x1;/* set EINT1 interrupt handler */rINTMSK =~(BIT_GLOBAL|BIT_EINT1|BIT_EINT4567);pISR_EINT1 = (int)isrEINT1;pISR_EINT4567 = (int)isrEint4567;/* PORT G */rPCONG = 0xffff; // EINT7~0rPUPG = 0x0; // pull up enablerEXTINT = rEXTINT|0x20; // EINT1 falling edge moderI_ISPC = BIT_EINT1|BIT_EINT4567; // clear pending bitrEXTINTPND = 0xf; // clear EXTINTPND reg}/****************************************************************************** **************** name: close_keyboard* func: close keyboard interrupt* para: none* ret: none* modify:* comment:******************************************************************************* *************/void close_keyboard(){pISR_EINT1 = NULL;pISR_EINT4567 = NULL;/* Mask interrupt */rINTMSK = rINTMSK | BIT_EINT1 | BIT_EINT4567;}/****************************************************************************** **************** name: KeyboardInt* func: keyboard interrupt handler function* para: none* ret: none* modify:* comment:******************************************************************************* *************/void KeyboardInt(void){int nTemp,i,j,k,m=0;char bbyte;rI_ISPC = BIT_EINT1; // clear pending bitchar pbyte[10];nTemp = key_read();if(nTemp > -1){// Lcd_Draw_HLine(10, 310, 80, WHITE, 50);input_char = nTemp;Lcd_DspAscII8x16(15,45,WHITE,word);switch(input_char){case 0:num=1;break;case 1:num=2;break;case 2:num=3;break;case 3:num=4;break;case 4:num=5;break;case 5:num=6;break;case 6:num=7;break;case 7:num=8;break;case 8:num=9;break;case 9:counter=1;break;case 10:counter=2;break;case 11:counter=3;break;case 12:m=1;Lcd_Draw_HLine(15+n-10, 15+n, 45, WHITE, 16); n-=10;word[wordIndex]='\0';wordIndex--;break;/*if(n==0){word[20]=0;wordIndex=0;Lcd_Draw_HLine(10, 310,85, WHITE, 160);}break;*/case 13:word[wordIndex]='\0';wordIndex=0;for(i=0;i<20;i++){if(strcmp(word,vocab[i].c)==0){j=0;k=i;break;}elsej=1;}if(j==0){//#ifdef Eng_vLcd_DspAscII8x16(15,40,BLUE,vocab[k].c);Lcd_DspAscII8x16(15,60,BLUE,vocab[k].d);Lcd_DspAscII8x16(15,80,BLUE,vocab[k].f);//#elseLcd_DspHz16(15,100,BLUE,vocab[k].e);//#endif}else{Lcd_DspHz16(15,120,BLUE,"未找到相应的单词"); DelayMs(600);Lcd_DspHz16(15,120,WHITE,"未找到相应的单词"); }break;case 14:word[wordIndex]='\0';wordIndex=0;for(i=0;i<20;i++){if(strcmp(word,vocab[i].c)==0){j=0;k=i;break;}elsej=1;}if(j==0){//#ifdef Eng_vLcd_DspAscII8x16(15,40,BLUE,vocab[k].c);Lcd_DspAscII8x16(15,60,BLUE,vocab[k].d);Lcd_DspAscII8x16(15,80,BLUE,vocab[k].f);//#elseLcd_DspHz16(15,100,BLUE,vocab[k].e);//#endif}else{if(20>x>0){for(i = 0; i < 20; i++)vocab[x].c[i]=word[i];word[i]='\0';Lcd_DspAscII8x16(15,40,BLUE,vocab[x].c);x++;}elsex=15;//Lcd_DspAscII8x16(15,45,BLUE,word);for(i = 0; i < 20; i++)word[i]='\0';}break;case 15://Lcd_Draw_Box(10,40,310,80,GREEN);break;}if(num!=0&&counter!=0){switch(3*(num-1)+counter-1){case 0:bbyte='a';break;case 1:bbyte='b';break;case 2:bbyte='c';break;case 3:bbyte='d';break;case 4:bbyte='e';break;case 5:bbyte='f';break;case 6:bbyte='g';break;case 7:bbyte='h';break;case 8:bbyte='i';break;case 9:bbyte='j';break;case 10:bbyte='k';break;case 11:bbyte='l';break;case 12:bbyte='m';break;case 13:bbyte='n';break;case 14:bbyte='o';break;case 15:bbyte='p';break;case 16:bbyte='q';break;case 17:bbyte='r';break;case 18:bbyte='s';break;case 19:bbyte='t';break;case 20:bbyte='u';break;case 21:bbyte='v';break;case 22:bbyte='w';break;case 23:bbyte='x';break;case 24:bbyte='y';break;case 25:bbyte='z';break;case 26:bbyte='y';break;}num=0;counter=0;if(m==0){word[wordIndex]=bbyte; wordIndex++;//n+=10;}Lcd_DspAscII8x16(15,210,BLUE,word);// Uart_Printf("Key is:%x \r",input_char);}}/****************************************************************************** **************** name: key_read* func: read key value* para: none* ret: key value, -1 -- error* modify:* comment:******************************************************************************* *************/inline int key_read(){int value;char temp;/* read line 1 */temp = *(keyboard_base+0xfd);/* not 0xF mean key down */if(( temp & KEY_VALUE_MASK) != KEY_VALUE_MASK){if( (temp&0x1) == 0 )value = 3;else if( (temp&0x2) == 0 )value = 2;else if( (temp&0x4) == 0 )value = 1;else if( (temp&0x8) == 0 )value = 0;while(( temp & KEY_VALUE_MASK) != KEY_VALUE_MASK) // releasetemp = *(keyboard_base+0xfd);return value;}/* read line 2 */temp = *(keyboard_base+0xfb);/* not 0xF mean key down */if(( temp & KEY_VALUE_MASK) != KEY_VALUE_MASK){if( (temp&0x1) == 0 )value = 7;else if( (temp&0x2) == 0 )value = 6;else if( (temp&0x4) == 0 )value = 5;else if( (temp&0x8) == 0 )value = 4;while(( temp & KEY_VALUE_MASK) != KEY_VALUE_MASK) // release temp = *(keyboard_base+0xfb);return value;}/* read line 3 */temp = *(keyboard_base+0xf7);/* not 0xF mean key down */if(( temp & KEY_VALUE_MASK) != KEY_VALUE_MASK){if( (temp&0x1) == 0 )value = 0xb;else if( (temp&0x2) == 0 )value = 0xa;else if( (temp&0x4) == 0 )value = 9;else if( (temp&0x8) == 0 )value = 8;while(( temp & KEY_VALUE_MASK) != KEY_VALUE_MASK) // release temp = *(keyboard_base+0xf7);return value;}/* read line 4 */temp = *(keyboard_base+0xef);/* not 0xF mean key down */if(( temp & KEY_VALUE_MASK) != KEY_VALUE_MASK){if( (temp&0x1) == 0 )value = 0xf;else if( (temp&0x2) == 0 )value = 0xe;else if( (temp&0x4) == 0 )value = 0xd;else if( (temp&0x8) == 0 )value = 0xc;while(( temp & KEY_VALUE_MASK) != KEY_VALUE_MASK) // releasetemp = *(keyboard_base+0xef);return value;}return -1;}/****************************************************************************** **************** name: Eint4567Isr* func:* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Eint4567Isr(void){unsigned char which_int;Uart_Printf("\n SB2 or SB3 had pressed and light LED.");which_int=rEXTINTPND;rEXTINTPND=0xf; //clear EXTINTPND reg.rI_ISPC=BIT_EINT4567; //clear pending_bitif(which_int == 4) // SB2{Led_Display(0x0);Led_Display(0x1);}else if(which_int == 8) // SB3{Led_Display(0x0);Led_Display(0x2);}}(2)LCD模块流程图:源代码:/****************************************************************************** **************** File:lcd.c* Author: embest* Desc:LCD control and display functions* History:******************************************************************************* **************//*--- include files ---*/#include "lcd.h"//#include "bmp.h"#include "44b.h"/*--- global variables ---*/INT32U aLcdActiveBuffer[LCD_YSIZE][LCD_XSIZE/4];/*--- extern variables ---*/extern const INT8U aucTempBitmap[][76800];/*--- function code ---*//****************************************************************************** **************** name: Lcd_Init()* func: Initialize LCD Controller* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Init (void){rDITHMODE=0x12210;rDP1_2 =0xa5a5;rDP4_7 =0xba5da65;rDP3_5 =0xa5a5f;rDP2_3 =0xd6b;rDP5_7 =0xeb7b5ed;rDP3_4 =0x7dbe;rDP4_5 =0x7ebdf;rDP6_7 =0x7fdfbfe;// disable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk,rLCDCON1=(0x0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);// LINEBLANK=10 (without any calculation)rLCDCON2=(LINEVAL)|(HOZVAL_COLOR<<10)|(10<<21);rLCDCON3=0;// 256-color, LCDBANK, LCDBASEUrLCDSADDR1= (0x3<<27) | ( ((unsigned int)aLcdActiveBuffer>>22)<<21 ) | M5D((unsigned int)aLcdActiveBuffer>>1);rLCDSADDR2= M5D((((unsigned int)aLcdActiveBuffer+(SCR_XSIZE*LCD_YSIZE))>>1)) | (MVAL<<21);rLCDSADDR3= (LCD_XSIZE/2) | ( ((SCR_XSIZE-LCD_XSIZE)/2)<<9 );//The following value has to be changed for better display.rREDLUT =0xfdb96420; // 1111 1101 1011 1001 0110 0100 0010 0000rGREENLUT=0xfdb96420; // 1111 1101 1011 1001 0110 0100 0010 0000rBLUELUT =0xfb40; // 1111 1011 0100 0000rLCDCON1=(0x1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12); // rPDATE=rPDATE&0x0e;rPDATE=0xfe;Lcd_Clr();}/****************************************************************************** **************** name: Lcd_Clr()* func: clear LCD screen* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Clr(void){INT32U i;INT32U *pDisp = (INT32U*)aLcdActiveBuffer;for (i = 0; i < (SCR_XSIZE * SCR_YSIZE / 4); i++){*pDisp++ = ALLWHITE;}}/****************************************************************************** **************** name: LcdClrRect()* func: fill appointed area with appointed color* para: usLeft,usTop,usRight,usBottom -- area's rectangle acme coordinate * ucColor -- appointed color value* ret: none* modify:* comment: also as clear screen function******************************************************************************* **************/void LcdClrRect(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8U ucColor){INT32U i, j;INT8U *pDisp = (INT8U*)aLcdActiveBuffer;for(i=usTop;i<=usBottom;i++){for(j=usLeft;j<=usRight;j++){LCD_PutPixel(j, i, ucColor);}}}#ifdef MON_LCD/****************************************************************************** **************** name: LcdClrRect()* func: fill appointed area with appointed color* para: usLeft,usTop,usRight,usBottom -- area's rectangle acme coordinate * ucColor -- appointed color value* ret: none* modify:* comment: also as clear screen function******************************************************************************* **************/void LcdClrRect(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8U ucColor){INT16 i=0;INT16 k,l;INT16 m;INT32U ulColor = (ucColor << 28) | (ucColor << 24) | (ucColor << 20) | (ucColor << 16) |(ucColor << 12) | (ucColor << 8) | (ucColor << 4) | ucColor;if((usRight-usLeft)<=8){for(i=usTop;i<=usBottom;i++){for(m=usLeft;m<=usRight;m++){LCD_PutPixel(m, i, ucColor);}}return;if((usLeft%8)==0)k=usLeft;else{k=(usLeft/8)*8+8;}if(( usRight%8)==0)l= usRight;else{l=( usRight/8)*8;}for(i=usTop;i<=usBottom;i++){for(m=usLeft;m<=(k-1);m++){LCD_PutPixel(m, i, ucColor);}for(m=k;m<l;m+=8){(*(INT32U*)(aLcdActiveBuffer + i * SCR_XSIZE / 2 + m / 2)) = ulColor;}for(m=l;m<=usRight;m++){LCD_PutPixel(m, i, ucColor);}}}#endif/****************************************************************************** **************** name: Lcd_Draw_Box()* func: Draw rectangle with appointed color* para: usLeft,usTop,usRight,usBottom -- rectangle's acme coordinate* ucColor -- appointed color value* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Draw_Box(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8U ucColor){Lcd_Draw_HLine(usLeft, usRight, usTop, ucColor, 1);Lcd_Draw_HLine(usLeft, usRight, usBottom, ucColor, 1);Lcd_Draw_VLine(usTop, usBottom, usLeft, ucColor, 1);Lcd_Draw_VLine(usTop, usBottom, usRight, ucColor, 1);}/****************************************************************************** **************** name: Lcd_Draw_Line()* func: Draw line with appointed color* para: usX0,usY0 -- line's start point coordinate* usX1,usY1 -- line's end point coordinate* ucColor -- appointed color value* usWidth -- line's width* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Draw_Line(INT16 usX0, INT16 usY0, INT16 usX1, INT16 usY1, INT8U ucColor, INT16U usWidth){INT16 usDx;INT16 usDy;INT16 y_sign;INT16 x_sign;INT16 decision;INT16 wCurx, wCury, wNextx, wNexty, wpy, wpx;if( usY0 == usY1 ){Lcd_Draw_HLine (usX0, usX1, usY0, ucColor, usWidth);return;}if( usX0 == usX1 ){Lcd_Draw_VLine (usY0, usY1, usX0, ucColor, usWidth);return;}usDx = abs(usX0 - usX1);usDy = abs(usY0 - usY1);if( ((usDx >= usDy && (usX0 > usX1)) ||((usDy > usDx) && (usY0 > usY1))) ){GUISWAP(usX1, usX0);GUISWAP(usY1, usY0);}y_sign = (usY1 - usY0) / usDy;x_sign = (usX1 - usX0) / usDx;if( usDx >= usDy ){for( wCurx = usX0, wCury = usY0, wNextx = usX1,wNexty = usY1, decision = (usDx >> 1);wCurx <= wNextx; wCurx++, wNextx--, decision += usDy ) {if( decision >= usDx ){decision -= usDx;wCury += y_sign;wNexty -= y_sign;}for( wpy = wCury - usWidth / 2;wpy <= wCury + usWidth / 2; wpy++ ){LCD_PutPixel(wCurx, wpy, ucColor);}for( wpy = wNexty - usWidth / 2;wpy <= wNexty + usWidth / 2; wpy++ ){LCD_PutPixel(wNextx, wpy, ucColor);}}}else{for( wCurx = usX0, wCury = usY0, wNextx = usX1,wNexty = usY1, decision = (usDy >> 1);wCury <= wNexty; wCury++, wNexty--, decision += usDx ) {if( decision >= usDy ){decision -= usDy;wCurx += x_sign;wNextx -= x_sign;}for( wpx = wCurx - usWidth / 2;wpx <= wCurx + usWidth / 2; wpx++ ){LCD_PutPixel(wpx, wCury, ucColor);}for( wpx = wNextx - usWidth / 2;wpx <= wNextx + usWidth / 2; wpx++ ){LCD_PutPixel(wpx, wNexty, ucColor);}}}}/****************************************************************************** **************** name: Lcd_Draw_HLine()* func: Draw horizontal line with appointed color* para: usX0,usY0 -- line's start point coordinate* usX1 -- line's end point X-coordinate* ucColor -- appointed color value* usWidth -- line's width* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Draw_HLine(INT16 usX0, INT16 usX1, INT16 usY0, INT8U ucColor, INT16U usWidth){INT16 usLen;if( usX1 < usX0 ){GUISWAP (usX1, usX0);}while( (usWidth--) > 0 ){usLen = usX1 - usX0 + 1;while( (usLen--) > 0 ){LCD_PutPixel(usX0 + usLen, usY0, ucColor);}usY0++;}}/****************************************************************************** **************** name: Lcd_Draw_VLine()* func: Draw vertical line with appointed color* para: usX0,usY0 -- line's start point coordinate* usY1 -- line's end point Y-coordinate* ucColor -- appointed color value* usWidth -- line's width* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Draw_VLine (INT16 usY0, INT16 usY1, INT16 usX0, INT8U ucColor, INT16U usWidth){INT16 usLen;if( usY1 < usY0 ){GUISWAP (usY1, usY0);}while( (usWidth--) > 0 ){usLen = usY1 - usY0 + 1;while( (usLen--) > 0 ){LCD_PutPixel(usX0, usY0 + usLen, ucColor);}usX0++;}}/*--- extern variables ---*/extern INT8U g_auc_Ascii8x16[];/********************************************************************************************** name: Lcd_DspAscII8x16()* func: display 8x16 ASCII character string* para: usX0,usY0 -- ASCII character string's start point coordinate* ForeColor -- appointed color value* pucChar -- ASCII character string* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_DspAscII8x16(INT16U x0, INT16U y0, INT8U ForeColor, INT8U * s){INT16 i,j,k,x,y,xx;INT8U qm;INT32U ulOffset;INT8 ywbuf[16],temp[2];for( i = 0; i < strlen((const char*)s); i++ ){if( (INT8U)*(s+i) >= 161 ){temp[0] = *(s + i);temp[1] = '\0';return;}else{qm = *(s+i);ulOffset = (INT32U)(qm) * 16; //Here to be changed tomorrowfor( j = 0; j < 16; j ++ ){ywbuf[j] = g_auc_Ascii8x16[ulOffset + j];}for( y = 0; y < 16; y++ ){for( x = 0; x < 8; x++ ){k = x % 8;if( ywbuf[y] & (0x80 >> k) ){xx = x0 + x + i*8;LCD_PutPixel(xx, y + y0, (INT8U)ForeColor);}}}}}}/*--- extern variables ---*/extern INT8U g_auc_Ascii6x8[];#define XWIDTH 6/****************************************************************************** **************** name: Lcd_DspAscII6x8()* func: display 6x8 ASCII character string* para: usX0,usY0 -- ASCII character string's start point coordinate* ForeColor -- appointed color value* pucChar -- ASCII character string* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_DspAscII6x8(INT16U usX0, INT16U usY0,INT8U ForeColor, INT8U* pucChar) {INT32U i,j;INT8U ucTemp;while( *pucChar != 0 ){for( i=0; i < 8; i++ ){ucTemp = g_auc_Ascii6x8[(*pucChar) * 8 + i];for( j = 0; j < 8; j++ ){if( (ucTemp & (0x80 >> j)) != 0 ){LCD_PutPixel(usX0 + i, usY0 + 8 - j, (INT8U)ForeColor);}}}usX0 += XWIDTH;pucChar++;}}#ifndef Eng_v/****************************************************************************** **************** name: Lcd_DspHz16()* func: display chinese character string in 16x16 dot array* para: usX0,usY0 -- ASCII character string's start point coordinate* ForeColor -- appointed color value* pucChar -- ASCII character string* ret: none* modify:* comment:******************************************************************************* **************/extern const INT8U g_auc_HZK16[];void Lcd_DspHz16(INT16U x0, INT16U y0, INT8U ForeColor, INT8U *s){INT16 i,j,k,x,y,xx;INT8U qm,wm;INT32U ulOffset;INT8 hzbuf[32],temp[2];for( i = 0; i < strlen((const char*)s); i++ ){if( ((INT8U)(*(s+i))) < 161 ){temp[0] = *(s+i);temp[1] = '\0';break;}else{qm = *(s+i) - 161;wm = *(s + i + 1) - 161;ulOffset = (INT32U)(qm * 94 + wm) * 32;for( j = 0; j < 32; j ++ ){hzbuf[j] = g_auc_HZK16[ulOffset + j];}for( y = 0; y < 16; y++ ){for( x = 0; x < 16; x++ ){k = x % 8;if( hzbuf[y * 2 + x / 8] & (0x80 >> k) ){xx = x0 + x + i * 8;LCD_PutPixel( xx, y + y0, (INT8U)ForeColor);}}}i++;}}}#endif/****************************************************************************** **************** name: Lcd_Test()* func: LCD test function* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Test(void){int i, j;Uart_Printf("\n LCD display Test Example(please look at LCD screen)\n");/* initial LCD controller */Lcd_Init();/* clear screen */Lcd_Clr();/* draw rectangle pattern */#ifdef Eng_v // english versionLcd_DspAscII8x16(10,0,BLUE,"Embest S3CEV40");#elseLcd_DspAscII8x16(100, 50, RED, "2009073 20091989 ");Lcd_DspHz16(155, 70, RED, "马一鸣");Lcd_DspAscII8x16(100, 90, BLACK, "2009073 20091993 ");Lcd_DspHz16(155, 110, BLACK, "邓家坤");Lcd_DspAscII8x16(100, 130, BLUE, "2009073 20092022 ");Lcd_DspHz16(155, 150, BLUE, "蒋赵睿");DelayMs(500);Lcd_DspHz16( 100, 100, BLUE, "欢迎使用电子词典");Lcd_DspAscII8x16(100, 50, WHITE, "2009073 20091989 ");Lcd_DspHz16(155,70, WHITE, "马一鸣");Lcd_DspAscII8x16(100, 90, WHITE, "2009073 20091993 ");Lcd_DspHz16(155, 110, WHITE, "邓家坤");Lcd_DspAscII8x16(100, 130, WHITE, "2009073 20092022 ");Lcd_DspHz16(155, 150, WHITE, "蒋赵睿");DelayMs(500);Lcd_Clr();Lcd_DspHz16(15,15,BLUE,"电子词典");#endif//Lcd_DspAscII8x16(10,24,GREEN-55,"ShenZhen Embest Info&Tech Co.,LTD");Lcd_Draw_Box(5,30,115,180,GREEN);/*显示窗口*/Lcd_Draw_Box(5,190,75,230,GREEN);/*输入窗口*/Lcd_Draw_Box(75,190,115,230,GREEN);/*搜索键*/Lcd_Draw_Box(120,30,165,75,GREEN);/*abc*/Lcd_Draw_Box(170,30,215,75,GREEN);/*def*/Lcd_Draw_Box(220,30,265,75,GREEN);/*ghi*/Lcd_Draw_Box(270,30,315,75,GREEN);/*jkl*/Lcd_Draw_Box(120,80,165,125,GREEN);/*mno*/Lcd_Draw_Box(170,80,215,125,GREEN);/*pqr*/Lcd_Draw_Box(220,80,265,125,GREEN);/*stu*/Lcd_Draw_Box(270,80,315,125,GREEN);/*vwx*/Lcd_Draw_Box(120,130,165,175,GREEN);/*yz*/Lcd_Draw_Box(170,130,215,175,GREEN);/*选择1*/Lcd_Draw_Box(220,130,265,175,GREEN);/*选择2*/Lcd_Draw_Box(270,130,315,175,GREEN);/*选择3*/Lcd_Draw_Box(120,180,165,225,GREEN);/*back*/Lcd_Draw_Box(170,180,215,225,GREEN);/*ent*/Lcd_Draw_Box(220,180,265,225,GREEN);/*save*/Lcd_Draw_Box(270,180,315,225,GREEN);/* output ASCII symbol */Lcd_DspAscII6x8(90,210,BLACK,"scan");Lcd_DspAscII6x8(140,50,BLACK,"abc");Lcd_DspAscII6x8(190,50,BLACK,"def");Lcd_DspAscII6x8(240,50,BLACK,"ghi");Lcd_DspAscII6x8(290,50,BLACK,"jkl");Lcd_DspAscII6x8(140,100,BLACK,"mno");Lcd_DspAscII6x8(190,100,BLACK,"pqr");Lcd_DspAscII6x8(240,100,BLACK,"stu");Lcd_DspAscII6x8(290,100,BLACK,"vwx");Lcd_DspAscII6x8(140,150,BLACK,"yz");Lcd_DspAscII6x8(190,150,BLACK,"ch1");Lcd_DspAscII6x8(240,150,BLACK,"ch2");Lcd_DspAscII6x8(290,150,BLACK,"ch3");Lcd_DspAscII6x8(140,200,BLACK,"back");Lcd_DspAscII6x8(190,200,BLACK,"ent");Lcd_DspAscII6x8(240,200,BLACK,"save");Lcd_DspAscII6x8(290,200,BLACK," ");/*for (j = 0; j < 1000000 * 5; j++);while (1){for (i = 0; i < 5; i++){BitmapView320x240x256((INT8U*)(aucTempBitmap[i]));for (j = 0; j < 1000000 * 5; j++);}}*/}/****************************************************************************** **************** name: Lcd_Test_board()* func: LCD test function for board all test* para: none* ret: none* modify:* comment:******************************************************************************* **************/void Lcd_Test_board(void){int i, j;/* initial LCD controller */Lcd_Init();/* clear screen */Lcd_Clr();/* draw rectangle pattern */#ifdef Eng_v // english versionLcd_DspAscII8x16(10,0,BLUE,"Embest S3CEV40 ");#elseLcd_DspHz16(10,10,BLUE,"英蓓特三星实验平台");#endifLcd_DspAscII8x16(10,24,GREEN-55,"ShenZhen Embest Info&Tech Co.,LTD");// Lcd_Draw_Box(10,40,310,230,GREEN);// Lcd_Draw_Box(20,45,300,225,GREEN);// Lcd_Draw_Box(30,50,290,220,GREEN);// Lcd_Draw_Box(40,55,280,215,GREEN);/*for (j = 0; j < 1000000 * 5; j++);for (i = 0; i < 5; i++){BitmapView320x240x256((INT8U*)(aucTempBitmap[i]));for (j = 0; j < 1000000 * 5; j++);}*/}五、问题反馈1、在做键盘中断时会有一些键常常出现错误2、在输入键值是会有一些值输入后无法清零的现象出现3、一些键要求与设计不服的现象也会出现六、实验总结通过本次试验让我学会了嵌入式实验的基本操作方法和相关应用技巧,学会了相关编程的基本思路和方式,,试验中遇到了很多的困难和问题,操作起来确实不易,但最终我们克服了这些困难成功实现了预期目标。

相关文档
最新文档