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

相关推荐

  • 柳州阿里云代理商:阿里云双12活动

    柳州阿里云代理商现在正在推出阿里云双12活动。此次活动中,我们将为您提供多项优惠政策和活动福利,让您能够以更实惠的价格购买阿里云产品和服务。 在此次双12活动中,您可以享受到以下优惠: 折扣优惠:我们将推出多项打折优惠政策,您可以以更加优惠的价格购买阿里云服务器、域名、云存储等产品。 代金券赠送:在活动期间,我们将赠送代金券给您,您可在购买阿里云产品时使用,…

    2023年12月15日
    57700
  • 台州阿里云代理商:access查看存储过程

    台州阿里云代理商您好,要查看存储过程中的内容,可以使用以下步骤: 登录到阿里云数据库管理控制台。 在控制台中选择您要查看的数据库实例。 在左侧菜单中找到“SQL操作”选项,点击进入。 在SQL操作页面中,输入对应的SQL语句来查看存储过程的内容。例如,可以使用如下语句来查看存储过程的定义: SHOW CREATE PROCEDURE your_procedu…

    2024年2月25日
    62700
  • 云数网是物联网产业吗?

    云数网是物联网产业吗? 物联网对应了互联网的感觉和运动神经系统。云计算是互联网的核心硬件层和核心软件层的集合,也是互联网中枢神经系统萌芽。大数据代表了互联网的信息层(数据海洋),是互联网智慧和意识产生的基础。包括物联网,传统互联网,移动互联网在源源不断的向互联网大数据层汇聚数据和接受数据。云计算与物联网推动大数据发展。 物联网云平台具备哪些功能?哪家好些 物…

    2023年8月26日
    65400
  • 上海智慧消防物联网云平台厂家

    智慧消防系统厂家有哪些?求推荐个 推荐中电数通,中电数通作为智慧消防技术领域的领先企业,近十年来坚持不懈地致力于大平台、大数据应用系统软件以及网络化、智能化硬件产品的研发和技术创新,满足当下行业需求。主要产品:消防管理信息系统、三小场所安全管理系统、消防监督管理系统,智慧安全应急系统、水压监测管理系统等。 消防物联网是什么,消防物联网厂家有哪些 消防物联网就…

    2023年8月28日
    70400
  • 长春阿里云代理商:acm题输入多组数据库

    阿里云ACM:数据库管理的首选利器 引言 随着云计算的快速发展,数据库管理已成为企业不可或缺的一环。而在众多云服务提供商中,长春阿里云代理商作为阿里巴巴集团旗下的云计算子公司,凭借其强大的技术实力和丰富的产品线,成为了许多企业数据库管理的首选之一。本文将重点探讨阿里云的ACM(Application Configuration Management)产品在数…

    2024年1月8日
    60200

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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