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

📄 tempexecuted.c.c

📁 executed program for temperature reading of cs5463
💻 C
字号:
/* @brief This file is an example to use spi in master mode.	*/
#include <stdio.h>	
#include <string.h>
#include <reg8253.h>
 sfr ldata=0x80;				   /* port0 for lcd data*/ 
 sbit busy=P0^7;				   /*busy flag for lcd p0.7 */
 sbit rs=P2^0;					   /*register select of lcd p2.0 */
 sbit rw=P2^1;					   /*read or write select for lcd*/
 sbit en=P2^2;						 /* enable lcd */
 sbit RESET=P1^0;					 /*SOFTWARE RESET FOR CS5463*/ 
 sbit led1=P2^3;				   /* indication start of programme execution*/
 sbit led2=P2^4;
 sbit led3=P2^5;
 sbit led4=P2^6;
 sbit led5=P2^7;
 
 unsigned char code CS5463[9]={0x64,0x00,0x00,0x60,0x74,0x00,0x00,0x04,0xe8}; 
 unsigned char code CS5463DATA[4]={0x26,0xFF,0xFF,0xFF};  
 unsigned char BUF1[12],ascii[1][12]; 
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
 void lcddisplay()
  {
      unsigned char  stringcmd[6]={0x38,0x0E,0x01,0x06,0x0C,0x80}; 
      int len1 = strlen(stringcmd),countcmd,count;
      unsigned char  string[]="B.M.S.C.E ELECTRICAL DEPARTMENT ";
      unsigned int len=strlen(string);
      unsigned char lccmd;
      unsigned char lcdata;
      unsigned char second_line;
      
      void lcddata(unsigned char);
      void lcdcmd(unsigned char);
      void delay(void);
      void lcdready(void);
      void msdelay(unsigned int);

        for (countcmd = 0; countcmd < len1; countcmd++)
        {	  
         lccmd=stringcmd[countcmd];
         lcdcmd(lccmd);
        } 	 		  
 	        		                     
        for (count =0;count<len;count++)  
        {	  
        lcdata=string[count];
        lcddata(lcdata);
       }
        second_line=0xc0;
        lcdcmd(second_line);       
  }
/*---------------------------------------------*/	
 void lcdcmd(unsigned char value)
 {
 	lcdready();		 							 /*is LCD ready?*/	
    ldata=value;	  								 /*issue command code*/
 	rs=0;										 /*RS=0 for command*/
 	rw=0;										/*R/W=0 to write to LCD*/
 	en=1;										/*E=1 for H-to-L pulse*/
 	msdelay(1);
 	en=0;  	
 }	/*---------------------------------------------*/
    
 void lcddata(unsigned char value)
 {
 	lcdready();	   								/*is LCD ready?*/
 	ldata=value;  									 /*issue data */
 	rs=1;										 /*RS=1 for data*/
 	rw=0;			 							/*R/W=0 to write to LCD*/
 	en=1;										  /*E=1 for H-to-L pulse*/
 	msdelay(1);
 	en=0;	 
 }

/*---------------------------------------------*/
 void lcdready()
 {
 	busy=1;									/*make P0.7 input port*/
 	rs=0;	  								 /*RS=0 access command reg*/
 	rw=1;	   								/*R/W=1 read command reg*/
    while(busy==1)								  /*stay until busy flag=0*/
 	{
 	en=0;									 /*E=1 for H-to-L pulse*/
 	msdelay(1);
 	en=1;			  						/*E=0 H-to-L pulse*/
 //	busy=0;								  //forcing to zero for testing
 	}  
 } 

/*-----------------------------------------------*/
 void msdelay(unsigned int itime)
 {
 	unsigned int i,j;	                                                                                                                               
 	for(i=0;i<itime;i++)
 	for(j=0;j<1275;j++);
 }   


/*----------Initialize the serial port------------*/
serialportint()
      	{				
    	   		TMOD=0x20 ;			/*T1 is mode2 */
    	   		TH1=0xfd ;			/*9600 baud */
	    		SCON=0x50 ;			/*8b, 1stop, 1start, REN enabled */		    		 	 		  						   
					}
serialport(unsigned char RS232)
{				TR1=1;
				TI=0;					/*ready to transmit  */
	            SBUF=RS232;	 	
	            while(TI==0);	   /*poll TI until all the bits are transmitted */
				TR1=0;
}
masterio(unsigned char SENDDATA)
{	  	unsigned char RECEDATA;	
 		SPDR = SENDDATA;
	   	while ((SPSR & 0x80) == 0);
		RECEDATA=SPDR;
		return(RECEDATA);
		//SPCR=0x23;   /*00010011 disable spi*/
}
/*------------Initialize the spi port------------*/
CS5463int()
        	{        
              int i;
			  unsigned dat;
			  P1_4=1;
			  MOSI=1;
			  MISO=1;
			  SCK=1;
			  SPCR = 0x53;  /* 01010011 enable spi*/	     	    
	 		for (i=0;i< sizeof(CS5463);i++)
    			{
				dat=CS5463[i];				
			   	masterio(dat);				
				}		        
				}
 /*----------ascii conversion---------------------*/ 
asciiconv(unsigned char FIRST,unsigned char HH,unsigned char MM,unsigned char LL)
        	{		
			int k=0,units,tens,huns,i,mask=0x80,j,jj,a[8];
			long int v1=50000000,val1=0;
			FIRST=0x00;
		    LL=0x00;	
			units=HH%0x0a;
			tens=(HH/0x0a)%0x0a;
			huns=HH/0x64; 
			ascii[k][0]=huns+48;
			ascii[k][1]=tens+48;	
			ascii[k][2]=units+48;
			ascii[k][3]='.';
		  
		            	   
		  for(i=0;i<8;i++)
             {
			  if(MM&mask)
			  val1=val1+v1;
			   v1=v1/2;
			   mask=mask>>1;
			  }	              /*ascii conversion of fractional part of number*/
			   
		    for(j=0;j<8;j++)
			   {
				   a[j]=(val1%0x0a)+48;
				   val1=val1/0x0a;
			   }
			   	j=7;
			    for(jj=4;jj<12;jj++) 
				 {
			   ascii[k][jj]=a[j];
			   j--;
	             }
			ascii[k][12]='\n';
			}	 
			   	
			 	
			   
			   
		   
/*-------main----------*/
   void main(void)
 	{
	int I,J=0,jj,mm; 
	unsigned char BUFFER[4];	
	 led1=1;
	 led2=0;
	 led3=1;
	 led4=0;
	 led5=1;  	 
	 CS5463int();	 
	 led1=1 ;					/* indication end of programme execution*/
	 led2=1 ;
	 led3=1 ;
	 led4=1 ;
	 led5=1 ;
	 RESET=0;

	 while(1){
			 for(I=0;I<4;I++)	 
			BUFFER[I]=masterio(CS5463DATA[I]);	 
			 
			 for(J=0;J<sizeof(BUFFER);J=J+4)  
			 asciiconv(BUFFER[J],BUFFER[J+1],BUFFER[J+2],BUFFER[J+3]); /*conversion from hex to ascii */
			 serialportint();
			 for (mm = 0; mm <1; mm++)
			 { 
			   for (jj=0;jj<12;++jj)
				serialport(ascii[mm][jj]);		 	
			 	}		
	lcddisplay();								
			 for (mm = 0; mm <1; mm++)
			 { 
				for (jj=0;jj<12;++jj)
					lcddata(ascii[mm][jj]);
				    }
			  if(RESET==1)
			  {masterio(0x80);
			  while(1)
			  {
			//	RESET=0;					//FORCING RESET TO ZERO testing
				if(RESET==0)
				      break;}
				msdelay(2);
				CS5463int();
			  }
			 }
//			while(1)
//			{  shift_data=0x18;
//		       lcdcmd(shift_data);
//		       delay();
//		      }	  		
 			}      								    

⌨️ 快捷键说明

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