找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10334|回复: 10
打印 上一主题 下一主题
收起左侧

怎么样通过51单片机串口一次发送4个16进制数据

  [复制链接]
跳转到指定楼层
楼主
10黑币
怎么样通过51单片机串口一次发送4个16进制数据

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2017-7-20 23:38 | 只看该作者
发一个会不会呀?
回复

使用道具 举报

板凳
ID:82765 发表于 2017-7-21 08:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

地板
ID:164602 发表于 2017-7-21 08:44 | 只看该作者
你的意思不是很明确:单片机是上位机,还是下位机?即:单片机发送还是接收?
就按我自己的理解回答你了:我认为是单片机一次性发送四个16进制数据。
我的程序:
#include<reg51.h>

unsigned char code PuZh[] = {0x34,0x2d,0x48,0x65};

unsigned char j;

void UsartConfiguration();
void Delay10ms(unsigned int c);
void Out_Data (unsigned char Data[]);

void main()
{
        UsartConfiguration();
        Delay10ms(100);
        while(1)
        {
                j=sizeof(PuZh);
                Out_Data(PuZh);
                Delay10ms(1000);
        }
}

void UsartConfiguration()
{
        SCON=0X50;
        TMOD=0X20;
        PCON=0X80;
        TH1=0XF3;//波特率是4800的
        TL1=0XF3;
        TR1=1;
}

void Delay10ms(unsigned int c)
{
    unsigned char a, b;
    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }         
        }      
}

void Out_Data (unsigned char Data[])
{
        unsigned char i;
        for (i=0;i<j;i++)//
        {
                SBUF = Data[i];
                while (!TI);
                TI = 0;
        }
}


1.jpg (39.64 KB, 下载次数: 180)

1.jpg
回复

使用道具 举报

5#
ID:200190 发表于 2017-7-21 15:44 | 只看该作者
我用的是15单片机,它是作为主机,通过串口给红外遥控模块发送6个指令,每一个指令由四个16进制数组成
回复

使用道具 举报

6#
ID:589913 发表于 2019-10-5 02:53 | 只看该作者
请问你这个16进制指令问题解决了吗
回复

使用道具 举报

7#
ID:406699 发表于 2019-10-28 10:08 | 只看该作者
HC6800-ES-V2.0 发表于 2017-7-21 08:44
你的意思不是很明确:单片机是上位机,还是下位机?即:单片机发送还是接收?
就按我自己的理解回答你了: ...

有工程吗?
回复

使用道具 举报

8#
ID:275111 发表于 2019-10-30 11:07 | 只看该作者
HC6800-ES-V2.0 发表于 2017-7-21 08:44
你的意思不是很明确:单片机是上位机,还是下位机?即:单片机发送还是接收?
就按我自己的理解回答你了: ...

一直没明白,看了你的回答才有点明白,串口发送字符和16进制数。
回复

使用道具 举报

9#
ID:606366 发表于 2019-10-30 16:15 | 只看该作者
不论是几进制或者是字符串还是别的什么,他只是4个数据,通过串口发送4个数据就可以;

void SEND ( uint8_t  *Date )
{
        uint8_t  i;
        for ( i = 0; i < 4; i++ )
        {                SBUF = *( Date + i );
                while (!TI);
                TI = 0;
        }
}

回复

使用道具 举报

10#
ID:461428 发表于 2020-11-20 19:54 | 只看该作者
我往串口屏发送命令  也是需要发送HEX格式的数据  我早懵逼了  怎么发送串口屏都没得反应  困扰我的也是串口发送数据的问题  到底HEX格式和发出命令的数据是啥区别的  百思不得其解  借贵处得个答案  谢谢
回复

使用道具 举报

11#
ID:461428 发表于 2020-11-20 19:57 | 只看该作者
发送命令AA 52 CC 33 C3 3C勾选串口助手的HEX发送。串口屏能正常相应。但是单片机发送
printf("AA 52 CC 33 C3 3C“)结果串口屏没反应  我知道我发送的是字符  但是如何发送的是16进制的命令呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表