• 大小: 2.59MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-20
  • 语言: 其他
  • 标签: 嵌入式  

资源简介

实现了bmp格式图像的显示。主要包括16bit 565图像的解码和显示。前翻、后翻触摸屏事件的实现。 需求设计 (1) 在ARM9平台上,实现液晶屏显示16位(R5 G6 B5)BMP彩色图像; (2) 实现触摸屏的功能,利用触摸屏可以实现BMP图像“上一张”和“下一张”的轮换显示; (3) BMP文件的解码函数的实现; (4) 触摸屏功能的实现;  详细设计:  BMP文件的构成 (1) BMP文件可以看成4大块的内容: (2) 位图文件头(bitmap-file header); (3) 位图信息头(bitmapinformation-header); (4) 色彩表(color table); (5) 位图的字节阵列(即位图数据流); (6) 如图1所示。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

#include “msg.h“
#include “utils.h“
#include “key.h“
#include “keyboard.h“
#include “touch.h“
#include “seatimer.h“
#include “utils.h“

#include “graph.h“
#include “mainwindow.h“
#include “button.h“
#include “editbox.h“

#include “cvcfg.h“

#ifdef USING_CAL_DEMO

//以下是关于计算器几何形状的宏定义
#define NBTN 15 //按钮个数
#define H_TEXTBOX 40//30 //结果显示框的高度
#define W_TEXTBOX 200//148 //结果显示框的宽度
#define G_DIGIT_BUTTON 6//按键之间的空隙
#define W_DIGIT_BUTTON ((W_TEXTBOX - 2*G_DIGIT_BUTTON)/3)//按键的宽度
#define H_DIGIT_BUTTON H_PUSHBUTTON //按键的高度
#define DW_DIGIT_BUTTON ( W_DIGIT_BUTTON + G_DIGIT_BUTTON ) //按键加空隙的总长度
#define DH_DIGIT_BUTTON (H_DIGIT_BUTTON + G_DIGIT_BUTTON) //按键加空隙的总高度

//以下是按键编号1~9为数字按键1~9
#define ZERO 10 //0
#define PLUS 11 //加号
#define MINUS 12 //减号
#define EQUAL 13 //等于号
#define BACKSPACE 14 //退格键
#define CLEAR 15 //清除键

//以下是两个加数的区分号
#define ADDEND1 0
#define ADDEND2 1


//为了简化计算器输入、计算、结果处理等过程,OPSTATE枚举了计算器当前所处的状态
typedef enum _OPSTATE{
O_ADDEND1_BEGIN = 0 //开始输入第一个加数
O_ADDEND1_GETTING =1 //正在接收第一个加数的其他位
O_ADDEND2_BEGIN = 2 //开始输入第二个加数
O_ADDEND2_GETTING = 3  //正在接收第二个加数的其他位
O_CALCULATE= 4 //计算结果
}OPSTATE;//请大家想想每个状态是如何转换的?每个状态下对输入按键应如何响应?

//为了标记每个状态下的特征,DATASTATE枚举了可能的情况
enum DATASTATE
{
D_DIGIT_ONLY=0 //只能接收数字,在输入加数时先输入了符号,则接下来只能接收数字
D_NOMORE_ZERO=1 //输入的零无效,在开始输入一个数字时对个0只能当作一个0,例如000就是0
D_NOMORE_BS = 2 //退格删除时所有位都被删除了,则对再次输入退格键就无响应
D_BACKSPACE = 3 //接收到的是退格键
D_ALL //可以接收所有按键输入
};//这些标记对于加数的值和输入结果在显示框中更新很有用。

//_CState描述了计算器的状态数据,每个状态转换函数会对其数据进行修改
typedef struct _CState{
int state; //OPSTATE
int flag; //DATASTATE
int val[2]; //两个加数的值
int res; //结果的数字
char addend[2][12];//两个加数的字符数组
int index[2]; //加数的字符数组的索引
char result[12];//结果的加数的字符数组
char op[2]; //运算符
}CState;
//一下是函数原型声明
HSlot void onGetInput(Payload *pdint num);//按钮的槽响应函数,每个按钮是HButton类型控件,它有clicked信号,在按下后被触发。也就是说每个按钮按下后会调用此函数。
HSlot void onShowResult(Payload *pdint num);//每个按钮初始化后加入了updateResult(int key)信号。这个信号会触发onShowResult函数,执行状态转换
HSlot void onFile(Payload *pdint num); //文件菜单响应槽
//下面的三个函数处理每个状态下具体的细节,主要是对每个输入的按键后的响应。参数:state,状态参数;input,输入按钮的编号;key,按键的字符值;o,加数选择,指明操作第一个加数还是第二个。返回值:是否需要更新显示框
bool stateChangeStepOne(CState* stateint inputchar keyint o);
bool stateChangeStepTwo(CState* stateint inputchar keyint o);
bool stateChangeStepThree(CState* sint inputchar keyint o);

void updateResult(HWidget *txtbxCState *s);//更新结果显示框。
HLocal void getResult(CState *s);  //根据状态数据计算结果
HLocal void cleanState(CState *s); //清除状态数据
//下面是初始化计算器,在窗口mwnd的xy位置,结果显示框为txtbx,按键为btns
bool initCalculator(HMainWindow *mwndHWidget*txtbxint nHButton btns[]int xint y);

HSlot void onGetInput(Payload *pdint num)
{
int kval;
object *key;
key = getObj(pd); //得到接收者对象指针,即connect函数中指定的接收者。例如,本程序中是连接到按钮本身,即指向按钮的指针
if(strcmp(key->name“+“) == 0) //每个按键的名字作为区分按键的标志。得到按钮编号。
kval = PLUS;
else if(strc

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    2513012  2010-04-14 21:14  rtware_arm9\lib\sealib_arm9.a

     文件      14408  2009-04-24 20:49  rtware_arm9\lib\2410init.o

     文件         64  2009-08-30 22:14  rtware_arm9\lib\vssver.scc

     文件        129  2009-04-02 16:43  rtware_arm9\docs\说明.txt

     文件         48  2009-08-30 22:14  rtware_arm9\docs\vssver.scc

     文件     165888  2010-03-30 08:54  rtware_arm9\docs\JPEG解码算法的详细分析.doc

     文件     846848  2010-03-30 08:58  rtware_arm9\docs\HGUI的文本框设计.doc

     文件     419328  2010-03-30 08:51  rtware_arm9\docs\HGUI的对话框设计.doc

     文件        274  2009-04-02 14:50  rtware_arm9\build\scat.scf

     文件        931  2000-11-05 02:28  rtware_arm9\build\reset.ini

     文件     221993  2010-04-15 08:03  rtware_arm9\build\rtware_arm9.mcp

     文件         96  2009-08-30 22:14  rtware_arm9\build\vssver.scc

     文件       3450  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\CWSettingsWindows.stg

     文件         48  2009-08-30 22:14  rtware_arm9\build\rtware_arm9_Data\vssver.scc

     文件      69613  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\Debug\TargetDataWindows.tdt

     文件         48  2009-08-30 22:14  rtware_arm9\build\rtware_arm9_Data\Debug\vssver.scc

     文件      68239  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\Release\TargetDataWindows.tdt

     文件         48  2009-08-30 22:14  rtware_arm9\build\rtware_arm9_Data\Release\vssver.scc

     文件     139512  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\TargetDataWindows.tdt

     文件     785832  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\rtware_arm9.axf

     文件         64  2009-08-30 22:14  rtware_arm9\build\rtware_arm9_Data\DebugRel\vssver.scc

     文件         64  2009-08-30 22:14  rtware_arm9\build\rtware_arm9_Data\DebugRel\rtware_arm9.bin\vssver.scc

     文件        928  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\rtware_arm9.bin\ROM1

     文件     366356  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\rtware_arm9.bin\ER_RO

     文件        160  2009-08-30 22:14  rtware_arm9\build\rtware_arm9_Data\DebugRel\objectCode\vssver.scc

     文件      35732  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\objectCode\touchdev.o

     文件      91552  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\objectCode\calculator.o

     文件     114460  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\objectCode\clock.o

     文件      30552  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\objectCode\cvled.o

     文件      35736  2010-04-15 08:03  rtware_arm9\build\rtware_arm9_Data\DebugRel\objectCode\feature.o

............此处省略108个文件信息

评论

共有 条评论