USB采集K型热电偶温度采集,MAX6675,TM1650驱动数码管,CH340N,USB转串口。

硬件实物与电路图:

MAX6675代码:

#include "ram.h"
 //交流QQ:2368813349
//淘宝实物购买地址:https://item.taobao.com/item.htm?spm=a1z10.1-c.w1004-2919821342.7.52dc22feSgvS9I&id=745510870986
u16 max6675(void)
{
	u16 r_data=0;
	u8 data_len;
		 
	 csm1;
	 som0;
	 P2PH=0x80; //P27上拉
	 sckm1;
	 sck=0;
		_nop_();
    _nop_(); 
	 cs=0;
	_nop_();
    _nop_();  
	for(data_len=0;data_len<16;data_len++)
	{
	    sck=1;
	   
		
		
	    r_data=r_data<<1;
	    if(so==1)   r_data=r_data|0x01;
	    sck=0;
	  	_nop_();
      _nop_();
		 _nop_();
      _nop_();
		
	}
	 cs=1;
	// if(r_data & 0x01)  r_status++;
	// else 
		   {
		    if(r_status >=1)  r_status--;		
			   else           b_status=0;
		    }
	   // if(r_status >=10)
			    {
					   r_status=10;
					   b_status=1;
					   r_data=r_data>>3;
					 }
		// else	r_data=0;
			 
	return r_data; 
}

TM1650代码:

#include "ram.h"
#include <stdio.h>
//交流QQ:2368813349
//淘宝实物购买地址:https://item.taobao.com/item.htm?spm=a1z10.1-c.w1004-2919821342.7.52dc22feSgvS9I&id=745510870986
/*code  uchar  table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 
                            0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
										
*/

  
code    u8  table[]={DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7, DATA8, DATA9};	


union   {
		
			float fx;
	    u8   r_tx[4];
}float_u32;
 
 



 
void usar_tx(void)
  {
		u8 i;
		//{"T1":12.3,"T2":15.6,"T3":-26,"T4":23}
		//{"T1":9,"T2":0,"T3":0,"T4":0}
		  sprintf((char*)str,"{\"T1\":%.2f", float_u32.fx);
	 
			P1CON &= 0XFB;
	    P1PH |= 0X0C;	 //TX输出/RX为带上拉输入
			SCON = 0X40;     //方式1,不允许接收数据
			PCON |= 0X80;    //1/4系统时钟下运行    24/4=8MHZ     1/8 *FN/ 2*(256-TH1)  //40左右
			//TL1 = 217;		
			//TH1 = 217;		 //UART 波特率24M情况下=38400;  12M下是19200
		
		  TL1 = 243;		
			TH1 = 243;		 //UART 波特率24M情况下=115200
			TR1 = 1;		 //启动Timer0
	/*	
     TI = 0;	
		 SBUF = float_u32.r_tx[3];
     while(TI==0);
		  TI = 0;	
		 SBUF =float_u32.r_tx[2];
		 while(TI==0);
		 TI = 0;	
		 SBUF = float_u32.r_tx[1];
     while(TI==0);
		 TI = 0;	
		 SBUF = float_u32.r_tx[0];
		 while(TI==0);
		 */
	/*	 
		  TI = 0;	
		 SBUF ='{';
     while(TI==0);
		 	TI = 0;	
		 SBUF ='"';
     while(TI==0);
		 
		  TI = 0;	
		 SBUF ='T';
     while(TI==0);
		   TI = 0;	
		 SBUF ='1';
     while(TI==0);
		 
		 	TI = 0;	
		 SBUF ='"';
     while(TI==0);
		 
		  TI = 0;	
			SBUF =':';
     while(TI==0);
		 
		 */ 
		 for(i=0;i<30;i++)
		 {
			 if(str[i]=='\0')  break;
			 TI = 0;	
			SBUF =str[i];
      while(TI==0);
			 
		 }
		 
		      
		 
		 
		  sprintf((char*)str,",\"T2\":0,\"T3\":0,\"T4\":0\}");
		 
		 	 for(i=0;i<30;i++)
		 {
			 if(str[i]=='\0')  break;
			 TI = 0;	
			SBUF =str[i];
      while(TI==0);
			 
		 }
		 
	 
  }
	
 void disp_change(void)
 {
	 //r_sum1++;
     float_u32.fx=r_sum*0.25;
	 
	   r_sum=(u32)float_u32.fx;
	   float_u32.fx=float_u32.fx/10;
  //  r_sum=r_sum1;
	 if(r_sum>(u32)9999)// 100度以上不显示小数点
	 {
	    r_sum=(u32)9999;
	 }
	
	   r_byte3= r_sum/1000;
	   r_byte2= r_sum/100%10;
	   r_byte1= r_sum/10%10;
	   r_byte0= r_sum%10;
	
	

  
	 	 r_byte0=table[r_byte0]; 
		 r_byte1=table[r_byte1]+DP;
		 r_byte2=table[r_byte2];
		 r_byte3=table[r_byte3];
	 
	 
	
				

 }



void IIC_SENT_ACK(void )
{
		sdam1;
		sclm1;
    scl=1;
    _nop_();
    _nop_();
     scl=0;
		_nop_();
    _nop_();
}

void IIC_START(void)
{
 	sdam1;
	sclm1;
	_nop_();
   sda=1;
   _nop_();
   scl=1;
   _nop_();
   sda=0;
   _nop_();
   scl=0;
  }


 
 
void IIC_STOP(void)
{
	sdam1;
	sclm1;
 	sda=0;
   _nop_();
   scl=1;
   _nop_();
   sda=1;
   _nop_();
   scl=0;	
	
}


void IIC_WRITE(u8 Data)
{
  	unsigned char BitCounter=8;

	  do
	    {
			// temp=Data;
			 scl=0;
			 _nop_();
			 _nop_();
			 if((Data&0x80)==0x80)
					sda=1;
			 else
					sda=0;
				scl=1;
				Data=Data<<1;
				//Data=temp;
				BitCounter--;
		  }
	  while(BitCounter);
	   scl=0;
	   IIC_SENT_ACK();

	  }
 	
u8 IIC_READ(void) 
{
  
	   unsigned char temp=0;
	   unsigned char temp1=0;
	   unsigned char BitCounter=8;

	   sdam0;
	   _nop_();
		 _nop_();
	   do
	    {
		  scl=0;
      _nop_();
		  _nop_();
		  scl=1;
		  _nop_();
		  _nop_();
		  if(sda)
		     temp=temp|0x01;
		  else
		     temp=temp&0xfe;

		  if(BitCounter-1)  
		     {
			  temp1=temp<<1;
			  temp=temp1;
			  }
			  BitCounter--;
			 }
		while(BitCounter);
		return(temp);
 
}
 
  
 
void tm1650(void)
{




	 IIC_START();
	 IIC_WRITE(0x48);		 			//设置
	 IIC_WRITE(0x31);	    	 //1级亮度,显示屏显示
	 IIC_STOP();
	 disp_change();
	 IIC_START();
	 IIC_WRITE(0x68);		  	 //第一个位地址
	 IIC_WRITE(r_byte0);	   //第一位数据
		 IIC_STOP();
		 IIC_START();
	IIC_WRITE(0x6A);
	 IIC_WRITE(r_byte1); 		//第二位数据
	 IIC_STOP();
		 IIC_START();
	 IIC_WRITE(0x6C);
	 IIC_WRITE(r_byte2); 		//第三位数据
	 IIC_STOP();
	 	 IIC_START();
	 IIC_WRITE(0x6E);
	 IIC_WRITE(r_byte3);		//第四位数据
	 IIC_STOP();
	 

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小家电电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值