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

相关推荐

  • 温州阿里云代理商:api制作教程

    作为一个AI智能助手,我可以为您提供一些云服务API制作教程的参考,希望能帮助到您。 API的基础知识 API全称Application Programming Interface,即应用程序接口,是一种软件接口。通过API,不同的应用程序之间可以相互通信、数据交换,实现数据共享等操作。常见的API类型有Web API、RESTful API、SOAP AP…

    2024年2月28日
    21400
  • 阿里云国际站注册教程:AIDL进程间通信

    首先,访问阿里云国际站(http://www.alibabacloud.com),如果你还没有账号,点击右上角的“注册”按钮。 在注册页面,填写你的登录邮箱地址和密码,并确认服务条款。然后点击“注册”。 阿里云会给你的邮箱地址发送一封确认邮件。在确认邮件中点击“确认账号”按钮完成注册。 登录阿里云国际站,进入控制台页面。 在控制台页面,点击左侧的“产品与服务…

    2023年12月29日
    22700
  • 阿里云备案转移怎么操作

    如何把阿里云备案域名转给别人 这个不是该你考虑的问题,你可以问下这个“别人”要怎么接收域名,一般都用站内push。如果这个“别人”要转出,你就要获取转移码给他了。给转移码时要注意收款细节,所以还是建议站内push,可以带价收款。但如果你只是想卖这个域名,可以上一口价、QQ群找合适的买家、或一些第三方交易平台都可以。注意:如果域名的备案是你名下,建议先注销备案…

    2023年8月27日
    24400
  • 怒江阿里云企业邮箱代理商:钉钉怎么修改邮箱

    怒江阿里云企业邮箱代理商:钉钉怎么修改邮箱 第一步:登录钉钉 首先,在手机上打开钉钉应用,输入正确的账号和密码进行登录。 第二步:进入“工作”模块 在钉钉首页,点击下方导航栏中的“工作”,进入工作模块。 第三步:进入“邮箱”功能 在工作模块中,向右滑动屏幕,找到“邮箱”功能图标并点击。 第四步:选择要修改的邮箱账号 在邮箱界面中,点击顶部的账号名称,在弹出的…

    2024年1月14日
    28200
  • 慈利阿里云企业邮箱代理商:阿里电子邮箱注册申请网址

    慈利阿里云企业邮箱代理商:阿里电子邮箱注册申请网址 阿里云企业邮箱是一款专为企业定制的高效、安全、稳定的电子邮件解决方案,拥有诸多优势。作为慈利阿里云企业邮箱代理商,我们为您提供便捷的注册服务。 阿里云企业邮箱的优势 高效稳定:基于阿里云的强大技术支持,确保邮件系统的高可用性和稳定性。 安全可靠:采用安全加密技术,有效防止信息泄露和黑客攻击。 统一管理:通过…

    2024年2月7日
    25500

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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