0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

甲機(jī)通過串口來控制乙機(jī)發(fā)送的數(shù)字顯示在數(shù)碼管上

GReq_mcu168 ? 2018-02-02 11:22 ? 次閱讀

名稱:甲機(jī)串口程序

說明:甲機(jī)向乙機(jī)發(fā)送控制命令字符,

甲機(jī)同時接收乙機(jī)發(fā)送的數(shù)字,并顯示在

數(shù)碼管上。

*/

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitLED1=P1^0;

sbitLED2=P1^3;

sbitK1=P1^7;

ucharOperation_No=0;//操作代碼

//數(shù)碼管代碼

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

//延時

voidDelayMS(uintms)

{

uchari;

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

}

//向串口發(fā)送字符

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)根據(jù)操作代碼發(fā)送A/B/C或停止發(fā)送

{

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; }

}

}

}

//甲機(jī)串口接收中斷函數(shù)

voidSerial_INT()interrupt4

{

if(RI)

{

RI=0;

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

elseP0=0x00;

}

}

/*名稱:乙機(jī)程序接收甲機(jī)發(fā)送字符并完成相應(yīng)動作

說明:乙機(jī)接收到甲機(jī)發(fā)送的信號后,根據(jù)相應(yīng)信號控制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;//產(chǎn)生0~10范圍內(nèi)的數(shù)字,其中10表示關(guān)閉

SBUF=NumX;

while(TI==0);

TI=0;

}

}

}

voidSerial_INT()interrupt4

{

if(RI)//如收到則LED則動作

{

RI=0;

switch(SBUF)//根據(jù)所收到的不同命令字符完成不同動作

{

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;//全亮

}

}

}

甲機(jī)通過串口來控制乙機(jī)發(fā)送的數(shù)字顯示在數(shù)碼管上

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1873

    瀏覽量

    90865
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1540

    瀏覽量

    76060

原文標(biāo)題:單片機(jī)C語言程序設(shè)計:單片機(jī)之間雙向通信

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【proteus練一練3.5】單片機(jī)之間雙向通信

    /*名稱:機(jī)串口程序 說明:機(jī)機(jī)
    發(fā)表于 03-05 09:58

    如何通過串口通信發(fā)送“K+22”,而在數(shù)碼管上顯示22?

    如何通過串口通信發(fā)送“K+22”,而在數(shù)碼管上顯示22?
    發(fā)表于 04-04 17:41

    用兩個51單片機(jī)進(jìn)行雙機(jī)通信,機(jī)發(fā)送機(jī),機(jī)接收并用數(shù)碼管顯示顯示數(shù)字發(fā)送數(shù)字不一致是為什么?

    本帖最后由 一只耳朵怪 于 2018-6-8 11:28 編輯 用兩個51單片機(jī)進(jìn)行雙機(jī)通信,機(jī)發(fā)送
    發(fā)表于 06-07 18:22

    編程控制單片機(jī)實現(xiàn)與其他單片機(jī)之間的雙機(jī)通信

    機(jī)的LED數(shù)碼管上進(jìn)行顯示。2、機(jī)數(shù)碼管能夠顯示
    發(fā)表于 11-18 08:50

    如何利用單片機(jī)實現(xiàn)復(fù)雜功能的雙機(jī)通信

    自己的八位一體LED數(shù)碼管上一位一位地進(jìn)行顯示數(shù)碼管的動態(tài)顯示方式)。(3)機(jī)接收到
    發(fā)表于 01-14 09:13

    單片機(jī)串口實現(xiàn)甲乙兩級數(shù)據(jù)傳輸?shù)倪^程分享

    題目:利用單片機(jī)串口實現(xiàn)甲乙兩級的數(shù)據(jù)傳輸。要求:①機(jī)連續(xù)發(fā)送0-F,共記16個字符,并顯示
    發(fā)表于 02-23 07:23

    ADC采樣電壓用顯示在數(shù)碼管上

    ADC采樣電壓用顯示在數(shù)碼管上,有興趣的同學(xué)可以下載學(xué)習(xí)
    發(fā)表于 04-27 15:51 ?134次下載

    基于8051的Proteus仿真-機(jī)通過串口控制機(jī)LED閃爍

    基于8051的Proteus仿真-機(jī)通過串口控制機(jī)
    發(fā)表于 09-01 23:35 ?32次下載

    單片機(jī)C語言雙向通信程序設(shè)計

    機(jī)機(jī)發(fā)送控制命令字符,
    的頭像 發(fā)表于 11-21 16:33 ?4253次閱讀
    單片<b class='flag-5'>機(jī)</b>C語言雙向通信程序設(shè)計

    單片機(jī)應(yīng)用范例教程之轉(zhuǎn)串口機(jī)通過串口控制機(jī)LED

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)應(yīng)用范例教程之轉(zhuǎn)串口機(jī)通過串口
    發(fā)表于 01-03 11:11 ?27次下載
    單片<b class='flag-5'>機(jī)</b>應(yīng)用范例教程之轉(zhuǎn)<b class='flag-5'>串口</b><b class='flag-5'>甲</b><b class='flag-5'>機(jī)</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'>機(jī)</b>LED

    使用51單片機(jī)實現(xiàn)上位機(jī)給下位機(jī)發(fā)送數(shù)字在數(shù)碼管顯示的程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實現(xiàn)上位機(jī)給下位機(jī)發(fā)送數(shù)字,下位機(jī)
    發(fā)表于 08-08 17:33 ?19次下載
    使用51單片<b class='flag-5'>機(jī)</b>實現(xiàn)上位<b class='flag-5'>機(jī)</b>給下位<b class='flag-5'>機(jī)</b><b class='flag-5'>發(fā)送</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>在數(shù)碼管</b><b class='flag-5'>顯示</b>的程序

    使用51單片機(jī)用替換的方法在數(shù)碼管上顯示時鐘的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)用替換的方法在數(shù)碼管上顯示時鐘的程序免費(fèi)下載。
    發(fā)表于 07-10 17:40 ?1次下載
    使用51單片<b class='flag-5'>機(jī)</b>用替換的方法<b class='flag-5'>在數(shù)碼管上</b><b class='flag-5'>顯示</b>時鐘的程序免費(fèi)下載

    單片機(jī)按鍵在數(shù)碼管上顯示鍵值的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)按鍵在數(shù)碼管上顯示鍵值的程序免費(fèi)下載
    發(fā)表于 05-10 18:15 ?3次下載
    單片<b class='flag-5'>機(jī)</b>按鍵<b class='flag-5'>在數(shù)碼管上</b><b class='flag-5'>顯示</b>鍵值的程序免費(fèi)下載

    機(jī)通過串口控制機(jī)LED閃爍的仿真電路圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是機(jī)通過串口控制機(jī)LE
    發(fā)表于 01-03 17:21 ?13次下載
    <b class='flag-5'>甲</b><b class='flag-5'>機(jī)</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'>機(jī)</b>LED閃爍的仿真電路圖免費(fèi)下載

    機(jī)通過串口控制機(jī)LED閃爍的仿真程序和電路圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是機(jī)通過串口控制機(jī)LE
    發(fā)表于 05-26 16:56 ?27次下載
    <b class='flag-5'>甲</b><b class='flag-5'>機(jī)</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'>機(jī)</b>LED閃爍的仿真程序和電路圖免費(fèi)下載