电子时钟设计学习报告计划

时间:2020-11-27 10:11:10 手机站 来源:网友投稿

电子时钟设计报告

电子时钟设计报告

设计任务与要求

1.1 设计任务

用 STM32设计一个数字电子钟, 采用 LCD12864来显示并修改, 时间或闹铃。

1.2 设计要求

1)显示功能:可显示时间等基本功能。

2)具有闹铃功能。

3)按键改变时间。

4)按键改变闹铃。

5)温度的显示。

方案设计与论证

整个系统用 stm32 单片机作为中央控制器,由单片机执行采集内部 RTC值,

时钟信号通过单片机 I/O 口传给 TFT彩屏,单片机模块控制驱动模块驱动显示模

块,通过显示模块来实现信号的输出。 系统设有按键模块用于对时间进行调整及

扩展多个小键盘。

第2页 共10页

2.1 显示电路

方案一 :TFT 彩屏。显示质量高,没有电磁辐射,可视面积大,应用范围广,画面效果好,数字式接口, “身材 ”匀称小巧,功耗小。

方案二:数码管动态显示。动态显示,即各位数码管轮流点亮,对于显示器各位数码管, 每隔一段延时时间循环点亮一次。

 利用人的视觉暂留功能可以看到整个显示,但须保证扫描速度足够快, 人的视觉暂留功能才可察觉不到字符闪烁。显示器的亮度与导通电流、 点亮时间及间隔时间的比例有关。

 调整参数可以实现较高稳定度的显示。动态显示节省了 I/O 口,降低了能耗。

从节省单片机芯片 I/O 口和降低能耗角度出发, 本数字电子钟数码管显示选择设计采用方案一,既 TFT彩屏显示。

2.2 电源电路

本数字电子钟设计所需电源电压为直流、电压值大小 5V 的电压源直接用

mini USB 通过电脑 USB接口供电。

2.3 按键电路

本数字电子钟设计所需按键用于进行显示时间的调整与设置扩展

的小键盘。

单片机芯片 4 个 I/O 口可与按键直接相连, 通过编程,单片机芯片即可控制

按键接口电平的高低, 即按键的开与关, 以达到用按键进行显示时间的调整与设

置扩展的小键盘的设计要求。

第3页 共10页

2.4 RTC 时钟

Stm32 自带 RTC模块,实时时钟是一个独立的定时器。 RTC模块拥

有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计

数器的值可以重新设置系统当前的时间和日期 RTC 模块和时钟配置系统

(RCC_BDCR寄存器 ) 处于后备区域, 即在系统复位或从待机模式唤醒后, RTC的设

置和时间维持不变。系统复位后,对后备寄存器和 RTC的访问被禁止,这是为了

防止对后备区域 (BKP)的意外写操作。在 RTC 预分频器余数寄存器 (RTC_DIVH /

RTC_DIVL)赋值可改变时间,在 RTC闹钟寄存器 (RTC_ALRH/RTC_ALRL)中改变闹铃

时间。

2.5 TFT 彩屏显示电路

数字电子钟设计的显示模块用一个 TFT彩屏来实现。

2.6 温度传感器模块

DS18B20 数字温度传感器接线方便, 封装成后可应用于多种场合, 如

管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有 LTM8877,LTM8874

等等。主要根据应用场合的不同而改变其外观。 封装后的 DS18B20可用于电缆沟

测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹

药库测温等各种非极限温度场合。 耐磨耐碰,体积小,使用方便,封装形式多样,

适用于各种狭小空间设备数字测温和控制领域。

技术性能描述:

①独特的单线接口方式, DS18B20在与微处理器连接时仅需要一条口线即可

第4页 共10页

实现微处理器与 DS18B20的双向通讯。

②测温范围 - 55℃~ +125℃,固有测温误差(注意,不是分辨率,这里之

前是错误的) 0.5 ℃。

③支持多点组网功能, 多个 DS18B20可以并联在唯一的三线上, 最多只能并

联 8 个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。

④工作电源 : 3~5V/DC (可以数据线寄生电源)⑤在使用中不需要任何外围元件。

硬件电路设计

图 1 stm32f103 引脚图

第5页 共10页

图 2 指示灯与复位电路

图 3 稳压电路,变压电路,晶震

第6页 共10页

图4实物图

软件设计

主程序如下

#include <stm32f10x_lib.h>

#include "rtc.h"

#include "sys.h"

#include "usart.h"

#include "delay.h"

#include "led.h"

#include "key.h"

#include "exti.h"

#include "wdg.h"

#include "timer.h"

#include "lcd.h"

#include "rtc.h"

#include "wkup.h"

#include "adc.h"

#include "dma.h"

#include "24cxx.h"

第7页 共10页

#include "flash.h"

#include "touch.h"

#include "24l01.h"

#include "mmc_sd.h"

#include "remote.h"

#include "ds18b20.h"

const u8 *COMPILED_DATE=__DATE__;// 获得编译日期

const u8 *COMPILED_TIME=__TIME__;// 获得编译时间

const u8* Week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

int main(void)

{

u8 t=0;

short temp;

Stm32_Clock_Init(9);// 系统时钟设置

delay_init(72); // 延时初始化

uart_init(72,9600); // 串口 1 初始化

LED_Init();

LCD_Init();

RTC_Init();

//RTC_Set(2015,7,15,20,27,50); // 设置时间

POINT_COLOR=RED;//设置字体为红色

LCD_ShowString(30,50," CCNU - NERCEL");

LCD_ShowString(30,70," Zhu Xiaobin 2014112786");

LCD_ShowString(30,90,"Jiang Xiaomei 2014112787");

LCD_ShowString(30,110,"2015/07/15"); // 显示时间

POINT_COLOR=BLUE;//设置字体为蓝色

LCD_ShowString(60,130," - - ");

LCD_ShowString(60,162," : : ");

while(DS18B20_Init())// 初始化 DS18B20,兼检测 18B20

{

LCD_ShowString(60,180,"DS18B20 Check Failed!");

delay_ms(500);

LCD_ShowString(60,180,"Please Check! ");

delay_ms(500);

LED0=!LED0;//DS0 闪烁

}

LCD_ShowString(60,180,"DS18B20 Ready! ");

POINT_COLOR=BLUE;//设置字体为蓝色

LCD_ShowString(60,200, "Temperate: . C");

while(1)

{

if(t!=timer.sec)

第8页 共10页

{

t=timer.sec;

LCD_ShowNum(60,130,timer.w_year,4,16);

LCD_ShowNum(100,130,timer.w_month,2,16);

LCD_ShowNum(124,130,timer.w_date,2,16);

switch(timer.week)

{

case 0:

LCD_ShowString(60,148,"Sunday ");

break;

case 1:

LCD_ShowString(60,148,"Monday ");

break;

case 2:

LCD_ShowString(60,148,"Tuesday ");

break;

case 3:

LCD_ShowString(60,148,"Wednesday");

break;

case 4:

LCD_ShowString(60,148,"Thursday ");

break;

case 5:

LCD_ShowString(60,148,"Friday ");

break;

case 6:

LCD_ShowString(60,148,"Saturday ");

break;

}

LCD_ShowNum(60,162,timer.hour,2,16);

LCD_ShowNum(84,162,timer.min,2,16);

LCD_ShowNum(108,162,timer.sec,2,16);

LED0=!LED0;

}

delay_ms(10);

temp=DS18B20_Get_Temp();

if(temp<0)

{

temp=-temp;

LCD_ShowChar(140,200,'-',16,0);// 显示负号

}

LCD_ShowNum(148,200,temp/10,2,16);// 显示温度值

LCD_ShowNum(172,200,temp%10,1,16);// 显示温度值

//printf("t1:%d\n",temp);

第9页 共10页

delay_ms(200);

LED0=!LED0;

};

}

参考文献

康华光 . 电子技术基础模拟部分第四版 [M]. 北京:高等教育出版社,

1999.6.

阎石 . 数字电子技术基础第四版 [M]. 北京:高等教育出版社, 1999.6.

王福瑞等.单片微机测控系统设计大全[ M].北京航空航天大学出版社 ,1998(331 -337) .

宁改娣 , 杨拴科. DSP控制器原理及应用[ M].科学出版社, 2002.

周立功等 .ARM 嵌入式系统基础教程 [M]. 北京:北京航空航天大学出版

社, 2005.1.

周立功等 .ARM 嵌入式系统实验教程 [M]. 北京:北京航空航天大学出版

社, 2005.1.

罗浩等 . 一种新的基于 ARM的数据采集系统设计 [J]. 信阳师范学院学报

( 自然科学版 ) ,2006.4.

秦伟等 . 基于 ARM处理器的数据采集系统的设计 [J]. 自动化技术与应用 .2006 年第 10 期.

杜春雷 .ARM体系结构与编程 . 清华大学出版社, 2003.

第 10页 共 10页

  • 下载文档
  • 收藏
  • 0

推荐访问:学习报告 时钟 计划 报告 电子时钟设计学习报告计划

版权声明 :以上文章中选用的图片文字均来源于网络或用户投稿 ,如果有侵权请立即联系我们 , 我们立即删除 。