久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: G2口袋板MSP430G2553 slope adc源碼 [打印本頁]

作者: zxuan0905    時(shí)間: 2018-4-7 13:45
標(biāo)題: G2口袋板MSP430G2553 slope adc源碼
利用G2口袋板,改變電位器阻值,使用adc測量阻值,再使用LCD和led顯示

單片機(jī)源程序如下:
  1. /*警告:由于G2 LaunchPad上的LED2使用了P1.6(I2C引腳),所以所有涉及到I2C的實(shí)驗(yàn)都必須把P1.6跳線拔除,包含本例程!
  2. * main.c
  3. */
  4. #include"MSP430G2553.h"
  5. #include "Slope.h"
  6. #include "TCA6416A.h"
  7. #include "HT1621.h"
  8. #include "LCD_128.h"

  9. unsigned char Key=0;                //輪盤電位器的電阻等效按鍵值
  10. //-----待測“傳感器電阻”的分檔值,實(shí)際接入了5k定值電阻+10k輪盤電位器-----
  11. const unsigned char R_Class[8]={55,67,82,97,113,128,138,144};                //單位為百歐

  12. void WDT_OnTime();
  13. void Slope_R_Dect();                        //測得待測電阻后的事件處理函數(shù)
  14. void TCA6416A_LED(unsigned char num);                //LED燈柱顯示函數(shù)
  15. void Display_SLOPE();
  16. void Display_RSENS(unsigned char Rsens);

  17. void main(void) {
  18.         WDTCTL=WDTPW+WDTHOLD;
  19.     BCSCTL1 = CALBC1_16MHZ;      /* Set DCO to16MHz */
  20.     DCOCTL = CALDCO_16MHZ;
  21.         __delay_cycles(100000);                        //等待電壓穩(wěn)定
  22.         TCA6416A_Init();
  23.         Slope_Measure_Init();
  24.         HT1621_init();
  25.         LCD_Clear();
  26.         Display_SLOPE();
  27.         HT1621_Reflash(LCD_Buffer);
  28.         //-----設(shè)定WDT為16ms定時(shí)中斷-----
  29.         WDTCTL=WDT_ADLY_16;
  30.         //-----WDT中斷使能-----
  31.     IE1|=WDTIE;
  32.          _enable_interrupts();

  33.         while(1);
  34. }

  35. /******************************************************************************************************
  36. * 名       稱:WDT_ISR(void)
  37. * 功       能:WDT定時(shí)中斷子函數(shù)
  38. * 入口參數(shù):無
  39. * 出口參數(shù):無
  40. * 說       明:直接調(diào)用事件處理函數(shù)即可
  41. * 范       例:無
  42. ******************************************************************************************************/
  43. #pragma vector=WDT_VECTOR
  44. __interrupt void WDT_ISR(void)
  45. {
  46.          IE1&=~WDTIE;
  47.         WDT_OnTime();
  48.          IE1|=WDTIE;
  49. }
  50. /******************************************************************************************************
  51. * 名       稱:WDT_OnTime()
  52. * 功       能:WDT定時(shí)中斷的事件處理函數(shù)
  53. * 入口參數(shù):無
  54. * 出口參數(shù):無
  55. * 說       明:主要工作都在事件處理函數(shù)中體現(xiàn)
  56. * 范       例:無
  57. ******************************************************************************************************/
  58. void WDT_OnTime()
  59. {
  60.         static unsigned char Charge_Ready=0;                        //充滿電標(biāo)志位
  61.         static unsigned char REF_Mreasure_Ready=0;        //等于8表明參考電阻已測完
  62.         static unsigned long R_REF_Sum=0;                        //暫存參考電阻的累加值
  63.                 if(Charge_Ready==0)                //未充滿電
  64.                 {
  65.                         Slope_Port_Charge();        //充電
  66.                         Slope_R_Dect();                        //執(zhí)行顯示LED的任務(wù)
  67.                         Charge_Ready=1;                //充滿電標(biāo)志
  68.                 }
  69.                 else
  70.                 {
  71.                         //-----測量8次參考電阻值-----
  72.                         if(REF_Mreasure_Ready<8)                                        // 判斷是否繼續(xù)測量參考電阻值
  73.                         {
  74.                                 Slope_Measure_REF();                                                //測參考電阻值
  75.                                 R_REF_Sum=R_REF_Sum+R_REF;                //累加電阻值
  76.                                 if(REF_Mreasure_Ready==7)        R_REF=R_REF_Sum>>3;        //測量完畢求出參考電阻的平均值
  77.                                 REF_Mreasure_Ready++;                                        //測量次數(shù)累加
  78.                         }
  79.                         //-----得到參考電阻值后,開始不停的測量傳感器電阻值-----
  80.                         else
  81.                                 Slope_Measure_SENS();                                        //測完參考電阻才測傳感器電阻
  82.                                 Charge_Ready=0;                                                        //測完一次,又該充電了
  83.                 }
  84. }

  85. /******************************************************************************************************
  86. * 名       稱:Slope_R_Dect()
  87. * 功       能:對傳感器電阻判斷檔位,調(diào)用LED顯示程序
  88. * 入口參數(shù):無
  89. * 出口參數(shù):無
  90. * 說       明:主要工作都在事件處理函數(shù)中體現(xiàn)
  91. * 范       例:無
  92. ******************************************************************************************************/
  93. void Slope_R_Dect()
  94. {
  95.         static unsigned int Rsens=0;
  96.         unsigned char Key_Last=0;                //用于判斷是否數(shù)據(jù)有更新
  97.         Key_Last=Key;
  98.         //-----通過10k參考電阻,計(jì)算電阻絕對值,單位百歐-----
  99.         Rsens=(((unsigned long int)100)*(unsigned long int)R_SENS)/R_REF;
  100.         //-----傳感器電阻分檔判斷,5k至15k之間,分8檔-----
  101.         if(Rsens<=R_Class[0])                         Key=0;
  102.         else if (Rsens<=R_Class[1])         Key=1;
  103.         else if (Rsens<=R_Class[2])        Key=2;
  104.         else if (Rsens<=R_Class[3])         Key=3;
  105.         else if (Rsens<=R_Class[4])         Key=4;
  106.         else if (Rsens<=R_Class[5])         Key=5;
  107.         else if (Rsens<=R_Class[6])         Key=6;
  108.         else         if(Rsens<=R_Class[7])         Key=7;
  109.         else                                                                                        Key=8;
  110.         //-----調(diào)用一系列顯示任務(wù)-----
  111.         Display_RSENS(Rsens);                //顯示實(shí)際電阻值
  112.         if(!(Key==Key_Last))                        //顯示電阻分檔值
  113.         {
  114.                 LCD_DisplayDigit(LCD_DIGIT_CLEAR ,6);
  115.                 LCD_DisplayDigit(Key,6);
  116.                 HT1621_Reflash_Digit(6);
  117.         }
  118.         TCA6416A_LED(Key);                         //LED燈柱顯示
  119. }
  120. /******************************************************************************************************
  121. * 名       稱:TCA6416A_LED()
  122. * 功       能:根據(jù)傳感器電阻值,實(shí)現(xiàn)LED燈柱效果
  123. * 入口參數(shù):無
  124. * 出口參數(shù):無
  125. * 說       明:需要調(diào)用I2C和TCA6416控制LED
  126. * 范       例:無
  127. ******************************************************************************************************/
  128. void TCA6416A_LED(unsigned char num)
  129. {
  130.         unsigned char i = 0;
  131.         for(i=0;i<8;i++)
  132.         {
  133.                 if(i<num)                                        // 判斷當(dāng)前需要點(diǎn)亮幾盞燈
  134.                         PinOUT(i,0);                        //根據(jù)LED接法,IO低電平為點(diǎn)亮LED
  135.                 else
  136.                         PinOUT(i,1);                        //根據(jù)LED接法,IO高電平為熄滅LED
  137.         }
  138. }
  139. /******************************************************************************************************
  140. * 名       稱:Display_SLOPE()
  141. * 功       能:在LED上顯示固定不變的內(nèi)容
  142. * 入口參數(shù):無
  143. * 出口參數(shù):無
  144. * 說       明:包括顯示SLOPE,2個(gè)小數(shù)點(diǎn),logo,kΩ單位。
  145. * 范       例:無
  146. ******************************************************************************************************/
  147. void Display_SLOPE()
  148. {
  149.         //-----顯示S-----
  150.         LCD_DisplayDigit(5,1);
  151.         //-----顯示L-----
  152.         LCD_DisplayDigit(0,2);
  153.         LCD_ClearSeg(_LCD_2A);
  154.         LCD_ClearSeg(_LCD_2B);
  155.         LCD_ClearSeg(_LCD_2C);
  156.         //-----顯示O-----
  157.         LCD_DisplayDigit(0,3);
  158.         //-----顯示P-----
  159.         LCD_DisplayDigit(8,4);
  160.         LCD_ClearSeg(_LCD_4C);
  161.         LCD_ClearSeg(_LCD_4D);
  162.         //-----顯示E-----
  163.         LCD_DisplayDigit(8,5);
  164.         LCD_ClearSeg(_LCD_5B);
  165.         LCD_ClearSeg(_LCD_5C);
  166.         //-----顯示小數(shù)點(diǎn)-----
  167.         LCD_DisplaySeg(_LCD_DOT4);
  168.         LCD_DisplaySeg(_LCD_DOT6);
  169.         //-----顯示logo-----
  170.         LCD_DisplaySeg(_LCD_TI_logo);
  171.         LCD_DisplaySeg(_LCD_QDU_logo);
  172.         //-----顯示kΩ-----
  173.         LCD_DisplaySeg(_LCD_k_OHOM);
  174.         LCD_DisplaySeg(_LCD_OHOM);
  175. }
  176. /******************************************************************************************************
  177. * 名       稱:Display_RSENS()
  178. * 功       能:在LED的小8字段上顯示實(shí)測傳感器電阻值
  179. * 入口參數(shù):無
  180. * 出口參數(shù):無
  181. * 說       明:哪位內(nèi)容有改變才更新該位的顯存。
  182. * 范       例:無
  183. ******************************************************************************************************/
  184. void Display_RSENS(unsigned char Rsens)
  185. {
  186.         unsigned char i=0;
  187.         static unsigned char Digit[3]={0};
  188.         unsigned char Digit_Past[3]={0};                //用于對比數(shù)值是否有改變
  189.         for(i=0;i<3;i++){
  190.                 Digit_Past[i]=Digit[i];
  191.         }
  192.         //-----拆分?jǐn)?shù)字-----
  193.         Digit[2]=Rsens/100;
  194.         Digit[1]=(Rsens%100)/10;
  195.         Digit[0]=Rsens%10;
  196.         //-----判別數(shù)位的改變,并更新該位顯存-----
  197.         for(i=0;i<3;i++)
  198.         {
  199.                 if(!(Digit[i]==Digit_Past[i]))                //如果有變化
  200.                 {
  201.                         LCD_DisplayDigit(LCD_DIGIT_CLEAR ,i+8);        //清除該8字段
  202.                         LCD_DisplayDigit(Digit[i],i+8);                                                //寫顯存映射
  203.                         HT1621_Reflash_Digit(i+8);                                                        //僅更新該8字段的顯存
  204.                 }
  205.         }
  206. }

復(fù)制代碼

所有資料51hei提供下載:
17_Slope_ADC.rar (93.4 KB, 下載次數(shù): 21)







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一区二区在线不卡 | 北条麻妃99精品青青久久主播 | 波多野结衣在线观看一区二区三区 | 欧美做暖暖视频 | 91在线免费视频 | 婷婷综合 | 免费一级片 | 久久丝袜视频 | 久草在线| 可以免费观看的av | 色秀网站 | 国产在线观看一区 | 91在线第一页 | 欧美日韩第一页 | 日本福利一区 | 精品婷婷| 在线免费中文字幕 | 在线观看视频91 | 久久久国产一区二区三区 | 欧美成人在线影院 | 国产精品99久久久久久www | 国产成人在线观看免费 | 成人精品在线视频 | 久久99精品视频 | 日韩久久精品电影 | 国产精品毛片 | 秋霞av国产精品一区 | 免费黄网站在线观看 | 久久不卡 | 日韩欧美视频 | 久久大陆| 激情六月丁香婷婷 | 免费一区 | 精品国产乱码一区二区三区a | 亚洲视频不卡 | 特级做a爰片毛片免费看108 | 欧美一区二区三区在线视频 | 91黄色片免费看 | 日产精品久久久一区二区福利 | 久久久www成人免费精品张筱雨 | 成人精品鲁一区一区二区 |