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;
}
c语言 符号自动换行,单片机串口发送字符为什么会自动换行?相关推荐
- STM32串口的使用(原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯)
参考:串口的结构体 重定向printf串口发送stm32等博文 作者:点灯小哥 发布时间: 2021-03-06 21:46:33 网址:https://blog.csdn.net/weixin_46 ...
- 51单片机串口发送汉字显示乱码问题
前一段时间做蓝牙通信,单片机串口发送汉字总显示乱码,代码如下: //发送一个字节 void SendByte(unsigned char dat) { SBUF = dat; while(!TI); ...
- 51单片机 串口发送数据(只是发送)
51单片机 串口发送数据(只是发送)用于调试. #include <reg51.h>#define uchar unsigned char #define uint unsigned in ...
- 单片机串口发送数据很慢?这种方法帮助你提高!
大家好,我是张巧龙,本文介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法:之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,提高系统的响应 ...
- STM32单片机串口发送ASCII码
例如单片机向串口发送ASCII码$01,play只需要发送其对应的十六进制数,如下: $对应0x24 0对应0x30 1对应0x31 ,对应0x2C P对应0x70 l对应0x6C a对应0x61 y ...
- STM8单片机串口发送引脚和接收引脚分开使用
在使用STM8S003单片机时,需要用到ADC采样功能,STM8S003总共有5个ADC采样口,但是其中两个采样口是和串口复用的,如果当ADC口用,就不能用串口,如果当串口用,就不能用ADC口. 通过 ...
- 单片机原理与应用实验——串口(C语言),使用串口发送或接收数据,定时器1作为波特率发生器
(基于51核的STC12C5A60S2,keil uvision5 mdk 5.25 编译) 1. 定时发送1字节数据给电脑,波特率9600 #include <STC12C5A60S2.h&g ...
- 51单片机串行口c语言编程,51单片机串口通信c语言编程
这只是个模板,参考一下 /*----------------------------------------------- 名称:串口通信 网站:www.doflye.net 编写:shifang 日 ...
- 51单片机串口发送多个16进制数据
串口发收数据 发送主要逻辑 接收主要逻辑 计算波特率 完整代码 避坑指南 发送主要逻辑 一:声明一个你要发送的字符串列表 unsigned char code table[]={0x7E,0x03,0 ...
最新文章
- 硬件重要还是软件重要?一个人能同时学会吗?
- SRE工程师到底是做什么的?
- 什么是伪静态?SEO中如何理解伪静态?
- 成功解决 利用plt.plot绘图时,横坐标出现浮点小数而不是整数的情况(坐标轴刻度)
- 有关于近期大量数据库暴光的分析
- 一二三系列之CodeChef分块——Chef and Churu,Chef and Problems,Children Trips
- ddos攻击工具_简单有效的ddos攻击防御方法
- git21天打卡day15-添加提交修改文件
- Appium+Python之PO模型(Page object Model)
- 【C++】指针遍历二维数组若干种方法小结
- mysql5.7 主从
- 迅为IMX8M mini开发板Yocto系统交叉编译C程序
- 先爆火再遇冷 元宇宙能否托起梦想?
- SREng 使用指南(一)SREng简介
- 台式计算机m4350,高配商用台式 联想启天M4350跌破五千
- Maven系列第三讲 详解Maven解决依赖问题
- 对QQGame-大家来找茬的辅助工具的改进
- Android SDK是什么?
- 全闪存存储、混合闪存存储
- 使用 Vscode +PlantUml 画uml图