要求:单片机收到 PC 发送过来的数据后,将该数据直接回送给 PC。被特率和晶振已给。
如何用keilc51软件实现PC向单片机发送数据?然后再显示屏幕上?
#include"REG52.H"
void Init(){
PCON |= 0x80;//SMOD=1
SCON=0x50;//方式一,且REN=1
TMOD=0x20;
TH1=-6;
TL1=-6;
TR1=1;
}
void main(){
unsigned char dat;
Init();
while(1){
while(RI==0);
dat=SBUF;
RI=0;
SBUF=dat;
while(TI==0);
TI=0;
}
}
这个需要用串口调试助手的软件,,,详细的找本书下载下随书光盘💿一般第二章就是调试uart串口的,,
推荐金沙滩的51单片机学习指南,清华大学出版社
不知道你这个问题是否已经解决, 如果还没有解决的话:开启数码管对应的LED即可显示不同的数字,该方法和我们开启流水灯代码是基本一致的,思路也相同,具体内容这里不再赘述,详细可看“单片机”分类下的文章:《Proteus电路基础》
打开keil uvision5开始编写代码
有两处新增不同之处,这里做出解释
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define out P0
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};
添加一个delay延迟函数,这里不细说他家自己写就好
循环显示代码详解:
void main(){
uchar i;
while(1){
out=seg[i];
delay(100);
i++;
if(seg[i]==0x01) i=0;
}
}
完整代码
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define out P0
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};
void delay(uint k){
uchar i,j;
while(k--){
for(i=0;i<255;i++);
for(j=0;j<255;j++);
}
}
void main(){
uchar i;
while(1){
out=seg[i];
delay(100);
i++;
if(seg[i]==0x01) i=0;
}
}
回答:
要实现串口通信,您需要按照以下步骤进行操作:
在Keil C51中,打开您的工程,并添加串口通信的库文件。您可以找到keilc51中自带的serial.h和serial.c文件,这是串口通信的库文件。
编写代码,为串口进行初始化,设置波特率和晶振等参数。我们可以使用serial.c文件中的serial_init()函数来创建一个初始化串口的函数。
#include <reg52.h>
#include "serial.h"
void main()
{
serial_init();//初始化串口
while(1);
}
#include <reg52.h>
#include "serial.h"
void main()
{
unsigned char c;
serial_init();//初始化串口
while(1)
{
c = serial_getchar();//等待数据
}
}
#include <reg52.h>
#include "serial.h"
void main()
{
unsigned char c;
serial_init();//初始化串口
while(1)
{
c = serial_getchar();//等待数据
serial_putstring(&c, 1);//发送数据
}
}
以上代码可以实现单片机与PC机之间的串口通信,如果需要在电脑屏幕上看到单片机回送的数据,还需要对serial_putstring()函数进行修改。可以使用PC串口调试器来实时监控单片机的接收数据和发送数据。
注意事项: