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

📄 7290.c

📁 小型实时可控操作系统 单片机为msp430
💻 C
📖 第 1 页 / 共 2 页
字号:
{
	unsigned char i;
	for(i=0;i<num;i++)
	{	
		ZLG7290_SendCmd(0x60+i,*disp_buf);
		disp_buf++;
	}
}
/*********************************************************************************************************
** 函数名称: 	ZLG7290_GetKey
** 功能描述: 	读取键值
** 输 入: 无
**
** 输 出: >0  键值
**        =0  无键按下
** 全局变量:	无
** 调用模块: 	IRcvStr、delayMS
**
********************************************************************************************************/

unsigned char	ZLG7290_GetKey( void )
{
	unsigned char key;
	IRcvStr ( 0x70, 0x00, & key, 1 );
	while ( ! ( key & 0x01 ) )
	{	    
	    ISendStr(0x70,0x00, & key,1);
	    IRcvStr ( 0x70, 0x00, & key, 1 );
	}
	IRcvStr ( 0x70, 0x01, & key, 1 );
	return key;	
}

/*********************************************************************************************************
** 函数名称: 	Clear_7290
** 功能描述: 	对7290清零
** 输 入:      无
**        
** 输 出:      无
**        
** 全局变量:	IicWriteBuf
** 调用模块: 	ISendStr
**
********************************************************************************************************/

void Clear_7290(void)
{
        uchar IicWriteBuf[3];                    //输出缓存
	uchar i=0,j,SubAddr;
	for(j=0;j<2;j++)
	{
		for(i=0;i<8;i++)
		{
			IicWriteBuf[0]=0x60+i;
			IicWriteBuf[1]=0x1f;
			SubAddr=SubCmdBuf;
			ISendStr(0x70,SubAddr,IicWriteBuf,2);
		}
	}
	
}

/*********************************************************************************************************
** 函数名称: 	shift_left
** 功能描述: 	左移
** 输 入:      shift_bit   :  左移的位数
**        
** 输 出:      无
**        
** 全局变量:	IicWriteBuf
** 调用模块: 	ISendStr
**
********************************************************************************************************/

void shift_left(unsigned char shift_bit)
{ 
      uchar IicWriteBuf;                    //输出缓存
      IicWriteBuf=0x10+shift_bit;
      ISendStr(0x70,0x07,&IicWriteBuf,1);
}

/*********************************************************************************************************
** 函数名称: 	shift_right
** 功能描述: 	右移
** 输 入:      shift_bit   :  右移的位数
**        
** 输 出:      无
**        
** 全局变量:	IicWriteBuf
** 调用模块: 	ISendStr
**
********************************************************************************************************/

void shift_right(unsigned char shift_bit)
{ 
      uchar IicWriteBuf;                    //输出缓存
      IicWriteBuf=0x20+shift_bit;
      ISendStr(0x70,0x07,&IicWriteBuf,1);
}

/*********************************************************************************************************
** 函数名称: 	for_shift_right
** 功能描述: 	循环左移
** 输 入:      shift_bit   :  循环左移的位数
**        
** 输 出:      无
**        
** 全局变量:	IicWriteBuf
** 调用模块: 	ISendStr
**
********************************************************************************************************/

void for_shift_left(unsigned char shift_bit)
{ 
      uchar IicWriteBuf;                    //输出缓存
      IicWriteBuf=0x30+shift_bit;
      ISendStr(0x70,0x07,&IicWriteBuf,1);
}

/*********************************************************************************************************
** 函数名称: 	for_shift_right
** 功能描述: 	循环右移
** 输 入:      shift_bit   :  循环右移的位数
**        
** 输 出:      无
**        
** 全局变量:	IicWriteBuf
** 调用模块: 	ISendStr
**
********************************************************************************************************/

void for_shift_right(unsigned char shift_bit)
{ 
      uchar IicWriteBuf;                    //输出缓存
      IicWriteBuf=0x40+shift_bit;
      ISendStr(0x70,0x07,&IicWriteBuf,1);
}




/*********************************************************************************************************
** 函数名称: 	PrintLed        PrintDp
** 功能描述: 	按位显示      显示小数点
** 输 入:   dig   :   显示位置 0~7
**           data  :   显示数据
**           dp    :   dp=1  显示小数点
**                     dp=0  不显示小数点
** 输 出: 无
**        
** 全局变量:	IicWriteBuf
** 调用模块: 	ISendStr
**
********************************************************************************************************/

void PrintLed( uchar dig,uchar data )
{
        uchar IicWriteBuf[2];                    //输出缓存
	IicWriteBuf[1]=data;
     	IicWriteBuf[0]=0x60+dig;
	ISendStr(0x70,0x07,IicWriteBuf,2);
}


//have a bug!
void PrintDp( uchar dig,uchar dp )
{
        uchar IicWriteBuf[2]; //输出缓存
        IRcvStr(0x70,0x10+dig,&(IicWriteBuf[1]),1);                 
        if(dp==0)
	IicWriteBuf[1]&=~BIT7;
	else if(dp==1)
	IicWriteBuf[1]|=BIT7;
     	IicWriteBuf[0]=0x60+dig;
	ISendStr(0x70,0x07,IicWriteBuf,2);
}	
/*********************************************************************************************************
** 函数名称: 	shine
** 功能描述: 	闪烁
** 输 入:      shine_bit   :  闪烁的位数( 使用BIT0~BIT7控制需要闪烁的位数)
**        
** 输 出:      无
**        
** 全局变量:	IicWriteBuf
** 调用模块: 	ISendStr
**
********************************************************************************************************/

void shine(unsigned char shine_bit)
{ 
        uchar IicWriteBuf[2];                    //输出缓存
        IicWriteBuf[1]=shine_bit;
     	IicWriteBuf[0]=0x70;
	ISendStr(0x70,0x07,IicWriteBuf,2);
}


/*******************************************************************
  **                  向有子地址器件读取多字节数据函数
函数原型:uchar  ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);
功能:     从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件
          地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。
           如果返回1表示操作成功,否则操作有误。
注意:    使用前必须已结束总线。
Key               01H
RepeatCnt         02H
FunctionKey       03H  functionKey.7~FunctionKey.0 对应S64~S57


********************************************************************/
uchar IRcvStr(uchar sla,uchar suba,uchar *s,uchar no)
{
   uchar i;

   Start_I2c();              /*启动总线*/
   SendByte_I2c( sla );            /*发送器件地址*/
     if(ack==0) return(0);
   SendByte_I2c( suba );           /*发送器件子地址*/
     if(ack==0) return(0);

   Start_I2c();
   SendByte_I2c( sla+1 );
      if(ack==0) return(0);

   for(i=0;i<no-1;i++)
    {
     *s=RcvByte_I2c();          	/*接收数据*/
      Ack_I2c(0);           	/*发送就答位*/
     s++;
    }
   *s=RcvByte_I2c();
   Ack_I2c(1);            	/*发送非应位*/
   Stop_I2c();            	/*结束总线*/
   return(1);
}



/*******************************************************************
  **                  向有子地址器件发送多字节数据函数
函数原型: uchar ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);
功能:     从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
          地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。
           如果返回1表示操作成功,否则操作有误。
注意:    使用前必须已结束总线。
Key               01H
RepeatCnt         02H
FunctionKey       03H  functionKey.7~FunctionKey.0 对应S64~S57
CmdBuf0~CmdBuf1   07H~08H 
********************************************************************/
uchar ISendStr(uchar sla,uchar suba,uchar *s,uchar no)
{
   uchar i;
   
   Start_I2c();               	/*启动总线*/
   SendByte_I2c(sla);            	/*发送器件地址*/
     if(ack==0)return(0);
   SendByte_I2c(suba);            	/*发送器件子地址*/
     if(ack==0)return(0);

   for(i=0;i<no;i++)
    {
     SendByte_I2c(*s);            	/*发送数据*/
       if(ack==0)return(0);
     s++;
    }
 Stop_I2c();                 	/*结束总线*/
  return(1);
}
	


/********************************************************************************************************************
初始化7290,需要在主程序总中断使能

*********************************************************************************************************************/
void ini_7290()   {
    INIT_OUT;     
    INTI_HIGH;       
    INIT_IN ;        //P1。0为输入模式
    INIT_IES;        //下降沿引发P1。0口中断
    INIT_IFG ;       //初始化中断标志
    INIT_IE;         //P1。0中断有效  ,需要在主程序总中断使能
    Clear_7290( );
/*    PrintLed( 0, 8 );
    PrintLed( 1, 7 );
    PrintLed( 2, 6 );
    PrintLed( 3, 5 );  
    PrintLed( 4, 4 );
    PrintLed( 5, 3 );
    PrintLed( 6, 2 );
    PrintLed( 7, 1 );
    //time_delay1(20);
    Clear_7290();
*/   
  }







⌨️ 快捷键说明

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