课程论文
成绩 题 目:基于STM32的多功能电子时钟
学生姓名: 梁健
学生学号: 1008050120 系 别:专 业:年 级:任课教员:郑晓东 电气信息工程系 电子信息迷信与技术 级
电气信息工程学院制
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 错误!未指定书签。
1、主程序流程图4 2、显示子程序流程图12 3、按键子程序流程图14 五、总原电路及元器件清单16
1.总原理图16
六、元器件清单错误!未指定书签。 七、主程序16 八、 参考文献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(Insystem programmable)的可反复擦写1000次的Flash只读程序存储器.主要性能有:与MCS51单片机产品兼容、全静态操纵:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程.
方案二:AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM).主要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit外部RAM、3个16位可编程定时/计数器中断、时钟频率024MHz、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所示
开启rtc,初始化 图2 进入循是 Sec变否 2、显示子程序流程图
显示程序流程图如下图图3所示.
开端 Rtc计数开端 循环次数加1 是否满1s? 秒值加1 N 是否满分值加1 N 是否满Y小时加1 N 是否满Y显示缓冲单元清0 返回
图3
3、按键子程序流程图
显示子程序流程图如下图图4所示.
开端 DISPLAY Y 切换键是 否按下? N 秒值按键按下正常显示? 分值按键按下Y 小时按键按下标记位显示小时>=N Y 分离秒值个位、标记位显示A 显示秒十位、个显示H Y 时数加Y 分数加Y 秒数加显示分十位、个分离分值个位、分离小时个位、显示小时十位、
图4
五、总原电路及元器件清单
1.总原理图
最小系统节制原理图如下图图5所示,12864原理图如下图图6所示.
图5(1):stm32f103引脚图
图5(2):指示灯与复位电路
图5(3):稳压电路,变压电路,晶震
图6
2.实物图
图7 按键模块
图8 stm32最小系统模块
图9 欢迎界面
图10 选择界面
图11 正常显示界面
图12 选择时界面
图13 调整时间界面
图14 调整闹铃界面
图15 闹铃开端界面
图16 12864实物
图17 调温度传感器实物
六、元器件清单
STM32F103VE一个 杜邦线 一束 T6 Lcd12864 Ds18b20 电源 一个 一个 一个 定位器(10k) 插排 铜柱 一个 一排 两个 七、主程序
//#include const u8 *COMPILED_DATE=__DATE__;//获得编译日期 const u8 *COMPILED_TIME=__TIME__;//获得编译时间 extern u8 TIM5CH1_CAPTURE_STA; //输入捕获状态 extern u16 short temp; TIM5CH1_CAPTURE_VAL; //输入捕获值 int main(void) { //u16 adcx; u8 t=1; Stm32_Clock_Init(9);//系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口1初始化 KEY_Init(); LCD12864_initial(); LCD_Clearh(); //初始化12864液晶 //12864液晶初始化 //初始化与LED毗连的硬件接口 LED_Init(); Adc_Init(); //AD转换初始化 EXTIX_Init(); //外部中断初始化 RTC_Init(); //时钟初始化 xuanzhe(); //选择你需要的操纵 while(DS18B20_Init())//初始化DS18B20,兼检测18B20 { LCD(3,0,\"失败\"); } while(1) { delay_ms(500); LED0=!LED0;//DS0闪烁 temp=DS18B20_Get_Temp(); { temp=temp; if(temp<0) 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); } else Show_digl(timer.w_month); LCD12864_sendbyte(1,47); if(timer.w_date<=9) { Show_digl(0); Show_digl(timer.w_date); } else Show_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); LCD12864_sendbyte(0,0x33); if(timer.min<=9) { Show_digl(0); Show_digl(timer.min); } else Show_digl(timer.min); LCD12864_sendbyte(0,0x33); LCD12864_sendbyte(1,58); if(timer.sec<=9) { Show_digl(0); Show_digl(timer.sec);} } else Show_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); LCD12864_sendbyte(0,0x02); } 八、参考文献 [1] 康华光.电子技术基础摹拟部分第四版[M].北京:高等教导出版社,1999.6. [2] 阎石.数字电子技术基础第四版[M].北京:高等教导出版社,1999.6. [3]王福瑞等.单片微机测控系统设计大全[M].北京航空航天大学出版社 ,1998(331 - 337) . [4]宁改娣,杨拴科.DSP节制器原理及应用[M].迷信出版社,. [5]周犯罪等.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,.1. [6]周犯罪等.ARM嵌入式系统实验教程[M].北京:北京航空航天大学出版社,.1. [7]罗浩等.一种新的基于ARM的数据收集系统设计[J].信阳师范学院学报(自然迷信版),.4. [8] 秦伟等.基于ARM 处理器的数据收集系统的设计[J].自动化技术与应用. 年第10 期. [9] 杜春雷.ARM体系布局与编程.清华大学出版社,. [10] 李宁.ARM开辟工具ReaIView MDK使用入门[M].北京航空航天大学出版 社,. [11] 李宁.基于MDK的STM32处理器开辟应用[M].北京航空航天大学出版社,. [12]刘拂晓等.单片机与嵌入式系统应用[J].英文刊名MICROCON TROLLER&EMBEDDED SYSTEM. (7). 因篇幅问题不能全部显示,请点此查看更多更全内容