历史上的今天
返回首页

历史上的今天

今天是:2025年01月30日(星期四)

2018年01月30日 | MSP430与DS18B20驱动程序

2018-01-30 来源:eefocus

**文   件   名: ds18b20.c  
**描        述: 利用但总线DS18B20测温程序,并在LCD显示,取三位有效小数位。整数部分两位。共5位显示 

 

#include  
#define SEGE 0X80 
#define SEGH 0X40 
#define SEGF 0X20 
#define SEGC 0X10 
#define SEGG 0X08 
#define SEGD 0X04 
#define SEGB 0X02 
#define SEGA 0X01 
const unsigned char digit[10] = 

    SEGA|SEGB|SEGC|SEGD|SEGE|SEGF,  /* "0" LCD segments a+b+c+d+e+f */ 
    0x12,  /* "1" */ 
    0x8F,  /* "2" */ 
    0x1F,  /* "3" */ 
    0x3A,  /* "4" */ 
    0x3D,  /* "5" */ 
    0xBD,  /* "6" */ 
    0x13,  /* "7" */ 
    0xBF,  /* "8" */ 
    0x3F   /* "9" */ 

}; 


#define DQ1 P4OUT|=BIT4 
#define DQ0 P4OUT&=~BIT4 

float   Temper=0.0; 
int     temperature=0; 
unsigned char Error = 0; 
//---------------------------------- 
//功能:us 级别延时 
// n=10,则延时10*5+6=56uS 
//---------------------------------- 
void DelayNus(unsigned int n) 

    while(n--){}; 

//----------------------------------- 
//功能:写18B20 
//----------------------------------- 
void Write_18B20(unsigned char n) 

    unsigned char i; 
    for(i=0;i<8;i++) 
    { 
        DQ0; 
        DelayNus(1);//延时13us 左右 
        if((n&0X01)==0X01) 
            DQ1; 
        else 
            DQ0; 
         
        n=n>>1; 
        DelayNus(9);//延时50us 以上 
        DQ1; 
    } 

//------------------------------------ 
//功能:读取18B20 
//------------------------------------ 
unsigned char Read_18B20(void) 

    unsigned char i; 
    unsigned char temp; 
    for(i=0;i<8;i++) 
    { 
        temp=temp>>1; 
        DQ0; 
        _NOP();//延时1us 
        DQ1; 
        _NOP();_NOP();//延时5us 
        _NOP();_NOP();_NOP(); 
        P4DIR&=~BIT4; 
         
        if((P4IN&BIT4)==0) 
        { 
            temp=temp&0x7F; 
        } 
        else 
        { 
            temp=temp|0x80; 
        } 
         
        DelayNus(7);//延时40us 
        P4DIR|=BIT4; 
        DQ1; 
    } 
     
    return    temp; 

//----------------------------------- 
void Init (void) 

    DQ0; 
    DelayNus(50);//延时500us 
    DQ1; 
    DelayNus(17);//延时90us 
    P4DIR&=~BIT4; 
     
    if((P4IN&BIT4)==BIT4)        //0001 1111b=1f 
    { 
        Error =1;    //失败1 
        P4DIR|=BIT4; 
    } 
    else 
    { 
        Error = 0;//初始化成功 
        P4DIR|=BIT4; 
        DQ1; 
    } 

//---------------------------------- 
void Skip(void) 

    Write_18B20(0xCC); 

//---------------------------------- 
void Convert (void) 

    Write_18B20(0x44); 


//---------------------------------- 
void ReadDo (void) 

    Write_18B20(0xbe); 

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

void ReadTemp (void) 

    char low,high; //温度值 
    low=Read_18B20(); //读低位 
    high=Read_18B20(); //读高位 
    temperature=(high&0x0f); 
    temperature<<=8; 
    temperature|=low; 
    Temper=temperature*0.0625; 


void GetTemp(void) 

    Init(); 
    Skip(); 
    Convert(); 
    DelayNus(60000); 
    DelayNus(60000); 
    DelayNus(60000);//延时1s以上 
    Init(); 
    Skip(); 
    ReadDo(); 
    ReadTemp(); 


void InitLcd(void) 

    LCDCTL = LCDON + LCD4MUX + LCDSG0_1;      // LCD on, 4-Mux, segments S0-S15 
    BTCTL = BT_fLCD_DIV128;                   // LCD cLOCk freq is ACLK/128 
    P5SEL = 0xFC;                             // Select P5.2-7 as Com and Rxx 


void display_number(unsigned long value, int start, int width) 

    int i; 
    for (i = 0;  i < width;  i++) 
    { 
        LCDMEM[7 + i - start] = digit[value%10]; // remainder = character in table to display 
        value /= 10; 
    } 


void Lcd_Clr(void) 

    volatile unsigned char i; 
    for (i=0; i<7; i++) 
    { 
        LCDMEM = 0; 
    } 


void main(void) 

    WDTCTL = WDTPW + WDTHOLD; // 停狗 
    P4DIR |=BIT4; 
    DQ1; 
    InitLcd(); 
    Lcd_Clr(); 

    while(1) 
    { 
        GetTemp(); 
        display_number((unsigned long int)(Temper*1000),7,5); 
        LCDMEM[3] |= SEGH; 
    } 


推荐阅读

史海拾趣

Hirose公司的发展小趣事

对于单级PFC电路,网友可能还会有多种问题,以下是一些常见问题及其回答:

一、技术原理与特性

  1. 单级PFC电路的基本工作原理是什么?
    • 回答:单级PFC电路通过共用一个开关管和一套PWM控制电路,同时实现功率因数校正(PFC)和对输出电压的调节。它通常由升压型PFC级和DC-DC变换器组合而成,两部分电路共用一个开关,通过控制开关的通断,电路同时完成对AC输入电流的整形和对输出电压的调节。
  2. 单级PFC电路相比两级PFC电路有哪些优缺点?
    • 回答:优点包括电路结构简单、成本较低、效率较高(在某些设计下)。缺点则在于PFC和对输入电流谐波抑制的效果可能不如两级PFC电路,且在某些应用中可能面临安规问题。

二、设计与应用

  1. 如何设计单级PFC电路以满足特定的功率因数要求?
    • 回答:设计单级PFC电路以满足特定功率因数要求时,需要考虑电感的选择、开关管的选型、控制电路的设计以及反馈机制等因素。通过精确控制开关管的通断时间和占空比,可以实现对输入电流的整形,从而改善功率因数。此外,还可以采用有源钳位和软开关技术来进一步提高效率并降低开关损耗。
  2. 单级PFC电路在哪些应用场景中较为常见?
    • 回答:单级PFC电路因其结构简单、成本较低而广泛应用于各种需要功率因数校正的电子设备中,如LED驱动电源、电源适配器、开关电源等。特别是在对成本有一定要求的场合,单级PFC电路更具竞争力。

三、故障与调试

  1. 单级PFC电路在调试过程中可能会遇到哪些常见问题?
    • 回答:在调试单级PFC电路时,可能会遇到次级去电流检测电阻过大、光耦供电电阻过大、比较器电流反馈电容过大等问题。这些问题可能导致PFC电路无法正常工作或性能下降。解决方法包括调整相关电阻和电容的数值、检查电路连接是否正确、更换损坏的元件等。
  2. 如何诊断和解决单级PFC电路中的故障?
    • 回答:诊断和解决单级PFC电路中的故障时,首先需要检查电路中的保险丝是否熔断、MOS管是否损坏或过热、反馈控制元件是否失效以及负载是否存在故障等。通过逐一排查这些可能的问题点,可以定位故障原因并采取相应的修复措施。在检修过程中,需要注意安全操作规范,避免触碰高压部位并断开电源。

四、性能优化

  1. 如何优化单级PFC电路的性能?
    • 回答:优化单级PFC电路的性能可以从多个方面入手,包括优化电感的设计以减小损耗、选择合适的开关管和二极管以降低导通压降和反向恢复时间、改进控制算法以提高控制精度和响应速度等。此外,还可以采用有源钳位和软开关技术来进一步降低开关损耗并提高整体效率。
  2. 单级PFC电路的效率如何提升?
    • 回答:提升单级PFC电路的效率可以通过多种方法实现,包括优化电路拓扑结构、选用高效率的开关管和二极管、降低电路中的寄生参数和损耗、采用先进的控制算法等。此外,合理设计散热系统以确保开关管和其他关键元件在正常工作温度下运行也是提高效率的重要手段之一。
DREMEL公司的发展小趣事

随着全球化的趋势日益明显,Dremio公司开始积极拓展国际市场。他们制定了详细的国际化战略,包括在海外市场设立分支机构、与当地企业建立合作关系、参加国际展会等。这些举措不仅提高了Dremio公司在国际市场的知名度,也为其带来了更多的商业机会。通过国际化战略的实施,Dremio公司的业务规模不断扩大,品牌影响力也日益增强。

请注意,以上故事均基于虚构,旨在展示一个类似Dremio公司在电子行业中的可能发展路径和故事。如有需要,请进一步核实相关事实和数据。

Emulation Technology Inc公司的发展小趣事

面对电子行业的快速发展和市场的不断变化,Emulation始终保持着对技术的持续创新。公司不断投入研发资源,推出了一系列具有领先性能的模拟和仿真产品,满足了客户对于高精度、高效率仿真工具的需求。这些产品不仅提高了工程师们的设计效率,还促进了整个电子行业的发展。

Crystalfontz America Inc公司的发展小趣事

随着产品技术的不断提升,Crystalfontz America Inc公司开始积极拓展市场。公司通过与各大电子设备制造商建立合作伙伴关系,将产品应用于嵌入式系统、机架式服务器、仪器集群等领域。同时,公司还积极参加各类行业展会和技术交流活动,提升品牌知名度,吸引更多潜在客户。这些举措有效推动了公司市场份额的扩大和业务的快速增长。

Bomar Interconnect公司的发展小趣事

在供应链管理方面,Bomar Interconnect公司也进行了一系列优化措施。公司与供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量可控。同时,公司还加强了对供应链的监控和管理,通过信息化手段提高了供应链的透明度和效率。这些努力不仅降低了公司的采购成本,也提高了供应链的响应速度和灵活性。

Fairchild (ON Semiconductor)公司的发展小趣事

1957年,被誉为“八叛逆”的八位年轻科学家在罗伯特·诺伊斯的带领下,离开了肖克利半导体实验室,创立了Fairchild Semiconductor公司。这八位科学家,包括诺伊斯、戈登·摩尔等人,后来都成为了硅谷科技产业的领军人物。Fairchild的成立不仅为硅谷的发展奠定了坚实的基础,更为电子行业培养了大量的人才,被誉为“人才摇篮”。

问答坊 | AI 解惑

车载监控视频传输系统解决方案(急)

需求:       设置一台全方位云台摄像机,带红外(80米以上),语音视频解码传输设备       车载UPS电源(汽车发电机70A),不考虑市电接入根据以上信息,在7月10号上午12点以前,利用现有平台或重新组建 ...…

查看全部问答>

【藏书阁】电磁场问题的有限元解法

目录: 详细信息: 书籍作者:美:M.V.K.查利      出版社:科学出版社 图书类别:理科、工程技术    出版时间:1985-03 印刷时间:1985-03-01 开本:32开    页数:257 页…

查看全部问答>

压缩图像无线传输的信源信道联合编码研究

本帖最后由 paulhyde 于 2014-9-15 09:28 编辑 近年 来 , 随着计算机、通信以及网络等关键技术的迅速发展,人们对多媒体通信的需求也与日俱增,图像(视频)通信作为多媒体通信中的一个基本组成部分,得到了广泛的重视。在许多实际的通信系统中,基 ...…

查看全部问答>

quartus 仿真时间不能设,怎么解决?

各位大侠,我在仿真时,仿真时间仅能仿真1微秒,在属性设置里改不了,有什么办法解决一下吗?谢谢…

查看全部问答>

FX2N三菱PLC缓冲寄存器BFM的应用

FROM指令和TO指令来执行PLC基本单元与模拟量输入/输出模块之间的数据通信 实际上读写操作都是对模拟量输入或输出模块中的缓冲器BFM进行的。下面以FX2N-4AD-TC模块为例,其缓冲寄存器BFM分配见表17-4。 #30为识别码,FX2N-4AD-TC模块的识别码为K20 ...…

查看全部问答>

请问现在市面上买的万利199板子都是已经升级完成的了么?

                                 如果升级完成,那就可以直接搞一个,不用再看代理商脸色了...有人清楚么?…

查看全部问答>

电子专业的学生毕业后干嘛

  如果从工程师和研究生的专业方向来看,电子信息专业的方向大概有1)数字电子线路方向。从事单片机(8位的8051系列、32位的ARM系列等等)、FPGA(CPLD)、数字逻辑电路、微机接口(串口、并口、USB、PCI)的开发,更高的要求会写驱动程序、会 ...…

查看全部问答>

FPGA的功耗和额定电流

最近在做FPGA的项目,经常有人问我,FPGA的功耗多大,额定电流多少。我在datasheet上没有看到啊。 FPGA的电压不是很多种么,请问有知道的朋友么…

查看全部问答>

晒WEBENCH设计的过程+锂电 LED

设计目标,12V锂电池供电(11.1-12.6V之间波动),获得稳定高亮白光LED 初步确定目标之后选择LED型号,综合考虑颜色、功率、体积之后选择Xlamp XM-L这一款 考虑效率、体积、工作温度等因素,选取了第三款驱动电路 基本概况如下,效率可达79% ...…

查看全部问答>