基于单片机的双机串口通信与数字串存储系统设计

基于单片机的双机串口通信与数字串存储系统设计

点击链接下载protues仿真设计:https://download.csdn.net/download/m0_51061483/92081494


1 系统总体设计概述

1.1 设计背景与研究意义

在嵌入式系统与单片机应用领域中,串口通信是一种最基础、最常用的数据通信方式之一。通过串口通信,不同单片机系统之间可以实现数据交换、功能协作和信息共享。同时,数据的可靠存储与管理也是嵌入式系统中不可或缺的重要功能,尤其是在需要掉电保存、长期记录或历史数据查询的应用场景中,非易失性存储器件发挥着关键作用。

本设计以"双机通信"为核心思想,通过两套单片机系统(A端与B端)之间的串口通信,实现数字串数据的输入、传输、校验、显示以及存储功能。系统综合运用了矩阵键盘、LCD显示模块、串口通信模块以及AT24C02 EEPROM存储芯片,构建了一个功能完整、逻辑清晰、具有一定工程实用价值的嵌入式系统实例。

通过该系统的设计与实现,不仅能够加深对单片机串口通信原理的理解,还能系统掌握数据校验、I²C存储器访问以及多模块协同工作的设计方法,对单片机课程设计、毕业设计及工程实践均具有较高的参考价值。

1.2 系统总体功能说明

本系统由A端与B端两部分组成,二者通过串口进行通信,整体功能如下:

  1. A端负责数字串的输入、显示和发送。用户通过拨号键盘输入长度为2~16位的数字串,输入过程实时显示在LCD屏幕上,支持删除与发送控制。
  2. A端通过串口将完整数字串发送至B端,*键用于取消当前输入字符,#键用于确认并发送数据。
  3. B端实时监听串口接收数据,对接收到的数字串进行校验。若校验正确,则显示在LCD屏幕上;若校验失败,则丢弃数据并清空显示。
  4. B端通过按键1可将当前接收到且校验正确的数字串存入AT24C02存储器,并在LCD上显示存储结果。
  5. B端通过按键2可依次查看已存储的数字串内容;通过按键3可清除所有已存储数据,实现数据管理功能。
  6. 数据校验规则为:数字串最后一位等于前面所有数字之和的个位数。

2 系统功能设计分析

2.1 数字串输入与编辑功能(A端)

A端系统通过拨号键盘实现数字串的输入功能。用户每按下一个数字键,对应的数字字符即被加入到当前输入缓冲区,并实时显示在LCD屏幕上。系统对输入长度进行限制,确保输入的数字串长度在2~16位之间。

在输入过程中,用户可通过"*"键实现删除操作,用于取消最近一次输入的字符,从而提高输入的灵活性和容错性。当输入完成后,按下"#"键,系统即认为当前数字串输入结束,并进入发送准备状态。

2.2 串口通信功能

串口通信是A端与B端之间数据交互的核心手段。A端在"#"键触发后,将当前数字串通过串口逐字节发送至B端。通信过程中,采用固定的波特率、数据位、停止位和校验方式,确保双方通信参数一致,从而保证数据的正确传输。

B端通过串口接收中断或轮询方式实时监测串口数据,一旦检测到接收事件,即启动数据接收流程,并将数据暂存至接收缓冲区中。

2.3 数据校验功能(B端)

为了保证数据的可靠性,B端在接收完整数字串后,会对数据进行校验处理。校验规则为:数字串最后一位应等于前面所有位数字之和的个位数。

系统通过遍历接收到的数字字符,将前n-1位数字转换为数值并累加,然后取其个位数,与最后一位进行比较。若校验成功,系统认为数据有效;否则视为无效数据并丢弃处理。

2.4 数据显示与存储功能

当校验成功后,B端会将数字串显示在LCD屏幕上,供用户查看。此时,用户可通过按键1将该数字串写入AT24C02 EEPROM中,实现掉电不丢失的数据存储。

系统支持多条数字串的顺序存储,并通过内部地址管理机制实现存储空间的合理分配。按键2用于读取并显示已存储的数字串,按键3用于清空全部存储数据,方便系统维护与数据重置。


3 系统电路设计

3.1 单片机最小系统模块

A端与B端均采用单片机最小系统结构作为核心控制模块。最小系统包括电源电路、晶振电路和复位电路,确保单片机在稳定可靠的硬件环境下运行。

单片机I/O资源被合理分配,用于连接键盘、LCD、串口通信接口以及存储器等外设模块。通过统一的硬件架构,使A端与B端在结构上保持一致性,便于系统调试和维护。

3.2 拨号键盘接口电路(A端)

拨号键盘通常采用矩阵键盘结构,通过行列扫描方式实现按键检测。单片机通过输出扫描信号并读取输入状态,判断是否有按键按下以及具体按键编号。

在电路设计中,键盘接口引脚通过上拉电阻与单片机相连,保证按键未按下时输入状态稳定,减少误触发。

3.3 LCD显示模块电路

LCD显示模块用于显示输入的数字串、接收的数据以及存储信息。LCD通过并行或串行方式与单片机连接,常见为1602字符型液晶显示模块。

在电路中,LCD的数据线与控制线分别连接至单片机对应端口,配合对比度调节电路,保证显示内容清晰稳定。

3.4 串口通信接口电路

串口通信接口主要由TXD和RXD信号线组成,用于A端与B端之间的数据传输。在电路设计中,两端的TXD与RXD交叉连接,确保数据正确发送和接收。

如通信距离较远或环境干扰较强,可通过电平转换芯片或隔离电路提高通信可靠性。

3.5 AT24C02存储模块电路(B端)

AT24C02是一种基于I²C总线的EEPROM存储芯片,具有容量小、功耗低、掉电数据不丢失等优点。该芯片通过SCL和SDA两根信号线与单片机通信。

在电路设计中,SCL和SDA线均通过上拉电阻连接至电源,以保证I²C总线正常工作。同时,通过合理分配存储地址,实现多条数字串的顺序存储。

3.6 按键控制模块(B端)

B端设置独立按键用于数据存储、查看和清除操作。按键通过限流电阻与单片机输入端口连接,并通过软件消抖方式提高按键识别的准确性。


4 系统程序设计

4.1 软件总体结构设计

系统软件采用模块化设计思想,将键盘扫描、LCD显示、串口通信、数据校验和存储管理等功能分别封装成独立模块。主程序负责系统初始化和任务调度,各模块之间通过全局变量或函数接口进行数据交互。

A端与B端程序在结构上具有一定相似性,但功能侧重点不同,分别围绕输入发送与接收存储展开。

4.2 键盘扫描程序设计(A端)

键盘扫描程序周期性检测矩阵键盘状态,并对检测到的按键进行编码处理。程序中加入软件延时消抖机制,防止按键抖动造成误操作。

c 复制代码
char Key_Scan(void)
{
    char key = 0;
    if(KEY_PORT != 0xFF)
    {
        delay_ms(10);
        if(KEY_PORT != 0xFF)
        {
            key = KEY_PORT;
        }
    }
    return key;
}

4.3 数字串输入与发送程序设计(A端)

在接收到有效按键后,程序根据按键类型进行处理:数字键加入输入缓冲区,"*"键删除字符,"#"键触发发送操作。

c 复制代码
void Send_String(char *buf, unsigned char len)
{
    unsigned char i;
    for(i = 0; i < len; i++)
    {
        UART_Send(buf[i]);
    }
}

4.4 串口接收程序设计(B端)

B端通过串口中断方式接收数据,将接收到的字符依次存入接收缓冲区,并根据结束标志判断数据接收完成。

c 复制代码
void UART_ISR(void) interrupt 4
{
    char dat;
    dat = SBUF;
    rx_buf[rx_cnt++] = dat;
    RI = 0;
}

4.5 数据校验程序设计

数据校验程序对接收到的数字串进行合法性判断,确保最后一位满足校验规则。

c 复制代码
bit Check_Data(char *buf, unsigned char len)
{
    unsigned char i, sum = 0;
    for(i = 0; i < len - 1; i++)
    {
        sum += buf[i] - '0';
    }
    if((sum % 10) == (buf[len - 1] - '0'))
        return 1;
    else
        return 0;
}

4.6 AT24C02存储与读取程序设计

存储模块通过I²C通信协议实现数据的写入与读取。程序中对存储地址进行统一管理,保证数据顺序存储。

c 复制代码
void EEPROM_Write(unsigned char addr, char dat)
{
    I2C_Start();
    I2C_Send(EEPROM_ADDR);
    I2C_Send(addr);
    I2C_Send(dat);
    I2C_Stop();
}

4.7 数据查看与清除程序设计

按键2触发数据读取程序,将存储在EEPROM中的数字串逐条读取并显示;按键3触发清除程序,将存储区域清零,实现数据重置。


5 系统总结

基于单片机的双机串口通信与数字串存储系统,通过合理的硬件模块设计和清晰的软件结构,实现了数字串的输入、通信、校验、显示及存储等完整功能。系统逻辑严谨、功能明确,充分体现了串口通信、数据校验和非易失性存储在嵌入式系统中的综合应用价值。该设计不仅具有较强的教学示范意义,也为实际工程中多机通信与数据管理提供了良好的设计参考。

相关推荐
chipsense2 小时前
霍尔电流传感器量程怎么确认,能覆盖实际电流监测需求么?
stm32·单片机·嵌入式硬件·霍尔电流传感器
点灯小铭2 小时前
基于单片机的压力温度水位检测与安全控制高压锅设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
10岁的博客2 小时前
NVIDIA显卡疑难杂症全攻略
单片机·嵌入式硬件
qq_401700412 小时前
stm32如何了解栈的使用情况
stm32·单片机·嵌入式硬件
d111111111d2 小时前
在stm32中什么是hal库,什么是标准库,二者的区别?
笔记·stm32·单片机·嵌入式硬件·学习
v先v关v住v获v取2 小时前
汽车后桥壳体工艺及夹具设计“11张cad+设计说明书+
科技·单片机·51单片机
星源~2 小时前
VsCode-单片机开发环境配置指定编译器
ide·vscode·单片机·物联网·嵌入式
国产电子元器件3 小时前
工业与能源系统中的电流感知方案——以 VCS734I 开环霍尔电流传感器为例
单片机·嵌入式硬件
悠哉悠哉愿意3 小时前
【EDA学习笔记】电子技术基础知识:读懂与画好原理图
笔记·单片机·嵌入式硬件·学习·eda