关于单片机和串口助手的问题

怎么样能够把单片机中的数据送到串口助手,比如说,单片机要显示的是1、2、3三个数据,怎么样编写程序,才能使串口助手显示出1、2、3呢?请高手们帮帮忙。要求是c语言的...... 怎么样能够把单片机中的数据送到串口助手,比如说,单片机要显示的是1、2、3三个数据,怎么样编写程序,才能使串口助手显示出1、2、3呢?请高手们帮帮忙。要求是c语言的... 展开
 我来答
甘陵至尊
2009-06-13 · TA获得超过383个赞
知道小有建树答主
回答量:290
采纳率:100%
帮助的人:245万
展开全部
给你一个程序,不过是单片机这边显示的是发送的键值,可以根据你的要求自己更改一下程序即可
#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

uchar code LEDData[ ] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E };
uchar temp,buf;

uchar data disbuf[]={0x00,0x00};

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

延时子程序

**********************************************************/
void delayms(uint ms)

{
uchar k;
while(ms--)
{
for(k = 0; k < 120; k++);
}
}

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

发送数据函数

*********************************************************/
void senddata(uchar dat)
{
SBUF =dat;
while(!TI);
TI = 0;
}

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

串行中断服务函数

*********************************************************/
void serial() interrupt 4
{
ES = 0; //关闭串行中断
RI = 0; //清除串行接受标志位
buf = SBUF; //从串口缓冲区取得数据

switch(buf)
{
case 0x31: senddata('H');break; //接受到1,发送字符'H'给计算机
case 0x32: senddata('E');break; //接受到2,发送字符'E'给计算机
case 0x33: senddata('N');break; //接受到3,发送字符'N'给计算机
case 0x34: senddata('G');break; //接受到4,发送字符'G'给计算机
case 0x35: senddata('J');break; //接受到5,发送字符'J'给计算机
case 0x36: senddata('L');break; //接受到6,发送字符'L'给计算机
default: senddata(buf);break; //接受到其它数据,将其发送给计算机
}

if(buf!=0x0D)
{
if(buf!=0x0A)
temp =buf;
}

ES = 1; //允许串口中断
}

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

数据显示函数

*********************************************************/
void play()
{
disbuf[0]=temp & 0x0f;
P0=LEDData[disbuf[0]];
P2 = 0x7f;
delayms(1);
disbuf[1]=(temp & 0xf0)>>4;
P0=LEDData[disbuf[1]];
P2 = 0xbf;
delayms(1);
P2=0xff;
}
/*********************************************************

主函数

*********************************************************/
void main(void)
{
P0 = 0xff;
P2 = 0xff;

SCON=0x50; //设定串口工作方式
PCON=0x00; //波特率不倍增

TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
EA=1;
ES = 1; //允许串口中断
TL1=0xfd;
TH1=0xfd; //波特率9600
TR1=1;

while(1) //等待串行中断
{
play(); //数码管显示
}
}

/*********************************************************/
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
百度网友4b9ef210d
2009-06-13 · TA获得超过334个赞
知道答主
回答量:865
采纳率:0%
帮助的人:263万
展开全部
把单片机和电脑的串口线连接,然后编程序,让单片机向串口发送数据。如果没出错的话,电脑的串口就能收到数据了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摘一把青梅煮酒
2009-06-13 · TA获得超过1805个赞
知道小有建树答主
回答量:767
采纳率:0%
帮助的人:631万
展开全部
#include"main.h"
/*串口调试助手发送asc代码 o 时,
单片机返回数组Buffer[10]
*/
char a;
//-------------------------------------------------------------
void serial_int(void) interrupt 4
{
if(_testbit_(RI))
{
if(SBUF == 'o')
{
SBUF = Buffer[0];
a = 0;
}
}
if(_testbit_(TI))
{
if(asd < 10)
SBUF = Buffer[++a];
}
return;
}
//-------------------------------------------------------------
void main(void)
{
Reset();
while(1)
{
;
}
//-------------------------------------------------------------
void Reset(void)
{
RCAP2H = 0xFF; /*晶振12M 波特率 9600*/
RCAP2L = 0xd9;

T2CON = 0x34;
EA = 1;
ES = 1;
SCON = 0x50;
return;
}
//-------------------------------------------------------------
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式