找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教个单片机串口通信和定时器问题

[复制链接]
跳转到指定楼层
楼主
本人小白一枚,如图这个题请问流水闪烁各1s用定时器这一步和两机串口通信怎么联系到一块,谢谢大佬,麻烦详细点谢谢(求求详细点代码)

51hei图片20240526170935.png (58.88 KB, 下载次数: 21)

51hei图片20240526170935.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1122364 发表于 2024-5-26 17:11 | 只看该作者
用的Proteus仿真的
回复

使用道具 举报

板凳
ID:619259 发表于 2024-5-27 10:42 | 只看该作者
U1发送按键标志码,U2接收标志码,定时器+流水灯。各个击破,难度不大。
回复

使用道具 举报

地板
ID:1122364 发表于 2024-5-27 14:31 | 只看该作者
cy009 发表于 2024-5-27 10:42
U1发送按键标志码,U2接收标志码,定时器+流水灯。各个击破,难度不大。

哥不会写了帮忙改一下呗谢谢

1.png (10.68 KB, 下载次数: 28)

1.png

2.jpg (60.32 KB, 下载次数: 25)

2.jpg

3.png (10.59 KB, 下载次数: 25)

3.png
回复

使用道具 举报

5#
ID:123289 发表于 2024-5-27 16:22 | 只看该作者
这是两码事。
两机串行通讯,只要开启双方的串行中断,通讯时,约几ms中断一次,完成一个字节的交流。
流水闪烁中人用定时器,每间隔1S处理一下显示就行了。
回复

使用道具 举报

6#
ID:161164 发表于 2024-5-27 23:16 | 只看该作者

回复

使用道具 举报

7#
ID:1109793 发表于 2024-5-28 07:23 | 只看该作者
就两个状态,用啥串口啊,两个脚各自表示一个状态就行了啊。把两个按键传递到P30和P31就行了吧
回复

使用道具 举报

8#
ID:925236 发表于 2024-5-30 17:04 | 只看该作者
第一个ic发送控制信息  0x01 0x02 第二个ic收到后执行 定时器里设定1秒标志位 用for循环
回复

使用道具 举报

9#
ID:619259 发表于 2024-5-30 21:25 | 只看该作者
jiesz185 发表于 2024-5-27 14:31
哥不会写了帮忙改一下呗谢谢

流水灯程序不要放在U1,U1只负责发送按键信息,流水灯程序由U2负责。
回复

使用道具 举报

10#
ID:332444 发表于 2024-6-13 14:24 | 只看该作者
昨天写了一个非定时的串口实现运行如上图

1.gif (226.07 KB, 下载次数: 19)

1.gif
回复

使用道具 举报

11#
ID:332444 发表于 2024-6-13 14:27 | 只看该作者
void CKSZ()
{
        SCON=0X50;//串口模式1允许接收
        TMOD=0X21;//T1工作模式2
        PCON=0X00;//波特率不倍增
        TH1=TL1=0XFD;//波特率9600
        TI=RI=0;
        TR1=1;
        IE=0X90;//允许串口中断
        TH0+=0Xdc;//定时器赋初值,定时10ms触发中断,自动补偿方式
        TL0+=0X00;
        TR0=1; //启动定时器T0。
        ET0=1; //开启定时器
        EA=1; //全局中断开关
}
void ZhongDuan() interrupt 1
{
        ++Js;
        TH0+=0Xdc;
        TL0+=0X00;
}

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/xianfajushi/article/details/139632525
回复

使用道具 举报

12#
ID:332444 发表于 2024-6-13 14:34 | 只看该作者
想要看就干脆看个明白从非定时转定时代码基本一样。
#include "reg52.h"
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共阴0~F消隐减号
sbit k1=P3^4;
sbit k2=P3^5;
sbit k3=P3^6;
sbit k4=P3^7;
bit k=0,kk=0;
void CKF(unsigned char C)
{//向串口发送数据
        SBUF=C;
        while(!TI);
        TI=0;
}
void CKS() interrupt 4
{//串口接收数据
        if(RI)
        {
                RI=0;
                if(SBUF=='S'){k=1;kk=0;}
                if(SBUF=='X'){k=0;kk=1;}
                if(SBUF=='L'){k=kk=0;}
        }
}
void CKSZ()
{
        SCON=0X50;//串口模式1允许接收
        TMOD=0X20;//T1工作模式2
        PCON=0X00;//波特率不倍增
        TH1=TL1=0XFD;//波特率9600
        TI=RI=0;
        TR1=1;
        IE=0X90;//允许串口中断
}
void main()
{//缘由https://ask.csdn.net/questions/8117223
        unsigned char Xd=0,ls=0,ys=0,sy=0,sm=0;
        CKSZ();
        while(1)
        {
                if(++ys==0)
                {
                                if(++sy==0)
                                {
                                        if(k)
                                        {
                                                if(ls)ls*=2;else ls=1;
                                                if(sm<9)++sm;else sm=0;
                                        }
                                        if(kk)
                                        {
                                                if(ls)ls/=2;else ls=128;
                                                if(sm)--sm;else sm=9;
                                        }
                                        if(k==kk)ls=k;
                                }
                        P1=ls;//流水灯
                        P2=smgduan[sm];//静态数码管
                }
                if(!k1&&!++Xd)
                {
                        CKF('S');
                        while(!k1);
                }
                if(!k2&&!++Xd)
                {
                        CKF('X');
                        while(!k2);
                }
                if(!k3&&!++Xd)
                {
                        CKF('L');
                        while(!k3);
                }
        }
}
https://blog.csdn.net/xianfajushi/article/details/139620581
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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