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

相关推荐

  • 茂名阿里云代理商:阿里云.com域名备案

    茂名阿里云代理商是指在茂名地区代理销售阿里云产品和提供相应售后服务的经销商。如果您想要备案阿里云.com域名,需要按照以下步骤进行: 首先,前往阿里云官方网站,登录您的阿里云账号。 在阿里云控制台中,找到并点击域名服务。 在域名服务页面,点击备案申请,然后选择“备案阿里云.com域名”选项。 根据页面提示,填写相关备案信息,包括主体信息、网站信息等。确保填写…

    2023年12月29日
    73100
  • 郑州阿里云创新中心基地地址在哪

    郑州富士康招幕中心在那条路啊 洛阳锦远站有直达富士康的车下车坐红三轮就说到富士康体检中心就到了 郑州富士康的招募中心在哪里啊…… 花园路农业路国贸中心A座607……火车站广场正对面中原大厦商务宾馆505 我朋友进的时候就是在这里报名的 进厂速度快 有保障 郑州二七富士康招募中心在那 一直往右,走过立交桥,再走一会就看到,在路右边。注意看楼顶有写字 郑州高新技…

    2023年8月25日
    74900
  • 榆林阿里云代理商:安卓多进程通信

    安卓多进程通信是指在安卓系统中,不同进程之间进行数据交互和通信的方式。 阿里云代理商可以为榆林地区的企业提供安卓多进程通信的解决方案。一般来说,安卓多进程通信有以下几种方式: 使用Messenger:Messenger是一种轻量级的进程间通信方式,它基于Binder机制实现,可以通过Handler实现消息的发送和接收,支持跨进程通信。 使用AIDL:AIDL…

    2024年2月6日
    65900
  • 泰州阿里云代理商:as30 网络编程

    阿里云:您的首选云计算服务提供商 背景介绍 阿里云,即阿里巴巴云计算有限公司,是全球领先的云计算技术和服务提供商。作为泰州地区的阿里云代理商,AS30致力于帮助企业实现数字化转型与创新发展。 一站式云计算服务 阿里云提供全方位的云计算解决方案,涵盖基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)等多个层次。无论您是初创企业、中小企业…

    2024年1月26日
    69700
  • 视频服务器 阿里云

    阿里云提供了视频服务器的解决方案,可以满足用户对于视频存储、处理和分发的需求。 视频服务器可以通过阿里云对象存储(OSS)来存储用户上传的视频文件,并配合阿里云的基于云服务器ECS的视频处理服务,可以对视频进行转码、截图、拼接等操作。 同时,阿里云还提供了视频直播和点播的解决方案,用户可以使用阿里云的视频直播和点播服务,将视频内容通过云服务器进行实时直播和点…

    2023年9月26日
    69100

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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