久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2817|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

串口以固定格式發(fā)送信號(hào)給51單片機(jī)來(lái)控制多盞LED亮滅

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:538334 發(fā)表于 2019-10-30 18:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
10黑幣
單片小白剛接觸單片機(jī)不久,看見單片機(jī)可以通過(guò)串口通信來(lái)實(shí)現(xiàn)控制功能,就想通過(guò)串口觸摸屏輸出信號(hào)來(lái)實(shí)現(xiàn)控制多個(gè)LED,遂借來(lái)一個(gè)串口屏進(jìn)行試驗(yàn),發(fā)現(xiàn)串口屏只是輸出了一串?dāng)?shù)字(A5 5A 06 83 00 01 01 00 01),查了下串口屏說(shuō)明,對(duì)數(shù)字串做出如下解釋:一二位為幀頭(A5 5A),第三位為字節(jié)長(zhǎng)度(06),第四位為讀指令(83),后五位為字節(jié)位(00 01 01 00 01),多開關(guān)的話后五位會(huì)有所不同以區(qū)分是哪個(gè)開關(guān)發(fā)出的信號(hào);現(xiàn)本人只能做到串口有信號(hào)來(lái)只有一個(gè)LED亮滅,不知如何寫代碼讓單片機(jī)能識(shí)別這串?dāng)?shù)字來(lái)控制不同的LED亮滅,代碼如下,還望各位高手斧正、賜教。

單片機(jī)源程序如下:

#include <reg52.h>                               //載入頭文件

typedef unsigned int u16;                    //定義一些用到的函數(shù)
typedef unsigned char u8;
uchar i;

sbit led0=P0^0;                                                //定義LED管腳
sbit led1=P0^1;
sbit led2=P0^2;
sbit led3=P0^3;

void UsartInit()                            //初始化串口數(shù)據(jù)9600
{
   TMOD = 0x20;
   SCON = 0x50;
   TH1 = TL1 = 0xFD;
   PCON = 0x00;
   EA = 1;
   ES = 1;
   TR1 = 1;
}

void main()                                            
{
                   led0=0;                                            
                   led1=0;
                   led2=0;
                   led3=0;
               UsartInit();                           
                   while(1);
}

void Usart() interrupt 4                           //中斷函數(shù)
{
                            u8receiveData;
                            i=SBUF;
                                     switch(i)
                                      {
                                        Case  ' ?  ':led0=~led0;
                                        case   '  ?  ':led1=~led1;
                                        case   '  ?  ':led2=~led2;
                                        case   '  ? ':led3=~led3;
                                      }
                            receiveData=SBUF;
                            RI=0;
                            SBUF=receiveData;
                            while(!TI);
                            TI=0;
}


最佳答案

查看完整內(nèi)容

給你寫一個(gè)串口接收固定長(zhǎng)度字符串示例參考,需要按串口屏按鍵的定義修改。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2019-10-30 18:04 | 只看該作者
給你寫一個(gè)串口接收固定長(zhǎng)度字符串示例參考,需要按串口屏按鍵的定義修改。
  1. #include <reg51.h>

  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. sbit led0=P1^0;
  5. sbit led1=P1^1;
  6. sbit led2=P1^2;
  7. sbit led3=P1^3;

  8. u8 rec_buf[9];
  9. bit flag=0;

  10. void InitUART()
  11. {
  12.     TMOD = 0x20;
  13.     SCON = 0x50;
  14.     TH1 = 0xFA;
  15.     TL1 = TH1;
  16.     PCON = 0x80;
  17.     EA = 1;
  18.     ES = 1;
  19.     TR1 = 1;
  20. }
  21. void main()
  22. {
  23.         u8 i;
  24.         InitUART();
  25.         while(1)
  26.         {
  27.                 if(flag==1)
  28.                 {
  29.                         flag=0;
  30.                         //以下需要按自定義協(xié)議解析數(shù)據(jù),這是隨便寫的示范
  31.                         i=rec_buf[4]+rec_buf[5]+rec_buf[6]+rec_buf[7]+rec_buf[8];
  32.                         switch(i)
  33.                         {
  34.                                 case 0:led0=~led0;break;
  35.                                 case 1:led1=~led1;break;
  36.                                 case 2:led2=~led2;break;
  37.                                 case 3:led3=~led3;break;
  38.                         }       
  39.                 }
  40.         }
  41. }

  42. void UARTInterrupt() interrupt 4
  43. {
  44.         static u8 num=0;                //靜態(tài)變量
  45.         RI=0;                                                //接收中斷請(qǐng)求標(biāo)志位清0
  46.         rec_buf[num]=SBUF;        //接收到的數(shù)據(jù)保存在緩存數(shù)組
  47. //        SBUF=rec_buf[num];        //返回收到的數(shù)據(jù)
  48. //        while(!TI);
  49. //        TI=0;
  50.         if(rec_buf[0]==0xA5)        //驗(yàn)證數(shù)據(jù)頭第1字節(jié)
  51.         {
  52.                 num++;
  53.                 if(num==2)
  54.                 {
  55.                         if(rec_buf[1]!=0x5A)//驗(yàn)證數(shù)據(jù)頭第2字節(jié)
  56.                                 num=0;                //否則從第1字節(jié)重新接收字符串
  57.                 }
  58.                 if(num>=9)
  59.                 {
  60.                         flag=1;                        //接收完成標(biāo)志置1
  61.                         num=0;
  62.                 }
  63.         }
  64. }
  65. //A5 5A 06 83 00 01 01 00 01
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
kill_ha_ha + 5 謝謝總工給出的示例,讓我等小白能迅速學(xué)習(xí)

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:235200 發(fā)表于 2019-10-30 19:34 | 只看該作者
switch(i)
                                      {
                                        Case  ' ?  ':led0=~led0;
                                        case   '  ?  ':led1=~led1;
                                        case   '  ?  ':led2=~led2;
                                        case   '  ? ':led3=~led3;
}
接收到的數(shù)據(jù)不只是一個(gè),應(yīng)該把所有數(shù)據(jù)都接收完放在一個(gè)緩沖區(qū),而且接收緩字區(qū)數(shù)據(jù)前5個(gè)字節(jié),剩下的字節(jié)數(shù),每一個(gè)字節(jié)去控制一個(gè)LED燈,switch語(yǔ)句中的case未區(qū)分不同的數(shù)據(jù)

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
kill_ha_ha + 5 謝謝總工給出的解決方案

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:610681 發(fā)表于 2019-10-30 20:17 | 只看該作者
你好!
要想控制,需要后五位(00 01 01 00 01)數(shù)據(jù)來(lái)完成;
串口屏共設(shè)定多少個(gè)按鍵?每個(gè)按鍵的輸出都是什么?

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
kill_ha_ha + 5 謝謝助工的熱心回答

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产三级国产aⅴ浪潮 | 欧美一区二区三区一在线观看 | 日日夜夜天天 | 中文字幕一区二区三区不卡 | 日韩成人av在线播放 | 高清国产午夜精品久久久久久 | 欧美不卡视频 | av播播 | 国产视频线观看永久免费 | 久久极品 | 九色porny自拍视频 | 91精品一区 | 亚洲欧美日韩高清 | 成人精品一区二区三区中文字幕 | 午夜影院在线免费观看视频 | 狠狠干天天干 | 久久久精选 | av一区二区三区四区 | 久久亚洲一区 | 激情a| 在线一区 | 精品一区二区在线观看 | 99精品欧美一区二区三区 | 成人亚洲性情网站www在线观看 | 久久久久久国产 | 狠狠操狠狠干 | 国产精品99一区二区 | 国产精品视频导航 | 午夜丁香视频在线观看 | 91爱爱·com| 国内精品久久久久久 | 黄色毛片在线观看 | 狠狠的干狠狠的操 | 日韩欧美精品在线播放 | 亚洲成人免费视频在线观看 | 精品欧美一区二区在线观看欧美熟 | www,黄色,com| 性网址 | 黄色在线网站 | 日韩精品无码一区二区三区 | 无码国模国产在线观看 |