⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 本方案主要介绍了利用凌阳SPCE061A精简开发板作为控制核心
💻 C
📖 第 1 页 / 共 2 页
字号:
	  x++;
    }	
}	
//======================================================================================================
//语法格式: void ReadDisplay(void)
//功能:液晶显示
//参数:无
//返回值:无
//日期:2005.04.06
//======================================================================================================
void ReadDisplay(void)
 {  
    char *string1 = "person";                          //定义两个书名
    char *string2 = "business";
    char *TPage1 = "002";                              //定义两本书的总页码
    char *TPage2 = "003";
    char *StrPtr;
    unsigned int ch[10];               
    char pn[4] = {'0','0','0','\0'} ;                   //定义两个一维数组存放页码和书码          
    char bn[3] = {'0','0','\0'};
    char str[20][21];                                   //定义一个数组处理显示文字
    char word[20];	                                    //定义一个数组存放一个单词		
	int i=0,j,m=0; 
	int a,b,c,r1,r2;
	int length = 98;
	int line = 0;
	int Flag_end = 0;
	int n = 0;
               
    pn[0] = (int)(pno)/10 + '0';                          //把页码换算成个、十、百位的数存放在数组中
    pn[1] = (int)(pno)/10%10 + '0';
    pn[2] = (int)(pno)%10 + '0'; 
    bn[0] = (int)(bno)/10 + '0';
    bn[1] = (int)(bno)%10 + '0';
          
    for(i=0;i<400;i++)
    {	
      if(string[i] == '\0')                                //清空数组中没有存放数据的单元
      {
        for(j=i;j<400;j++)
        string[j] = 0x0000;
      }
    }   
   
    i = 0;
    length = 98;	
   
    while(string[i]&&line<20)
    {                                                      
	  for(j=0;j<20&&(Flag_end == 0);j++)                     //开始按单词存放文本                       
	  {
	    a = 0;
	    b = 0;
	    c = 0;
	    if(string[i]>='A'&&string[i]<='Z')                    //大写字母时位长度减8
	    {
	  	  length-=8;
	  	  a++;
	    }
	    else if(string[i]>='a'&&string[i]<='z'&&string[i]!='i'&&string[i]!='l')
	    {
	  	  length-=6;                                           //除“i"和"l"之外的小写字母位长度减6
	      b++;
	    }
	    else if(string[i] == 'i'||string[i] == 'l')
	    {                                                       //"i"或"l"时位长度减2
	      length-=2;
	      c++;
	    }
	    else if(string[i] == 0x0020||string[i] == '?')          //空格或者问号时位长度减6
	    {
	      length-=6;
	  	  Flag_end = 1;
	      b++;
	    }
	    else if(string[i] == 0x000a||string[i] == 0x000d||string[i] == 0xffff)        //amend 2005.4.2.16.05
	    {
	      string[i] = 0x0020;                                    //出现换行或者缩进符时换成空格
	      length-=6;
	      Flag_end = 1;
	      b++;
	    }
	    else                                                     //其他情况位长度减2
	    {
	      length-=2;
	  	  Flag_end = 1;
	  	  c++;
	    }
	    word[j] = string[i];                                     //把单词存入单词数组
	    i++;
	    Clear_Watch_Dog();
   	  }
      if(length <8)                                               //如果剩余位长度还能显示一个字符
      {
        for(m=n;m<21;m++)
	    {
	     str[line][m] = 0x0020;                                    //先把二维数组中没有用到的单元清空          
	    }
        n = 0;                                                     //否则,存入下一行
	    line++;
	    length = 98 - 8*a - 6*b - 2*c;
      } 
      for(m=0;m<j;m++)
	  {  
	    str[line][n] = word[m];                                      //把单词存入已经选好的二维数组                                          
	    n++;
      } 
	  Flag_end = 0;
      Clear_Watch_Dog();
     }
      for(i=n;i<21;i++)
      {
        str[line][i] = 0x0020;
      }
      if(line<20)
      {
	    for(i=line+1;i<20;i++)                                         //把二维数组中没有用到的单元清空    
	    {
	      for(j=0;j<21;j++)
	      {
	        str[i][j] = 0x0020;
		    Clear_Watch_Dog();
		  }
        }
      }  
  		
      Init_sys();	                                         //amend 14:10
      FG_InitGraphic();	                                     //初始化LCDIO口   函数定义在Splc501sys.asm

      FG_ClearScreen(1);		   
	  FG_Bar(0,0,100,50);   	
      FG_Bar(0,51,100,64);
      FG_Bar(101,51,128,64);
      FG_Bar(101,0,128,30);
      FG_Bar(101,31,128,50);                                  //画出6个分区
      
      FG_PutStr("Total",0,126,28);
      FG_PutStr("read",0,124,60);	
      FG_PutStr("page",0,126,50);                              //显示各区定义好的字符串     
        
      for(i=0;*(pn+i)!='\0';i++)
      *(ch+i) = *(pn+i);
      *(ch+3) = '\0';
      FG_PutStr(pn,0,124,42);                                  //显示页码
      i = 0;
      FG_PutStr(str[i],0,r,t);                                  //显示当前页的内容
      r1 = r;
      r2 = t;
      for(i=1;i<20;i++)
      {
        t -= 10;
     	FG_PutStr(str[i],0,r,t);
     	Clear_Watch_Dog(); 
       } 
       r = r1;
       t = r2;                                                  //把开始显示的位置保存
       
       FG_Bar(0,51,100,64);
       FG_Bar(0,51,100,64);
       FG_Bar(101,0,128,30);
       FG_PutStr("Total",0,126,28);
       FG_PutStr("No.",0,98,60);                                 //显示书码及其书名   
       StrPtr = string1;
       FG_PutStr(TPage1,0,126,18);
       if(bno==1)
       { 
     	  StrPtr = string2;   //
     	  FG_PutStr(TPage2,0,126,18);                             //第2本书时显示的总页数为3
       }
       FG_PutStr(StrPtr,0,70,60);                                 //第1本书时显示的总页书为2
       for(i=0;*(bn+i)!='\0';i++)
       *(ch+i) = *(bn+i);
       *(ch+i) = '\0';
       FG_PutStr(bn,0,82,60);                                   
      	 		
       Clear_Watch_Dog();
     
}      	
//=============================================================
//语法格式:void Readdata()
//功能:读存储器文字资源
//参数:无
//返回值:无
//日期:2005.04.06
//=============================================================
void Readdata()
{   
    int i,ret;
    unsigned int Block,Page,Column;
    long Addr,Addr_end;
    long Text_StartAddr,Text_EndAddr,Voice_StartAddr,Voice_EndAddr;	
    //*************************************************************
    //初始化
    //*************************************************************
  	System_Initial();	
	InitSignalLine();  
	SP_InitSamsungFlash();
	//**************************************************************
	
	if(ReadBook_Flag==0)
	{
	  SearchSnd(bno,pno,&Text_StartAddr,&Text_EndAddr,&Voice_StartAddr,&Voice_EndAddr);
	  Addr = Text_StartAddr;                                      
      Addr_end = Text_EndAddr;                               //读索引表,取出初始地址和结束地址
    }
    
    Block = (unsigned int)(Addr>>14);			             //
	Page = (unsigned int)((Addr&0x3fff)>>9);	             //
	Column = (unsigned int)(Addr&0x1ff);		             //根据地址计算所在的块、页和页内地址
    
    SP_InitReadSamsungFlash_1(Column,Page,Block);            //初始化读flash  
   
    for(i=0;i<400;i+=2)
	{   
	   
	   if(Column>=511)                                       //如果大于一个,换页读取  
	   {
	     Page += 1;
	     Column = 0;
	     SP_InitReadSamsungFlash_1(Column,Page,Block);
	   }
	   ret =SP_ExtractSamsungFlash();	                      //读flash存放在string数组中   
	   Addr += 2;
	   string[i] = ret&0x00ff;
       ret = ret >>8;
  	   string[i+1] = ret&0x00ff;
       Column += 2;
	   Clear_Watch_Dog();
	}
}

//============================================================= 
// 语法格式:    int Delay()  
// 功能描述:    延时并清看门狗
// 参    数:   无
// 返 回 值:   无
// 日    期:	2005.04.06
//=============================================================
int Delay() 
{
    int DelayValue = 0;
    
    for (DelayValue = 0; DelayValue < 0x2000; DelayValue++)
        *P_Watchdog_Clear = 1;
}

//============================================================= 
//	语法格式:   unsigned int GetKey(void)
//	功能描述:	延时等待,返回键值,没有去抖处理
//	参    数:	无
//	返 回 值:	返回16位键值
//	日    期:	2005.04.06
//=============================================================
unsigned int GetKey(void)                  
{
	int i;
                                                     //使用IOA9~IOA15作为键盘输入口
	*P_IOA_Dir &= (~KEY_ALL|0x0100);                 //定义的相应端口为上拉输入
	*P_IOA_Attrib &= (~KEY_ALL|0x0100);
	*P_IOA_Buffer |= KEY_ALL;
	
	for(i=0;i<200;i++)                               //延时
    {
	  Clear_Watch_Dog();
	}
	KeyValue = ((*P_IOA_Data) & KEY_ALL) ^ KEY_ALL;  //取键值
    //return KeyValue;
}

//============================================================= 
// main.c 结束
//=============================================================	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -