技術共有

[TB Works] 51 MCU Proteus シミュレーション設計による LCD12864 永久カレンダーと MCU ベースの温度監視システム

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ここに画像の説明を挿入します

実験レポート: LCD12864 永久カレンダーとマイクロコントローラーに基づく温度監視システムの設計

背景の紹介

この実験は、STC89C52 マイクロコントローラーの LCD12864 ディスプレイに基づく永久カレンダー システムを設計および実装し、温度センサーを統合して温度監視機能を実現することを目的としています。毎時チャイムとアラーム機能があり、ブザーでお知らせします。このデザインは、基本的な時計と温度表示を実現できるだけでなく、特定のアラーム機能も備えており、家庭やオフィスのシナリオに適しています。

ハードウェアの紹介

  1. STC89C52マイクロコントローラー: システムの中核となるコントローラーとして、さまざまな機能の実装を担当します。
  2. LCD12864 ディスプレイ:時刻、日付、温度などの情報を表示するために使用されます。
  3. DS18B20 温度センサー: 周囲温度をリアルタイムで監視するために使用されます。
  4. ブザー: 時間ごとの時刻とアラームのリマインダーに使用されます。
  5. ボタンモジュール: ユーザーが時間とアラーム機能を設定するために使用されます。
  6. その他の電子部品:回路構築や安定動作のために使用される抵抗、コンデンサなど。

回路設計

回路は主にマイクロコントローラー、LCDディスプレイ、温度センサー、ブザーで構成されています。 LCD12864 表示画面はパラレル インターフェイスを通じてマイクロコントローラーに接続され、DS18B20 温度センサーは単線インターフェイスを通じてマイクロコントローラーに接続され、ブザーはマイクロコントローラーの I/O ポートを通じて制御されます。

主な接続手順

  1. LCD12864 ディスプレイ
    • データ ポート D0 ~ D7 はマイクロコントローラの P0 ポートに接続されます。
    • 制御信号 RS、RW、E はそれぞれマイクロコントローラーの P2.0、P2.1、P2.2 に接続されます。
  2. DS18B20 温度センサー
    • データ ポート DQ は、マイクロコントローラーの P3.7 ポートに接続されます。
  3. ブザー
    • マイコンのP2.0ポートに接続します。
  4. ボタンモジュール
    • 各ボタンはマイクロコントローラーの P1 ポートに接続されており、ボタンの状態をスキャンして検出するために使用されます。

ソフトウェア設計

システムの初期化

システムの電源がオンになると、LCD ディスプレイの初期化、クロックの初期化、割り込みの初期化などを含む初期化が行われます。初期化コードは次のとおりです。

void main( void )
{
	uchar	clock_time[6]	= { 0X00, 0X59, 0X23, 0X09, 0X04, 0X11 };       /* 定义时间变量 秒  分 时 日 月 年 */
	uchar	alarm_time[2]	= { 10, 06 };                                   /* 闹钟设置  alarm_time[0]: 分钟  alarm_time[1] :小时 */
	uchar	temperature[2];                                                 /* 定义温度变量   temperature[0]  低8位   temperature[1]  高8位 */
	Lcd_Initial();                                                          /* LCD初始化 */
	Clock_Fresh( clock_time );                                              /* 刷新时间 */
	Clock_Initial( clock_time );                                            /* 时钟初始化 */

	/* 中断初始化 */
	EA	= 1;    /* 开总中断 */
	ET0	= 1;    /* Timer0 开中断 */
	ET2	= 1;    /* Timer2 开中断 */
	TMOD	= 0x01; /* Timer0 工作方式 1 */
	RCAP2H	= 0x3c;
	RCAP2L	= 0xb0; /* Timer2 延时 50 ms */
}

時刻の表示と更新

システムはメインループの時間を継続的に更新し、LCD ディスプレイに表示します。同時に、温度値が DS18B20 センサーを通じて読み取られ、LCD に表示されます。

while ( 1 )
{
	Clock_Fresh( clock_time );      /* 时间刷新 */
	Lcd_Clock( clock_time );        /* 时间显示 */

	Sensor_Fresh( temperature );    /* 温度更新 */
	Lcd_Temperture( temperature );  /* 温度显示 */

	/* 整点报时 */
	if ( (*clock_time == 0x59)