欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機動作不對...數碼管顯示電位器的AD值 [打印本頁]

作者: lisen6714    時間: 2017-5-16 18:22
標題: 單片機動作不對...數碼管顯示電位器的AD值
我用的是89C51單片機做實驗,數碼管顯示電位器的AD值,現在想加幾個動作但是上電后,燈完全沒反應,請教教我····

  1. #include"reg51.h"
  2. #include"XPT2046.h"

  3. //--定義使用的IO--//
  4. #define GPIO_DIG P0
  5. #define uchar unsigned char                 

  6. sbit LSA=P1^5;
  7. sbit LSB=P1^6;
  8. sbit LSC=P1^7;

  9. sbit  bj=P3^1;
  10. sbit   dj1=P2^2;
  11. sbit deng=P2^3;
  12. sbit dj2=P2^4;

  13. uint temp;
  14. //--定義全局變量--//
  15. unsigned char code DIG_CODE[17]={
  16. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  17. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  18. //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼

  19. uchar DisplayData[8];                //用來存放要顯示的8位數的值
  20. void DigDisplay(void);
  21. void xianshi(void)
  22. {
  23.                 uint  count;
  24.         while(1)
  25.         {
  26.           if(count==50)
  27.           {
  28.                   count=0;
  29.                 temp = Read_AD_Data(0x94)*2.46;                //   AIN0 電位器                通道地址        001
  30.         //        temp = Read_AD_Data(0xD4);                //   AIN1 熱敏電阻                通道地址        101
  31.         //        temp = Read_AD_Data(0xA4);                //   AIN2 光敏電阻                通道地址        010
  32.         //        temp = Read_AD_Data(0xE4);                //   AIN3 外部輸入                通道地址        110
  33.           }
  34.           count++;


  35.           DisplayData[6]=DIG_CODE[temp%10000/1000];
  36.           DisplayData[7]=DIG_CODE[temp%1000/100];



  37.           DigDisplay();
  38.         }
  39. }
  40. void DigDisplay(void)
  41. {
  42.         unsigned char i;
  43.         unsigned int j;
  44.         for(i=0;i<8;i++)
  45.         {
  46.                 switch(i)         //位選,選擇點亮的數碼管,
  47.                 {
  48. //                        case(0):
  49. //                                LSA=0;LSB=0;LSC=0; break;//顯示第0位
  50. //                        case(1):
  51. //                                LSA=1;LSB=0;LSC=0; break;//顯示第1位
  52. //                        case(2):
  53. //                                LSA=0;LSB=1;LSC=0; break;//顯示第2位
  54. //                        case(3):
  55. //                                LSA=1;LSB=1;LSC=0; break;//顯示第3位
  56.                         case(4):
  57.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  58.                         case(5):
  59.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  60.                         case(6):
  61.                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  62.                         case(7):
  63.                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位        
  64.                 }
  65.                 GPIO_DIG=DisplayData[i];//發送段碼
  66.                 j=50;                                                 //掃描間隔時間設定
  67.                 while(j--);        
  68.                 GPIO_DIG=0x00;//消隱
  69.         }
  70. }

  71. void main(void)
  72. {  dj1=dj2=0;
  73.          while(1)
  74.         {         xianshi();
  75.               if(temp<1000)              {dj1=1;dj2=1;bj=1;deng=0;}
  76.                  if(1000<=temp<2000)        {dj1=1;dj2=1;bj=0;deng=0;}
  77.              if(temp>2000 && temp<8000) {dj1=1;dj2=0;bj=0;deng=0;}
  78.              if(temp>8000)              {dj1=0;dj2=0;bj=1;deng=1;}
  79.         }                                                     
  80. }        


復制代碼

作者: lisen6714    時間: 2017-5-16 18:23
因為輸入范圍不足我把數據乘了2.46倍,應該是主程序有問題吧,我純新手····
作者: cjjcjj1    時間: 2017-5-17 06:05
提示: 作者被禁止或刪除 內容自動屏蔽




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1