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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3850|回復: 0
打印 上一主題 下一主題
收起左側

Proteus仿真 51單片機測試printf發(fā)送函數(shù) 可以發(fā)送字符串和數(shù)字

[復制鏈接]
跳轉到指定樓層
樓主
ID:471909 發(fā)表于 2019-7-7 16:44 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

其他詳見附件!printf可以發(fā)送數(shù)字  put_seris_port("字符串");可以發(fā)送字符串,接收部分已經(jīng)寫好!

單片機源程序如下:
  1. #include<reg52.h>                 //庫文件
  2. #include<stdio.h>
  3. #include "string.h"       
  4. #include "master.h"
  5. #define uchar unsigned char//宏定義無符號字符型
  6. #define uint unsigned int  //宏定義無符號整型
  7. /********************************************************************
  8.                             端口定義
  9. *********************************************************************/
  10. sbit P1_0=P1^0;
  11. sbit P1_1=P1^1;
  12. sbit P1_2=P1^2;
  13. sbit P1_3=P1^3;
  14. /********************************************************************
  15.                             變量定義
  16. *********************************************************************/
  17. unsigned char uart_rx_finish=0;  
  18. unsigned char uart_rx_cnt=0;
  19. unsigned char dis2[16];                   //串口接收數(shù)據(jù)顯示
  20. /********************************************************************

  21. /********************************************************************
  22.                             延時函數(shù)
  23. *********************************************************************/
  24. void delay_ms(uchar ms)
  25. { uchar i;
  26. while(ms--)
  27. for(i=0;i<120;i++);
  28. }
  29. void DelayUs2x(unsigned char t)        //  T=tx2+5 uS
  30. {   
  31. while(--t);
  32. }
  33. /********************************************************************
  34.                             主函數(shù)
  35. *********************************************************************/
  36. void main()
  37. {
  38.   uint i=0;
  39.   UART_Init();         
  40.   delay_ms(500);
  41.   delay_ms(500);
  42.   delay_ms(500);
  43.   while(1)
  44.           {  i++;
  45. //         puts_to_SerialPort("d\r\n");    //數(shù)據(jù)發(fā)送以\r\n作為結束符
  46.          printf("%d\r\n",i);    //數(shù)據(jù)發(fā)送以\r\n作為結束符
  47.          delay_ms(500);
  48.         }
  49. }       
  50. /********************************************************************
  51.                               串口處理程序
  52. *********************************************************************/
  53. void UART_Init(void)
  54. {
  55.     SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收  
  56.     TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重裝
  57.         PCON = 0x00;
  58.     TH1   = 0xFD;               // TH1:  重裝值 9600 波特率 晶振 11.0592MHz
  59.         TL1 = TH1;  
  60.     TR1   = 1;                  // TR1:  timer 1 打開                        
  61.     EA    = 1;                  //打開總中斷
  62.     ES    = 1;                  //打開串口中斷
  63. }

  64. void SendByte(unsigned char dat)//串口發(fā)送單字節(jié)數(shù)據(jù)
  65. {
  66.         unsigned char time_out;
  67.         time_out=0x00;
  68.         SBUF = dat;                          //將數(shù)據(jù)放入SBUF中
  69.         while((!TI)&&(time_out<100))  //檢測是否發(fā)送出去
  70.         {time_out++;DelayUs2x(10);}        //未發(fā)送出去 進行短暫延時
  71.         TI = 0;                                                //清除ti標志
  72. }

  73. void SendStr(unsigned char *s,unsigned char length)           //發(fā)送定長度字符串
  74. {
  75.         unsigned char NUM;
  76.         NUM=0x00;
  77.         while(NUM<length)        //發(fā)送長度對比
  78.         {
  79.                 SendByte(*s);  //放松單字節(jié)數(shù)據(jù)
  80.                 s++;                  //指針++
  81.                 NUM++;                  //下一個++
  82.            }
  83. }
  84. char putchar(char c) //printf函數(shù)會調用putchar()
  85.         {
  86.         SendByte(c);
  87.         return c;
  88. }
  89. void puts_to_SerialPort(uchar *s)
  90. {
  91.         while(*s != '\0')
  92.         {
  93.                  SendByte(*s);
  94.                 s++;
  95.                 delay_ms(5);       
  96.         }
  97. }
  98. void UART_SER (void) interrupt 4         //串行中斷服務程序
  99. {
  100.         uchar c;
  101.         if(RI)                        //判斷是接收中斷產(chǎn)生
  102.         {
  103.                 c  = SBUF;
  104.              if(c=='\n') {
  105.                 uart_rx_finish=1;  
  106.                 dis2[uart_rx_cnt]='\0';       
  107.                  }
  108.                  else{
  109.                   if(uart_rx_cnt<sizeof(dis2)-1)
  110.                            dis2[uart_rx_cnt++]=c;
  111.                  }

  112.                 RI=0;                      //標志位清零
  113.         }         
  114.         if(TI)  //如果是發(fā)送標志位,清零
  115.         TI=0;
  116. }
  117. /********************************************************************
  118.                               結束
  119. *********************************************************************/
復制代碼

所有資料51hei提供下載:
甲keil.rar (61.74 KB, 下載次數(shù): 49)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 香蕉视频久久久 | 国产一区二区视频在线观看 | 粉嫩一区二区三区四区公司1 | 欧美不卡 | 综合成人在线 | 国产成人在线视频播放 | a级毛片毛片免费观看久潮喷 | 久久精品91| 羞羞在线观看视频 | 久久国产综合 | 亚洲精品久久久久avwww潮水 | 无码国模国产在线观看 | 日韩成人在线视频 | a级毛片毛片免费观看久潮喷 | 国产资源一区二区三区 | 亚洲精品大全 | 国产精品视频久久久久久 | 欧美日韩中文字幕 | 久久99精品久久久久婷婷 | 欧美成人免费在线视频 | 欧美日韩国产一区二区三区 | 一区二区三区四区电影视频在线观看 | 三级av在线 | 日本亚洲欧美 | 国产精品一二三区 | 午夜激情影院 | 亚洲九九精品 | 9999精品视频 | 羞羞视频在线观看 | 欧美一区二区久久 | www.99久久.com | 欧美日韩在线观看一区二区三区 | 国产精品永久 | 午夜影院免费体验区 | 亚洲综合色婷婷 | 午夜网 | 亚洲国产一区二区三区 | 日韩欧美在线免费观看视频 | 欧美一区二区三区视频在线观看 | 国产一区二区在线播放 | 国产欧美在线一区二区 |