Compartilhamento de tecnologia

[TB Works] 51 Projeto de simulação MCU Proteus do calendário perpétuo LCD12864 e sistema de monitoramento de temperatura baseado em MCU

2024-07-08

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

Insira a descrição da imagem aqui

Relatório de experiência: Projeto do calendário perpétuo LCD12864 e sistema de monitoramento de temperatura baseado em microcontrolador

Introdução ao histórico

Este experimento tem como objetivo projetar e implementar um sistema de calendário perpétuo baseado no display LCD12864 do microcontrolador STC89C52 e integrar um sensor de temperatura para realizar a função de monitoramento de temperatura. O sistema possui campainha horária e função de alarme, além de alertas por meio de campainha. Este design pode não apenas realizar relógio básico e exibição de temperatura, mas também possui certas funções de alarme, tornando-o adequado para cenários domésticos ou de escritório.

Introdução de hardware

  1. Microcontrolador STC89C52: Como controlador central do sistema, é responsável por lidar com a implementação de diversas funções.
  2. Visor LCD12864: Usado para exibir informações como hora, data e temperatura.
  3. Sensor de temperatura DS18B20: Usado para monitorar a temperatura ambiente em tempo real.
  4. campainha: Usado para horário e lembrete de alarme.
  5. Módulo de botão: Usado para os usuários definirem funções de hora e alarme.
  6. Outros componentes eletrônicos: Como resistores, capacitores, etc., usados ​​para construção de circuitos e operação estável.

projeto de circuito

O circuito é composto principalmente por um microcontrolador, display LCD, sensor de temperatura e campainha. A tela LCD12864 é conectada ao microcontrolador por meio de uma interface paralela, o sensor de temperatura DS18B20 é conectado ao microcontrolador por meio de uma interface de fio único e a campainha é controlada por meio da porta de E/S do microcontrolador.

Principais instruções de conexão

  1. Visor LCD12864
    • As portas de dados D0-D7 estão conectadas à porta P0 do microcontrolador.
    • Os sinais de controle RS, RW e E são conectados a P2.0, P2.1 e P2.2 do microcontrolador, respectivamente.
  2. Sensor de temperatura DS18B20
    • A porta de dados DQ está conectada à porta P3.7 do microcontrolador.
  3. campainha
    • Conecte à porta P2.0 do microcontrolador.
  4. Módulo de botão
    • Cada botão está conectado à porta P1 do microcontrolador, que é usada para escanear e detectar o status do botão.

Design de software

inicialização do sistema

Depois que o sistema é ligado, ele é inicializado pela primeira vez, incluindo inicialização do display LCD, inicialização do relógio, inicialização de interrupção, etc. O código de inicialização é o seguinte:

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

Exibição e atualização da hora

O sistema atualiza continuamente a hora no circuito principal e a exibe no display LCD. Ao mesmo tempo, o valor da temperatura é lido através do sensor DS18B20 e exibido no LCD.

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

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

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