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

QQ登錄

只需一步,快速開始

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

教你51單片機(jī)和PC串口通信 單片機(jī)的課程設(shè)計(jì)資料

[復(fù)制鏈接]
ID:427609 發(fā)表于 2018-11-16 15:06 | 顯示全部樓層 |閱讀模式
制作出來的實(shí)物圖如下:
捕獲.PNG

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
捕獲.PNG 0.png

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

  3. unsigned char key_s, key_v, tmp;
  4. char code str[] = "I love zhu xiao ying--CUMT \n\r";

  5. void send_int(void);
  6. void send_str();
  7. bit        scan_key();
  8. void proc_key();
  9. void delayms(unsigned char ms);
  10. void send_char(unsigned char txd);

  11. sbit        K1 = P1^4;

  12. main()
  13. {
  14.     send_int();
  15.         TR1 = 1;                                            // 啟動(dòng)定時(shí)器1
  16.         while(1)
  17.         {
  18.                 if(scan_key())                            // 掃描按鍵
  19.                 {
  20.                         delayms(10);                        // 延時(shí)去抖動(dòng)
  21.                         if(scan_key())                        // 再次掃描
  22.                         {
  23.                                 key_v = key_s;                // 保存鍵值
  24.                                 proc_key();                        // 鍵處理
  25.                         }
  26.                 }
  27.                 if(RI)                                                // 是否有數(shù)據(jù)到來
  28.                 {
  29.                         RI = 0;
  30.                         tmp = SBUF;                                // 暫存接收到的數(shù)據(jù)
  31.                         P0 = tmp;                                // 數(shù)據(jù)傳送到P0口
  32.                         send_char(tmp);                        // 回傳接收到的數(shù)據(jù)
  33.                 }        
  34.         }

  35. }
  36. void send_int(void)
  37. {     TMOD = 0x20;                        // 定時(shí)器1工作于8位自動(dòng)重載模式, 用于產(chǎn)生波特率
  38.         TH1 = 0xF3;                                // 波特率2400
  39.         TL1 = 0xF3;
  40.         SCON = 0x50;                        // 設(shè)定串行口工作方式
  41.         PCON&= 0xef;                        // 波特率不倍增
  42.                

  43.         IE = 0x0;                                // 禁止任何中斷
  44. }
  45. bit scan_key()        
  46. // 掃描按鍵                              
  47. {
  48.         key_s = 0x00;
  49.         key_s |= K1;
  50.         return(key_s ^ key_v);        
  51. }

  52. void proc_key()
  53. // 鍵處理
  54. {
  55.         if((key_v & 0x01) == 0)
  56.         {                        // K1按下
  57.                 send_str();                                // 傳送字串
  58.         }
  59. }

  60. void send_char(unsigned char txd)
  61. // 傳送一個(gè)字符
  62. {
  63.         SBUF = txd;
  64.         while(!TI);                                // 等特?cái)?shù)據(jù)傳送
  65.         TI = 0;                                        // 清除數(shù)據(jù)傳送標(biāo)志
  66. }

  67. void send_str()
  68. // 傳送字串
  69. {
  70.         unsigned char i = 0;
  71.         while(str[i] != '\0')
  72.         {
  73.                 SBUF = str[i];
  74.                 while(!TI);                                // 等特?cái)?shù)據(jù)傳送
  75.                 TI = 0;                                        // 清除數(shù)據(jù)傳送標(biāo)志
  76.                 i++;                                        // 下一個(gè)字符
  77.         }        
  78. }

  79. void delayms(unsigned char ms)        
  80. // 延時(shí)子程序
  81. {                                                
  82.         unsigned char i;
  83.         while(ms--)
  84.         {
  85.                 for(i = 0; i < 120; i++);
  86.         }
  87. }
復(fù)制代碼

所有資料51hei提供下載:
一步一步教你51_PC串口通信.rar (65.27 KB, 下載次數(shù): 11)


回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-11-16 17:33 | 顯示全部樓層
圖文不對(duì)  積分被收回
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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