• 大小: 105KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: 其他
  • 标签:

资源简介

51单片机的串口采集温度程序,采用18b20温度传感器,并通过串口传送给单片机,单片机同时课余上位机通信,将采集道德数据发送给上位机

资源截图

代码片段和文件信息

#include 
#include                          
#define  uchar unsigned char
#define  uint  unsigned int
sbit     DQ=P2^0;                               
uint     htemp; 
bit      flag;
uchar code dian_table[16]={0x000x010x010x020x030x030x040x04
0x050x060x060x070x080x080x090x09};    //温度小数部分用查表法         
uchar data temp_data[2]={0x000x00};    //读出温度暂放
uchar data display[5]={0x000x000x000x000x00};    
  //显示单元数据,共4个数据和一个运算暂用
uchar idata temp_display[]={0x300x310x320x330x34
0x350x360x370x380x39};

void init()    //串口初始化
{
SCON= 0x50;                //串口方式1 允许接收
PCON=0;                    //SMOD=0
TMOD= 0x20;                //定时器1定时方式2
TH1= 0xf3;                 //12MHz 2400波特率
TL1= 0xf3;
TR1= 1;
EA = 1;
    ES = 1;
}

//---------------------------------------------------------------
//串口发送函数
//---------------------------------------------------------------
/*void serial_send(unsigned char ch)  //串口发送函数

TI=0;
SBUF=ch; 
while(TI== 0);                  //等待发送完成
}*/ 

void delay(uint t)  //11us延时函数
{
for (;t>0;t--);
}

void ow_reset(void) //DS18B20复位函数
{  
char presence=1;
while(presence)
{  
while(presence)
{
DQ=1;_nop_();_nop_();//从高拉倒低
DQ=0;                                       
delay(50);           //550 us
DQ=1;                                        
delay(6);            //66 us
presence=DQ;         //presence=0 复位成功继续下一步

delay(45);               //延时500 us
    presence=~DQ;       
}
DQ=1;                        //拉高电平
}
void write_byte(uchar val) //DS18B20写命令函数
{   
uchar i;
for(i=8;i>0;i--)
{
DQ=1;_nop_();_nop_();                  //从高拉倒低
DQ=0;_nop_();_nop_();_nop_();_nop_();  //5 us
DQ=val&0x01;                           //最低位移出
delay(6);                              //66 us
val=val/2;                             //右移1位
}
DQ=1;
delay(1);
}

uchar read_byte(void)  //DS18B20读1字节函数
{
uchar i;
uchar value=0;
for(i=8;i>0;i--)
{
DQ=1;_nop_();_nop_();
value>>=1;
DQ=0;_nop_();_nop_();_nop_();_nop_();         //4 us
DQ=1;_nop_();_nop_();_nop_();_nop_();         //4 us
if(DQ)value|=0x80;
delay(6);                                     //66 us
}
DQ=1;
return(value);
}
read_temp()    //读出温度函数
{
ow_reset();                  //总线复位
delay(200);
write_byte(0xcc);            //发命令
write_byte(0x44);            //发转换命令
ow_reset(); 
delay(1);
write_byte(0xcc);            //发命令
write_byte(0xbe);
temp_data[0]=read_byte();    //读温度值的低字节
temp_data[1]=read_byte();    //读温度值的高字节
temp=temp_data[1];
temp<<=8;                                               
temp=temp|temp_data[0];      // 两字节合成一个整型变量。
return temp;                 //返回温度值
}
void work_temp(uint tem)   //温度数据处理函数
{
uchar n=0;
if(tem>6348)                        // 温度值正负判断
{
tem=65536-tem;
n=1;
}            // 负温度求补码标志位置1
disp

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-08-08 18:07  程序1-温度采集串口\
     文件        6376  2005-03-22 15:22  程序1-温度采集串口\STARTUP.A51
     文件       14063  2011-06-12 12:50  程序1-温度采集串口\STARTUP.LST
     文件         758  2011-06-12 12:50  程序1-温度采集串口\STARTUP.OBJ
     文件       17735  2009-12-23 20:43  程序1-温度采集串口\STC12C5A60S2.h
     文件       55311  2010-09-09 11:10  程序1-温度采集串口\TEMP.bak
     文件       57597  2011-06-12 12:55  程序1-温度采集串口\TEMP.uvopt
     文件       13403  2010-09-08 22:33  程序1-温度采集串口\TEMP.uvproj
     文件       57587  2011-06-06 15:03  程序1-温度采集串口\TEMP_uvopt.bak
     文件        8929  2011-06-12 12:50  程序1-温度采集串口\TEST
     文件        4506  2011-06-12 12:50  程序1-温度采集串口\TEST.c
     文件        1901  2011-06-12 12:50  程序1-温度采集串口\TEST.hex
     文件          56  2011-06-12 12:50  程序1-温度采集串口\TEST.lnp
     文件        9563  2011-06-12 12:50  程序1-温度采集串口\TEST.LST
     文件       13610  2011-06-12 12:50  程序1-温度采集串口\TEST.M51
     文件        9522  2011-06-12 12:50  程序1-温度采集串口\TEST.OBJ
     文件        1186  2011-06-12 12:55  程序1-温度采集串口\TEST.plg
     文件       56791  2010-09-08 22:33  程序1-温度采集串口\TEST.uvopt
     文件       60635  2010-09-08 22:12  程序1-温度采集串口\TEST_uvopt.bak
     文件       13901  2009-12-14 15:03  程序1-温度采集串口\TEST_uvproj.bak
     文件       17527  2009-11-09 12:28  程序1-温度采集串口\wav.out
     文件      324526  2010-05-06 16:41  程序1-温度采集串口\wav_.h

评论

共有 条评论

相关资源