找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4149|回復(fù): 0
收起左側(cè)

基于MSP430的電池電壓檢測(cè)仿真+程序

[復(fù)制鏈接]
ID:511094 發(fā)表于 2020-5-23 17:54 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
S~N[6_@S6N%_L5%XU)39W.png {CHFHZ(VUVBK5A6A`]RPE{G.png RH1SLBEYR(U]3}[5JXZGX.png

單片機(jī)源程序如下:

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

  2. #include <MSP430x24x.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,  //共陰數(shù)碼管段選碼表,無(wú)小數(shù)點(diǎn)
  6.                                0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  7. uchar table_volt[4] = {0};               //數(shù)組,存儲(chǔ)電壓值
  8. uchar Index;                            //變量
  9. //*******延時(shí)函數(shù)************//
  10. void Delay_ms(unsigned int t)
  11. {
  12.     unsigned int num;
  13.     while(t--)
  14.       for(num=1330;num>0;num--);
  15. }


  16. //ADC管腳定義

  17. #define ADCST0          P5OUT &= ~BIT4
  18. #define ADCST1          P5OUT |= BIT4
  19. #define ADCALE0         P5OUT &= ~BIT5
  20. #define ADCALE1         P5OUT |= BIT5
  21. #define ADCEOC0         P5OUT &= ~BIT6
  22. #define ADCEOC1         P5OUT |= BIT6
  23. #define ADCOE0          P5OUT &= ~BIT7
  24. #define ADCOE1          P5OUT |= BIT7  
  25. #define ADC_Channel0          P5OUT &= ~BIT0
  26. #define ADC_Channel1          P5OUT |= BIT0
  27. unsigned int  ADC1 = 0;                                  //變量,采集電池電壓值

  28. //*******ADC采集啟動(dòng)函數(shù)************//
  29. void ADC_START(void)
  30. {
  31.   ADCALE1;
  32.   ADCST1;
  33.   Delay_ms(1);
  34.   ADCALE0;
  35.   ADCST0;
  36.   Delay_ms(1);
  37. }

  38. //*******ADC采集時(shí)序?qū)崿F(xiàn)函數(shù)************//
  39. unsigned int ADC_READ(void)
  40. {
  41.   unsigned int data;
  42.   data=0x00;
  43.   Delay_ms(1);
  44.   ADCOE1;
  45.   ADC_START();
  46.   Delay_ms(5);
  47.   data=P4IN;                    //讀取數(shù)據(jù)
  48.   ADCOE0;
  49.   return data;                          //返回?cái)?shù)據(jù)
  50. }

  51. //*******主函數(shù)************//
  52. void main(void)
  53. {
  54.    
  55.     WDTCTL=WDTPW + WDTHOLD; // 關(guān)閉看門狗
  56.     P2DIR=0xFF;            // 設(shè)置方向
  57.     P2SEL=0;            // 設(shè)置為普通I/O 口
  58.    
  59.     P3DIR=0xFF;            // 設(shè)置方向
  60.     P3SEL=0;            // 設(shè)置為普通I/O 口
  61.    
  62.     P2OUT=0x00;
  63.     P3OUT=0xFF;
  64.    
  65.     P5SEL = 0x00;
  66.     P5DIR |= BIT0+BIT4+BIT5+BIT6;               //ADC芯片接口
  67.    
  68.   
  69.    
  70.     while(1)
  71.     {
  72.       
  73.          P3OUT=0xFF;
  74.          if( Index == 0 )                       //如果第一個(gè)數(shù)碼管顯示,加入小數(shù)點(diǎn)
  75.          {
  76.             P2OUT=table[table_volt[Index]]+0x80;//小數(shù)點(diǎn)
  77.          }
  78.          else                                           //其他不加
  79.          {
  80.             P2OUT=table[table_volt[Index]];             //顯示電壓值
  81.          }
  82.             P3OUT=~(1<<Index);
  83.           if(++Index==4) Index=0;
  84.          Delay_ms(1);                   //延時(shí)
  85.       
  86.         ADC1 = ADC_READ()*20-80;                //ADC電池電壓采集,放大
  87.         table_volt[0] = ADC1/1000;               //千位               
  88.         table_volt[1] = ADC1%1000/100;            //百位
  89.         table_volt[2] = ADC1%100/10;                            //十位
  90.         table_volt[3] = ADC1%10;                        //個(gè)位
  91.          
  92.     }

  93.    
  94. }
復(fù)制代碼

所有資料51hei提供下載:
代碼.rar (313.3 KB, 下載次數(shù): 66)
仿真圖.rar (181.78 KB, 下載次數(shù): 56)


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表