#include "temp.h"
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
#define DS18B20_PORT GPIOA
#define DS18B20_PIN GPIO_Pin_1
#define DS18B20_CLK RCC_APB2Periph_GPIOA
#define RW1820_DQ_HIGH GPIO_SetBits(DS18B20_PORT, DS18B20_PIN);
#define RW1820_DQ_LOW GPIO_ResetBits(DS18B20_PORT, DS18B20_PIN);
#define RW1820_DQ_VALUE GPIO_ReadInputDataBit(DS18B20_PORT,DS18B20_PIN)
//---------------------------------------------------------------------------//
void _delay_us(uint16_t nCount)
{
nCount *= 3;
while(--nCount);
}
//-----------------------------------------------------------------------------//
static void RW1820_DQ_IN(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(DS18B20_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = DS18B20_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(DS18B20_PORT, &GPIO_InitStructure);
}
//--------------------------------------------------------
static void RW1820_DQ_OUT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(DS18B20_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = DS18B20_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DS18B20_PORT, &GPIO_InitStructure);
}
//--------------------------------------------------------
void RW1820_Init(void)
{
u8 retry=0;
RW1820_DQ_OUT();
RW1820_DQ_HIGH;
_delay_us(50);
RW1820_DQ_LOW;
_delay_us(500); //480 - 960
RW1820_DQ_HIGH;
_delay_us(40); //15-60
RW1820_DQ_IN(); //
while(RW1820_DQ_VALUE==1&& (retry<100))
{
retry++;
_delay_us(10);
}
RW1820_DQ_OUT();
RW1820_DQ_HIGH;
_delay_us(400);
}
//-------------
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); //
if (_data & 0x01)
{
RW1820_DQ_HIGH; //
}
else RW1820_DQ_LOW;
_delay_us(60); //60
RW1820_DQ_HIGH;
_data = _data >> 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);
RW1820_DQ_HIGH;
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); //
_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;
}
上一篇:stm32f103 c6t6 CAN总线的配置
下一篇:stm32单片机进入休眠(STOP)模式后无法下载程序等问题解决
推荐阅读
史海拾趣
璟德电子工业股份有限公司(ACX)于1998年在中国台北板桥市正式成立,初始资本为2300万美元。公司从创立之初就专注于利用低温共烧陶瓷(LTCC)技术,研发与制造无线通信组件与模块。这一技术选择为公司日后的成功奠定了坚实的基础。在创立初期,璟德(ACX)面临着激烈的市场竞争和技术挑战,但公司凭借对技术的深入理解和不懈的创新精神,逐步在行业中崭露头角。
进入1950年代,随着联邦政府对卡车运输的规范,Günter Bals意识到单一的运输业务已无法满足公司长远发展的需要。于是,他与妻子伊丽莎白共同创立了Bals Elektrotechnik GmbH,开始涉足电气连接器的生产。这一转型对Bals来说既是挑战也是机遇,他们凭借对市场的敏锐洞察和不懈的技术研发,成功推出了第一批铝制连接器,并逐步打开了市场。
随着电子行业的快速发展,AINFO Inc公司积极响应国家产业政策,加快了产业升级的步伐。公司引进了先进的生产设备和技术,实现了智能制造和数字化转型。通过优化生产流程和提高生产效率,公司降低了成本,提高了产品质量,进一步巩固了市场地位。
作为一家具有社会责任感的企业,Emerson Embedded Power积极参与公益事业和社会活动。该公司通过捐赠资金、物资和技术支持等方式,帮助贫困地区的学校和社区改善基础设施和教育条件。同时,公司还积极倡导员工参与志愿服务活动,为社会贡献爱心和力量。
请注意,以上故事是基于Emerson Embedded Power在电子行业中的一般发展情况和特点而编写的概述性故事框架,并非具体的、详细的发展故事。如果需要更详细的信息或故事,建议直接查阅该公司的官方资料或相关新闻报道。
在快速发展的过程中,CANDD公司始终注重企业文化的建设。公司倡导创新、协作、诚信和担当的核心价值观,鼓励员工勇于创新、敢于担当。同时,公司还注重员工的培训和成长,为员工提供了广阔的职业发展空间。这些举措不仅激发了员工的工作热情,还为公司培养了一批忠诚、有能力的员工队伍。在企业文化的引领下,CANDD公司不断向前发展,成为了电子行业的佼佼者。
这些故事虽然基于虚构的CANDD公司,但它们所反映的电子行业发展趋势和企业管理理念是真实存在的。通过这些故事,我们可以更好地理解电子行业的发展历程和未来趋势。
随着环保意识的日益增强,常州能动积极响应国家政策,加大环保投入。公司引进了先进的环保设备和技术,对生产过程中的废弃物进行无害化处理。同时,公司还注重节能减排和资源循环利用,推动公司向绿色、低碳、可持续发展的方向迈进。这些努力不仅提升了公司的社会形象,也为公司的长远发展打下了坚实基础。
器人转笔刀,原动力来自铅笔屑 现在的学生真的很累,虽然已经有了电脑和网络为他们供给许多新鲜的娱乐方式,但其实最能让学生们感到有趣的事情,应当还是来自于学习过程中的一些小小的转变。虽然已经很多人不应用铅笔了,不过对于一 ...… 查看全部问答∨ |
|
最近在symbol mc 3000上做一个软件,遇到了中文问题 开发环境是netbean+CreCE, 1、java程序在读写的时候报异常 java.io.UnsupportedEncodingException: gbk 2、中文字符显示乱码 各位有没有用JAVA做过WIN CE开发的。请指教啦!!! QQ: & ...… 查看全部问答∨ |
网络存储在安防行业的应用 视频监控系统目前正处于以DVR数字硬盘录像机为代表的数字视频监控系统全面向以NVS服务器、网络视频服务器、IPCamera网络摄像机以及最近兴起的NVR叫络录像机为代表的网络视频监控系统转型阶段,在此过渡阶 ...… 查看全部问答∨ |
在家里和在办公室调试,发现键盘按键值是两个不同的值,现在在办公室esc对应值为1 A对应为30为什么会是这样的?demo里2440bsp key.c里面这个 RTGUI_KEYUP RTGUI_KEYDOWN是什么决定的? if((key_value & 0x80)==0) & ...… 查看全部问答∨ |
|