找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2501|回复: 0
打印 上一主题 下一主题
收起左侧

制冷温度控制STM32

[复制链接]
跳转到指定楼层
楼主
ID:186601 发表于 2017-4-6 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
#include "math.h"
#include "usart.h"
#include "tl5616.h"
#include "AD7705.h"
#include "led.h"
#include "stm32f10x_tim.h"
#include "tad.h"
#include "ivd.h"
#include "dv.h"
#include  "adt.h"


/*********外部接口设计************/

u16 T;
int main(void)
{             
    u16 i=0;                                    //温度计数
        u8  j=0;                                   //温度判断计数
                            //热敏电阻数字值
        double da;
        double it;
       
        double V;
        double ad_t;
        u8 sign=0;         //符号标志
                //温度正负           1-正,2-负
//        u16 ts;                 //温度设定值
        double dts1;                                     //温度差值
       
    u8  s1;                    //温度控制标志符
            double ts;
         double x;
          float  tempure;    //温度值
    double  rt;
    double t1;
    double t;
    double tt;
  //  double ad_t;
    double id;
    u16 ad;
        u16 ac;
        u16 tem;
        double dt;
        double l;
    int a;
        NVIC_Configuration();
        delay_init();                       //延时函数初始化
        uart_init(9600);                   //转换为38400
        AD7705_AllInit();
        AD7705_Init();
        delay_ms(20);

        TLV5616_Init();
        TLV5616I_SPI_SendByte(0);
        LED_Init();
    LED1_ON;
        LED2_ON;
        delay_ms(100);
    LED1_OFF;
        LED2_OFF;
        /*****/
    //s2=1;                      //负温度

        /*****/
        while(1)
{       
                                 
        //ts=-10;
    i=i+1;                     //计数
        delay_ms(5);                    //需要延时         delay_ms(20)
                             //这里测出的ad采样值是对的
        // ad=35000;

        AD7705_Init();
        ad=ReadAD7705();
        delay_ms(1000);          
//;
/*        tem=recieves_data[1] ;
        ts=-(tem);
        ad_t= RT_AD(ts);                    //目标温度的数字量
    V=(ad_t*2.4950)/65535;
        id=(V*4096)/(2*1.216);
    TLV5616I_SPI_SendByte(id);          */


   while(1)
{
    tem=recieves_data[1];
        ac=recieves_data[2];
        //ac=3;
//        ts=-10;
        ad_t= RT_AD(ts);                    //目标温度的数字量
    V=(ad_t*2.4950)/65535;
        ad=ReadAD7705();
        id=(V*4096)/(2*1.145);
        if(ad_t>ad)
         {
         if(ac==5)
         {id=id-1100;}                    //1000对应的是0.5,
     else if(ac==3)
         {id=id-700;}                           // 500对应的是0.2
         else if(ac==1)
         {id=id-400;}                           //         200对应的是0.1
         delay_ms(5);
         TLV5616I_SPI_SendByte(id);
         
         }
         else if(ad_t<ad)
         {
          if(ac==5)
          {id=id+1200;}                  //1000对应的是0.5
          else if(ac==3)
          {id=id+600;}                  //  500对应的是0.2
          else if(ac==1)
          {id=id+400;}           //200对应的是0.1
          delay_ms(5);
          TLV5616I_SPI_SendByte(id);       
     }
          
   if(USART_RX_BUF==0x77)         //0x77发送0x88          联机
     {
             USART1_SEND(0x88);
             delay_us(100);
            USART_RX_BUF=0x00;
         }
           else if(USART_RX_BUF==0x58)   //测量
         {       
             USART1_SEND16(ac);          
                    delay_us(100);
             USART_RX_BUF=0x00;
         }          
          }
}
}       

         


               
       
          
          






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表