2022年嵌入式课程设计电子词典硬件设计.doc
《2022年嵌入式课程设计电子词典硬件设计.doc》由会员分享,可在线阅读,更多相关《2022年嵌入式课程设计电子词典硬件设计.doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、上海电力学院嵌入式系统课程设计报告题目: 电子词典的设计 姓 名: 学 号: 院系: 专业年级: 同组成员: 年月日一、实验内容及要求在LCD屏幕左侧绘制出单词输入框和释义显示框以及一个搜索键,右侧绘制4*4键盘按钮,模仿出简易电子词典的功能,按钮操作用触摸屏或键盘实现均可。实现功能:(1)LCD屏幕上显示4*4键盘,显示单词及其翻译、例句。(2)一个键可完成2个英文字母的输入,如左上角第一个键可实现输入a,b两个字母,第一次按下时为输入a,假如需输入b,只需连续快速按键两次即可。(3)在输入完单词后,点击搜索键,即可在释义显示框中显示该单词的词性、中文解释、例如词组和句子等。(4)当发觉输入
2、的单词在库中不存在时,可实现将该单词添参加库的操作。二、设计思路(1)通过LCD显示模块画出电子词典操作界面。(2)对应界面中各键的位置设置键盘对应键值。(3)设定功能键,实现以下3个功能:退格键:删除最后一位字母;搜索保存键:对输入框的单词进展推断,假设单词存在于词库中,则显示单词词性、词义、例句;假设单词不存在则自动进展保存;转换键:按下后,字母键输出对应的第二个字母。(4)按键后赋值并显示。三、软件构架开场LCD模块键盘模块完毕四、模块分析(1)键盘模块流程图:开场键盘初始化键盘是否按下Y读取键值是否是功能键YN执行功能赋值显示完毕N源代码:/* File:keyboard.c* Aut
3、hor: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 word20;int wordInd
4、ex=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);/*-
5、 function code -*/* name:Test_Keyboard* func:test keyboard* para:none* ret:none* modify:* comment:*/void Test_Keyboard()Uart_Printf(n Keyboard Test Examplen);Uart_Printf(n Please press one key on keyboard and look at LED .n);/ init keyboardinit_keyboard();while(1);/ close keyboard/ close_keyboard();
6、/* 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); p
7、ISR_EINT1 = (int)isrEINT1; pISR_EINT4567 = (int)isrEint4567; /* PORT G */ rPCONG = 0xffff;/ EINT70rPUPG = 0x0;/ pull up enable rEXTINT = rEXTINT|0x20;/ EINT1 falling edge moderI_ISPC = BIT_EINT1|BIT_EINT4567;/ clear pending bitrEXTINTPND = 0xf;/ clear EXTINTPND reg/* name:close_keyboard* func:close
8、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 Keyboar
9、dInt(void)int nTemp,i,j,k,m=0;char bbyte;rI_ISPC = BIT_EINT1;/ clear pending bitchar pbyte10;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
10、; 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; wordwordIndex=0; wordIndex-;
11、 break; /*if(n=0) word20=0; wordIndex=0; Lcd_Draw_HLine(10, 310,85, WHITE, 160); break;*/ case 13: wordwordIndex=0; wordIndex=0; for(i=0;i20;i+) if(strcmp(word,vocabi.c)=0) j=0; k=i; break; else j=1; if(j=0) /#ifdef Eng_v Lcd_DspAscII8x16(15,40,BLUE,vocabk.c);Lcd_DspAscII8x16(15,60,BLUE,vocabk.d);Lc
12、d_DspAscII8x16(15,80,BLUE,vocabk.f);/#elseLcd_DspHz16(15,100,BLUE,vocabk.e);/#endif else Lcd_DspHz16(15,120,BLUE,未找到相应的单词); DelayMs(600); Lcd_DspHz16(15,120,WHITE,未找到相应的单词); break; case 14: wordwordIndex=0; wordIndex=0; for(i=0;ix0) for(i = 0; i 20; i+) vocabx.ci=wordi; wordi=0; Lcd_DspAscII8x16(15,
13、40,BLUE,vocabx.c); x+; else x=15; /Lcd_DspAscII8x16(15,45,BLUE,word); for(i = 0; i 20; i+) wordi=0; break; case 15: /Lcd_Draw_Box(10,40,310,80,GREEN); break; if(num!=0counter!=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; c
14、ase 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;br
15、eak; 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) wordwordIndex=bbyte; wordIndex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 嵌入式 课程设计 电子词典 硬件 设计
限制150内