当前位置:文档之家› stm32电子钟设计课程设计报告

stm32电子钟设计课程设计报告

成绩课程论文题目:基于STM32的多功能电子时钟学生姓名:梁健学生学号: 1008050120系别:电气信息工程系专业:电子信息科学与技术年级: 2010级任课教师:郑晓东电气信息工程学院制2013年3月基于stm32的多功能电子时钟学生:梁健指导教师:郑晓东电气信息工程学院电子信息科学与技术专业一、设计任务与要求 (5)1、设计任务 (5)2、设计要求 (5)二、方案设计与论证 (5)1、单片机芯片选择方案 (7)2、显示选择方案 (7)三、硬件单元电路设计与参数计算 (8)1、电源电路 (8)2、按键电路 (8)3、rtc时钟 (9)4、12864显示电路 (9)5、温度传感器模块 (10)四、软件设计与流程图 (10)1、主程序流程图 (10)2、显示子程序流程图 (12)3、按键子程序流程图 (14)五、总原电路及元器件清单 (16)1.总原理图 (16)六、元器件清单 (26)七、主程序 (26)八、参考文献 (30)摘要:本论文基于单片机原理技术介绍了一款于stm32芯片作为核心控制器的单片机数字电子钟的设计与制作,包括硬件电路原理的实现方案设计、软件程序编辑的实现、数字电子钟正常工作的流程、原理图仿真实现、硬件实物的安装制作与硬件实物的调试过程。

该单片机数字电子钟采用stm32自带的RTC,用lLCD12864能够准确显示时间(显示格式为:年月日时分秒),可随时进行时间调整,时间可采用12 小时制显示或24 小时制显示,用12864做成菜单形式,闹铃提醒,可按自己的要求设置扩展的小键盘个数,并增加温度显示。

关键词:单片机、数字电子钟、LCD12864、STM32、RTC,温度传感器一、设计任务与要求1、设计任务用STM32设计一个数字电子钟,采用LCD12864来显示并修改,时间或闹铃。

2、设计要求(1)显示格式为:XX\XX\XX XX\XX\XX 即:年\月\日时\分\秒。

(2)具有闹铃功能。

(3)按键改变时间。

(4)按键改变闹铃。

(5)温度的显示。

二、方案设计与论证整个系统用stm32单片机作为中央控制器,由单片机执行采集内部rtc值,时钟信号通过单片机I/O口传给LCD12864,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号的输出、LCD12864的显示及相关的控制功能。

系统设有按键模块用于对时间进行调整及扩展多个小键盘,系统整体框图如图1所示。

图1 系统整体框图1、单片机芯片选择方案方案一:stm32是一个低功耗,高性能32位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash 只读程序存储器。

主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。

方案二:AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM)。

主要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit内部RAM、3个16位可编程定时/计数器中断、时钟频率0-24MHz、2个串行中断、可编程UART串行通道、2个外部中断源、6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式、软件设置睡眠和唤醒功能。

从单片机芯片主要性能角度出发,本数字电子钟单片机芯片选择设计采用方案一既stm32。

2、显示选择方案方案一:lcd1286。

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

方案二:数码管动态显示。

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

利用人的视觉暂留功能可以看到整个显示,但须保证扫描速度足够快,人的视觉暂留功能才可察觉不到字符闪烁。

显示器的亮度与导通电流、点亮时间及间隔时间的比例有关。

调整参数可以实现较高稳定度的显示。

动态显示节省了I/O口,降低了能耗。

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

三、硬件单元电路设计与参数计算1、电源电路本数字电子钟设计所需电源电压为直流、电压值大小5V的电压源。

从硬件实物设计简易程度与经费方面考虑,用两节电压值大小2.5V干电池与电路电压源引脚相连接即可达到硬件设计要求。

即本数字电子钟设计用两节电压值大小2.5V干电池做硬件电路电压源。

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

单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平的高低,即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求。

3、rtc时钟Stm32自带rtc模块,实时时钟是一个独立的定时器。

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

修改计数器的值可以重新设置系统当前的时间和日期RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。

系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。

在RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL)赋值可改变时间,在RTC闹钟寄存器(RTC_ALRH/RTC_ALRL)中改变闹铃时间。

4、12864显示电路数字电子钟设计的显示模块用8个一位数码管实现,也可用两个四位一体数码管实现。

两种实现方式实现效果一样。

从实物制作的难易程度出,本数字电子钟设计采用两个四位一体数码管实现。

即数码管引脚与单片机芯片和74LS245对应引脚相连接。

5、温度传感器模块DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。

主要根据应用场合的不同而改变其外观。

封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。

耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。

1: 技术性能描述①、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

② 、测温范围-55℃~+125℃,固有测温误差(注意,不是分辨率,这里之前是错误的)0.5℃。

③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。

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

四、软件设计与流程图1、主程序流程图主程序流程图如下图图2所示图22、显示子程序流程图显示程序流程图如下图图3所示。

图33、按键子程序流程图显示子程序流程图如下图图4所示。

图4五、总原电路及元器件清单1.总原理图最小系统控制原理图如下图图5所示, 12864原理图如下图图6所示。

图5(1):stm32f103引脚图图5(2):指示灯与复位电路图5(3):稳压电路,变压电路,晶震图62.实物图图7 按键模块图8 stm32最小系统模块图9 欢迎界面图10 选择界面图11 正常显示界面图12 选择时界面图13 调整时间界面图14 调整闹铃界面图15 闹铃开始界面图16 12864实物图17 调温度传感器实物六、元器件清单七、主程序//#include <stm32f10x_lib.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 "rtc.h"#include "lcd12864.h"#include "ds18b20.h"#include "adc.h"#include "timer.h"const u8 *COMPILED_DATE=__DATE__;//获得编译日期const u8 *COMPILED_TIME=__TIME__;//获得编译时间extern u8 TIM5CH1_CAPTURE_STA; //输入捕获状态extern u16 TIM5CH1_CAPTURE_VAL; //输入捕获值short temp;int main(void){//u16 adcx;u8 t=1;Stm32_Clock_Init(9);//系统时钟设置delay_init(72); //延时初始化uart_init(72,9600); //串口1初始化KEY_Init();LCD12864_initial(); //初始化12864液晶LCD_Clearh(); //12864液晶初始化LED_Init(); //初始化与LED连接的硬件接口Adc_Init(); //AD转换初始化EXTIX_Init(); //外部中断初始化RTC_Init(); //时钟初始化xuanzhe(); //选择你需要的操作while(DS18B20_Init())//初始化DS18B20,兼检测18B20 {LCD(3,0,"失败");delay_ms(500);LED0=!LED0;//DS0闪烁}while(1){temp=DS18B20_Get_Temp();if(temp<0){temp=-temp;LCD(3,4,"_");}Show_dig(2,5,temp/10);//显示温度值LCD12864_sendbyte(0,0x33);LCD12864_sendbyte(1,46);Show_digl(temp%10);LCD(2,7,"℃");if(t!=timer.sec){t=timer.sec;Show_dig(1,0,timer.w_year);LCD12864_sendbyte(1,47);if(timer.w_month<=9){ Show_digl(0);Show_digl(timer.w_month);}elseShow_digl(timer.w_month);LCD12864_sendbyte(1,47);if(timer.w_date<=9){ Show_digl(0);Show_digl(timer.w_date);}elseShow_digl(timer.w_date);switch(timer.week){case 0:LCD(1,5,"星期天");break;case 1:LCD(1,5,"星期一");break;case 2:LCD(1,5,"星期二");break;case 3:LCD(1,5,"星期三");break;case 4:LCD(1,5,"星期四");break;case 5:LCD(1,5,"星期五");break;case 6:LCD(1,5,"星期六");break;}Show_digshuzhi(2,0,timer.hour); LCD12864_sendbyte(1,58);if(timer.min<=9){ Show_digl(0);Show_digl(timer.min);}elseShow_digl(timer.min);LCD12864_sendbyte(0,0x33);LCD12864_sendbyte(1,58);if(timer.sec<=9){ Show_digl(0);Show_digl(timer.sec);}elseShow_digl(timer.sec);LCD12864_sendbyte(0,0x02);Show_dig(2,5,temp/10);//显示温度值LCD12864_sendbyte(0,0x33);LCD12864_sendbyte(1,46);Show_digxiaoshu(temp%10);LCD(2,7,"℃");delay_ms(50);}}}八、参考文献[1] 康华光.电子技术基础模拟部分第四版[M].北京:高等教育出版社,1999.6.[2] 阎石.数字电子技术基础第四版[M].北京:高等教育出版社,1999.6.[3]王福瑞等.单片微机测控系统设计大全[M].北京航空航天大学出版社,1998(331-337).[4]宁改娣,杨拴科.DSP控制器原理及应用[M].科学出版社,2002.[5] 周立功等.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.1.[6] 周立功等.ARM嵌入式系统实验教程[M].北京:北京航空航天大学出版社,2005.1.[7] 罗浩等.一种新的基于ARM的数据采集系统设计[J].信阳师范学院学报(自然科学版),2006.4.[8] 秦伟等.基于ARM 处理器的数据采集系统的设计[J].自动化技术与应用.2006 年第10 期.[9] 杜春雷.ARM体系结构与编程.清华大学出版社,2003.[10] 李宁.ARM开发工具ReaIView MDK使用入门[M].北京航空航天大学出版社,2008.[11] 李宁.基于MDK的STM32处理器开发应用[M].北京航空航天大学出版社,2008.[12]刘黎明等.单片机与嵌入式系统应用[J].英文刊名MICROCON TROLLER&EMBEDDED SYSTEM. 2002(7).。

相关主题