嵌入式课程设计电子词典硬件设计说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 keyboard
init_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~0
rPUPG = 0x0; // pull up enable
rEXTINT = rEXTINT|0x20; // EINT1 falling edge mode
rI_ISPC = BIT_EINT1|BIT_EINT4567; // clear pending bit
rEXTINTPND = 0xf; // clear EXTINTPND reg
}