我想用一个单片机去控制另外一个单片机,如何连接以及相应的数据处理?

我想用一个单片机去控制另外一个单片机,如何连接以及相应的数据处理?,第1张

某温度数据采集系统有主、从机进行串行通讯,假定双机的系统时钟频率fosc=110592MHz,通讯速率9600bps,主机每次将温度数据temperature的值发送给从机,从机则将收到的数据送到显示器上显示,试完成双机通信程序设计。

分析:设定时器1工作于方式2,TMOD=00100000b=0x20。

定时器的初值计算:9600=Kfosc/[3212(256-TH1)],这里设SMOD=0,则K=1。fosc=110592MHz,计算得到:TH1=253=0x0fd。

SCON的确定:串口工作在方式1,允许接收。  所以:    SCON=01010000b=0x50。

主机采集数据,并发送给从机的参考程序如下(这里没有考虑通信协议):

#include<reg51h>

#define uchar unsigned char

#define uint  unsigned int

uchar Temperature;

void InitSystem(void);

void CollectData(void);

void Delay(void);

/系统初始化/

void InitSystem(void)

{

TMOD=0x20;    / T1工作于方式2/

TH1=0xfd;    / 通信速率2400bps/

TL1=0xfd;

PCON=0x00;   / SMOD=0/

SCON=0x50;   / 允许接收/

ES=0;       / 开串口中断/

ET1=0;

TR1=1;      / 启动定时器1/

RI=0;

TI=0;

}

void CollectData(void)     /数据采集程序/

{;

// 此程序将采集的温度数据送入Temperature变量,限于篇幅,省去该程序代码。

}

void Delay()         /延时子程序/

{

int i;

for(i=0;i<10000;i++);

}

void main(void)

{

InitSystem();

while(1)

{

Delay();

SBUF=Temperature;   /发送温度数据/

while(!TI);

TI=0;

CollectData();      / 采集温度数据/

}

}

从机程序如下:

#include<reg51h>

#define uchar unsigned char

#define uint  unsigned int

uchar Temperature;

void InitSystem(void);

void Comm(void) ;

void Display(void);

void InitSystem(void)      /系统初始化程序/

{

TMOD=0x20;    / T1工作于方式2/

TH1=0xfd;    / 通信速率2400bps/

TL1=0xfd;

PCON=0x00;   / SMOD=0/

SCON=0x50;   / 允许接收/

EA=1;

ES=1;       / 开串口中断/

ET1=0;

TR1=1;      / 启动定时器1/

RI=0;

TI=0;

}

void Comm(void) interrupt 4 using 0          /串行中断服务程序/

{

Temperature=SBUF; / 保存数据/

RI=0;   /清中断标志/

}

void Display(void)            /显示程序/

{

;

/此程序将收到的Temperature 通过显示器显示出来   /

}

void main(void)

{

InitSystem();

while(1)

{

Display();

;

}

}

注意:晶振和波特率一定按照程序中给出的那样设置,否则会有很大的误码率导致通信失败。。。程序中用的是110592你就别用12M的,否则你就等着后悔吧

明明白白地告诉你:
你说的C字母的单片机只能用烧写器下载程序,这种烧写器由于商业用途,基本上找不到现成的电路图或者驱动源程序的,都是要钱的,只能买。
你可以换AT89S52,估计比C52还便宜,但是比C52强大,因为C52停产了,物以稀为贵。S52支持ISP功能,可以自己制作编程器,很容易成功。
烧写器很贵,换块单片机几块钱做个编程器几块钱,很显然的成本。
下载器你可以用这个:
>

单片机当然可以控制外部电路,单片机最小系统只是基本应用,要发挥单片机的潜能,需要扩展外部电路。

1、利用光电隔离,可以控制外围电路,并且也将外部电路的干扰屏蔽在外。

2、利用373/245/244等器件,可以扩展并行IO口,从而控制更多的外围设备。

3、利用8255/8155等扩展并口。

等等,还有诸如利用595等串转并扩展,还可以利用CPLD,FPGA等扩展,总之只要深入理解单片机,那么单片机就可以发挥很大的潜力,帮助我们解决实际问题。

单片机控制伺服电机一般是针对伺服电机控制器来控制的,具体功能需根据您的使用要求来接线,比如,你是速度还是位置控制,你是点动还是别的控制方式,你是交流还是直流伺服,另外,伺服控制器上又设置功能与性能的拨码开关,具体需要参考他们的伺服控制器说明手册来设置就可以了, 不需要专门的设定软件,至于单片机控制伺服,只要给伺服控制器以下信息:
比如:正传、反转、停止、执行的速度,提供伺服运转的脉冲等控制信号而已。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存