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

  • 格式:doc
  • 大小:522.50 KB
  • 文档页数:30

下载文档原格式

  / 30
  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 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

}