求一段STC89C52单片机将数值通过串口输出的代码

有个压力传感器,单片机收到数值需要发给一个ASCII通信的显示屏。求一段实现功能的C程序。... 有个压力传感器,单片机收到数值需要发给一个ASCII通信的显示屏。求一段实现功能的C程序。 展开
 我来答
大维
2019-07-31 · 郑州西亚斯学院副教授
大维
郑州西亚斯学院副教授
采纳数:111 获赞数:365
发表论文14篇。编写教材5部。擅长微控制器应用技术和网络技术

向TA提问 私信TA
展开全部
可以利用print函数或者sprint函数
程序如下:
#include "reg52.h" //此头文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;
typedef unsigned char u8;
void UsartInit()
{
SCON=0X50; //0101 000设置串行口控制寄存器sm0,sm1为01,即为工作方式1
TMOD=0X20; //设置计数器
PCON=0X80; //定义PCON寄存器中的SMOD=1,波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的,当然大家可以改
TL1=0XF3;
EA=1; //打开总中断 根据需要
ES=1; //打开中断允许中的串行口中断允许
TR1=1; //打开计数器
TI = 1;//如果使用print函数,TI一定要是1 否则 删掉该句
}
void main()
{
u16 Val;
UsartInit();
while(1)
{ Val = GetSensor();
printf("%d",Val;) //printf中一定要用u16的 不能用u8 这样就直接将数字格式化为ascii
}
}
更多追问追答
追问
最后一段void函数我不是很明白,您能写下注释吗?
追答
你是说主函数吗?
黄庭石锣
2019-07-31 · TA获得超过167个赞
知道小有建树答主
回答量:189
采纳率:36%
帮助的人:30.6万
展开全部
#include<reg51.h>
#define uchar unsigned char
uchar dat;
int dly;
main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x40;
while(1)
{
SBUF=dat/10000+0x30;
while(TI==0);
TI=0;
SBUF=dat%10000/1000+0x30;
while(TI==0);
TI=0;
SBUF=dat%1000/100+0x30;
while(TI==0);
TI=0;
SBUF=dat%100/10+0x30;
while(TI==0);
TI=0;
SBUF=dat%10+0x30;
while(TI==0);
TI=0;
dat++;
SBUF=' ';
while(TI==0);
TI=0;
dly=3000;
while(dly--);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式