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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3723|回復(fù): 0
收起左側(cè)

52單片機(jī)雙機(jī)通信Proteus仿真程序

[復(fù)制鏈接]
ID:618434 發(fā)表于 2020-5-18 08:17 | 顯示全部樓層 |閱讀模式
在PROTEUS上采用雙單片機(jī)A和B,采取TXD連接另一個(gè)單片機(jī)的RXD,建立一對一通信A外接4個(gè)按鍵,編號1~3;B外接一個(gè)數(shù)碼管,平時(shí)顯示0。 A按鍵后,B顯示相應(yīng)鍵號0.3秒;

進(jìn)階要求1:A的TXD與B的RXD間加入按鍵開關(guān)K,通過K的ON/OFF來控制通信連接的有效和無效;
                  運(yùn)行中,K由ON改為OFF,通信無效時(shí),B不響應(yīng)A的按鍵表示通信未建立;

進(jìn)階2:通信無效時(shí),B顯示9,表示通信無效;運(yùn)行中K由OFF改為ON,系統(tǒng)自動回復(fù)正常
1,首先考慮資源分配
波特率設(shè)置要用定時(shí)器1自動重裝載模式。
定時(shí)器1用于產(chǎn)生10ms中斷
定時(shí)器2用來產(chǎn)生20ms中斷
故可選用89c52單片機(jī)
2:主函數(shù)完成3個(gè)定時(shí)器初始化函數(shù),之后在while(1)休眠或啥也不干。
3:定時(shí)器2中斷服務(wù)函數(shù):
自動重裝載模式不需要重置本定時(shí)器
按鍵掃描函數(shù)獲取鍵號,若無按鍵鍵號為0
重置并啟動超時(shí)定時(shí)器(tim0)
根據(jù)S_OK狀態(tài)點(diǎn)亮LED(S_OK=0時(shí)點(diǎn)亮)
4:接收中斷模塊
S_OK置1
關(guān)閉超時(shí)定時(shí)器
5:10ms定時(shí)中斷模塊
S_OK=0
關(guān)閉超時(shí)定時(shí)器
接收B板模塊
同樣需要3個(gè)定時(shí)器
1:main函數(shù)中三個(gè)定時(shí)器初始化
2:接收中斷
直接顯示鍵號,開啟0.3s定時(shí)器
重置啟動超時(shí)定時(shí)器
發(fā)送信息給A板
3:0.3s定時(shí)中斷
關(guān)閉本定時(shí)器
顯示0
4:超時(shí)中斷函數(shù)
S_OK=0
數(shù)碼管顯示9
關(guān)閉本定時(shí)器
關(guān)閉0.3s定時(shí)器

發(fā)送A板主函數(shù)文件程序示例。完整程序和proteus圖見附件。
51hei.png

單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include"init.h"

  3. //sfr T2MOD=0XC9;


  4. void send(uchar num); //聲明子函數(shù)的時(shí)候要加分號
  5. void delay(int z)        //晶振11.592.延時(shí)z毫秒
  6. {
  7.   uint x,y;
  8.   for(x=z;x>0;x--)
  9.   for(y=110;y>0;y--);
  10. }
  11. void key()
  12. {
  13.         if(key3==0)
  14.         flash=4;
  15.         else if(key2==0)
  16.         flash=3;
  17.         else if(key1==0)
  18.         flash=2;
  19.         else if(key0==0)
  20.         flash=1;
  21.         else
  22.         flash=0;

  23. }







  24. void send(uchar num)
  25. {
  26.   SBUF=num;      //把發(fā)送的內(nèi)容寫進(jìn)sbuf,自動發(fā)送 ,發(fā)送數(shù)據(jù)時(shí)TI為0,!0為1
  27.   while(!TI);   //!邏輯非,發(fā)送完數(shù)據(jù),發(fā)送完數(shù)據(jù)時(shí)TI為1.!1為0,停止發(fā)送
  28. // led=1;
  29.   TI=0;             //TI需要軟件清零
  30. }

  31. void tim0() interrupt 1//超時(shí)中斷
  32. {
  33.          static unsigned char count;
  34.                                            //定義變量,記錄中斷次數(shù)
  35. //         TH0=0xd8;  
  36. //          TL0=0xf0;           //定時(shí)器重置,一幀數(shù)據(jù)一來一回兩個(gè)多毫秒,定時(shí)10ms夠了
  37.         S_OK=0;                           //進(jìn)入超時(shí)中斷,說明通信已經(jīng)中斷
  38.         led=1;
  39.         led2=1;
  40.         TR0=0;                           //通信已經(jīng)中斷,關(guān)閉超時(shí)定時(shí)器        
  41. //        count++;
  42. //        if(count==50)
  43. //         {
  44. //        led2=~led2;
  45. //        count=0;
  46. //        }
  47. }
  48. void receive() interrupt 4        
  49.                                                  //串行接收和發(fā)送中斷           
  50. {
  51.      if(RI==1)
  52.          {
  53.          S_OK=1;                        //進(jìn)入接收中斷說明通信正常   
  54.      RI = 0;                        //RI要手動清0
  55.          led=0;
  56.          led2=0;
  57.          TR0=0;                                //關(guān)閉超時(shí)定時(shí)器
  58.          }
  59.          if(TI==1)
  60.          {
  61.                 TI=0;
  62. //                TH0=0xd8;  
  63. //          TL0=0xf0;  
  64. TH0=0xec;  
  65.           TL0=0x78;
  66.         TR0=1;   
  67.          }
  68.   }
  69. void timer_T2() interrupt 5       //中斷函數(shù)
  70. {
  71.     static unsigned char count1;     //定義變量,記錄中斷次數(shù)
  72.     TF2=0;                      //軟件清零定時(shí)器2溢出標(biāo)志位
  73.         
  74.     count1++;
  75.         
  76.          
  77.          
  78.                                    //重置并啟動超時(shí)定時(shí)器
  79.                                          //根據(jù)S_OK點(diǎn)亮led3
  80.     if(count1==3)      
  81.     {
  82.     key();                           //掃描按鍵
  83.         SBUF=flash;       //發(fā)送一次鍵號key();                           //掃描按鍵
  84.         
  85.         count1=0;         //清零
  86.       
  87.     }
  88. }







  89. void main()
  90. {
  91.    //待運(yùn)行一次的初始化函數(shù)
  92.         tim2init();
  93.         tim1init() ;
  94.            tim0init();
  95.         TR0=0;
  96.         led=0;
  97.         led2=0;
  98.         led3=0;
  99.           while(1)
  100.            {
  101. //                    send(flash);
  102. //           if(S_OK==0)
  103. //           led3=1;
  104. //           else
  105. //           led3=0;
  106.                   //key();   

  107.                   
  108.            }
  109. }
復(fù)制代碼
全部資料51hei下載地址:
程序源碼和原理圖.rar (105.97 KB, 下載次數(shù): 33)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99亚洲精品 | 色约约视频 | 国户精品久久久久久久久久久不卡 | 国产黄色在线观看 | 呦呦在线视频 | 免费在线黄 | 日韩欧美一级片 | 在线视频一区二区 | 91一区 | 在线成人免费视频 | 日韩欧美一区二区三区免费观看 | 免费在线观看毛片 | 福利网址| 亚洲免费网址 | 中文字幕精品一区久久久久 | 日本一区二区不卡 | 国产黄色网址在线观看 | 天堂视频中文在线 | 俺去俺来也www色官网cms | 久久亚洲欧美日韩精品专区 | 欧美一区二区三区在线播放 | 久久久久久国产精品 | 国产精品永久免费 | www.99热这里只有精品 | 久久亚洲二区 | 91麻豆精品一区二区三区 | 久久免费高清 | 欧美国产日韩成人 | 国产a视频 | 视频在线一区二区 | 国产精品1区 | 欧美精品乱码久久久久久按摩 | 一区二区日韩 | 91精品国产91久久综合桃花 | 久久久亚洲精品视频 | 亚洲精品一区国语对白 | 久久精品99久久 | 黄色一级视频 | 亚洲精品一区二区三区四区高清 | 欧美久久久久久 | 国产草草视频 |