找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2062|回复: 8
打印 上一主题 下一主题
收起左侧

数控烙铁单片机程序求指点 烧录后数码管是全显

[复制链接]
跳转到指定楼层
楼主
自学单片机有一段时间了,做了款数控烙铁程序,其中大部份程序我先屏蔽,先搞显示正常,发现烧录后数码管是全显,显示不正常不是读取AD的数值,用K型热电偶作探头经放大100倍送AD转换,DC5V/2A供电,请大神们指点下。程序如下:
  1. #include"STC15.h"
  2. #include "intrins.h"
  3. #define  uchar  unsigned char  
  4. #define  uint   unsigned int  
  5. #define  ulong  unsigned long
  6. #define ADC_POWER   0x80            //ADCμçÔ′¿ØÖÆλ
  7. #define ADC_FLAG    0x10            //ADCíê3é±êÖ¾
  8. #define ADC_START   0x08            //ADCÆe꼿ØÖÆλ
  9. #define ADC_SPEEDLL 0x00            //540¸öê±Öó
  10. #define ADC_SPEEDL  0x20            //360¸öê±Öó
  11. #define ADC_SPEEDH  0x40            //180¸öê±Öó
  12. #define ADC_SPEEDHH 0x60            //90¸öê±Öó
  13. //#define GPIO_LED  P3

  14. sbit ba=P1^3;
  15. sbit sh=P1^0;
  16. sbit ge=P1^2;
  17. sbit dn=P1^1;
  18. //sbit dian=P3^4;
  19. /*sfr P1M0=0x0f;
  20. sfr P1M1=0x00;
  21. sfr P3M0=0xff;
  22. sfr P3M1=0x00; */
  23. sbit up=P1^0;
  24. sbit down=P1^1;
  25. sbit heat=P1^7;
  26. //sbit s2=P1^2;
  27. //void Display(uchar dn,uchar ge,uchar sh,uchar ba);
  28. //void Display(uchar kemp);
  29. uchar makesure;//S3¼ü ¡°è·èϼü¡°
  30. uchar tp=0;
  31. uchar num=0;
  32. uchar ad=0;
  33. uchar s1,s2,s3,temp;

  34. uchar code LED[]={0xCF,0x0C,0xEA,0xE3,0xAC,0x67,0xE7,0x0E,0xEF,0x6F}; //数码管0-9
  35. uchar code wei[4]={0x08,0x04,0x02,0x01}; //位选
  36. //uint ADC_result6,shan_sz,shan_dw,wendu,sheding,aa,tt01,tt_xm1,tt_xm2,tt_aj,js_xm;
  37. //uchar sheding_bz,jiare_bz,bz1,bz2,qieh_w,tt00,jiareshu,bz_xs,tt1,ab1,ab2,fen,miao;//¶¨òå±äá¿


  38. ulong  code  KT_1[14][101]=        
  39. {
  40.         /*-100  0*/
  41.         {        3568,3523,3492,3461,3430,3399,3368,3337,3305,3274,
  42.                 3242,3211,3179,3147,3115,3082,3050,3018,2985,2953,
  43.                 2920,2887,2854,2821,2788,2754,2721,2687,2654,2620,
  44.                 2586,2552,2518,2484,2450,2416,2381,2347,2312,2277,
  45.                 2243,2208,2173,2137,2102,2067,2032,1996,1961,1925,
  46.                 1889,1853,1817,1781,1745,1709,1673,1636,1600,1563,
  47.                 1527,1490,1453,1416,1379,1342,1305,1268,1231,1193,
  48.                 1156,1118,1081,1043,1005, 968, 930, 892, 854, 816,
  49.                 777 ,739 , 701, 662, 624, 585, 547, 508, 469, 431,
  50.                 392 ,353 , 314, 275, 236, 197, 157, 118,  79,  39,  
  51.                 0
  52.         },
  53.          
  54.           /*0   100*/
  55.         {           0,  39,  79, 119, 158, 198, 238, 277, 317, 357,                                 
  56.                   397, 437, 477, 517, 557, 597, 637, 677, 718, 758,                                          
  57.                   798, 838, 879, 919, 960,1000,1041,1081,1122,1162,                        
  58.                  1203,1244,1285,1325,1366,1407,1448,1489,1529,1570,     
  59.                  1611,1652,1693,1734,1776,1817,1858,1899,1940,1981,
  60.                  2022,2064,2105,2146,2188,2229,2270,2312,2353,2394,
  61.                  2436,2477,2519,2560,2601,2643,2684,2726,2767,2809,
  62.                  2850,2892,2933,2975,3016,3058,3100,3141,3183,3224,
  63.                  3266,3307,3349,3390,3432,3473,3515,3556,3598,3639,
  64.                  3681,3722,3764,3805,3847,3888,3930,3971,4012,4054,
  65.                  4095  
  66.          },
  67.         /*100   200  */
  68.         {
  69.                 4095,4137,4178,4219,4261,4302,4343,4384,4426,4467,
  70.                 4508,4549,4590,4632,4673,4714,4755,4796,4837,4878,
  71.                 4919,4960,5001,5042,5083,5124,5164,5205,5246,5287,
  72.                 5327,5368,5409,5450,5490,5531,5571,5612,5652,5693,
  73.                 5733,5774,5814,5855,5895,5936,5976,6016,6057,6097,
  74.                 6137,6177,6218,6258,6298,6338,6378,6419,6459,6499,
  75.                 6539,6579,6619,6659,6699,6739,6779,6819,6859,6899,
  76.                 6939,6979,7019,7059,7099,7139,7179,7219,7259,7299,
  77.                 7338,7378,7418,7458,7498,7538,7578,7618,7658,7697,
  78.                 7737,7777,7817,7857,7897,7937,7977,8017,8057,8097,
  79.                 8137
  80.         },
  81.         /*200  300  */
  82.         {
  83.                  8137, 8177, 8216, 8256, 8296, 8236, 8376, 8416, 8456, 8497,
  84.                  8537, 8577, 8617, 8657, 8697, 8737, 8777, 8817, 8857, 8898,
  85.                  8938, 8978, 9018, 9058, 9099, 9139, 9179, 9220, 9260, 9300,
  86.                  9341, 9381, 9421, 9462, 9502, 9543, 9583, 9624, 9664, 9705,
  87.                  9745, 9786, 9826, 9867, 9907, 9948, 9989,10029,10070,10111,
  88.                 10151,10192,10233,10274,10315,10355,10396,10437,10478,10519,
  89.                 10560,10600,10641,10682,10723,10764,10805,10846,10887,10928,
  90.                 10969,11010,11051,11093,11134,11175,11216,11257,11298,11239,
  91.                 11381,11422,11463,11504,11546,11587,11628,11669,11711,11752,
  92.                 11793,11835,11876,11918,11959,12000,12042,12083,12125,12166,
  93.                 12207
  94.         },  
  95.         /*300   400  */
  96.         {   
  97.                 12207,12249,12290,12332,12373,12415,12456,12498,12539,12581,
  98.                 12623,12664,12706,12747,12789,12831,12872,12914,12955,12997,
  99.                 13039,13080,13122,13164,13205,13247,13289,13331,13372,13414,
  100.                 13456,13497,13539,13581,13623,13665,13706,13748,13790,13832,
  101.                 13874,13915,13957,13999,14041,14083,14125,14167,14208,14250,
  102.                 14292,14334,14376,14418,14460,14502,14544,14586,14628,14670,
  103.                 14712,14754,14796,14838,14880,14922,14964,15006,15048,15090,
  104.                 15132,15174,15216,15258,15300,15342,15384,15426,15468,15510,
  105.                 15552,15594,15626,15679,15721,15763,15805,15847,15889,15931,
  106.                 15974,16016,16058,16100,16142,16184,16227,16269,16311,16353,
  107.                 16395
  108.         },   
  109.         /*400   500  */
  110.         {   
  111.                 16395,16438,16480,16522,16564,16607,16649,16691,16733,16776,
  112.                 16818,16860,16902,16945,16987,17029,17072,17114,17156,17199,
  113.                 17241,17283,17326,17368,17410,17453,17495,17537,17580,17622,
  114.                 17664,17707,17749,17792,17834,17876,17919,17961,18004,18046,
  115.                 18088,18131,18173,18216,18258,18301,18343,18385,18428,18470,
  116.                 18513,18555,18598,18640,18683,18725,18768,18810,18853,18895,
  117.                 18938,18980,19023,19065,19108,19150,19193,19235,19278,19320,
  118.                 19363,19405,19448,19490,19533,19576,19618,19661,19703,19746,
  119.                 19788,19831,19873,19916,19959,20001,20044,20086,20129,20172,
  120.                 20214,20257,20299,20342,20385,20427,20470,20512,20555,20598,
  121.                 20640
  122.         },         
  123.         /*500   600  */
  124.         {   
  125.                 20640,20683,20725,20768,20811,20853,20896,20938,20981,21024,
  126.                 21066,21109,21152,21194,21237,21280,21322,21365,21407,21450,
  127.                 21493,21535,21578,21621,21663,21706,21749,21791,21834,21876,
  128.                 21919,21962,22004,22047,22099,22132,22175,22218,22260,22303,
  129.                 22346,22383,22431,22473,22516,22559,22601,22644,22687,22729,
  130.                 22772,22815,22857,22900,22942,22985,23028,23070,23113,23156,
  131.                 23198,23241,23284,23326,23369,23411,23454,23497,23539,23582,
  132.                 23624,23667,23710,23752,23795,23837,23880,23923,23965,24008,
  133.                 24050,24093,24136,24178,24221,24263,24306,24348,24391,24434,
  134.                 24476,24519,24561,24604,24646,24689,24731,24774,24817,24859,
  135.                 24902
  136.         },   
  137.         /*600   700  */
  138.         {   
  139.                 24902,24944,24987,25029,25072,25114,25157,25199,25242,25284,
  140.                 25327,25369,25412,25454,25497,25539,25582,25624,25666,25709,
  141.                 25751,25794,25836,25879,25921,25964,26006,26048,26091,26133,
  142.                 26176,26218,26260,26303,26345,26387,26430,26472,26515,26557,
  143.                 26599,26642,26684,26726,26769,26811,26853,26896,26938,26980,
  144.                 27022,27065,27107,27149,27192,27234,27276,27318,27361,27403,
  145.                 27445,27487,27529,27572,27614,27656,27698,27740,27783,27825,
  146.                 27867,27909,27951,27993,28035,28078,28120,28162,28204,28246,
  147.                 28288,28330,28372,28414,28456,28498,28540,28583,28625,28677,
  148.                 28709,28751,28793,28835,28877,28919,28961,29002,29044,29086,
  149.                 29128
  150.         },   
  151.         /*700  800  */
  152.         {
  153.                 29128,29170,29212,29254,29296,29338,29380,29422,29464,29505,
  154.                 29547,29589,29631,29673,29715,29756,29798,29840,29882,29924,
  155.                 29965,30007,30049,30091,30132,30174,30216,30257,30299,30341,
  156.                 30383,30424,30466,30508,30549,30591,30632,30674,30716,30757,
  157.                 30799,30840,30882,30924,30965,31007,31048,31090,31131,31173,
  158.                 31214,31256,31297,31339,31380,31422,31463,31504,31546,31587,
  159.                 31629,31670,31712,31753,31794,31836,31877,31918,31960,32001,
  160.                 32042,32084,32125,32166,32207,32249,32290,32331,32372,32414,
  161.                 32455,32496,32537,32578,32619,32661,32702,32743,32784,32825,
  162.                 32866,32907,32948,32990,33031,33072,33113,33154,33195,33236,
  163.                 33277
  164.         },        
  165.         /*800  900 */
  166.         {
  167.                 33277,33318,33359,33400,33441,33482,33523,33564,33604,33645,
  168.                 33686,33727,33768,33809,33850,33891,33931,33972,34013,34054,
  169.                 34095,34136,34176,34217,34258,34299,34339,34380,34421,34461,
  170.                 34502,34543,34583,34624,34665,34705,34746,34787,34827,34868,
  171.                 34909,34949,34990,35030,35071,35111,35152,35192,35233,35273,
  172.                 35314,35354,35395,35435,35476,35516,35557,35597,35637,35678,
  173.                 35718,35758,35799,35839,35880,35920,35960,36000,36041,36081,
  174.                 36121,36162,36202,36242,36282,36323,36363,36403,36443,36483,
  175.                 36524,36564,36604,36644,36684,36724,36764,36804,36844,36885,
  176.                 36925,36965,37005,37045,37085,37125,37165,37205,37245,37285,
  177.                 37325
  178.         },
  179.         /*900  1000  */
  180.         {
  181.                 37325,37365,37405,37445,37484,37524,37564,37604,37644,37684,
  182.                 37724,37764,37803,37843,37883,37923,37963,38002,38042,38082,
  183.                 38122,38162,38201,38241,38281,38320,38360,38400,38439,38479,
  184.                 38519,38558,38598,38638,38677,38717,38756,38796,38836,38875,
  185.                 38915,38954,38994,39033,39073,39112,39152,39191,39231,39270,
  186.                 39310,39349,39388,39428,39467,39507,39546,39585,39625,39664,
  187.                 39703,39743,39782,39821,39861,39900,39939,39979,40018,40057,
  188.                 40096,40136,40175,40214,40253,40292,40332,40371,40410,40449,
  189.                 40488,40527,40566,40605,40645,40684,40723,40762,40801,40840,
  190.                 40879,40918,40957,40996,41035,41074,41113,41152,41191,41230,
  191.                 41269
  192.         },        
  193.         /*1000   1100  */
  194.         {
  195.                 41269,41308,41347,41385,41424,41463,41502,41541,41580,41619,
  196.                 41657,41696,41735,41774,41813,41851,41890,41929,41968,42006,
  197.                 42045,42084,42132,42161,42200,42239,42277,42316,42355,42393,
  198.                 42432,42470,42509,42548,42586,42625,42663,42702,42740,42779,
  199.                 42817,42856,42894,42933,42971,43010,43048,43087,43125,43164,
  200.                 43202,43240,43279,43317,43356,43394,43482,43471,43509,43547,
  201.                 43585,43624,43662,43700,43739,43777,43815,43853,43891,43930,
  202.                 43968,44006,44044,44082,44121,44159,44197,44235,44273,44311,
  203.                 44349,44387,44425,44463,44501,44539,44577,44615,44653,44691,
  204.                 44729,44767,44805,44843,44881,44919,44957,44995,45033,45070,
  205.                 45108
  206.         },        
  207.         /*1100   1200  */
  208.         {
  209.                 45108,45146,45184,45222,45260,45297,45335,45373,45411,45448,
  210.                 45486,45524,45561,45599,45637,45675,45712,45750,45787,45825,
  211.                 45863,45900,45938,45975,46013,46051,46088,46126,46163,46201,
  212.                 46238,46275,46313,46350,46388,46425,46463,46500,46537,46575,
  213.                 46612,46649,46687,46724,46761,46799,46836,46873,46910,46948,
  214.                 46985,47022,47059,47097,47134,47171,47208,47245,47282,47319,
  215.                 47356,47393,47430,47468,47505,47542,47579,47616,47653,47689,
  216.                 47726,47763,47800,47837,47874,47911,47948,47985,48021,48058,
  217.                 48095,48132,48169,48205,48242,48279,48316,48352,48389,48426,
  218.                 48462,48499,48536,48572,48609,48645,48682,48718,48755,48792,
  219.                 48828
  220.         },        
  221.         /*1200   1300  */
  222.         {
  223.                 48828,48865,48901,48937,48974,49010,49047,49083,49120,49156,
  224.                 49192,49229,49265,49301,49338,49374,49410,49446,49483,49519,
  225.                 49555,49591,49627,49663,49700,49736,49772,49808,49844,49880,
  226.                 49916,49952,49988,50024,50060,50096,50132,50168,50204,50240,
  227.                 50276,50311,50347,50383,50419,50455,50491,50526,50562,50598,
  228.                 50633,50669,50705,50741,50776,50812,50847,50883,50919,50954,
  229.                 50990,51025,51061,51096,51132,51167,51203,51238,51274,51309,
  230.                 51344,51380,51415,51450,51486,51521,51556,51592,51627,51662,
  231.                 51697,51773,51768,51803,51838,51873,51908,51943,51979,52014,
  232.                 52049,52084,52119,52154,52189,52224,52259,52294,52329,52364,
  233.                 52398
  234.         }
  235.                
  236. };
  237. /*****************延时子程序*****************/
  238. /*void delayus(uint xus)
  239. {
  240.    uint i,j;
  241.    for(i=0;i<xus;i++)
  242.    for(j=0;j<10;j++);
  243.    }*/


  244. void delay1ms(unsigned int i)
  245. {
  246.      uchar j;
  247.          while(i--)
  248.          {

  249.        for(j=0;j>115;j++);
  250.            {;}
  251.            }
  252.    }
  253. /*********端口初始化********/
  254. /*void Init()
  255. {
  256.   P1M1&=~0X40;
  257.   P1M0|=0Xf3;
  258.   P3M1=0X00;
  259.   P3M0=0XFF;
  260.   P1M0&=~0X40;//P1^6¸高阻输入
  261.   P1M1|=0X40;
  262.   ADC_CONTR=0X80;//启动
  263.   ADC_START=0X08;
  264.   delay1ms(2);
  265.   AUXR1&=~0X04;//ADC储存方式
  266.   ADC_CONTR=0XE1;
  267.   }        */

  268. void Init()
  269.   {
  270.    P1M0|=0x80;
  271.    P1M1&=~0x80;
  272.   // P1M0= 0x0f;            
  273.   // P1M1= 0x00;
  274.    P3M0=0xff;
  275.    P3M1=0x00;
  276.    P5=0xff;
  277.    P5=0xff;              
  278.    P1ASF=0x40;               //设置第6通道作摸拟输入
  279.    ADC_RES=0;                //清除
  280.    ADC_RESL=0;               //清除
  281.    ADC_CONTR=ADC_POWER|ADC_SPEEDLL;   //ADC开启电源,
  282.    delay1ms(2);                      //延时1ms
  283.     }


  284. /***键盘检测*****/
  285. /*void Keyboardset(void)
  286. {
  287.   
  288. if((s1+s2+s3)!=0)
  289. {
  290.   if(s1==1)
  291.   num=num-1;
  292.   Display(num,tp);
  293.   }
  294.   if(s2==1)
  295.   {
  296.    num=num+1;
  297.    Display(num,tp);
  298.    if(num>=1000)num=1000;
  299.    }
  300.     if(s3==1)
  301.         {
  302.       if(num>tp)
  303.           makesure=1;
  304.           return;
  305.     }
  306.         } */
  307.                   
  308. /********按键扫描*********/
  309. /*void Keyask(void)
  310. {
  311.   uchar tepm;
  312. s1=0;
  313. s2=0;
  314. s3=0;
  315. P1=0x30;
  316. P5=0xff;
  317. tepm=P1&0X30;
  318. if(temp!=0x30)
  319. {
  320.   delay1ms(10);
  321.   if(temp!=0x30)
  322.   switch(temp)
  323.   {
  324.    case(0x20):s1=1;
  325.    while(!(P1&0X10));
  326.    break;
  327.    case(0x10):s2=1;
  328.    while(!(P1&0x20));
  329.    break;
  330.    }
  331.    }
  332.    P1=0X70;
  333.    if(temp!=0x30)
  334.    {
  335.      delay1ms(10);
  336.          if(temp!=0x30)
  337.         switch(temp)
  338.         {
  339.         case(0x20):s3=1;
  340.    while(!(P1&0X10));
  341.    }
  342.    }
  343.    }*/         
  344. /**********ADC初始化并采集**************/
  345. /*uchar getAD(void)
  346. {
  347. uchar i;
  348. uint sum=0;
  349. for(i=0;i<8;i++)
  350. {
  351.   ADC_CONTR|=0X08;
  352.   BIT3=0x08(ADC_STARTAD)
  353.   delay(1);
  354.   P1ASF=0x40;
  355.   while((ADC_CONTR&0x10)==0x00);//等待转换结束
  356.   ADC_CONTR&=~0x10;
  357.   sum+=ADC_RES;
  358.   }
  359.   sum>>=3;
  360.   return(uchar)sum;        //强制转换uchar形式
  361.   }          */
  362. uint getAD(uchar channel)
  363. {
  364.    uchar ad_finished=0;//储存AD转换标志
  365.    uchar i;
  366.    uint sum=0;
  367.    for(i=0;i<8;i++)
  368.    {
  369.    ADC_RES=0;//¸高8清0
  370.    ADC_RESL=0;//低2清0
  371.    channel&=0x07;//0000 0111 清0高5位
  372.    ADC_CONTR=0x60;//转换速率
  373.     _nop_();
  374.     ADC_CONTR=channel;//选择当前通道
  375.     _nop_();
  376.     ADC_CONTR|=0x80;//启动AD电源
  377.     _nop_();//延时
  378.         _nop_();
  379.     ADC_CONTR|=0x08;//0000,1000启动转换
  380.     ad_finished=0;
  381.     while(ad_finished==0)//等待转换结束
  382.    {
  383.      ad_finished=(ADC_CONTR&0x10); //测试转换结束?
  384.       }
  385.       ADC_CONTR&=0xE7;//1111,0111 清ADC_FLAG位,关闭转换
  386.           sum+=ADC_RES;
  387.           }
  388.       sum>>=3;                 //求取平均值
  389.       return(uchar)sum;        //强制转换uchar形式
  390.       return(ADC_RES*256+ADC_RESL);//·返回AD结果
  391.   }         

  392. /*************êyÂë1üÏÔê¾*****************/
  393. void Display(uchar kemp)
  394. /* void Display(uchar dn,uchar ge,uchar sh,uchar ba)*/
  395.   {
  396.    /* uchar i;
  397.         uint k;
  398.         for(i=0;i<4;i++);
  399.         {
  400.          switch(i)
  401.          {
  402.           case(0):
  403.           b=0;s=0;g=0;d=0;
  404.         break;
  405.          case(1):
  406.           b=1;s=0;g=0;d=0;
  407.         break;
  408.          case(2):
  409.           b=0;s=1;g=0;d=0;
  410.         break;
  411.          case(3):
  412.           b=0;s=0;g=1;d=0;
  413.         break;
  414.          case(4):
  415.           b=0;s=0;g=0;d=1;
  416.         break;
  417.         }
  418.          GPIO_LED=LED[i];
  419.          k=10;
  420.         while(k--);
  421.         GPIO_LED=0x00;
  422.         } */

  423.     /*uchar b,sh,g;
  424.         b=num/100;
  425.         sh=(num/10)%10;
  426.         g=num%10;*/
  427.   //P3=0x00;
  428.     ba=1;
  429.         sh=0;
  430.         ge=0;
  431.         dn=0;
  432.         P3=LED[kemp/100];        //百位
  433. //        delay5ms();

  434.         ba=0;
  435.         sh=1;
  436.         ge=0;
  437.         dn=0;
  438.         P3=LED[kemp/10%10];           //十位
  439. //        delay5ms();

  440.         ba=0;         
  441.         sh=0;
  442.         ge=1;
  443.         dn=0;
  444.         P3=LED[kemp%10];         //个位
  445. //        delay5ms();

  446.         ba=0;
  447.         sh=0;
  448.         ge=0;
  449.         dn=1;
  450.         P3=0x5e;          //单位‘C'
  451. //        delay5ms();        
  452.         }
  453.         
  454.    
  455. /***********主程序***********/
  456.    void main()
  457.    {
  458.    uchar kemp;//dn,ge,sh,ba ;
  459.    Init();
  460.    P1ASF=0x40;//
  461.    AUXR=0x04;//
  462.    ADC_CONTR|=0x80;//
  463.    
  464.     //P1M0=0x0f;

  465.     //P3M0=0xff;

  466.         while(1)
  467.         {
  468.          Keyboardset();
  469.          ad=getAD;
  470.          tp=KT_1[ad/2];
  471.          if(makesure==1)
  472.          {
  473.           if(num>=tp)
  474.           {
  475.           heat=1;
  476.           }
  477.           if(tp>num)
  478.           {
  479.            heat=0;
  480.            }
  481.                    }
  482.                 kemp=tp|num;
  483.                 //delay10ms();
  484.         /*        ba=kemp/100;   //百
  485.                 sh=kemp/10%10; //十
  486.                 ge=kemp%10;        */   //¸个
  487.                 //dn=0x5e;  
  488.             Display(kemp);
  489.            }
  490.          }        
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:407803 发表于 2018-10-10 22:36 | 只看该作者
ad=getAD();//要加括号
回复

使用道具 举报

板凳
ID:348282 发表于 2018-10-11 09:32 | 只看该作者
还有就是delay5ms()延时函数那里编译出警告,显示子程序好像没起作用。
回复

使用道具 举报

地板
ID:348282 发表于 2018-10-11 09:35 | 只看该作者
嗯,还有显示子程序好像不起作用,如延时函数那里,我把它屏蔽了,编译时少了几个警告,可能少了声明函数,但不知在那里声明。
回复

使用道具 举报

5#
ID:213173 发表于 2018-10-11 13:37 | 只看该作者
你的显示程序写得很混乱,从位码看是用的共阳数码管,从段码看是用的共阴数码管并且也没有按a~f顺序编码,不知道你的段码数组依据什么来的。
这是按共阴数码管写的显示程序
uchar code LED[]={//共阴数码管段码"0~f-."
                0x3f,0x06,0x5b,0x4f,
                0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x7c,
                0x39,0x5e,0x79,0x71,0x40,0x80};

void Display(uint k)
{
        static uchar i=0;
        P3=0x00;//消隐
        switch(i)
        {
                case 0:
                        ba=0;
                        sh=1;
                        ge=1;
                        dn=1;
                        P3=LED[k/100];        //百位
                        i++;
                break;
                case 1:
                        ba=1;
                        sh=0;
                        ge=1;
                        dn=1;
                        P3=LED[k/10%10];           //十位
                        i++;
                break;
                case 2:
                        ba=1;         
                        sh=1;
                        ge=0;
                        dn=1;
                        P3=LED[k%10];         //个位
                        i++;
                break;
                case 3:
                        ba=1;
                        sh=1;
                        ge=1;
                        dn=0;
                        P3=0x39;          //单位‘C'
                        i=0;
                break;
        }                               
        delay1ms(1);        
}




评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:348282 发表于 2018-10-11 15:28 | 只看该作者
还有就是STC15W408AS 没有定时器1,那定时器2和CCP如何设置?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:213173 发表于 2018-10-11 19:05 | 只看该作者
law110 发表于 2018-10-11 15:28
还有就是STC15W408AS 没有定时器1,那定时器2和CCP如何设置?


评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:348282 发表于 2018-10-12 22:17 | 只看该作者
另外AD采集电压没电压显示帮看看程序有没有错,谢谢。
回复

使用道具 举报

9#
ID:348282 发表于 2018-10-12 22:29 | 只看该作者
  1. #include"STC15.H"
  2. #include "intrins.h"


  3. #define  uchar unsigned char         
  4. #define  uint unsigned  int
  5. //#define  ulong  unsigned long
  6. #define ADC_POWER   0x80            //ADCμçÔ′¿ØÖÆλ
  7. #define ADC_FLAG    0x10            //ADCíê3é±êÖ¾
  8. #define ADC_START   0x08            //ADCÆe꼿ØÖÆλ
  9. #define ADC_SPEEDLL 0x00            //540¸öê±Öó
  10. #define ADC_SPEEDHH 0x60            //90¸öê±Öó
  11. uint Get_ADC(uchar channel);
  12. uchar ch=6;
  13. sbit ba=P1^3;
  14. sbit sh=P1^0;
  15. sbit ge=P1^2;
  16. sbit dn=P1^1;
  17. //sbit up=P1^0;
  18. //sbit down=P1^1;
  19. //sbit heat=P1^7;
  20. uchar c,b,s,g;
  21. uchar code LED[]={0xCF,0x0C,0xEA,0xE3,0xAC,0x67,0xE7,0x0E,0xEF,0x6F}; //¶¨òåêyÂë1ü0-9êy×é

  22. /*void Init()
  23.   {*/
  24.    /* TMOD=0x11; //é趨¶¨ê±Æ÷1¤×÷·½ê½
  25.     EA=1; //¿a×üÖD¶Ï
  26.     ET0=1; //¿a¶¨ê±Æ÷0
  27.     TR0=1; //Æô¶ˉ¶¨ê±Æ÷0
  28.     TH0=(65536-5000)/256; //¸ß8λװ3õÖμ 50ms
  29.     TL0=(65536-5000)%256; //μí8λװ3õÖμ*/
  30.    /*P1M0=0x0f;            
  31.    P1M1=0x00;
  32.    P3M0=0xff;
  33.    P3M1=0x00;
  34.    P5M0=0xff;
  35.    P5M1=0xff;              
  36.    
  37.     }  */

  38. /************延时子程序*************/


  39. void Delay1ms()                //@12.000MHz
  40. {
  41.         unsigned char i, j;

  42.         i = 12;
  43.         j = 169;
  44.         do
  45.         {
  46.                 while (--j);
  47.         }
  48.         while (--i);
  49. }

  50. void Delay5ms()                //@12.000MHz
  51. {
  52.         unsigned char i, j;

  53.         i = 59;
  54.         j = 90;
  55.         do
  56.         {
  57.                 while (--j);
  58.         } while (--i);
  59. }

  60. /***********初始化ADC**************/
  61. void InitADC()
  62.    {

  63.    P1M0=0x40;                                //éèÖÃP1μÄμú6í¨μà¶Ë¿ú×÷ÎaÄ£Äa¸ß×èêäèë
  64.    P1M1=0x00;        
  65.    P1ASF=0x40;
  66.    ADC_CONTR=0xe3;              
  67.    ADC_RES=0;               
  68.    ADC_RESL=0;               
  69.    ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;   //ADC 开启电源并转换
  70.    Delay1ms();                      //延时1ms
  71.    }
  72. /***********ADC2é¼ˉ***************/
  73.     uint Get_ADC(uchar channel)
  74.     {
  75.    uchar ad_finished=0;//ad储存转换标志
  76.    uint i;
  77.    uint sum=0;
  78.    for(i=0;i<8;i++)
  79.    {   
  80.    ADC_RES=0;//清0
  81.    ADC_RESL=0;
  82.    channel&=0x07;//清零高5位
  83.    ADC_CONTR=0x60;//转换速率
  84.     _nop_();
  85.     ADC_CONTR=channel;//选择当前通道
  86.     _nop_();
  87.     ADC_CONTR=0x80;//启动AD电源,、
  88.     Delay1ms();

  89.     ADC_CONTR|=0x08;//0000,1000启动转换
  90.                   _nop_();
  91.                   _nop_();
  92.                   _nop_();
  93.                   _nop_();
  94.     ad_finished=0;
  95.     while(ad_finished==0)//等待转换
  96.    {
  97.      ad_finished=(ADC_CONTR&0x10); //0001,0000 测试转换结束
  98.       }
  99.       ADC_CONTR&=~ADC_FLAG;//1111,0111 清标志位,并关闭
  100.           sum+=ADC_RES;
  101.           }
  102.       sum>>=3;                 //Çóè¡Æ½¾ùÖμ
  103.      return(uchar)sum;        //强制转换形式uchar
  104.      //return(ADC_RES*256+ADC_RESL);//·μ»Ø A/D ¸ß8λ+μí2λ×a»»½á1û
  105.   }       


  106.        
  107. /*        void change()
  108.   {
  109.   uint disnum;
  110.   uint temp=0;
  111.   disnum=Get_ADC();
  112.   disnum=disnum*(5.0)/256*10;
  113.   temp=(int)disnum;
  114.   c=temp/1000;
  115.   b=temp/1000%100;
  116.   s=temp/100%10;
  117.   g=temp%10;
  118. } */
  119. /*************数码管显示*****************/

  120.   void Display()
  121.   {
  122.   
  123.   //P3=0x00;
  124.    ba=1;
  125.         sh=0;
  126.         ge=0;
  127.         dn=0;
  128.         P3=LED[c];        //千位
  129.         Delay5ms();
  130.        
  131.         ba=0;
  132.         sh=1;
  133.         ge=0;
  134.         dn=0;
  135.         P3=LED[b];           //百
  136.         Delay5ms();

  137.         ba=0;         
  138.         sh=0;
  139.         ge=1;
  140.         dn=0;
  141.         P3=LED[s];         //十
  142.         Delay5ms();

  143.         ba=0;
  144.         sh=0;
  145.         ge=0;
  146.         dn=1;
  147.         P3=LED[g];   //个
  148. //        P3=0x5e;          //μ¥λ¡®C'
  149.         Delay5ms();
  150.         }
  151. /************ ¶¨ê±Æ÷1·tÎñ3ìDò***************/
  152. /* void timer0() interrupt 1 //¶¨ê±Æ÷1·tÎñ3ìDò2ms
  153. {
  154.    TH0=0xf8;//(65536-2000)/256
  155.    TL0=0x30;//(65536-2000)%256 */
  156.    


  157.    
  158. /***********主程序***********/
  159.    void main()
  160.    {
  161.      uint disnum;
  162.   
  163.    P1M0=0xff;
  164.   P1M1=0x00;
  165. // Disp_init();
  166. InitADC();
  167.   //Init();
  168.    for(;;)
  169.    {
  170.                 //change();
  171.                  uint temp=0;
  172.   disnum=Get_ADC();
  173.   disnum=disnum*(5.0)/256*10;
  174.   temp=(int)disnum;
  175.   c=temp/1000;
  176.   b=temp/1000%100;
  177.   s=temp/100%10;
  178.   g=temp%10;
  179.           Display();
  180.            }
  181.          }
复制代码

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表