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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3268|回復: 1
收起左側

兩個單片機之間進行串口通信程序與Proteus仿真

[復制鏈接]
ID:710460 發表于 2021-12-4 23:14 | 顯示全部樓層 |閱讀模式
1、在發送端proteus圖紙中,  按下按鍵K1和K2,可以改變要發送的數據num(數值范圍0~9),按下K3通過串口發送num數據到接收端。

接收端能夠接受數據,并在數碼管上顯示接受的數字。

2、接收端也可以進行數據的發送,也可以發送數據到發送端,同時發送端也能顯示接收到的數據。
仿真演示案例.png

單片機源程序如下:

  1. /*
  2.                 串口發送與接受一體的控制代碼
  3. */
  4. #include <REGX51.H>
  5. #include <intrins.h>

  6. //共陽0-F dp-a
  7. unsigned char code tab[16]=
  8. {0xc0,0xf9,0xa4,0xb0,
  9. 0x99,0x92,0x82,0xf8,
  10. 0x80,0x90,0x88,0x83,
  11. 0xc6,0xa1,0x86,0x8e};

  12. #define uchar unsigned char
  13. sbit K1=P1^0;//ADD  遞增
  14. sbit K2=P1^1;//DEC  遞減
  15. sbit K3=P1^2;//DEC  遞減



  16. void UartInit(void)                //9600bps@11.0592MHz
  17. {
  18.         PCON &= 0x7F;                //波特率不倍速
  19.         SCON = 0x50;                //8位數據,可變波特率
  20.         TMOD = 0x20;                //設定定時器1為8位自動重裝方式
  21.         TL1 = 0xFD;                //設定定時初值
  22.         TH1 = 0xFD;                //設定定時器重裝值
  23.         ET1 = 0;                //禁止定時器1中斷
  24.         TR1 = 1;                //啟動定時器1
  25.         ES=1;//開串口中斷
  26.         EA=1;//開總中斷
  27. }

  28. char putchar (uchar ch)//向串口發送數據
  29. {
  30.          SBUF=ch;
  31.          while(!TI);//查詢發生是否完畢
  32.          TI=0;//發送完畢,TI由軟件清零
  33.         return ch;
  34. }

  35. /********************************************************

  36. 函數功能: 延時c  ms
  37. 參    數:  c
  38. 返回  值: 無
  39. *********************************************************/

  40. void delayms( unsigned int ms)                //@11.0592MHz
  41. {
  42.          unsigned char i, j;
  43.         for(;ms>0;ms--)
  44.                 {
  45.                                 _nop_();
  46.                                 i = 2;
  47.                                 j = 199;
  48.                                 do
  49.                                 {
  50.                                         while (--j);
  51.                                 } while (--i);
  52.                 }
  53. }

  54. uchar Receive_nums=0;//接收到的  字符
  55. void Uart1() interrupt 4
  56. {        
  57.     if (RI)
  58.    {
  59.                         RI=0;        //清除RI位
  60.                         Receive_nums=SBUF;        
  61.                  
  62.    }
  63. }

  64. void main(void)
  65. {
  66.         uchar Transmit_nums=0;//發送給乙機的數字
  67.         UartInit();
  68.         
  69.         while(1)
  70.         {
  71.                 P0=~tab[Receive_nums];//在數碼管上顯示數字
  72.                 if(K1==0)//遞增按鍵
  73.                 {
  74.                         delayms(10);//消抖
  75.                          if(K1==0)
  76.                          {
  77.                                 Transmit_nums++;
  78.                                  if(Transmit_nums>9)
  79.                                          Transmit_nums=9;
  80.                          }
  81.                          while(K1==0);//等待按鍵K1松開
  82.                 }
  83.                
  84.                 if(K2==0)//遞減按鍵
  85.                 {
  86.                         delayms(10);//消抖
  87.                          if(K2==0)
  88.                          {
  89.                                 Transmit_nums--;
  90.                                  if(Transmit_nums<1)
  91.                                          Transmit_nums=0;         
  92.                          }
  93.                  while(K2==0);//等待按鍵K2松開
  94.                 }
  95.                
  96.                 if(K3==0)//發送按鍵
  97.                 {
  98.                         delayms(10);//消抖
  99.                          if(K3==0)
  100.                          {
  101.                                 putchar(Transmit_nums);
  102.                          }
  103.                          while(K3==0);//等待按鍵K3松開
  104.                 }
  105.         }
  106. }
復制代碼
注意需要配合vspd軟件是用,百度即可獲取
http://www.zg4o1577.cn/bbs/dpj-108037-1.html
51hei.png
Keil代碼下載與Proteus仿真下載:
05_雙機通信.7z (63.03 KB, 下載次數: 79)



評分

參與人數 1黑幣 +40 收起 理由
admin + 40 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:710460 發表于 2021-12-4 23:15 | 顯示全部樓層
VSPD是為windows系統添加虛擬串口的軟件
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线一区二区 | www.成人.com | 欧美三级三级三级爽爽爽 | 亚洲电影在线播放 | 久久久国产一区二区三区 | 免费在线观看一区二区三区 | 日韩成人精品视频 | 一级欧美一级日韩片免费观看 | www.久| 国产精品久久久久久久午夜片 | 日本爱爱视频 | 久久免费高清 | 国产一级片一区二区三区 | 成人在线网 | 精品二区| 国产人久久人人人人爽 | 中文字幕亚洲专区 | 精品国产青草久久久久福利 | 免费一区 | 国产精品久久在线 | 国产成人精品久久久 | 午夜激情视频 | 国产欧美视频一区二区 | 亚洲精品久久久久avwww潮水 | 免费国产视频 | 蜜桃黄网| 91成人在线| 亚洲欧美男人天堂 | 国产精品一区在线观看你懂的 | 亚洲综合大片69999 | 亚洲视频二区 | 日日干夜夜干 | 亚洲精精品 | 很很干很很日 | 亚洲人va欧美va人人爽 | 国产精品久久久久久影视 | 夜色www国产精品资源站 | 亚洲先锋影音 | 日韩在线观看网站 | 欧美精品在欧美一区二区少妇 | 日韩在线视频一区 |