10. 实时钟系统设计
10.1 系统结构
10.2 程序设计
10.2.1 实时钟程序设计
10.2.2 按键和显示程序设计
10.2.3 系统程序设计
10.3 程序实现
10.1 系统结构
- 实时钟系统包括STM32MCU、实时钟电路DS1302、2个按键、4个LED、LED显示器和UART-USB转换器CP2102
- 实时钟电路提供实时钟计时,包括年、月、日、星期、时、分和秒等
- 2个按键用于切换LCD显示和设置实时钟
- 4个LED指示LCD显示的内容
- LCD分别显示年、月、星期、日、时、分和秒等
- UART-USB转换器CP2102通过USB实现与计算机的串行通信
- DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,可以对年、月、星期、日、时、分和秒进行计时,具有闰年补偿功能
- DS1302采用三线接口与CPU进行同步通信,可采用突发方式一次传送多个字节的时钟或RAM数据
- DS1302的工作电压为2.5-5.5V,8引脚封装
- DS1302控制字节
- DS1302读写时序
- DS1302时钟寄存器
10.2 程序设计
10.2.1 实时钟程序设计
- 实时钟程序设计根据DS1302读写时序进行编写。DS1302读写时序包括2个基本操作:写时序包括2个写操作(写地址和写数据),读时序包括1个写操作(写地址)和1个读操作(读数据)因此,首先编写2个基本操作的子程序
- DS1302写子程序
//DS1302写子程序
//入口参数:data-写数据
void Ds1302_Write(char data)
{
char m;
for(m=0; m<8; m++)
{
if(data & 1<<m)
GPIOB->BSRR = 1<<7; //PB.07(I/O)=1
else
GPIOB->BRR = 1<<7; //PB.07(I/O)=0
GPIOB->BSRR = 1<<6; //PB.06(SCLK)=1
GPIOB->BRR = 1<<6; //PB.06(SCLK)=0
}
}
- DS1302读子程序
//DS1302读子程序
//出口参数:读数据
char DS1302_Read(void)
{
char m,data=0;
for(m