《2022年基于STC89C52的电子时钟设计.docx》由会员分享,可在线阅读,更多相关《2022年基于STC89C52的电子时钟设计.docx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源目录1. 前言 12. 整体设计方案13. 硬件设计方案23.1 复位电路23.2 晶振电路33.3 LED 显示电路33.4 按键输入电路43.5 蜂鸣器电路44. 软件设计方案54.1 软件设计方法54.2 系统软件设计思想64.3 系统主程序64.4 中断子程序74.4.1 定时器 T0 地中断程序设计74.4.2 定时器 T1 地中断程序设计74.5 按键扫描子程序94.6 调时、分、秒子程序94.7 调剂闹钟子程序105. 调试与功能说明115.1 硬盘调试115.2 系统性能测试与功能说明125.3 系统时钟误差分析125.4 软件调试问题及解决126. 设计总结12参
2、考文献13附录 1 :多功能电子时钟原理图13附录 2 : C 语言源程序 14欢迎下载精品学习资源1. 前言20 世纪末,电子技术获得了飞速地进展,在其推动下,现代电子产品几乎渗透了社会地各个领域,有力地推动了社会生产力地进展和社会信息化程度地提高,同时也使现代电子产品性能进一步提高,产品更新换代地节奏也越来越快. 时间对人们来说总是那么珍贵,工作地劳碌性和纷杂性简洁使人遗忘当前地时间.遗忘了要做地事情,当事情不是很重要地时候,这种遗忘无伤大雅.但是,一旦重要事情,一时地耽搁可能酿成大祸.目前,单片机正朝着高性能和多品种方向进展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、
3、低价格和外围电路内装化等几个方面进展. 下面是单片机地主要进展趋势.单片机应用地重要意义仍在于,它从根本上转变了传统地掌握系统设计思想和设计方法.从前必需由模拟电路或数字电路实现地大部分功能,现在已能用单片机通过软件方法来实现了.这种软件代替硬件地掌握技术也称为微掌握技术,是传统掌握技术地一次革命.单片机模块中最常见地是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时地装置, 与机械式时钟相比具有更高地精确性和直观性,且无机械装置,具有更更长地使用寿命,因此得到了广泛地使用 .数字钟是采纳数字电路实现对 .时,分,秒.数字显示地计时装置 ,广泛用于个人家庭 ,车站 , 码头办公室等公共场所
4、 ,成为人们日常生活中不行少地必需品 ,由于数字集成电路地进展和石英晶体振荡器地广泛应用 ,使得数字钟地精度 ,远远超过老式钟表 , 钟表地数字化给人们生产生活带来了极大地便利,而且大大地扩展了钟表原先地报时功能.诸如定时自动报警、按时自动打铃、时间程序自动掌握、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气地自动启用等,全部 这些,都是以钟表数字化为基础地.因此,讨论数字钟及扩大其应用,有着特别现实地意义.数字钟已成为人们日常生活中:必不行少地必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们地生活、学习、工作、消遣带来极大地便利.由于数字集成电路技
5、术地进展和采纳了先进地石英技术,使数字钟具有走时精确、性能稳固、携带便利等优点,它仍用于计时、自动报时及自动掌握等各个领域.2. 整体设计方案多功能电子时钟地功能地电路具有实现显示时、分、秒,以(24 小时)计时方式地功能;具有快速校准时、分、秒地其本功能;秒表/时钟功能地转换;具有整点报时地功能;仍可以实现对 时间地调整 .由单片机、复位、时钟电路、晶振、LED 数码管、按键、蜂鸣器组成.欢迎下载精品学习资源欢迎下载精品学习资源复位电路LED 数码管显示电路欢迎下载精品学习资源欢迎下载精品学习资源时钟电路电源电路AT89C51按键输入电路蜂鸣器电路欢迎下载精品学习资源图 1 时钟电路框图3.
6、 硬件设计方案3.1 复位电路单片机复位电路就好比电脑地重启部分,当电脑在使用中显现死机,按下重启按钮电脑内部地程序从头开头执行 .单片机也一样,当单片机系统在运行中,受到环境干扰显现程序跑飞地时候, 按下复位按钮内部地程序自动从头开头执行 .单片机在启动时都需要复位,以使 CPU 及系统各部件处于确定地初始状态,并从初态开头工作.89 系列单片机地复位信号是从RST 引脚输入到芯片内地施密特触发器中地.当系统处于正常工作状态时,且振荡器稳固后,假如RST 引脚上有一个高电平并维护2 个机器周期 24 个振荡周期 以上,就 CPU 就可以响应并将系统复位.单片机系统地复位方式有:手动按钮复位和
7、上电复位 .本课程设计采纳手动按键复位 .手动按钮复位需要人为在复位输入端 RST 上加入高电平(图 3 ) .一般采纳地方法是在 RST 端和正电源 Vcc 之间接一个按钮 .当人为按下按钮时,就 Vcc 地+5V 电平就会直接加到 RST 端.手动按钮复位地电路如下列图 . 由于人地动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满意复位地时间要求 .欢迎下载精品学习资源图 2 复位电路3.2 晶振电路51 单片机最小系统晶振 Y1 也可以采纳 6MHz 或者 11.0592MHz ,在正常工作地情形下可以采纳更高频率地晶振, 51 单片机最小系统晶振地振荡频率直接影响单片机地处理速度
8、,频率越大处理速度越快 .单片机系统里都有晶振,在单片机系统里晶振作用特别大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需地时钟频率,单片机晶振供应地时钟频率越高,那么单片机运行速度就越快,单片接地一切指令地执行都是建立在单片机晶振供应地时钟频率 .单片机晶振地作用是为系统供应基本地时钟信号 .通常一个系统共用一个晶振,便于各部分保持同步 .有些通讯系统地基频和射频使用不同地晶振,而通过电子调整频率地方法保持同步 .图 3 晶振电路3.3 LED 显示电路LED显示器工作方式有两种:静态显示方式和动态显示方式.静态显示地特点是每个数码管地段选必需接一个8 位数据线来保持显示地字形码.当
9、送入一次字形码后,显示字形可始终保持,直 到送入新字形码为止 .这种方法地优点是占用CPU 时间少,显示便于监测和掌握.缺点是硬件电路比较复杂,成本较高 .动态显示地特点是将全部位数码管地段选线并联在一起,由位选线掌握是哪一位数码管有效 .选亮数码管采纳动态扫描显示.所谓动态扫描显示即轮番向各位数码管送出字形码和相应位置选,利用发光管地余辉和人眼视觉暂留作用,使人地感觉似乎各位数码管同时都在显示.动态显示地亮度比静态显示要差一些,所以在挑选限流电阻时应略小于静态显示电路中地.一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们地段选线连在一起,而各自地公共端称为位选线.显示时,都
10、从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮 .欢迎下载精品学习资源图 4 LED 显示电路3.4 按键输入电路独立式按键采纳每个按键单独占有一个I/O 口地结构,这是最简洁地键盘输入设计.当按下和释放按键时,输入到I/O 口端地电平是不一样地,单片机程序依据不同端口地电平变化判定是否有键按下以及是哪一个键被按下.独立式键盘地原理简洁,每个按键地电路是独立地,占用一条数据线.这种接法占用硬盘资源大,适合该课程设计地电子时钟电路.图 5 独立按键3.5 蜂鸣器电路蜂鸣器是一种一体化结构地电子讯响器,采纳直流电压供电,广泛应用于运算机、打印机、复欢迎下载精品学习资源印机、报警器、电
11、子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件.蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型.压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成 .有地压电式蜂鸣器外壳上仍装有发光二极管.多谐振荡器由晶体管或集成电路构成.当接通电源后( 1.515V 直流工作电压) ,多谐振荡器起振 ,输出 1.52.5kHZ地音频信号,阻抗匹配器推动压电 蜂鸣片发声 .压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成.在陶瓷片地两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起. 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成.接通电
12、源后,振荡器产生地音频信号电流通过电磁线圈,使电磁线圈产生磁场.振动膜片在电磁线圈和磁铁地相互作用下,周期性地振动发声.图 6 蜂鸣器电路4. 软件设计方案4.1 软件设计方法系统地软件设计也是工具系统功能地设计.单片机软件地设计主要包括执行软件地设计和监控软件地设计 .单片机地软件设计通常要考虑以下几个方面地问题:依据软件功能要求,将系统软件划分为如干个相对独立地部分,设计出合理地总体结构,使软件开发清楚、简洁和流程合理;培育良好地编程风格,如考虑结构化程序设计、实行模块化、子程序化.既便于调试、链接, 又便于移植和修改;建立正确地数学模型,通过仿真提高系统地性能,并选取合适地参数; 绘制程
13、序流程图;合理安排系统资源;为程序加入注释,提高可读性,实施软件工程; 留意软件地抗干扰设计,提高系统地牢靠性.欢迎下载精品学习资源4.2 系统软件设计思想本系软件设计中,利用单片机定时器设计时间计时处理,采纳单片机内部地T0 定时器溢出中断来实现,工作在T0 方式下,定时 250 微妙,就连续中断4000 次即为一秒,得到了我们所需时间地最小单位该设计用C51 编写程序,由于汇编语言地移植性比较差,而C 语言就比较敏捷 .很多子函数都可以直接移植过去 .在程序中除了有主函数外仍包含很多子函数,如延时函数、按键扫描函数、初始化函数、时间显示函数、设定闹钟显示函数、调时、分、秒函数、功能切换函数
14、、秒表功能函数.4.3 系统主程序在主控程序循环中主要工作为扫描是否有按键,如有按健就做相应地功能处理,同时也扫描显示器显示时间数据,并检查所设置地时间是否到了.时间计时处理程序是等过了1s 后,就更新时间数据,将最新地时、分、秒地数据转换为数字数据并显示在八段数码管上.开头定义计数变量和状态变量蜂鸣器初始化数码管显示初始化按键输入初始化定时器 T0 、T1 初始化调用时钟显示程序调用按键扫描程序开 中 断 开 关 , 允许 T0 、T1 中断启动 T0 、T1等待中断欢迎下载精品学习资源图 7 系统主程序流程图4.4 中断子程序中断子程序地主要功能:供应时间基准和快速按键调时功能.4.4.1
15、 定时器 T0 地中断程序设计定时器 T0 中断供应时间基准.当 T0 连续中断 4000 次时,即为一秒,此时秒加一;当秒值为60时,分钟加一,同时秒清零;当分钟值为60 时,小时加一,同时分钟值清零;当小时为24 时,小时清零 .开头计数变量加 1N计数到 4000 否.Y计数变量清零秒加 1N秒 =60 否.Y分加 1秒清零N分 =60 否.Y小时加 1 且分清零N小时=24 否.Y小时清零返回图 8 T0 中断程序流程图4.4.2 定时器 T1 地中断程序设计欢迎下载精品学习资源当 T1 中断 500 次时,检测一次挑选按键S3,假如按键按下,检测时间加减按键,对应按键按下就执行对应地
16、操作,挑选按键可挑选调时、调分、调秒以及让时间加减按键失效这四种功能,这样可以达到快速校准时间地作用.开头YNflag = 1 否.计数变量 1 加 1计数变量 2 加 1欢迎下载精品学习资源N计 数 到 500 YN计 数 到 400 Y欢迎下载精品学习资源计数变量 1 清零N按键 S3 按下否 .Y延时去抖动N按键 S3 按下否 .Y状态变量 m 加 1秒表低位加 1,计数变量 2 清零N低位 =9999 否.Y秒表高位加 1低位清零N高位 =9999 否.欢迎下载精品学习资源Y秒表高位清零m=1m=2m=3m=4调秒调分调时变量程序程序程序清零中断返回图 9 T1 中断程序流程图欢迎下载
17、精品学习资源4.5 按键扫描子程序按键扫描子程序是程序计中相当重要地一部分.按键扫描子程序地功能是:扫描S4 键是否按下,如 S4 键按下,就执行相应功能.标志变量 flag 地初值设为 1,当按下 S4 键时,标志变量 flag 值加 1,对应切换至所设置地功能.详细切换任务: flag 值为 1 时可以显示时钟并对时间进行校准,当flag 值为 2 时,切换至秒表功能;当flag 值为 3 时,切换至闹钟设置功能;当flag 值为 4 时, flag值返回 1,回到时钟显示并可以调时.开头NS4 键是否按Y延时去抖动NS4 键是否按Y状态变量 flag 加 1返回图 10 按键扫描程序流程
18、图4.6 调时、分、秒子程序当挑选按键状态挑选到调秒时,相应地按下S2 即对秒进行加 1 运算,当秒到加到60 时,秒清零;按下 S1 即对秒进行减 1 运算,当减到零时,秒等于59.挑选按键切换时,对应地键可以调分和 小时 .调分和调时子程序和调秒子程序类似.欢迎下载精品学习资源开头NNS2 按键按下否 .S1 按键按下否 .YY延时去抖动延时去抖动NS2 按键按下否 .S1 按键按下否.NYY秒加 1秒减 1NN秒 =60.秒 0 时表示电子钟秒单元数值刷新滞后,即走时误差为“慢”;反之, S0 表示秒单元数值地刷新超前,即走时误差为 “快”.本次设计地单片机电子钟系统中,其误差主要来源包
19、括晶体频率误差,定时器溢出误差,推迟误差 .晶体频率产生震荡,简洁产生走时误差;定时器溢出地时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;推迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差.5.4 软件调试问题及解决软件程序地调试一般可以将重点放在分模块调试上,统调是最终一环.软件调试可以实行离线调试和在线调试两种方式.本次课题, Keil 软件来调试程序,通过各个模块程序地单步或跟踪调试, 使程序逐步趋于正确,最终统调程序.6. 设计总结我在这一次单片机最小系统地设计过程中,很是受益匪浅.通过对自己在高校二年时间里所学 地学问地回忆,并充分发挥对所学学问地懂得和对课程设
20、计地摸索及书面表达才能.这为自己今后进一步深化学习,积存了肯定珍贵地体会.撰写报告地过程也是专业学问地学习过程,它使我运用已有地专业基础学问,对其进行设计,分析和解决一个理论问题或实际问题,把学问转化为才能地实际训练 .培育了我运用所学学问解决实际问题地才能.通过这次课程设计我发觉,只有理论水平提高了;才能够将课本学问与实践相整合,理论学问欢迎下载精品学习资源服务于教案实践,以增强自己地动手才能.这个试验特别有意义我获得很深刻地体会 .通过这次课程设计,我们知道了理论和实际地距离,也知道了理论和实际想结合地重要性,也从中得知了很多书本上无法得知地学问.我们地学习不但要立足于书本,以解决理论和实
21、际教案中地实际问题为目地,仍要以实践相结 合,理论问题即实践课题,解决问题即课程讨论,同学自己就是一个专家,通过自己地手来解决问 题比用脑子解决问题更加深刻.学习就应当实行理论与实践结合地方式,理论地问题,也就是实践性地课题 .这种做法既有助于完成理论学问地巩固,又有助于带动实践,解决实际问题,加强我们地动手才能和解决问题地才能.参考文献1 李群芳,肖看,张士军单片机微型运算机与技术接口电子工业出版社,1997.12.125-1332 彭为,黄科,雷道仲单片机典型系统设计实例讲解电子工业出版社,2002.125-1333 何立民 MCS-51 单片机应用系统设计北京航空航天高校出版社,1995
22、.99-1124 杨刚,周群电子系统设计与实践电子工业出版社,1998.79-1025 张毅刚单片机原理及应用高等训练出版社,1999.125-1436 张毅刚 MCS-51 单片机应用设计哈尔滨工业高校出版社,1994.125-1337 张富 C 及 C+ 程序设计(第 3 版)人民邮电出版社, 1998.79-1128 李华 MCS-51 系列单片机使用接口技术北京航空航天高校出版社,2005.7.115-1239 李广弟单片机基础北京航空航天高校出版社,1998.95-123附录 1:多功能电子时钟原理图欢迎下载精品学习资源附录 2: C 语言源程序#include 欢迎下载精品学习资源
23、#define uchar unsigned char #define uint unsigned int #define key P3uchar code wei=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;uchar code duan=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf;uchar num1 = 0,0,10,0,0,10,0,0;uchar num2 = 0,0,0,0,0,0,0,0;uchar sec=55,min=59,hou=23 ;uchar sec_1 = 0,mi
24、n_1 = 1,hou_1 = 0 ;uint sec1 = 0,sec2 = 0;int count1 = 0,count2=0,cnt = 0,cnt2 = 0 ;uchar flag = 1,flag2 = 0 ;uchar m;void delayuint xuint a,b ;fora=0 ;ax ;a+ forb=0 ;b= 60 sec = 0 ; ifkey = 0xfeifsec = 0sec = 60 ;sec- ;ifm = 2 ifkey = 0xfd min+ ;ifmin = 60min = 0 ;hou+ ;ifhou=24 hou = 0 ;ifkey = 0x
25、fe ifmin = 0 min = 60 ;min- ;ifm = 3 ifkey = 0xfd欢迎下载精品学习资源hou+ ;ifhou = 24 hou = 0 ; ifkey = 0xfe ifhou = 0hou = 24 ;hou- ; ifm = 4 m=0 ;void key_scan2uchar x ;ifP3_3 = 0delay10 ;ifP3_3 = 0flag+ ;TR1 = 0 ;sec1=0;sec2=0; whileP3_3 = 0forx = 0 ;x = 60sec_1 = 0 ;whilekey = 0xfd;ifkey = 0xfeifsec_1 = 0
26、 sec_1 = 60 ;sec_1- ; whilekey = 0xfe;ifflag2 = 2 ifkey = 0xfd min_1+ ;ifmin_1 = 60min_1 = 0 ;hou_1+ ;ifhou_1=24 hou_1 = 0 ;whilekey = 0xfd;ifkey = 0xfe ifmin_1 = 0 min_1 = 60 ;min_1- ; whilekey = 0xfe; ifflag2 = 3ifkey = 0xfd hou_1+ ;ifhou_1 = 24 hou_1 = 0 ; whilekey = 0xfd ;ifkey = 0xfe ifhou_1 =
27、0 hou_1 = 24 ; hou_1- ;欢迎下载精品学习资源whilekey = 0xfe ; ifflag2 = 4 flag2=0 ;void fmqifsec = sec_1 & min = min_1 & hou = hou_1P1_0 = 0 ;delay5000 ;P1_0 = 1; ifmin = 0&sec = 0P1_0 = 0 ;delay1000 ;P1_0 = 1 ; void mainuchar x ;P1_0 = 1;P0 = 0xff ;P2 = 0xff ;P3 = 0xff ;TMOD = 0x22 ;TL0 = 6 ;TH0 = TL0 ;TL1 = 6 ;TH1 = TL1 ;EA = 1 ;ET0 = 1 ;ET1 = 1 ;TR0 = 1 ; TR1 = 1 ;while1forx = 0 ; x = 60sec = 0 ;min+ ;ifmin = 60min = 0 ;hou+ ;ifhou = 24欢迎下载精品学习资源hou = 0 ;void T1way2void interrupt 3cnt+ ;count2+ ;ifcnt = 500key_scan1 ; cnt = 0 ; ifcount2=400sec1+ ;ifsec1=9999sec2+ ;ifsec2=9999sec2=0 ; count2=0 ;欢迎下载