1、电子时钟设计汇报1 设计任务和要求1.1 设计任务用STM32设计一个数字电子钟,采取LCD12864来显示并修改,时间或闹铃。1.2 设计要求1)显示功效:可显示时间等基础功效。2)含有闹铃功效。3)按键改变时间。4)按键改变闹铃。5)温度显示。2 方案设计和论证整个系统用stm32单片机作为中央控制器,由单片机实施采集内部RTC值,时钟信号经过单片机I/O口传给TFT彩屏,单片机模块控制驱动模块驱动显示模块,经过显示模块来实现信号输出。系统设有按键模块用于对时间进行调整及扩展多个小键盘。2.1 显示电路方案一 :TFT彩屏。显示质量高,没有电磁辐射,可视面积大,应用范围广,画面效果好,数字
2、式接口,“身材”匀称小巧,功耗小。方案二:数码管动态显示。动态显示,即各位数码管轮番点亮,对于显示器各位数码管,每隔一段延时时间循环点亮一次。利用人视觉暂留功效能够看到整个显示,但须确保扫描速度足够快,人视觉暂留功效才可觉察不到字符闪烁。显示器亮度和导通电流、点亮时间及间隔时间百分比相关。调整参数能够实现较高稳定度显示。动态显示节省了I/O口,降低了能耗。从节省单片机芯片I/O口和降低能耗角度出发,本数字电子钟数码管显示选择设计采取方案一,既TFT彩屏显示。2.2 电源电路本数字电子钟设计所需电源电压为直流、电压值大小5V电压源直接用mini USB经过电脑USB接口供电。2.3 按键电路 本
3、数字电子钟设计所需按键用于进行显示时间调整和设置扩展小键盘。单片机芯片4个I/O口可和按键直接相连,经过编程,单片机芯片即可控制按键接口电平高低,即按键开和关,以达成用按键进行显示时间调整和设置扩展小键盘设计要求。2.4 RTC时钟 Stm32自带RTC模块,实时时钟是一个独立定时器。RTC模块拥有一组连续计数计数器,在对应软件配置下,可提供时钟日历功效。修改计数器值能够重新设置系统目前时间和日期RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC设置和时间维持不变。系统复位后,对后备寄存器和RTC访问被严禁,这是为了预防对后备区域(BKP)意
4、外写操作。在RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL)赋值可改变时间,在RTC闹钟寄存器(RTC_ALRH/RTC_ALRL)中改变闹铃时间。 2.5 TFT 彩屏显示电路 数字电子钟设计显示模块用一个TFT彩屏来实现。2.6 温度传感器模块 DS18B20数字温度传感器接线方便,封装成后可应用于多个场所,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多个多样,有LTM8877,LTM8874等等。关键依据应用场所不一样而改变其外观。封装后DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等多种非极限温度场所。耐磨
5、耐碰,体积小,使用方便,封装形式多样,适适用于多种狭小空间设备数字测温和控制领域。技术性能描述:独特单线接口方法,DS18B20在和微处理器连接时仅需要一条口线即可实现微处理器和DS18B20双向通讯。测温范围 55+125,固有测温误差(注意,不是分辨率,这里之前是错误)0.5。支持多点组网功效,多个DS18B20能够并联在唯一三线上,最多只能并联8个,实现多点测温,假如数量过多,会使供电电源电压过低,从而造成信号传输不稳定。工作电源: 35V/DC (能够数据线寄生电源)在使用中不需要任何外围元件。3 硬件电路设计图1 stm32f103引脚图图2 指示灯和复位电路图3 稳压电路,变压电路
6、,晶震图4 实物图4 软件设计主程序以下#include #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#include flash.h#include touch.h#include 24l01.h
7、#include mmc_sd.h#include remote.h#include ds18b20.hconst u8 *COMPILED_DATE=_DATE_;/取得编译日期const u8 *COMPILED_TIME=_TIME_;/取得编译时间const u8* Week7=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)
8、; /串口1初始化 LED_Init(); LCD_Init();RTC_Init(); /RTC_Set(,7,15,20,27,50); /设置时间 POINT_COLOR=RED;/设置字体为红色 LCD_ShowString(30,50, CCNU - NERCEL);LCD_ShowString(30,70, Zhu Xiaobin 112786);LCD_ShowString(30,90,Jiang Xiaomei 112787);/LCD_ShowString(30,110,/07/15);/显示时间POINT_COLOR=BLUE;/设置字体为蓝色LCD_ShowString(
9、60,130, - - ); LCD_ShowString(60,162, : : );while(DS18B20_Init()/初始化DS18B20,兼检测18B20LCD_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
10、, Temperate: . C);while(1) if(t!=timer.sec)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_ShowStri
11、ng(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,16
12、2,timer.sec,2,16);LED0=!LED0;delay_ms(10);temp=DS18B20_Get_Temp();if(temp0)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:%dn,temp);delay_ms(200);LED0=!LED0; ; 参考文件1 康华光.电子技术基础模拟部分第四版M.北京:高等教育出版社,1999.6.2 阎石.数字电子技术基础第四版M.北京:高等教育出版社,1999.6.3王福瑞等单片微机测控系统设计大全M北京航空航天大学出版社,1998(331337) 4宁改娣,杨拴科DSP控制器原理及应用M科学出版社,5 周立功等.ARM嵌入式系统基础教程M.北京:北京航空航天大学出版社,.1.6 周立功等.ARM嵌入式系统试验教程M.北京:北京航空航天大学出版社,.1.7 罗浩等.一个新基于ARM数据采集系统设计J.信阳师范学院学报(自然科学版),.4.8 秦伟等.基于ARM 处理器数据采集系统设计J.自动化技术和应用. 年第10 期.9 杜春雷.ARM体系结构和编程.清华大学出版社,.