电子词典系统设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子词典系统设计实验报告
12121583 曹连强周四6-8
一、项目要求:
1、在实验板上设计实现一个无操作系统的简易电子词典
2、设计友好的人机交互界面
3、:字符输入、功能选择、英汉翻译。
二、电子词典系统实现具体功能:
1.能够通过键盘输入英文。键盘作为本系统中最主要的输入设备,需要完成26个英文字母的输入,并且需要上翻页,下翻页,上一行,下一行,翻译,退格等功能。要求键盘至少要有16个按键,每个按键都可以被处理器及时,准确地读入。
2.提供友好的人机界面,将输入的内容和翻译的结果显示在LCD的相应区域内。
3. 对输入的单词即时翻译。
4.可以记忆3个已经查询过的的单词。
在无操作系统的电子词典系统中,由于是单任务环境,因此此时系统的各个功能模块均按照顺序执行。初始化后,即进入翻译待机状态,等待用户的输入操作。当用户输入操作发生后,系统调用键盘或触摸屏中断进行键值读取,将键值传给主函数中的系统功能实现模块,该模块按不同的输入键值进行相应的功能选择,最后将此次操作的结果输出到LCD上。
三、程序设计
可将电子词典的软件设计分为如下几个主要模块:键值处理、翻译、词库设计和LCD 显示。
1、键值处理
电子词典的输入设备为键盘和触摸屏,要完成的功能为:
(1)键盘:10个英文字母和6个功能键输入
(2)触摸屏:6各功能键的输入
2、翻译:
3、词库设计
翻译功能中通过将输入单词和词库中相应的单词进行比较得到要显示的翻译结果,因此,词库可采用结构体实现,此结构中包括4项:英文单词、词性、汉语释意、英文例句。
4、LCD显示功能
翻页、选行及翻页结果的输出都可以归到LCD显示功能中,这些功能都可以通过调用LCD 实验中的相关函数完成。
四.设计程序
////////////////////////////////////////////////////////////
#include "Ts_sep.h"
#include
///////////////////////////////////////////////////////////
#include "def.h"
#include "2410lib.h"
#include "option.h"
#include "2410addr.h"
#include "interrupt.h"
#include "lcdlib.h"
//#define STN_LCD
#define TFT_8_0
/////////////////8888888////////////////////////////
#define LOOP 1
#define ADCPRS 39
#define TS_JUSTIFY_LEFTTOP 1
#define TS_JUSTIFY_RIGHTBOT 2
#define TS_START 3
///////////////////8888888888888888//////////////////////
void Lcd_Disp_Char(void);
void Lcd_Disp_Grap(void);
void Frame(void);//设置背景框架
void Clearscreen(void);//清屏
//void Key_init(void);//初始化键盘
void Cursor(int flag);
void CursorCl(int flag);
void delay( int count );
void disp();
void translate(int num);
static int x=0,y=0,letter=0,flag=0,wei=0,prev[5],i,j;//函数里有调用我换成全局变量
int which[20];//此时满足罗列单词
int word,w;
int m,n;
////////////////////////////////////////////////
int ts_status = TS_JUSTIFY_LEFTTOP;
int ts_lefttop_x, ts_lefttop_y, ts_rightbot_x, ts_rightbot_y;
int ts_lcd_x, ts_lcd_y;
///////////////////////////////////////////////
typedef struct{
int w; //单词对应的值
int o;
int r;
int d;
int s;
char c[20]; //英文单词
char e[20]; //翻译
}str_word;
str_word dictionary[20]={
{1,3,5,0,0,"ACE","王牌"},
{2,5,5,0,0,"BEE","蜜蜂"},
{1,4,4,0,0,"ADD","增加,计算"},
{2,1,4,0,0,"BAD","坏的"},
{4,5,3,1,4,"DECAD","十;十数"}
};
////////////////////////////////////////////////////////
void Adc_or_TsSep() __attribute__ ((interrupt("IRQ")));
void Adc_or_TsSep(void)
{
int i;
U32 Ptx[6], Pty[6];
rINTSUBMSK |= (BIT_SUB_ADC|BIT_SUB_TC); // Mask sub interrupt (ADC and TC)
// TC(Touch screen Control) Interrupt
if(rADCTSC & 0x100)
{
PRINTF("\nStylus Up!!\n");
rADCTSC &= 0xff; // Set stylus down interrupt
}
else
{
PRINTF("\nStylus Down!!\n");
//
rADCTSC=(0<<8)|(0<<7)|(1<<6)|(1<<5)|(0<<4)|(1<<3)|(0<<2)|(1);
// Down,Hi-Z,AIN5,GND,Ext vlt,Pullup Dis,Normal,X-position
for(i=0;i for(i=0;i<5;i++) { rADCCON|=0x1; // Start X-position conversion while(rADCCON & 0x1); // Check if Enable_start is low while(!(0x8000&rADCCON)); // Check ECFLG Ptx[i]=(0x3ff&rADCDAT0); } Ptx[5]=(Ptx[0]+Ptx[1]+Ptx[2]+Ptx[3]+Ptx[4])/5;