历史上的今天
今天是: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); }
下一篇:51单片机自动红外洗手器程序
史海拾趣
|
Microchip扩充率22位Δ-Σ模数转换器阵容新款模数转换器可抑制阻止50或60 Hz线路频率噪音噪声,实现高精度测量 Microchip Technology Inc.(美国微芯科技公司)日前宣布其低功耗率、高分辨率Δ-Σ模数转换器系列又添新成员——新款MCP3550加 ...… 查看全部问答> |
|
在网上下载了2个版本的中星微linux下的驱动,同样是HV7131b的sensor,两个版本格式却不一样。一个是: static U16 hv7131bxx_start_data[][3] = { {0xA0, 0x01, 0x0000}, {0xA0, 0x10, 0x0002}, {0xA ...… 查看全部问答> |
|
平台:S3C2440、WINCE5.0 问题现象描述: 1、1G以下的SD卡一切正常。 2、2G的卡插入无法识别到卡的盘符 特别现象描述: 正常插入卡无法识别2G卡,但插入的时候使劲按住卡不放,能正常识别到卡,并能正常读写,为什么?1G以下卡没 ...… 查看全部问答> |
|
由于公司扩展,急需招聘Windows Mobile/Win CE应用工程师 有意者发送简历到simonjin@gotoup.cn或直接发送到hr@gotoup.cn 公司简介: 上海向上信息科技有限公司是一家专业从事智能手机研究、开发的高新技术企业。主要 ...… 查看全部问答> |
|
wince 5/6能访问asp的商务网站么?有可能么? 我想在以下的开发板上跑wince 5或6,做商务网站客户端 通过有线或无线网卡浏览asp的商务网站可行不? 硬件平台: arm 2410 sdram &nb ...… 查看全部问答> |
|
我在计算机上用串口调试助手给80S51发送31个字节的16进制数据,比如:dd 01 ...09。dd是一个标志位后面的30个数据才是单片机所要处理的数据,单片机然后将这30个字节显示在数码管上。但是得到的现象是:所有数码管都显示最后一个字节的数09,单片机 ...… 查看全部问答> |
|
各位: 我用一个临时DC来选图片,然后把到放到内存DC指定位置,然后把内存DC的图片拷到显示DC里去。 刚开始的时候显示DC里是一个纯黑的图,BitBlt过去后,彩色图片变成白色了。 后来我把显示DC清空,直接把内存DC的拷到显示DC里去, ...… 查看全部问答> |




