邯郸阿里云代理商:按键输入数据用lcd显示的两个c52单片机间的串口通信c语言程序

以下是两个C52单片机之间通过串口进行通信的C语言程序示例:

主机端程序:

#include <reg51.h>
#define FREQ_OSC 12000000
#define BAUD_RATE 9600

void UART_Init() {
    TMOD = 0x20;
    TH1 = TL1 = 256 - FREQ_OSC / (12 * 32 * BAUD_RATE);
    SCON = 0x50;
    TR1 = 1;
}

void UART_SendByte(unsigned char dat) {
    SBUF = dat;
    while(!TI);
    TI = 0;
}

void main() {
    UART_Init();
    while(1) {
        if(P1 != 0xFF) {
            UART_SendByte(P1);
            P1 = 0xFF;
        }
    }
}

从机端程序:

#include <reg51.h>
#define FREQ_OSC 12000000
#define BAUD_RATE 9600

void UART_Init() {
    TMOD = 0x20;
    TH1 = TL1 = 256 - FREQ_OSC / (12 * 32 * BAUD_RATE);
    SCON = 0x50;
    TR1 = 1;
}

unsigned char UART_ReceiveByte() {
    while(!RI);
    RI = 0;
    return SBUF;
}

void main() {
    unsigned char data;
    UART_Init();
    while(1) {
        data = UART_ReceiveByte();
        // 显示数据到LCD
        // 延时处理
    }
}

以上是一个简单的串口通信程序示例,主机端通过串口发送按键输入数据,从机端接收数据并显示在LCD上。请根据具体的硬件接口和需求进行适当的修改和调试。

下面是一个简单的串口通信的C语言程序示例,可以实现两个C52单片机之间的通信,其中一个单片机接收按键输入数据,然后通过串口发送给另一个单片机,并在LCD上显示接收到的数据。

单片机1代码:

邯郸阿里云代理商:按键输入数据用lcd显示的两个c52单片机间的串口通信c语言程序
#include <reg52.h>

#define LCD_DATA P0
sbit RS = P1^0;
sbit RW = P1^1;
sbit E = P1^2;

void init_LCD();
void send_data(unsigned char dat);
void send_command(unsigned char cmd);
void delay_ms(unsigned int ms);

void main()
{
    init_LCD();
    TMOD = 0x20;  //定时器1工作在方式2
    TH1 = 0xFD;  //波特率9600
    TL1 = 0xFD;
    SCON = 0x50;  //方式1工作
    TR1 = 1;  //定时器1开始计时
    TI = 1;  //发送缓冲区为空

    while(1)
    {
        if(P2 != 0xFF)  //按键输入数据
        {
            SBUF = P2;  //发送数据
            while(!TI);  //等待发送完成
            TI = 0;
            send_command(0x01);  //清屏
            send_data('S');  //显示发送成功
            delay_ms(500);
        }
    }
}

void init_LCD()
{
    send_command(0x38);  //8位数据接口,显示模式
    send_command(0x0c);  //开显示,关光标
    send_command(0x06);  //光标加
    send_command(0x01);  //清屏
}

void send_data(unsigned char dat)
{
    RS = 1;
    RW = 0;
    LCD_DATA = dat;
    delay_ms(1);
    E = 1;
    delay_ms(1);
    E = 0;
    delay_ms(1);
}

void send_command(unsigned char cmd)
{
    RS = 0;
    RW = 0;
    LCD_DATA = cmd;
    delay_ms(1);
    E = 1;
    delay_ms(1);
    E = 0;
    delay_ms(1);
}

void delay_ms(unsigned int ms)
{
    unsigned int i, j;
    for(i=0; i<ms; i++)
        for(j=0; j<110; j++);
}

单片机2代码:

#include <reg52.h>

#define LCD_DATA P0
sbit RS = P1^0;
sbit RW = P1^1;
sbit E = P1^2;

void init_LCD();
void send_data(unsigned char dat);
void send_command(unsigned char cmd);
void delay_ms(unsigned int ms);

void main()
{
    init_LCD();
    TMOD = 0x20;  //定时器1工作在方式2
    TH1 = 0xFD;  //波特率9600
    TL1 = 0xFD;
    SCON = 0x50;  //方式1工作
    TR1 = 1;  //定时器1开始计时

    while(1)
    {
        while(!RI);  //等待接收数据
        RI = 0;
        send_command(0x01);  //清屏
        send_data(SBUF);  //显示接收到的数据
    }
}

void init_LCD()
{
    send_command(0x38);  //8位数据接口,显示模式
    send_command(0x0c);  //开显示,关光标
    send_command(0x06);  //光标加
    send_command(0x01);  //清屏
}

void send_data(unsigned char dat)
{
    RS = 1;
    RW = 0;
    LCD_DATA = dat;
    delay_ms(1);
    E = 1;
    delay_ms(1);
    E = 0;
    delay_ms(1);
}

void send_command(unsigned char cmd)
{
    RS = 0;
    RW = 0;
    LCD_DATA = cmd;
    delay_ms(1);
    E = 1;
    delay_ms(1);
    E = 0;
    delay_ms(1);
}

void delay_ms(unsigned int ms)
{
    unsigned int i, j;
    for(i=0; i<ms; i++)
        for(j=0; j<110; j++);
}

这样,单片机1可以通过按键输入数据并发送给单片机2,单片机2接收到数据后在LCD上显示。注意需要根据具体的硬件接口和电路条件进行调整和改动。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/150068.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年2月19日 18:27
下一篇 2024年2月19日 18:46

相关推荐

  • 阿里云企业邮箱:怎样构建邮件驱动的自动化报表?

    引言:企业数字化转型新引擎 随着信息化与数字化的不断深入,企业管理者越来越重视数据的及时获取与高效应用。自动化报表作为数据驱动决策的重要工具,在日常经营、财务、销售等众多环节扮演着重要角色。如何简化数据采集和报表分发流程?阿里云企业邮箱为我们提供了稳定、安全、高效的解决方案,将邮件通讯和自动化报表无缝衔接,大幅提升工作效率。在本篇文章中,我们将深入探讨如何依…

    2025年6月14日
    16100
  • 阿里云短信服务审核

    对于阿里云短信服务审核,客户需要提供相关的资料和信息。具体审核要求取决于使用短信服务的用途和行业。 一般来说,以下是阿里云短信服务审核所需的基本材料和信息: 公司资料:包括公司名称、营业执照、税务登记证等相关证件的扫描件或照片。 业务介绍:需要详细描述您使用短信服务的具体用途、目的和计划,包括推广、通知、提醒等方面。 营业执照授权书:如果您是代理商或第三方供…

    2023年11月4日
    27900
  • 苏州阿里云代理商:阿里堡垒安全运维管理

    阿里堡垒安全运维管理是阿里云提供的一种安全管理解决方案,包括堡垒机、运维管理平台和权限管理等组件,用于优化企业的安全管理流程和提升运维效率。 作为苏州的阿里云代理商,我们可以为企业提供以下服务: 阿里堡垒机的部署和配置:我们可以帮助企业进行阿里堡垒机的部署和配置,建立安全的堡垒访问机制,实现对服务器的安全访问和操作。 运维管理平台的搭建和定制:我们可以根据企…

    2023年12月14日
    29400
  • 阿里云企业邮箱代理商:我该如何通过阿里云企业邮箱设置邮件提醒和过滤?

    阿里云企业邮箱:如何设置邮件提醒与过滤规则? 随着企业信息化程度不断提高,高效管理邮件已成为日常工作的重要环节。阿里云企业邮箱凭借稳定、安全、智能的特性,为企业用户提供了便捷的邮件提醒和过滤功能。本文将详细介绍如何通过这些功能优化您的邮件管理体验。 一、阿里云企业邮箱的核心优势 阿里云企业邮箱不仅拥有99.9%的高可用性保障,更在安全性和智能化方面表现出色:…

    2025年9月18日
    3300
  • 阿里云企业邮箱:哪些调研需要专业表单工具?

    阿里云企业邮箱:哪些调研需要专业表单工具? 一、专业表单工具在企业调研中的重要性 在数字化办公环境下,企业邮箱不仅是沟通工具,更是信息收集与管理的枢纽。传统邮件直接提问的方式效率低下,而专业表单工具(如阿里云企业邮箱集成的问卷功能或第三方表单插件)能解决以下痛点: 结构化数据收集:避免零散反馈,标准化回答便于统计分析; 自动化处理:自动汇总结果,减少人工整理…

    2025年7月14日
    13000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/