关于单片机和串口助手的问题
发布网友
发布时间:2022-05-10 23:09
我来回答
共3个回答
热心网友
时间:2023-11-12 02:28
给你一个程序,不过是单片机这边显示的是发送的键值,可以根据你的要求自己更改一下程序即可
#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-11-12 02:29
把单片机和电脑的串口线连接,然后编程序,让单片机向串口发送数据。如果没出错的话,电脑的串口就能收到数据了。
热心网友
时间:2023-11-12 02:29
#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;
}
//-------------------------------------------------------------