c语言 符号自动换行,单片机串口发送字符为什么会自动换行?

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

* 实验名                           :温度显示实验

* 使用的IO             :

* 实验效果       :1602显示温度

*        注意                                         :

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

#include

#include"lcd.h"

#include"temp.h"

uchar CNCHAR[20] = "Temp:";

void LcdDisplay(int);

void UsartConfiguration();

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

* 函数名         : main

* 函数功能                   : 主函数

* 输入           : 无

* 输出                  : 无

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

void main()

{

UsartConfiguration();

LcdInit();                         //初始化LCD1602

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

LcdWriteData('C');

while(1)

{

LcdDisplay(Ds18b20ReadTemp());

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

}

}

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

* 函数名         : LcdDisplay()

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

* 输入           : v

* 输出                  : 无

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

void LcdDisplay(int temp)          //lcd显示

{

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

float tp;

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

{

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

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

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

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

TI = 0;

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

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

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

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

TI = 0;

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

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

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

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

TI = 0;

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

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

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

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

TI = 0;

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

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

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

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

TI = 0;

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

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

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

SBUF=0X0A; //换行

SBUF=0X0D;

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

TI = 0;

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

{

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

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

TI = 0;

}

}

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

* 函 数 名         :UsartConfiguration()

* 函数功能                   :设置串口

* 输    入         : 无

* 输    出         : 无

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

void UsartConfiguration()

{

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

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

PCON=0X00;

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

TL1=0XFD;

TR1=1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值