Обмен технологиями

[TB Works] 51 MCU Proteus имитирует дизайн вечного календаря LCD12864 и системы мониторинга температуры на основе MCU.

2024-07-08

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

Вставьте сюда описание изображения

Отчет об эксперименте: Разработка системы вечного календаря и контроля температуры LCD12864 на базе микроконтроллера.

Предыстория

Целью этого эксперимента является разработка и реализация системы вечного календаря на основе дисплея LCD12864 микроконтроллера STC89C52 и интеграция датчика температуры для реализации функции мониторинга температуры. Система имеет ежечасный звуковой сигнал и функцию будильника, а также подсказки через зуммер. Эта конструкция может не только отображать основные часы и температуру, но также имеет определенные функции сигнализации, что делает ее подходящей для домашнего или офисного использования.

Введение в оборудование

  1. Микроконтроллер STC89C52: Являясь основным контроллером системы, он отвечает за выполнение различных функций.
  2. ЖК-дисплей12864: используется для отображения такой информации, как время, дата и температура.
  3. Датчик температуры DS18B20: используется для мониторинга температуры окружающей среды в режиме реального времени.
  4. зуммер: используется для почасового напоминания о времени и будильнике.
  5. Кнопочный модуль: используется пользователями для установки времени и функций будильника.
  6. Другие электронные компоненты: Например, резисторы, конденсаторы и т. д., используемые для построения цепей и стабильной работы.

схемотехника

Схема в основном состоит из микроконтроллера, ЖК-дисплея, датчика температуры и зуммера. Экран дисплея LCD12864 подключен к микроконтроллеру через параллельный интерфейс, датчик температуры DS18B20 подключен к микроконтроллеру через однопроводной интерфейс, а управление зуммером осуществляется через порт ввода-вывода микроконтроллера.

Основные инструкции по подключению

  1. ЖК-дисплей12864
    • Порты данных D0-D7 подключены к порту P0 микроконтроллера.
    • Сигналы управления RS, RW и E подключены к P2.0, P2.1 и P2.2 микроконтроллера соответственно.
  2. Датчик температуры DS18B20
    • Порт данных DQ подключен к порту P3.7 микроконтроллера.
  3. зуммер
    • Подключитесь к порту P2.0 микроконтроллера.
  4. Кнопочный модуль
    • Каждая кнопка подключена к порту P1 микроконтроллера, который используется для сканирования и определения состояния кнопки.

дизайн программного обеспечения

инициализация системы

После включения системы она сначала инициализируется, включая инициализацию ЖК-дисплея, инициализацию часов, инициализацию прерываний и т. д. Код инициализации следующий:

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 */
}

Отображение и обновление времени

Система постоянно обновляет время в основном контуре и отображает его на ЖК-дисплее. При этом значение температуры считывается датчиком DS18B20 и отображается на ЖК-дисплее.

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

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

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