可以通过LCD的输出显示公历和农历时间,通过按键设置时间和闹钟;通过蜂鸣器响应闹钟。 三、电路原理图、接口、硬件构成
特厚钢板
1.原理图
2.接口
本次实验使用了串口、定时器、中断接口。
3.硬件组成
(1)实验设计程序流程图如图左所示,中断流程图如图右所示。
(2)该设计分为软件设计和硬件设计两大模块,硬件电路由ARM 最小系统电路、时钟显示电路和闹钟提醒电路组成,采用stm32f103RCT6芯片,芯片管脚图示如下。
(3)时钟电路
此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图所示:晶振采用的是 8MHz 和 32.786KHz , 8MKz 分别接 STM32 的5 脚和 6 脚, 32.786KHz 分别接 STM32 的 3 脚和 4 脚。
(4)闹钟提醒电路
本次实验设计的闹钟提醒电路为蜂鸣器电路,接入芯片的PC7引脚,当时间为设置闹钟时间时,蜂鸣器工作,发出响声,提醒电路如图所示。
四、核心代码(带注释)
#include "delay.h"
#include "sys.h"
#include "lcd.h"
#include "dht11.h"
#include "ds1302.h"
#include "KEY.h"
#include "beep.h"
u8 temp;
u8 humi;
ca1703u8 t=0;
u8 flag=0,flag1=0,flag2=0,flag3=1; u8 a,b,c;
int min1=10,hour1=10;
DHT11_Data_TypeDef DHT11_Data;
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
//定时器TIM3初始化
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载计时器的值
智能防盗窗
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
//中断优先级NVIC设置
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM中断
智能卡制作
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
指路器NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能