历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2020年12月19日 | 51单片机基于DS18B20的温度检测并显示在lcd1602上

2020-12-19 来源:51hei

单片机源程序如下:

#include

#include

sbit DQ =P1^3;

sbit RS = P1^5;

sbit RW = P1^6;

sbit EN = P1^7;

void delay(unsigned int i);

void init_DS18B20(void);

unsigned char read_DS18B20(void);

void write_DS18B20(unsigned char dat);

double read_temperature(void);

void init_lcd(void);

void lcd_write_dat(unsigned char dat);

void lcd_write_cmd(unsigned char cmd);

void main(void)

{

        double temp;

        unsigned char i;

        char str[16];

          init_lcd();

          init_DS18B20();

          while(1)

                {

                        temp = read_temperature();

                        if(temp)

                        {

                                sprintf(str,"%f",temp);

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

                                        lcd_write_dat(str[i]);

                                delay(20000);

                                init_lcd();

                        }

                }

}


void delay(unsigned int i)

{

     while(i--);   

}


void init_DS18B20(void)

{

bit flag=1;

while(flag==1)

{

  DQ = 1;   

  DQ = 0;   

  delay(70);

  DQ = 1;   

  delay(10);

  flag=DQ;  

  delay(20);

}

}


unsigned char read_DS18B20(void)

{

unsigned char i = 0, dat = 0;

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

{

  DQ = 0;

  dat>>=1;

  DQ = 1;

  if(DQ)

   dat|=0x80;

  delay(4);

}

return dat;

}

void write_DS18B20(unsigned char dat)

{

unsigned char i=0;

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

{

  DQ = 0;

  DQ = dat&0x01;

  delay(3);

  DQ = 1;

  dat>>=1;

}

delay(5);

}


double read_temperature(void)  

{

unsigned int temp=0;

double d;

init_DS18B20();

write_DS18B20(0xCC);

write_DS18B20(0x44);

init_DS18B20();

write_DS18B20(0xCC);

write_DS18B0(0xBE);

temp=read_DS18B20();   

temp=temp+read_DS18B20()*0x100;   

if(temp<0xf000)   

{

  d=temp*0.0625;

}

else

{

  temp=~temp+1;         

  d=-(temp*0.0625);

}

return  d;

}

void init_lcd(void)

{

        lcd_write_cmd(0x38);

        lcd_write_cmd(0x0f);

        lcd_write_cmd(0x06);

        lcd_write_cmd(0x01);

        delay(100);

}

void lcd_write_dat(unsigned char dat)

{

        P2 = dat;

        RS = 1;

        RW = 0;

        EN = 1;

        delay(100);

        EN = 0;

        delay(5000);

}

void lcd_write_cmd(unsigned char cmd)

{

        P2 = cmd;

        RS = 0;

        RW = 0;

        EN = 1;

        delay(100);

        EN = 0;

        delay(5000);

}


推荐阅读

史海拾趣

Broadcom(博通)公司的发展小趣事

进入21世纪,随着网络泡沫的破灭,博通陷入了严重的财务困境。亏损累计高达65亿美元,股价大幅下跌,公司甚至不得不裁员以维持运营。然而,正是在这样的困境中,博通展现出了坚韧不拔的精神。通过优化产品结构、调整市场策略,博通逐渐走出了低谷,并在2003年推出了全球第一个802.11b单片机,重新赢得了市场的关注。

GeneSiC Semiconductor公司的发展小趣事

1991年,加州大学洛杉矶分校的工程学教授亨利·山缪利和他的博士班学生亨利·尼古拉斯,以各出资5000美元的方式,在美国加州尔湾小镇共同创立了博通公司。初创时期,博通主要致力于开发机顶盒的宽带通信芯片。随着技术的不断进步和市场需求的增长,博通的产品逐渐受到业界的认可,销售额稳步上升。

ABECO公司的发展小趣事

随着全球化进程的加速推进,ABECO开始实施全球化战略。公司积极开拓国际市场,参加各类国际展会和论坛,与全球客户建立联系。同时,公司还加强与国际同行的交流与合作,引进先进的技术和管理经验。通过不断的努力,ABECO逐渐在全球电子行业中树立起了自己的品牌形象,成为了一家具有影响力的跨国公司。


请注意,上述故事是基于已知信息进行的虚构创作,并不代表ABECO公司的真实发展历程。如果您需要更详细和准确的信息,建议直接联系ABECO公司或查阅相关文献资料。

Goodwork Semiconductor ( GW )公司的发展小趣事
根据负载的电压和功率要求选择合适的稳压器。
Future Designs, Inc. (FDI)公司的发展小趣事

在快速发展的同时,FDI也注重可持续发展。他们致力于环境保护和社会责任,积极采用环保材料和节能技术,减少生产过程中的资源消耗和污染排放。同时,FDI还关注员工的发展和福利,为员工提供良好的工作环境和培训机会,激发员工的创造力和创新精神。展望未来,FDI将继续秉承“创新、服务、质量、诚信”的核心理念,不断推动技术进步和产品升级,为电子行业的发展贡献更多的力量。

BVLED公司的发展小趣事

随着市场的不断变化和竞争的加剧,BVLED公司意识到只有不断创新才能在行业中立足。于是,公司加大了对研发的投入,引进了一批高素质的研发人才,并与多家高校和研究机构建立了合作关系。通过不断的实验和改进,公司成功推出了一系列具有创新性的LED产品,如智能调光LED灯、高显色指数LED灯等,这些产品在市场上获得了广泛的认可。

问答坊 | AI 解惑

Microchip扩充率22位Δ-Σ模数转换器阵容

 Microchip扩充率22位Δ-Σ模数转换器阵容新款模数转换器可抑制阻止50或60 Hz线路频率噪音噪声,实现高精度测量 Microchip Technology Inc.(美国微芯科技公司)日前宣布其低功耗率、高分辨率Δ-Σ模数转换器系列又添新成员——新款MCP3550加 ...…

查看全部问答>

朋友 喜欢玩中星9号卫星资料华亚微

朋友 喜欢玩中星9号卫星资料华亚微HTV903,,PCB文件是ASC可以用PROTEL99/POWERPCB导入.…

查看全部问答>

请高手看看这个屏

请高手看看这个屏,请告诉我型号,在下感激不尽…

查看全部问答>

继续中星微301驱动开发

在网上下载了2个版本的中星微linux下的驱动,同样是HV7131b的sensor,两个版本格式却不一样。一个是: static U16 hv7131bxx_start_data[][3] = {     {0xA0, 0x01, 0x0000},     {0xA0, 0x10, 0x0002},     {0xA ...…

查看全部问答>

CE5.0下 2G SD卡不能识别,1G以下正常,为什么?

平台:S3C2440、WINCE5.0 问题现象描述: 1、1G以下的SD卡一切正常。 2、2G的卡插入无法识别到卡的盘符 特别现象描述:    正常插入卡无法识别2G卡,但插入的时候使劲按住卡不放,能正常识别到卡,并能正常读写,为什么?1G以下卡没 ...…

查看全部问答>

招聘Windows Mobile/Win CE应用工程师

由于公司扩展,急需招聘Windows   Mobile/Win   CE应用工程师 有意者发送简历到simonjin@gotoup.cn或直接发送到hr@gotoup.cn 公司简介: 上海向上信息科技有限公司是一家专业从事智能手机研究、开发的高新技术企业。主要 ...…

查看全部问答>

wince 5/6能访问asp的商务网站么?

wince   5/6能访问asp的商务网站么?有可能么? 我想在以下的开发板上跑wince   5或6,做商务网站客户端    通过有线或无线网卡浏览asp的商务网站可行不? 硬件平台: arm   2410 sdram  &nb ...…

查看全部问答>

请教:单片机遇计算机通讯问题

我在计算机上用串口调试助手给80S51发送31个字节的16进制数据,比如:dd 01 ...09。dd是一个标志位后面的30个数据才是单片机所要处理的数据,单片机然后将这30个字节显示在数码管上。但是得到的现象是:所有数码管都显示最后一个字节的数09,单片机 ...…

查看全部问答>

BitBlt的画图问题

各位:   我用一个临时DC来选图片,然后把到放到内存DC指定位置,然后把内存DC的图片拷到显示DC里去。 刚开始的时候显示DC里是一个纯黑的图,BitBlt过去后,彩色图片变成白色了。 后来我把显示DC清空,直接把内存DC的拷到显示DC里去, ...…

查看全部问答>

关于继电器

在proteus和keil中用继电器控制照明灯,keil程序和proteus电路图如下,可是就是看不到效果,请各位大虾指点一下: #include #define uchar unsigned char #define uint unsigned int sbit s1=P1^0; sbit out=P2^4; void delay(uint z) { ...…

查看全部问答>