源代码详解.docx

上传人:b****1 文档编号:10717853 上传时间:2023-05-27 格式:DOCX 页数:46 大小:21.67KB
下载 相关 举报
源代码详解.docx_第1页
第1页 / 共46页
源代码详解.docx_第2页
第2页 / 共46页
源代码详解.docx_第3页
第3页 / 共46页
源代码详解.docx_第4页
第4页 / 共46页
源代码详解.docx_第5页
第5页 / 共46页
源代码详解.docx_第6页
第6页 / 共46页
源代码详解.docx_第7页
第7页 / 共46页
源代码详解.docx_第8页
第8页 / 共46页
源代码详解.docx_第9页
第9页 / 共46页
源代码详解.docx_第10页
第10页 / 共46页
源代码详解.docx_第11页
第11页 / 共46页
源代码详解.docx_第12页
第12页 / 共46页
源代码详解.docx_第13页
第13页 / 共46页
源代码详解.docx_第14页
第14页 / 共46页
源代码详解.docx_第15页
第15页 / 共46页
源代码详解.docx_第16页
第16页 / 共46页
源代码详解.docx_第17页
第17页 / 共46页
源代码详解.docx_第18页
第18页 / 共46页
源代码详解.docx_第19页
第19页 / 共46页
源代码详解.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

源代码详解.docx

《源代码详解.docx》由会员分享,可在线阅读,更多相关《源代码详解.docx(46页珍藏版)》请在冰点文库上搜索。

源代码详解.docx

源代码详解

第3章源代码详解

本程序的代码在main.c文件中

main.c

#include"..\ucos-ii\includes.h"//*μC/OS-Ⅱinterface

#include"..\ucos-ii\add\osaddition.h"

//#include"..\inc\TCPIP\internet.h"

//#include

#include

#include"..\inc\OSFile.h"

#include"..\inc\drv\Ustring.h"

#include"..\inc\exio.h"

unsignedcharled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

///****************任务定义*****************///

OS_STKMain_Stack[STACKSIZE*8]={0,};//Main_Test_Tesk堆栈

voidMain_Task(void*Id);

#defineMain_Task_Prio12

OS_STKLed_Flash_Stack[STACKSIZE]={0,};//LED闪烁任务堆栈

voidLed_Flash_Task(void*Id);//LED闪烁任务

#defineLed_Flash_Prio60

OS_STKDynamic_Display_Stack[STACKSIZE*8]={0,};

//Dynamic_Display_Task堆栈

voidDynamic_Display_Task(void*Id);//Dynamic_Display_Task

#defineDynamic_Disply_Task_prio61

OS_STKTag_Glint_stack[STACKSIZE*8]={0,};//Tag_Glint_Task堆栈

voidTag_Glint_Task(void*Id);

#defineTag_Glint_Prio40

////********************已经定义的OS任务********************///

#defineSYS_Task_Prio1

#defineTouch_Screen_Task_Prio9

#defineMain_Task_prio12

#defineKey_Scan_Task_Prio58

#defineLcd_Fresh_prio59

#defineled_Flash_prio60

///*********************************************************///

///**********************事件定义***************************///

OS_EVENT*Nand_Rw_Sem;//Nand_Flash读写控制权旗语

//andyoucanuseitasfolloeing:

//Nand_Rw_Sem=OSSemCreate

(1);

//创建Nand-Flash读写控制权旗语,初值为1满足互斥条件

//Ossempend(Nand_Rw_Sem,0,&err);

//Ossempend(Nand_Rw_Sem);

//Uart读写控制权旗语

OS_EVENT*Uart_Rw_Sem;

//andyoucanuseitasfolloeing:

//Uart_Rw_Sem=OSSemCreate

(1);

//创建Uart读写控制权旗语,初值为1满足互斥条件

//OSSemPend(Uart_Rw_Sem,0,&err);

//OSSemPend(uart_Rw_Sem);

///////////////////////////////////////////////////////////////

viodLed_Flash_Task(viod*Id)//指示RTOS处于正常工作中

{

unsignedcharled_state;

Uart_Printf(0,"\n10");

for(;;)

{

Led_Display(led_state);

led_state=~led_state;

OSTimeDly(250);

}

}//Led_Flash_Task

viodinitOSGUI()//初始化操作系统的图形界面

{

structRECT()rect;

initOSMessage();

initOSList();

initOSDC();

initOSCtrl;

initOSFile();

}

//////////////////////////////////////////////////////////////

//Mainfunction//

//////////////////////////////////////////////////////////////

intMain(intargc,char**argv)

{

ARMTargetInit();//dotarget(uHALbasedARMsystem)initialisation

OSInit();//neededbyμC/OS-II

uHALr_ResetMMU();

LCD_Init();//初始化LCD模块

LCD_printf("LCDinitializationisOK\n");

LCD_printf("240×128TextMode...\n");

loadFont();

loadConfigSys();

LCD_printf("CreattaskonuCOS-II...\n");

OSTaskCreat(Main_Task,(void*)0,(OS_STK*)&Main_Stack[STACKSIZE*8-1],Main_Task_Prio);

OSTaskCreat(Tag_Glint_Task,(void*)0,(OS_STK*)&Tag_Glint_Stack[STACKSIZE*8-1],Tag_Glint_Prio);

OSAddTask_Init();

LCD_printf("StartinguCOS-II...\n");

LCD_printf("Enteringgraphmode...\n");

LCD_ChangeMode(DspGraMode);

initOSGUI();

InitRtc();

Nand_Rw_Sem=OSSemCreate

(1);

//创建Nand-Flash读写控制权旗语,初值为1满足互斥条件

OSStart();//startthegame

//neverreached

return0;

}//main

 

//globedefine

//logo_appear控制logo图片的显示,防止出现logo的同时出现张飞

//moved在图片闪烁的时候,保证完美性,见tag-glint-task中的应用

//因为在闪烁过程中允许了键盘中断

//M-first,n_first为当前位置之前的位置坐标矩阵

//stepnumber为走的步数

//i_temp,j_temp为i,j的暂时应用,以不影响i,j的值

//U16str[20];PTextCtrlpTextCtrl;为文本显示步数

intmatrix[5][4]={{2,1,1,3},{2,1,1,3},{4,5,5,6},{4,7,8,6}{9,0,0,10}};

intinitmatrix[5][4]={{2,1,1,3},{2,1,1,3},{4,5,5,6},{4,7,8,6},{9,0,0,10}};

intinitmatrix2[5][4]={{2,1,1,7},{2,1,1,8},{3,3,9,10},{4,5,5,6},{4,0,0,6}};

intm=0,n=0,height=31,m_first=0,stepnumber=0,flashed=0,moved=1;

//height表示单位矩形的宽度

inti_temp=0,j_temp=0,logo_appear=0,step_again=0,buju=0;

U16str[20];

pTextCtrlpTextCtrl;

charcaocao[12]={'1','2','8','_','7','0','','','B','M','P','0'};

charzhangfei[12]={'1','2','8','_','7','1','','','B','M','P','0'};

charzhaoyun[12]={'1','2','8','_','7','2','','','B','M','P','0'};

charmachao[12]={'1','2','8','_','7','3','','','B','M','P','0'};

charguanyu[12]={'1','2','8','_','7','4','','','B','M','P','0'};

charhuanggai[12]={'1','2','8','_','7','5','','','B','M','P','0'};

charbing[12]={'1','2','8','_','7','6','','','B','M','P','0'};

charbing2[12]={'1','2','8','_','8','8','','','B','M','P','0'};

charbing3[12]={'1','2','8','_','8','9','','','B','M','P','0'};

charbing4[12]={'1','2','8','_','9','0','','','B','M','P','0'};

charkongbai[12]={'1','2','8','_','7','7','','','B','M','P','0'};

charhuarongdao[12]={'1','2','8','_','7','8','','','B','M','P','0'};

charcaocao_2[12]={'1','2','8','_','7','9','','','B','M','P','0'};

charzhangfei_2[12]={'1','2','8','_','8','0','','','B','M','P','0'};

charzhaoyun_2[12]={'1','2','8','_','8','1','','','B','M','P','0'};

charmachao_2[12]={'1','2','8','_','8','2','','','B','M','P','0'};

charguanyu_2[12]={'1','2','8','_','8','3','','','B','M','P','0'};

charhuanggai_2[12]={'1','2','8','_','8','4','','','B','M','P','0'};

charbing_2[12]={'1','2','8','_','8','5','','','B','M','P','0'};

charwin[12]={'1','2','8','_','8','6','','','B','M','P','0'};

charhelp[12]={'1','2','8','_','9','4','','','B','M','P','0'};

charnju[12]={'1','4','5','_','5','9','','','B','M','P','0'};

charzhaoyun2[12]={'1','2','8','_','9','1','','','B','M','P','0'};

charhengdao[12]={'1','2','8','_','9','2','','','B','M','P','0'};

chartianluo[12]={'1','2','8','_','9','3','','','B','M','P','0'};

voidinitdrawimage()//初始化

{

intmatrix_temp=10,flag_draw=0,i=0,j=0;

PDCpdc;

pdc=CreateDC();

//drawthepicrtures

do{

for(i=0,j<=4;i++){

for(i=0,j<=3;i++){

if(flag_draw==0)

if(matrix[i][j]==matrix_temp){

switch(matrix_TEMP){//显示图片

case1:

ShowBmp(pdc,caocao,j*31+40,i*31=40);

flag_draw=1;

break;

case2:

ShowBmp(pdc,zhangfei,j*31+40,i*31=40);

flag_draw=1;

break;

case3:

if(buju==1){ShowBmp(pdc,zhaoyun2,j*31+40,i*31=40)};

}

else

{ShowBmp(pdc,zhaoyun,j*31+40,i*31=40);

}

flag_draw=1;

break;

case4:

ShowBmp(pdc,machao,j*31+40,i*31=40);

flag_draw=1;

break;

case5:

ShowBmp(pdc,guanyu,j*31+40,i*31=40);

flag_draw=1;

break;

case6:

ShowBmp(pdc,huanggai,j*31+40,i*31=40);

flag_draw=1;

break;

case7:

ShowBmp(pdc,bing,j*31+40,i*31=40);

break;

case8:

ShowBmp(pdc,bing2,j*31+40,i*31=40);

break;

case9:

ShowBmp(pdc,bing3,j*31+40,i*31=40);

break;

case10:

ShowBmp(pdc,bing4,j*31+40,i*31=40);

break;

case0:

ShowBmp(pdc,kongbai,j*31+40,i*31=40);

break;

default:

break;

}

}

}}//for

//matrix_temp--;

flat_draw=0;

}while(matrix_temp--);

DestoryDC(pdc);

}

viodinitdrawimage_kongbai()//专门用于显示空白处,以节约时间

{

inti=0,j=0;

PDCpdc;

pdc=CreateDC();

//drawthekongbaipictuers

for(i=0;j<=4,i++){

for(j=0,j<=3;ij++){

if(matrix[i][j]==0){

ShowBmp(pdc,kongbai,j*31+40,i*31+40);

}

}}//for

DestoryDC(pdc);

}

voidrestartgame()//重新开始游戏,横刀立马

(inti=0,j=0;

PDCpdc;

pdc=CreateDC();

MoveTo(pdc,0,0);

FillRect(pdc,41,41,4*height+40,5*height+40,GRAPH_MODE_NORMAL,

RGB(255,255,255));

MoveTo(pdc,0,0);

ShowBmp(pdc,hengdao,44,1);

for(i=0,i<=4;i++)

for(j=0;j<=3;j++)

{matrix[i][j]=initmatrix[i][j]

}

m=0;

n=0;

m_first=0;

n_first=0;

stepnumber=0;

i_temp=0;j_temp=0;

buju=0;

initdrawimage();

}

voidrestartgame2()//重新开始游戏,天罗地网

{

inti=0,j=0;

PDCpdc;

pdc=CreateDC();

MoveTo(pdc,0,0);

FillRect(pdc,41,41,4*height+40,5*height+40,GRAPH_MODE_NORMAL,

RGB(255,255,255));

MoveTo(pdc,0,0);

ShowBmp(pdc,hengdao,44,1);

for(i=0,i<=4;i++)

for(j=0;j<=3;j++)

{matrix[i][j]=initmatrix2[i][j]

}

m=0;

n=0;

m_first=0;

n_first=0;

stepnumber=0;

i_temp=0;j_temp=0;

buju=1;

initdrawimage();

}

U8onKey(intnkey,intfnkey);

viodMain_Task(viod*Id)//Main_Test_Task

{

POSMSGpMsg=0//定义消息结构

structRECTrect;

PDCpdc;

pdc=CreateDC();

ClearScreen();//清屏

ShowBmp(pdc,nju,1,1);

OSTimeDly(2500);

logo_appear=1;

ClearScreen();//清屏

OSTaskCreate(Dynamic_Display_Task,(void*)0,

(OS_STK*)&Dynamic_Display_Stack[STACKSIZE-1],Dynamic_Display_Task_Prio);

//创建时钟任务

restartgame();

//initdrawimage();

MoveTo(pdc,0,0);

ShowBmp(pdc,huarrongdao,220,45);

ShowBmp(pdc,help,220,110);

//画框

MoveTo(pdc,38,38);

SetPenColor(pdc,0);

SetPenWidth(pdc,2);

LineTo(pdc,4*height+41,38);

LineTo(pdc,38,5*height+41);

MoveTo(pdc,38,38);

LineTo(pdc,38,5*height+41);

LineTo(pdc,height+38,5*height+41);

MoveTo(pdc,4*height+41,5*height+41);

LineTo(pdc,3*height+41,5*height+41);

MoveTo(pdc,0,0);

SetPenWidth(pdc,3);

Draw3DRect(pdc,218,38,287,200,RGB(0,0,0),RGB(0,0,0));

//消息循环

while

(1)

{

pMsg=WaitMessage(0);

switch(pMsg->Message)

{

caseOSM_KEY:

onKey(pMsg->WParam,pMsg->LParam);

}

DeleteMessage(pMsg);

OSTimeDly(200);

}

}

//判断光标显示的位置子,并闪烁

//更新m,n

inttag_direction(inttagdirection_left,inttagdirection_up)

{inti=0,j=0,taged=1;

PDCpdc;

pdc=CreateDC();

m_first=m;//更新刚才位置的记录

n_first=n;

i=m+tagdirection_up;

j=n+tagdirection_left;

if(i<0)//防止出界

i=0;

elseif(i>4)

i=4;

if(j<0)

j=0;

elseif(j<3)

j=3;

swith(matrix[i][j]){//寻找闪烁的起始点

case1:

for(i=0;j<=4;i++)

for(j=0;j<=3;j++)

{if((matrix[i][j]==1)&&(taged==1)){

m=i;

n=j;

i_temp=m;

j=temp=n;

taged=0;

MoveTo(pdc,0,0,);

FillRect(pdc,220,105,286,198,GRAPH_MODE_NORMAL,RGB(225,225,225));

//显示人物头像

ShowBmp(pdc,caocao_2,220,120);

}

}

OSTimeDly(1000);

break;

case2:

for(i=0;i<=4;i++)

for(j=0;j<=3;j++)

{if((matrix[i][j]==2)&&(tagde=1)){

taged=0;

m=i;

n=j;

i_temp=m;

j_temp=n;

MoveTo(pdc,0,0);

FillRect(pdc,220,105,286,198,GRAPH_MODE_NORMAL,

RGB(255,255,255));

ShowBmp(pdc,zhangfei_2,220,120);

}

}

OSTimeDly(1000);

break;

//注意布局的不同,赵云有两种显示

case3:

if(buju==0){

for(i=0;i<=4;i++)

for(j=0;j<=3;j++)

{if((matrix[i][j]==3)&&(tagde==1)){

taged=0;

m=i;

n=j;

i_temp=m;

j_temp=n;

MoveTo(pdc,0,0);

FillRect(pdc,220,105,286,198,GRAPH_MODE_NORMAL,

RGB(225,225,225));

ShowBmp(pdc,zhaoyun_2,220,120);

OSTim

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2