2022年单片机的电子时钟方案设计书.docx
精品学习资源单片机应用系统设计课程设计报告标题: 基于单片机的电子时钟设计同学姓名: XXX系部: 汽车电子系专业: 应用电子技术班级: XXXX指导老师: XXXX目录摘要 1、方案挑选 11.1 DS1302+ 液晶显示屏欢迎下载精品学习资源2、设计方框图2.1电路设计总体框图2.2整体设计思路框图2.3程序设计框图3、硬件电路设计3.1 51单片机最小系统设计3.2 电源供电电路设计3.3 串口通信电路设计3.4 时钟芯片电路设计3.5 LCD 显示电路设计3.6 报警电路设计4、软件设计4.1 系统程序流程图设计4.2 系统程序设计结论 参考文献 附录 摘 要基于单片机设计的电子时钟精确度较高,由于在程序执行过程中,任何指令都不影响定时器的正常计数,即使程序很复杂也不会影响到中断时间;单片机是集CPU , RAM ,ROM ,定时器,计数器和多种接口于一体的微掌握器;它体积小、重量轻、抗干扰才能强、环境要求不高、价格低、牢靠性高、敏捷性好、开发较为简洁,广泛应用于智能生产和工业自动化上;本系统为基于 DS1302 的多功能电子钟,以STC89C51 单片机作为主控芯,采纳实时时钟芯片DS1302 ,使用1602 液晶作为显示输出;该系统走时精确,具有闹钟设置,时间模式切换,秒表以及可同时显示时间、日期等多种功能;关键词: SCT89C51单片机 液晶屏 时钟芯片 蜂鸣器欢迎下载精品学习资源1方案挑选1.1 DS1302+1602LCD 液晶屏DS1302是 DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/ 日历和 31 字节静态RAM通过简洁的串行接口与单片机进行通信实时时钟/ 日历电路供应秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示打算采纳24 或 12 小时格式DS1302 与单片机之间能简洁地采纳同步串行的方式进行通信仅需用到三个口线1 RES 复位 2 I/O数据线 3 SCLK 串行时钟时钟 /RAM 的读 / 写数据以一个字节或多达31 个字节的字符组方式 通信 DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW;1602LCD 液晶屏为显示器; 程序掌握 DS1302时钟芯片实现小时、分钟、秒和年、月、日的计时,并在1602LCD 液晶屏上显示出来;通过按键对12 小时 /24 小时显示模式切换;当时间走到程序设定的时间时,蜂鸣器响起,起到闹铃功能;欢迎下载精品学习资源2设计方框图2.1 电路的总体设计框图输入部分单片机输出部分晶振和复位2.2 整体设计思路欢迎下载精品学习资源熟透硬件,明白引脚功能设计各部分电路完成整体电路图组合电路综合各程序调试程序并进行修改进行仿真用Proteus 画了电路图仿真胜利软硬件结合,完成要2.3 程序设计框图欢迎下载精品学习资源初始化显示如无键按下按下 1 键按下 3 键判定按键调时调闹钟调定时显示所调时间显示闹铃时间显示定时时间调整时限到或有其他输入3 硬件电路设计3.1 51 单片机最小系统设计欢迎下载精品学习资源单片机最小系统如下图 3-1 所示:以 SCT89C51单片机为核心,选用12MHZ的晶振,由于晶振的频率越高,单片机的运行速度就越快,但考虑到单片机的运行速度快会导致对储备器的要求就会变高,所以12MHZ晶振为正确挑选;外接电容的值虽然没有严格要求,但它的大小会影响振荡器频率的高低、稳固性和起振的快速性,因此选用30PF 的电容作为起振电容;复位电路为按键高电平复位;3.2 电源供电电路设计电源供电电路如下图3-2 所示:我们采纳外接USB端口的方式为单片机供电,LOPW1为电欢迎下载精品学习资源源显示灯,当按键S5 按下,显示灯亮,表示单片机供+5V 电压;3.3 串口通信电路设计串口通信如下图 3-3 所示:图中通过 MAX232进行 TTL电平和232 电平转换,从而单片机和上位机之间通信供应通道;通信电路的目的就是让通信双发的匹配,单片机用的是TTL 电平,上位机的串口用的是232 电平;3.4 时钟芯片电路设计DS1302 时钟芯片是本系统实现高精度计时的关键;利用DS1302 时钟芯片独立于单片机来计时,在提高计时进度的同时也提高了整个系统的抗干扰才能;DS1302 通过 SCLK 、 I/O 、RES欢迎下载精品学习资源端口和单片机 STC89C51 进行通信; SCLK 接到单片机 P1.7 口,在读写操作时给DS1302 供应相应的时钟脉冲;I/O 接到 P3.5 口用来传送全部的数据;RES 接到 P1.6 口上用来掌握单片机与时钟芯片间的数据传送的开头与终止;3.5 LCD 显示电路设计1602LCD 液晶屏显示电路如下图3-5 所示:1602LCD 液晶屏为 5V 电压驱动,带背光,可显示2 行,每行16 个字符;液晶 1, 2 端为电源; 15, 16 为背光电源;液晶3 端为液晶对比度调剂端;液晶4 端为向液晶掌握器写数据端;液晶 5 端为读 /写挑选端;液晶 6 端为使能信号,是操作时必需的信号,接单片机的P3.4 口;3.5报警电路设计蜂鸣器闹铃电路如下图3-5 所示:蜂鸣器电路接在单片机的P2.3 引脚上,当给该引脚一个低电平,三极管导通,蜂鸣器发出声音作为闹铃;欢迎下载精品学习资源4 软件设计4.1 系统程序流程图设计试验主程序流程图如下图4-1.1 所示:欢迎下载精品学习资源主程序开头显示/定时判定 /开定时中断调用程序条件中断T0与设定时间 t接$B4.接$B0.进入定时中断程序中断 0中断1秒分时日月对应P0.3/P0.4转换显示调整时间设定定时定时中断程序流程图如下图4-1.2 所示:欢迎下载精品学习资源定时中断重装定经常数T0 100ms整秒调整秒单元整分调整分单元整时调整时单元整日调整日单元整月月判定调整月单元整年调整年单元欢迎下载精品学习资源调时功能流程图如下图4-1.3 所示:欢迎下载精品学习资源中断开头按键扫描开头按SB1欢迎下载精品学习资源调整2路调整3路调整年单调整月单元调整日单元调整时单调整分单按SB1按SB1按SB1按SB1按SB1按SB1进入1年单元按SB3月单元按SB3日单元按SB3时单元按SB3分单元按SB3按SB2按SB2按SB2按SB2按SB2按SB2单元加 1单元加 1单元加 1单元加 1单元加 1欢迎下载精品学习资源调整秒单按SB1 按SB1开关定时欢迎下载精品学习资源中断返回欢迎下载精品学习资源设计小结本系统实现了人机交互功能,有夏时令制以及万年历功能;可对年、月、日、时、分、秒进行设定,闹钟设定,具有整点报时功能,模式切换;本系统采纳 1602LCD 显示信息,比其它电子时钟显示信息更丰富,可同时时间、日期、星期等;秒表功能精确到毫秒;可设置多组闹钟;系统具有断最爱护功能,芯片可以储存断电时的信息并连续工作;通过这次的设计使我熟悉到对单片机的学问知道的太少了,书本上的许多学问不能敏捷运用,特别是不能充分懂得程序的含义,导致编程过于复杂;但也提高了我的动手才能,让我享受到电子时钟设计的欢乐,让我开阔了视野,丰富了体会;知道了如何把理论运用到实际中去,把理论与实际相结合;这次电子时钟的设计给我奠定了一个基础,我会在以后的学习、生活中锤炼自己;参考文献欢迎下载精品学习资源1 王建校 . 51 系列单片机及 C51 程序设计 M. 北京:科学出版社, 20022 康华光主编 .电子技术基础 M ,第 4 版.北京高等训练出版社,19913 李维缋 .液晶显示器件应用技术M. 北京:北京邮电学院出版社,19934 范志新 .液晶显示及其用应J. 国际光电与显示,20015 鲍宏亚等编 MCS-51 系列单片机应用系统设计及有用技术中国宇航出版社20056 杨文龙 .单片机原理及应用 M. 西安电子科技高校出版社20007 赵文博,刘文涛 .单片机语言 C51 程序设计 M. 人民邮电出版社 20068 李朝青编 单片机原理及接口应用技术(第三版)北京航空航天高校出版社2021附录:主要程序清单欢迎下载精品学习资源/* 包含器件配置文件 */ #define uchar unsigned char #define uint unsigned intchar DATA_7SEG10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, ;/*09 的数码管段码 */ uchar hour=0,min=0,sec=0 ;/* 时、分、秒单元清零 */ uchar deda=0;/*5mS 计数单元清零 */ uchar t_hour=0,t_min=0 ;/* 闹时时、分单元清零 */ bit d_05s=0 ;/*0.5 秒标志 */bit o_f=0 ;/* 闹时启 /停标志 */ uchar set=0;/* 模式设定标志 */ uchar m=0 ;uchar flag=0 ;/*RAM掉电标志 */ void delayuint k ;/* 延时子函数 */ void conv ;/* 走时单元转换 */ void p_out ;/* 判别闹时到否子函数 */void dirve ;/* 走时时间输出驱动子函数*/ void t_dirve ;/* 闹时时间输出驱动子函数*/* 闹时启 /停子函数 */ void time1_ofuchar m ;ifP3_7=0delay1 ;ifP3_7=0o_f=1 ;form=0 ;m<30; m+t_dirve ;P1=DATA_7SEGt_min/10;P3=0xfd ;delay1 ;ifP3_1=0ifo_f=1P1_7=0;else P1_7=1 ;delay1 ;欢迎下载精品学习资源ifP3_5=0delay1 ;ifP3_5=0o_f=0 ;form=0 ;m<30; m+t_dirve ;P1=DATA_7SEGt_min/10;P3=0xfd ;delay1 ;ifP3_1=0ifo_f=1P1_7=0; else P1_7=1; delay1 ;/* 走时函数 */ void timeconv ;/* 走时单元转换 */ dirve ;/* 走时时间输出驱动子函数*/p_out ;/* 判别闹时到否子函数 */* 定时器 T0 5mS 初始化 */ void init_timerTMOD=0x01 ;TH0=-4800/256 ;TL0=-4800%256 ;IE=0x82 ;TR0=1 ;/* 扫描按键子函数 */ void scan_keydelay1 ;ifP3_4=0set+ ;ifset>=4set=0 ;ifset=1flag=0x55 ;F0:ifP3_4=0goto F0 ;/* 按键未释放 ,在此等候 */* 延时子函数 */ void delayuint kuint i,j ;欢迎下载精品学习资源fori=0 ;i< DIV> forj=0;j<121 ; j+ ;/*5mS 定时中断服务子函数 */ void zdvoid interrupt 1TH0=-4800/256 ;TL0=-4800%256 ;deda+;/* 调整走时时间 */ void time_adjuchar m ;ifP3_5=0delay1 ;ifP3_5=0hour+ ;ifhour=24hour=0 ;form=0 ;m<30; m+dirve ;ifP3_2=0P1_7=0 ;else P1_7=1;delay1 ;ifP3_7=0delay1 ;ifP3_7=0min+ ;ifmin=60min=0;form=0 ;m<30; m+dirve ;ifP3_2=0P1_7=0 ;else P1_7=1;delay1 ;/* 调整闹时时间 */ void time1_adjuchar m ;ifP3_5=0delay1 ;ifP3_5=0t_hour+ ;ift_hour=24t_hour=0 ;form=0 ;m<30; m+t_dirve ;欢迎下载精品学习资源ifP3_7=0delay1 ;ifP3_7=0t_min+ ;ift_min=60t_min=0;form=0 ;m<30; m+t_dirve ;/* 时、分、秒单元及走时单元转换*/ void convifdeda<=100d_05s=0 ;else d_05s=1;ifdeda>=200sec+ ;deda=0; ifsec=60min+;sec=0; ifmin=60hour+;min=0 ; ifhour=24hour=0;/* 走时时间输出驱动子函数*/ void dirveP1=DATA_7SEGhour/10 ;P3=0xf7 ;delay1 ;P1=DATA_7SEGhour%10 ;P3=0xfb ;delay1 ;ifd_05s=1ifP3_2=0P1_7=0;else P1_7=1; delay1 ;P1=DATA_7SEGmin/10 ;P3=0xfd ;delay1 ;ifo_f=1ifP3_1=0P1_7=0; else P1_7=1;delay1 ; P1=DATA_7SEGmin%10;P3=0xfe;delay1 ;/* 闹时时间输出驱动子函数*/ void t_dirveP1=DATA_7SEGt_hour/10 ;P3=0xf7 ;delay1 ;ifP3_3=0P1_7=0 ;else P1_7=1;delay1 ;P1=DATA_7SEGt_hour%10 ;P3=0xfb ;delay1 ;P1=DATA_7SEGt_min/10;P3=0xfd ;delay1 ;P1=DATA_7SEGt_min%10; P3=0xfe; delay1;/* 判别闹时到否子函数 */ void p_outifo_f=1 ift_hour=hourift_min=min欢迎下载精品学习资源ifP3_0=0P1_7=0 ;delay1 ; else P1_7=1;/* 主函数 */ void maininit_timer ;/* 定时器 T0 初始化 */ while1/* 无限循环 */ifP3_4=0scan_key ;/* 有按键 ,调用按键扫描子函数 */ switchset/* 依据 set 键值散转 */case 0:time;break;/* 走时时间程序 */case 1:time1_adj ;break;/* 闹时时间调整 */case 2:time_adj ;break;/* 走时时间调整 */case 3:time1_of ;break;/* 启/停闹时 */ default:break ;/* 其它退出 */ifflag.=0x55/* 判定掉电标志 */form=0 ;m<100 ;m+/* 点亮四个 8 字 400mS*/P1=0x80 ;P3=0xf7 ;delay1 ;P1=0x80 ;P3=0xfb ;delay1 ;P1=0x80 ;P3=0xfd ;delay1 ;P1=0x80 ;P3=0xfe ;delay1 ;P1=0xff ;P3=0xff ; delay400 ; /* 熄灭四个 8 字 400mS*/欢迎下载