C51单片机从串口接收数据多个字节的数据的C语言程序,谢谢

C51单片机从串口接收数据多个字节的数据的C语言程序,谢谢,第1张

#include<reg52h>

unsigned char code table[] ={" "};

unsigned char code table1[]={" : "};

sbit rs=P1^2;

sbit lcden=P1^0;

unsigned char flag,m;

void delay(int xms)

{

int i,j;

for(i=xms;i>0;i--) //i=xms即延时约xms毫秒

for(j=110;j>0;j--);

}

void write_com(unsigned char com)

{//写液晶命令函数

rs=0;

lcden=0;

P2=com;

delay(3);

lcden=1;

delay(3);

lcden=0;

}

void write_date(unsigned char date)

{//写液晶数据函数

rs=1;

lcden=0;

P2=date;

delay(3);

lcden=1;

delay(3);

lcden=0;

}

void init()

{//初始化函数

unsigned char num;

lcden=0;

rs=0;

write_com(0x38);//1602液晶初始化

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)//写入液晶固定部分显示

{

write_date(table[num]);

delay(3);

}

write_com(0x80+0x40);

for(num=0;num<5;num++)

{

write_date(table1[num]);

delay(3);

}

}

void write_dianya(unsigned char add,unsigned char date)

{//1602液晶刷新时分秒函数4为时,7为分,10为秒

unsigned char bai,shi,ge;

bai=date/100;

shi=date%100/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+bai);

write_date(0x30+shi);

write_date(0x30+ge);

}

void main ()

{

init();

TMOD=0x20; //设置定时器1工作方式2

TH1=0xfd;

TL1=0xfd;

TR1=1;

REN=1; //设置串行口工作方式

SM0=0;

SM1=1;

EA=1; //中断设置

ES=1;

while(1)

{

if(flag==1)

{

ES=0;

SBUF=m;

while(!TI);

TI=0;

ES=1;

}

}

}

void ser() interrupt 4

{

RI=0;

m=SBUF;

write_dianya(5,m);

flag=1;

}

举个例子

二、 串行口通讯方式:

21 工作方式:主从方式。上位机为主,顺序闪光灯主机为从;控制命令和查询命令由上位机发出,顺序闪光灯主机做相应信息返回。

22 工作模式:8位数据,无校验;对于51系列单片机为模式1

23 波特率:1200,2400,4800,9600(可选,缺省为4800)。

24 信息格式:

序号 名称 字节数 内容 说明

1 帧信息头 1 0xAA 用于表示信息的开始

2 帧信息类型 1 控制0x01 用于区别控制命令、查询命令及返回信息;“控制”和“查询”由上位机发出,“返回”为顺序闪光灯主机返回信息时发出。

查询0x02

返回0x03

3 有效信息长度 1 n 表示有效信息的字节数

4 有效信息 n n个字节 有效信息。详见具体信息定义

5 校验码 1 LRC 对帧信息类型、有效信息长度、有效信息进行单字节相加,取低8位补码(即对低8位取反后再加一)作为校验码。

说明:上位机和顺序闪光灯主机使用相同的信息格式,不同之处在于信息类型、信息长度的不同。

如下即可:

void ser() interrupt 4

{

RI = 0;

flag = ~flag; //每收到一次,就取反

if(flag) P1 = SBUF;

else P2 = SBUF;

}

但是,仅仅发送两个字节的数据,第一、第二字节,不好区分。

应该编写通信协议。

以上就是关于C51单片机从串口接收数据多个字节的数据的C语言程序,谢谢全部的内容,包括:C51单片机从串口接收数据多个字节的数据的C语言程序,谢谢、51单片机C语言的串口通讯协议、51单片机 c程序有问 串口通信 16位分2个8位等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9320405.html

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

发表评论

登录后才能评论

评论列表(0条)

保存