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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機雙機通訊設計 含源碼 原理圖+文檔

[復制鏈接]
跳轉到指定樓層
樓主
甲機
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define Data_ADC0809 P1                 //????P1???Data_ADC0809 ???????????Data_ADC0809??????P1???



  5. uchar temp;                                         //??????ADC????
  6. //ADC0809
  7. sbit ST=P3^3;
  8. sbit EOC=P3^6;
  9. sbit OE=P3^2;


  10. uchar code table[]={
  11. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  12. sbit led0=P0^0;
  13. sbit led1=P0^3;
  14. sbit key=P3^5;
  15. uchar count,a;

  16. extern uchar ADC0809();


  17. void delay(uint z)
  18. {
  19.         uint i,j;
  20.         for(i=z;i>0;i--)
  21.                 for(j=120;j>0;j--);
  22. }
  23. void put(uchar c)
  24. {
  25.         SBUF=c;
  26.         while(!TI);
  27.         TI=0;
  28. }
  29. void init()
  30. {
  31.         TMOD=0x20;
  32.         TH1=0XFD;
  33.         TL1=0XFD;
  34.         SCON=0X50;
  35.         TR1=1;
  36.         EA=1;
  37.         ES=1;
  38. }

  39. //ADC0809??????
  40. uchar ADC0809()
  41. {
  42.         uchar temp_=0x00;
  43.         //??????????

  44.         OE=0;
  45.         //????????
  46.         ST=0;
  47.         //??????
  48.         ST=1;
  49.         ST=0;
  50.         //???ж???AD???????
  51.         while(EOC==0)
  52.         //????????AD?
  53.         OE=1;
  54.         temp_=Data_ADC0809;
  55.         OE=0;
  56.         return temp_;
  57. }

  58. void main() //??????
  59. {
  60.         P2=0x00;
  61.         init();
  62.         while(1)
  63.         {
  64.         
  65.                 temp=ADC0809();          //????????
  66.         
  67.         
  68.                 if(key==0)
  69.                 {
  70.                         delay(10);
  71.                         if(key==0)
  72.                         {
  73.                         put(temp);

  74.                         }
  75.                 }
  76.                         
  77.                         delay(100);
  78.         }
  79. }
  80. void ser() interrupt 4           //????
  81. {
  82.         if(RI==1)
  83.         {
  84.                 a=SBUF;
  85.                 RI=0;
  86.                 P2=table[a];
  87.         }
  88. }
復制代碼

乙機
  1. #include<reg51.h>          //????
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit key =P3^6;         //????        
  5. sbit spwm =P1^0;   //pwm????
  6. uchar a,pwm,flag,t;  //???????????
  7. uint num=0;
  8. uchar count=-1;
  9. void delay(uint z)
  10. {
  11.         uint i,j;
  12.         for(i=z;i>0;i--)
  13.                 for(j=110;j>0;j--);
  14. }
  15. /**************************************                                                                                                                                                                           
  16. 1602???
  17. **************************************/
  18. sbit RS = P2^5;         //lcd??????????        
  19. sbit RW = P2^6;
  20. sbit E  = P2^7;
  21. /**************************************
  22. ?????
  23. **************************************/
  24. void delay5ms()   
  25. {
  26.     uchar i,v,k;
  27.     for(i=1;i>0;i--)
  28.         for(v=168;v>0;v--)
  29.             for(k=22;k>0;k--);
  30. }
  31. /**************************************
  32. д???
  33. **************************************/
  34. void lcd_Write_com(uchar com)         
  35. {
  36.         RS=0;                        //???????????
  37.         RW=0;                                  //д????
  38.         P0=com;                                          //д???
  39.         delay5ms();        E=1;                //????????
  40.         delay5ms();        E=0;                //?????????
  41. }
  42. /**************************************
  43. д????
  44. **************************************/
  45. void lcd_write_date(uchar date)        
  46. {
  47.         RS=1;                                        //????????????
  48.         RW=0;                                        //д????
  49.         P0=date;                                //д????
  50.         delay5ms();        E=1;                //????????
  51.         delay5ms();        E=0;                //?????????
  52. }
  53. /**************************************
  54. ???????
  55. **************************************/
  56. void dis_lcd1602(uchar x,uchar y,uchar dat)
  57. {
  58.         uchar add;
  59.         if(y==1)         add=(0x80+x);
  60.         if(y==2)         add=(0xc0+x);
  61.         lcd_Write_com(add);                //д???
  62.         lcd_write_date(dat);        //д????
  63. }  
  64. /**************************************
  65. ????????
  66. **************************************/
  67. void lcd1602_init()
  68. {
  69.         lcd_Write_com(0x38);        //????8λ?????2?У?5*7
  70.         lcd_Write_com(0x01);        //????
  71.         lcd_Write_com(0x0c);        //??????????????????
  72.         lcd_Write_com(0x06);        //?趨???????????????λ
  73.         lcd_Write_com(0x80);        //???????
  74. }
  75. /**************************************
  76. ?????????????
  77. **************************************/
  78. void hz_lcdDis(uchar x,uchar y,uchar *p) //???????
  79. {
  80.    uchar i=0,temp;
  81.    if(x)temp = 0x40;   else temp = 0;
  82.    for(i=y;*p!='\0';i++,p++)
  83.    {
  84.                 lcd_Write_com(i|0x80+temp);
  85.                 lcd_write_date(*p);
  86.                 delay5ms();                          
  87.    }
  88. }
  89. /**************************************
  90. ?????????????
  91. **************************************/
  92. void  num_lcdDis(uchar X,uchar Y,uint num,uchar n)        
  93. {
  94.         uint i=0,temp,hang;   
  95.         n +=1;
  96.            if(X)hang = 0x40;else hang = 0;
  97.            for(i=(n-1);i>0;i--)
  98.     {           
  99.                   lcd_Write_com((i+Y-1)|0x80+hang);          //???λ??????
  100.                   temp = num%10+0x30;
  101.                   lcd_write_date(temp);        
  102.                  delay5ms();
  103.                   num/=10;                                         
  104.         }        
  105. }
  106. void put(uchar c)          //???????c
  107. {
  108.         SBUF=c;
  109.         while(!TI);
  110.         TI=0;
  111. }
  112. void init()        //?????PWM?????
  113. {
  114.         TMOD=0X20;
  115.         TH0=236;
  116.         TL0=235;
  117.         TH1=0XFD;
  118.         TL1=0XFD;
  119.         TR0=1;
  120.         TR1=1;
  121.         ET0=1;
  122.         SM0=0;
  123.         SM1=1;
  124.         REN=1;
  125.         SCON=0X50;
  126.         EA=1;
  127.         ES=1;
  128.         spwm=1;
  129. }
  130. void main()
  131. {
  132.         lcd1602_init();//????????
  133.         hz_lcdDis(0,1,"Welcome");                //?????
  134.         init();

  135.         while(1)          //??????????????????????????
  136.         {

  137.             
  138. //         if(flag==1)
  139. //         {
  140. //         flag=0;
  141. //         ES=0;
  142. //         pwm=SBUF;
  143. //         while(!TI);
  144. //         TI=0;
  145. //         ES=1;
  146. //         }

  147.         
  148.                 delay(100);        
  149.         }        
  150. }
  151. void to()interrupt 1 //pwm?ж?
  152. {
  153.   t++;
  154.   if(t==255)
  155.   {
  156.           t=0;
  157.         spwm=0;
  158.   }
  159.   if(pwm==t)
  160.   {
  161.    spwm=1;
  162.   
  163.   }
  164. }
  165. void ser() interrupt 4 //???????
  166. {
  167.         if(RI==1)
  168.         {
  169.                 num++;
  170.                 RI=0;
  171.                 a=SBUF;
  172. //                flag=1;
  173.                   pwm=SBUF;
  174.                 num_lcdDis(1,0,a,3); //AD?????2λ
  175.                 put(num);
  176.                 if(num==9){
  177.                  num=0;
  178.                 }
  179.         }
  180. }
復制代碼




乙機代碼圖.png (203.28 KB, 下載次數: 61)

乙機代碼圖

乙機代碼圖

甲機代碼圖.png (208.18 KB, 下載次數: 52)

甲機代碼圖

甲機代碼圖

文件圖.png (4.73 KB, 下載次數: 50)

文件圖

文件圖

波形圖.png (208.2 KB, 下載次數: 64)

波形圖

波形圖

電路圖.png (295.14 KB, 下載次數: 49)

電路圖

電路圖

單片機大作業雙機通訊.rar

731.66 KB, 下載次數: 17, 下載積分: 黑幣 -5

文件夾 包括仿真 代碼 文檔

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:737050 發表于 2020-4-24 15:38 | 只看該作者
追問一下實現的是什么功能?
回復

使用道具 舉報

板凳
ID:640944 發表于 2020-4-26 20:20 | 只看該作者
yuxinhai 發表于 2020-4-24 15:38
追問一下實現的是什么功能?

甲機發送正弦采樣,乙機顯示接收字節,并輸出接收的正弦波
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区 | 久久精品一区二区 | 波多野吉衣在线播放 | 91精品国产综合久久福利软件 | 成人免费看电影 | 四虎国产 | 欧美日韩国产三级 | aaaaaaa片毛片免费观看 | 亚洲精品一区在线 | 人操人人| 亚洲视频一区二区三区 | 日韩在线观看视频一区 | 久久区二区 | 国产特一级黄色片 | 国产精品电影网 | 日本视频在线 | 日韩欧美在线播放 | 成人午夜电影网 | 精品成人 | 亚洲二区在线观看 | 五月天婷婷久久 | 中文成人在线 | 日本久久一区二区三区 | 免费看爱爱视频 | 日韩精品一区二区三区中文在线 | 一区二区三区成人 | 91精品中文字幕一区二区三区 | 久久999 | 天天色图 | 久久久无码精品亚洲日韩按摩 | 欧美中文字幕一区二区三区亚洲 | 亚洲福利一区二区 | 久久999| av网站免费 | 久久久夜夜夜 | 欧美一级在线 | 久久久久久久97 | 精品日韩在线 | 91精品国产综合久久久久久首页 | 影视先锋av资源噜噜 | 精品日韩一区二区 |