Project_电子相册&音乐播放器&环境检测系统

这篇具有很好参考价值的文章主要介绍了Project_电子相册&音乐播放器&环境检测系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

电子相册

1. 功能设计

  1. 上一张
  2. 下一张
  3. 随机一张
  4. 循环播放
  5. 退出循环播放
  6. 滑动实现相片的切换

2.代码实现

1. 上一张

else if(touch_x1 >= 0 && touch_x1 < 160  && touch_y1 >= 430 && touch_y1<= 480)
		{
			Bmp_display("/mnt/udisk/Logos/bian.bmp",0,430,plcd);
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/shang.bmp",0,430,plcd);
			//printf("return\n");

			if(0 == k)
			{
				k = 31;
			}
            sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",--k);
			Bmp_display(arr,0,0,plcd);

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}

2. 下一张

else if(touch_x1 >= 160 && touch_x1 <320 && touch_y1 >= 430 && touch_y1<= 480)
		{
			Bmp_display("/mnt/udisk/Logos/bian.bmp",160,430,plcd);
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/xia.bmp",160,430,plcd);
			//printf("next\n");

			if(30 == k)
			{
				k = 0;
			}
            sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",++k);
			Bmp_display(arr,0,0,plcd);

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}

3. 随机一张

else if(touch_x1 >= 320 && touch_x1 <480 && touch_y1 >= 430 && touch_y1<= 480)
		{
			Bmp_display("/mnt/udisk/Logos/bian.bmp",320,430,plcd);
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/sui.bmp",320,430,plcd);
			//printf("suiji\n");

			k = random()%30;
			sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",k);
			Bmp_display(arr,0,0,plcd);
			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}

4. 循环播放

else if(touch_x1 >= 480 && touch_x1 <640 && touch_y1 >= 430 && touch_y1<= 480)
		{
			Bmp_display("/mnt/udisk/Logos/bian.bmp",480,430,plcd);
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/xun.bmp",480,430,plcd);
			//printf("xun\n");

			xunflag=1;

			while(1)
			{
				
				if(30 == k)
				{
					k = 0;	
				}
				sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",++k);
				Bmp_display(arr,0,0,plcd);
				sleep(1);
				
				if(touch_x1 >= 640&& touch_x1 <= 800 && touch_y1 >= 430 && touch_y1<= 480  )break;
				touch_x1=touch_y1=touch_x2=touch_y2=-1;
			}
		}

5. 退出循环播放

else if(touch_x1 >= 640&& touch_x1 <= 800 && touch_y1 >= 430 && touch_y1<= 480  )
		{
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/ting2.bmp",640,430,plcd);
			
			printf("停止循环播放");

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
			//break;
		}

6. 滑动实现相片的切换

else if(touch_x1 >= 0 && touch_x1 <= 600 && touch_y1 >= 200 && touch_y1<= 430)
		{
			//测试滑动			
			if(-1 == getInput(touch_fd))
			{
				continue;
			}
			int direction;
			switch (direction = Get_slip_direction())
			{
				case RIGHT:
					printf("RIGHT\n");
					if(1 ==k)
					{
						k = 30;
					}
					sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",--k);
					Bmp_display(arr,0,0,plcd);
					touch_x1=touch_y1=touch_x2=touch_y2=-1;
					break;  
				case LEFT:
					if(31 == k)
					{
						k = 0;
					}
					printf("%d\n",k);
					sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",++k);
					Bmp_display(arr,0,0,plcd);
					touch_x1=touch_y1=touch_x2=touch_y2=-1;
					break;
				default:
					touch_x1=touch_y1=touch_x2=touch_y2=-1;
					break;
        	}
		}

3. 功能实现以及缺陷

​ 现在已经将基本功能全部做好了,但是我觉得代码还可以进一步优化,但是实习事件已经快结束了,并没有进一步优化代码。单说以下那个触摸就有点不太灵敏,不知道是代码的问题还是板子的问题。

​ 而且我们做相册时,对图片的处理都是统一为屏幕的大小,然后将其裁剪为同样的大小实现的看上去时“相册”,而且bmp文件也是统一了命名才方便图片路径的使用,这样对于图片的添加是不太友好的。

​ 对于音乐的添加,在做完音乐播放器以后是很简单的操作,而且事件有限我就没添加了。

环境检测

1.功能设计

  1. 进入初始界面,显示一定信息
  2. 打印广告和倒计时,倒计时结束后进入主界面
  3. 主界面里面打印光照强度,温湿度,海拔和气压

2.代码实现

1.初始界面

/*打印开始界面*/
void displayStart(int* plcd)
{
    Bmp_display("/mnt/udisk/Logos/startface.bmp", 0, 0, plcd);
    //Lcd_draw_matrx(0,0,800,480,0x71c671,plcd);
    for(int i=0;i<14;i++)
    {
        Draw_word(20+phrase_w*i, 50, phrase_w, phrase_h, 0x000000, phrase[i], plcd);
        usleep(100000);
    }
    for(int i=0;i<6;i++)
    {
        Draw_word(20+words_w*i, 100, words_w, words_h, 0x000000, words[i], plcd);
        usleep(100000);
    }
    for(int i=6;i<13;i++)
    {
        Draw_word(200+words_w*i, 400, words_w, words_h, 0x000000, words[i], plcd);
        usleep(100000);
    }
    sleep(3);
}

这部分代码通过计算和循环实现了打印字的自动移动,而不像部分同学的用冗长的重复代码打印,算是自己的一点小创新吧。

2. 播放广告

/*打印广告视频*/
void displayAdvertising(int* plcd)
{ 
    char a[100];
    system("madplay -a -30 /mnt/udisk/MusicJF/AD.mp3 &");
    for(int k=1;k<200;k++)
    {
        sprintf(a,"/mnt/udisk/ADimag/(%d).bmp",k);
        Bmp_display(a,0,40,plcd);
        Lcd_draw_matrx(0,450,k*2,40,0x006400,plcd);
        usleep(10000);
        if(1==main_flag||k==199)
        {
            break;
        }
    }
    system("killall -9 madplay");
}

​ 播放广告的同时,播放音乐,停止的条件是:主界面标志位置1(表示进入主界面),或者广告播放完。本来是打算倒计时5秒后,可以通过触摸退出广告,即进入主界面标志位置1,但是没有做。还有在整合三个部分的代码时,使程序出了点bug,广告页的进度条和倒计时有点小问题,但快要结束了也懒得改了,而且gy39模块也收了,没时间做了。

3.主界面

/*打印主界面*/
void displayMainInterface(int* plcd)
{
    int data[5]={0};
    int k=1;
    Bmp_display("/mnt/udisk/Logos/MainInterface.bmp", 0, 0, plcd);

    touch_x1=touch_y1=touch_x2=touch_y2=-1;

    while(1)
    {
		if(touch_x1>=700&&touch_x1<800&&touch_y1>=0&&touch_y1<=100)
		{
			break;
		}
        GY39(data,5);
        for(int j=0;j<5;j++)
        {
            Num_reverse(&data[j]);
            Lcd_draw_matrx(565+number_w*k,35+50*(j+1),number_w*6,number_h,0xffffff,plcd);
            do
            {
                Draw_word(565+number_w*k, 35+50*(j+1), number_w, number_h, 0x000000, number[data[j]%10], plcd);
                k++;
                data[j]=data[j]/10;
            }while(--counter);
            k=1;
        }
    }
}

​ 这部分的代码没有问题,但是我感觉自己的主界面做的不好看,也是本来还想优化,但是最后没时间没耐心了。需要提到的是,在做完以后我的队员发现的问题:因为是逆序输出,在逆序以后,30变成了3,输出以后也变成了3,而不是30。所以最后我加了一个计数位来记录逆序的位数,用它来控制输出,这样30逆序以后逻辑上变成了03,逆序输出就成了30;

​ 还有一个是,我本来是按位刷底色,而且是先刷底色,再打印数值,但是这样会导致一个现象:假如数据本来是9,然后变成了10,再变回9,这时屏幕上会显示90。因为多出来的那个0,并不会被刷掉。解决办法就是:我干脆整体刷,刷一大块区域,这样即使变回了9,后面那个0也会被刷掉。

音乐播放器

1.功能设计

  1. 音乐模式
  • 顺序播放 0x00
  • 随机播放 0x01
  • 列表播放 0x10
  • 单曲循环 0x01
  1. 上一曲
  2. 暂停/播放
  3. 下一曲
  4. 退出

目前还有的bug:

​ 由于转换到顺序,列表循环模式后,会从头开始播放。而且上下切歌会杀掉顺序播放,列表循环播放模式,然后按着自己目前的位置向下一首/上一首进行播放。所以顺序播放和列表循环播放只能点一下让他们自己跑。为了解决这个问题,我殚精竭虑只能想到两个办法:

​ 一个是利用链表,将头文件不断移动,然后在切歌代码部分改为循环语句,这样即使它每次都只能从头文件开始播放,但是可以看上去做到了列表循环/顺序播放的功能;

​ 另一个是从底层出发使用madplay库更改命令,但是难度太大了。

第一种方法其实还不错,实现的可能性也很大,不过我没时间去实现我的想法了。

2.代码实现

1.音乐模式

else if(touch_x1 >=0  && touch_x1 <= 160  && touch_y1 >= Key_Start_location_y &&touch_y1<= 480)
		{
			Play_State++;

			//随机播放
			if(1==Play_State)
			{
				system("killall -9 madplay");
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",0,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_random_imag.bmp",0,Key_Start_location_y,plcd);

				system("madplay /mnt/udisk/MusicJF/*.mp3 -z &");

				printf("更换模式成功!随机播放!\n");
			}

			//循环播放
			if(2==Play_State)
			{
				system("killall -9 madplay");
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",0,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_cycle_imag.bmp",0,Key_Start_location_y,plcd);

				system("madplay /mnt/udisk/MusicJF/*.mp3 -r &");

				printf("更换模式成功!循环播放!\n");
			}

			//单曲循环
			if(3==Play_State)
			{
				system("killall -9 madplay");
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",0,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_cycleself_imag.bmp",0,Key_Start_location_y,plcd);

				bzero(buf,200);//将内存(字符串)前n个字节清零
				printf("%s,%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);

				printf("更换模式成功!单曲循环!\n");
			}

			//顺序播放
			if(4==Play_State)
			{
				system("killall -9 madplay");
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",0,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_sqrt_imag.bmp",0,Key_Start_location_y,plcd);

				system("madplay /mnt/udisk/MusicJF/*.mp3  &");

				printf("更换模式成功!顺序播放!\n");
				Play_State=0;
			}

			if(0==StopPlay_State)
			{
				StopPlay_State=1;
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
			}

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}

2. 上一曲

//上一首按键
		else if(touch_x1 >= 160 && touch_x1<= 320 &&  touch_y1 >= Key_Start_location_y && touch_y1<= 480)
		{
			system("killall -9 madplay");
			
			Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",160,Key_Start_location_y,plcd);
			usleep(50000);
			Bmp_display("/mnt/udisk/Logos/music_last_imag.bmp",160,Key_Start_location_y,plcd);

			if(1==StopPlay_State)
			{
				StopPlay_State=1;
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
			}

			if(0==Play_State)
			{
				system("madplay /mnt/udisk/MusicJF/*.mp3 -z &");
			}

			else if(3==Play_State)
			{
				bzero(buf,200);//将内存(字符串)前n个字节清零
				printf("%s,%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);
			}

			else 
			{
				head = head->prev;
				bzero(buf,200);//将内存(字符串)前n个字节清零
				printf("%s%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);	
			}

			if(0==StopPlay_State)
			{
				StopPlay_State=1;
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
			}

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}

3. 暂停播放

//暂停,播放      
		else if(touch_x1 >= 320 && touch_x1 <= 480 && touch_y1 >= Key_Start_location_y && touch_y1<= 480)
		{
			//暂停
			StopPlay_State=(!StopPlay_State)&0x01;
			if(0==StopPlay_State)
			{
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",320,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_stop_imag.bmp",320,Key_Start_location_y,plcd);
				
				system("killall -STOP madplay &");//暂停播放
				
				touch_x1=touch_y1=touch_x2=touch_y2=-1;
			}

			//播放
			if(1==StopPlay_State)
			{
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",320,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
				
				system("killall -CONT madplay &");
				
				touch_x1=touch_y1=touch_x2=touch_y2=-1;
			}
		}

4.下一曲

//下一首按键
		else if(touch_x1 >= 480 &&touch_x1 <= 640 && touch_y1 >= Key_Start_location_y && touch_y1<= 480)
		{
			system("killall -9 madplay");

			printf("下一首!\n");
			Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",480,Key_Start_location_y,plcd);
			usleep(50000);
			Bmp_display("/mnt/udisk/Logos/music_next_imag.bmp",480,Key_Start_location_y,plcd);
			
			if(1==Play_State)
			{
				system("madplay /mnt/udisk/MusicJF/*.mp3 -z &");
			}

			else if(3==Play_State)
			{
				bzero(buf,200);//将内存(字符串)前n个字节清零
				printf("%s,%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);
			}

			else
			{
				head = head->next;
				bzero(buf,200);
				printf("%s%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);
			}
			
			if(0==StopPlay_State)
			{
				StopPlay_State=1;
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
			}

			touch_x1=touch_y1=touch_x2=touch_y2=-1;	
		}

5.退出

//退出按键
		else if(touch_x1 >= 640 && touch_x1 <= 800 &&  touch_y1 >= Key_Start_location_y && touch_y1<= 480  )
		{
			system("killall -9 madplay");

			StopPlay_State=0;//暂停音乐

			Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",640,Key_Start_location_y,plcd);
			usleep(50000);
			Bmp_display("/mnt/udisk/Logos/music_back_imag.bmp",640,Key_Start_location_y,plcd);

			printf("退出音乐播放器!!!\n");

			touch_x1=touch_y1=touch_x2=touch_y2=-1;

			break;
		}
    

​ 如果能将那个bug解决,那么这个项目我自认为是完美解决的,至少全部达到了我自己最初的设计。

整合版的全部代码:

main.c

#include <stdio.h>
#include <pthread.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
#include "lcd.h"
#include "touch.h"
#include "words.h"
#include "matrix.h"
#include "ADimge.h"
#include "gy39.h"

#define Key_Start_location_y 380
#define MusicListlong 27
#define MPGIFLONG 48

//线程函数
void *get_usr_touch(void *arg);
void *countdown(void *arg);

//初始化函数
void displayStart(int* plcd);
void displayAdvertising(int* plcd);
void displayMainInterface(int* plcd);
void startappimag(int *plcd);
void initMPInterface(int *plcd);

//功能性函数
void playVideo(int * plcd,int imagnum,char *filename);
void Num_reverse(int* num) ;
void* palyGif(void *arg);
int mp(int *plcd);
int et(int *plcd);
int ea(int *plcd);

//全局变量
int touch_fd = -1;
int ad_flag=0;
int main_flag=0;
int i = 0; // i使bmp图片的路径名数组的下标
int counter=0;
int StopPlay_State =1;//默认播放
int Play_State =0;
int xunflag=0;


int main()
{
	touch_fd = Init_touch();
    int fd=-1;
	int* plcd = Init_LCD(&fd);

	pthread_t pid;
    pthread_create(&pid, NULL, get_usr_touch, NULL);

	playVideo(plcd,83,"appstartimag");
	

	while (1)
	{
		Bmp_display("/mnt/udisk/Logos/appface.bmp",0,0,plcd);
		//判断是否按下
		if(-1==touch_x1) 
		{
			continue;
		}
		else if(touch_x1>=0&&touch_x1<210&&touch_y1>=300&&touch_y1<=480)
		{
			printf("打开环境检测系统!\n");
			//playVideo(plcd,160,"ea");
			et(plcd);
			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}

		else if(touch_x1>=210&&touch_x1<400&&touch_y1>=300&&touch_y1<=480)
		{

			printf("打开音乐播放器!\n");
			//playVideo(plcd,160,"ea");
			mp(plcd);
			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}

		else if(touch_x1>=400&&touch_x1<=565&&touch_y1>=300&&touch_y1<=480)
		{
			printf("打开电子相册!\n");
			playVideo(plcd,160,"ea");
			ea(plcd);
			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}
		else touch_x1=touch_y1=touch_x2=touch_y2=-1;
	}
	Uninit_touch(touch_fd);
    Uninit_LCD(fd,plcd);
    return 0;
}

/*全屏打印一张图形成一个视频*/
void playVideo(int * plcd,int imagnum,char *filename)
{
	char arr[100]={0};
	for(int k=1;k<=imagnum;k++)
	{
		if(touch_x1>=600&&touch_x1<800&&touch_y1>=0&&touch_y1<=200)
		{
			touch_x1=touch_y1=touch_x2=touch_y2=-1;
			break;
		}else touch_x1=touch_y1=touch_x2=touch_y2=-1;
		sprintf(arr,"/mnt/udisk/%s/(%d).bmp",filename,k);
		Bmp_display(arr,0,0,plcd);
		usleep(5000);
	}
}
/***********************************************************************************************
 * 音乐播放器
***********************************************************************************************/
int mp(int *plcd)
{
	pthread_t gif;
    pthread_create(&gif, NULL, palyGif, NULL);

	/*设置节点*/
	struct node
	{
		struct node *next;
		char *data;
		struct node *prev;
	};

	/*
	初始化链表
	返回了一个data为字符newdata的头节点
	*/
	struct node *list_init(char *newdata)
	{
		//名义头节点
		struct node *head = malloc(sizeof(struct node));
		head->data = newdata;
		head->next = head;
		head->prev = head;
		return head;
	}

	//写入数据并创建新节点
	struct node *newnode(char *newdata)
	{
		struct node *new = malloc(sizeof(struct node));
		new->data = newdata;
		new->next = NULL;
		new->prev = NULL;
	}

	//将节点加入链表
	int addnode(struct node *new,struct node *tail)
	{
		new->prev = tail->prev;
		new->next = tail;
		tail->prev = new;
		new->prev->next = new;
	}

	struct node *list = list_init("1.mp3");
	char *path = "/mnt/udisk/MusicJF/";				
	DIR *dp = opendir(path);
	struct dirent *p;

	while(p = readdir(dp))										//遍历目录文件
	{
		if(p->d_type == DT_REG)
		{
			if(strstr(p->d_name,".mp3")) 						//判断是否为.mp3文件
			{
				struct node *new = newnode(p->d_name); 			//创建新节点
				addnode(new,list);								//插入新节点
			}				
		}
	}
	char buf[200];
	//头指针
	struct node *head = list->next;

	initMPInterface(plcd);

    while(1)
    {
//滑动
		if(touch_x1 >= 0 && touch_x1 <= 800 && touch_y1 >= 0 && touch_y1<= Key_Start_location_y)
		{
			//测试滑动			
			if(-1 == getInput(touch_fd))
			{
				continue;
			}
			int direction;
			switch (direction = Get_slip_direction(touch_x1))
			{
				case UP:
					printf("UP\n");
					break;
				case DOWN:
					printf("DOWN\n");
					break; 
				case RIGHT:
					printf("RIGHT\n");				
					break; 
				case LEFT:
					printf("LEFT\n");		
					break; 
				default:
					break;
        	}
			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}
//模式按键
		else if(touch_x1 >=0  && touch_x1 <= 160  && touch_y1 >= Key_Start_location_y &&touch_y1<= 480)
		{
			Play_State++;

			//随机播放
			if(1==Play_State)
			{
				system("killall -9 madplay");
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",0,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_random_imag.bmp",0,Key_Start_location_y,plcd);

				system("madplay /mnt/udisk/MusicJF/*.mp3 -z &");

				printf("更换模式成功!随机播放!\n");
			}

			//循环播放
			if(2==Play_State)
			{
				system("killall -9 madplay");
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",0,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_cycle_imag.bmp",0,Key_Start_location_y,plcd);

				system("madplay /mnt/udisk/MusicJF/*.mp3 -r &");

				printf("更换模式成功!循环播放!\n");
			}

			//单曲循环
			if(3==Play_State)
			{
				system("killall -9 madplay");
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",0,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_cycleself_imag.bmp",0,Key_Start_location_y,plcd);

				bzero(buf,200);//将内存(字符串)前n个字节清零
				printf("%s,%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);

				printf("更换模式成功!单曲循环!\n");
			}

			//顺序播放
			if(4==Play_State)
			{
				system("killall -9 madplay");
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",0,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_sqrt_imag.bmp",0,Key_Start_location_y,plcd);

				system("madplay /mnt/udisk/MusicJF/*.mp3  &");

				printf("更换模式成功!顺序播放!\n");
				Play_State=0;
			}

			if(0==StopPlay_State)
			{
				StopPlay_State=1;
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
			}

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}
//上一首按键
		else if(touch_x1 >= 160 && touch_x1<= 320 &&  touch_y1 >= Key_Start_location_y && touch_y1<= 480)
		{
			system("killall -9 madplay");
			
			Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",160,Key_Start_location_y,plcd);
			usleep(50000);
			Bmp_display("/mnt/udisk/Logos/music_last_imag.bmp",160,Key_Start_location_y,plcd);

			if(1==StopPlay_State)
			{
				StopPlay_State=1;
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
			}

			if(0==Play_State)
			{
				system("madplay /mnt/udisk/MusicJF/*.mp3 -z &");
			}

			else if(3==Play_State)
			{
				bzero(buf,200);//将内存(字符串)前n个字节清零
				printf("%s,%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);
			}

			else 
			{
				head = head->prev;
				bzero(buf,200);//将内存(字符串)前n个字节清零
				printf("%s%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);	
			}

			if(0==StopPlay_State)
			{
				StopPlay_State=1;
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
			}

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}
//暂停,播放      
		else if(touch_x1 >= 320 && touch_x1 <= 480 && touch_y1 >= Key_Start_location_y && touch_y1<= 480)
		{
			//暂停
			StopPlay_State=(!StopPlay_State)&0x01;
			if(0==StopPlay_State)
			{
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",320,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_stop_imag.bmp",320,Key_Start_location_y,plcd);
				
				system("killall -STOP madplay &");//暂停播放
				
				touch_x1=touch_y1=touch_x2=touch_y2=-1;
			}

			//播放
			if(1==StopPlay_State)
			{
				Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",320,Key_Start_location_y,plcd);
				usleep(50000);
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
				
				system("killall -CONT madplay &");
				
				touch_x1=touch_y1=touch_x2=touch_y2=-1;
			}
		}
//下一首按键
		else if(touch_x1 >= 480 &&touch_x1 <= 640 && touch_y1 >= Key_Start_location_y && touch_y1<= 480)
		{
			system("killall -9 madplay");

			printf("下一首!\n");
			Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",480,Key_Start_location_y,plcd);
			usleep(50000);
			Bmp_display("/mnt/udisk/Logos/music_next_imag.bmp",480,Key_Start_location_y,plcd);
			
			if(1==Play_State)
			{
				system("madplay /mnt/udisk/MusicJF/*.mp3 -z &");
			}

			else if(3==Play_State)
			{
				bzero(buf,200);//将内存(字符串)前n个字节清零
				printf("%s,%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);
			}

			else
			{
				head = head->next;
				bzero(buf,200);
				printf("%s%s\n",path,head->data);
				sprintf(buf,"madplay %s/%s &",path,head->data);
				system(buf);
			}
			
			if(0==StopPlay_State)
			{
				StopPlay_State=1;
				Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
			}

			touch_x1=touch_y1=touch_x2=touch_y2=-1;	
		}
//退出按键
		else if(touch_x1 >= 640 && touch_x1 <= 800 &&  touch_y1 >= Key_Start_location_y && touch_y1<= 480  )
		{
			system("killall -9 madplay");

			StopPlay_State=0;//暂停音乐

			Bmp_display("/mnt/udisk/Logos/music_in_imag.bmp",640,Key_Start_location_y,plcd);
			usleep(50000);
			Bmp_display("/mnt/udisk/Logos/music_back_imag.bmp",640,Key_Start_location_y,plcd);

			printf("退出音乐播放器!!!\n");

			touch_x1=touch_y1=touch_x2=touch_y2=-1;

			break;
		}
    }

}

void *get_usr_touch(void *arg)
{
    pthread_detach(pthread_self());
    while (1)
    {
		
        getInput(touch_fd);
		if(xunflag==0&&touch_x1 >= 640&& touch_x1 <= 800 && touch_y1 >= 430 && touch_y1<= 480 )xunflag=1;
    }
}

void* palyGif(void *arg)
{
	StopPlay_State=1;//每次开进程先置“播放”,不然打印不出动画。
	int touch_fd = Init_touch();
    int fd=-1;
	int* plcd = Init_LCD(&fd);

	char a[MPGIFLONG];

	while (1)
	{
		if(touch_x1 >= 640 && touch_x1 <= 800 &&  touch_y1 >= Key_Start_location_y && touch_y1<= 480  )
		{
			break;
		}
		for(int k=1;k<=74;k++)
		{
			while((!StopPlay_State)&0x01);//只有为1/“播放”才能继续,不然阻塞。
			sprintf(a,"/mnt/udisk/mpgifJF/(%d).bmp",k);
			Bmp_display(a,0,0,plcd);
			
			usleep(10000);
		}
	}
}
/*初始化音乐播放器的界面*/
void initMPInterface(int *plcd)
{
	Bmp_display("/mnt/udisk/Logos/music_sqrt_imag.bmp",0,Key_Start_location_y,plcd);
	Bmp_display("/mnt/udisk/Logos/music_last_imag.bmp",160,Key_Start_location_y,plcd);
	Bmp_display("/mnt/udisk/Logos/music_play_imag.bmp",320,Key_Start_location_y,plcd);
	Bmp_display("/mnt/udisk/Logos/music_next_imag.bmp",480,Key_Start_location_y,plcd);
	Bmp_display("/mnt/udisk/Logos/music_back_imag.bmp",640,Key_Start_location_y,plcd);
	printf("成功打开音乐播放器!\n");
	system("madplay /mnt/udisk/MusicJF/*.mp3 &");
}

/***********************************************************************************************
 * 环境检测执行函数
***********************************************************************************************/
int et(int *plcd)
{
    //创建一个线程去获取广告倒计时
    pthread_t count;
    pthread_create(&count, NULL, countdown,NULL);

    displayStart(plcd);

    Lcd_draw_matrx(0,0,800,480,0x71c671,plcd);
    ad_flag=1;
    displayAdvertising(plcd);  

    if(1==main_flag)
    {
        displayMainInterface(plcd);
    }
}

/*打印开始界面*/
void displayStart(int* plcd)
{
    Bmp_display("/mnt/udisk/Logos/startface.bmp", 0, 0, plcd);
    //Lcd_draw_matrx(0,0,800,480,0x71c671,plcd);
    for(int i=0;i<14;i++)
    {
        Draw_word(20+phrase_w*i, 50, phrase_w, phrase_h, 0x000000, phrase[i], plcd);
        usleep(100000);
    }
    for(int i=0;i<6;i++)
    {
        Draw_word(20+words_w*i, 100, words_w, words_h, 0x000000, words[i], plcd);
        usleep(100000);
    }
    for(int i=6;i<13;i++)
    {
        Draw_word(200+words_w*i, 400, words_w, words_h, 0x000000, words[i], plcd);
        usleep(100000);
    }
    sleep(3);
}

void displayStartface(int* plcd)
{ 
    char a[100];
    for(int k=1;k<200;k++)
    {
        sprintf(a,"/mnt/udisk/ADimag/(%d).bmp",k);
        Bmp_display(a,0,40,plcd);
        Lcd_draw_matrx(0,450,k*2,40,0x006400,plcd);
        usleep(10000);
        if(1==main_flag||k==199)
        {
            break;
        }
    }
    system("killall -9 madplay");
}

/*打印广告视频*/
void displayAdvertising(int* plcd)
{ 
    char a[100];
    system("madplay -a -30 /mnt/udisk/MusicJF/AD.mp3 &");
    for(int k=1;k<200;k++)
    {
        sprintf(a,"/mnt/udisk/ADimag/(%d).bmp",k);
        Bmp_display(a,0,40,plcd);
        Lcd_draw_matrx(0,450,k*2,40,0x006400,plcd);
        usleep(10000);
        if(1==main_flag||k==199)
        {
            break;
        }
    }
    system("killall -9 madplay");
}

/*打印主界面*/
void displayMainInterface(int* plcd)
{
    int data[5]={0};
    int k=1;
    Bmp_display("/mnt/udisk/Logos/MainInterface.bmp", 0, 0, plcd);

    touch_x1=touch_y1=touch_x2=touch_y2=-1;

    while(1)
    {
		if(touch_x1>=700&&touch_x1<800&&touch_y1>=0&&touch_y1<=100)
		{
			break;
		}
        GY39(data,5);
        for(int j=0;j<5;j++)
        {
            Num_reverse(&data[j]);
            Lcd_draw_matrx(565+number_w*k,35+50*(j+1),number_w*6,number_h,0xffffff,plcd);
            do
            {
                Draw_word(565+number_w*k, 35+50*(j+1), number_w, number_h, 0x000000, number[data[j]%10], plcd);
                k++;
                data[j]=data[j]/10;
            }while(--counter);
            k=1;
        }
    }
}

/*将数组arr的内容逆序*/
void Num_reverse(int* num) 
{
	int d=*num;
	int c=0;
	do
	{
		c=c*10+d%10;
		d=d/10;
		counter++;
	} while ((*num=*num/10)!=0);
    *num =c;
}

/* 线程函数:倒计时*/
void *countdown(void *arg)
{
    touch_fd = Init_touch();
    int fd = -1;
    int *plcd = Init_LCD(&fd);
    pthread_detach(pthread_self());//系统"收尸""
    while (1)
    {
        if(1==ad_flag)
        {
            for(int t=9;t>=0;t--)
            {
                //printf("zhegeshi zi xian cheng");
                Draw_word(750, 0, number_w, number_h, 0xffffff, number[t], plcd);
                sleep(1);
                Lcd_draw_matrx(750,0,number_w,number_h,0x71c671,plcd);
                if(0==t)
                {
                    main_flag=1;
                }
            }
            ad_flag=0;
            break;
        }
    }
}

/***********************************************************************************************
 * 电子相册执行函数
***********************************************************************************************/
int ea(int *plcd)
{
	char arr[100]={0};
	int k=1;

	Bmp_display("/mnt/udisk/Logos/shang.bmp",0,430,plcd);
	Bmp_display("/mnt/udisk/Logos/xia.bmp",160,430,plcd);
	Bmp_display("/mnt/udisk/Logos/sui.bmp",320,430,plcd);
	Bmp_display("/mnt/udisk/Logos/xun.bmp",480,430,plcd);
	Bmp_display("/mnt/udisk/Logos/ting.bmp",640,430,plcd);
	//Bmp_display("/mnt/udisk/Logos/ting2.bmp",640,430,plcd);
	//Bmp_display("/mnt/udisk/Logos/bian.bmp",x,430,plcd);

	sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",k);
	Bmp_display(arr,0,0,plcd);
	
    while(1)
    {
		
		 if(touch_x1>=600&&touch_x1<800&&touch_y1>=0&&touch_y1<=200)
		{
			touch_x1=touch_y1=touch_x2=touch_y2=-1;
			break;
		}
        //上一张
		else if(touch_x1 >= 0 && touch_x1 < 160  && touch_y1 >= 430 && touch_y1<= 480)
		{
			Bmp_display("/mnt/udisk/Logos/bian.bmp",0,430,plcd);
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/shang.bmp",0,430,plcd);
			//printf("return\n");

			if(0 == k)
			{
				k = 31;
			}
            sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",--k);
			Bmp_display(arr,0,0,plcd);

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}
        //下一张
		else if(touch_x1 >= 160 && touch_x1 <320 && touch_y1 >= 430 && touch_y1<= 480)
		{
			Bmp_display("/mnt/udisk/Logos/bian.bmp",160,430,plcd);
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/xia.bmp",160,430,plcd);
			//printf("next\n");

			if(30 == k)
			{
				k = 0;
			}
            sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",++k);
			Bmp_display(arr,0,0,plcd);

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}
        //随机播放
		else if(touch_x1 >= 320 && touch_x1 <480 && touch_y1 >= 430 && touch_y1<= 480)
		{
			Bmp_display("/mnt/udisk/Logos/bian.bmp",320,430,plcd);
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/sui.bmp",320,430,plcd);
			//printf("suiji\n");

			k = random()%30;
			sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",k);
			Bmp_display(arr,0,0,plcd);
			touch_x1=touch_y1=touch_x2=touch_y2=-1;
		}
        //循环播放
		else if(touch_x1 >= 480 && touch_x1 <640 && touch_y1 >= 430 && touch_y1<= 480)
		{
			Bmp_display("/mnt/udisk/Logos/bian.bmp",480,430,plcd);
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/xun.bmp",480,430,plcd);
			//printf("xun\n");

			xunflag=1;

			while(1)
			{
				
				if(30 == k)
				{
					k = 0;	
				}
				sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",++k);
				Bmp_display(arr,0,0,plcd);
				sleep(1);
				
				if(touch_x1 >= 640&& touch_x1 <= 800 && touch_y1 >= 430 && touch_y1<= 480  )break;
				touch_x1=touch_y1=touch_x2=touch_y2=-1;
			}
		}
			

        //停止循环播放
		else if(touch_x1 >= 640&& touch_x1 <= 800 && touch_y1 >= 430 && touch_y1<= 480  )
		{
			usleep(5000);
			Bmp_display("/mnt/udisk/Logos/ting2.bmp",640,430,plcd);
			
			printf("停止循环播放");

			touch_x1=touch_y1=touch_x2=touch_y2=-1;
			//break;
		}

		else if(touch_x1 >= 0 && touch_x1 <= 600 && touch_y1 >= 200 && touch_y1<= 430)
		{
			//测试滑动			
			if(-1 == getInput(touch_fd))
			{
				continue;
			}
			int direction;
			switch (direction = Get_slip_direction())
			{
				case RIGHT:
					printf("RIGHT\n");
					if(1 ==k)
					{
						k = 30;
					}
					sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",--k);
					Bmp_display(arr,0,0,plcd);
					touch_x1=touch_y1=touch_x2=touch_y2=-1;
					break;  
				case LEFT:
					if(31 == k)
					{
						k = 0;
					}
					printf("%d\n",k);
					sprintf(arr,"/mnt/udisk/pic/ (%d).bmp",++k);
					Bmp_display(arr,0,0,plcd);
					touch_x1=touch_y1=touch_x2=touch_y2=-1;
					break;
				default:
					touch_x1=touch_y1=touch_x2=touch_y2=-1;
					break;
        	}
		}
    }
}

gy39.c

#include"gy39.h"

//定义命令 --->设置模板的工作方式
unsigned char cmd_lux[]={0xa5,0x81,0x26};//设置连续光照模式
unsigned char cmd_oth[]={0xa5,0x82,0x27};//设置温度湿度气压海拔

/* 设置串口参数(初始化串口) */
void init_tty(int fd)
{    
	//声明设置串口的结构体
	struct termios termios_new;
	//先清空该结构体
	bzero( &termios_new, sizeof(termios_new));
	//	cfmakeraw()设置终端属性,就是设置termios结构中的各个参数。
	cfmakeraw(&termios_new);
	//设置波特率
	//termios_new.c_cflag=(B9600);
	cfsetispeed(&termios_new, B9600);
	cfsetospeed(&termios_new, B9600);
	//CLOCAL和CREAD分别用于本地连接和接受使能,因此,首先要通过位掩码的方式激活这两个选项。    
	termios_new.c_cflag |= CLOCAL | CREAD;
	//通过掩码设置数据位为8位
	termios_new.c_cflag &= ~CSIZE;
	termios_new.c_cflag |= CS8; 
	//设置无奇偶校验
	termios_new.c_cflag &= ~PARENB;
	//一位停止位
	termios_new.c_cflag &= ~CSTOPB;
	tcflush(fd,TCIFLUSH);
	// 可设置接收字符和等待时间,无特殊要求可以将其设置为0
	termios_new.c_cc[VTIME] = 10;
	termios_new.c_cc[VMIN] = 1;
	// 用于清空输入/输出缓冲区
    	tcflush (fd, TCIFLUSH);
	//完成配置后,可以使用以下函数激活串口设置
	if(tcsetattr(fd,TCSANOW,&termios_new) )
		printf("Setting the serial1 failed!\n");

}

/*
    GY39模块数据读取:GY39
    获取 光照 温度 湿度 气压 海拔  ==>int
    用数组
*/
void GY39(int data[],int n)
{
    //1.打开串口
    int tty_fd=open(COM2,O_RDWR);
    if(-1 == tty_fd)
    {
        perror("open tty fail");
        return ;
    }
    //初始化串口
    init_tty(tty_fd);
    
    unsigned char buf[15];

    int LUX,T,P,HUM,H;//光照 温度 气压 湿度 海拔


    int ret = write(tty_fd,cmd_lux,3);
    if(ret!=3)
    {
        usleep(5000);//等待完全写入
    }
    read(tty_fd,buf,9);
    if(buf[0]==0X5A && buf[1]==0X5A && buf[2]==0x15)//判断帧是否正常
    {
        LUX=(buf[4]<<24)|(buf[5]<<16)|(buf[6]<<8)|(buf[7]);
        LUX=LUX/10+LUX%10;//最后一位不要(可以要单没必要)
        data[0]=LUX;
    }
    usleep(50000);


    ret = write(tty_fd,cmd_oth,3);
    if(ret!=3)
    {
        usleep(5000);//等待完全写入
    }
    // read(tty_fd,buf,9);
    read(tty_fd,buf,15);
     if(buf[0]==0X5A && buf[1]==0X5A && buf[2]==0x45)//判断帧是否正常
    {
        T=(buf[4]<<8)|(buf[5]);
        T=T/100;
        P=(buf[6]<<24)|(buf[7]<<16)|(buf[8]<<8)|(buf[9]);
        P=P/100;
        HUM=(buf[10]<<8)|(buf[11]);
        HUM=HUM/100;
        H=(buf[12]<<8)|(buf[13]);
       //最后一位不要(可以要单没必要)
        
        data[1]=T;
        data[2]=P;
        data[3]=HUM;
        data[4]=H;
    }
    usleep(50000);


    close(tty_fd);
    return ;
}

gy39.h

#ifndef _GY39_H_
#define _GY39_H_

#include <stdio.h>
#include <fcntl.h> 
#include <unistd.h>
#include <termios.h> 
#include <stdlib.h>
#include <netdb.h>
#include <string.h>
#include <errno.h>
//6818串口所对应的文件名
#define COM2 "/dev/ttySAC1"
#define COM3 "/dev/ttySAC2"
#define COM4 "/dev/ttySAC3"

extern unsigned char cmd_lux[];//设置连续光照模式
extern unsigned char cmd_oth[];//设置温度湿度气压海拔

void init_tty(int fd);
void GY39(int data[],int n);

#endif

lcd.c

/*头文件*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/mman.h>
#include <stdlib.h>

/*宏定义*/
#define FILE_PATH "/dev/fb0"

/*
	Init_LCD:初始化显示屏
	参数为空
	返回值 int*
		成功 返回映射区域的首地址
		失败 返回NULL
*/
int *Init_LCD(int *fd)
{
	//1.打开帧缓冲
	*fd = open("/dev/fb0",O_RDWR);
	if(-1 == *fd)
	{

		perror("open fail");
		return NULL;
	}
	//2.映射
	int *plcd = mmap(NULL,800*480*4
			,PROT_READ |  PROT_WRITE,
			MAP_SHARED,*fd,0);
	if(MAP_FAILED == plcd)
	{
		perror("mmap fail");
		return NULL;
	}
	return plcd;
}

/*
	Uninit_LCD:解初始化屏幕
	@fd:帧缓冲的文件描述符
	@plcd:
	返回值:无
*/
void Uninit_LCD(int fd,int *plcd)
{
	//1.解映射
	munmap(plcd,800*480*4);
	//2.关闭帧缓冲
	close(fd);
}

void Lcd_draw_point(int x,int y,int color,int *plcd)
{
    if(NULL == plcd)
    {
        printf("error:plcd == NULL\n");
        return ;
    }
    if(x>=0&&x<800&&y>=0&&y<480)
    {
   		*(plcd+800*y+x) = color;
	}
}
void Lcd_draw_matrx(int x,int y,int h,int w,int color,int *plcd)
{
	int i,j;
	if((x+w)>=0||(x+w)<=880||(y+h)>=0||(y+h)<=880)
		for(j=x;j<x+w;j++)
		{
			for(i=y;i<y+h;i++)
			{
				Lcd_draw_point(i,j,color,plcd);
			}
		}
}

/*
	Bmp_display:在屏幕的指定的位置显示bmp图片
	@bmp_file:图片的路径名
	@x0 y0 图片左上角在屏幕上的坐标
	@plcd:帧缓冲映射区域的首地址
	返回值:
		-1 失败
		0  成功
*/
int Bmp_display(const char *bmp_file,int x0,int y0,int *plcd)
{
	if(plcd == NULL || !(x0>=0&&x0<800&&y0>=0&&y0<480))
	{
		return -1;
	}
	//1.打开图片
	int fd = open(bmp_file,O_RDONLY);
	if(-1 == fd)
	{
		printf("%s",bmp_file);
		perror("open fail");
		return -1;
	}
	//2.判断到底是不是一张bmp图片
	char buf[4]={0};
	read(fd,buf,2);
	if(buf[0]!=0x42 || buf[1]!=0x4D)
	{
		printf("NOT BMP\n");
		close(fd);
		return -1;
	}
	//3.解析图片 宽 高 色深
	lseek(fd,0x12,SEEK_SET);
	read(fd,buf,4);
	int width = buf[3]<<24 | buf[2]<<16 | buf[1]<<8 | buf[0];

	lseek(fd,0x16,SEEK_SET);
	read(fd,buf,4);
	int height = buf[3]<<24 | buf[2]<<16 | buf[1]<<8 | buf[0];

	lseek(fd,0x1c,SEEK_SET);
	read(fd,buf,2);
	short depth = buf[1]<<8 | buf[0];

	if(!(depth == 24 || depth == 32))
	{
		printf("NOT SUPPORT!\n");
		close(fd);
		return -1;
	}

	//printf("%s:%d*%d depth:%d\n",bmp_file,width,height,depth);
	//4.获取像素数组
	int line_vaild_bytes=abs(width)*depth/8;
	int line_bytes;//一行总字节数=有效字节数+赖子数
	int laizi = 0;

	if(line_vaild_bytes%4)
	{
		laizi = 4 - line_vaild_bytes%4;
	}
	line_bytes = line_vaild_bytes + laizi;
	int total_bytes = line_bytes*abs(height);//整个像素数组的大小

	//从文件中读取像素数组
	lseek(fd,54,SEEK_SET);
	unsigned char piexl[total_bytes];
	read(fd,piexl,total_bytes);
	//5.在屏幕的对应位置显示即可
	unsigned char a,r,g,b;
	int color;
	int i=0;
	int x,y;
	//遍历整个像素数组
	for(y=0;y<abs(height);y++)
	{
  		for(x=0;x<abs(width);x++)
  		{
			b=piexl[i++];
			g=piexl[i++];
			r=piexl[i++];
    		if(depth==32)
			{
				a=piexl[i++];
			}
    		else
			{
				a=0;//不透明
			}
    		color=a<<24|r<<16|g<<8|b;
    		Lcd_draw_point(width>0?x+x0:x0+abs(width)-x-1,
          	height>0?y0+abs(height)-y-1:y0+y,color,plcd);
		}
  		//每一行末尾可能存在赖子
  		i+=laizi;
	}
	close(fd);
	return 0;
}

lcd.h

#ifndef LCD_H
#define LCD_H

/*函数声明*/
int *Init_LCD(int *fd);
void Uninit_LCD(int fd,int *plcd);
void Lcd_draw_point(int x,int y,int color,int *plcd);
void Lcd_draw_matrx(int x,int y,int h,int w,int color,int *plcd);
int Bmp_display(const char *bmp_file,int x0,int y0,int *plcd);

#endif

matrix.h

#ifndef _MATRIX_H_
#define _MATRIX_H_

#define words_w  40
#define words_h  46
#define phrase_w  32
#define phrase_h  38
#define number_w    24
#define number_h    46
#define appicon_w    32
#define appicon_h    54

char words[][words_w*words_h/8]=
{
/*--  文字:  环  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,
0xC0,0xFF,0xFC,0x0F,0x80,0x00,0x07,0x80,0x0F,0x00,0x00,0x07,0x80,0x0F,0x00,0x00,
0x07,0x80,0x0F,0x00,0x00,0x07,0x80,0x1E,0x00,0x00,0x07,0x80,0x1E,0x00,0x00,0x07,
0x80,0x3E,0x00,0x00,0xFF,0xFC,0x3F,0x80,0x00,0xFF,0xFC,0x3F,0xF0,0x00,0xFF,0xFC,
0x7F,0xF0,0x00,0x07,0x80,0x7F,0xF8,0x00,0x07,0x80,0xFF,0xFC,0x00,0x07,0x80,0xFF,
0xBE,0x00,0x07,0x81,0xFF,0x9E,0x00,0x07,0x83,0xEF,0x9F,0x00,0x07,0x83,0xCF,0x8F,
0x80,0x07,0xFF,0xCF,0x87,0x80,0x07,0xFF,0x8F,0x87,0xC0,0x7F,0xFF,0x8F,0x83,0xE0,
0xFF,0xDF,0x0F,0x83,0xE0,0xFC,0x3E,0x0F,0x81,0xC0,0xE0,0x1C,0x0F,0x80,0x00,0x00,
0x0C,0x0F,0x80,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,
0x0F,0x80,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  境  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x0F,0x00,0x00,0x0F,0x00,0x0F,
0x00,0x00,0x0F,0x00,0x0F,0x80,0x00,0x0F,0x0F,0xFF,0xFF,0xC0,0x0F,0x0F,0xFF,0xFF,
0xC0,0x0F,0x0F,0xFF,0xFF,0x80,0x0F,0x01,0xE0,0x7C,0x00,0x0F,0x01,0xF0,0x78,0x00,
0x7F,0xE0,0xF8,0xF8,0x00,0xFF,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,0xE0,0x7F,
0xFF,0xFF,0xFF,0xE0,0x0F,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x0F,0x0F,
0xFF,0xFF,0x00,0x0F,0x0F,0xFF,0xFF,0x00,0x0F,0x0F,0x00,0x0F,0x00,0x0F,0x0F,0x00,
0x0F,0x00,0x0F,0x0F,0xFF,0xFF,0x00,0x0F,0x0F,0xFF,0xFF,0x00,0x0F,0x0F,0xFF,0xFF,
0x00,0x0F,0x0F,0x00,0x0F,0x00,0x0F,0x3F,0x00,0x0F,0x00,0x0F,0xFF,0xFF,0xFF,0x00,
0x3F,0xFF,0xFF,0xFF,0x00,0xFF,0xEF,0x79,0xEF,0x00,0xFF,0x00,0x79,0xE1,0xE0,0xF0,
0x00,0xF1,0xE1,0xE0,0x00,0x01,0xF1,0xE1,0xE0,0x00,0x07,0xE1,0xE1,0xE0,0x00,0x3F,
0xC1,0xFF,0xE0,0x00,0xFF,0x81,0xFF,0xC0,0x00,0x7E,0x00,0xFF,0x80,0x00,0x70,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  检  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x07,0x80,0x00,0x07,0x80,0x0F,
0x80,0x00,0x07,0x80,0x0F,0xC0,0x00,0x07,0x80,0x1F,0xE0,0x00,0x07,0x80,0x3F,0xE0,
0x00,0x07,0x80,0x3D,0xF0,0x00,0x07,0x80,0x7C,0xF8,0x00,0xFF,0xF8,0xF8,0x7C,0x00,
0xFF,0xF9,0xF0,0x3E,0x00,0xFF,0xFB,0xE0,0x1F,0x00,0x0F,0x87,0xC0,0x0F,0xC0,0x0F,
0x8F,0x80,0x07,0xE0,0x0F,0x9F,0xFF,0xFF,0xE0,0x1F,0xEF,0xFF,0xFF,0xC0,0x1F,0xE5,
0xFF,0xFE,0x00,0x1F,0xF0,0xFF,0xFC,0x00,0x3F,0xF8,0x0E,0x00,0x00,0x3F,0xF8,0x1E,
0x0F,0x00,0x7F,0xBF,0x8F,0x0F,0x00,0x7F,0x87,0x8F,0x1F,0x00,0xF7,0x87,0xCF,0x1E,
0x00,0xF7,0x83,0xCF,0x1E,0x00,0xE7,0x83,0xC7,0xBE,0x00,0xE7,0x83,0xC7,0xBC,0x00,
0x07,0x81,0xE7,0xBC,0x00,0x07,0x81,0xE7,0xBC,0x00,0x07,0x81,0xE7,0x78,0x00,0x07,
0x81,0xC0,0x78,0x00,0x07,0x80,0x00,0x78,0x00,0x07,0x9F,0xFF,0xFF,0xC0,0x07,0x9F,
0xFF,0xFF,0xE0,0x07,0x9F,0xFF,0xFF,0xE0,0x07,0x80,0x00,0x00,0x00,0x07,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  测  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x38,0x00,0x00,
0x03,0xC0,0x7C,0x7F,0xFE,0x73,0xC0,0x3E,0x7F,0xFE,0xF3,0xC0,0x1F,0xFF,0xFE,0xF3,
0xC0,0x0F,0xF8,0x1E,0xF3,0xC0,0x07,0x78,0x1E,0xF3,0xC0,0x02,0x7B,0xDE,0xF3,0xC0,
0x00,0x7B,0xDE,0xF3,0xC0,0x60,0x7B,0xDE,0xF3,0xC0,0xF0,0x7B,0xDE,0xF3,0xC0,0xF8,
0x7B,0xDE,0xF3,0xC0,0x7C,0x7B,0xDE,0xF3,0xC0,0x3F,0x7B,0xDE,0xF3,0xC0,0x1F,0x7B,
0xDE,0xF3,0xC0,0x0E,0x7B,0xDE,0xF3,0xC0,0x00,0x7B,0xDE,0xF3,0xC0,0x00,0x7B,0xDE,
0xF3,0xC0,0x00,0x7B,0xDE,0xF3,0xC0,0x0C,0x7B,0xDE,0xF3,0xC0,0x0F,0x7B,0xDE,0xF3,
0xC0,0x0F,0x7F,0xDE,0xF3,0xC0,0x1F,0x7F,0x9E,0xF3,0xC0,0x1E,0x7F,0x9E,0xF3,0xC0,
0x1E,0x07,0xC0,0xF3,0xC0,0x1E,0x0F,0xE0,0xF3,0xC0,0x3E,0x1F,0xF0,0x03,0xC0,0x3C,
0x1E,0xF8,0x03,0xC0,0x3C,0x3E,0x7E,0x03,0xC0,0x7C,0xFC,0x3F,0x03,0xC0,0x7D,0xF8,
0x1F,0xFF,0xC0,0x7F,0xF0,0x0F,0xFF,0x80,0x7B,0xE0,0x06,0xFF,0x00,0x01,0x80,0x00,
0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  系  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
0xFF,0x00,0x3F,0xFF,0xFF,0xFF,0x80,0x3F,0xFF,0xFF,0xFF,0x80,0x3F,0xFF,0xFC,0x00,
0x00,0x18,0x07,0xE0,0x00,0x00,0x00,0x1F,0xC0,0x38,0x00,0x00,0x3F,0x00,0x7C,0x00,
0x00,0xFE,0x01,0xFC,0x00,0x01,0xF8,0x03,0xF8,0x00,0x07,0xE0,0x3F,0xE0,0x00,0x1F,
0xFF,0xFF,0xC0,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x1F,0xFF,0xFC,0x00,0x00,0x0C,0x03,
0xF9,0xC0,0x00,0x00,0x0F,0xE3,0xE0,0x00,0x00,0x3F,0x81,0xF8,0x00,0x00,0xFE,0x00,
0xFC,0x00,0x03,0xF8,0x00,0xFE,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xFF,
0x80,0x1F,0xFF,0xFF,0xEF,0xC0,0x0F,0x00,0xF0,0x07,0xC0,0x00,0xC0,0xF1,0xC3,0x80,
0x01,0xF0,0xF3,0xE0,0x00,0x03,0xF0,0xF3,0xF0,0x00,0x07,0xE0,0xF1,0xFC,0x00,0x0F,
0xC0,0xF0,0x7E,0x00,0x3F,0x00,0xF0,0x3F,0x00,0x7E,0x00,0xF0,0x1F,0xC0,0xFC,0x3F,
0xF0,0x0F,0xC0,0xF8,0x3F,0xE0,0x03,0x80,0x60,0x3F,0xE0,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  统  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x03,0xC0,0x0F,0x00,0x00,0x03,0xC0,0x0F,
0x00,0x00,0x07,0xC0,0x0F,0x80,0x00,0x07,0x80,0x07,0xC0,0x00,0x0F,0x9F,0xFF,0xFF,
0xE0,0x0F,0x1F,0xFF,0xFF,0xE0,0x1E,0x1F,0xFF,0xFF,0xE0,0x1E,0x00,0x3C,0x00,0x00,
0x3C,0x78,0x7C,0x00,0x00,0x3C,0xF8,0xF8,0x38,0x00,0x78,0xF0,0xF8,0x7C,0x00,0xFF,
0xF1,0xF0,0x3C,0x00,0xFF,0xE3,0xE0,0x3E,0x00,0xFF,0xC7,0xC0,0x1F,0x00,0x7F,0xCF,
0xFF,0xFF,0x00,0x07,0x9F,0xFF,0xFF,0x80,0x0F,0x0F,0xFF,0xFF,0xC0,0x1F,0x0F,0xF1,
0xE7,0xC0,0x1E,0x00,0xF1,0xE3,0xC0,0x3C,0x30,0xF1,0xE1,0x00,0x7F,0xF8,0xF1,0xE0,
0x00,0x7F,0xF0,0xF1,0xE0,0x00,0x7F,0xF0,0xF1,0xE0,0x00,0x78,0x00,0xF1,0xE0,0x00,
0x00,0x01,0xF1,0xE1,0xC0,0x00,0x39,0xE1,0xE1,0xE0,0x07,0xFB,0xE1,0xE1,0xE0,0xFF,
0xFB,0xE1,0xE1,0xE0,0xFF,0xE7,0xC1,0xE1,0xE0,0xFC,0x1F,0x81,0xE3,0xE0,0x40,0x3F,
0x01,0xFF,0xE0,0x00,0xFE,0x00,0xFF,0xC0,0x00,0x7C,0x00,0x7F,0x80,0x00,0x30,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,
/*--  文字:  开  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xFF,
0xC0,0x00,0x78,0x03,0xE0,0x00,0x00,0x78,0x03,0xE0,0x00,0x00,0x78,0x03,0xE0,0x00,
0x00,0x78,0x03,0xE0,0x00,0x00,0x78,0x03,0xE0,0x00,0x00,0x78,0x03,0xE0,0x00,0x00,
0x78,0x03,0xE0,0x00,0x00,0x78,0x03,0xE0,0x00,0x00,0x78,0x03,0xE0,0x00,0x00,0x78,
0x03,0xE0,0x00,0xFF,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,
0xFF,0xE0,0x00,0x78,0x03,0xE0,0x00,0x00,0x78,0x03,0xE0,0x00,0x00,0x78,0x03,0xE0,
0x00,0x00,0x78,0x03,0xE0,0x00,0x00,0xF8,0x03,0xE0,0x00,0x00,0xF8,0x03,0xE0,0x00,
0x00,0xF0,0x03,0xE0,0x00,0x01,0xF0,0x03,0xE0,0x00,0x01,0xF0,0x03,0xE0,0x00,0x03,
0xE0,0x03,0xE0,0x00,0x07,0xC0,0x03,0xE0,0x00,0x1F,0xC0,0x03,0xE0,0x00,0x7F,0x80,
0x03,0xE0,0x00,0xFE,0x00,0x03,0xE0,0x00,0x7C,0x00,0x03,0xE0,0x00,0x30,0x00,0x03,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  发  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x81,0x80,0x00,0x0F,0x07,0x83,
0xC0,0x00,0x0F,0x07,0x83,0xF0,0x00,0x1F,0x0F,0x81,0xF8,0x00,0x1E,0x0F,0x80,0xFC,
0x00,0x3E,0x0F,0x80,0x7C,0x00,0x3C,0x0F,0x00,0x18,0x00,0x3F,0xFF,0xFF,0xFF,0xE0,
0x7F,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xFF,0xE0,0x3F,0xFF,0xFF,0xFF,0xC0,0x00,
0x1E,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x3F,
0xFF,0xFE,0x00,0x00,0x7F,0xFF,0xFE,0x00,0x00,0x7F,0xFF,0xFE,0x00,0x00,0xFF,0x00,
0x3E,0x00,0x00,0xFF,0x00,0x3C,0x00,0x01,0xF7,0x80,0x7C,0x00,0x01,0xF7,0x80,0xF8,
0x00,0x03,0xE3,0xC0,0xF8,0x00,0x03,0xC3,0xE1,0xF0,0x00,0x07,0xC1,0xF3,0xE0,0x00,
0x0F,0x80,0xFF,0xC0,0x00,0x0F,0x80,0x7F,0x80,0x00,0x1F,0x00,0x3F,0x00,0x00,0x3E,
0x00,0xFF,0xC0,0x00,0x7C,0x07,0xFF,0xF0,0x00,0xFC,0x1F,0xF3,0xFE,0x00,0xF9,0xFF,
0xC0,0xFF,0xE0,0x73,0xFF,0x00,0x3F,0xC0,0x01,0xF8,0x00,0x0F,0xC0,0x01,0xC0,0x00,
0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  者  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x07,0xC0,
0x00,0x00,0x00,0x07,0xC0,0x0E,0x00,0x00,0x07,0xC0,0x0F,0x00,0x0F,0xFF,0xFF,0xDF,
0x00,0x0F,0xFF,0xFF,0xFE,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x00,0x07,0xC0,0xF8,0x00,
0x00,0x07,0xC3,0xF0,0x00,0x00,0x07,0xC7,0xE0,0x00,0x00,0x07,0xCF,0xC0,0x00,0xFF,
0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xFF,0xC0,0x00,0x07,
0xF0,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x01,0xFF,0xFF,
0xFC,0x00,0x07,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xFC,0x00,0xFF,0xE0,0x00,0x7C,
0x00,0xFF,0xE0,0x00,0x7C,0x00,0x79,0xE0,0x00,0x7C,0x00,0x01,0xFF,0xFF,0xFC,0x00,
0x01,0xFF,0xFF,0xFC,0x00,0x01,0xFF,0xFF,0xFC,0x00,0x01,0xE0,0x00,0x7C,0x00,0x01,
0xE0,0x00,0x7C,0x00,0x01,0xE0,0x00,0x7C,0x00,0x01,0xFF,0xFF,0xFC,0x00,0x01,0xFF,
0xFF,0xFC,0x00,0x01,0xFF,0xFF,0xFC,0x00,0x01,0xE0,0x00,0x7C,0x00,0x01,0xE0,0x00,
0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  :  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x03,
0xF0,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x03,
0xF0,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  刘  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x07,0x80,0x01,0xF0,0x00,
0x07,0xC0,0x00,0xF0,0x00,0x07,0xC0,0x00,0xF8,0x00,0x07,0xC0,0x00,0x78,0x07,0x87,
0xC0,0xFF,0xFF,0xFF,0x87,0xC0,0xFF,0xFF,0xFF,0x87,0xC0,0xFF,0xFF,0xFF,0x87,0xC0,
0x00,0x03,0xE7,0x87,0xC0,0x00,0x03,0xC7,0x87,0xC0,0x3C,0x03,0xC7,0x87,0xC0,0x3E,
0x07,0xC7,0x87,0xC0,0x1E,0x07,0x87,0x87,0xC0,0x1F,0x07,0x87,0x87,0xC0,0x0F,0x8F,
0x87,0x87,0xC0,0x07,0xCF,0x07,0x87,0xC0,0x03,0xDF,0x07,0x87,0xC0,0x03,0xFE,0x07,
0x87,0xC0,0x01,0xFE,0x07,0x87,0xC0,0x00,0xFC,0x07,0x87,0xC0,0x00,0xFC,0x07,0x87,
0xC0,0x00,0x7C,0x07,0x87,0xC0,0x00,0xFE,0x07,0x87,0xC0,0x01,0xFF,0x07,0x87,0xC0,
0x01,0xFF,0x07,0x87,0xC0,0x03,0xEF,0x87,0x87,0xC0,0x07,0xC7,0xC0,0x07,0xC0,0x0F,
0x87,0xC0,0x07,0xC0,0x1F,0x03,0xE0,0x07,0xC0,0x3F,0x01,0xF0,0x07,0x80,0xFE,0x01,
0xE3,0xFF,0x80,0xFC,0x00,0xC3,0xFF,0x80,0x78,0x00,0x03,0xFF,0x00,0x20,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  剑  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x07,0x80,0x00,0x7C,0x00,
0x07,0x80,0x00,0xFE,0x00,0x07,0x80,0x00,0xFF,0x01,0xC7,0x80,0x01,0xFF,0x81,0xE7,
0x80,0x03,0xE7,0xC1,0xE7,0x80,0x07,0xC3,0xE1,0xE7,0x80,0x0F,0x81,0xF1,0xE7,0x80,
0x1F,0x80,0xF9,0xE7,0x80,0x3F,0x00,0x7D,0xE7,0x80,0x7E,0x00,0x3D,0xE7,0x80,0xFF,
0xFF,0xFD,0xE7,0x80,0xFF,0xFF,0xF1,0xE7,0x80,0x7F,0xFF,0xF1,0xE7,0x80,0x60,0x00,
0x01,0xE7,0x80,0x00,0x78,0x61,0xE7,0x80,0x0C,0x78,0x79,0xE7,0x80,0x3C,0x78,0x79,
0xE7,0x80,0x3C,0x78,0xF9,0xE7,0x80,0x1E,0x78,0xF1,0xE7,0x80,0x1E,0x3C,0xF1,0xE7,
0x80,0x1E,0x3C,0xF1,0xE7,0x80,0x0F,0x3D,0xE1,0xE7,0x80,0x0F,0x3D,0xE1,0xE7,0x80,
0x0F,0x3F,0xE1,0xE7,0x80,0x0F,0x9F,0xC1,0xE7,0x80,0x07,0x83,0xC0,0x07,0x80,0x06,
0x03,0xC0,0x07,0x80,0x00,0x1F,0xFE,0x07,0x80,0x7F,0xFF,0xFE,0x07,0x80,0x7F,0xFF,
0xFF,0xFF,0x80,0x7F,0xFE,0x01,0xFF,0x80,0x30,0x00,0x01,0xFF,0x00,0x00,0x00,0x01,
0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  锋  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=35x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=40x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x78,0x00,0x00,0x0F,0x00,0x78,
0x00,0x00,0x1E,0x00,0xFF,0xFE,0x00,0x1E,0x00,0xFF,0xFF,0x00,0x1F,0xF1,0xFF,0xFF,
0x00,0x3F,0xFB,0xE0,0x1E,0x00,0x3F,0xFB,0xF0,0x3C,0x00,0x3C,0x07,0xF8,0x7C,0x00,
0x78,0x0F,0xBC,0xF8,0x00,0x78,0x1F,0x3F,0xF0,0x00,0xF0,0x0E,0x1F,0xE0,0x00,0xFF,
0xE0,0x1F,0xE0,0x00,0x7F,0xE0,0xFF,0xFC,0x00,0x1F,0xE7,0xFC,0xFF,0xE0,0x0F,0x1F,
0xF7,0xBF,0xE0,0x0F,0x1F,0xC7,0x8F,0xC0,0x0F,0x0E,0x07,0x80,0xC0,0x0F,0x07,0xFF,
0xFF,0x80,0xFF,0xF7,0xFF,0xFF,0x80,0xFF,0xF7,0xFF,0xFF,0x80,0x7F,0xF0,0x07,0x80,
0x00,0x0F,0x00,0x07,0x80,0x00,0x0F,0x07,0xFF,0xFF,0x00,0x0F,0x07,0xFF,0xFF,0x00,
0x0F,0x33,0xFF,0xFF,0x00,0x0F,0xF0,0x07,0x80,0x00,0x0F,0xFF,0xFF,0xFF,0x80,0x0F,
0xEF,0xFF,0xFF,0xC0,0x0F,0xCF,0xFF,0xFF,0xC0,0x1F,0x80,0x07,0x80,0x00,0x0F,0x00,
0x07,0x80,0x00,0x0E,0x00,0x07,0x80,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x07,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,
};

char phrase[][phrase_w*phrase_h/8]=
{
/*--  文字:  W  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0x07,0x80,0x7C,0xF8,0x0F,0xC0,0x78,0xF8,0x0F,0xC0,0x78,0x78,0x0F,0xC0,0xF8,
0x78,0x0F,0xC0,0xF8,0x7C,0x1F,0xE0,0xF0,0x7C,0x1F,0xE0,0xF0,0x3C,0x1F,0xE1,0xF0,
0x3E,0x3F,0xE1,0xF0,0x3E,0x3D,0xF1,0xE0,0x1E,0x3C,0xF1,0xE0,0x1E,0x3C,0xF3,0xE0,
0x1F,0x78,0xFB,0xC0,0x0F,0x78,0x7B,0xC0,0x0F,0x78,0x7B,0xC0,0x0F,0xF8,0x7F,0xC0,
0x0F,0xF0,0x7F,0x80,0x07,0xF0,0x3F,0x80,0x07,0xF0,0x3F,0x80,0x07,0xE0,0x3F,0x00,
0x03,0xE0,0x1F,0x00,0x03,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  e  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x1F,0xFC,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x3E,0x1E,0x00,0x00,0x7C,0x1F,0x00,0x00,0x78,0x0F,0x00,0x00,
0x7F,0xFF,0x00,0x00,0x7F,0xFF,0x00,0x00,0x7F,0xFF,0x00,0x00,0x78,0x00,0x00,0x00,
0x78,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x06,0x00,0x00,0x3F,0x1E,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x0F,0xFC,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  l  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  c  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,
0x1F,0xFC,0x00,0x00,0x3E,0x0C,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,
0x78,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
0x78,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3F,0x1C,0x00,0x00,
0x1F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  o  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x0F,0xFE,0x00,0x00,
0x1F,0xFF,0x00,0x00,0x3E,0x0F,0x80,0x00,0x7C,0x07,0x80,0x00,0x78,0x07,0x80,0x00,
0x78,0x07,0xC0,0x00,0x78,0x07,0xC0,0x00,0x78,0x07,0xC0,0x00,0x78,0x07,0xC0,0x00,
0x78,0x07,0x80,0x00,0x7C,0x07,0x80,0x00,0x3C,0x0F,0x80,0x00,0x3F,0x1F,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x0F,0xFC,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  m  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0xF8,0xFE,0x00,0x3F,0xFD,0xFF,0x00,
0x3F,0xFF,0xFF,0x80,0x3E,0x1F,0x87,0x80,0x3E,0x1F,0x07,0xC0,0x3C,0x0F,0x07,0xC0,
0x3C,0x0F,0x07,0xC0,0x3C,0x0F,0x07,0xC0,0x3C,0x0F,0x07,0xC0,0x3C,0x0F,0x07,0xC0,
0x3C,0x0F,0x07,0xC0,0x3C,0x0F,0x07,0xC0,0x3C,0x0F,0x07,0xC0,0x3C,0x0F,0x07,0xC0,
0x3C,0x0F,0x07,0xC0,0x3C,0x0F,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  e  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x1F,0xFC,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x3E,0x1E,0x00,0x00,0x7C,0x1F,0x00,0x00,0x78,0x0F,0x00,0x00,
0x7F,0xFF,0x00,0x00,0x7F,0xFF,0x00,0x00,0x7F,0xFF,0x00,0x00,0x78,0x00,0x00,0x00,
0x78,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x06,0x00,0x00,0x3F,0x1E,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x0F,0xFC,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:     --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  t  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,
0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0xFF,0xE0,0x00,0x00,
0xFF,0xE0,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,
0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,
0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1F,0x60,0x00,0x00,
0x1F,0xE0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  o  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x0F,0xFE,0x00,0x00,
0x1F,0xFF,0x00,0x00,0x3E,0x0F,0x80,0x00,0x7C,0x07,0x80,0x00,0x78,0x07,0x80,0x00,
0x78,0x07,0xC0,0x00,0x78,0x07,0xC0,0x00,0x78,0x07,0xC0,0x00,0x78,0x07,0xC0,0x00,
0x78,0x07,0x80,0x00,0x7C,0x07,0x80,0x00,0x3C,0x0F,0x80,0x00,0x3F,0x1F,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x0F,0xFC,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:     --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  U  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,
0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,
0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,
0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,0x3C,0x01,0xF0,0x00,
0x3E,0x01,0xE0,0x00,0x3E,0x01,0xE0,0x00,0x1F,0x03,0xE0,0x00,0x1F,0xFF,0xC0,0x00,
0x0F,0xFF,0x80,0x00,0x07,0xFF,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  s  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xF0,0x00,0x00,
0x7F,0xF0,0x00,0x00,0x78,0x10,0x00,0x00,0x78,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,
0x7E,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,
0x00,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,0x00,0x00,0x70,0xF8,0x00,0x00,
0x7F,0xF0,0x00,0x00,0x7F,0xE0,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  e  --*/
/*--  微软雅黑22;  此字体下对应的点阵为:宽x高=30x38   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x38  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x1F,0xFC,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x3E,0x1E,0x00,0x00,0x7C,0x1F,0x00,0x00,0x78,0x0F,0x00,0x00,
0x7F,0xFF,0x00,0x00,0x7F,0xFF,0x00,0x00,0x7F,0xFF,0x00,0x00,0x78,0x00,0x00,0x00,
0x78,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x06,0x00,0x00,0x3F,0x1E,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x0F,0xFC,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

char number[][number_w*number_h/8]=
{
/*--  文字:  0  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFE,
0x00,0x07,0xFF,0x00,0x0F,0xFF,0x80,0x1F,0x9F,0xC0,0x1F,0x07,0xC0,0x3E,0x07,0xE0,
0x3E,0x03,0xE0,0x3C,0x03,0xE0,0x7C,0x03,0xE0,0x7C,0x01,0xF0,0x7C,0x01,0xF0,0x7C,
0x01,0xF0,0x7C,0x01,0xF0,0x7C,0x01,0xF0,0x7C,0x01,0xF0,0x7C,0x01,0xF0,0x7C,0x01,
0xF0,0x7C,0x01,0xF0,0x7C,0x01,0xE0,0x7C,0x03,0xE0,0x7C,0x03,0xE0,0x3E,0x03,0xE0,
0x3E,0x07,0xC0,0x1F,0x0F,0xC0,0x1F,0xFF,0x80,0x0F,0xFF,0x00,0x07,0xFE,0x00,0x00,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  1  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,
0x00,0x00,0x7C,0x00,0x01,0xFC,0x00,0x0F,0xFC,0x00,0x1F,0xFC,0x00,0x1F,0xFC,0x00,
0x1E,0x7C,0x00,0x18,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,
0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,
0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,
0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  2  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,
0x00,0x0F,0xFF,0x00,0x1F,0xFF,0x80,0x3F,0x1F,0xC0,0x3C,0x07,0xC0,0x38,0x07,0xC0,
0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xC0,0x00,0x07,0xC0,0x00,
0x0F,0xC0,0x00,0x0F,0x80,0x00,0x3F,0x00,0x00,0x7E,0x00,0x00,0xFC,0x00,0x03,0xF8,
0x00,0x07,0xF0,0x00,0x0F,0xC0,0x00,0x1F,0x80,0x00,0x1F,0x00,0x00,0x3E,0x00,0x00,
0x3C,0x00,0x00,0x7C,0x00,0x00,0x7F,0xFF,0xE0,0x7F,0xFF,0xE0,0x7F,0xFF,0xE0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  3  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,
0x00,0x1F,0xFE,0x00,0x1F,0xFF,0x00,0x1E,0x1F,0x80,0x18,0x0F,0x80,0x00,0x07,0xC0,
0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x80,0x00,
0xFF,0x00,0x0F,0xFE,0x00,0x0F,0xFE,0x00,0x0F,0xFF,0x00,0x00,0x1F,0x80,0x00,0x0F,
0xC0,0x00,0x07,0xC0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xC0,
0x00,0x07,0xC0,0x38,0x0F,0xC0,0x3F,0xFF,0x80,0x3F,0xFF,0x00,0x3F,0xFE,0x00,0x07,
0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  4  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x3F,0x80,0x00,0x7F,0x80,0x00,0x7F,0x80,
0x00,0xFF,0x80,0x00,0xFF,0x80,0x01,0xFF,0x80,0x03,0xEF,0x80,0x03,0xCF,0x80,0x07,
0xCF,0x80,0x0F,0x8F,0x80,0x1F,0x0F,0x80,0x1F,0x0F,0x80,0x3E,0x0F,0x80,0x7C,0x0F,
0x80,0xF8,0x0F,0x80,0xFF,0xFF,0xF8,0xFF,0xFF,0xF8,0xFF,0xFF,0xF8,0x00,0x0F,0x80,
0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  5  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,
0x80,0x0F,0xFF,0x80,0x1F,0xFF,0x80,0x1F,0xFF,0x80,0x1F,0x00,0x00,0x1F,0x00,0x00,
0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,0x1E,0xC0,0x00,0x1F,
0xFC,0x00,0x1F,0xFF,0x00,0x1F,0xFF,0x80,0x00,0x1F,0xC0,0x00,0x0F,0xC0,0x00,0x07,
0xC0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xC0,
0x00,0x07,0xC0,0x38,0x1F,0xC0,0x3F,0xFF,0x80,0x3F,0xFF,0x00,0x3F,0xFE,0x00,0x07,
0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  6  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
0xC0,0x01,0xFF,0xC0,0x03,0xFF,0xC0,0x07,0xE1,0xC0,0x0F,0xC0,0x00,0x1F,0x80,0x00,
0x1F,0x00,0x00,0x1E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3C,0x7E,0x00,0x3D,
0xFF,0x80,0x7F,0xFF,0xC0,0x7F,0xFF,0xC0,0x7F,0x07,0xE0,0x7E,0x03,0xE0,0x7E,0x01,
0xF0,0x7C,0x01,0xF0,0x7C,0x01,0xF0,0x3C,0x01,0xF0,0x3E,0x01,0xF0,0x3E,0x03,0xE0,
0x1F,0x03,0xE0,0x1F,0x87,0xE0,0x0F,0xFF,0xC0,0x07,0xFF,0x80,0x03,0xFF,0x00,0x00,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  7  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,
0xE0,0x7F,0xFF,0xE0,0x7F,0xFF,0xE0,0x7F,0xFF,0xE0,0x00,0x03,0xC0,0x00,0x07,0xC0,
0x00,0x07,0x80,0x00,0x0F,0x80,0x00,0x0F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,
0x3E,0x00,0x00,0x3C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0xF8,0x00,0x00,0xF8,
0x00,0x00,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,
0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  8  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,
0x00,0x07,0xFF,0x00,0x0F,0xFF,0x80,0x1F,0x8F,0xC0,0x3F,0x07,0xC0,0x3E,0x03,0xC0,
0x3E,0x03,0xC0,0x3E,0x03,0xC0,0x3E,0x03,0xC0,0x1E,0x07,0xC0,0x1F,0x8F,0x80,0x0F,
0xFF,0x00,0x07,0xFE,0x00,0x0F,0xFF,0x80,0x1F,0xFF,0xC0,0x3F,0x07,0xC0,0x3E,0x03,
0xE0,0x7C,0x01,0xE0,0x7C,0x01,0xF0,0x7C,0x01,0xF0,0x7C,0x01,0xF0,0x7C,0x01,0xE0,
0x7E,0x03,0xE0,0x3F,0x07,0xE0,0x1F,0xFF,0xC0,0x0F,0xFF,0x80,0x07,0xFF,0x00,0x00,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  9  --*/
/*--  微软雅黑26;  此字体下对应的点阵为:宽x高=21x46   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=24x46  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,
0x00,0x0F,0xFF,0x00,0x1F,0xFF,0x80,0x1F,0x9F,0x80,0x3E,0x07,0xC0,0x3E,0x07,0xC0,
0x7C,0x03,0xE0,0x7C,0x03,0xE0,0x7C,0x03,0xE0,0x7C,0x03,0xE0,0x7C,0x03,0xE0,0x7C,
0x03,0xE0,0x3E,0x07,0xE0,0x3F,0x0F,0xE0,0x1F,0xFF,0xE0,0x0F,0xFF,0xE0,0x07,0xFF,
0xE0,0x00,0xE3,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x07,0xC0,
0x00,0x0F,0x80,0x30,0x1F,0x80,0x3F,0xFF,0x00,0x3F,0xFE,0x00,0x3F,0xF8,0x00,0x07,
0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

#endif

touch.c

#include "touch.h"

int touch_x1=-1,touch_y1=-1,touch_x2=-1,touch_y2=-1;

/*
    触摸屏初始化:Init_touch
    参数为空
    返回值:int
        touch_fd:触摸屏的文件描述符
*/
int Init_touch(void)
{
    //1.打开触摸屏
    int touch_fd = open(TOUCH_FILE,O_RDONLY);
    if(-1 == touch_fd)
    {
        perror("open touch fail");
        return -1;
    }
    return touch_fd;
}

/*
    关闭触摸屏:Uninit_touch
    @touch_fd
    返回值:void
*/
void  Uninit_touch(int touch_fd)
{
    if(-1 == touch_fd)
    {
        return ;
    }
    close(touch_fd);
}

/*
    get_usr_input_pro:获取用户的对触摸屏的输入
    @touch_fd
    返回值:int 
        -1  失败
        0   成功
*/
int  getInput(int touch_fd)
{
    if(-1 == touch_fd)
    {
        return -1;
    }
    struct input_event ev;//保存读取出来的信息
    while(1)
    {
        //1 读取输入事件
        int res = read(touch_fd,&ev,sizeof(ev));
        if(res != sizeof(ev)) // 判断结构体数据不符合要求 重新读
        {
            continue;//跳过本次循环,执行下一次循环
        }

        //2.2 通过判断结构体里面的成员坐标值
        if(ev.type == EV_ABS && ev.code == ABS_X) //获取x轴的坐标
        {
            if(-1 == touch_x1)
            {
                touch_x1=ev.value *(1.0*800/1040); //只获取一次
                touch_x2 = ev.value *(1.0*800/1040);
            }
            touch_x2 = ev.value;        
        }

        if(ev.type == EV_ABS && ev.code == ABS_Y) //获取x轴的坐标
        {
            if(-1 == touch_y1)
            {
                touch_y1 = ev.value*(1.0*480/600);
                touch_y2 = ev.value*(1.0*480/600);
            }
            touch_y2 = ev.value*(1.0*480/600);
        }

        if(ev.type == EV_KEY && ev.code == BTN_TOUCH && ev.value == 0 ) //手指松开
        {
            break;//一次获取
        }
    }
    return 0;
}

/*  
    获取滑动的方向:Get_slip_direction
    返回值:int
        LEFT RIGHT UP DOWN TOUCH_ERROR
*/
int Get_slip_direction()
{
    //判断是否有滑动
    if(-1 == touch_x1 || -1 == touch_y1 || -1 == touch_x2 || -1 == touch_y2)
    {
        return TOUCH_ERROR;
    }
    int direction; //方向
    //printf("touch_x1:%d touch_y1:%d touch_x2:%d touch_y2:%d\n",touch_x1,touch_y1,
    //touch_x2,touch_y2);
    if(
        touch_x2 > touch_x1 && (abs(
        touch_x2-touch_x1) > abs(touch_y2-touch_y1)))
    {
        return RIGHT;
    }
    if(
        touch_x2 < touch_x1 && (abs(
        touch_x2-touch_x1) > abs(touch_y2-touch_y1)))
    {
        return LEFT;
    }
    if(touch_y2 < touch_y1 && (abs(
        touch_x2-touch_x1) < abs(touch_y2-touch_y1)))
    {
        return UP;
    }
    if(touch_y2 > touch_y1 && (abs(
        touch_x2-touch_x1) < abs(touch_y2-touch_y1)))
    {
        return DOWN;
    }

    return TOUCH_ERROR;
}


//打印坐标  测试
void printfTouchLocation()
{
    //1.打开触摸屏
    int fd = open("/dev/input/event0",O_RDONLY);
    if(-1 == fd)
    {
        perror("open touch fail");
        return ;
    }

    //2.操作
    struct input_event ev;//保存读取出来的信息

    while(1)
    {
        read(fd,&ev,sizeof(ev));
        printf("type =%d,code=%d,value=%d\n",ev.type,ev.code,ev.value);

        int x ,y ;
        if(ev.type == EV_ABS && ev.code == ABS_X )//触摸屏的x轴
        {
            x = ev.value *(1.0*800/1040);
        }

        if(ev.type == EV_ABS && ev.code == ABS_Y )//触摸屏的y轴
        {
            y = ev.value*(1.0*480/600);
        }

        printf("( %d , %d )\n",x,y);

        if(ev.type == EV_KEY && ev.code == BTN_TOUCH && ev.value == 0 ) //手指松开
        {
            break;//一次获取
        }
    }

    //3.关闭
    close(fd);
}

/*
    get_usr_touch: 获取用户触摸屏输入的坐标值
    @x :保存 x轴的坐标值
    @y :保存 y轴的坐标值
        返回值 :
            无
*/

touch.h

#ifndef __TOUCH_H__
#define __TOUCH_H__

/*头文件*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <linux/input.h>//输入子系统

#define UP 1
#define DOWN 2
#define LEFT 3
#define RIGHT 4
#define TOUCH_ERROR -1
#define TOUCH_FILE "/dev/input/event0"

extern int touch_x1, touch_y1, touch_x2, touch_y2;

int Init_touch(void);
void  Uninit_touch(int touch_fd);
int  getInput(int touch_fd);
int Get_slip_direction();
void printfTouchLocation();

#endif

words.c

#include"words.h"

/*
    Draw_word:在屏幕的指定的位置显示一个颜色位color的字符
    @x,y:字符区域的左上角在屏幕上的位置
    @w,h:字符区域的宽和高
    @color: 字的颜色
    @char s[]:显示的那个字符的字模 
    @plcd 
*/
void Draw_word(int x,int y,int w,int h,int color,char s[],int *plcd)
{
    //1.遍历字模数组的元素
    int i,j;
    int line_num=w/8;//一行所占的元素的数量
    //遍历整个字符区域
    for(i=0;i < w*h/8;i++)
    {
        //遍历元素的每一位 由高到低
        for(j=7;j>=0;j--)
        {
            //s[i] >> 7 判断是不是1  
            //s[i] >> 7 & 1  0 =>0 1 => 1
            if((s[i]>>j)&1)
            {
                Lcd_draw_point(x+8*(i%line_num)+7-j,y+i/line_num,color,plcd);
            }
             
        }
        //usleep(1);
    }
}


words.h

#ifndef _WORDS_H_
#define _WORDS_H_

#include <unistd.h>
#include "lcd.h"

void Draw_word(int x,int y,int w,int h,int color,char s[],int *plcd);

#endif

遗憾和总结

​ 在这个项目里,还有很多我想实现的功能没有实现,bug也还有,但是时间确实不咋够。不过,在不断优化自己代码的时候,我也明白了一个道理:代码永无止境,不要过度追求完美。感触和想法肯定还有,但是我觉得这是我最大的收获了。文章来源地址https://www.toymoban.com/news/detail-502979.html

到了这里,关于Project_电子相册&音乐播放器&环境检测系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Python制作一个相册播放器(附源码)

    大家好,我是小F。 对于相册播放器,大家应该都不陌生(用于浏览多张图片的一个应用)。 当然还有视频、音乐播放器,同样是用来播放多个视频、音乐文件的。 在Win10系统下,用【 照片 】这个应用打开一张图片,就可以浏览该图片所在文件夹中其它图片了。 从上面的图中

    2024年02月04日
    浏览(34)
  • Android 音乐播放器

    ◼ 音乐播放器 . ◼ 要求 : Activity 编程、 ListView 编程、 SeekBar 编程、 ExoPlayer 编程( 播放 、 暂停 、 停止 、 上一首 、 下一首 ),音乐文件放在 assets/music 目录下,界面自拟. ◼ 期望最终效果: ◼ 分别对应 activity_music_list.xml 、 activity_my_music_player.xml 的视图. ◼ 点击列表任

    2024年02月03日
    浏览(55)
  • 开源音乐播放器!

    导读 音乐是生活的一部分。维基百科关于音乐发展历史的文章有这样一段不错的描述说:“全世界所有的人们,包括哪怕是最孤立、与世隔绝的部落,都会有自己的特色音乐……”好吧,我们开源人就构成了一个部落。我建议我们的“音乐形式”应该包括开源音乐播放器。

    2024年02月08日
    浏览(39)
  • FPGA开发:音乐播放器

    相关阅读  FPGA开发专栏 https://blog.csdn.net/weixin_45791458/category_12388695.html?spm=1001.2014.3001.5482         FPGA开发板上的蜂鸣器可以用来播放音乐,只需要控制蜂鸣器信号的方波频率、占空比和持续时间即可。         简谱上的4/4表示该简谱以4分音符为一拍,每小节4拍,简谱上应该

    2024年02月14日
    浏览(38)
  • 微信小程序--音乐播放器

    说明: 这个项目旨在练习组件以及页面的设计。页面和交互的实现可能有多种方式,这里只为了对组件和项目的结构进行熟悉了解。后续会有更加完善的项目。 由于涉及到mp3外链导入音乐,预览二维码在外链失效时会出错,这里不放预览二维码了;另预览二维码存在有效时

    2024年02月09日
    浏览(42)
  • .netcore音乐播放器 musicPlayer

    html音乐播放器 .net core mvc 音乐播放器 支持上传本地音乐到云端 支持通过文件夹创建歌单(不需要数据库和其他数据存储) 通过歌单分类 播放歌曲 支持播放暂停 上一首 下一首切换 支持显示歌曲列表 歌单切换 展示歌曲根据歌单名去获取歌曲显示 功能 版权原因 或者想创建自己

    2024年02月20日
    浏览(31)
  • QT 离线音乐播放器

            今天刚做完一个简单的智能家居项目,里面包含了一个比较简单的音乐播放器,为了加深一下对这个东西印象,所以把操作流程以及一些用到的类和方法记录一下。 目录 1.UI界面制作 2.加入播放器类 3.播放器初始化 4.功能控件         4.1 播放、暂停、切换歌曲    

    2023年04月24日
    浏览(38)
  • Android开发之音乐播放器

    我们大家平时长时间打代码的时候肯定会感到疲惫和乏味,这个时候一边播放自己喜欢的音乐,一边继续打代码,心情自然也愉快很多。音乐带给人的听觉享受是无可比拟的,动听的音乐可以愉悦人的身心,让人更加积极地去热爱生活。接下来就教大家如何用Android Studio自己

    2024年02月08日
    浏览(49)
  • STM32之音乐播放器

    CPU: STM32F103ZE 屏幕: 3.5寸TFTLCD屏 音频解码器: VS1053 SD卡、外扩Sram   VS1053b 是单片 Ogg Vorbis/MP3/AAC/WMA/MIDI 音频解码器,及 IMA ADPCM 编码器和用户加载的 OggVorbis 编码器。   支持: MP3/WMA/OGG/WAV/FLAC/MIDI/AAC 等音频格式的解码,并支持: OGG/WAV 音频格式的录音,支持高低音调节

    2023年04月09日
    浏览(32)
  • HarmonyOS开发案例:【音乐播放器】

    使用ArkTS语言实现了一个简易的音乐播放器应用,主要包含以下功能: 播放应用中的音频资源文件,并可进行上一曲、下一曲、播放、暂停、切换播放模式(顺序播放、单曲循环、随机播放)等操作。 结合后台任务管理模块,实现熄屏后继续播放音频。 相关概念 [AVPlayer]:

    2024年04月24日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包