邯郸阿里云代理商:按键输入数据用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

相关推荐

  • 哈密阿里云企业邮箱代理商:阿里云购买域名流程图

    阿里云企业邮箱代理商:阿里云购买域名流程图 随着企业的日益壮大,邮箱的使用越来越普遍。企业邮箱是指以企业域名为后缀的邮箱,比如XXX@company.com。阿里云作为众所周知的云计算服务提供商,其企业邮箱和企业邮箱代理商也备受瞩目。 要想拥有自己的企业邮箱,第一步就需要购买一个域名。下面我们来看一下阿里云购买域名的流程: 阿里云购买域名流程图 阿里云企业邮…

    2024年3月14日
    61000
  • 扬州阿里云代理商:阿里云创建安全组

    在扬州地区,作为阿里云的代理商,我们可以帮助客户创建安全组。以下是创建安全组的步骤: 登录阿里云控制台,进入云服务器ECS页面。 在左侧导航栏找到“网络与安全”菜单,点击“安全组”进入安全组管理页面。 点击“创建安全组”按钮。 在弹出的窗口中,填写安全组的基本信息,包括名称、描述、VPC网络等,并选择该安全组所属地域。 确认信息填写无误后,点击“创建”按钮。…

    2023年12月24日
    68300
  • 迁安市阿里云企业邮箱代理商:阿里云服务器怎么使用

    迁安市阿里云企业邮箱代理商:阿里云服务器怎么使用 阿里云企业邮箱优势 阿里云企业邮箱是阿里云推出的一款专业、安全、稳定的企业邮件服务,具有以下优势: 1. 强大的防垃圾邮件功能,有效过滤垃圾邮件,保护企业邮箱安全。 2. 多终端同步,支持在电脑、手机、平板等多个设备上同步收发邮件,提高工作效率。 3. 大容量存储空间,满足企业对邮件存储的需求,无需担心空间不…

    2024年2月22日
    67900
  • 济宁阿里云代理商:阿里大于短信验证购买

    阿里大于短信验证是一项提供短信验证码服务的阿里云产品。济宁有一些阿里云代理商可以帮助您购买和配置阿里大于短信验证服务。 作为阿里云代理商,他们可以为您提供以下服务: 提供阿里大于短信验证产品介绍和使用指导。 帮助您选择适合您的业务需求的阿里大于短信验证套餐。 协助您完成阿里大于短信验证的购买和支付手续。 提供阿里大于短信验证的技术支持和故障排除。 根据您的需…

    2024年1月22日
    65800
  • 企业对阿里云企业邮箱定制化的功能创新期望和实际应用效果评估?

    企业对阿里云企业邮箱定制化的功能创新期望和实际应用效果评估 引言 在信息化时代,企业邮箱已经成为企业内部与外部沟通的重要工具之一。阿里云企业邮箱以其稳定、安全、易用等特点受到众多企业的青睐。然而,随着企业对沟通效率与信息安全的需求逐步提升,越来越多的企业希望邮箱服务提供更加定制化的功能,以满足特定业务需求。本文将围绕企业对阿里云企业邮箱的功能创新期望、实际应…

    2024年10月29日
    59600

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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