单片机双机通信系统设计

发布网友 发布时间:2022-04-23 15:36

我来回答

3个回答

热心网友 时间:2023-10-08 17:44

//两个51单片机,两机的串*叉连线,双机互发数据
//接收方采用两位数显示收到的数据
//下列双机通信程序,适用于双方同时使用
//经过编译、仿真成功
//显示函数应该根据自己的设备进行改写
//===============================
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Rbuf = 0;
uchar code dis_7[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00};//共阴段码
//段码表 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, off
//-------------------------------
void delay(uint k)
{
uint i, j;
for(i = 0; i < k; i++) for(j = 0; j < 200; j++);
}
//-------------------------------
void Display(uchar x)
{
P0 = dis_7[x / 16]; //输出高四位
P2 = 0xFE;
delay(2);
P0 = dis_7[x % 16]; //输出低四位
P2 = 0xFD;
delay(2);
}
//-------------------------------
void UART()interrupt 4
{
if(RI) {
RI = 0; //清除中断标志
Rbuf = SBUF;
}
if(TI) {
TI = 0; //清除中断标志
}
}
//-------------------------------
void main() //主函数
{
uchar t1, i;
SCON = 0x50; //串口工作在方式1
PCON &= 0x7F; //SMOD=0
TMOD = 0x20; //定时器1当做波特率发生器
TH1 = 0xFD; //初值, 9600 @ 11.0592MHz
TL1 = 0xFD;
TR1 = 1;
while (1){
for (i = 0; i < 250; i++) Display(Rbuf);
SBUF = t1; //发送数据
t1++;
}
}
//===============================

热心网友 时间:2023-10-08 17:45

只是给一点提议,在双机异步通信的时候得设置sm2,还有注意发送的是地址还是数据,主机还是从机 单片机是一门实践性很强的课程,学好了就可以进入嵌入式发展,假如你连基本的实验都不想做,那我建议你选择其他专业,想一想我们国家嵌入式发展这么快,特别是在深圳,上海等地嵌入式工程师月薪达到2w,你自己想想吧 想要这样求求程序啊什么的 出去能干嘛? 我跟你差不多还是学生,我还没毕业就找到工作了,呵呵 同学 努力吧

热心网友 时间:2023-10-08 17:45

SPI是不是就是双机通讯的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com