版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、评分: _SHANGHAIUNIVERSITY课程报告COURSE PAPER题目:嵌入式电子词典的实现课程名:嵌入式( ARM)系统学院 机电工程与自动化学院专业 电气工程及其自动化学号1212*学生姓名指导教师一、 项目要求:1、在实验板上设计实现一个无操作系统的简易电子词典2、设计友好的人机交互界面3、设计电子词典的基本功能:字符输入、功能选择、英汉翻译。4、二、 电子词典系统实现具体功能:1、能够通过键盘输入英文。键盘作为本系统中最主要的输入设备,需要完成26个英文字母的输入,并且需要上翻页,下翻页,上一行,下一行,翻译,退格等功能。要求键盘至少要有 16个按键,每个按键都可以被处理器
2、及时,准确地读入。具体布局设计如图所示。嵌入式电子词典请输入查询单词UPDOWNDELETEENTERBACK每日一句: Be yourself.The world worships the original.键盘布局图按键分别具有如下功能:a j :实现字母输入;up/down:显示上 / 下一个被查询过的单词;delete :删除一个字母Enter:翻译,将当前单词与词库中内如相比较,若一致则显示其内容,否则给出提示;Back:退格,删除单词最末尾的字母并将光标前移一位。2、提供友好的人机界面,将输入的内容和翻译的结果显示在LCD的相应区域内。LCD显示窗口布局如图 1-2 所示:add_
3、addvi.增加,计算A bill that didn't add upLCD显示窗口布局图最上面输入框内为单词输入区,中间区域为翻译区,左边6个方框是触摸屏按键区。单词输入过程中,翻译区会有相近单词显示,按下翻译键后会在此区域内显示翻译内容。3. 对输入的单词即时翻译。4. 可以记忆 3个已经查询过的的单词。三、程序设计可将电子词典的软件设计分为如下几个主要模块:键值处理、翻译、词库设计和 LCD 显示。1、键值处理电子词典的输入设备为键盘和触摸屏,要完成的功能为:( 1)键盘: 10个英文字母和 6个功能键输入(以a 为例)case '1':/aGlib_Fille
4、dRectangle(115,122,200,439,0xffff);/先清罗列单词区letter=1;/1表示输入字母为1Glib_disp_hzk16(125+wei*20,70," ", 0xf00);/显示界面显示aprevwei=1;/存放disp();/显示单词区的单词wei+;/下一个放字母位置if(wei>=6)Glib_disp_hzk16(300,180," 超出范围 ", 0xff);/ 单词字母小于等于四 delay(1000);Glib_disp_hzk16(300,180," 超出范围 ", 0xff
5、ff);/ 清掉“已经满了” ;/ 超出错误 , 只能查四位break;( 2)触摸屏:5个功能键的输入(以up为例)if(Ptx5>300&&Ptx5<700)&&(Pty5>700&&Pty5<800)/up Glib_FilledRectangle(10,80,110,120,0x55);/输入up 后,触摸屏上相应的up 区域变为蓝色Glib_disp_hzk16(15,85," ", 0x0000);Glib_FilledRectangle(10,140,110,180,0xffff);/do
6、wnGlib_disp_hzk16(15,145," ", 0x0000);Glib_FilledRectangle(10,200,110,240,0xffff);/DelGlib_disp_hzk16(15,205," ", 0x0000);Glib_FilledRectangle(10,260,110,300,0xffff);/EnterGlib_disp_hzk16(15,265," ", 0x0000);Glib_FilledRectangle(10,320,110,360,0xffff);/backGlib_disp_hzk
7、16(15,325,"", 0x0000);flag-;/实现同键盘相同的up 功能if(flag>=0&&flag<=3)Cursor(flag);CursorCl(flag+1);else flag=0;2、翻译:void translate(int num)/显示单词选项 3个Glib_disp_hzk16(250,300,vocabnum.e, 0x0);3、词库设计翻译功能中通过将输入单词和词库中相应的单词进行比较得到要显示的翻译结果,因此,词库可采用结构体实现,此结构中包括3项:输入的键值、查询的单词、单词的意思。typedef st
8、ructint w;/ 单词对应的值int o;int r;int d;char c50;/ 单词char e100;/ 单词的翻译str_word;str_word vocab16=1,0,0,0," "," 不定冠词 ",1,4,4,0," "," 增加,计算 ",1,7,5,0," "," 年龄 ; 时代 ",1,9,4,0," "," 救援,资助,援助 ",/四位数字表示的是按下的按键2,1,4,0," ",
9、" 坏的 ",2,1,7,0," "," 手提包 "4、LCD显示功能翻页、选行及翻页结果的输出都可以归到LCD显示功能中, 这些功能都可以通过调用LCD实验中的相关函数完成。四、遇到的问题1、在编辑英文字母到LCD显示屏上显示的时候,总是会出现乱码。解决方法:开始的时候老师说要改变中英文输入方式,在中文方式下输入英文就可以显示了,但是发现不行。后来才知道我们理解错了老师的意思,将输入法的半角改成全角,然后就可以在屏幕上显示字母了。2、LCD的显示屏上的坐标定位不知道怎么更改。解决方法:因为在写画框画线的程序的时候,我们采用的坐标是以
10、正对显示屏左下角为坐标原点的,而等到触屏定坐标的时候,我们发现,将触摸屏顺时针旋转九十度,才是以左下角为坐标原点的。基于此,两次编程的坐标不能选用同一套坐标系统。通过 DNW软件一次次测试,我们才将需要定位的范围坐标一个个测试出来,实现了触屏的功能。3、触屏中断和键盘无法做到同时使用。解决方法:对于触屏中断,首先是因为才开始接触,不太理解touch 例程中的一些语句,其次是 whiel ( 1)这一句要不要注释。通过一次次失败, 我们终于理解了整个程序的意思,将键盘程序加入到触屏中断当中,触屏中断采用 while ( 1)即可。能够达到键盘和触屏同步使用。五、心得体会1、我不相信学习有什么捷径
11、,如果觉得自己没有那么聪明,那么就只能一次次调试,一次次失败,一次次总结,即使结果不好,在过程中也能收获很多,当然,结果通常是和付出成正比的。2、团队合作很重要。我记得有一个小组分工特别明确,三个人分别做翻页、触屏、框架,然后做的时间就相对比较少了。虽然说我们这次的项目涉及到的东西并不是很多,但是他么能够明确分工,这种工作方式就是很值得借鉴的。总是喜欢单打独斗的话,花费的时间和精力毕竟太多。附录 : 基本程序(对于功能相似,程序架构类似的部分,只保留代表性的内容)/*包含文件 */#include "def.h"#include "2410lib.h"#
12、include "option.h"#include "2410addr.h"#include "interrupt.h"#include "lcdlib.h"/#define STN_LCD#define TFT_8_0void Lcd_Disp_Char(void);void Lcd_Disp_Grap(void);void Draw_back(void);/设置背景框架void search_dip(void);/查询时显示void Keycontrol(void);void Cursor(int flag)
13、;/光标void CursorCl(int flag);void delay( int count );void disp();void translate(int num);void Ts_Sep(void);#define TS_JUSTIFY_LEFTTOP 1#define TS_JUSTIFY_RIGHTBOT 2#define TS_START3void Draw_back(void);void Adc_or_TsSep() _attribute_ (interrupt("IRQ");static int x=0,y=0,letter=0,flag=0,wei=
14、0,prev7,i,j,turnpage=1;/int which20;/此时满足罗列单词/*词库设计 */typedef structint w;/ 单词对应的值int o;int r;int d;char c50;/ 单词char e100;/ 单词的翻译str_word;str_word vocab16=1,0,0,0," "," 不定冠词 ",1,4,4,0," "," 增加,计算 ",1,7,5,0," "," 年龄 ; 时代 ",1,9,4,0," &q
15、uot;," 救援,资助,援助 ",/四位数字表示的是按下的按键2,1,4,0," "," 坏的 ",2,1,7,0," "," 手提包 "/ Description: JXARM9-2410触摸屏实验主程序void Main(void)ChangeClockDivider(1,1);/ 1:2:4/*配置系统时钟*/ChangeMPllValue(0xa1,0x3,0x1);/ FCLK=202.8MHzPort_Init();/*初始化端口*/Uart_Init(0,115200); /*初
16、始化串口*/Uart_Select(0);Lcd_Port_Init();/* LCD初始化*/#ifdef STN_LCDLcd_Init(MODE_CSTN_8BIT);Glib_Init(MODE_CSTN_8BIT);Lcd_CstnOnOff(1);Glib_ClearScr(0xff, MODE_CSTN_8BIT);#else#ifdef TFT_8_0rGPCCON &= (3<<8);rGPCCON |= (2<<8);Lcd_Init(MODE_TFT_16BIT_640480);Glib_Init(MODE_TFT_16BIT_640480
17、);Glib_ClearScr(0xffff, MODE_TFT_16BIT_640480);Lcd_PowerEnable(0, 1);Lcd_EnvidOnOff(1);#elseLcd_Init(MODE_TFT_16BIT_240320);Glib_Init(MODE_TFT_16BIT_240320);Glib_ClearScr(0xffff, MODE_TFT_16BIT_240320);Lcd_PowerEnable(0, 1);Lcd_EnvidOnOff(1);#endif#endif#define LCD_DISP_CHAR#ifdef LCD_DISP_CHAR#else
18、Lcd_Disp_Grap();#endifDraw_back();/Ts_Sep();/背景触屏中断void Draw_back()Glib_FilledRectangle(0,0,640,240,0xffff); /Glib_FilledRectangle(0,400,640,240,0x0f00); /Glib_disp_hzk16(250,20,"嵌入式电子词典Glib_Rectangle(120,60,600,100,0x0000);/白底绿色下底", 0xff);首字母框Glib_disp_hzk16(20,400,"每日一句:", 0x0)
19、;Glib_disp_hzk16(20,420,"", 0x0);Glib_disp_hzk16(20,440," ", 0x0);void search_dip()Glib_Rectangle(10,80,110,120,0x0000);/upGlib_disp_hzk16(15,85," ", 0x0000);Glib_Rectangle(10,140,110,180,0x0000);/downGlib_disp_hzk16(15,145," ", 0x0000);Glib_Rectangle(10,200,1
20、10,240,0x0000);/DelGlib_disp_hzk16(15,205," ", 0x0000);Glib_Rectangle(10,260,110,300,0x0000);/EnterGlib_disp_hzk16(15,265," ", 0x0000);Glib_Rectangle(10,320,110,360,0x0000);/backGlib_disp_hzk16(15,325," ", 0x0000);/*触摸屏void Ts_Sep(void)ts_status = TS_JUSTIFY_LEFTTOP; rA
21、DCDLY = (50000); / ADC Start or Interval DelayrADCCON = (1<<14)|(ADCPRS<<6)|(0<<3)|(0<<2)|(0<<1)|(0); rADCTSC = (0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3); pISR_ADC = (unsigned)Adc_or_TsSep;rINTMSK &=(BIT_ADC);rINT
22、SUBMSK =(BIT_SUB_TC);search_dip();Keycontrol();rINTSUBMSK |= BIT_SUB_TC;rINTMSK|= BIT_ADC;void Adc_or_TsSep(void)/触摸屏中断服务函数int i;U32 Ptx6, Pty6;rINTSUBMSK |= (BIT_SUB_ADC|BIT_SUB_TC); / Mask sub interrupt (ADC and TC)if(rADCTSC & 0x100) / TC(Touch screen Control) InterruptPRINTF("nStylus Up
23、!n");rADCTSC &= 0xff;/ Set stylus down interruptelsePRINTF("nStylus Down!n");rADCTSC=(0<<8)|(0<<7)|(1<<6)|(1<<5)|(0<<4)|(1<<3)|(0<<2)|(1);for(i=0;i<LOOP;i+);/delay to set up the next channelfor(i=0;i<5;i+)rADCCON|=0x1;/ Start X-posit
24、ion conversionwhile(rADCCON & 0x1);/ Check if Enable_start is lowwhile(!(0x8000&rADCCON);/ Check ECFLGPtxi=(0x3ff&rADCDAT0);Ptx5=(Ptx0+Ptx1+Ptx2+Ptx3+Ptx4)/5;rADCTSC=(0<<8)|(0<<7)|(1<<6)|(1<<5)|(0<<4)|(1<<3)|(0<<2)|(2); / <Y-Position Read>/
25、 Down,GND,Ext vlt,Hi-Z,AIN7,Pullup Dis,Normal,Y-positionfor(i=0;i<LOOP;i+);/delay to set up the next channelfor(i=0;i<5;i+)rADCCON|=0x1;/ Start X-position conversionwhile(rADCCON & 0x1);/ Check if Enable_start is lowwhile(!(0x8000&rADCCON);/ Check ECFLGPtyi=(0x3ff&rADCDAT1);Pty5=(P
26、ty0+Pty1+Pty2+Pty3+Pty4)/5;rADCTSC=(1<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);/ Up,GND,AIN,Hi-z,AIN,Pullup En,Normal,Waiting mode if(Ptx5>300&&Ptx5<700)&&(Pty5>700&&Pty5<800)/upGlib_FilledRectangle(10,80,110,120,
27、0x55);Glib_disp_hzk16(15,85," ", 0x0000);Glib_FilledRectangle(10,140,110,180,0xffff);/downGlib_disp_hzk16(15,145," ", 0x0000);Glib_FilledRectangle(10,200,110,240,0xffff);/DelGlib_disp_hzk16(15,205," ", 0x0000);Glib_FilledRectangle(10,260,110,300,0xffff);/EnterGlib_disp_
28、hzk16(15,265," ", 0x0000);Glib_FilledRectangle(10,320,110,360,0xffff);/backGlib_disp_hzk16(15,325," ", 0x0000);flag-;if(flag>=0&&flag<=3)Cursor(flag);CursorCl(flag+1);else flag=0;if(Ptx5>580&&Ptx5<660)&&(Pty5>770&&Pty5<900)/downif
29、(Ptx5>500&&Ptx5<580)&&(Pty5>760&&Pty5<890)/deleteif(Ptx5>400&&Ptx5<450)&&(Pty5>760&&Pty5<880)/enterif(Ptx5>280&&Ptx5<350)&&(Pty5>760&&Pty5<880)/backrSUBSRCPND |= BIT_SUB_TC; rINTSUBMSK = (BIT_
30、SUB_TC); ClearPending(BIT_ADC);void disp()y=0;for(i=0;i<=20;i+)/ Unmask sub interrupt (TC)/初始单词显示位置if(vocabi.w=prev0)&&(wei=0)/第一个字母照正确whichy=i;/存放哪几个单词显示了Glib_disp_hzk16(125,125+32*y,vocabi.c, 0x0);/显示单词y+;/位置改变if(vocabi.w=prev0)&&(vocabi.o=prev1)&&(wei=1) if(vocabi.w=pre
31、v0)&&(vocabi.o=prev1)&&(vocabi.r=prev2)&&(wei=2)if(vocabi.w=prev0)&&(vocabi.o=prev1)&&(vocabi.r=prev2)&&(vocabi.d=prev3)&&(wei=3)void translate(int num)/显示单词选项 3个Glib_disp_hzk16(250,300,vocabnum.e, 0x0);void Cursor(int flag)/Glib_FilledRectangl
32、e(65,121+flag*32,75,153+flag*32,0x55);Glib_FilledRectangle(120,121+flag*32,400,50+flag*32,0x0);void CursorCl(int flag)/Glib_FilledRectangle(65,121+flag*32,75,153+flag*32,0xffff); Glib_FilledRectangle(120,121+flag*32,400,50+flag*32,0x0);void Keycontrol() while(1)Cursor(flag); unsigned char ch='1&
33、#39;ch = Key_GetKeyPoll();switch(ch)case '1':/aGlib_FilledRectangle(115,122,200,439,0xffff);/先清罗列单词区letter=1;/1表示输入字母为1Glib_disp_hzk16(125+wei*20,70," ", 0xf00);/显示界面显示aprevwei=1;/存放disp();/显示单词区的单词wei+;/下一个放字母位置if(wei>=6)Glib_disp_hzk16(300,180," 超出范围 ", 0xff);/ 单词字母小
34、于等于四 delay(1000);Glib_disp_hzk16(300,180," 超出范围 ", 0xffff);/ 清掉“已经满了” ;/ 超出错误 , 只能查四位break;case '2':/bcase '3':/ccase '4':/dcase '5':/ecase '6':/fcase '7':/gcase '8':/hcase '9':/icase '0':/jcase 'A':/kletter=11
35、;break;case 'C':/上flag-;if(flag>=0&&flag<=3)Cursor(flag);CursorCl(flag+1);else flag=0;break;case 'D':/下flag+;if(flag>=0&&flag<=3)Cursor(flag);CursorCl(flag-1);else flag=3;break;case 'E':/backturnpage=1;disp();Glib_FilledRectangle(115,122,600,350,0xcc33);Glib_d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026岭南师范学院招聘二级学院院长2人备考题库(广东)附答案详解(完整版)
- 某电池厂产品检测质量控制准则
- 2026天津联通派遣制智家工程师、营业员招聘5人备考题库及答案详解(新)
- 2026国家统计局兵团第十四师调查队招聘1人备考题库(新疆)附答案详解(能力提升)
- 2026云南怒江州中级人民法院招聘编外聘用制人员6人备考题库及答案详解【各地真题】
- 2026上半年四川中医药高等专科学校招才引智招聘5人备考题库(上海场)及参考答案详解(精练)
- 2026四川 巴中市属国企市场化招聘聘职业经理人5人备考题库附答案详解(轻巧夺冠)
- 2025吉林省吉林大学材料科学与工程学院郎兴友教授团队博士后招聘1人备考题库及参考答案详解(达标题)
- 2026年烟台文化旅游职业学院公开招聘高层次、高技能人才备考题库及参考答案详解(a卷)
- 2026河北石家庄井陉矿区人民医院招聘16人备考题库带答案详解(精练)
- 医院物业管理服务投标方案(技术标)
- 2025年华侨港澳台生联招考试高考地理试卷试题(含答案详解)
- 考研学习笔记 《软件工程导论》(第6版)笔记和课后习题详解
- 人音版音乐四年级下册《第七课 回声》大单元整体教学设计2022课标
- 梦幻西游手游账号交易协议书
- 2024年水溶性肥项目申请报告范稿
- 水库调度规程
- MOOC 物理与艺术-南京航空航天大学 中国大学慕课答案
- 哥尼斯堡七桥问题与一笔画课件
- 景观照明设施养护投标方案(技术方案)
- 全国计算机等级考试一级教程-计算机系统
评论
0/150
提交评论