當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 本程序采用的是八路ADC單次采集的模式,根據(jù)配置,在單次的模式下轉(zhuǎn)換完成后ADC12SC會自動復(fù)位,因此需要在循環(huán)中進(jìn)行ADC12CTL0 |= ADC12SC;操作,而如果配置成連續(xù)采集的模式,只需要在程序開始將ADC1

本程序采用的是八路ADC單次采集的模式,根據(jù)配置,在單次的模式下轉(zhuǎn)換完成后ADC12SC會自動復(fù)位,因此需要在循環(huán)中進(jìn)行ADC12CTL0 |= ADC12SC;操作,而如果配置成連續(xù)采集的模式,只需要在程序開始將ADC12SC置位一次就可以,但是就需要注意當(dāng)進(jìn)入中斷后如果不手動禁止中斷會一直停留在循環(huán)中,因此在采集到需要的數(shù)據(jù)后需要將ADC關(guān)閉或者中斷使能禁止才能重新回到主函數(shù),這一點(diǎn)需要注意。

八路單次采集的程序如下:

  1. /***************************************

  2. 八路AD多路單次采集基亞5110液晶顯示

  3. 采集模式:多路單次

  4. ****************************************/

  5. #include

  6. #include"LCD5110.h"

  7. #defineuintunsignedint

  8. #defineucharunsignedchar

  9. unsignedcharad0[]="1:0.0V";

  10. unsignedcharad1[]="2:0.0V";

  11. unsignedcharad2[]="3:0.0V";

  12. unsignedcharad3[]="4:0.0V";

  13. unsignedcharad4[]="5:0.0V";

  14. unsignedcharad5[]="6:0.0V";

  15. unsignedcharad6[]="7:0.0V";

  16. unsignedcharad7[]="8:0.0V";

  17. ucharflag=1;

  18. uinttemp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7;

  19. voidInit_Clk()

  20. {

  21. uchari;

  22. BCSCTL1&=~XT2OFF;//打開XT振蕩器

  23. do

  24. {

  25. IFG1&=~OFIFG;//清除振蕩錯誤標(biāo)志

  26. for(i=0;i<100;i++)

  27. _NOP();//延時等待

  28. }

  29. while((IFG1&OFIFG)!=0);//如果標(biāo)志為1繼續(xù)循環(huán)等待

  30. IFG1&=~OFIFG;

  31. BCSCTL2|=SELM1+SELS;//MCLK8MandSMCLK1M

  32. }

  33. voidInit_ADC()

  34. {

  35. P6SEL|=0XFF;//信號采集端口選擇第二功能

  36. ADC12CTL0=ADC12ON+SHT0_8+MSC;//打開ADC+設(shè)置采樣時間

  37. ADC12CTL1=SHP+CONSEQ_1;//使用采樣時序電路信號+多路單次模式

  38. //上面的寄存器配置采樣保持觸發(fā)源選擇時ADC12SC,采集信號使用采樣時序電路產(chǎn)生的信號

  39. //轉(zhuǎn)換模式為多路單次復(fù)轉(zhuǎn)換上面的設(shè)置必須在ENC=0的情況下設(shè)置

  40. //設(shè)置每個通道的輸入端口和參考電壓,參考電壓默認(rèn)為AVCC3.3V

  41. ADC12MCTL0=INCH_0;

  42. ADC12MCTL1=INCH_1;

  43. ADC12MCTL2=INCH_2;

  44. ADC12MCTL3=INCH_3;

  45. ADC12MCTL4=INCH_4;

  46. ADC12MCTL5=INCH_5;

  47. ADC12MCTL6=INCH_10;

  48. ADC12MCTL7=INCH_11+EOS;//最后一個通道

  49. ADC12IE=BIT7;//最后一個通道轉(zhuǎn)換完成后使能ADC中斷

  50. ADC12CTL0|=ENC;//使能轉(zhuǎn)換

  51. }

  52. /*******************************************

  53. 函數(shù)名稱:Trans_val

  54. 功能:將16進(jìn)制ADC轉(zhuǎn)換數(shù)據(jù)變換成三位10進(jìn)制

  55. 真實的模擬電壓數(shù)據(jù),并在液晶上顯示

  56. 參數(shù):Hex_Val--16進(jìn)制數(shù)據(jù)

  57. n--變換時的分母等于2的n次方

  58. 返回值:無

  59. ********************************************/

  60. voidTrans_val(ucharptr[6],uintHex_Val)

  61. {

  62. unsignedlongcaltmp;

  63. uintCurr_Volt;

  64. caltmp=Hex_Val;

  65. caltmp=(caltmp<<5)+Hex_Val;//caltmp=Hex_Val*3

  66. Curr_Volt=caltmp>>12;//Curr_Volt=caltmp/2^n

  67. //參考電壓為3.3V,所以計算公式應(yīng)該為Hex_val*3.3/2^n

  68. //乘除計算通過移位來進(jìn)行可以有效的提高程序運(yùn)行效率

  69. ptr[2]=(Curr_Volt/10)+0x30;//個位

  70. ptr[4]=(Curr_Volt%10)+0x30;//小數(shù)位

  71. }

  72. voidmain()

  73. {

  74. Init_Clk();

  75. Init_ADC();

  76. WDTCTL=WDTPW+WDTHOLD;

  77. LCD_init();

  78. LCD_showsh(0,0,"電壓采集:");

  79. _EINT();//開啟全局中斷

  80. P5DIR|=BIT5;

  81. P3OUT|=~BIT5;

  82. while(1)

  83. {

  84. ADC12CTL0|=ADC12SC;

  85. LCD_prints(0,2,ad0);

  86. LCD_prints(8,2,ad1);

  87. LCD_prints(0,3,ad2);

  88. LCD_prints(8,3,ad3);

  89. LCD_prints(0,4,ad4);

  90. LCD_prints(8,4,ad5);

  91. LCD_prints(0,5,ad6);

  92. LCD_prints(8,5,ad7);

  93. }

  94. }

  95. /*******************************************

  96. 函數(shù)名稱:ADC12ISR

  97. 功能:ADC中斷服務(wù)函數(shù)

  98. 參數(shù):無

  99. 返回值:無

  100. ********************************************/

  101. #pragmavector=ADC_VECTOR

  102. __interruptvoidADC12ISR(void)

  103. {

  104. temp0=ADC12MEM0;

  105. Trans_val(ad0,temp0);

  106. temp1=ADC12MEM1;

  107. Trans_val(ad1,temp1);

  108. temp2=ADC12MEM2;

  109. Trans_val(ad2,temp2);

  110. temp3=ADC12MEM3;

  111. Trans_val(ad3,temp3);

  112. temp4=ADC12MEM4;

  113. Trans_val(ad4,temp4);

  114. temp5=ADC12MEM5;

  115. Trans_val(ad5,temp5);

  116. temp6=ADC12MEM6;

  117. Trans_val(ad6,temp6);

  118. temp7 = ADC12MEM7;

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉