摄氏温度转换为华氏温度C语言四舍五入,51单片机DS18B20温度计源码(华氏和摄氏度的转换功能)...

/*作者:王先生

51单片机:清华电子的板

#include

#include

#include

typedef unsigned char uchar;

typedef unsigned int  uint;

sbit DS = P2^2;//DS18B20接口

sbit BP = P2^3;//蜂鸣器

sbit DU = P2^6;//数码管段选码

sbit WE = P2^7;//数码管位选码

sbit key_s1 = P3^0;

sbit key_s2 = P3^1;

sbit key_s3 = P3^2;

sbit EN = P3^4;//LCD使能端

sbit RS = P3^5;//LCD数据命令选择端

sbit RW = P3^6;//LCD读写选择端

uint FF;

uint DD,LL;

uint K=0;

uint M=0;

uint s=0;

void delayus(uchar us)

{

while(us--);//us--要6.5us,进入一次函数11.95us;

} //微秒延时

void LCD_READ_BUSY() //忙不忙

{

uchar busy;

P0 = 0XFF;

RS = 0;

RW = 1;

do

{

EN = 1;

busy = P0;

EN = 0;

}while(busy&0X80);

EN = 1;

}

void LCD_WRITE_CMD(uchar cmd)//写一个字节命令流程

{

LCD_READ_BUSY();//判断忙不忙

RS = 0;

RW = 0;

P0 = cmd;

EN = 1;

EN = 0;

}

void LCD_WRITE_DATE(uchar dat)//写一个字节数据

{

LCD_READ_BUSY();

RS = 1;

RW = 0;

P0 = dat;

EN = 1;

EN = 0;

}

void LCD_OneChar(uchar x, uchar y,uchar dat)//指定位置显示字符

{

if(y)

x |= 0x40;//位选或

x |= 0x80;

LCD_WRITE_CMD(x);

LCD_WRITE_DATE(dat);

}

void LCD_Str(uchar x, uchar y, uchar *str)//指定位置显示字符串

{

if(y)

x |= 0x40;

x |= 0x80;

LCD_WRITE_CMD(x);

while(*str != '\0')

{

LCD_WRITE_DATE(*str++);

}

}

void LCD_Init()         //        初始化

{

LCD_WRITE_CMD(0x38); //        设置16*2显示,5*7点阵,8位数据接口

LCD_WRITE_CMD(0x0c); //开显示

LCD_WRITE_CMD(0x06); //读写一字节后地址指针加1

LCD_WRITE_CMD(0x01); //清除显示

}

bit ds_init()//单总线初始化程序

{

bit  i;

DS = 1;

_nop_();

DS = 0;

delayus(75);//拉低总线;保持480us以上,75*6.5+11.95=499.45ms

DS = 1;//释放总线

delayus(1);//1*6.5+11.95=18.45us等待发回信号(15-60us)

i = DS;

delayus(20);//读取存在信号的时间20*6.5+11.95=141.95us

DS = 1;        //释放总线

_nop_();

return(i);//i=0代表DS18B20已经准备好了

}

void displayN(int c)//温度正常显示

{

uint i;

uchar M1,M2,M3,M4;

uchar TestStr[] = {"Tem:"};

uchar TestStr1[] = {"DB:WYX"};

/*if(c<0)

{m = 2;}

else if(c>=0)

{m = 0;}*/

i = abs(c);

M1 = i/1000;//千位

M2 = i%1000/100;//百

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值