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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4281|回復: 0
收起左側

MSP430 ADC12中斷函數實現單通道單次轉換程序,proteus8.7仿真

[復制鏈接]
ID:429971 發表于 2019-3-30 21:26 | 顯示全部樓層 |閱讀模式
這是在上一次基礎上追加一個ADC12采樣的功能。
在仿真的過程中,出現一個問題。
外部參考電壓設置為3.3v時,報錯
No power supply specified for net 3.3V in Power Rail Configuration.

原因是沒有配置3.3v的電源,所以net 3.3v不知道連在哪里。
解決辦法:在工具欄點擊design -> configure power rails 出現彈窗

在彈窗中new一個3.3v的電源,再將節點3.3v添加到電源中即可,其他大小的電源添加類似操作。

添加前:
添加前.jpg
添加后:
添加后.jpg

環境:
IAR For MSP430  版本1721
Proteus 8.7

IAR文件夾下為MSP430工程項目
Proteus文件夾下為仿真項目,其中還包括仿真導入的hex文件

功能:DSP430F247設置ADC12,采集電壓,在lcd1602上顯示電壓值。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
ADC12仿真圖.jpg

MSP430
12位ADC轉換器
分辨率 = VREF / 4096
ADC轉換時間
ADC12結構與特點
1.參考電壓發生器
    MSP430內部帶有參考電源,通過控制REFON信號來啟動內部參考電源,并通過REF2——5V來控制參考電壓。
2.模擬多路通道
    8路外部通道  4路內部通道()
3.具有采樣保持功能的12位模數轉換內核


ADC12轉換模式
1.單通道單次采樣
2.序列通道單次采樣
3.單通道多次采樣
4.序列通道多次采樣

單片機源程序如下:

  1. #include "msp430x24x.h"
  2. #define set_rs P1OUT |= BIT3
  3. #define rst_rs P1OUT &= ~BIT3
  4. #define set_rw P1OUT |= BIT4
  5. #define rst_rw P1OUT &= ~BIT4
  6. #define set_en P1OUT |= BIT5
  7. #define rst_en P1OUT &= ~BIT5
  8. #define dataout P2DIR = 0xff
  9. #define dataport P2OUT
  10. #define uchar unsigned char
  11. #define CPU_F1 ((double)8000000)
  12. #define delay_us8M(x) __delay_cycles((long)(CPU_F1*(double)x/1000000.0))
  13. #define delay_ms8M(x) __delay_cycles((long)(CPU_F1*(double)x/1000.0))

  14. void write_com(uchar com);
  15. void write_data(uchar data);

  16. long result = 0;
  17. long v_data = 0;
  18. /**
  19.   單通道單次采樣
  20. */

  21. #pragma vector = ADC12_VECTOR
  22. __interrupt void ADC12ISR(void){
  23.   while((ADC12IFG & BIT1) == 0);
  24.   result = ADC12MEM1;
  25. }

  26. void main( void )
  27. {
  28.   // Stop watchdog timer to prevent time out reset
  29.   WDTCTL = WDTPW + WDTHOLD;
  30.   
  31.   P1DIR |= BIT3 + BIT4 + BIT5;
  32.   dataout;
  33.   rst_en;
  34.   write_com(0x38);//8 bit data, doule line, 5x7 point matrix
  35.   write_com(0x0c);//open display, close cusor,close blink
  36.   write_com(0x06);//auto plus 1 after write or read
  37.   write_com(0x01);//clear screen
  38.   
  39.   P6SEL |= BIT1;//將P6.1設置為第二功能,即 使能ADC通道
  40.   //這里如果想要保險的話,先設置ENC=0,但其實ENC默認為0
  41.   //1.打開ADC,設置采樣時間 4*SHT0_8(b1000)*256
  42.   ADC12CTL0 = ADC12ON + SHT0_8;
  43.   //2.設置采樣保持器的脈沖觸發模式,轉換模式=單通道單次轉換,轉換通道1
  44.   ADC12CTL1 = SHP + CONSEQ_0 + CSTARTADD_1;
  45.   //3.既然選擇了通道1,就要配置通道1,
  46.   //設置轉換通道端口為1即P6.1
  47.   ADC12MCTL1 |= INCH_1;
  48.   //4.設置為外部參考電壓源
  49.   ADC12MCTL1 |= SREF_2;
  50.   delay_ms8M(1);
  51.   //5.ENC=1,不能再修改配置
  52.   //啟動一次AD轉換時,ENC和ADC12SC要同時設置
  53.   ADC12CTL0 |= ENC + ADC12SC;
  54.   //開啟中斷
  55.   _EINT();
  56.   while(1){
  57. //    _EINT();
  58.     ADC12CTL0 |= ENC + ADC12SC;
  59.     ADC12IE = 0X02;
  60.     delay_ms8M(4);
  61.     v_data = (long)result * 33;//3.3V參考電壓
  62.     v_data = v_data * 10;
  63.     v_data = v_data / 4096;//這里把電壓放大了100倍,便于顯示小數點后兩位
  64.     write_com(0x01);//清屏
  65.     write_com(0x80);//移到第一行第一列
  66.     write_data(v_data/100 + '0');
  67.     write_data('.');
  68.     write_data(v_data/10%10 + '0');
  69.     write_data(v_data%10 + '0');
  70.     write_data('V');
  71.     delay_ms8M(100);
  72. //    //這里其實可以不關閉中斷,那相應的開始也就不要打開
  73. //    _DINT();
  74.   }

  75. }

  76. void write_com(uchar com){
  77.   rst_rs;
  78.   rst_rw;
  79.   rst_en;
  80.   _NOP();
  81.   set_en;// write command rs=0,rw=0,en=1
  82.   P2OUT = com;
  83.   delay_ms8M(5);
  84. //  _NOP();
  85. //  _NOP();
  86. //  check_busy();
  87.   rst_en;
  88. }

  89. void write_data(uchar data){
  90.   set_rs;
  91.   rst_rw;
  92.   rst_en;
  93.   _NOP();
  94.   set_en;//write data rs=2,rw=0,en=1
  95.   P2OUT = data;
  96.   delay_ms8M(5);
  97. //  _NOP();
  98. //  _NOP();
  99. //  check_busy();
  100.   rst_en;
  101. }
復制代碼
0.png
所有資料51hei提供下載:
MSP430_ADC12.zip (290.39 KB, 下載次數: 43)

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天av综合| 国产高清视频一区 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 亚洲97| 一区二区播放 | 国产精品免费一区二区 | 99pao成人国产永久免费视频 | 国产中文字幕在线 | 国产精品毛片 | 久久精品国产免费看久久精品 | 日韩一区在线播放 | 啪啪网页| 日韩精品一区二区三区高清免费 | 国产一二三区免费视频 | 一区二区国产精品 | 欧美激情精品久久久久久变态 | 久草精品视频 | av第一页 | 亚洲精品中文字幕在线观看 | 中文字幕在线观看一区 | 毛片的网址| 久久久久久一区 | 免费日韩av网站 | 91精品国产一区二区三区香蕉 | 午夜精品久久 | 狠狠干网站 | 99re在线视频 | 久久99久久99精品免视看婷婷 | 精品国产精品 | av国产精品毛片一区二区小说 | 男女污污动态图 | 午夜影院污 | 久久一二区| 久久一区二区三区四区五区 | 精品国产99| 亚洲欧美日韩在线不卡 | 欧美又大粗又爽又黄大片视频 | 久久9精品 | 国产成人叼嘿视频在线观看 | 欧美性一区二区三区 | 日韩欧美一区二区三区在线播放 |