チーム1725

課題名

PSoC(16進数)温度計

研究者名

Nara Yukiko
Nakamura Takumi

概要

LM35温度センサを用いて室温を計測しLCDに16進数で表示する。
(10進数表示を試みたが上手くいかなかった。)
現在1b→27°c

使用した道具

・ジャンパ線 3本
・LM35温度センサ 1個
・PSoC基盤 1台
・MiniProg 1台
・ストレート通信ケーブル 1本

モジュールの配置と配線とソースコード

キャプチャ4.PNG

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include <stdlib.h>

char str[4];

char temp[9];

int i;



void main(void)
{
  // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
   // Insert your main routine code here.
   
   unsigned int adc_data;

  
   PGA_Start(PGA_HIGHPOWER);
   LCD_Start();
   LCD_InitBG(LCD_SOLID_BG);
   M8C_EnableGInt;
   ADCINC_Start(ADCINC_HIGHPOWER);
   ADCINC_GetSamples(0);
   
   

  
   while(1){
       while(ADCINC_fIsDataAvailable() == 0);{
               adc_data = ADCINC_wClearFlagGetData();//符号なし16ビット2進数
              }
           
            
     //16進数文字列に変換する。

      
       itoa(str,adc_data,16);
     
    //見やすいようにtempを用いて表示する。
      temp[0] = str[0];
      temp[1] = str[1];
      temp[2] = '.';
      
      
      for(i = 2; i < 6; i++) {
        temp[i + 1] = str[i];
        if(temp[i + 1] == '\0') {
          temp[++i] = 'C';
          break;
        }
      }
      temp[++i] = '\0';
       
  
     
      LCD_Position(0,0);
      LCD_PrCString("Temp:");
      LCD_Position(0,5);
      LCD_PrString(temp);  
             
    
    }
   
      
}

考察

LM35の配線は+Vs→VCC
          Vout→Port01(入力)
      GND→GND
参考にしたラボはhello_world。
参考にしたチーム研究はチーム1466。
当初は体温計にしようとしたが10進数表記のところでつまずき時間内に実現することができなかった。
関数itoaを用いて実行したが10進数で表示しようとすると大きすぎる値があらわれた。
そこで16進数で表示すると適切な値が得られた。
10進数で適切に表示されなかった理由として、stdlib.hが認識されてない可能性が考えられる。

  • 最終更新:2017-06-13 17:55:19

このWIKIを編集するにはパスワード入力が必要です

認証パスワード