新聞中心

S3C2440 AD轉(zhuǎn)換器

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
10 位CMOS ADC(模/數(shù)轉(zhuǎn)換器)是一個(gè)8 通道模擬輸入的再循環(huán)類(lèi)型設(shè)備。其轉(zhuǎn)換模擬輸入信號(hào)為10 位二

進(jìn)制數(shù)字編碼,最大轉(zhuǎn)換率為2.5MHz A/D轉(zhuǎn)換器時(shí)鐘下的 500 KSPS。A/D 轉(zhuǎn)換器支持片上采樣-保持功能和掉電
模式的操作。

本文引用地址:http://m.butianyuan.cn/article/201611/319208.htm

觸摸屏在下一篇文章,ADC轉(zhuǎn)換比較簡(jiǎn)單,這里貼出一個(gè)代碼

[cpp]view plaincopy
  1. #include"2440addr.h"
  2. #include"2440lib.h"
  3. #include"def.h"
  4. //=====================================================================
  5. //名稱:ADC_Select(intch,U32preScaler)
  6. //功能:選擇轉(zhuǎn)換通道,轉(zhuǎn)換器預(yù)分頻值設(shè)置
  7. //參數(shù):ch:轉(zhuǎn)換通道preScaler:預(yù)分頻值
  8. //返回值:無(wú)
  9. //=======================================================================
  10. voidADC_Select(intch,U32preScaler)
  11. {
  12. rADCCON=(1<<14)|(preScaler<<6)|(ch<<3);
  13. }
  14. //=======================================================================
  15. //名稱:AD_ENABLE()
  16. //功能:采用置位使能方式啟動(dòng)AD轉(zhuǎn)換
  17. //參數(shù):無(wú)
  18. //返回值:轉(zhuǎn)換后的值
  19. //=======================================================================
  20. intAD_ENABLE(void)
  21. {
  22. inti;
  23. intval=0;
  24. for(i=0;i<16;i++)
  25. {
  26. rADCCON|=0x1;//使能ADC轉(zhuǎn)換
  27. while(rADCCON&0x1);//判斷使能ADC轉(zhuǎn)換后被清零
  28. while(!(rADCCON&0x8000));//等待轉(zhuǎn)換結(jié)束
  29. val+=(rADCDAT0&0x3ff);//讀取ADC轉(zhuǎn)換的值
  30. }
  31. val=val/16;//計(jì)算ADC轉(zhuǎn)換值
  32. returnval;
  33. }
  34. //=======================================================================
  35. //名稱:AD_READ()
  36. //功能:采用讀控制器的方式啟動(dòng)AD轉(zhuǎn)換
  37. //參數(shù):無(wú)
  38. //返回值:轉(zhuǎn)換后的值
  39. //=======================================================================
  40. intAD_READ(void)
  41. {
  42. inti;
  43. inttemp,val=0;
  44. rADCCON|=0x2;//ADC轉(zhuǎn)換通過(guò)讀操作來(lái)啟動(dòng)
  45. temp=rADCDAT0&0x3ff;//啟動(dòng)ADC
  46. for(i=0;i<16;i++)
  47. {
  48. rADCCON|=0x1;//使能ADC轉(zhuǎn)換
  49. while(rADCCON&0x1);//判斷使能ADC轉(zhuǎn)換后被清零
  50. while(!(rADCCON&0x8000));//等待轉(zhuǎn)換結(jié)束
  51. val+=(rADCDAT0&0x3ff);//讀取ADC轉(zhuǎn)換的值
  52. }
  53. val=val>>4;//計(jì)算ADC轉(zhuǎn)換值
  54. returnval;
  55. }
  56. voidMain(void)
  57. {
  58. inttemp_val;
  59. U8mode;
  60. SelectFclk(2);//設(shè)置系統(tǒng)時(shí)鐘400M
  61. ChangeClockDivider(2,1);//設(shè)置分頻1:4:8
  62. CalcBusClk();//計(jì)算總線頻率
  63. rGPHCON&=~((3<<4)|(3<<6));
  64. rGPHCON|=(2<<4)|(2<<6);//GPH2--TXD[0];GPH3--RXD[0]
  65. rGPHUP=0x00;//使能上拉功能
  66. Uart_Init(0,115200);
  67. Uart_Select(0);
  68. while(1)
  69. {
  70. ADC_Select(2,49);
  71. Uart_Printf("SelectADCMode:1.Enable2.Readn");
  72. mode=Uart_Getch();
  73. Uart_Printf("n%cnn",mode);
  74. if(mode!=1&&mode!=2)
  75. {
  76. Uart_Printf("youselectwrongmodel!n");
  77. return;
  78. }
  79. switch(mode)
  80. {
  81. case1:
  82. Uart_Printf("ADCEnable-ConvertModen");
  83. temp_val=AD_ENABLE();
  84. break;
  85. case2:
  86. Uart_Printf("ADCRead-ConvertModen");
  87. temp_val=AD_READ();
  88. break;
  89. }
  90. Uart_Printf("ADCval=%dn",temp_val);//發(fā)送到串口顯示
  91. }
  92. }





關(guān)鍵詞: S3C2440AD轉(zhuǎn)換

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉