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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1828|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機和上位機通信程序遇到問題了 求大神支招!

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:229339 發(fā)表于 2017-8-25 17:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序是:發(fā)送給單片機01時,單片機發(fā)送“Turn on ad!”給上位機,開啟ad轉(zhuǎn)換,并顯示AD的電壓,在數(shù)碼管的前三位顯示ad的數(shù)字量。

但發(fā)送01給單片機后,擰動電位器后,二極管會改變,但數(shù)碼管一直顯示8.8.8.(會閃);求幫忙解決!!!!
還有用adc0804芯片來實現(xiàn)ad轉(zhuǎn)換,我到現(xiàn)在還有點搞不懂!!!支招!!!

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <stdio.h>
  4. #define uchar unsigned char
  5. sbit dula=P2^6;
  6. sbit wela=P2^7;
  7. sbit adwr=P3^6;
  8. sbit adrd=P3^7;
  9.                   
  10. uchar a,b,flag,flag_ad,flag_smg,ad_vol,t0;
  11. float num;

  12. uchar code table[]={
  13. 0x3f,0x06,0x5b,0x4f,
  14. 0x66,0x6d,0x7d,0x07,
  15. 0x7f,0x6f,0x77,0x7c,
  16. 0x39,0x5e,0x79,0x71};

  17. void delay(uchar z)
  18. {                                       
  19.         uchar x,y;
  20.         for(x=z;x>0;x--)
  21.                 for(y=110;y>0;y--);      
  22. }

  23. void display(uchar num)
  24. {
  25.         uchar bai,shi,ge;
  26.         bai=num/100;
  27.         shi=num%100/10;
  28.         ge=num%10;

  29.         wela=1;
  30.         P0=0x7e;
  31.         wela=0;
  32.         P0=0xff;
  33.         dula=1;
  34.         dula=table[bai];
  35.         dula=0;
  36.         delay(5);

  37.         wela=1;
  38.         P0=0x7d;
  39.         wela=0;
  40.         P0=0xff;
  41.         dula=1;
  42.         dula=table[shi];
  43.         dula=0;
  44.         delay(5);

  45.         wela=1;
  46.         P0=0x7b;
  47.         wela=0;
  48.         P0=0xff;
  49.         dula=1;
  50.         dula=table[ge];
  51.         dula=0;
  52.         delay(5);

  53. }

  54. uchar ad()
  55. {
  56.         uchar adval;
  57.         wela=1;
  58.         P0=0x7f;
  59.         adwr=1;
  60.         adwr=0;
  61.         adwr=1;

  62.         delay(10);

  63.         P1=0xff;
  64.         adrd=1;
  65.         adrd=0;
  66.         adval=P1;
  67.         adrd=1;
  68.         P1=adval;
  69.         return adval;
  70. }



  71. void main()
  72. {
  73.         EA=1;
  74.         TMOD=0x21;
  75.         TH1=0xfd;
  76.         TL1=0xfd;
  77.         TR1=1;
  78.         TH0=0x4c;
  79.         TL0=0x00;
  80.         ET0=1;
  81.         SM0=0;
  82.         SM1=1;
  83.         REN=1;
  84.         ES=1;

  85.         while(1)
  86.         {
  87.                 if(flag==1)
  88.                 {
  89.                         flag=0;
  90.                         ES=0;
  91.                         TI=1;
  92.                         switch(b)
  93.                         {        
  94.                                 case 0 : puts("Turn on ad!\n");TR0=1;break;
  95.                                 case 1 : puts("Turn off ad!\n");TR0=0;break;
  96.                                 case 2 : puts("Error!\n");break;
  97.                         }
  98.                         while(!TI);
  99.                         TI=0;
  100.                         ES=1;
  101.                 }
  102.                 if(flag_smg==1)
  103.                 {
  104.                         ES=0;
  105.                         flag_smg=0;
  106.                         ad_vol=ad();
  107.                         num=(float)ad_vol*5.0/256.0;
  108.                         TI=1;
  109.                         printf("The voltagle is %fV\n",num);
  110.                         while(!TI);
  111.                         TI=0;
  112.                         ES=1;
  113.                 }
  114.                 display(ad_vol);
  115.         }

  116. }

  117. void timer0() interrupt 1
  118. {
  119.         TH0=0x4c;
  120.         TL0=0x00;
  121.         t0++;
  122.         if(t0==20)
  123.         {
  124.                 t0=0;
  125.                 flag_smg=1;
  126.         }      
  127. }



  128. void uart() interrupt 4
  129. {
  130.         RI=0;
  131.         a=SBUF;
  132.         flag=1;
  133.         if(a==1)
  134.                 b=0;
  135.         else if(a==2)
  136.                 b=1;
  137.         else
  138.                 b=2;               
  139. }
復制代碼


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级特黄aaaaaa大片 | 高清乱码男女免费观看 | 国产精品久久久久久久久久久久久久久 | 99久久精品国产一区二区成人 | 日韩三级精品 | 国产成人精品免费视频 | 伊人精品久久 | 亚洲午夜视频在线观看 | 欧美福利一区二区 | 国产激情视频在线 | 欧美日韩视频在线 | av在线一区二区三区 | 韩国三级影院 | 色婷婷丁香 | av在线天堂网 | 高清不卡av | 黄色成人毛片 | 国产一级在线视频 | 91在线观看免费视频 | 免费成人小视频 | 欧美理论在线观看 | 国产免费高清视频 | 成人自拍视频在线观看 | 久久久久毛片 | 亚洲日本视频 | 欧美网站在线观看 | 中文字幕在线观看免费视频 | 久久99精品久久久久久国产越南 | 国产精品黄 | 欧美日韩精品一区二区在线播放 | 日韩在线视频一区 | 中国一级黄色 | 精品久久久久久一区二区里番 | 国产一级免费视频 | 午夜久久精品 | 黄色国产在线观看 | 国产精品久久久久久久成人午夜 | 高清视频一区二区 | 国产精品久久久久久久久 | 97人人看 | 黄色精品网站 |