历史上的今天
返回首页

历史上的今天

今天是:2025年03月12日(星期三)

正在发生

2020年03月12日 | MSP430F149的DS18B20C语言程序

2020-03-12 来源:eefocus

#include          "msp430x14x.h"            // Standard Equations 

//-------------------------I/O口定义------------------------------------ 

#define DS_DIR   P6DIR 

#define DS_OUT   P6OUT 

#define DS_IN    P6IN 

#define DS18B20  BIT4 

 

#define W18BUS_1 {DS_DIR |= DS18B20;DS_OUT |= DS18B20;_NOP();DS_DIR &= ~DS18B20;} 

 

                         //DS18B20总线写"1" 

#define W18BUS_0 {DS_DIR |= DS18B20;DS_OUT &= ~DS18B20;_NOP();} 

                         //DS18B20总线写"0" 

            

#define SF18BUS (DS_DIR &= ~DS18B20)         //释放DS18B20总线 

#define R18BUS  (DS_IN & DS18B20) 

 

 

#define FLAG_TEMP_RET  0x01             //DS18B20复位OK 

#define FLAG_TEMP_OK   0x02              //DS18B20 传感器OK 

#define FLAG_TEMP_OVER 0x04           //搜索DS18B20结束 

 

#define WDT_CLR (WDTCTL = WDTPW + WDTCNTCL + WDTSSEL + WDTIS0)    //看门狗清零 

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

 void Delay(unsigned int x);        //延时程序   

 void Temp(void);   

//-----------------------全局变量定义------------------------------   

   

unsigned char ID[5][8];                     //ID[5][8]为检索到的地址   

unsigned char TEMP_NUMBER;                  //温度传感器数量   

unsigned int  TEMP[5];                      //温度值   

float    fT[5];   

   

//-----------------------软件标志定义------------------------------   

unsigned int FLAG;    //软件标志   

//FLAG.0--DS18B20复位OK  FLAG.1--温度传感器OK  FLAG.2--搜索温度结束   

   

//****************************************************************************   

//模块名:Init_DS18B20   

//描述:  初试化DS18B20子程序。   

//****************************************************************************   

void Init_DS18B20(void)   

  {   

    DS_DIR = DS18B20;   

    DS_OUT = 0;   

  }   

    

void main(void)   

  {   

    unsigned int iq0;   

    WDTCTL = WDTPW +WDTHOLD;     //停看门狗   

 //---------------------------系统时钟定义---------------------   

    BCSCTL1&=~XT2OFF;                       //打开XT2振荡器   

    do   

      {   

        IFG1 &= ~OFIFG;                     // 清除振荡器失效标志   

        for (iq0 = 0xFF; iq0 > 0; iq0--);   // 延时,等待XT2起振   

      }   

    while ((IFG1 & OFIFG) != 0);            // 判断XT2是否起振   

   

    BCSCTL2 =SELM_2+DIVS_0+SELS;            //选择MCLK、SMCLK为XT2   

    Init_DS18B20();                            

    _EINT();   

    while (1)   

      {   

        Temp();   

        for (iq0 = 5; iq0 != 0; iq0--)   

          {   

            fT[iq0-1] = 0.0625 * TEMP[iq0-1];   

          }   

        _NOP();   

      }    

  }   

   

//****************************************************************************   

//模块名:Rst_DS18B20     

//描述:  复位温度传感器DS18B20子程序。     

//****************************************************************************   

void Rst_DS18B20(void)   

  {   

    unsigned int I;   

    FLAG |= FLAG_TEMP_RET;      //预设ds18b20复位OK    

    W18BUS_0;                   //拉低总线   

    Delay(960);                  //延时480uS   

    SF18BUS;                    //释放总线   

    Delay(50);                  //延时15-60uS   

    I = 890;   

    while (/*(R18BUS) && */(I != 0)) I--;     //循环条件:ds18b20总线不为“0”   

                                       //并且延时总时间不够4mS   

    if (I != 0)   

      {   

        _NOP();   

        while(!(R18BUS));   

      }   

    else   

      {   

        FLAG &= ~FLAG_TEMP_RET;   

      }   

  }   

//****************************************************************************   

//模块名:Read_BUS_bit    

//描述:  从单总线读一位数据子程序。   

//功能:  DATA右移一位,从单总线读一位数据到DATA的最高位,   

//****************************************************************************   

unsigned char Read_BUS_bit (unsigned char DATA)   

  {   

    unsigned char I;   

    DATA >>= 1;   

    SF18BUS;                       //释放总线   

    I = 30;   

    while (I != 0) I--;   

    _DINT();   

    W18BUS_0;                      //拉低总线2uS   

    _NOP();   

    _NOP();   

    _NOP();   

    _NOP();   

    _NOP();   

    W18BUS_1;                      //拉高总线   

    I = 20;   

    while (I != 0) I--;   

    if (R18BUS != 0)   

      DATA |= 0X80;   

    _NOP();   

    _EINT();   

    I = 25;                         //延时45uS   

    while (I != 0) I--;   

    return (DATA);   

  }   

//****************************************************************************   

//模块名:Write_BUS_bit     

//描述:  向单总线写一位数据子程序。   

//功能:  把DATA的最低一位数据写到单总线上,DATA右移一位     

//****************************************************************************   

unsigned char Write_BUS_bit (unsigned char DATA)   

  {   

    unsigned char I;   

    _DINT();   

    W18BUS_1;   

    if (DATA&0X01)   

      {   

        DS_DIR |=  DS18B20;   

        DS_OUT &= ~DS18B20;   

        _NOP();   

        _NOP();   

        DS_OUT |=  DS18B20;   

      }   

    else   

      {   

        W18BUS_0;   

      }   

    _EINT();   

        I = 16;                         //延时15uS   

        while (I != 0) I--;   

    DATA >>= 1;   

    I = 80;   

    while (I != 0) I--;   

    W18BUS_1;   

    _NOP();   

    _NOP();   

    return (DATA);   

  }   

//****************************************************************************   

//模块名:Read_BUS_Byte     

//描述:  从单总线读一个字节数据子程序。   

//功能:  返回从单总线读出的一个字节数据,调用了Read_BUS_bit   

//****************************************************************************   

unsigned char Read_BUS_Byte (void)   

  {   

    unsigned char I;   

    unsigned char DATA;   

    for (I = 8;I != 0;I--)   

      {   

        DATA = Read_BUS_bit(DATA);   

      }   

    return (DATA);   

  }   

//****************************************************************************   

//模块名:Write_BUS_Byte     

//描述:  向单总线写一个字节数据子程序。   

//功能:  调用Write_BUS_bit,把DATA数据写到单总线上    

推荐阅读

史海拾趣

ARRA Inc公司的发展小趣事

由于ARRA Inc公司在电子行业中的具体发展故事并不为公众所熟知,我无法提供关于该公司具体的5个发展起来的相关故事。此外,每个故事至少500字的要求也比较具体,需要详细的资料和数据来支持。

不过,一般来说,一个电子行业的发展故事可能包括其创始人的背景、公司的初创阶段、遇到的挑战和机遇、技术突破、市场拓展、合作伙伴关系、融资历程、产品创新以及市场影响力等方面。每个阶段都可能包含一系列有趣而重要的事件和决策,这些事件和决策共同构成了公司的发展历程。

如果您对ARRA Inc公司的发展感兴趣,建议您查找相关的新闻报道、行业分析、公司年报或者访问其官方网站,以获取更准确和详细的信息。同时,也可以关注电子行业的专业论坛和社交媒体平台,以获取更多行业内幕和专家观点。

在撰写故事时,应确保遵循事实,避免夸大或歪曲事实,尽量保持客观中立的立场。如果需要,可以引用可靠的数据和资料来支持故事中的观点和事实。

请注意,由于我无法直接获取ARRA Inc公司的详细资料,因此无法为您提供具体的故事。如果您有其他问题或需要关于其他公司的信息,我将尽力提供帮助。

HALO Electronics公司的发展小趣事

鸿展光电(GPO)公司的发展故事

故事一:初创与定位

深圳市鸿展光电有限公司(GPO)成立于2009年6月12日,起初便定位于高端显示技术的研发与生产。公司创始人凭借对电子行业未来趋势的敏锐洞察,决定专注于玻璃盖板(CG)、外挂式液晶显示模组(LCM)、外挂式触控模组(TP)等产品的研发与生产。在成立初期,面对激烈的市场竞争,鸿展光电凭借高质量的产品和优质的服务,逐步在行业内站稳脚跟。随着技术团队的不断壮大和产品的持续优化,公司迅速成长为一家集研发、生产、销售于一体的国家级高新技术企业。

故事二:技术突破与创新

在发展过程中,鸿展光电始终将技术创新视为企业发展的核心动力。公司不断加大研发投入,积极引进国内外先进技术和设备,致力于提升产品的技术含量和附加值。特别是在内嵌式触控显示一体化模组(INCELL、ONCELL)以及新一代触控显示模组(MiniLED、MicroLED、AMOLED)等领域,鸿展光电取得了多项关键性技术突破,并成功将这些技术应用于实际生产中,进一步巩固了公司在行业内的领先地位。

故事三:市场拓展与品牌建设

随着产品线的不断丰富和技术实力的不断提升,鸿展光电开始积极拓展国内外市场。公司通过参加各类行业展会、举办技术交流会等方式,不断提升品牌知名度和影响力。同时,鸿展光电还积极与国内外知名企业建立合作关系,共同开发新产品、新技术,实现互利共赢。这些举措不仅为公司带来了更多的商业机会,也进一步提升了公司的市场地位和品牌价值。

故事四:产能扩大与效率提升

为了满足日益增长的市场需求,鸿展光电在扩大产能方面进行了不懈努力。公司通过优化生产流程、引进先进生产设备、提升员工技能水平等措施,不断提升生产效率和产品质量。同时,公司还加强了供应链管理,确保原材料的稳定供应和成品的及时交付。这些举措不仅有效提升了公司的产能和竞争力,也为公司的长期发展奠定了坚实基础。

故事五:社会责任与可持续发展

在追求经济效益的同时,鸿展光电也积极履行社会责任,推动企业的可持续发展。公司注重环境保护和节能减排工作,通过采用环保材料和节能技术、加强废水废气处理等措施,降低生产过程中的环境污染和资源消耗。此外,鸿展光电还积极参与公益事业和社会活动,为社会做出积极贡献。这些举措不仅提升了公司的社会形象和声誉,也为企业的长期发展注入了新的动力。

昆泰芯微电子(CONNTEK)公司的发展小趣事

昆泰芯微电子坚持以人为本,践行合作共赢的企业文化。公司注重员工的个人发展和团队协作,鼓励员工积极参与公司的各项活动和决策。同时,公司也积极与合作伙伴建立良好的合作关系,共同推动行业的发展。公司以正直、求实、进取、创新、协同、分享的十二字箴言作为公司从上至下贯彻的做人做事理念,让员工和企业共同成长,共创前程,共享收获。

以上五个故事概述了昆泰芯微电子在电子行业中的重要发展历程和成就。这些故事不仅展现了公司的技术实力和市场竞争力,也体现了公司的企业文化和发展理念。

CHONGQING PINGYANG ELECTRONICS CO.,LTD.公司的发展小趣事

重庆平洋电子有限公司,自其1998年3月创立之初,便扎根于重庆这片热土,开始了其在电子行业的探索之旅。当时,电子行业正处于快速发展的阶段,市场竞争激烈。然而,公司凭借对市场的敏锐洞察和对技术的执着追求,成功研发出多款电子元器件,逐渐在市场中站稳脚跟。

DATATRONICS公司的发展小趣事

DATATRONICS公司自成立以来,一直致力于电子技术的研发与创新。某年,公司研发团队成功突破了一项关键技术瓶颈,开发出了一款高效能的数据处理芯片。这款芯片以其卓越的性能和稳定性,迅速获得了市场的认可。DATATRONICS借此机会,进一步扩大了产品线,提高了市场竞争力。

虹冠电子(Champion)公司的发展小趣事

虹冠电子自成立以来,一直将技术创新作为公司发展的核心动力。早期,虹冠电子就投入大量资源研发AC-DC模拟电源IC,成功推出了一系列高效能、低能耗的产品,迅速在市场上建立了良好的口碑。随着技术的不断迭代,虹冠电子在电源管理技术方面取得了显著优势,尤其在电竞电源供应器领域,凭借卓越的性能和稳定性,赢得了众多专业用户和消费者的认可。

问答坊 | AI 解惑

模拟开关的特殊用法

模拟开关的特殊用法 模拟开关在数据采集系统中通常被用作模拟传输器,和A/D转换器配合使用以实现多通道的模拟信号输入;在控制中通常被用作为模拟分离器,和D/A转换器配合使用以实现多通道的模拟信号输出。模拟传输器/分离器是模拟开关的常规 ...…

查看全部问答>

青越锋与 DXP 内幕设计详细渗透(二)

一.添加设置过孔   在DXP 中添加布线过孔(Via)可以直接利用热键TAB,在Layer 中设置不同的走线层即可自动添加过孔,务必在先确定一点并且在不同的层面上,自动添加的过孔会以浮动的形式根据需要确定位置!连接布线的焊盘的移动式和光标 ...…

查看全部问答>

EP9305

谁用过EP9305??多串口如何通讯…

查看全部问答>

PPC2003问题若干

  小弟毕业设计就快完了,搞的是PPC2003软件设计。在开发过程中,现在还留了点问题下来。 一、有没有能够实现将某个文件中所有的EXE文件,文件名及文件路径存入一个表中的操作或是函数; 二、我用的是VS2005自带的仿真上的数据库,没有另外安装 ...…

查看全部问答>

at+cipstart无法用域名的形式访问网络?

我使用sim3000的gprs模块,昨天已经可以用ip地址访问我在花生壳上注册的地址了.然后我尝试用域名的形式访问网络.先 at+cipshut,关闭连接 然后 配置dns服务器 at+cdnscfg=\"202.96.128.56\" 然后设置为域名访问方式at+cdnsorip=1 最后使用域名访 ...…

查看全部问答>

急求:北京 C++/C# 日文项目 (日语能读,英语能写) 月给8K (高分帮顶)

日文项目:C++/C#均可   2年以上开发经验 外语要求:能读懂式样书,读懂日文技术文章。 英文要求:日常email通信 月薪给予:6K~8K,亦可面谈 工作地点:微软 联系方式:dexin.yang@hisoft.com …

查看全部问答>

请教各位达人,急

private void button2_Click(object sender, EventArgs e)         {             IAsyncResult result1;             projec ...…

查看全部问答>

菜鸟提问:如何用应用程序修改WINCE的DEFAULT LANGUAGE

如何用应用程序修改WINCE的DEFAULT LANGUAGE呢? 我写了程序如下:         unsigned short SLANGID = MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED);         wprintf(L\"langid = %d,slangid = ...…

查看全部问答>

冰天雪地×体跪问,驱动程序安装问题(如果问题解决,100分送)

冰天雪地×体跪问,驱动程序安装问题(如果问题解决,100分送) 我的驱动程序开发环境为WINNT4+VC6+NT4DDK+DriverStudio2.5,用DriverStudio2.5生成驱动程序框架,驱动程序开发完编译后,在我的开发机上安装运行,一切正常,但是当我把驱动程序拷 ...…

查看全部问答>

2440中断按键检测

最近在学linux驱动开发,在做中断程序的时候不知道为什么就是进不了中断服务函数,下面贴出源码,希望各位大侠们给点帮助,不胜感激~ //s3c2440_key.c(底层驱动程序) //#include #include #include #include #include //#include # ...…

查看全部问答>