STM32気象ステーション、アナログ表示

記事に対するコメントを研究した後、私はすぐに仕事に取り掛かりました。 目標がありました:



その結果、インターフェイスが完成し、デバッグ情報が開始画面から削除されました。 LCDモジュール(LCD)が改善されました-圧力と湿度のグラフが表示されました。 イオニスター付きの外部RTC(RTC)を追加しました。 最も重要なことは、方向インジケータが追加されることです。



ポインターとDAC



矢印を表示する最も簡単な方法は、メーターヘッドに電圧を印加することです。 必要な電圧は、マイクロコントローラーのデジタル-アナログコンバーターを形成します。 STM32Lには、デュアルチャネル多機能DACが搭載されています。 フリーマーケットで、良好な状態の最初のデバイスが購入されました。



まず、部品の入ったボードがデバイスから投げ出されました。



スケールを描く:



DACおよびポートの初期化:

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); // DAC: RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); // DAC: DAC_InitTypeDef DAC_InitStructure; /* DAC channel1 Configuration */ DAC_InitStructure.DAC_Trigger = DAC_Trigger_None; DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; /* DAC Channel1 Init */ DAC_Init(DAC_Channel_1, &DAC_InitStructure); /* Enable DAC Channel1 */ DAC_Cmd(DAC_Channel_1, ENABLE);
      
      





値レコード:

  DAC_SetChannel1Data(DAC_Align_12b_R, 160 + temperature * 3);
      
      





出力信号は矢印を制御するのに十分であり、電圧は低下せず、マイクロコントローラは加熱しません。 値160は、スケールの中央に矢印を表示します。 その結果、次の図が+25にあります。





チャートとLCD



グラフィックモードは簡単ではありませんでした。表示された情報を保存するためにマイクロコントローラーのメモリを割り当てたくありませんでしたが、そのためにはLCDからの読み取りを実装する必要がありました。 ポートを入力と出力に同時に設定することはできなかったため、各書き込みまたは読み取りの前に読み取りまたは書き込みを行うようにポートに指示する必要があります。

ポート構成:出力-
  GPIO_InitStructure.GPIO_Pin = DATA_PIN0 | DATA_PIN1 | DATA_PIN2 | DATA_PIN3 | DATA_PIN4 | DATA_PIN5 | DATA_PIN6 | DATA_PIN7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init( DATA_PORT, &GPIO_InitStructure);
      
      





データを受信するには-
  GPIO_InitStructure.GPIO_Pin = DATA_PIN0 | DATA_PIN1 | DATA_PIN2 | DATA_PIN3 | DATA_PIN4 | DATA_PIN5 | DATA_PIN6 | DATA_PIN7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init( DATA_PORT, &GPIO_InitStructure);
      
      





落とし穴の「ダミー読み取り」もありました。アドレスを設定した後、最初の読み取りでゴミが、2番目のデータで読み取ります。

その後、関数PutPixel、DrawLine、Rectangle(幼年期を覚えています)。





PRV



ChRVチップは、1線式インターフェースを備えたDS2417によって選択され、DS18B20と同じバス上で共存することで有名です。



デバイスは同じコマンド55h + idを使用して選択されますが、DS2417 66hおよびDS18B20 BEhから読み取ります。 電源回路に含まれるイオニスターは、電源をオフにしても時計の動作を保証します。



プロジェクトのソース



All Articles