51单片机实现的双机通信设计仿真

一、题目要求

使用51单片机实现双机通信,T1作为波特率发生器,使用工作模式1,(p197)中断实现,在keil上进行软件部分编程,在PROTEUS上仿真实现。要求如下:
1、单片机1发送一个周期的正弦波采样值至单片机2,通过按键选择频率,该按键使用定时器T0计数方式中断实现;
2、单片机2收到单片机1发的数据,用1602LCD显示所接受的字节数,同时回送应答信号(字节数)。单片机2使用定时器T0在P1.0以PWM方式连续输出接收的正弦波,中断方式实现,接有源RC滤波器,虚拟示波器显示波形;
3、单片机1收到应答信号后,用一位数码管显示收到单片机2的应答,通信成功。
4、可自定义更多功能,系统功能越复杂,作业得分越高。

二、设计说明

Proteus仿真电路图总电路图如下:51单片机实现的双机通信设计仿真_第1张图片
本系统核心部件两个为AT89C51。AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称51单片机。
51单片机实现的双机通信设计仿真_第2张图片
系统左方电路如上图:单片机1。
单片机1由外部晶振电路、复位电路、P0口上拉电阻、矩阵键盘和4位7段动态数码管构成。
矩阵键盘与单片机1的P0口相连。使用者按下矩阵键盘,系统通过P0口数据的变化来读取相应的键值,设定不同的采样间隔。
4位7段动态数码管用于显示接收到的单片机2发送过来的数据。
51单片机实现的双机通信设计仿真_第3张图片
系统左上方电路如上图:单片机2。
单片机2由外部晶振电路、复位电路、P0口上拉电阻、LCD1602、一阶有源低通滤波电路和二阶有源低通滤波电路构成。
LCD1602与单片机1的P0口相连。LCD1602用于显示接收到的单片机1发送过来的数据的字节数。
在P1.0以PWM方式连续输出接收的正弦波,有源RC滤波器虚拟示波器显示波形。 示波器通道A接P1.0,示波器通道B接一阶有源滤波电路,示波器通道C接二阶有源滤波电路
元器件清单
元器件名称 功能说明 数量
AT89C51 微处理器 2
7SEG-MPX4-CC 4位7段共阴动态数码管 1
CAP 电容 7
CAP-ELEC 电解电容 2
CRYSTAL 晶振 2
LM016L LCD1602 1
OPAMP 运算放大器 2
BUTTON 按钮 18
RES 电阻 10
RESPACK-8 排阻 1

三、功能说明

本系统的功能是:通过按一下单片机1的按键,识别按键所代表的数字,对正弦信号进行相应的数据采样,然后单片机1将采样值发送给单片机2,单片机2用count进行计数,记录单片机1发送了多少个字节的数据。单片机1数据发送完毕后,单片机2将数据用LCD1602显示,并将数据发送给单片机1。单片机1接收到单片机2的数据,用4位7段共阴动态数码管显示。单片机2根据不同在采样值,使用定时器T0在P1.0以PWM方式连续输出不同采样值的正弦波,P1.0后接有源RC滤波器,虚拟示波器显示波形。

按键 一个正弦周期采样值 LCD1602显示 数码管显示
K0 15 015 015
K1 20 020 020
K2 25 025 025
K3 30 030 030
K4 35 035 035
K5 40 040 040
K6 45 045 045
K7 50 050 050
K8 55 055 055
K9 60 060 060
K10 65 065 065
K11 70 070 070
K12 75 075 075
K13 80 080 080
K14 85 085 085
K15 90 090 090
运行仿真示例:
运行仿真
51单片机实现的双机通信设计仿真_第4张图片
按下K3
51单片机实现的双机通信设计仿真_第5张图片
51单片机实现的双机通信设计仿真_第6张图片
四、软件说明
软件设计部分利用keil软件实现C51语言程序的编写和编译。
单片机1的C51程序:delay延时函数、按键扫描函数、正弦信号数组初始化函数、串口初始化函数、定时器0初始化函数、串口发送字节函数、主函数和定时器0中断函数构成。主函数中调用了按键扫描函数、正弦信号数组初始化函数、串口初始化函数、定时器0初始化函数和串口发送字节函数。在得到键值后,确定采样值,然后置P37=0单片机1开始发送数据给单片机2,发送完毕后置P37=1,在P36=0时,开始接收单片机2的数据。最后将数据送到数码管显示。
单片机2的C51程序:delay延时函数、LCD写入数据函数、LCD写入命令函数、LCD初始化函数、正弦信号数组初始化函数、串口初始化函数、串口发送一个字节函数、定时器0初始化函数、主函数和定时器T0中断函数构成。主函数中进行串口初始化、LCD初始化和定时器0初始化。然后等待P37=0(P37=0即单片机1开始发送数据),单片机2在接收完成一次,count记一次数。最后得到单片机1发送了多少个字节数,count也就是发送了多少个采样值。得到count之后,用LCD1602显示所接收的字节数count。同时,取同样数量的正弦信号采样值count在P1.0以PWM方式连续输出。
系统通过单片机1程序和单片机2程序的相互配合,协调合作。在按下不同按键后,使LCD1602和数码管显示出采样值,同时在P1.0口以PWM方式连续输出正弦信号。

附:Proteus仿真+keil代码+分析文档.rar
https://download.csdn.net/download/alongiii/12391451

你可能感兴趣的:(51单片机实现的双机通信设计仿真)