历史上的今天
返回首页

历史上的今天

今天是:2025年06月20日(星期五)

正在发生

2018年06月20日 | STC单片机的DS18B20的C程序

2018-06-20 来源:eefocus

由于STC单片机的速度比8051速度快,属于1个时钟/机器周期高速单片机。速度快当然是它的优点,但对于要移植传统的8051程序而言,需要修改时序来实现某功能.

以下程序是ds18b20简单的驱动程序,其实是在网上Down的,经本人稍作修改之后,在STC12C5A32S2中调试通过的,最后读温度返回一个unsigned int,低12位就是温度数据。在主程序里进行运算即可得到实际温度值。呵呵~~

/***********ds18b20子程序*************************/

/***********ds18b20延迟子函数(晶振11.0592MHz )*******/

void delay_18B20(unsigned int i)
{
while(i--);
}

/**********ds18b20初始化函数**********************/

void Init_DS18B20(void) 
{
unsigned char x=0;
DQ = 1;          //DQ复位
delay_18B20(80); //稍做延时
DQ = 0;          //单片机将DQ拉低
delay_18B20(800); //精确延时 大于 480us
DQ = 1;          //拉高总线
delay_18B20(140);
x=DQ;   delay_18B20(200);
}

/***********ds18b20读一个字节**************/

unsigned char ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
    DQ = 0; // 给脉冲信号
    dat>>=1;
    DQ = 1; // 给脉冲信号
    if(DQ)
    dat|=0x80;
    delay_18B20(40);     //40
}
   return(dat);
}

/*************ds18b20写一个字节****************/

void WriteOneChar(uchar dat)
{
   unsigned char i=0;
   for (i=8; i>0; i--)
   {
   DQ = 0;
    DQ = dat&0x01;
    delay_18B20(50); //50
    DQ = 1;
    dat>>=1;
}
}

/**************读取ds18b20当前温度************/

unsigned int ReadTemp(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int temp_value=0;

Init_DS18B20();
WriteOneChar(0xCC);     

WriteOneChar(0x44);  

delay_18B20(1000);      

Init_DS18B20();
WriteOneChar(0xCC);  
WriteOneChar(0xBE);  

delay_18B20(1000);

a=ReadOneChar();    //读取温度值低位
b=ReadOneChar();      //读取温度值高位

temp_value = b<<8;
temp_value |= a; 
return temp_value;
        
}


推荐阅读

史海拾趣

诚芯微(CXW)公司的发展小趣事

在2009年,诚芯微(CXW)公司在深圳成立,标志着其在中国电子行业的初步涉足。公司创始人凭借对集成电路设计领域的深刻理解和前瞻性的市场洞察,决定专注于电源芯片的研发与设计。初期,公司面临着资金紧张、技术储备不足等挑战,但创始人带领团队坚持自主研发,逐步积累了技术实力。

Equinox公司的发展小趣事

随着科技的发展,Equinox意识到数字化对于提升客户体验的重要性。因此,公司开始投入大量资源建设数字平台,提供在线预约、课程购买、健康管理等服务。这些数字化功能不仅方便了客户,还提高了公司的运营效率。

Datalogic公司的发展小趣事

随着电动汽车行业的兴起,汽车行业对零部件的标记和追踪要求也日益严格。Datalogic凭借其强大的技术实力,成功开发出3W固态激光打标机Vlase UV 3,该产品能够在橙色部件上实现高度可见、稳定和持久的对比度标记,解决了电动汽车生产中的一大难题。这一创新不仅展示了Datalogic的技术实力,也进一步巩固了其在电子行业中的领先地位。

Eurofarad公司的发展小趣事

Eurofarad,作为Exxelia Technologies旗下的知名品牌,自1965年成立以来,就专注于电子元件的设计和制造。在创立初期,Eurofarad凭借对电子技术的深入研究和对市场需求的敏锐洞察,迅速推出了多款高性能、高质量的电子元件产品。这些产品在市场上获得了广泛的认可,为Eurofarad的后续发展奠定了坚实的基础。

ATM [Advanced Technical Materials]公司的发展小趣事

随着科技的进步,ATM也在不断进行技术创新和升级。从最初的简单取款功能,到现在的存款、转账、查询等多种功能,ATM的功能日益丰富。同时,随着移动支付和互联网金融的兴起,ATM也在逐渐与这些新技术融合,提供更加便捷、安全的金融服务。

华大北斗(Allystar)公司的发展小趣事

然而,随着ATM的普及,安全问题也日益凸显。黑客攻击、恶意软件植入等事件时有发生,给ATM的安全运营带来了挑战。为了应对这些挑战,ATM行业加强了技术研发和安全防护,采用更加先进的加密技术和安全机制,确保用户的资金安全。

以上五个故事虽然不直接涉及ATM公司的具体发展,但展示了ATM技术在电子行业中的发展历程和重要事件。这些故事反映了ATM从诞生到广泛应用,再到技术创新和安全挑战的整个过程,也展示了电子行业在推动ATM发展中的重要作用。

问答坊 | AI 解惑

ASIC Verification Engineer

ASIC Verification Engineer LSI上海研发中心高薪诚聘通讯存储领域人才,薪水待遇优厚,部分人员有出国培训机会。(部门内部推荐,成功机会更大) 有意者请将中英文简历发送至:asic_tapeout@hotmail.com ASIC Verification Engineer DESCRIPTION ...…

查看全部问答>

有人用过EP9307-II的板子吗?

如题,刚开始学,想请教一下。…

查看全部问答>

WinCE下取得硬件唯一标识

首先问一下,硬件唯一标识是不是就是指IMEI号。 如果硬件唯一标识是指IMEI号,那么在WinCE5.0下如何取得呢,我找了资料了,很多人说用“lineGetGeneralInfo”这个方法,但是我在WinCE5.0上试了,首先WinCE5.0的SDK中没有CellCore.lib,我下载了WM ...…

查看全部问答>

大虾们快来帮忙.C#在读BMP文件是提示找不到文件.

我用VISUAL STUDIO2003编写WINCE 4.2程序, 想在窗体上画个BMP图片,这个图片我已经其它的画图工具画好了,存成了一个a.bmp文件.然后我把它拷贝到工程的debug目录下,编译后, 将exe文件和该图片一起拷贝到wince4.2设备(我的电路板)的同一个目录下,,, ...…

查看全部问答>

咨询关于无线单火线开关问题

       大家好,我在网上看到很多卖单火线开关的,我很困惑的是,他们都声称自己的无线遥控开关静态功耗做到40uA,我也查了一些无线接收模块,这些模块接收的功耗都至少有mA级,请问这个是怎么样实现静态功耗做到40u ...…

查看全部问答>

MSP430USB仿真器制作全套资料

在网上看见的,赶紧转发过来,以前一直想自己做一个,后来一连上了好几个项目,没有时间来玩了,其实工作了的朋友可以找利尔达买,透露个小秘密他们是可以讲价的,喊价400,买一送一,实际上和淘宝上价格差不多了,但是他们有技术支持和服务的,比 ...…

查看全部问答>

怎样才能有效地控制堆栈溢出

                                 我用得是keil  MDK3.4 芯片是STM32F103ZET6,可是最近老出些莫名奇妙的错误,有人说是堆栈溢出,在程序 ...…

查看全部问答>

DSP的地址线和数据线有相应的寄存器吗?

DSP的地址线和数据线有相应的寄存器吗?如果没有,那么怎么写数据呢? 另外,我在一本书上见到用DSP的低8位数据线连接LCD的数据线,用DSp的8-12位做LCD的控制线,不明白该怎样控制,是何道理,各位高手帮我解决一下吧,我是初学者,这些问题困扰我 ...…

查看全部问答>

谁有IIC通信成功的程序

谁有IIC通信成功的程序,借我看看…

查看全部问答>

高频头馈电

高频头的馈电是18V和13V,垂直极化的话是13V,如果用12V有什么影响吗?…

查看全部问答>