C语言如何处理51串口接收数据?

C语言如何处理51串口接收数据?,第1张

1、51单片机串行口是独立的硬件,对其设置完之后,它就独立工作了。如果REN=1,它会自动检测RXD,当它收齐了一帧数据,就自动将数据放到(接收)SBUF,然后在RI置一。 CPU的中断系统,如果已经开放了串口中断,CPU就会自动转到0023H去执行程序

2、例程:

#include <AT89X51H>//单片机51头文件,存放着单片机的寄存器
unsigned char dat;        //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
sbit gewei=P2^2;          //个位选通定义
sbit shiwei=P2^3;         //十位选通定义
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71};
//{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,};// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
void Delay(unsigned int tc)     //延时程序
{
while( tc != 0 )
   {unsigned int i;
    for(i=0; i<100; i++);
    tc--;}
}
void LED()    //LED显示接收到的数据
{  
   shiwei=0; 
   P0=~table[dat/16]; 
   Delay(8); 
   shiwei=1;
   gewei=0;  
   P0=~table[dat%16]; 
   Delay(5); 
   gewei=1;
}
void Init_Com(void)//功能:串口初始化,波特率9600,方式1
{
     TMOD = 0x20;
     PCON = 0x00;
     SCON = 0x50;
     TH1 = 0xFd;
     TL1 = 0xFd;
     TR1 = 1;
}
void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////
{
  Init_Com();//串口初始化
//  P1=0xf0;
  while(1)
   {
       if ( RI )      //扫描判断是否接收到数据,
       {
            dat = SBUF;//接收数据SBUF赋与dat
     RI=0;           //RI清零。
            SBUF = dat;//在原样把数据发送回去
}
LED();  //显示接收到的数据
   }
}

程序就不写了 学程序不应该做伸手党 只有自己写才有深刻的记忆 并且能养成自己的思维方式
:首先确定一下51的串口工作方式 进入串口工作方式寄存器设置 然后根据波特率设置一下定时器
写一个串口中断程序 设定一个标志位(标志位改变表明收到数据)记得初始化各项总中断 串口中断 定时器中断 还有TH0 TL0初值什么的 TX接语音识别模块RX RX接语音识别模块TX GND共同接地(数地) 你应该大概懂了吧 不懂欢迎追问

void serial () interrupt 4 using 3
{
if(RI)
{
unsigned char ch;
ch=SBUF;0
if(ch==0xaa)// 这里加一条不知可不可以
{
Receive_data_buffer[z]=ch;
RI = 0;
z++;
send_char_com(ch);
if(z==7)
{
z=0;
}
}
}
}

//串口接收一帧数据放在数组中
void Com_Int(void) interrupt 4
{
EA = 0;
for(i = 0; i < 12; i++) --发生一次中断,你在这里,接收了十二次?
{
table[i] = SBUF;
}
RI = 0;
flag = 1;
EA = 1;
}
每发生一次中断,串行口,仅仅有一个字节的新数据,你却接收了十二次?

答:
1 判断你的硬件有没有问题;方法是 用跳线讲串口的pin2 和pin3短接,用串口调试助手发送数据看调试助手能不 能自己收到,能就说明是单片机程序有问题
2 你检查你的波特率是生成程序是否正确, 中断和主程序用 1楼给你程序,我看了 没问题。
这样就可以实现串口通信了

可惜我不能贴图
12864去电子城买时找专做显示屏的柜台买。
只要是专业生产LCD的公司,都会配有c语言的驱动程序(通常是51的程序),还有电子档LCD说明书
买来稍微修改就可以用啦


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13181856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-17
下一篇 2023-06-17

发表评论

登录后才能评论

评论列表(0条)

保存