0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

甲机通过串口来控制乙机发送的数字显示在数码管上

GReq_mcu168 2018-02-02 11:22 次阅读

名称:甲机串口程序

说明:甲机向乙机发送控制命令字符,

甲机同时接收乙机发送的数字,并显示在

数码管上。

*/

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitLED1=P1^0;

sbitLED2=P1^3;

sbitK1=P1^7;

ucharOperation_No=0;//操作代码

//数码管代码

ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//延时

voidDelayMS(uintms)

{

uchari;

while(ms--)for(i=0;i<120;i++);

}

//向串口发送字符

voidPutc_to_SerialPort(ucharc)

{

SBUF=c;

while(TI==0);

TI=0;

}

//主程序

voidmain()

{

LED1=LED2=1;

P0=0x00;

SCON=0x50;串口模式1,允许接收

TMOD=0x20;//T1工作模式2

PCON=0x00;波特率不倍增

TH1=0xfd;

TL1=0xfd;

TI=RI=0;

TR1=1;

IE=0x90;//允许串口中断

while(1)

{

DelayMS(100);

if(K1==0)//按下K1时选择操作代码0,1,2,3

{

while(K1==0);

Operation_No=(Operation_No+1)%4;

switch(Operation_No)根据操作代码发送A/B/C或停止发送

{

case0:Putc_to_SerialPort('X');

LED1=LED2=1;

break;

case1:Putc_to_SerialPort('A');

LED1=~LED1;LED2=1;

break;

case2:Putc_to_SerialPort('B');

LED2=~LED2;LED1=1;

break;

case3:Putc_to_SerialPort('C');

LED1=~LED1;LED2=LED1;

break; }

}

}

}

//甲机串口接收中断函数

voidSerial_INT()interrupt4

{

if(RI)

{

RI=0;

if(SBUF>=0&&SBUF<=9) P0=DSY_CODE[SBUF];

elseP0=0x00;

}

}

/*名称:乙机程序接收甲机发送字符并完成相应动作

说明:乙机接收到甲机发送的信号后,根据相应信号控制LED完成不同闪烁动作。

*/

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitLED1=P1^0;

sbitLED2=P1^3;

sbitK2=P1^7;

ucharNumX=-1;

//延时

voidDelayMS(uintms)

{

uchari;

while(ms--)for(i=0;i<120;i++);

}

//主程序

voidmain()

{

LED1=LED2=1;

SCON=0x50;串口模式1,允许接收

TMOD=0x20;//T1工作模式2

TH1=0xfd;

TL1=0xfd;//波特率9600

PCON=0x00;波特率不倍增

RI=TI=0;

TR1=1;

IE=0x90;

while(1)

{

DelayMS(100);

if(K2==0)

{

while(K2==0);

NumX=++NumX%11;//产生0~10范围内的数字,其中10表示关闭

SBUF=NumX;

while(TI==0);

TI=0;

}

}

}

voidSerial_INT()interrupt4

{

if(RI)//如收到则LED则动作

{

RI=0;

switch(SBUF)//根据所收到的不同命令字符完成不同动作

{

case'X':LED1=LED2=1;break;//全灭

case'A':LED1=0;LED2=1;break;//LED1亮

case'B':LED2=0;LED1=1;break;//LED2亮

case'C':LED1=LED2=0;//全亮

}

}

}

甲机通过串口来控制乙机发送的数字显示在数码管上

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数码管
    +关注

    关注

    31

    文章

    1845

    浏览量

    90325
  • 串口
    +关注

    关注

    14

    文章

    1516

    浏览量

    74933

原文标题:单片机C语言程序设计:单片机之间双向通信

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【proteus练一练3.5】单片之间双向通信

    /*名称:串口程序 说明:
    发表于 03-05 09:58

    如何通过串口通信发送“K+22”,而在数码管上显示22?

    如何通过串口通信发送“K+22”,而在数码管上显示22?
    发表于 04-04 17:41

    用两个51单片进行双机通信,发送接收并用数码管显示显示数字发送数字不一致是为什么?

    本帖最后由 一只耳朵怪 于 2018-6-8 11:28 编辑 用两个51单片进行双机通信,发送
    发表于 06-07 18:22

    编程控制单片机实现与其他单片之间的双机通信

    的LED数码管上进行显示。2、数码管能够显示
    发表于 11-18 08:50

    如何利用单片实现复杂功能的双机通信

    自己的八位一体LED数码管上一位一位地进行显示数码管的动态显示方式)。(3)接收到
    发表于 01-14 09:13

    单片串口实现甲乙两级数据传输的过程分享

    题目:利用单片串口实现甲乙两级的数据传输。要求:①连续发送0-F,共记16个字符,并显示
    发表于 02-23 07:23

    ADC采样电压用显示在数码管上

    ADC采样电压用显示在数码管上,有兴趣的同学可以下载学习
    发表于 04-27 15:51 134次下载

    基于8051的Proteus仿真-通过串口控制LED闪烁

    基于8051的Proteus仿真-通过串口控制
    发表于 09-01 23:35 32次下载

    单片C语言双向通信程序设计

    发送控制命令字符,
    的头像 发表于 11-21 16:33 4171次阅读
    单片<b class='flag-5'>机</b>C语言双向通信程序设计

    单片应用范例教程之转串口通过串口控制LED

    本文档的主要内容详细介绍的是单片应用范例教程之转串口通过串口
    发表于 01-03 11:11 27次下载
    单片<b class='flag-5'>机</b>应用范例教程之转<b class='flag-5'>串口</b><b class='flag-5'>甲</b><b class='flag-5'>机</b><b class='flag-5'>通过</b><b class='flag-5'>串口</b><b class='flag-5'>控制</b><b class='flag-5'>乙</b><b class='flag-5'>机</b>LED

    使用51单片实现上位给下位发送数字在数码管显示的程序

    本文档的主要内容详细介绍的是使用51单片实现上位给下位发送数字,下位
    发表于 08-08 17:33 17次下载
    使用51单片<b class='flag-5'>机</b>实现上位<b class='flag-5'>机</b>给下位<b class='flag-5'>机</b><b class='flag-5'>发送</b><b class='flag-5'>数字</b><b class='flag-5'>在数码管</b><b class='flag-5'>显示</b>的程序

    使用51单片用替换的方法在数码管上显示时钟的程序免费下载

    本文档的主要内容详细介绍的是使用51单片用替换的方法在数码管上显示时钟的程序免费下载。
    发表于 07-10 17:40 1次下载
    使用51单片<b class='flag-5'>机</b>用替换的方法<b class='flag-5'>在数码管上</b><b class='flag-5'>显示</b>时钟的程序免费下载

    单片按键在数码管上显示键值的程序免费下载

    本文档的主要内容详细介绍的是单片按键在数码管上显示键值的程序免费下载
    发表于 05-10 18:15 3次下载
    单片<b class='flag-5'>机</b>按键<b class='flag-5'>在数码管上</b><b class='flag-5'>显示</b>键值的程序免费下载

    通过串口控制LED闪烁的仿真电路图免费下载

    本文档的主要内容详细介绍的是通过串口控制LE
    发表于 01-03 17:21 13次下载
    <b class='flag-5'>甲</b><b class='flag-5'>机</b><b class='flag-5'>通过</b><b class='flag-5'>串口</b><b class='flag-5'>控制</b><b class='flag-5'>乙</b><b class='flag-5'>机</b>LED闪烁的仿真电路图免费下载

    通过串口控制LED闪烁的仿真程序和电路图免费下载

    本文档的主要内容详细介绍的是通过串口控制LE
    发表于 05-26 16:56 27次下载
    <b class='flag-5'>甲</b><b class='flag-5'>机</b><b class='flag-5'>通过</b><b class='flag-5'>串口</b><b class='flag-5'>控制</b><b class='flag-5'>乙</b><b class='flag-5'>机</b>LED闪烁的仿真程序和电路图免费下载