2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
この実験は、STC89C52 マイクロコントローラーの LCD12864 ディスプレイに基づく永久カレンダー システムを設計および実装し、温度センサーを統合して温度監視機能を実現することを目的としています。毎時チャイムとアラーム機能があり、ブザーでお知らせします。このデザインは、基本的な時計と温度表示を実現できるだけでなく、特定のアラーム機能も備えており、家庭やオフィスのシナリオに適しています。
回路は主にマイクロコントローラー、LCDディスプレイ、温度センサー、ブザーで構成されています。 LCD12864 表示画面はパラレル インターフェイスを通じてマイクロコントローラーに接続され、DS18B20 温度センサーは単線インターフェイスを通じてマイクロコントローラーに接続され、ブザーはマイクロコントローラーの I/O ポートを通じて制御されます。
システムの電源がオンになると、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)