【普中开发板】

基于51单片机双机串口通信LCD1602显示设计

本设计包含proteus仿真+程序+设计报告+讲解视频

一、开发环境

仿真图:proteus8.17(有低版本)

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P27

二、主要功能

设计任务:

1、设计单片机和单片机的双机通信硬件电路:

2、实现两个单片机的通信功能:

3、可以有其他扩展功能。

拓展功能:

矩阵按键扫描,通过按下矩阵按键按下发送字符1-9,A-G;

LCD1602显示状态状态和接收状态;

使用普中51开发板验证和proteus仿真验证功能。

主要硬件 51单片机 LCD1602显示 矩阵按键

(目前仅完全适配普中51-实验板234,其他普中开发板型号需要接线)

img

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

资料下载链接:

P系列单片机设计下载链接(复制到浏览器打开)

https://docs.qq.com/doc/DS2pPenNRaHB6SlR1

以下为本设计资料展示图:

三、实物图

单片机1矩阵按键按下按键4,第一行显示Status:Sending第二行显示Key:4,串口发送字符4。单片机2接收到字符4,第一行显示Status:Receiving 表示处于接收状态。第二行显示接收到的字符是Recv:4。

img

四、仿真设计

打开仿真,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后LCD1602默认显示第一行显示Ready,第二行显示key:-和Recv:-

U1矩阵按键按下按键1,第一行显示Status:Sending第二行显示Key:1,串口发送字符1。U2接收到字符1,第一行显示Status:Receiving 表示处于接收状态。第二行显示接收到的字符是Recv:1。

img

U2矩阵按键按下按键G,第一行显示Status:Sending第二行显示Key:1,串口发送字符1。U1接收到字符G,第一行显示Status:Receiving 表示处于接收状态。第二行显示接收到的字符是Recv:G。

img

五、程序代码

使用keil4或者keil5编译,代码有注释,可以结合注释了解代码含义。

img

主函数

// 主函数
void main() {
    uchar new_key = 0;
    
    // 初始化
    LCD_Init();
    UART_Init();
    
    // 初始显示
    LCD_ShowString(0, 0, "Status: Ready ");
    LCD_ShowString(1, 0, "Key: -  Recv: -");
    
    while(1) {
        // 扫描按键
        new_key = Matrix_KeyScan();
        
        // 检测到新按键
        if(new_key != 0 && new_key != key_value) {
            key_value = new_key;
            send_flag = 1;          // 设置发送标志
            current_state = STATE_SEND; // 进入发送状态
            update_disp_flag = 1;      // 需要更新显示
            key_pressed = 1;           // 设置按键按下标志
            send_display_time = 1000;  // 设置显示时间为1000ms
        } 
        // 按键释放
        else if(new_key == 0 && key_pressed) {
            key_pressed = 0;            // 清除按键按下标志
        }
        
        // 处理接收
        if(recv_flag) {
            recv_flag = 0;            // 清除接收标志
            current_state = STATE_RECV; // 进入接收状态
            update_disp_flag = 1;        // 需要更新显示
            recv_timeout = 0;           // 重置超时计数器
        }
        
        // 发送数据(非阻塞方式)
        if(send_flag && !tx_busy) {
            Send_KeyValue(key_value);
            send_flag = 0;             // 清除发送标志
        }
        
        // 发送状态显示时间处理
        if(current_state == STATE_SEND) {
            if(send_display_time > 0) {
                send_display_time--;
            } else {
                // 显示时间结束,返回空闲状态
                current_state = STATE_IDLE;
                key_value = 0;          // 清除按键值显示
                update_disp_flag = 1;
            }
        }
        
        // 更新显示
        if(update_disp_flag) {
            Update_Display();
        }
        
        // 接收状态超时处理
        if(current_state == STATE_RECV) {
            recv_timeout++;
            if(recv_timeout >= 3000) { // 约3秒后返回空闲状态
                current_state = STATE_IDLE;
                update_disp_flag = 1;
                recv_timeout = 0;
            }
        }
        
        // 主循环延时(约1ms)
        delay_ms(1);
    }
}

六、设计报告

6974字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等;

img

七、设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

img

0、常见使用问题及解决方法–必读!!!!

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、烧录工具

8、讲解视频

9、实物图

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

资料下载链接(可点击):

https://docs.qq.com/doc/DS2pPenNRaHB6SlR1

更多资源 点击下方链接:

https://docs.qq.com/sheet/DS0xIa0llTmtNakRW

微信公众号:嘉盛单片机

img