最新【51单片机】温度传感器DS18B20程序 LCD1602显示.doc
《最新【51单片机】温度传感器DS18B20程序 LCD1602显示.doc》由会员分享,可在线阅读,更多相关《最新【51单片机】温度传感器DS18B20程序 LCD1602显示.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品资料【51单片机】温度传感器DS18B20程序 LCD1602显示.仿真截图:/仿真文件网盘地址:/程序:#include#include #define uchar unsigned char #define uint unsigned intsbit P00 = P00;sbit P01 = P01;sbit P02 = P02;sbit P03 = P03;sbit P04 = P04;sbit P05 = P05;sbit P06 = P06;sbit P07 = P07;sbit P10 = P10;sbit P11 = P11;sbit P12 = P12;sbit P13 =
2、 P13;sbit P14 = P14;sbit P15 = P15;sbit P16 = P16;sbit P17 = P17;sbit P20 = P20;sbit P21 = P21;sbit P22 = P22;sbit P23 = P23;sbit P24 = P24;sbit P25 = P25;sbit P26 = P26;sbit P27 = P27;sbit P30 = P30;sbit P31 = P31;sbit P32 = P32;sbit P33 = P33;sbit P34 = P34;sbit P35 = P35;sbit P36 = P36;sbit P37 =
3、 P37;/* DS18B20 *#define DQ P17/*精确延时函数*/void delay10us(void) /误差 0us unsigned char a,b; for(b=1;b0;b-) for(a=2;a0;a-);void delay20us(void) /误差 0us unsigned char a,b; for(b=1;b0;b-) for(a=7;a0;a-);void delay30us() /误差 0us unsigned char a,b; for(b=3;b0;b-) for(a=3;a0;a-);void delay100us() /误差 0us uns
4、igned char a,b; for(b=1;b0;b-) for(a=47;a0;a-);void delay200us(void) /误差 0us unsigned char a,b; for(b=1;b0;b-) for(a=97;a0;a-);void delay500us() /误差 0us unsigned char a,b; for(b=71;b0;b-) for(a=2;a0;a-);void DS18B20_init() /DS18B20初始化 复位DQ = 1;_nop_();_nop_();_nop_();_nop_();/延时几个时钟周期 保证DQ引脚稳定在高电平DQ
5、 = 0;delay500us();/最短为480us的低电平信号 复位DQ = 1; /拉高总线 15-60us delay30us();delay200us();/延时足够时间 复位基本上都会成功 因此不必再判断是否复位成功DQ = 1;/释放总线uchar Read_One_Byte()uchar i;uchar byte = 0;for(i = 0;i = 1;delay20us();DQ = 1;/给脉冲 产生读时间间隙delay10us();/延时一定时间后,读DQ的值if(DQ) byte |= 0x80;/读得DQ为1 将1写到dat最高位 ;读得DQ为0 不必处理delay1
6、00us();DQ = 1;return(byte);void Write_One_Byte(uchar byte)uchar i = 0;for(i = 0;i = 1; int Read_Temp() /*读取温度值*/ 每次读写均要先复位 int t;float tep;uchar a,b;DS18B20_init();Write_One_Byte(0xcc);/跳过ROM命令 单个传感器所以不必读取ROM里的序列号Write_One_Byte(0x44);/开始转换DS18B20_init();Write_One_Byte(0xcc);/跳过ROM命令Write_One_Byte(0x
7、be);/读寄存器,共九字节,前两字节为转换值a = Read_One_Byte(); /a存低字节b = Read_One_Byte(); /b存高字节t = b;t 0;c-) for(b=142;b0;b-) for(a=2;a0;a-);/*/*字符串复制函数*void string_copy(uchar *target,uchar *source)/字符串复制 target:目标 source:源uchar i = 0;for(i = 0;sourcei != 0;i+)/注意target的长度 无保护措施!targeti = sourcei;targeti = 0;/*字符串比较函
8、数*uchar string_cmp(uchar *target,uchar *source)/字符串比较 target:目标 source:源uchar revalue;uchar i = 0;for(i = 0;targeti != 0 & sourcei != 0;i+) /两个都不等于0才执行 出现一个等于0就跳出if(targeti = sourcei)revalue = 1;elserevalue = 0;break;if(revalue = 1)if(targeti = 0 & sourcei = 0)revalue = 1;elserevalue = 0;return(reva
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51单片机 最新【51单片机】温度传感器DS18B20程序 LCD1602显示 最新 51 单片机 温度传感器 DS18B20 程序 LCD1602 显示
限制150内