找回密码
 立即注册

QQ登录

只需一步,快速开始

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

c51单片机编辑错误 语法错误

[复制链接]
跳转到指定楼层
楼主
/****
函数名main.c*****/
#include <reg52.h>
#include "main.h"
#include "display.h"
#include "18b20.h"
#include "alarm.h"

//extern unsigned char idata flag;  //定义外部变量

        void main()
{
  initalarm();
  while(1)
  {
    SetHighTem();
    alarm();
  }
}
/*****函数名;display.c
数码管显示采集的温度***/
#include "display.h"
#include "main.h"

unchar ; code table[]={   //共阴极数码管显示
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71,0x40,0x76,0x38};
unchar ; code table1[]={    //第三个数码管有小数点,所以不一样
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,
        0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};
/***********
        *数码管显示函数
        *参数:dat
        *返回无
        *************/
        void diaplay(uint first,uint second,uint third,uint forth)
                //显示负温度的函数,第一个数码管显示‘-’
        {
         wela=0xfe;
                dula=table[first];
          dealy_ms(5);
                dula=0x00;
           wela=0xfd;
                dula=table[second];
          dealy_ms(5);
                dula=0x00;
                wela=0xfb;
                dula=table1[third];
          dealy_ms(5);
                dula=0x00;
                wela=0xf7;
                dula=table1[forth];
          dealy_ms(5);
                dula=0x00;
        }
        /*****延时函数
        *参数:timer
        *返回无
        **************/
        void delay_ms(uint timer)
        {
        uint i,j;
                for(i=0;i<timer;i++)
                   for(j=0;j<110;j++)
        }
        
        #include "main.h"
        unsigned char idata flag;
        unchar show[4]={1,2,3,4};
        void delay_us(uchar a)
        {
        while(--a);
        }
        //****初始化子程序
        void init1820()
        {
        DQ=1;_nop_();   
                DQ=0;                //拉低数据线
                delay_us(125);      //延时510us
                delay_us(125);
                DQ=1;             //提升数据线
                delay_us(15);     //延时35us
                while(DQ)    //等待slave器件的ACK信号
                {
                 
                        _nop_();
                }
                delay_us(60);     //延时125us
                DQ=1;       //提升 数据线,准备数据传输
        }
        //******write*****
        void write1820(uchar a)
        {
        uchar i;
                for(i=0;i<8;i++)
                {
                if(a & 0x01)  //低位在前
                {
                DQ=0;      //结束recovery time
                        _nop_();_nop_();_nop_();
                        DQ=1;    //发送数据
                }
                else
                        DQ=0;     //结束recovery time
                   _nop_();_nop_();_nop_();
                   DQ=0;}
            delay_us(30);
                DQ=1;
                _nop_();   //开始recovery time
                a>>=1;
                }
        
        }
        //**********read
        unsigned char read1820(void)
        {
         unsigned char i;
                unsigned char tmp=0;
                DQ=1;_nop_();    //准备读
                for(i=0;1<8;i++)
                {
                tmp>>=1;   //低位先发
                        DQ=0;     //读初始化
                        _nop_();
                        DQ=1;
                        delay_us(2);
                        _nop_();
                        if(DQ)
                                tmp |=0x80;
                        delay_us(30);
                        DQ=1;_nop_();
                }
        return tmp;
        }
        uchar gettemp()
        {
        unsigned int tp;
                init1820();
                write1820(0xcc);
                delay_ms(2);
        write1820(0x44);
        _nop_();
                DQ=1;
        delay_ms(250);delay_ms(250);delay_ms(250);
                init1820();
                write1820(0xcc);
                write1820(0xbe);
                show[0]=read1820();
                show[1]=read1820();
                init1820();
                tp=show[1]*256+show[0];
                flag=show[1]>>7;
                if(flag==0){tp=tp>>4;}
                if(flag==1){tp=tp>>4;tp=256-tp;}
                //show[0]=(unsigned char)(tp/10);
                //show[1]=(unsigned char)(tp% 10);
                return tp;
        }
        #include "main.h"
  #include "alarm.h"
        #include "display.h"
        #include "18b20.h"
        extern unsigned char idata flag;  //定义外部变量,温度正负标志
        uint HNum=50;LNum=10;
        uint Tem;
        /**********
        *显示温度函数
        *参数无
        *返回无
        ***********/
        void ShowTem()
        {
        Tem=gettemp();    //读取采集的温度
                if(flag==1)
                        display(16,(Tem% 100)/10,Tem% 10,(Tem* 10)/10);
                if(flag==0)
          display(Tem/100,(Tem% 100)/10,Tem% 10,(Tem* 10)/10);
        }
        /*************
        *设置低温温度
        *参数无
        *返回无
        ************/
        void SetLowTem()
        {
while(1)
         {
display(18,(LNum% 100)/10,LNum% 10,(LNum* 10)/10);
                 if(k2==0)
                 delay_ms(50);   //按键消抖
                 if(k2==0)
     {
                 while(!k2);     //等待按键释放
                 LNum++;
                 }
     if(k3==0)
                 delay_ms(50);
                 if(k3==0)
     {
                 while(!k3);
                 LNum--;
                 }
                 if(k4==0)
                 delay_ms(50);
                 if(k4==0)
     {
                 while(!k4);
                 break;
                 }         
   }
}
        

        /*******
        *设置高温温度
        *参数无
        *返回无
        ************/
        void SetHighTem()
        {
        HNum=50;
        if(k1==0)
                 delay_ms(10);    //按键消抖
                 if(k1==0)
     {
                 while(!k1);      //等待按键释放
                while(1)
                {
                display(17,(HNum% 100)/10,HNum% 10,(HNum* 10)/10);
                 if(k1==0)
                 delay_ms(50);
                 if(k1==0)
     {
                 while(!k1);
                 break;
                 }         
                if(k2==0)
                 delay_ms(50);
                 if(k2==0)
     {
                 while(!k2);
                 HNum++;
                 }
                 if(k3==0)
                 delay_ms(50);
                 if(k3==0)
     {
                 while(!k3);
                 HNum--;
                 }
                 if(k4==0)
                 delay_ms(50);
                 if(k4==0)
     {
                 while(!k4);
                 break;
                 }         
                }
        }
                 ShowTem();
}
        /***************
*LED蜂鸣器初始化
*参数无
*返回值无
*****************/
   void initalarm()
         {
         led1=0;
                 led2=0;
                 led3=0;
                 buzzer=1;
         }
         /***************
*LED蜂鸣器控制
*参数无
*返回值无
*****************/
         void alarm()
         {
         Tem=gettemp();
                 if( Tem > HNum)
                 {
                 led1=1;
                 led2=0;
                 led3=0;
                 buzzer=0;
                 }
   else if( Tem< LNum)
         {
           led1=1;
                 led2=0;
                 led3=0;
                 buzzer=0;
         }
         else
           {
           led1=1;
                 led2=0;
                 led3=0;
                 buzzer=1;
         
           }
         }
         

44.PNG (85.75 KB, 下载次数: 26)

44.PNG

捕获.PNG (17.63 KB, 下载次数: 31)

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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