仿真图proteus7.8及以上
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0074
1. 主要功能:
1.实现主单片机分别与3个从单片机的串行通信;
2.通过分别按下按键从机1,从机2,从机3来选择主机与对应的从机进行串行通信;
3.当从机黄色LED点亮,表示主机与相应的从机连接成功;该从机的8个绿色LED闪亮,表示主机与从机在进行串行数据通信;
4.如果断开按键,则主机与相应从机的串行通信中断。
需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
以下为本设计资料展示图:
2. 讲解视频:
讲解视频包含仿真运行讲解和代码讲解。
3. 仿真
打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。
按下主机的从机1按键,从机1接收到数据灯光闪烁,其他从机灯光熄灭。
按下主机的从机2按键,从机2接收到数据灯光闪烁,其他从机灯光熄灭。
按下主机的从机3按键,从机3接收到数据灯光闪烁,其他从机灯光熄灭。
4. 程序代码
使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。
主机代码:
#include <reg51.h>
#include <math.h>
sbit switch1=P0^0;
sbit switch2=P0^1;
sbit switch3=P0^2;
void delay_ms(unsigned int i)
{
unsigned char j;
for(;i>0;i--)
for(j=0;j<125;j++)
;
}
void main()
{
EA=1; //总中断打开
TMOD=0x20; //定时器1 工作方式2 自动装载 用于串口设置波特率
TL1=0xfd;
TH1=0xfd; //波特率设为9600
PCON=0x00; //不加倍 0x80 为加倍
SCON=0xd0; //SM2设为0, TB8设为0
TR1=1; //定时器1 打开
ES=1;
SBUF=0xff;
while(TI==0);
TI=0;
while(1)
{
delay_ms(100);
if(switch1==1)
{
TB8=1;//将发送寄存器的第九数据位(TB8)设置为1。这在9位UART通信模式中使用。
SBUF=0x01;//将串行缓冲寄存器(SBUF)加载值0x01(二进制00000001),一旦开始传输,这个字节将作为串行数据发出。
while(TI==0);
//在循环中等待,直至发送中断标志(TI)置位。当SBUF中的整个数据字节被完全发送出去后,硬件会自动置位TI。
TI=0;//清除发送中断标志(TI),准备下一次的数据发送。
TB8=0;//重置第九数据位(TB8)为0,以便发送下一个字节。
SBUF=0x00;//向SBUF加载下一个数据字节,在本例中是0x00(二进制00000000)。
while(TI==0);//再次等待前一个字节的传输完成,并清除TI标志以准备后续的传输操作。
TI=0;
//led=1;
}
if(switch2==1)
{
TB8=1;//将发送寄存器的第九数据位(TB8)设置为1。这在9位UART通信模式中使用。
SBUF=0x02;//将串行缓冲寄存器(SBUF)加载值0x02(二进制00000010),一旦开始传输,这个字节将作为串行数据发出。
while(TI==0);
//在循环中等待,直至发送中断标志(TI)置位。当SBUF中的整个数据字节被完全发送出去后,硬件会自动置位TI。
TI=0;//清除发送中断标志(TI),准备下一次的数据发送。
TB8=0;//重置第九数据位(TB8)为0,以便发送下一个字节。
SBUF=0x00;//向SBUF加载下一个数据字节,在本例中是0x00(二进制00000000)。
while(TI==0);//再次等待前一个字节的传输完成,并清除TI标志以准备后续的传输操作。
TI=0;
//led=1;
}
if(switch3==1)
{
TB8=1;//将发送寄存器的第九数据位(TB8)设置为1。这在9位UART通信模式中使用。
SBUF=0x03;//将串行缓冲寄存器(SBUF)加载值0x03(二进制00000011),一旦开始传输,这个字节将作为串行数据发出。
while(TI==0);
//在循环中等待,直至发送中断标志(TI)置位。当SBUF中的整个数据字节被完全发送出去后,硬件会自动置位TI。
TI=0;//清除发送中断标志(TI),准备下一次的数据发送。
TB8=0;//重置第九数据位(TB8)为0,以便发送下一个字节。
SBUF=0x00;//向SBUF加载下一个数据字节,在本例中是0x00(二进制00000000)。
while(TI==0);//再次等待前一个字节的传输完成,并清除TI标志以准备后续的传输操作。
TI=0;
//led=1;
}
}
}
5. 设计报告
5229字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等
在现代工业生产线上,单片机被广泛应用到各种控制器中,通过精确调控设备运行参数,确保生产线高效稳定运作;在智能家居场景中,单片机集成于家电产品内部,使得家居设备能够实现远程操控、联动协同等功能,极大提升了生活便利性与舒适度;而在物联网领域,无数搭载单片机的智能终端形成庞大的信息交互网络,实现了对环境状态、设备性能等海量数据的实时采集与传输。
多机之间的串行通信则是连接这些智能化单元的核心纽带之一,它为分散的单片机设备提供了高效便捷的信息交换途径。这种通信方式允许多个设备通过一条共享的数据通道进行有序的数据传递,有效节约了物理接口资源,简化了系统布线,降低了设计复杂度,并且保证了数据传输的可靠性。
6. 设计资料内容清单&&下载链接
资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。
0、常见使用问题及解决方法–必读!!!!
1、程序
2、proteus仿真
3、功能要求
4、软硬件流程图
5、开题报告
6、设计报告
7、讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url
资料下载链接:
https://docs.qq.com/doc/DS2REbFJkWlZvc0dR