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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2119|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

一個(gè)關(guān)于TLC2543和C51單片機(jī)的數(shù)據(jù)采集問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿真電路圖如下,通道0的電壓是1.00,通道1的電壓是1.10,數(shù)碼管前三位顯示電壓值,后一位顯示通道號(hào)。正常情況下,數(shù)碼管的顯示應(yīng)該是1.00.0,1.10.1,······這樣子循環(huán)下去?墒堑谝淮尾杉臄(shù)據(jù)是1.29?請(qǐng)問(wèn)大佬們,這是什么原因呢?第二次采集的是1.00.1,數(shù)據(jù)也對(duì)應(yīng)不上。下一輪開始,數(shù)據(jù)就變成正確的,1.00.0,1.10.1,1.00.0,1.10.1·······。請(qǐng)問(wèn)各位大佬這是什么原因?怎么解決?


代碼如下:
  1. #include<reg51.h>
  2. #include <intrins.h>
  3. #define addo (5.0/4096.0)
  4. #define LED_Data P2
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. #define ulong unsigned long
  8. #define LED_slect  P3

  9. sbit CLOCK=P1^3; /*2543時(shí)鐘*/
  10. sbit D_IN=P1^1 ;/*2543輸入*/
  11. sbit D_OUT=P1^0; /*2543輸出*/
  12. sbit _CS=P1^2; /*2543片選*/
  13. sbit  LED1=P3^0;
  14. sbit  LED2=P3^1;
  15. sbit  LED3=P3^2;
  16. sbit  LED4=P3^3;
  17. sbit  dp=P3^5;
  18. static uchar dispdata[3];//3位顯示讀取的數(shù)據(jù),1位顯示通道號(hào)
  19. unsigned char code num[]={

  20. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x3e
  21. };

  22. void delay(uchar n)
  23. {
  24.         uchar i;
  25.         for(i=0;i<n;i++)
  26.         {
  27.            _nop_();
  28.         }
  29. }

  30. uint read2543(uchar port)
  31. {
  32.         uint ad=0,i;
  33.         CLOCK=0;
  34.         _CS=0;
  35.         port<<=4;
  36.         for(i=0;i<12;i++)
  37.         {
  38.           if(D_OUT) ad|=0x01;
  39.           D_IN=(bit)(port&0x80);
  40.           CLOCK=1;
  41.           delay(3);
  42.           CLOCK=0;
  43.           delay(3);
  44.           port<<=1;
  45.           ad=ad<<1;
  46.         }
  47.         _CS=1;
  48.         ad>>=1;
  49.         return(ad);
  50.     delay(100);
  51. }    //port是通道號(hào),根據(jù)通道號(hào)讀取AD數(shù)據(jù),并且發(fā)送出去

  52. void decodenum(float adv,uchar chn)
  53. {
  54.   ulong temp;
  55.   temp=((ulong)adv * 5000) / 4096;       //顯示數(shù)字放大1000倍
  56.   temp=temp+10;
  57.   dispdata[0]=temp / 1000;                       //個(gè)位
  58.   dispdata[1]=(temp / 100) % 10;                 //小數(shù)點(diǎn)后1位
  59.   dispdata[2]=(temp / 10) % 10;                  //小數(shù)點(diǎn)后2位
  60.   dispdata[3]=chn;
  61. }     //adv是數(shù)據(jù),chn是通道號(hào),獲取數(shù)據(jù)和通道號(hào),賦予數(shù)組dispdata中元素值

  62. void select(uchar LED)
  63. {
  64.    switch(LED)
  65.       {
  66.          case 0:LED1=0;break;
  67.          case 1:LED2=0;break;
  68.          case 2:LED3=0;break;
  69.          case 3:LED4=0;break;
  70.          default: LED_slect=0xff;
  71.        }
  72. }

  73. void  dispone(uchar LED,bit ifpoint,uchar number)
  74. {
  75.          select(LED);
  76.        if(ifpoint)
  77.            dp=1;
  78.            else
  79.            dp=0;
  80.       LED_Data=num[number]|0x80;

  81.           delay(200);
  82.           LED_slect=0xff;
  83. }


  84. void disp()
  85. {
  86.    uchar i;
  87.    bit point;
  88.   for(i=0;i<4;i++)
  89.    {
  90.      if(i==1)
  91.       point=0;
  92.      else
  93.       point=1;
  94.      dispone(i,point,dispdata[i]);
  95.     }
  96.         }

  97. void main()
  98. {
  99.   uint cnt=0;
  100.   while(1)
  101.    {
  102.      switch(cnt++)
  103.       {
  104.         case 0:    decodenum(read2543(0),0);break;
  105.         case 70:   decodenum(read2543(1),1);break;
  106.         case 140:cnt=0;break;
  107.        }
  108.      disp();
  109.    }
  110. }      
復(fù)制代碼



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

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2020-4-5 12:25 | 只看該作者
先采后顯示就對(duì)了,先顯示后采,則是顯示上次的采樣值,看看是不是這個(gè)原因。(未細(xì)讀你的程序)
回復(fù)

使用道具 舉報(bào)

板凳
ID:722619 發(fā)表于 2020-4-5 15:37 | 只看該作者
yzwzfyz 發(fā)表于 2020-4-5 12:25
先采后顯示就對(duì)了,先顯示后采,則是顯示上次的采樣值,看看是不是這個(gè)原因。(未細(xì)讀你的程序)

你好,我這里存在兩個(gè)問(wèn)題:一個(gè)是為什么會(huì)有1.29的電壓值?我兩個(gè)通道都沒(méi)有這個(gè)值,而且是第一輪采集才出現(xiàn)這個(gè)值;第二個(gè)就是第一輪因?yàn)橛羞@個(gè)1.29所以數(shù)據(jù)對(duì)應(yīng)不上,但是從第二輪開始,數(shù)據(jù)就是正確的。如果是你說(shuō)的這個(gè)原因,那么第二輪開始的怎么就對(duì)的上呢?
回復(fù)

使用道具 舉報(bào)

地板
ID:123289 發(fā)表于 2020-4-11 11:48 | 只看該作者
因?yàn)榈诙啠x到的是你第一輪的值,第一輪的采樣命令是你下的,就對(duì)了。
回復(fù)

使用道具 舉報(bào)

5#
ID:591189 發(fā)表于 2020-4-13 08:42 | 只看該作者
大佬的意思是你的程序在跑完初始化后先顯示了一輪數(shù)再讀取第一輪數(shù)據(jù),所以你的正確的第一輪數(shù)據(jù)是第二遍才顯示的,也就是你用的仿真不然第一遍顯示會(huì)出現(xiàn)各種奇怪?jǐn)?shù)據(jù)。把你的數(shù)據(jù)采樣程序放到顯示程序前就好了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国内久久 | 国产男女猛烈无遮掩视频免费网站 | 久久一二区 | 色综合天天天天做夜夜夜夜做 | 91在线第一页 | av一区二区三区四区 | 国产午夜一级 | 久草久草久草 | 欧美日韩国产精品一区二区 | 亚洲精品视频免费看 | 欧美高清性xxxxhdvideosex | 亚洲一区自拍 | 可以在线观看av的网站 | 伊人伊人伊人 | 婷婷国产一区 | 第一区在线观看免费国语入口 | 欧美中文字幕 | 国产一区在线免费 | 欧美精品一区二区三区一线天视频 | 成人午夜电影在线观看 | 成人免费一区二区三区视频网站 | 亚洲欧美日韩精品久久亚洲区 | 成人国产精品久久 | 午夜在线影院 | 亚洲精选一区二区 | 91精品在线播放 | 日韩精品在线播放 | 久久久蜜臀国产一区二区 | 精品国产乱码久久久久久牛牛 | 波多野结衣二区 | 色婷婷在线视频 | 亚洲一区二区免费 | 一级毛片色一级 | 国产精品高潮呻吟久久 | 亚洲视频在线免费观看 | 在线看日韩 | 成人免费视频在线观看 | 日韩欧美久久精品 | 国产精品美女www爽爽爽视频 | 午夜精品三区 | 91成人在线视频 |