您现在的位置是:主页 > news > 做高效能的父母网站/seo联盟

做高效能的父母网站/seo联盟

admin2025/6/23 21:35:20news

简介做高效能的父母网站,seo联盟,网址你知道我的意思的免费,网上合同该楼层疑似违规已被系统折叠 隐藏此楼查看此楼一个基于51单片机(单片机是普中科技的)的温度报警系统高于30度报警但是蜂鸣器发出不是正常的响声,是闷响 是怎么回事?这是程序求大神指点那里不对#include#include"lcd.h"#include"temp.h&qu…

做高效能的父母网站,seo联盟,网址你知道我的意思的免费,网上合同该楼层疑似违规已被系统折叠 隐藏此楼查看此楼一个基于51单片机(单片机是普中科技的)的温度报警系统高于30度报警但是蜂鸣器发出不是正常的响声,是闷响 是怎么回事?这是程序求大神指点那里不对#include#include"lcd.h"#include"temp.h&qu…

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

一个基于51单片机(单片机是普中科技的)的温度报警系统高于30度报警但是蜂鸣器发出不是正常的响声,是闷响 是怎么回事?这是程序求大神指点那里不对

#include

#include"lcd.h"

#include"temp.h"

uchar CNCHAR[6] = "摄氏度";

void LcdDisplay(int);

void UsartConfiguration();

void Delay(unsigned int i);

sbit BZ=P1^5;

void main()

{

UsartConfiguration();

LcdInit(); //初始化LCD1602

LcdWriteCom(0x88);//写地址 80表示初始地址

LcdWriteData('C');

while(1)

{

LcdDisplay(Ds18b20ReadTemp());

//Delay1ms(1000);//1s钟刷一次}

}

void LcdDisplay(int temp) //lcd显示

{

unsigned char i, datas[] = {0, 0, 0, 0, 0}; //定义数组

float tp;

if(temp< 0)//当温度值为负数

{ LcdWriteCom(0x80+0x48);//写地址 80表示初始地址

SBUF='-';//将接收到的数据放入到发送寄存器

while(!TI); //等待发送数据完成

TI=0; //清除发送完成标志位

LcdWriteData('-'); //显示负//因为读取的温度是实际温度的补码,所以减1,再取反求出原码

temp=temp-1;

temp=~temp;

tp=temp;

temp=tp*0.0625*100+0.5;

//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就//算由?.5,还是在小数点后面。

}

else

{ LcdWriteCom(0x80+0x48);//写地址 80表示初始地址

LcdWriteData('+'); //显示正

SBUF='+';//将接收到的数据放入到发送寄存器

while(!TI); //等待发送数据完成

TI=0; //清除发送完成标志位

tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量//如果温度是正的那么,那么正数的原码就是补码它本身

temp=tp*0.0625*100+0.5;//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就//算加上0.5,还是在小数点后面。

}

datas[0] = temp / 10000;

datas[1] = temp % 10000 / 1000;

datas[2] = temp % 1000 / 100;

datas[3] = temp % 100 / 10;

datas[4] = temp % 10;

LcdWriteCom(0x80+0x4a); //写地址 80表示初始地址

LcdWriteData('0'+datas[0]); //百位

SBUF = '0'+datas[0];//将接收到的数据放入到发送寄存器

while (!TI); //等待发送数据完成

TI = 0;

LcdWriteCom(0x80+0x4b); //写地址 80表示初始地址

LcdWriteData('0'+datas[1]); //十位

SBUF = '0'+datas[1];//将接收到的数据放入到发送寄存器

while (!TI); //等待发送数据完成

TI = 0;

LcdWriteCom(0x80+0x4c);//写地址 80表示初始地址

LcdWriteData('0'+datas[2]); //个位

SBUF = '0'+datas[2];//将接收到的数据放入到发送寄存器

while (!TI); //等待发送数据完成

TI = 0;

LcdWriteCom(0x80+0x4d);//写地址 80表示初始地址

LcdWriteData('.'); //显示 ‘.’

SBUF = '.';//将接收到的数据放入到发送寄存器

while (!TI); //等待发送数据完成TI = 0;

LcdWriteCom(0x80+0x4e); //写地址 80表示初始地址

LcdWriteData('0'+datas[3]); //显示小数点

SBUF = '0'+datas[3];//将接收到的数据放入到发送寄存器

while (!TI); //等待发送数据完成

TI = 0;

LcdWriteCom(0x80+0x4f); //写地址 80表示初始地址

LcdWriteData('0'+datas[4]); //显示小数点

SBUF = '0'+datas[4];//将接收到的数据放入到发送寄存器

while (!TI); //等待发送数据完成

TI = 0;

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

{ SBUF = CNCHAR[i];//将接收到的数据放入到发送寄存器

while (!TI); //等待发送数据完成

TI = 0;

}

if(datas[1]>=3)

{ BZ=1;

Delay(0);

BZ=0;

Delay(0);

}

}

void UsartConfiguration()

{SCON=0X50;//设置为工作方式1

TMOD=0X20;//设置计数器工作方式2

PCON=0X80;//波特率加倍

TH1=0XF3;//计数器初始值设置,注意波特率是4800的

TL1=0XF3;

//ES=1;//打开接收中断

//EA=1;//打开总中断

TR1=1;//打开计数器}

void Delay(unsigned int i)

{char j;

for(i; i > 0; i--)

for(j = 200; j > 0; j--);

}