历史上的今天
返回首页

历史上的今天

今天是:2024年11月13日(星期三)

正在发生

2019年11月13日 | STM8L 151G6U6 驱动RW1820温度传感器

2019-11-13 来源:eefocus

兼容DS18B20以及RW1820(VDD=2.8V)版本



#define RW1820_DQ_OUT  GPIO_Init(GPIOC, GPIO_PIN_2,GPIO_Mode_Out_OD_HiZ_Slow); //输出

#define RW1820_DQ_IN   GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_Mode_In_PU_No_IT);     //输入

#define RW1820_DQ_HIGH          GPIO_SetBits(GPIOC, GPIO_PIN_2); //拉高

#define RW1820_DQ_LOW           GPIO_ResetBits(GPIOC, GPIO_PIN_2);  //拉低

#define RW1820_DQ_PULL_UP

          GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_Mode_In_PU_No_IT);     //上拉

#define RW1820_DQ_FLOATING

        GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_Mode_In_FL_No_IT);       //浮空

#define RW1820_DQ_PUSH_PULL

          GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_Mode_Out_PP_Low_Fast); //推挽



#define RW1820_DQ_VALUE        GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_2) //DQ值

 

void _delay_us(uint16_t nCount)

{

    nCount *= 3; 

    while(--nCount);

}

/**

  * @brief _delay_ms

  * @param nCount

  * @retval None

  */

void _delay_ms(uint16_t nCount)

{

    while(nCount--)

    {

        _delay_us(1000);

    }

}

//-----------------------------------------------------------------------------//



void RW1820_Init(void)

{

    uint8_t retry=0;    

RW1820_DQ_OUT;   //置为输出口    

RW1820_DQ_HIGH;  //总线拉高

_delay_us(1);

RW1820_DQ_LOW;   //总线产生下降沿,初始化开始

_delay_us(700);  //复位脉冲 总线保持低电平在480 - 960微秒之间

RW1820_DQ_HIGH;  //总线拉高

_delay_us(100);          //100 

        RW1820_DQ_IN;    //置为输入,主机释放总线,准备接收DS18B20的应答脉冲



while(RW1820_DQ_VALUE==1&& (retry<100) )//等待DS18B20发出应答脉冲

        {

          retry++;

          _delay_us(1);

        }

        RW1820_DQ_HIGH;  //总线拉高

_delay_us(400);  //持续60-400us

}

//-------------从DS18B20写1个字节函数

void RW1820_WriteByte(unsigned char _data)

{

int i = 0;



RW1820_DQ_OUT;                   //置为输出口

        delay_us(10);

for (i = 0; i < 8; i++)

{

RW1820_DQ_LOW;          //总线拉低,启动“写时间片”

_delay_us(2);           //大于1微妙

if (_data & 0x01)

{

                    RW1820_DQ_HIGH;     //总线拉高

}

                else RW1820_DQ_LOW;    //总线拉低

                _delay_us(60);          //60

                RW1820_DQ_HIGH;         //总线拉高,释放总线,准备启动下一个“写时间片”

_data = _data >> 1;

}

}

//-------------从DS18B20读1个字节函数

unsigned char RW1820_ReadByte(void)

{

int i = 0, _data = 0;

        delay_us(10);

for (i = 0; i < 8; i++)

{

                RW1820_DQ_OUT;  //置为输出口

                RW1820_DQ_LOW;  //总线拉低,启动读“时间片”

                _data >>= 1;

_delay_us(2);   //大于1微妙

                RW1820_DQ_HIGH; //主机释放总线,接下来(2~15)us内读有效 

RW1820_DQ_IN;   //引脚设定为输入口,准备读取

if(RW1820_DQ_VALUE)

{

                    _data |= 0x80;

}

                _delay_us(60);  //60us后读完成

}

return _data;

}



int RW1820_ReadTemperature(void)//读取并计算要输出的温度

{

unsigned char temp;

unsigned int t;


RW1820_Init();          //复位

RW1820_WriteByte(0xcc);//发跳过序列号检测命令

RW1820_WriteByte(0x44);//命令Ds18b20开始转换温度

         _delay_us(10);

RW1820_Init();

RW1820_WriteByte(0xcc);//发跳过序列号检测命令

RW1820_WriteByte(0xbe);//读暂存器



temp = RW1820_ReadByte();

t = (int)(((temp & 0xf0) >> 4) + (temp & 0x07) * 0.125); 

temp = RW1820_ReadByte();

t += ((temp & 0x0f) << 4);


return t;

}


推荐阅读

史海拾趣

南京中科微公司的发展小趣事

CSM成立以来,一直致力于研发具有自主知识产权的射频/模拟关键芯片。经过数年的辛勤耕耘,团队成功开发出了多款高性能的集成电路芯片与模块,其中不乏在功耗、成本、性能等方面达到国际先进水平的产品。这些技术突破不仅为公司赢得了市场的认可,也为国内电子行业的发展注入了新的活力。

ACP Optoelectronic Technology Co Ltd公司的发展小趣事

在发展过程中,ACP Optoelectronic Technology Co Ltd注重品牌建设和形象提升。公司加强品牌宣传和推广力度,通过媒体广告、网络宣传等多种方式提升品牌知名度和美誉度。同时,公司也注重客户服务和售后支持,以优质的产品和服务赢得客户的信任和支持。这些举措不仅提升了ACP Optoelectronic Technology Co Ltd的品牌形象,也为其长期发展奠定了坚实基础。


请注意,以上故事仅为虚构,旨在展示电子行业企业可能的发展路径和趋势。实际上,每个企业的发展历程都是独一无二的,受到市场环境、技术创新、管理决策等多种因素的影响。如需了解ACP Optoelectronic Technology Co Ltd的真实发展故事,建议查阅相关新闻报道或公司资料。

A/D Electronics Inc公司的发展小趣事

A/D Electronics Inc深知人才是企业发展的核心力量。因此,公司高度重视研发团队的建设和人才培养。通过引进国内外优秀人才和加大研发投入,公司不断提升研发团队的实力和创新能力。同时,公司还建立了完善的培训体系,为员工提供持续的学习和成长机会,激发了员工的创造力和工作热情。

Altonics公司的发展小趣事

为了确保产品的质量和稳定性,Altonics公司建立了严格的质量管理体系。公司从原材料采购到产品出厂的每一个环节都进行严格把控,确保产品质量符合行业标准。同时,公司还引入了先进的质量检测设备和方法,不断提高产品质量检测的准确性和效率。这些措施使得公司的产品在市场上赢得了良好的口碑。

Franel Corp公司的发展小趣事

为了更好地服务中国市场,法勒公司不断优化其供应链和生产布局。近年来,法勒加大了在国内的投资力度,建设了现代化的生产基地和研发中心。通过本土化生产,法勒不仅降低了产品成本,还缩短了交货周期,提高了市场响应速度。同时,法勒还积极与本土供应商建立紧密的合作关系,共同构建了一个高效、稳定的供应链体系。

兵字(BingZi)公司的发展小趣事

为了进一步提升公司的管理水平和市场竞争力,兵字公司决定进行企业规范化和市场化运作。公司建立了完善的管理体系和运营机制,优化了业务流程和组织结构,提高了工作效率和响应速度。同时,兵字公司还积极引进外部投资和战略合作伙伴,为公司的发展注入了新的活力和动力。

问答坊 | AI 解惑

欧姆龙PLC中断问题

欧姆龙PLC如何实现中断,从那里进入及退出,请高人指点!…

查看全部问答>

Keil C51 几类重要库函数 (2)

8. 第八章 dScope for Windows使用详解 1. 第一节 概述 1. 1. 主窗口(Mainframe Window) 可设置其它各种调试窗口,设置断点、观察点,修改地址空间,加载文件等等; 2. 2. 调试窗口(DEBUG Window) 支持用户程序的各种显示方式,可连续运行 ...…

查看全部问答>

求助:求一篇关于单片机或FPGA的中英文翻译文章

偶英语水平差。。。。。 英文要1万字符以上。。急用!有的朋友给我发一份吧.谢谢 邮箱:yt137511@126.com…

查看全部问答>

[求助]关于直接通过I/O接口访问硬盘数据的可能性及思路的探索。

这个问题大概是这样的:     在OS里要访问硬盘上的数据要经过文件系统,现在我想不经过文件系统,直接对硬盘上的数据进行读写。     我的思路来自于市场上的硬盘播放器(就是可以直接播放硬盘里的多媒体文件的设备)。查了一 ...…

查看全部问答>

ST选型

请问谁清楚ST的哪个8位机有2个PWM,3个定时器,10路ADC,34个I/O(含10个AD口) ,是用来做电源的。wendellyang@163.com…

查看全部问答>

热电堆 信号选择

小弟最近想做一个用于微波炉的温度测量的红外探测模块。由于以前都没有做过项目,所以经验非常少,现在我苦于热电堆型号的挑选。         网上看了看有这些:SC0067、SC0070、10TP583T、OTP系列(如OTP-537F2、OTP- ...…

查看全部问答>

关于硬盘无刷电机的驱动

小弟在研究硬盘电机的驱动,我曾试过用小功率管9013,8050,8550等等来搭成达林顿管子,但是驱动电机的时候发热严重,而且明显有气无力...虽然能转...在网上找了很久,想用场效管IRF540N来驱动,但是不知道电路如何搭建...求各位高手,走过路过的能 ...…

查看全部问答>

8962 lwip 如何实现不同网段连接啊

求助,哪位告诉能指点下, 在8962上面使用lwip 如何实现不同网段的能够连接啊???就是公司网络 192.168.1.12的电脑 可以 ping通 192.168.2.2的电脑但是我的板子 192.168.1.10 ping不同 192.168.2.2的电脑…

查看全部问答>

差分放大器低通滤波器设计

有没谁用差分放大器做个低通滤波器的?请指点小弟一下,谢了...…

查看全部问答>

大三学生方向分流,求好心人指点

大三嵌入式又要分方向了, ARM 、 PCL、 单片机,感觉吧....就是没感觉,有没有前辈给这三个方向的发展,优缺点,就业情况分析一下啊? 小弟先谢谢了....!!!   …

查看全部问答>