Ejemplo n.º 1
0
/*
-----------------------------------------------
   功能: stop命令,SCCB的停止信号
   参数: 无
 返回值: 无
-----------------------------------------------
*/
void stopSCCB(void)
{
	SIO_D_CLR;
    Delay_nUS(10);
 
    SIO_C_SET;
    Delay_nUS(10);
  

    SIO_D_SET;
    Delay_nUS(10);
 //   SCCB_DDR&= ~(SCCB_SIO_D);

}
Ejemplo n.º 2
0
/*
-----------------------------------------------
   功能: noAck,用于连续读取中的最后一个结束周期
   参数: 无
 返回值: 无
-----------------------------------------------
*/
void noAck(void)
{
	
	SIO_D_SET;
	Delay_nUS(10);
	
	SIO_C_SET;
	Delay_nUS(10);
	
	SIO_C_CLR;
	Delay_nUS(10);
	
	SIO_D_CLR;
	Delay_nUS(10);

}
Ejemplo n.º 3
0
/*
-----------------------------------------------
   功能: start命令,SCCB的起始信号
   参数: 无
 返回值: 无
-----------------------------------------------
*/
void startSCCB(void)
{
	SIO_D_SET;     //数据线高电平
    Delay_nUS(10);

    SIO_C_SET;	   //在时钟线高的时候数据线由高至低
    Delay_nUS(10);
 
    SIO_D_CLR;
    Delay_nUS(10);

    SIO_C_CLR;	 //数据线恢复低电平,单操作函数必要
    Delay_nUS(10);


}
Ejemplo n.º 4
0
/*
-----------------------------------------------
   功能: 一个字节数据读取并且返回
   参数: 无
 返回值: 读取到的数据
-----------------------------------------------
*/
uchar SCCBreadByte(void)
{
	unsigned char read,j;
	read=0x00;
	
	SIO_D_IN;/*设置SDA为输入*/
	Delay_nUS(10);
	for(j=8;j>0;j--) //循环8次接收数据
	{		     
		Delay_nUS(10);
		SIO_C_SET;
		Delay_nUS(10);
		read=read<<1;
		if(SIO_D_STATE) 
		{
			read=read+1;
		}
		SIO_C_CLR;
		Delay_nUS(10);
	}	
	return(read);
}
Ejemplo n.º 5
0
//判断LCD忙标志
void wait_LCD_Ready(void)
{
    unsigned char temp1;
    LCD_DATA_PORT =0XFF;
    LCD_DATA_PIN;                  //D7设为输入,准备判断LCD忙标志 
                                   //1为忙  0为空闲
	LCD_RS_0;
    LCD_RW_1;                      //读
	LCD_EN_1;
	Delay_nUS(2);
    while((temp1=PINC & 0X80));
	LCD_EN_0;
    LCD_RS_1;
	LCD_DATA_POUT;
}
Ejemplo n.º 6
0
/*
-----------------------------------------------
   功能: 写入一个字节的数据到SCCB
   参数: 写入数据
 返回值: 发送成功返回1,发送失败返回0
-----------------------------------------------
*/
uchar SCCBwriteByte(uchar m_data)
{
	unsigned char j,tem;

	for(j=0;j<8;j++) //循环8次发送数据
	{
		if((m_data<<j)&0x80)
		{
			SIO_D_SET;
		}
		else
		{
			SIO_D_CLR;
		}
		Delay_nUS(10);
		SIO_C_SET;
		Delay_nUS(10);
		SIO_C_CLR;
		Delay_nUS(10);

	}
	Delay_nUS(10);
	
	SIO_D_IN;/*设置SDA为输入*/
	Delay_nUS(10);
	SIO_C_SET;
	//Delay_nMS(2);
	Delay_nUS(10);
	if(SIO_D_STATE)
	{
		tem=0;   //SDA=1发送失败,返回0
	}
	else
	{
		tem=1;   //SDA=0发送成功,返回1
	}
	SIO_C_CLR;
	Delay_nUS(10);	
    SIO_D_OUT;/*设置SDA为输出*/

	return(tem);  
}
Ejemplo n.º 7
0
//写一个字节到LCD ,COMM(指令)   DAT(显示数据)
void LCD_write_onechar(unsigned char COMM,unsigned char DAT)
{ 
	 wait_LCD_Ready();         //等待LCD空闲
	 LCD_RW_0;                 //写
	 
	 //写数据
	 if(COMM==0)
	 {
	    LCD_RS_1;  //RS高电平向LCD写数据
		LCD_DATA_PORT=DAT;
	 } 
	 //写命令
	 else
	 {
	    LCD_RS_0;
        LCD_DATA_PORT=COMM;
	 }
	 LCD_en_write(); 
	 Delay_nUS(2);
	 LCD_RW_1;
	 LCD_RS_1;
}
Ejemplo n.º 8
0
// en端口产生一个脉冲,写LCD
void LCD_en_write(void)        
{
    LCD_EN_1;
    Delay_nUS(300);  //E脉冲周期最小150us
    LCD_EN_0;
}