仿真:protues 8.9
编程语言:C语言
编号C0003
题目要求:
1.具有显示年、月、日、时、分、秒功能;
2.能计算并显示星期;
3.能手动调整时间,设置闹钟;
4.具有闹钟功能,时间到声光报警(蜂鸣器嘟嘟嘟,LED灯闪烁)。
讲解视频:
仿真图(提供源文件):

原理图(提供源文件):

PCB(提供源文件):

程序(提供源文件源码):
以下为部分程序:
int main(void)
{
bool i = 0;
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();//系统时钟初始化
delay_init(10);//初始化延时函数
TIM3_Init(2400-1, 72-1);// 10ms 定时器初始化
MX_RTC_Init(); //STM32内部RTC初始化
Key_Init();//按键初始化
Beep_Init();//声光报警初始化
LCD_Init();//LCD1602初始化
sAlrm_g.Alm_Hour = 0;//闹钟时间 时
sAlrm_g.Alm_Min = 0;//闹钟时间 分
sAlrm_g.Alm_Sec = 10;//闹钟时间 秒
while(1)
{
switch(set_mode)//设置模式
{
case 0:
HAL_RTC_GetDate(&hrtc, &sDate_g, RTC_FORMAT_BIN);//得到RTC的年月日
HAL_RTC_GetTime(&hrtc, &sTime_g, RTC_FORMAT_BIN); //得到RTC的时分秒
Conv_Disp_Data(0);//参数0 得到全部显示数据
LCD_write_string(0, 0, (char*)temp_line_one);//LCD1602第一行显示
LCD_write_string(0, 1, (char*)temp_line_two);//LCD1602第二行显示
break;
case 1://设置年份
Conv_Disp_Data(i*1);//i是1 屏蔽掉年份显示。i是0,显示年份。通过对i的取反实现年份闪缩
i = !i;//i取反
LCD_write_string(0, 0, (char*)temp_line_one);//LCD1602第一行显示
break;
case 2://设置月份
Conv_Disp_Data(i*2);
i = !i;
LCD_write_string(0, 0, (char*)temp_line_one);
break;
case 3://设置日份
Conv_Disp_Data(i*3);
i = !i;
LCD_write_string(0, 0, (char*)temp_line_one);
break;
case 4://设置时间
Conv_Disp_Data(i*4);
i = !i;
LCD_write_string(0, 0, (char*)temp_line_one);
break;
case 5://设置分钟
Conv_Disp_Data(i*5);
i = !i;
LCD_write_string(0, 0, (char*)temp_line_one);
break;
case 6://设置秒
Conv_Disp_Data(i*6);
i = !i;
LCD_write_string(0, 0, (char*)temp_line_one);
break;
case 7://设置闹钟时钟
Conv_Disp_Data(i*7);
i = !i;
LCD_write_string(0, 1, (char*)temp_line_two);
break;
case 8://设置闹钟分钟
Conv_Disp_Data(i*8);
i = !i;
LCD_write_string(0, 1, (char*)temp_line_two);
break;
case 9://设置闹钟秒钟
Conv_Disp_Data(i*9);
i = !i;
LCD_write_string(0, 1, (char*)temp_line_two);
break;
default:
break;
}
if( (sTime_g.Hours == sAlrm_g.Alm_Hour) && (sTime_g.Minutes == sAlrm_g.Alm_Min) && (sTime_g.Seconds == sAlrm_g.Alm_Sec) )//判断闹钟时间
{
for(uint8_t j = 0; j < 10; j++)//执行十次
{
LED2_TOG();//LED2翻转,蜂鸣器嘟嘟嘟报警
HAL_Delay(300);
}
}
HAL_Delay(100);//延时
}
}
上一篇:STM32看门狗定时器的工作原理和作用 看门狗定时器的特性
下一篇:简述串口通信原理 stm32串口发送数据 如何通过串口发送数据
- 热门资源推荐
- 热门放大器推荐
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用


非常经典的关于LLC的杨波博士论文
5962-89541022A

VI-27WIU






京公网安备 11010802033920号