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

QQ登錄

只需一步,快速開(kāi)始

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

甲機(jī)通過(guò)單片機(jī)串口控制乙機(jī)LED閃爍的設(shè)計(jì)報(bào)告

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:392008 發(fā)表于 2018-9-11 17:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
設(shè)計(jì)題目:甲機(jī)通過(guò)串口控制乙機(jī)LED閃爍
一、設(shè)計(jì)實(shí)驗(yàn)條件
計(jì)算機(jī)與通信工程實(shí)驗(yàn)室
二、設(shè)計(jì)任務(wù)及要求
兩片單片機(jī)(稱為甲機(jī)和乙機(jī))之間采用串行通信方式1來(lái)控制乙機(jī)的LED1閃爍,LED2閃爍, LED1和LED2同時(shí)閃爍,或者同時(shí)關(guān)閉LED1和LED2。
  •   甲機(jī)發(fā)送字符“A”,控制乙機(jī)的LED1閃爍;
  • 甲機(jī)發(fā)送字符“B”,控制乙機(jī)的LED2閃爍;
  • 甲機(jī)發(fā)送字符“C”,控制乙機(jī)的LED1和LED2同時(shí)閃爍;
  • 甲機(jī)停止發(fā)送任何命令字符,則乙機(jī)的LED1和LED2均停止閃爍。
在上述功能的基礎(chǔ)上,在電路中添加LED指示燈和蜂鳴器,使系統(tǒng)可以同時(shí)識(shí)別依次按下的多個(gè)按鍵,在到達(dá)指定位置后蜂鳴器發(fā)出短暫聲音且LED閃爍片刻,數(shù)字繼續(xù)滾動(dòng)顯示。例如,當(dāng)前位置在1層時(shí),用戶依次按下4、6、5時(shí),則數(shù)字分別向上滾動(dòng)到4、5、6時(shí)暫停且LED閃爍片刻,同時(shí)蜂鳴器發(fā)出提示音。聲音頻率可固定或可變。如果在待去的樓層的數(shù)字中,有的在當(dāng)前運(yùn)行的反方向,則數(shù)字現(xiàn)在當(dāng)前方向運(yùn)行完畢后,再依次按順序前往反方向的數(shù)字位置。

三、設(shè)計(jì)報(bào)告的內(nèi)容
  • 緒論

為了增強(qiáng)實(shí)踐能力,拓展學(xué)習(xí)范圍,加深對(duì)單片機(jī)原理及相關(guān)知識(shí)的理解與應(yīng)用,我們組隊(duì)參加了此次單片機(jī)課程設(shè)計(jì),并選擇了“甲機(jī)通過(guò)串口控制乙機(jī)LED閃爍”作為本次課設(shè)的題目。

  • 設(shè)計(jì)主體
設(shè)計(jì)電路圖:

結(jié)束語(yǔ):本次單片課設(shè)試驗(yàn)是鍛煉我們動(dòng)手能力的一個(gè)考驗(yàn),讓我們將課上學(xué)到的以及試驗(yàn)中學(xué)到的融入到此次課設(shè)中,極大地增強(qiáng)了我們的實(shí)際操作能力,感謝我的隊(duì)友和老師。
參考資料陳海宴.51單片機(jī)原理及應(yīng)用【M】.北京:北京航空航天大學(xué)出版社,2006年四、設(shè)計(jì)時(shí)間與安排
1、設(shè)計(jì)時(shí)間:        1周2、設(shè)計(jì)時(shí)間安排:  熟悉實(shí)驗(yàn)設(shè)備、收集資料: 1  天設(shè)計(jì)圖紙、實(shí)驗(yàn)、計(jì)算、程序編寫(xiě)調(diào)試:4 天編寫(xiě)課程設(shè)計(jì)報(bào)告: 1  天答辯: 1  天


MAX232:簡(jiǎn)介和主要作用

【MAX232是一種雙組驅(qū)動(dòng)器/接收器,片內(nèi)含有一個(gè)電容性電壓發(fā)生器以便在單5V電源供電時(shí)提供EIA/TIA-232-E電平�!�

當(dāng)用單片機(jī)和PC機(jī)通過(guò)串口進(jìn)行通信,盡管單片機(jī)有串行通信的功能,但單片機(jī)提供的信號(hào)電平和RS232的標(biāo)準(zhǔn)不一樣,因此要通過(guò)max232這種類(lèi)似的芯片進(jìn)行電平轉(zhuǎn)換。

引腳介紹

第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。

第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。

其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。

8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。

TTL/CMOS數(shù)據(jù)從11引腳(T1IN)、10引腳(T2IN)輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從14腳(T1OUT)、7腳(T2OUT)送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從13引腳(R1IN)、8引腳(R2IN)輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從12引腳

(R1OUT)、9引腳(R2OUT)輸出。

第三部分是供電。15腳GND、16腳VCC(+5v)。

電路分析:

甲機(jī)P1.0口連接一個(gè)秒脈沖,當(dāng)開(kāi)關(guān)按下時(shí),產(chǎn)生一個(gè)下降沿,此時(shí)軟件命令p3.1口發(fā)送一個(gè)字符,經(jīng)過(guò)max232傳輸?shù)揭覚C(jī)p3.0口,由軟件命令控制乙機(jī)p0.0口和p0.3口連接的LED閃爍與熄滅。從而實(shí)現(xiàn)甲機(jī)通過(guò)串口控制乙機(jī)LED閃爍。

代碼:甲機(jī)程序



  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. sbit K1=P1^0;                //P1.0腳作為換檔開(kāi)關(guān)
  4. void delay();                 //延時(shí)子函數(shù)

  5. void conveysymbol(uchar c)    //傳送字符
  6. {
  7.               SBUF=c;                //將要傳送字符的ASCII碼寫(xiě)入甲機(jī)的SBUF上
  8.               while(TI==0);            //當(dāng)SBUF數(shù)據(jù)滿時(shí)跳出循環(huán)
  9.               TI=0;                  //將TI手動(dòng)清零
  10. }

  11. void main()
  12. {
  13.               uchar model=0;          //換檔變量
  14.               SCON=0x40;             //串口為工作方式1
  15.               TMOD=0x20;            //定時(shí)器1工作方式2
  16.               PCON=0x00;            //波特率不加倍
  17.               TH1=0xfd;              //波特率為9600bps
  18.               TL1=0xfd;
  19.               TI=0;                  //默認(rèn)SBUF未寫(xiě)滿
  20.               TR1=1;                //啟動(dòng)定時(shí)器1
  21.               while(1)
  22.               {
  23.                             if(K1==0)
  24.                                           {
  25.                                                         while(K1==0);                 //每檢測(cè)到P1.0引腳有下降沿,即換檔
  26.                                                         model=(model+1)%4;
  27.                                           }
  28.                             switch(model)
  29.                             {
  30.                                           case 0:  break;//無(wú)操作            
  31.                                           case 1: conveysymbol('A'); break;     //傳送字符A的ASCII碼
  32.                                           case 2: conveysymbol('B'); break;     //傳送字符B的ASCII碼
  33.                                           case 3: conveysymbol('C'); break;     //傳送字符C的ASCII碼
  34.                             }
  35.                             delay();           //延時(shí)
  36.               }

  37. }

  38. void delay()              //延時(shí)子函數(shù)
  39. {
  40.               uchar i,j;
  41.               for(i=200;i>0;i--)
  42.               for(j=500;j>0;j--);
  43. }

  44. 乙機(jī)程序


  45. #include<reg51.h>
  46. #define uchar unsigned char
  47. sbit LED1=P0^0;                //P0.0引腳接LED燈1
  48. sbit LED2=P0^3;                //P0.0引腳接LED燈1
  49. void delay();                   //延時(shí)子函數(shù)
  50. void main()
  51. {
  52.               SCON=0x50;              //串口為工作方式1,允許接收
  53.               TMOD=0x20;             //定時(shí)器1工作方式2
  54.               PCON=0x00;             //波特率不加倍
  55.               TH1=0xfd;               //波特率為9600bps
  56.               TL1=0xfd;
  57.               RI=0;                   //默認(rèn)SBUF未寫(xiě)滿
  58.               TR1=1;                 // 啟動(dòng)定時(shí)器1
  59.               LED1=LED2=0;           //led燈初始狀態(tài)為滅
  60.               while(1)
  61.               {
  62.                             if(RI)               //當(dāng)RI為1,即SBUF寫(xiě)滿時(shí),進(jìn)入換檔
  63.                             {
  64.                                           RI=0;           //手動(dòng)將RI清零
  65.                                           switch(SBUF)
  66.                                           {
  67.                                                         case 'A': LED1=~LED1;LED2=0;break; //接收到A的ASCII碼值時(shí)執(zhí)行此句
  68.                                                         case 'B': LED2=~LED2;LED1=0;break; //接收到B的ASCII碼值時(shí)執(zhí)行此句
  69.                                                         case 'C': LED1=~LED1;LED2=~LED2; //接收到C的ASCII碼值時(shí)執(zhí)行此句
  70.                                           }
  71.                             }
  72.                             else LED1=LED2=0; //若接收不到來(lái)自主機(jī)的字符,兩個(gè)led燈均滅
  73.                             delay();
  74.               }

  75. }
  76. void delay()
  77. {
  78.               uchar i,j;
  79.               for(i=200;i>0;i--)
  80.               for(j=500;j>0;j--);
  81. }
復(fù)制代碼



完整的Word格式文檔51黑下載地址:
串口.doc (188.5 KB, 下載次數(shù): 26)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表