单片机 > 单片机程序设计 > 详情

51单片机5110液晶显示屏实现时间温度串口发送

发布时间:2021-09-27 发布时间:
|

制作出来的实物图如下:


仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

单片机源程序如下:

/**

P2.7置低电平时,开机接入串口,自动进入时间设置界面

每秒钟自动检测温度一次,并在LCD上显示

每分钟自动刷新日期、时间、温度,在LCD上显示,并在串口中输出(方便电脑读取)


*/



#include

//#include

#include

#include"ds1302.h"

#include"temp.h"

#include



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

#define delay_time 25767


sbit SETTIME = P2^7; //为0时,开机进入设置时间界面

uchar TIME[7];

char word2[10];


//毫秒级延时函数

void delay(unsigned int x)

{

unsigned char i;

while(x--)

{

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

}

}


char* tempDisplay(int temp) //lcd显示

{

unsigned char datas[5]; //定义数组

float tp;

unsigned char ReturnTemp[9],x;

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

{


ReturnTemp[0]='-';

//因为读取的温度是实际温度的补码,所以减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); //写地址 80表示初始地址

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

ReturnTemp[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(0x82); //写地址 80表示初始地址

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

// ReturnTemp[1]=datas[0]+48;

if(datas[0]!=0)

{

ReturnTemp[1]=48+datas[0];

x=1;

} else {

x=0;

}

//putchar(ReturnTemp[1]);

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

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

if(( datas[1])!=0)

{

ReturnTemp[1+x]=datas[1]+48;

x=x+1;

} else {

if(x!=0)

{

ReturnTemp[1+x]='0';

x=x+1;

}

}


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

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

ReturnTemp[1+x]='0'+datas[2];

// putchar(ReturnTemp[1+x]);

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

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

ReturnTemp[2+x]='.';


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

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

ReturnTemp[3+x]=48+datas[3];

// putchar(ReturnTemp[3+x]);

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

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

ReturnTemp[4+x]=datas[4]+48;

ReturnTemp[5+x]='C';

ReturnTemp[6+x]='


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二