一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 1823|回复: 5
收起左侧

[avr] M8单片机adc搞不定了,求高手帮忙

[复制链接]
发表于 2014-8-20 14:08 | 显示全部楼层 |阅读模式
  1. #include<avr/io.h>
  2. #include<avr/interrupt.h>
  3. #include<avr/pgmspace.h>
  4. #include<util/delay.h>
  5. #include<avr/wdt.h>
  6. #define uint unsigned int
  7. #define uchar unsigned char
  8. #define rd1 PORTC|=0x01
  9. #define rd0 PORTC&=0xfe
  10. #define clk1 PORTD|=0x20
  11. #define clk0 PORTD&=0xdf
  12. #define sid1 PORTD|=0x40
  13. #define sid0 PORTD&=0xbf
  14. #define reset1 PORTD|=0x80
  15. #define reset0 PORTD&=0x7f
  16. #define cs1 PORTB|=0x01
  17. #define cs0 PORTB&=0xfe
  18. #define DS1 PORTC|=0x02
  19. #define DS0 PORTC&=0xfd
  20. #define j1 PORTC|=0x10
  21. #define j0 PORTC&=0xef
  22. uchar h,m,sz,cc;
  23. uint r,u,i,n;
  24. const prog_uchar hz[]={
  25. 0x10,0x0C,0x44,0x24,0x34,0x9C,0x45,0x36,0x44,0x8C,0x14,0x74,0x24,0x0C,0x04,0x00,
  26. 0x04,0x04,0x02,0x02,0xFD,0x44,0x44,0x44,0x44,0x44,0xFD,0x01,0x02,0x06,0x02,0x00,/*"容",0*/
  27. 0x40,0x40,0x40,0xDF,0x55,0x55,0x55,0xD5,0x55,0x55,0x55,0xDF,0x40,0x40,0x40,0x00,
  28. 0x40,0x40,0x40,0x57,0x55,0x55,0x55,0x7F,0x55,0x55,0x55,0x57,0x50,0x40,0x40,0x00,/*"量",1*/
  29. 0x08,0x88,0x68,0xFF,0x28,0x48,0x10,0x48,0x44,0x43,0x44,0x48,0x50,0x10,0x10,0x00,
  30. 0x02,0x01,0x00,0x7F,0x00,0x20,0x22,0x2C,0x21,0x2E,0x30,0x28,0x27,0x22,0x20,0x00,/*"检",2*/
  31. 0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,
  32. 0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00,/*"测",3*/
  33. 0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,
  34. 0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,/*"中",4*/
  35. 0x80,0x40,0x20,0xF8,0x07,0x02,0x04,0x74,0x54,0x55,0x56,0x54,0x74,0x04,0x04,0x00,
  36. 0x00,0x00,0x00,0xFF,0x00,0x03,0x01,0x05,0x45,0x85,0x7D,0x05,0x05,0x05,0x03,0x00,/*"停",5*/
  37. 0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x00,0x00,
  38. 0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x00,/*"止",6*/
  39. 0x10,0x94,0xF4,0x94,0xBF,0xD4,0x94,0x94,0x94,0x10,0xFF,0x10,0x94,0x18,0x10,0x00,
  40. 0x02,0x01,0xFF,0x4A,0x4A,0x7F,0x4A,0x4A,0x40,0x20,0x11,0x1E,0x33,0x41,0xE0,0x00,/*"截",7*/
  41. 0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
  42. 0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,/*"电",8*/
  43. 0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00,
  44. 0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x21,0x2E,0x24,0x20,0x20,0x00,/*"压",9*/
  45. 0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04,0x00,
  46. 0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40,0x40,0x70,0x00,/*"流",10*/
  47. 0x08,0x08,0xF8,0x49,0x4E,0xC8,0x88,0x40,0x38,0xCF,0x0A,0x08,0x88,0x78,0x08,0x00,
  48. 0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x40,0x20,0x10,0x0B,0x0E,0x31,0x60,0x20,0x00,/*"放",11*/
  49. 0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,
  50. 0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,/*"温",12*/
  51. 0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,
  52. 0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,/*"度",13*/
  53. 0x40,0x20,0xF8,0x17,0x82,0x80,0xBE,0xA2,0xA2,0xE2,0xA2,0xA2,0xBE,0x80,0x80,0x00,
  54. 0x00,0x00,0x7F,0x00,0x20,0x10,0x08,0x06,0x01,0x7F,0x03,0x0C,0x18,0x30,0x10,0x00,/*"保",14*/
  55. 0x00,0x10,0x10,0xFF,0x90,0x50,0x10,0x00,0xF8,0x89,0x8A,0x8E,0x88,0x88,0xF8,0x00,
  56. 0x02,0x42,0x81,0x7F,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"护",15*/
  57. 0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x49,0x4E,0x4A,0x48,0x48,0x48,0x78,0x00,0x00,
  58. 0x40,0x20,0x18,0x07,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,/*"启",16*/
  59. 0x20,0x24,0x24,0xE4,0x24,0x24,0x24,0x20,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,
  60. 0x08,0x1C,0x0B,0x08,0x0C,0x05,0x4E,0x24,0x10,0x0C,0x03,0x20,0x40,0x3F,0x00,0x00,/*"动",17*/
  61. 0x10,0x90,0x90,0xFF,0x90,0x90,0x10,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x10,0x00,
  62. 0x00,0x3F,0x10,0x10,0x10,0x5F,0x41,0x20,0x20,0x13,0x0C,0x13,0x20,0x60,0x20,0x00,/*"故",18*/
  63. 0x00,0xFE,0x22,0x5A,0x86,0x10,0xD2,0x56,0x5A,0x53,0x52,0x5A,0xD6,0x12,0x10,0x00,
  64. 0x00,0xFF,0x02,0x04,0x13,0x10,0x17,0x15,0x15,0xFD,0x15,0x15,0x17,0x10,0x10,0x00,/*"障",29*/
  65. 0x00,0x02,0x05,0xE2,0x18,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,
  66. 0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x18,0x00,0x00,/*"℃",20*/
  67. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  68. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",21*/
  69. 0x40,0x41,0xC6,0x00,0x00,0xFE,0x4A,0x4A,0xCA,0x4A,0x4A,0x7E,0x80,0x00,0x00,0x00,
  70. 0x40,0x20,0x1F,0x20,0x40,0x5F,0x48,0x44,0x40,0x41,0x42,0x4D,0x58,0x40,0x40,0x00,/*"退",22*/
  71. 0x00,0x00,0xFC,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0xFC,0x00,0x00,
  72. 0x00,0x00,0x7E,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x7E,0x00,0x00,/*"出",23*/
  73. 0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,
  74. 0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00,/*"设",24*/
  75. 0x00,0x20,0x2F,0xA9,0xA9,0xAF,0xE9,0xB9,0xA9,0xAF,0xA9,0xA9,0x2F,0x20,0x00,0x00,
  76. 0x80,0x80,0x80,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0x80,0x80,0x80,0x00};/*"置",25*/

  77. const prog_uchar zf[]={
  78. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/
  79. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"1",1*/
  80. 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/
  81. 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*"3",3*/
  82. 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*"4",4*/
  83. 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/
  84. 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/*"6",6*/
  85. 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*"7",7*/
  86. 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*"8",8*/
  87. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*"9",9*/
  88. 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,/*"U",10*/
  89. 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"I",11*/
  90. 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,/*":",12*/
  91. 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,/*"v",13*/
  92. 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,/*"a",14*/
  93. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,/*"m",15*/
  94. 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,/*"h",16*/
  95. 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,/*"P",17*/
  96. 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,/*"w",18*/
  97. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*".",19*/
  98. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*" ",20*/
  99. ISR(INT0_vect)
  100. {
  101.         if((PIND&0x10)==0)
  102.         sz++;
  103.         else
  104.         sz--;
  105. }
  106. void eepromxie(uint a,uchar b)
  107. {
  108.         EEAR=a;
  109.         EEDR=b;
  110.         SREG&=0x7f;
  111.         EECR|=0x04;
  112.         EECR|=0x02;
  113.         while(EECR&0x02);
  114.         SREG|=0x80;
  115. }
  116. uchar eepromdu(uint a)
  117. {
  118.         EEAR=a;
  119.         EECR|=0x01;
  120.         return EEDR;
  121. }
  122. void LCD_WData(uchar a)
  123. {
  124.         uchar i,tmp;
  125.         tmp=a;
  126.         for(i=0;i<8;i++)
  127.         {
  128.                 clk0;
  129.                 if(tmp&0x80)
  130.                 sid1;
  131.                 else sid0;       
  132.                 tmp=(tmp<<1);
  133.                 clk1;
  134.         }
  135. }
  136. void TransData(uchar a,uchar b)
  137. {
  138.         cs0;
  139.         clk1;
  140.         if(b==0)
  141.         rd0;
  142.         else
  143.         rd1;
  144.         LCD_WData(a);
  145.         cs1;
  146. }       
  147. void PageSet(uchar page,uchar column)
  148. {
  149.         uchar lsb,msb;
  150.         lsb=column&0x0f;
  151.         msb=column&0xf0;
  152.         msb=msb>>4;
  153.         msb=msb|0x10;    //列地址高四位,见指令表 4                  
  154.         page=page|0xb0;  //oxb0=1011 0000 指令表 3 置页地址为 第page页                              
  155.         TransData(page,0);
  156.         TransData(msb,0);
  157.         TransData(lsb,0);            
  158. }
  159. void Lcdclear(void)
  160. {
  161.         uchar i,j;

  162.         cs0;

  163.         for (i=0;i<8;i++)
  164.         {               
  165.                           PageSet(i,0);
  166.                 for (j=0;j<132;j++)
  167.                 {                                                  
  168.                         TransData(0,1);
  169.                 }
  170.           }
  171.     cs1;
  172. }

  173. void Lcdhz(uchar y,uchar x,uchar temp,uchar f)
  174. {
  175.     uchar i,z;
  176.     PageSet(y,(x*16+3));
  177.            for(i=0;i<16;i++)
  178.         {
  179.         z=pgm_read_byte(hz+temp*32+i);
  180.         if(f)
  181.         z=~z;
  182.                 TransData(z,1);
  183.         }
  184.         PageSet(y+1,(x*16+3));
  185.            for(i=16;i<32;i++)
  186.         {
  187.         z=pgm_read_byte(hz+temp*32+i);
  188.         if(f)
  189.         z=~z;
  190.                 TransData(z,1);
  191.         }
  192. }
  193. void Lcdzf(uchar y,uchar x,uchar temp,uchar f)
  194. {
  195.     uchar i,z;
  196.     PageSet(y,(x*8+3));
  197.            for(i=0;i<8;i++)
  198.         {
  199.         z=pgm_read_byte(zf+temp*16+i);
  200.         if(f)
  201.         z=~z;
  202.                 TransData(z,1);
  203.         }
  204.         PageSet(y+1,(x*8+3));
  205.            for(i=8;i<16;i++)
  206.         {
  207.         z=pgm_read_byte(zf+temp*16+i);
  208.         if(f)
  209.         z=~z;
  210.                 TransData(z,1);
  211.         }
  212. }
  213. uint adc(uchar lu)
  214. {
  215.         uchar l;
  216.         n=0;
  217.         ADMUX&=lu;
  218.         ADCSRA|=0x80;
  219.         for(l=50;l>0;l--)
  220.         {
  221.         ADCSRA|=0x40;
  222.         while(!(ADCSRA&0x10));
  223.         n+=ADCL;
  224.         n+=ADCH*256;
  225.         }
  226.         ADMUX=0x0f;
  227.         n/=50;
  228.         return n;
  229. }

  230. void Lcd_Init(void)
  231. {
  232.                 DDRB|=0x07;
  233.                 DDRC|=0x15;
  234.                 DDRD|=0xf8;
  235.                 PORTD|=0x07;
  236.                 TIMSK|=0x01;
  237.                 SREG|=0x80;
  238.                 GICR|=0x40;
  239.                 MCUCR|=0x02;
  240.                 ADMUX|=0x00;
  241.                 ADCSRA|=0x06;
  242.                 TCCR1B=0X19;
  243.                 TCCR1A=0X73;
  244.                 OCR1A=8000;
  245.                 OCR1B=0;
  246.                 cs1;
  247.                 reset0;                                     //复位液晶;
  248.                 _delay_ms(20);
  249.                 reset1;
  250.                 TransData(0xe2,0);  //Soft rest
  251.                 _delay_ms(20);
  252.                 TransData(0xa1,0);
  253.                 TransData(0xa2,0);  //Set LCD bias(A2-1/9bias; A3-1/7bias)
  254.                 TransData(0xa6,0);  //正常显示 0xa7为反白显示
  255.                 TransData(0x2f,0);  //设置内部电路的电源 默认为0x2F
  256.                 TransData(0x60,0); //设置行地址从0x00开始
  257.                 TransData(0x81,0);
  258.                 TransData(0xef,0);  //设置对比度
  259.             TransData(0xaf,0);  //打开显示       
  260.                 Lcdclear();                          //清除显示   
  261.         Lcdhz(0,7,20,0);   
  262.                 Lcdhz(4,0,0,0);
  263.                 Lcdhz(4,1,1,0);
  264.                 Lcdhz(6,0,16,0);
  265.                 Lcdhz(6,1,17,0);
  266.                 Lcdhz(6,6,24,0);
  267.                 Lcdhz(6,7,25,0);
  268.                 Lcdhz(6,3,5,0);
  269.                 Lcdhz(6,4,6,0);
  270.                    Lcdzf(0,0,10,0);
  271.                    Lcdzf(0,1,12,0);
  272.                    Lcdzf(0,4,19,0);
  273.                    Lcdzf(0,7,13,0);
  274.                    Lcdzf(2,0,11,0);
  275.                    Lcdzf(2,1,12,0);
  276.                    Lcdzf(2,4,19,0);
  277.                    Lcdzf(2,7,14,0);
  278.                    Lcdzf(2,13,12,0);
  279.                    Lcdzf(4,4,12,0);
  280.                    Lcdzf(4,13,15,0);
  281.                    Lcdzf(4,14,14,0);
  282.                    Lcdzf(4,15,16,0);
  283.                   
  284. }
  285. void xianshi(void)
  286. {
  287.         uchar a,b,c,d,e;
  288.         u=adc(5);
  289.         u*=1.96;
  290.         d=u/1000;
  291.         c=u%1000/100;
  292.         b=u%100/10;
  293.         a=u%10;
  294.         if(u>=1000)
  295.         Lcdzf(0,2,d,0);
  296.         else
  297.         Lcdzf(0,2,20,0);
  298.         Lcdzf(0,3,c,0);
  299.         Lcdzf(0,5,b,0);
  300.         Lcdzf(0,6,a,0);
  301.         i=adc(3);
  302.         d=i/1000;
  303.         c=i%1000/100;
  304.         b=i%100/10;
  305.         a=i%10;
  306.         if(i>=1000)
  307.         Lcdzf(2,2,d,0);
  308.         else
  309.         Lcdzf(2,2,20,0);
  310.         Lcdzf(2,3,c,0);
  311.         Lcdzf(2,5,b,0);
  312.         Lcdzf(2,6,a,0);
  313. /*        c=cc/100;
  314.         b=cc%100/10;
  315.         a=cc%10;       
  316.         if(cc>=100)
  317.         Lcdzf(0,11,c,0);
  318.         else
  319.         Lcdzf(0,11,20,0);
  320.         if(cc>=10)
  321.         Lcdzf(0,12,b,0);
  322.         else
  323.         Lcdzf(0,12,20,0);
  324.         Lcdzf(0,13,a,0);*/

  325. /*        b=h/10;
  326.         a=h%10;
  327.         if(h>=10)
  328.         Lcdzf(2,11,b,0);
  329.         else
  330.         Lcdzf(2,11,20,0);
  331.         Lcdzf(2,12,a,0);       
  332.         b=m/10;
  333.         a=m%10;
  334.         Lcdzf(2,14,b,0);
  335.         Lcdzf(2,15,a,0);
  336.         e=r/10000;
  337.         d=r%10000/1000;
  338.         c=r%1000/100;
  339.         b=r%100%10;
  340.         a=r%10;
  341.         if(r>=10000)
  342.         Lcdzf(4,8,e,0);
  343.         else
  344.         Lcdzf(4,8,20,0);
  345.         if(r>=1000)
  346.         Lcdzf(4,9,d,0);
  347.         else
  348.         Lcdzf(4,9,20,0);
  349.         if(r>=100)
  350.         Lcdzf(4,10,c,0);
  351.         else
  352.         Lcdzf(4,10,20,0);       
  353.         if(r>=10)
  354.         Lcdzf(4,11,b,0);
  355.         else
  356.         Lcdzf(4,11,20,0);
  357.         Lcdzf(4,12,a,0);        */
  358. }
  359. int main(void)
  360. {
  361.   Lcd_Init();
  362.    while(1)
  363.    {
  364.         xianshi();
  365.    }
  366. }
复制代码
adc用到两路,一路电压采集,一路电流采集,现象为单独用任何一路没问题,用到两路就不准,找了几天了,实在没辙,大家帮忙看下哪里出问题了万分感谢
发表于 2014-8-20 15:50 | 显示全部楼层
我用别的单片机与遇到过。后来问FAE  他说 换了通道 之后要把通道清零,一试还真灵。

M8没有用过
建议你试试,先把通道都关了,然后在把你要的打开,换了通道之后延时一下,

评分

参与人数 1一乐金币 +6 收起 理由
dxf888 + 6 转换完成后接地也不行

查看全部评分

发表于 2014-8-20 16:49 | 显示全部楼层
换通道加个延时

评分

参与人数 1一乐金币 +6 收起 理由
dxf888 + 6 加过还是不行,以前用stc的就没问题

查看全部评分

 楼主| 发表于 2014-8-20 17:36 | 显示全部楼层
精简一下吧adc函数与调用函数截图下来这样好看多了 360截图20140820172824718.jpg 360截图20140820172728640.jpg
发表于 2014-8-20 20:47 | 显示全部楼层
本帖最后由 efan 于 2014-8-20 20:52 编辑

选择通道的时候:
ADMUX=lu;

最后加上关闭试试:
ADCSRA=0;
ADMUX=0;

评分

参与人数 1一乐金币 +6 收起 理由
dxf888 + 6 欢迎探讨

查看全部评分

 楼主| 发表于 2014-8-20 22:01 | 显示全部楼层
efan 发表于 2014-8-20 20:47
选择通道的时候:
ADMUX=lu;

不知道是编译器还是芯片关系,问题很奇怪,变量n要定为全局变量,而且不能在转换前清零,要不然结果不准,即使没切换通道。n设为全局变量后结果准了,但切换通道后又不准了,但另一个通道是准的。最后找到解决办法就是再写一个adc函数,两路分别用一个函数,这样两个结果都准了,但是把第一路n设为局部变量后,又不准了,而且第二路也会受牵连,真搞不懂了

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-18 10:19 , Processed in 0.057658 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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