Exemple #1
0
void displayHZ_at_xyaddr(unsigned char addr,unsigned char hang,unsigned char lie) 
{ 
  unsigned int temp; 
  unsigned char low; 
  unsigned char high; 
 temp=(size_lie/8)*2*(hang-1)+2*(lie-1); 
 //TEXT模式下,TEXT区域被分为 size_hang/8行、size_lie/8列个8X8 点阵 
 //行地址为0-(size_hang/8-1),列地址 0  -  (size_lie/8-1) 
 //注意,本程序的hang  和 lie 都是从 1  开始的,并且是 16X16的 
 low=temp&0x00ff; 
 high=(temp>>8)&0x00ff; 
 double_byte_parameter(low,high,0x24); 
 no_parameter(0xb0); 
 check_sta3(); 
 wdata(addr);//左上 
 check_sta3(); 
 wdata(addr+2);//右上     
 check_sta3(); 
 wcom(0xb2); 

 temp=(size_lie/8)*2*(hang-1)+(size_lie/8)+2*(lie-1);// 下半部分比上半部分的地址多(size_lie/8) 
 low=temp&0x00ff; 
 high=(temp>>8)&0x00ff; 
   
 double_byte_parameter(low,high,0x24); 
 no_parameter(0xb0); 
  check_sta3();         
 wdata(addr+1); 
  check_sta3();        
  wdata(addr+3);                
 check_sta3(); 
 wcom(0xb2); 
} 
Exemple #2
0
void all_display(unsigned char state,unsigned char vlue) 
{ 
    unsigned int i; 
  if(state==0) 
   { 
   double_byte_parameter(text_startaddr_l,text_startaddr_h,0x24); 
   no_parameter(0xb0); 
   for(i=textsize;i>0;i--) 
   { 
     check_sta3(); 
     wdata(vlue); 
   } 
   check_sta3(); 
   wcom(0xb2); 
 } 
 else 
 { 
   double_byte_parameter(graphic_startaddr_l,graphic_startaddr_h,0x24); 
   no_parameter(0xb0); 
   for(i=graphicsize;i>0;i--) 
   { 
     check_sta3(); 
     wdata(vlue); 
   } 
   check_sta3(); 
       wcom(0xb2); 
  } 
  
} 
Exemple #3
0
void double_byte_parameter(unsigned char coma,unsigned char comb,unsigned char data_b) 
{ 
  check_sta01(); 
  wdata(coma); 
  check_sta01(); 
  wdata(comb); 
  check_sta01(); 
  wcom(data_b); 
} 
Exemple #4
0
//graphic 格式下显示8HO字符 
void display_8HO(unsigned char *q)//显示字符,三种字符的数量按照 3:2:3的比例显示, 
{ 
    unsigned int count_byte,count_row,count_page,page; 
  for(count_row=7;count_row>3;count_row--)//共七种字符形式 
  { 
    double_byte_parameter(graphic_startaddr_l,graphic_startaddr_h,0x24);// 从GRAPHIC 的首地址开始写 
    no_parameter(0xb0);//自动写 
    for(page=1;page<=((size_hang*3/8)/8);page++)// 3/8屏 
    { 
    s=q; 
    for(count_byte=8;count_byte>0;count_byte--)//共 8 行,组成一个 8 X 8 字符 
	    { 
    for(count_page=(size_lie/8);count_page>0;count_page--)//写一行,共(size_lie/8)列 
    { 
    check_sta3(); 
    wdata(*s); 
    } 
    s++; 
    } 
    } 
 
    for(page=1;page<=((size_hang*2/8)/8);page++)// 2/8 
    { 
      s=q; 
      s=s+8; 
      for(count_byte=8;count_byte>0;count_byte--)//每页 8 行,8 X 8 点阵 
      { 
       for(count_page=(size_lie/8);count_page>0;count_page--)//30X8列 
	     { 
        check_sta3(); 
        wdata(*s); 
       } 
       s++; 
	         } 
    } 
                 
    for(page=1;page<=((size_hang*3/8)/8);page++)// 3/8 
    { 
      s=q; 
      s=s+16; 
      for(count_byte=8;count_byte>0;count_byte--)//每页 8 行,8 X 8 点阵 
      { 
        for(count_page=(size_lie/8);count_page>0;count_page--)//30X8列 
        { 
         check_sta3(); 
         wdata(*s); 
        } 
        s++; 
      } 
        }             
    check_sta3(); 
    wcom(0xb2);//退出自动写 
    } 
} 
Exemple #5
0
void show(unsigned char ge, unsigned char shifen, unsigned char baifen)
{
	wcode(0x80);
	wword("The volt now is:");
	
	wcode(0xCB);
	wdata(ge+0x30);
	wdata('.');
	wdata(shifen+0x30);
	wdata(baifen+0x30);
	wdata('V');	
}
Exemple #6
0
void wword(unsigned char *word)
{
	while(*word)
	{
		wdata(*word++);
		//word ++;
	}
}
Exemple #7
0
void LCD_CMD_SET_COLUMN(unsigned char colu_add)
{
    if(DATA_D7_D0)
    {
        wdata((((colu_add+4)>>4)&0x0f)|0x10, INVERT_OFF);
        wdata((colu_add+4)&0x0f, INVERT_OFF);
    }
    else
    {
Exemple #8
0
/********************************************************************
* 名称 : L1602_char(uchar hang,uchar lie,char sign)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下
		 L1602_char(1,5,'b')
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
void L1602_char(uchar hang,uchar lie,char sign)
{
	uchar a;
	if(hang == 1) a = 0x80;
	if(hang == 2) a = 0xc0;
	a = a + lie - 1;
	wcmd(a);
	wdata(sign);
}
Exemple #9
0
void CGRAM(void) 
{ 
 unsigned int m=0; 
  double_byte_parameter(0x07,0x00,0x22);  //设定最高的 1K为 CGRAM 
  double_byte_parameter(0x00,0x3c,0x24);  // 
  no_parameter(0xb0); 
  for(m=0;m<992;m++)  
     { 
       check_sta3(); 
       wdata(CGTAB[m]); 
     } 
 check_sta3(); 
 wcom(0xb2); 
} 
Exemple #10
0
/********************************************************************
* 名称 : L1602_string(uchar hang,uchar lie,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
	 	 L1602_string(1,5,"ab cd ef;")
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
void L1602_string(uchar hang,uchar lie,uchar *p)
{
	uchar a,b=0;
	if(hang == 1) a = 0x80;
	if(hang == 2) a = 0xc0;
	a = a + lie - 1;
	while(1)
	{
		wcmd(a++);		
		if((*p == '\0')||(b==16)) break;
		b++;
		wdata(*p);
		p++;
	}
}
Exemple #11
0
void display_map(unsigned char *p) 
{  
    unsigned char m,n; 
  double_byte_parameter(graphic_startaddr_l,graphic_startaddr_h,0x24); 
  no_parameter(0xb0); 
  for(m=size_hang;m>0;m--)//共size_hang行 
  { 
   for(n=(size_lie/8);n>0;n--)//size_lie/8列 
   { 
    check_sta3(); 
    wdata(*p++); 
   } 
  } 
    check_sta3(); 
  wcom(0xb2); 
} 
Exemple #12
0
void display_ascii(unsigned char *addr,unsigned char hang,unsigned char lie) 
{   
    unsigned int temp;// 
    unsigned char low; 
    unsigned char high; 
  temp=(size_lie/8)*(hang-1)+(lie-1); 
  //TEXT模式下,TEXT区域被分为 size_hang/8行、size_lie/8列个8X8 点阵 
  //行地址为0-(size_hang/8-1),列地址 0  -  (size_lie/8-1) 
   //注意,本程序的hang  和 lie 都是从1  开始的 
 low=temp&0x00ff; 
 high=(temp>>8)&0x00ff; 
 double_byte_parameter(low,high,0x24); 
 no_parameter(0xb0);// 
  check_sta3();         
 wdata(*addr);//addr:CGRAM OR CGROM中字符的地址 
   check_sta3(); 
  wcom(0xb2);// 
} 
Exemple #13
0
void ProxyPlugin::clientData(TCPClient *client, ProxyData &cdata)
{
    for (unsigned i = 1;; i++){
        const char *proxyCfg = getClients(i);
        if ((proxyCfg == NULL) || (*proxyCfg == 0))
            break;
        ProxyData wdata(proxyCfg);
        if (wdata.Client.ptr && (clientName(client) == wdata.Client.ptr)){
            cdata = wdata;
            cdata.Default.bValue = false;
            set_str(&cdata.Client.ptr, clientName(client).c_str());
            return;
        }
    }
    cdata = data;
    set_str(&cdata.Client.ptr, clientName(client).c_str());
    cdata.Default.bValue = true;
    clear_list(&cdata.Clients);
}
Exemple #14
0
int RogueSaveManager::Save(const int num, BaseSaveData* savedata) {
	const string wfilename(GetFileName(num));
	std::ofstream ofs(wfilename, ios::out | ios::binary | ios::trunc);

	RogueSaveData* wdata(static_cast<RogueSaveData*>(savedata));
	Sizes[num] = sizeof(*wdata);
	ofs.write((char *)(wdata), sizeof(*wdata));
	//// ファイルに1行ずつ書き込み
	//for (int i = 0; i < game.opparty.maxmember; ++i)
	//{
	//	OpChara *opchara = static_cast<OpChara*>(game.GetMember(i));
	//	if (opchara) {
	//		ofs << to_string(opchara->exp) << std::endl;
	//		ofs << to_string(opchara->id) << std::endl;
	//	}
	//	else {
	//		ofs <<"M" << std::endl;
	//	}
	//}
	//ofs << "N" << std::endl;
	//for (int i = 0; i < game.opparty.maxmember; ++i)
	//{
	//	MyChara *mychara = static_cast<MyChara*>(game.GetMember(i));
	//	if (mychara) {
	//		ofs << to_string(mychara->id) << std::endl;
	//		ofs << to_string(mychara->level) << std::endl;
	//	}
	//	else {
	//		ofs << "M" << std::endl;
	//	}
	//}
	//ofs << "N" << std::endl;
	//ofs << "" << std::endl;
	//ofs << "egg" << std::endl;
	//ofs << "spam" << std::endl;

	return 1;
}