电子闹钟设计.doc

上传人:本田雅阁 文档编号:2043924 上传时间:2019-02-08 格式:DOC 页数:25 大小:409.52KB
返回 下载 相关 举报
电子闹钟设计.doc_第1页
第1页 / 共25页
电子闹钟设计.doc_第2页
第2页 / 共25页
电子闹钟设计.doc_第3页
第3页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《电子闹钟设计.doc》由会员分享,可在线阅读,更多相关《电子闹钟设计.doc(25页珍藏版)》请在三一文库上搜索。

1、I 电子闹钟毕业设计电子闹钟毕业设计 摘要:摘要:本设计是以 89C51 单片机作为控制核心的闹铃系统。 本文大致可以分为三个章节, 第一章节讲了用单片机来制作电子闹钟所带来的优势,还有电子闹钟在电子产品中未来的 趋势以及本次设计所要实现的课题目标。第二章节讲了设计的一些思路和该产品包含的一 些硬件电路组成。第三章节讲了各个软件模块之间的设计以及该产品的程序代码。最后是 一些结论体会部分和附录图。 关键词:关键词:PC 机;单片机 89C51;串行通信;数码显示 II 目目 录录 第一章 绪论1 1.1 引言 1 1.2 闹钟的发展趋势 1 1.3 本次设计所要实现的目标 1 第二章 系统总体

2、设计2 2.1 系统总体设计思路 2 2.2 总体硬件组成框图 2 2.3 AT89C51 的简介.3 2.4 系统功能的确定 4 2.5 时钟电路 5 2.6 复位电路 5 2.7 键盘电路 6 2.8 数码显示电路 7 第三章 系统软件设计8 3.1 数据单元分配 8 3.2 时钟程序设计步骤 8 3.3 计时子程序模块的实现 9 3.4 时钟设定子程序模块的实现 .10 3.5 程序说明 .11 3.6 实现方式 .12 3.7 源程序设计 .12 结论与体会.20 主要参考材料:.21 附录 1:系统原理图 .22 附录 2:PCB 图23 1 第一章第一章 绪论绪论 1.11.1 引

3、言引言 电子闹钟是一种应用非常广泛的日常计时工具,数字显示的日历钟已经越 来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使 用,壁挂式 LED 数码管显示的日历钟逐渐受到人们的欢迎。 单片机电子闹钟是 集电子技术、数字显示技术为一体的高产品,具有按时闹铃,显示清晰直观、 走时准确等优点。 首先介绍设计电子闹钟所涉及的主要硬件和特性,然后说明 软件设计的思路,程序结构及流程,并在测试软件上进行调试和修改,以完成 电子闹钟的基本要求,即可以随意设定起始时间,有秒显示功能,有 12/24 世 制选择,可以设定闹钟,停电时由电池供电等功能。 现代社会电子闹钟发挥着 很大的作用,也是

4、它存在和发展的一个重要方面,尤其是在代表集成电路技术 的发展方面,通过不断提高电子闹钟的计时的精确度可以极大促进定时技术芯 片的发展。同时电子闹钟与其他嵌入式电子产品一样是微处理器的应用,通过 电子闹钟的设计可以很好的掌握电子设计技术。 1.21.2 闹钟的发展趋势闹钟的发展趋势 随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设 备都有自己的控制器,使用起来很不方便。这些具有人们所需要的智能化特性 的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。基 于单片机的电子闹钟就是新一代的产品,能够实现远程控制等功能。它功能强 大、体积小、质量轻、灵活好用。 1.31.

5、3 本次设计所要实现的目标本次设计所要实现的目标 设计一个电子闹钟 1)能随意设定走时起始时间 2)螚指示秒节奏,即秒指示 3)能通过 PC 机实现远程控制 4)时间预设,定时关机的功能 2 第二章第二章 系统总体设计系统总体设计 2.12.1 系统总体设计思路系统总体设计思路 先进行系统的整体规划确定整个系统的功能,然后按照每个功能的具体要 求,进行各个模块的实物设计并逐个调试,待全部通过后,进行整个系统的联 调,最终实现一个完整的系统,并制成印刷线路板。 整个系统的设计步骤如下: 在单片机最小系统的基础上,完成按键电路和复位电路的设计。 完成显示电 路、数字按键、复位电路。 具有 3 个功

6、能按键: 1)在复位后的待机状态下,用于启动设定时间参数(对时或定闹) ; 2)在设定时间参数状态而且不是设定最低位(即分个位)的状态下,用于 结束当前位的设定,当前设定位下移; 3)在设定最低位(分个位)的状态下,用于结束本次时间设定。 2)键, 用于对当前设定位(编辑位)进行加 1 操作,根据正在编辑的当前位的含义 (时十位、时个位、分十位、分个位)自动进行数据的上限和下限判断。例如, 对 12 小时制,小时的十位只能是 0、1,如果当前值为 0,则按1 键后为 1, 再按1 键则又回复到 0。 把以上各个模块联结起来,整体调试功能。 2.22.2 总体硬件组成框图总体硬件组成框图 整个系

7、统的原理框图如图 2.1 所示 图 2.1 系统原理框图 3 2.32.3 AT89C51AT89C51 的简介的简介 2.3.12.3.1 AT89C51AT89C51 简介简介 AT89C51 是一个低功耗,高性能 CMOS 8 位单片机,片内含 4k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器, 器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51 指令 系统及 80C51 引脚结构,芯片内集成了通用 8 位中央处理器和 ISP Flash 存储 单元,功能强大的微型计算机的 AT

8、89C51 可为许多嵌入式控制应用系统提供高 性价比的解决方案。 2.3.22.3.2 引脚介绍引脚介绍 AT89C51 具有如下特点:40 个引脚,4k Bytes Flash 片内程序存储器, 128 bytes 的随机存取数据存储器(RAM) ,32 个外部双向输入/输出口,5 个中 断优先级 2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信 口,看门狗(WDT)电路,片内时钟振荡器。 图 2.2 为 AT89C51 引脚图 图 2.2 AT89C51 引脚图 此外,AT89C51 设计和配置了振荡频率可为 0Hz 并可通过软件设置省电模 式。空闲模式下,CPU

9、 暂停工作,而 RAM 定时计数器,串行口,外中断系统可 继续工作,掉电模式冻结振荡器而保存 RAM 的数据,停止芯片其它功能直至外 中断激活或硬件复位。同时该芯片还具有 PDIP、TQFP 和 PLCC 等三种封装形式, 以适应不同产品的需求。 4 主要功能特性: 兼容 MCS-51 指令系统 32 个双向 I/O 口 2 个 16 位可编程定时/计数器 全双工 UART 串行中断口线 2 个外部中断源 中断唤醒省电模式 看门狗(WDT)电路 灵活的 ISP 字节和分页编程 4k 可反复擦写(1000 次)ISP Flash ROM 4.5-5.5V 工作电压 时钟频率 0-33MHz 12

10、8x8bit 内部 RAM 低功耗空闲和省电模式 3 级加密位 软件设置空闲和省电功能 双数据寄存器指针 2.42.4 系统功能的确定系统功能的确定 2.4.12.4.1 基本功能基本功能 系统具有时间、日期、三路定时功能,并可以对时间、日期、定时进行设 定,有定时提示音。要求计时精度尽量提高。显示格式为: 时间:“时” (第 1、2 位) 、 “分” (第 3、4 位) 、 “秒” (第 5、6 位) ; 日期:“年” (第 1、2 位,如 2007 年显示为 07) 、 “月” (第 3、4 位) 、 “日” (第 5、6 位) ; 定时:“时” (第 1、2 位) 、 “分” (第 3、

11、4 位) 、 “状态标志” (第 5、6 位) 。 键盘及数码管排列如图 2.3 所示。 2.4.22.4.2 扩展功能扩展功能 该系统可以增加温度传感器,实现温度测量,以实时显示温度,用 1、2 位 5 数码管显示;还可以增加湿度传感器,实现湿度测量,以实时显示湿度,用 5、6 位数码管显示。 多路定时器功能也可扩展为对多种家电等电气产品的自动控制,比如电饭 煲等;也可利用温度对某些电气产品进行自动控制,比如空调等;还可利用湿 度传感器对湿度进行调节。如图 2.3 所示。 图 2.3 系统功能图 2.52.5 时钟电路时钟电路 实验板的时钟振荡源电路如图 2.4 所示。其中 JT 为 11.

12、0592MHz 的晶振, 改变两电容 CB 的值即可对此晶振频率进行调节。该电路提供单片机工作所需的 振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道晶振频率,以 对波特率进行计算。 图 2.4 时钟电路 2.62.6 复位电路复位电路 如图 2.5 所示为实验板的复位电路,当 RESET 信号为低电平时,实验板为 6 工作状态,当 RESET 信号为高电平时,实验板为复位或下载程序状态。由于 AT89S52 具有 ISP 的功能,即可以通过并口线直接将程序下载到单片机内,因 此, AT89S52 具有两种状态,下载程序状态和运行状态。该复位电路能实现上 电自动复位,也能手动复位,一般

13、复位时 RESET 应保持 20 毫秒以上高电平,此 复位时间由接地电容控制。 图 2.5 复位电路 2.72.7 键盘电路键盘电路 如图 2.6 所示为阵列按键电路,各设置及转换信号由此电路输入,实验板 提供了 16 个按键,由 P1 口经 SN74F244(驱动芯片)输出扩展成 44 的阵列 按键,P1.0P1.3 为行线,P1.4P1.7 为列线。SN74F244 有一片选信号线,G 当此口线为低电平时,A1A4 与 Y1Y4 接通,反之,A1A4 与 Y1Y4 断开。 此键盘用扫描工作方式,若有键按下,则相应位端口被拉低为低电平,由 于本系统只用了 4 个按键,所以只需对 4 个按键进

14、行扫描。扫描时,先置 P3.3 口为高电平,向 P1 口送 0EFH(MOV P1,#0EFH) ,再置 P3.3 口为低电平,读 P1 口(MOV A,P1) ,最后判断 P1 口低 4 位哪位是低电平,若某位为低电平, 则相应按键被按下,如 P1.0 为低电平(ACC.0=0) ,则 K1 键被按下。 7 图 2.6 阵列按键 2.82.8 数码显示电路数码显示电路 如图 2.7 所示为数码显示电路,实验板使用了 6 个共阳数码管,P0 口为段 码信号线,B1B6 为位控线,是 P1 口经 SN74F573(反向驱动芯片,即输入为 高电平,则输出为低电平,反之则输出为高电平,该芯片也有一片

15、选信号 C, 当此信号为高电平时有效)反向得到,再由 B1B6 控制晶体管 Q1Q6,以达 到控制每位数码管的目的。 系统采用动态显示,先向 P0 口送第一位数码管需要显示的段码值,再给 P1 口送 0FEH,延时 1 毫秒使第一位数码管显示,又向 P0 口送第二位数码管需 要显示的段码值,P1 口送 0FDH,延时 1 毫秒,使第二位数码管显示。依次递推, 直到最后一位数码管,然后再循环。改变延时时长可以调节数码管显示的亮度, 由于单片机执行速度很快(微秒级) ,所以看上去数码管一直亮着。 图 2.7 数码显示电路 8 第三章第三章 系统软件设计系统软件设计 3.13.1 数据单元分配数据单

16、元分配 数据存储单元分配如表 3.1 所示: 表 3.1 数据存储单元分配 项目秒分时日月年 存储单 元 30H31H32H33H34H35H 项目定时 1: 开关 定时 1: 分 定时 1: 时 定时 2:开 关 定时 2: 分 定时 2: 时 存储单 元 36H37H38H39H3AH3BH 项目定时 3: 开关 定时 3: 分 定时 3: 时 存显示首地址堆栈起始单元 存储单 元 3CH3DH3EH3FH50H 标志位单元(20H)分配如表 3.2 所示: 表 3.2 标志位单元(20H)分配 位单元项目位单元项目 01H08H 定时 1 显示标志位 02H 1、2 位数码管闪烁标志位

17、09H 定时 2 显示标志位 03H0AH 定时 3 显示标志位 04H 3、4 位数码管闪烁标志位 0BH 定时 1 响铃标志位 05H0CH 定时 2 响铃标志位 06H 5、6 位数码管显示标志位 0DH 定时 3 响铃标志位 07H 日期显示标志位 0EH 总响铃标志位 3.23.2 时钟程序设计步骤时钟程序设计步骤 系统采用模块化结构,主程序只需调用各个子程序模块即可实现相应功能。 其模块结构图如图 3.1 所示。 9 图 3.1 模块结构图 3.33.3 计时子程序模块的实现计时子程序模块的实现 当 T0 中断时,执行本程序,因 T0 设为 50 毫秒中断,故中断 20 次为 1

18、秒。 中断程序分别有 20 次计数(1 秒) ,60 次计数(1 分) ,60 次计数(1 小时) , 24 次计数(1 天) ,28、29、30、31 次计数(1 个月) ,12 次计数(1 年) 。当前 位到设定数值时写 0 或 1,下一位加 1。由于本世纪是 21 世纪,年位前两位是 4 的倍数,故判断闰年时只需对年的后两位进行计算,能被 4 整除为闰年,否 则为平年,年位只进行加 1,大于 99 时又重新开始。计时中断流程图如图 3.2 所示。 10 图 3.2 计时子程序流程图 图 3.3 显示子程序流程图 3.43.4 时钟设定子程序模块的实现时钟设定子程序模块的实现 当设定时间时

19、,断开 T0 中断,秒单元清 0,进入时、分单元设定。设定好 后重装 T0 初值,开 T0 中断。流程图如图 3.4 所示。 11 图 3.4 时钟设定子程序流程图 3.53.5 程序说明程序说明 3.5.13.5.1 定时器初值计算定时器初值计算 因定时器工作于方式 1,需要 50ms 的中断,所以计数初值: =216 - tfosc12=65536 - 5010-311.059210612=19456 表示成十六进制为 =4C00H,故(TH0)=4CH, (TL0)=00H。 3.5.23.5.2 程序初始化程序初始化 程序初始化时,清相应内存单元(20H4FH 共 48 个单元) ,送

20、时间(00 时 00 分 00 秒) 、日期(07 年 10 月 01 日)初值,送定时器 T0、T1 初值,TH0= TH1=4CH,TL0= TL1=00H,特殊寄存器(SP=50H、TMOD=11H)值等。 3.5.33.5.3 误差分析及校正误差分析及校正 当 T0 中断时,需重装定时初值,且要加上从断开 T0 中断到允许 T0 中断共 有 13 个周期,以减小误差,故理论重装定时初值为(TH0)=4CH, (TL0) =13H。但该外接晶振电路的晶振频率可调,可能出现误差,所以实际不是这个 值。 经调试,当定时初值为(TH0)=4CH, (TL0)=06H 时,24 小时约慢 2 秒

21、, 所以每当计时 24 小时之后,给秒单元(30H)送 02H,使秒累加时从 2 加起, 24 小时就少加 2 秒,即可使时间得到校正。 3.5.43.5.4 实现闪动设定实现闪动设定 闪动可选用段码送 00H 实现,也可禁止当前位显示,选通位送 0 实现。本 设计选用后者实现闪动,用定时器 T1 进行控制。 12 3.5.53.5.5 实现连续加实现连续加 1 1 先判断键是否松开,若松开,则只执行一次加 1 程序段,进行单次加 1; 若未松开则连续执行加 1 程序段,实现连续加 1。每执行一次加 1 程序段就调 用显示子程序进行延时,以对调节速度进行控制。本系统以 5Hz 的速度连续加 1

22、,这样能快速对时间、日期、定时进行设定。 3.63.6 实现方式实现方式 该时钟程序的功能模块先后实现的顺序为: 主程序时间模块显示模块键盘模块时间设定及其显示模块日期 及其显示模块日期设定及其显示模块定时及其显示模块定时设定及其显 示模块定时提示音及与显示相冲突的协调模块。 每完成一个模块就与前一个已完成的模块结合起来调试,直至实现相应功 能,再编写下一模块程序。在与主程序衔接时,主程序和各子程序也需作相应 的改动,以便与子程序更好的衔接,特别是显示子程序需作较大改动,以便对 不同内容进行显示。 3.73.7 源程序设计源程序设计 #include #include #define ucha

23、r unsigned char #define uint unsigned int sbit dula=P10; sbit wela=P11; sbit key1=P20; sbit key2=P21; sbit key3=P23; sbit key4=P23; sbit key5=P24; uchar temp,tt,sec,min,hour; 13 uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; void init(); void ke

24、yscan(); void counter(); void delay(uint z); void main() init(); wela=1; P0=0xfe; temp=P0; wela=0; dula=1; P0=0x3f; dula=0; while(1) wela=1; P0=temp; wela=0; if(temp=0xfe)/1111 1110 dula=1; P0=tablesec%10; dula=0; 14 if(temp=0xfd)/1111 1101 dula=1; P0=tablesec/10; dula=0; if(temp=0xfb)/1111 1011 dul

25、a=1; P0=0x40; dula=0; if(temp=0xf7)/1111 0111 dula=1; P0=tablemin%10; dula=0; if(temp=0xef)/1110 1111 dula=1; P0=tablemin/10; dula=0; 15 if(temp=0xdf)/1101 1111 dula=1; P0=0x40; dula=0; if(temp=0xbf)/1011 1111 dula=1; P0=tablehour%10; dula=0; if(temp=0x7f)/0111 1111 dula=1; P0=tablehour/10; dula=0;

26、delay(2); temp=_crol_(temp,1); if(temp=0xff) temp=0xfe; keyscan(); counter(); 16 void delay(uint z) /延时子函数 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void init()/系统初始化 tt=0; wela=0; dula=0; EA=1; ET0=1; TR0=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; void timer0() interrupt 1 /定时器 0

27、中断 TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt+; void counter() /计时子函数 17 if(tt=20) tt=0; sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hour+; if(hour=24) hour=0; void keyscan()/键盘扫描 if(key1=1) delay(5); if(key1=1) 18 TR0=0; while(key1); delay(5); while(key1); if(key2=1) delay(5); if(key2=1)

28、sec+; while(key2); delay(5); while(key2); if(key3=1) delay(5); if(key3=1) min+; while(key3); delay(5); while(key3); if(key4=1) 19 delay(5); if(key4=1) hour+; while(key4); delay(5); while(key4); if(key5=1) delay(5); if(key5=1) TR0=1; while(key5); delay(5); while(key5); 20 结论与体会结论与体会 在此次电子闹钟设计过程中,在学习新

29、知识的同时,把在课程中学到的理 论知识运用到实际作品设计、操作中更进一步地熟悉了单片机芯片的结构及掌 握了其工作原理和具体的使用方法与相关元器件的参数计算方法、使用方法, 了解了电路的开发和制作及课程设计报告的编写。加深了对相关理论知识及专 业知识的掌握度,增强了自身的动手能力,锻炼及提高了理解问题、分析问题、 解决问题的能力,更深刻的体会到了理论联系实际的重要性。 最后,我通过此次单片机课程设计不仅仅将我们一学期在单片机课程上的 所学很好的应用到了实际设计中,更是将理论知识应用到了实践中,这才是真 正的学习,不仅仅是读万卷书更要行万里路,讲知识与实践有机的结合。 十分感谢指导老师为我们提供了

30、这次单片机课程设计的机会,他在我们设 计期间给了我们很多帮助。我也通过此次毕业设计,更清晰更实际的接触到了 单片机,以后如果再次利用单片机来做程序,估计已不在像第一次那样陌生了。 再次感谢所有帮助过我并给我鼓励的老师和同学,谢谢你们! 21 主要参考材料:主要参考材料: 1蒋辉平.单片机原理与应用设计.北京:北京航空航天大学出版社,2007 2李鸿等.单片机原理及应用.长沙:湖南大学出版社,2004 3楼然苗,李光飞.单片机课程设计指导.北京:北京航空航天出版社,2007 4Kenneth A.Reek.C 和指针.北京:人民邮电出版社,2008 5 李捷,陈典涛等.一种应用单片机电子闹钟的设计与制作设计 J ,农机化研究, 2005 6 陈明荧.8051 单片机课程设计实训教材.北京:清华大学出版社,2004 7 胡汉才.单片机原理及其接口技术. 北京:清华大学出版社,1995 8 徐淑华,程退安,姚万生.单片机微型机原理及应用. 哈尔滨工业大学出版,1994 9 丁元杰.单片机原理与应用.机械工业出版社出版,2003 10 朱定华.单片机原理及接口技术.电子工业出版社出版,2004 22 附录附录 1 1:系统原理图系统原理图 23 附录附录 2 2:PCBPCB 图图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1