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

📄 cs5522.c

📁 我同事做的一个CS5522的51单片机的驱动,用的是89S52,开发环境是KEIL C
💻 C
字号:
#include<reg52.h>
//***********************************
#define   unch   unsigned char
//***********************************
sbit cs=P2^1;    //和cs5522有关的端口
sbit sdi=P2^2;
sbit sdo=P2^0;
sbit sclk=P2^3;
//************************************
extern unsigned char data t_d[8];    //当前显示数的BCD码。
void eight_dis(void);
//*************************************
extern unsigned char bdata  main_temp;  //全局缓冲变量
extern bit main_temp_7;
extern unsigned char dis_data[3];    //cs5522读出数据的暂时存放处
//***********************************
void eight_dis(void);
void bcd_change(void);
//***********************************
//向CS5522发送一个字节
void Se_Cs_W(unsigned char Cs_Word)
    {   
        unsigned char data Cs_i=8; 		  
        main_temp=Cs_Word;    	  
        while(Cs_i)
	       {
	          sdi=main_temp_7; 
              sclk=1;
			  main_temp<<=1;
			  sclk=0;         
			  Cs_i--;                     
	          
	        }
    }
//*****************************************		
//***********************************
//向CS5522读一个字节。
unsigned char ReadW(void)
              {
				     unsigned char  Read_i;                
					  main_temp=0;
				      Read_i=8;				    
				     while(Read_i)
				           {   
					     
                                 main_temp>>=1;    						  
						          main_temp_7=sdo;						          						  
						          sclk=1;					      
						          sclk=0;
						          Read_i--;
			              						   
				           }
				    return(main_temp); 		 
				 
				 
				 }	  	
	
	
//***********************************
//写1字节读3字节。
  void Sen_Rec(unsigned char Sen_Rec_tem)
        { 
		  
	       cs=0;		
		    Se_Cs_W(Sen_Rec_tem);
	       dis_data[2]=ReadW();
	       dis_data[1]=ReadW();
	       dis_data[0]=ReadW();
		    cs=1;
         }
//************************************
//直接写4字节。
void F_Word(unch temp1,unch temp2,unch temp3,unch temp4)
        { 
		   cs=0;
		   Se_Cs_W(temp1);
		   Se_Cs_W(temp2);
	      Se_Cs_W(temp3);
	      Se_Cs_W(temp4);
		   cs=1;	
		
		} 	 
		

//***********************************
//起动串口。
 void initserial(void)
    { 
	    unsigned char data Init_Tem=15;	  
	    cs=0;	  
	    while(Init_Tem)
	      {
		    Se_Cs_W(0xff);
			 Init_Tem--;		  
		   }
	    Se_Cs_W(0xfe);	
	    cs=1;
	}
	



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

//配置CS5522
void InitCs(void)
        {
		   unsigned char i,j;     
//===================设置配置寄存器=======================
//配置RS位寄存器写一 
       
        F_Word(0x03,0x00,0x00,0x80);    //直接写4字节?
//读配置寄存器   		
  	
//*************************************     
//判断RV是否为“1若RV为1,向RS写0
   /*     do 
          {  
			   
		//      F_Word(0x03,0x00,0x00,0x80);    //直接写4字节.
//读配置寄存器		 
	  	
             Sen_Rec(0x0b);  }  //写1字节读3字节。	
	    while(~dis_data[0]&0x40);  */
//*************************************
		 i=0xff;
		 while(i)
		      { 
				   j=0xff;
				   while(j)
					   {j--;}
					i--;
				
				}
        Sen_Rec(0x0b);
		  bcd_change();
        eight_dis();
		  while(1)
		    {}  
/*	  i=0xff;
		  while(i)
		      { 
				   j=0xff;
				   while(j)
					   {j--;}
					i--;
				
				}
        Sen_Rec(0x0b);                  //写1字节读3字节?  
        bcd_change();
        eight_dis();
		  while(1)
		    {}   */
//************************************** 
//写配置寄存器。         
	   F_Word(0x03,0x00,0x14,0x00);    //直接写4字节?
//****************************************
//设置通道寄存器      
	   F_Word(0x05,0x08,0x90,0x89);      
//****************************************
         		 
		 
		 
		 
		 
}
	
	


				

⌨️ 快捷键说明

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