200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 单片机 c语言百位加上小数点 51单片机水温控制LCD显示加VB上位机温度曲线绘制...

单片机 c语言百位加上小数点 51单片机水温控制LCD显示加VB上位机温度曲线绘制...

时间:2020-01-04 03:24:33

相关推荐

单片机 c语言百位加上小数点 51单片机水温控制LCD显示加VB上位机温度曲线绘制...

现功能,1L水由1KW电炉加热,要求水温在一定范围内人工设定,并能随着环境温度改变自动调节,以维持设定的温度不变。

矩阵键盘输入设定温度,LCD1602显示温度值,VB上位机绘制温度曲线

/*******************************************************************************

* 实验名 :温度显示实验

* 使用的IO:

* 实验效果 :1602显示温度

* 注意:

*******************************************************************************/

#include

#include "uart.h"

#include"lcd.h"

#include "juzhen.h"

#include"temp.h"

void LcdDisplay(int);

void show_zi();

/*******************************************************************************

* 函数名 : main

* 函数功能 : 主函数

* 输入: 无

* 输出 : 无

*******************************************************************************/

extern int key_value;

void main()

{

UsartConfiguration();

LcdInit(); //初始化LCD

show_zi();

while(1)

{

LcdDisplay(Ds18b20ReadTemp());

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

key_touch();

LcdDisplay_input();

compare_temp();

}

}

/*******************************************************************************

* 函数名 : LcdDisplay()

* 函数功能 : LCD显示读取到的温度

* 输入: v

* 输出 : 无

*******************************************************************************/

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

void LcdDisplay(int temp)//lcd显示

{

float tp;

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

// {

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

// 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的就

// //算加上0.5,还是在小数点后面。

//

// }

// else

//{

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

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

tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量

//如果温度是正的那么,那么正数的原码就是补码它本身

temp=tp*0.0625*100+0.5;

//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点

//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就

//算加上0.5,还是在小数点后面。

//}

dates[0] = temp / 10000;

dates[1] = temp % 10000 / 1000;

dates[2] = temp % 1000 / 100;

dates[3] = temp % 100 / 10;

dates[4] = temp % 10;

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

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

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

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

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

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

TI = 0;

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

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

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

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

TI = 0;

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

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

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

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

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

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

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

LcdWriteData('C');

}

void show_zi()

{

char temp[6]={"Temp:"};

char temp2[6]={"Hope:"};

int i;

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

{

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

LcdWriteData(temp[i]);

}

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

{

LcdWriteCom(0xC0+i); //写地址 80表示初始地址

LcdWriteData(temp2[i]);

}

}

关键字:

51单片机

水温控制

LCD显示

温度曲线

编辑:什么鱼 引用地址:

/mcu/ic510475.html

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。