标题: 怎么把这多个单片机程序合成一个呀?求大神指教 [打印本页]

作者: dididi1234    时间: 2019-11-25 12:56
标题: 怎么把这多个单片机程序合成一个呀?求大神指教
(1) DS18B20读取转录温度程序设计
voidtempchang(void)         //获取并转换
{
  dsreset();
  delay(1);
  tpye(0xcc);                  //读写并读rom指令
  tpye(0x44);                  //写温度转换指令
}
uint gt_temp()                //读取寄存器存储数据
{
uchar a,b;
dsreset();
delay(1);
tpye(0xcc);      
tpye(0xbe);                   //uint 给外面一个温度数值
a=tpread();                   //低八位
b=tpread();                   //低八位
temp=256*b+a;
f_temp=temp*0.0625;           //分辨率0.0625,温度在寄存器为12位
temp=f_temp*10+0.5;           //将f_temp乘以10
return temp;                  //整型
}
(2) 数码管显示程序设计
ucharflag1,flag2,flag3,flag4,numm,q,b,s,g; //共阴数码管
ucharcode number[]= { 0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,};
ucharcode number1[]={0xbf,0x86,0xdb,0xcf,0xe6,
0xed,0xfd,0x87,0xff,0xef};   
(3) 按键电路电路设计
void keyscan()      
{
    if(s1==0)   
    {P2=0xff;
     delay(5);  
     if(s1==0)  
      {   
       numm++;     
        if(numm==1)            //第一种情况
        {
        flag=1;
        }
        if(numm==2)            //第一种情况
        {
        flag=2;
        }
        if(numm==3)            //第一种情况
        {
        numm=0;
        flag=0;
        }
        while(!s1);
     }     
    }
    if(numm==1)                //提高或降低下限
     {
     flag=1;
       if(s2==0)               
       {
          delay(5);         
          if(s2==0)         
          {      
              l+=10;      
              if(l==1000)   
             l=200;
          }
          while(!s2);   
       }
       if(s3==0)           
       {
          delay(5);         
          if(s3==0)         
          {
            l-=10;         
            if(l==0)        
            l=200;           
          }
          while(!s3);   
       }
   }
if(numm==2)                    //提高或降低上限
   {
      flag=2;
       if(s2==0)            
       {
          delay(5);         
          if(s2==0)        
          {
              h+=10;        
              if(h==1000)      
             h=200;      
          }
          while(!s2);   
       }
       if(s3==0)                  
       {
          delay(5);              
          if(s3==0)               
          {            
              h-=10;         
              if(h==0)            
             h=300;
          }
          while(!s3);   
       }
   }
}
(4) 报警程序设计
void main()           
{
  init();
  while(1)
  {
   tempchang();         
   if(temp>h)             //高于设定值上限,则报警
   {
       high();           
   }
    if(temp<l)            //低于设定值下限,则报警
   {
       low();         
   }   
  }
}
(5) DS18B20读取字节函数设计
voiddsreset(void)           //复位,初始化测温函数
{
  uint i;
  ds=0;                     
  i=140;                    //延时512μs
  while(i>0) i--;
  ds=1;                     //等待复位,若收到低电平则复位成功
  i=4;                       //读取完之后等待48us再接着读取下一个数
  while(i>0) i--;            //消耗时间
}
bittpreadbit(void)          //读一位数据
{
  uint i;
  bit dat;
  ds=0;i++;                  //总线拉低1μs
  ds=1;i++;i++;             //释放总线,延时
  dat=ds;
  i=8;
  while(i>0)i--;
  return(dat);
}
uchartpread(void)           //读一字节数据
{
uint i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
  j=tpreadbit();
  dat=(j<<7)|(dat>>1);
}
return(dat);                // 复位函数
}


作者: pcbboy    时间: 2019-11-25 14:27
把文件加入到里面,再用Main 函数调用。
附图为你参考

目录.jpg (104.08 KB, 下载次数: 62)

目录.jpg

作者: jscsd226    时间: 2019-11-25 14:54
看一下新建工程的视频,就可以啦。
作者: yzwzfyz    时间: 2019-11-25 17:35
主线是:将各个程序做成一个个的函数。而后在主程序中依序调用。
细节是:你需要仔细分配系统资源,规划好时序。

作者: 466305213    时间: 2019-11-25 23:55
自己要规划好
作者: moluxiyan    时间: 2019-11-26 09:20
先巩固一下C语言,然后看看别人的程序怎么写的
作者: 冷月枫    时间: 2019-11-26 21:25
判断好逻辑关系,直接加到一个工程里就行




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1