当前位置:文档之家› 基于S3C44BOX的电子词典软件设计与实现

基于S3C44BOX的电子词典软件设计与实现

基于S3C44BOX的电子词典软件设计与实现1 概述此次基于ARM7的电子词典系统开发作业,由我们小组4人合作完成,其中我主要负责软件方面的开发,所做的方面有英译汉软件功能的实现,输入值软件识别功能的实现以及看门狗定时器的实现。

由于不怎么熟悉arm的开发,基本是看着书做,设计思路和方法、功能实现也都是书上怎么来,自己就怎么实现,希望傅老师谅解,这块的基础确实薄弱。

2 S3C44BOX处理器介绍2.1 S3C44BOX简介S3C44BOX微处理器片类集成ARM7TDMI核,采用0.25μm CMOS工艺制造,并在ARM7TDMI核的基础上集成了丰富的外围功能模块,便于低成本设计嵌入式系统应用系统。

片上集成的主要功能如下:在ARM7TDMI基础上增加至8KB的Cache。

外部扩充存储器控制器(FP/EDO/SDRAM控制,片选逻辑)。

LCD控制器(最大支持256色的DSTN),并带有一个LCD专用DMA通道。

2个通用DMA通道2个带外部请求引脚的DMA通道。

2个带有握手协议的UART,1个SIO。

1个多主的I2C总线控制器。

1个I2S总线控制器。

5个PWM定时器及1个内部定时器。

看门狗定时器。

71个通用可编程I/O口,8个外部中断源。

功耗控制模式:正常,低速,休眠和停止。

8路10位ADC。

具有日历功能的RTC(实时时钟)。

PLL时钟发生器。

2.2 S3C44BOX特点2.2.1 S3C44BOX体系结构S3C44BOX是基ARM7TDMI体系结构的SOC。

集成了手持设备和通用嵌入式系统应用的解决方案;16/32位RISC体系结构和ARM7TDMI处理器内核强大的指令体系;Thumb代码压缩机,最大化代码密度同时保持了32位指令的性能;基于JTAG的片上集成ICE调试支持解决方案;32×8位硬件乘法器;实现低功耗SAMBA II(三星ARM处理器嵌入式微控制器总线体系结构)的新型总线结构。

2.2.2 系统(存储)管理支持大/小端方式;寻址空间:每bank32M字节(共256M字节);支持每bank可编程的8/16/32位数据总线宽度;7个bank具有固定的bank起始地址和可编程的bank大小;1个bank具有可编程的bank起始地址和bank大小;8个存储器bank:-6个ROM,SRAM存储器bank;-2个ROM/SRAM/DRAM(快速页面,EDO和同步DRAM);所有的存储器bank具有可编程的操作周期;支持外部等待信号延长总线周期;支持掉电时DRAM/SDRAM的自刷新模式;支持均匀/非均匀的DRAM地址。

2.2.3 Cache存储器和内部SRAM4路组相联统一的8KB指令/数据Cache;未用的Cache空间用来作为4/8 KB Cache存储空间可作为片内的SRAM使用;支持LRU(近期最少使用)替换算法采用保持主存储器与cache内容一致性的“写穿式”策略写存储器具有4级深度当缓冲区出错时,采用“请求数据优首先填充”技术2.2.4 时钟和电源管理低功耗片上PLL使MCU工作时钟最大达到75MHz可以通过软件设置各功能模块的输入时钟电源模式:正常,慢速,空闲和停止模式;◆正常模式正常工作模式;◆低速模式不加PLL的低时钟频率模式;◆休眠模式只停止CPU的时钟;◆SL空闲模式 LCD控制器工作◆停止模式停止所有的时钟;通过EINT[7:0]或RTC报警中断从停止模式唤醒2.2.5 中断控制器30个中断源(看门狗定时器,6个定时器,6个UART,8个外部中断,4个DMA,2个RTC,1个ADC,1个I2C,1个SIO)采用向量化的IRQ中断模式以减少中断的延迟可选的电平/边沿模式触发外部中断电平/边沿模式具有可编程的优先级支持FIQ为紧急的中断请求进行服务2.2.6 定时器和PWM(脉宽调制)5通道16位具有PWM功能的定时器,1通道16位内部定时器(可进行基于DMA或中断的操作)可编程的占空比周期,频率,和优先级能产生死区支持外部时钟源2. 2.7 RTC(实时时钟)充分的时钟特性:毫秒,秒,分钟,小时,日,星期,月,年32.768KHz时钟;定时警报,可用于唤醒CPU;可产生时钟节拍中断2.2.8 通用I/O口8个外部中断口71个多功能输入/输出口2.2.9 UART(异步串行通讯)2通道UART,可进行基于DMA或中断的操作支持5位,6位,7位或8位串行数据传输/接收支持在发送/接收期间的H/W握手功能可编程的波特率支持IrDA 1.0(115.2Kbps)支持用于测试的回馈模式每个通道具有2个内部32字节的FIFO分别用于输入和输出2.2.10 DMA(直接存储器操作)控制器2通道通用DMA(直接存储器操作)控制器,不需要CPU干预2通道DMA桥(外设DMA)控制器支持I/O到存储器,存储器到I/O,I/O到I/O的6种DMA请求:软件,4个内部功能模块(UART,SIO,定时器,IIS),和外部引脚。

在同时发生的多个DMA之间具有可编程的优先级顺序;采用猝发式的传输模式以提高FPDRAM, EDODRAM和SDRAM的数据传输速率;支持在外部设备到存储器和存储器到外部设备之间采用fly-by模式2.2.11 A/D转换器8通道的ADC最大500k SPS/10-bit2.2.12 LCD 控制器支持彩色/黑白/灰度LCD屏支持单路扫描和双路扫描支持虚拟显示屏功能系统存储器用来作为显示缓存用专门的DMA来从系统存储器中获得图象数据可编程的屏幕大小灰度等级:16级灰度;最多256种颜色2.2.13 看门狗定时器16位的看门狗定时器在定时器溢出时发出中断请求或系统复位2.2.14 I2C总线接口1通道多主I2C总线,可进行基于中断的操作模式可进行串行,8位,双向数据传输,标准模式速度达到100Kbit/S,快速模式达到400Kbit/s2.2.15 I2S总线接口1通道音频I2S总线接口,可进行基于DMA的操作串行,每通道8/16位数据传输支持MSB-justified数据格式2.2.16 SIO(同步串行I/O)1通道SIO,可进行基于DMA或中断的操作可编程的波特率支持8位串行数据的传输和接收操作2.2.17 工作电压范围内核2.5V, I/O口:3.0V到3.6V2.2.18 工作频率最大75MHz2.2.19 封装160LQFP/160FBGA2.3 S3C44BOX功能结构框图图1 S3C44BOX功能结构框图2.4 S3C44BOX芯片引脚定义图2 S3C44BOX芯片引脚定义图3 基于S3C44BOX电子词典开发嵌入式系统以其体积小,性能好,功耗低,可靠性高以及面向行业应用的特点已被广泛应用与各个领域。

其中电子词典是嵌入式系统消费电子领域典型的应用实例,它具有完整的输入/输出设备。

3.1 电子词典系统定义与需求分析电子词典系统应具备以下功能要求:(1)能够通过键盘、触摸屏输入英文a~z:实现字母输入;Page up/down:显示上/下一个被查询过的单词;Line up/down:光标移至上/下一行,在单词输入过程中,在单词翻译区会有拼写相近单词显示,用Line up/down按键可以上下选择这些单词;Enter:翻译,将当前单词与词库中的内容相比较,如有一致则显示其内容,否则给出提示;Back space:退格,删除单词最末尾的字母并将光标前移一位;提供触摸屏输入六个功能键。

(2)提供友好的人机界面,将输入的内容和翻译的结果显示在LCD的相应区域内。

(3)对输入的单词即时翻译。

(4)可以记忆3个已经查询过的单词。

图3-1 查询界面3.2 电子词典方案设计为实现电子词典功能需求,结合嵌入式系统软硬件协同技术设计,采取以下设计方案。

3.2.1硬件设计依据ARM芯片的选择原则,此处选择集成了丰富的外围功能模块,便于低成本设计嵌入式应用系统的S3C44BOX处理器作为系统的主控制器。

利用其内置的LCD控制器实现LCD控制接口;利用I²C总线控制器实现键盘控制接口;利用A/D转换器实现触摸屏控制接口;利用UART实现调试接口;利用GPIO连接LED灯显示有关状态。

以上5个硬件部分的开发中,其中第1,2,3,5本组其他同学完成,第4个部分UART实现调试接口的开发与应用,在本文档中重点说明,由本人单独完成。

3.2.2软件设计本电子词典软件只要完成键盘操作,菜单操作及LCD显示功能。

根据软件模块化设计方法将系统软件分为3个模块;词库编写,功能控制软件设计,人机交互接口功能设计。

我负责软件的总体设计图,实现其基本功能。

其中按键分别具有如下功能:a~z:实现字母输入;Page up/down:显示上/下一个被查询过的单词;Line up/down:光标移至上/下一行,在单词输入过程中,在单词翻译区会有拼写相近单词显示,用Line up/down按键可以上下选择这些单词;Enter:翻译,将当前单词与词库中内如相比较,若一致则显示其内容,否则给出提示;Back space:退格,删除单词最末尾的字母并将光标前移一位。

本电子词典系统还需要提供触摸输入,在触摸屏上划分出6个区域,分别对应键盘上的6个功能键。

4 开发环境电子词典硬件模块测试软件和无操作系统电子词典应用软件的开发采用了相同的交叉开发环境。

宿主机PC机上运行ARM公司为方便用户在基于ARM 内核处理器上进行软件开发而推出的集成开发工具ARMADS(ARM Developer Suite)最新版本 1.2在Codewarrior IDE(Integrate Development Environment)集成开发环境中编辑电子词典软件程序,通过交叉编译器和交叉链接器对软件进行编译,链接。

最终生成可执行文件,通过在线仿真器Multi-ICE将此可真行文件下载到目标板运行。

在线仿真器通过并口链接宿主机,通过JTAG接口链接目标机。

串口线直接链接宿主机和目标板,在宿主机PC机上显示吊饰信息。

为加快软件开发的进度,在电子词典硬件平台未建立起来以前先使用Embest EDUKIT 实验板作为目标本吊饰各功能模块软件。

5 开发功能说明和代码5.1英译汉功能软件由于要查的英文单词有两种输入方式:一种是通过在输入框中输入字母;另一种是通过上一行/下一行键在选择框里显示的单词中进行选择,所以用参数Position表示输入方式(TRUE:输入框,FALSE:选择框查找)。

具体实现流程如图所示:/************************************************************ name: translate* func: Translation function implementation program* para: none* ret: none* modify:* comment*************************************************************/ U8 transate(S8* word,U8 Position,U8 No){U8 k=0;Trans_Clear();Dis_Chinese(20,55,Gui_WHITE,”正在查找,请等待!”);if(!Position){strcpy(word,vocab[No].c);Disp_String(word,English_area.x0+5,English_area.y0+2);}for(k=0;k<ALL_WNo;k++){if(strcmp(word,vocab[k].c)==0){Trans_Clear();Disp_String(vocab[k].d,20,55);Disp_chinese(20,75,GUI_WHITE,vocab[k].e);Disp_String(vocab[k].f,20,95);Return k;}}Trans_Clear()’Dis_Chinese(20,55,GUI_WHITE,”查无此词!”);return (k=ALL_WNo);}/******************************************************************** * name: KeyboardInt* func: keyboard interrupt handler function* para: none* ret: none* modify:* comment:********************************************************************/ void KeyboardInt(void){int nTemp,i,j,k,m=0;char bbyte;rI_ISPC = BIT_EINT1; // clear pending bitchar pbyte[10];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;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;word[wordIndex]='\0';wordIndex--;break;/*if(n==0){word[20]=0;wordIndex=0;Lcd_Draw_HLine(10, 310,85, WHITE, 160);}break;*/case 13:word[wordIndex]='\0';wordIndex=0;for(i=0;i<20;i++){if(strcmp(word,vocab[i].c)==0){j=0;k=i;break;}elsej=1;}if(j==0){//#ifdef Eng_vLcd_DspAscII8x16(15,40,BLUE,vocab[k].c);Lcd_DspAscII8x16(15,60,BLUE,vocab[k].d);Lcd_DspAscII8x16(15,80,BLUE,vocab[k].f);//#elseLcd_DspHz16(15,100,BLUE,vocab[k].e);//#endif}else{Lcd_DspHz16(15,120,BLUE,"未找到相应的单词"); DelayMs(600);Lcd_DspHz16(15,120,WHITE,"未找到相应的单词"); }break;case 14:word[wordIndex]='\0';wordIndex=0;for(i=0;i<20;i++){if(strcmp(word,vocab[i].c)==0){j=0;k=i;break;}elsej=1;}if(j==0){//#ifdef Eng_vLcd_DspAscII8x16(15,40,BLUE,vocab[k].c);Lcd_DspAscII8x16(15,60,BLUE,vocab[k].d);Lcd_DspAscII8x16(15,80,BLUE,vocab[k].f);//#elseLcd_DspHz16(15,100,BLUE,vocab[k].e);//#endif}else{if(20>x>0){for(i = 0; i < 20; i++)vocab[x].c[i]=word[i];word[i]='\0';Lcd_DspAscII8x16(15,40,BLUE,vocab[x].c);x++;}elsex=15;//Lcd_DspAscII8x16(15,45,BLUE,word);for(i = 0; i < 20; i++)word[i]='\0';}break;case 15://Lcd_Draw_Box(10,40,310,80,GREEN);break;}if(num!=0&&counter!=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;case 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';break;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;}num=0;counter=0;if(m==0){word[wordIndex]=bbyte;wordIndex++;//n+=10;}}Lcd_DspAscII8x16(15,210,BLUE,word); // Uart_Printf("Key is:%x \r",input_char);}}5.2输入键值识别功能软件本电子词典设计中共有26个字母键和6个功能键。

相关主题