资料清单:源程序+PDF原理图+PCB图+实物演示视频+软件安装包
PDF原理图&PCB图:Altium Designer
程序编译:Keil5 MDK
编程语言:C语言
设计编号:【STM003】
1、简介
本文提出了一种基于STM32单片机的OLED万年历设计。该设计在硬件方面主要采用STM32F103C8T6作为主控核心,结合DS3231时钟模块、DS18B20温度传感器、蜂鸣器,OLED液晶显示屏显示,同时电子万年历还具有时间校准、闹钟提醒等功能。
2、主要功能
a.通过OLED显示年月日、时分秒、温度、星期、闹钟等信息。
b.通过独立按键设置年月日、时分秒、闹钟。
c.通过DS3231时钟芯片提供系统时钟。
d.通过DS18B20芯片提供实时温度。
e.通过蜂鸣器提示闹钟状态。
3、源程序
int main()
{
SystemInit();
delay_init(72); //延时初始化
NVIC_Configuration();
uart_init(9600); //串口初始化
//Timerx_Init(5000,7199);//10Khz的计数频率,计数到5000为500ms
Timerx_Init(99,719);//10Khz的计数频率,计数到50为1ms
OLED_Init();
Init_DS1302();
LED_Init();
DS18B20_Init();
KEY_Init();
delay_ms(50);
RefreshTime(); //刷新时间
RefreshDate(1); //立即刷新日期
RefreshTemp(1); //立即刷新温度显示
RefreshLunarn();
while(1)
{
KeyScan();//按键扫描
KeyDriver(); //按键检测
if(flag200ms) //200ms时间到
{
flag200ms = 0; //清零标志位
AlarmMonitor(); //监控闹钟
if (staSystem == E_NORMAL)//如果系统正常运行
{
RefreshTime(); //刷新时间
RefreshDate(0);//刷新日期
RefreshLunarn();//刷新主界面农历
}
if (staSystem == Dis_Alarm)
{
RefreshLunar(); //刷新阴历
}
}
if(flag1s && (staSystem == E_NORMAL))//1s时间到并且系统为正常运行
{
flag1s = 0;//清零标志位
RefreshTemp(0);//刷新温度
}
}
}
void RefreshTemp(uint8_t ops)
{
short temp;
static int16_t backup = 0;
temp=DS18B20_Get_Temp(); //获取当前温度值
if ((backup!=temp) || (ops!=0)) //按需要刷新液晶显示
{
if(temp/10 > 0)
OLED_P8x16Str(80,6,temp/100); //显示温度十位
else
OLED_P8x16Str(80,6,12); //否则温度十位为0不显示
OLED_P8x16Str(88,6,temp % 100/10); //显示温度个位
OLED_P8x16Str(96,6,14); //显示小数点
OLED_P8x16Str(104,6,temp % 10); //显示温度小数第1位
OLED_ShowCHinese(112,6,14); //显示℃符号
OLED_ShowCHinese(96, 0, 43); //显示星期
OLED_ShowCHinese(64,6,21); //显示温度图标 大
//RefreshLunarn();//刷新主界面农历
temp= 0;
backup = temp; //刷新上次温度值
}
}
void TIM3_IRQHandler(void) //TIM3中断
{
static uint8_t tmr1s = 0;
static uint8_t tmr200ms = 0;
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
tmr200ms++; //定时200ms
if (tmr200ms >= 1)
{
tmr200ms = 0;
flag200ms = 1;
tmr1s++; //定时1s
if (tmr1s >= 5)
{
tmr1s = 0;
flag1s = 1;
}
}
}
}
4、PDF原理图和PCB图
该原理图和PCB是通过Altium Designer软件设计的,仅提供PDF原理图和PCB顶层/底层图片!!!
PDF原理图:
PCB顶层和底层图:
5、实物效果图
6、资料清单
7、资料获取链接
百度网盘下载链接:https://docs.qq.com/doc/DRXdKb1hOTGRMZVdR
更多单片机实物设计合集:https://docs.qq.com/sheet/DRURGZmFVZ1BoQ2ZU
100