基于STM32的多功能数字钟
程序功能:基于STM32的多功能数字钟
**************************************************************************************
1、时钟的基准用STM32F103RCT6自带的RTC实现。
2、这三个按键的功能分别为:"设置"、"+"、"-"。(WAKEUP KEY0 KEY1)
三个按键作为这三个功能:
键盘上的WAKEUP用作"设置",KEY0用作"+",KEY1用作"-"。
设定时间、日期、星期时,按下设定键,
相应的参数会闪动,即一亮一灭,提示正的修改的数据,每按一下设置键,
设定的项目就会变化,顺序为:
秒--分--时--星期--日--月--年。
顺序设定完后,再按一下设定键,就退出设定状态,回到正显示状态。
3、用DS18B20显示温度。精确到小数点后一位。如:33.5℃。
4、增加用红外遥控器的CH CH+ CH- 三个按键进行时间设置,
功能等同于键盘上的(WAKEUP KEY0 KEY1)"设置"、"+"、"-"。
5、通过串行口设置时间日期。
如串行口发送t12:30:00 设置时间;
如串行口发送d2016-08-12 设置日期;
6、通过触摸屏进行时间日期设置
在触摸屏上有 SET + -三个标志,当用触笔去按时,就会产生同开发板上的
按键一样的效果。
触摸按下去和弹起来时,按键的颜色会发生变化。
**************************************************************************************
硬件:LED0----GPIOA.8
KEY0----GPIOC.5
KEY1----GPIOA.15
KEY_WAKEUP----GPIOA.0
TIMER2定时器定时功能。
TIMER5定时器的定时和捕获功能
TFT液晶屏2。8寸屏带触摸功能。
TOUCH触摸屏。
DS18B20---PC4;
HS138红外遥控---PA1;
串行口USART1;
RTC实时时钟
开发板:正点原子MINI开发板
**************************************************************************************
编程目的:让大赛学生尽快学会STM32的综合编程。
**************************************************************************************
编程软件:KEIL5
**************************************************************************************
常用的算法:
按键采用状态机实现按键扫描。在定时器中对按键进行处理。
红外部分采用定时器捕获功能实现。
时间用STM32自带的RTC实现;
**************************************************************************************
时间:2016.8.12
作者:王庐山
工作室:湖北工业职业技术学院电子创新中心
***************************************************************************************/
#include "stm32f10x_conf.h"
#include "delay.h"
#include "sys.h"
#include "LED.h"
#include "key.h"
#include "timer2.h"
#include "24cxx.h"
#include "lcd.h"
#include "touch.h"
#include "usart.h"
#include "rtc.h"
#include "ds18b20.h"
#include "remote.h"
//时间结构体
typedef struct
{
vu8 s_hour;
vu8 s_min;
vu8 s_sec;
//公历日月年周
vu16 s_year;
vu8 s_month;
vu8 s_date;
vu8 s_week;
}Timer;
Timer S_timer;
unsigned char flag_20ms=0x0,flag_500ms=0,flag_250ms=0,flag_1s=0;//定时标志
unsigned char flag_key0=0,flag_key1=0,flag_key2=0,flag_tiao=0,key_remot=0;
void Disp_Tiao_Shan(void);
void Load_Drow_Dialog(void);
int main(void)
{
unsigned char temp[12],sec_back=0xff,t=0,len=0;
short temp5;
delay_init();
NVIC_Configuration();
uart_init(9600);
Led_Init();
key_init();
Timer2_config(71,2000); //定时两毫秒
DS18B20_Init();
Remote_Init();
AT24CXX_Init();
RTC_Init();
LCD_Init();
LCD_Clear(BLUE);
TP_Init();
POINT_COLOR=RED;
BACK_COLOR=BLUE;
LCD_ShowString(10,50,220,24,24,"--MULT FUNC CLOCK--");
LCD_ShowString(60,260,180,24,24,"SET + - ");
// POINT_COLOR=YELLOW ;
LCD_DrawRectangle(50,250,100,290);
LCD_DrawRectangle(110,250,160,290);
LCD_DrawRectangle(170,250,220,290);
while(1)
{
if(tp_dev.sta&TP_PRES_DOWN)//有触摸按下状态。
{//按下时,方框的颜色要发生变化,这样看效果才明显示,
//手松开后,又要恢复原画的颜色。
if((tp_dev.x[0]>50)&&(tp_dev.x[0]<100)&&(tp_dev.y[0]>250)&&(tp_dev.y[0]<290))
{LCD_Fill(51,251,99,289,YELLOW);LCD_ShowString(60,260,36,24,24,"SET");}
else if((tp_dev.x[0]> else if((tp_dev.x[0]>110)&&(
STM32数字 相关文章:
- STM32 数字电压表 LM317 可调电源(12-03)
- 基于STM32的多功能数字钟(中文版)(11-18)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
