找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

两个51单片机串口通信程序遇到的疑惑

查看数: 2123 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-6-5 17:29

正文摘要:

大家好最近学习单片机串口通信,教材给出的例子是一个数字密码(935467)从甲传递给乙,再显示到数码管上。但通过Proteus仿真,一直显示“8.8.8.8.8.8”,看不出问题在哪里。 发送端代码如下: //程序:ex6_1.c // ...

回复

ID:1008259 发表于 2023-6-8 11:03
wulin 发表于 2023-6-7 15:49
你仔细看一下甲机代码,只在初始化时发送一次,如果乙机还没有准备好,当然收不到,后续也没有信号了。

多谢,我再好好琢磨~
ID:213173 发表于 2023-6-7 15:49
Intel2006 发表于 2023-6-7 13:15
多谢,但是我设置了消隐并修改了硬件为7SEG-MPX6-CA之后,显示是6个“0”,还是没解决啊?感觉甲机的数据 ...

你仔细看一下甲机代码,只在初始化时发送一次,如果乙机还没有准备好,当然收不到,后续也没有信号了。
ID:1008259 发表于 2023-6-7 13:15

多谢,但是我设置了消隐并修改了硬件为7SEG-MPX6-CA之后,显示是6个“0”,还是没解决啊?感觉甲机的数据传送到乙(串口助手可以检测到数据发送),但并没有成功给buffer[]赋值,使得这个数组还是初始化的样子。请问您知道里面的原因吗?
ID:1008259 发表于 2023-6-7 08:01

是的,我昨晚也发现它用的是共阴极了。教材还是国家特等奖,但例程不止这一个有问题。
ID:213173 发表于 2023-6-7 07:04
Intel2006 发表于 2023-6-7 00:41
多谢楼上的回复,但似乎不是消隐的问题。


ID:213173 发表于 2023-6-7 07:03
Intel2006 发表于 2023-6-7 00:41
多谢楼上的回复,但似乎不是消隐的问题。

消隐是问题之一,从你的图片看明显是数码管用错了,要用共阳。
ID:1008259 发表于 2023-6-7 00:41
多谢楼上的回复,但似乎不是消隐的问题。
ID:213173 发表于 2023-6-6 10:21
void disp()
{
        unsigned char w,i,j;
        w=0x01;                //位码赋初值
        for(i=0;i<6;i++)
        {
                P2=0xff;           // 消隐
                P1=tab[buffer[i]]; // 送共阳极显示字型段码,buffer[i]作为数组分量的下标
                P2=~w;             // 送反相后的位码
                for(j=0;j<100;j++);// 显示延时
                w<<=1;             // w左移一位
        }
}
ID:235200 发表于 2023-6-6 01:05
P2口输出经过了反相器74LS04,所以在程序中的P1和P2输出刚好反好,应该为
P1=~tab[buffer[i]]; // 送共阳极显示字型段码,buffer[i]作为数组分量的下标
     P2=w;             // 送反相后的位码
另外仿真时,数码管显示未消影,所以最终要把程序改成如下就对了:
P1=0;
P1=~tab[buffer[i]]; // 送共阳极显示字型段码,buffer[i]作为数组分量的下标
P2=w;             // 送反相后的位码

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

Powered by 单片机教程网

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