当前位置:   article > 正文

mega328p-ADC,PWM,UART驱动_328p adc基准

328p adc基准

ADC驱动:

  1. //****************************************************************/
  2. //函 数 名: Ai_Init
  3. //函数功能: Ai端口初始化
  4. //输入参数: void
  5. //输出参数: void
  6. //返 回 值: void
  7. //参考文档: void
  8. //创 件 人: 程强刚
  9. //创建日期: 2016/02/09
  10. //修改历史:
  11. //****************************************************************/
  12. void Ai_Init(void)
  13. {
  14. // 外部引脚
  15. DDRC = 0X00;
  16. PORTC = 0X00;
  17. //基准设置(外部AVCC)
  18. ADMUX &= ~(1 << REFS1);
  19. ADMUX |= 1 << REFS0;
  20. DIDR0 = 0X3F;
  21. //转换数据对齐(右对齐)
  22. ADMUX &= ~(1 << ADLAR);
  23. ADMUX |= 0X01;
  24. //转换设置
  25. ADCSRA |= 1 << ADEN; //开启ADC功能
  26. ADCSRA |= (1 << ADSC); //转换开始
  27. ADCSRA |= 1 << ADATE; //自动触发使能
  28. ADCSRA |= 1 << ADIF; //清零完成标记
  29. ADCSRA &= ~(1 << ADPS2); //ADC时钟分频系数 2
  30. ADCSRA &= ~(1 << ADPS1);
  31. ADCSRA |= 1 << ADPS0;
  32. //连续触发模式
  33. ADCSRB &= ~(1 << ADTS2);
  34. ADCSRB &= ~(1 << ADTS1);
  35. ADCSRB &= ~(1 << ADTS0);
  36. ADCSRA |= 1 << ADSC; //转换开始
  37. }
  38. //****************************************************************/
  39. //函 数 名: Read_Ad
  40. //函数功能: 读AD转换值
  41. //输入参数: ucEn (bit0-bit7:通道0-通道7)
  42. //输出参数: void
  43. //返 回 值: AD结果
  44. //参考文档: void
  45. //创 件 人: 程强刚
  46. //创建日期: 2016/02/09
  47. //修改历史:
  48. //****************************************************************/
  49. UINT16 Read_Ad(UCHAR ucEn)
  50. {
  51. UCHAR ucCh;
  52. ucCh = ucEn & 0x07;
  53. //转换通道
  54. ADMUX &= ~0x07;
  55. ADMUX |= ucCh;
  56. ADCSRA |= 1 << ADSC; //转换开始
  57. while (!(ADCSRA & (1 << ADIF)))
  58. {//等待转换完成
  59. vTaskDelay(1);
  60. }
  61. ADCSRA |= 1 << ADIF; //清零完成标记
  62. return (ADC & 0x3ff);
  63. }
  64. //****************************************************************/
  65. //函 数 名: Get_Vol
  66. //函数功能: 取电压值
  67. //输入参数: ucEn
  68. //输出参数: void
  69. //返 回 值: AD结果
  70. //参考文档: void
  71. //创 件 人: 程强刚
  72. //创建日期: 2016/02/09
  73. //修改历史:
  74. //****************************************************************/
  75. float Get_Vol(UCHAR ucEn)
  76. {
  77. UCHAR ucCh;
  78. UINT16 ui16Val;
  79. float fVal;
  80. ucCh = ucEn & 0x07;
  81. ui16Val = Read_Ad(ucCh);
  82. fVal = ui16Val * AI_REF / AI_FULL;
  83. return (fVal);
  84. }
  85. /*************************************************************
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/712666
推荐阅读
  

闽ICP备14008679号