单片机课设--定时闹钟

上传人:宝路 文档编号:21234985 上传时间:2017-11-23 格式:DOC 页数:23 大小:624.50KB
返回 下载 相关 举报
单片机课设--定时闹钟_第1页
第1页 / 共23页
单片机课设--定时闹钟_第2页
第2页 / 共23页
单片机课设--定时闹钟_第3页
第3页 / 共23页
单片机课设--定时闹钟_第4页
第4页 / 共23页
单片机课设--定时闹钟_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《单片机课设--定时闹钟》由会员分享,可在线阅读,更多相关《单片机课设--定时闹钟(23页珍藏版)》请在金锄头文库上搜索。

1、专业 姓名 学号 指导老师 完成时间 单片机课程设计报告定时闹钟目 录摘要 .1关键字 1正文一、系统设计 .21.1 设计目标 .21.2 硬件设计 .21.3 软件设计 .41.4 三个模式间状态图 .51.5 键盘控制程序走向流程图 .61.6 串口通信图 8二、 实验结果与讨论 .9三、 结论 .9参考文献附录 .111、程序源代码 .112、实物图 .200摘要本设计采用 ATMEL AT89C52MCU 作为处理器核心,用数码管作为数据显示工具,蜂鸣器实现响铃功能,独立式键盘 K20-K27 控制时钟,串口用于设置时钟和闹钟时间来制作一个定时闹钟。秒数走位由 MCU 内部 11.0

2、592MHz 的晶振提供精确定时实现,并循环扫描,在数码管上显示。本设计的关键是键盘的动态扫描和按键消抖,难点是串口数据的传送和处理。本设计运用 C51 编程,由于 C 语言具有语法简单、代码简洁且执行效率高等优点,使得 C 语言广泛运用于各种程序设计的代码编辑工具中。运用 C 语言编程,增强了程序可读性;使得开发人员能够将精力用在如何设计程序上来,提高了开发效率。 关键字: 单片机 动态扫描 按键消抖 C51 编程 1正文1、系统设计1.1 设计目标利用动态数码管作为显示器,K20-K27 作为输入按键,蜂鸣器作为声音输出制作一个定时闹钟。要求:1、正确显示时分。2、可以利用按钮调整时间和设

3、定闹钟时间。3、当时间到达设定的闹钟时间时,蜂鸣器发出嘀、嘀、嘀的报警声。提示:利用定时器作为时间的基准。提高:通过串口在 PC 上设定时间和闹钟1.2 硬件设计本设计中涉及到的硬件模块有 C52、独立键盘、数码管、PC(含 keil 软件、烧写工具、串口调试工具等)1.2.1 C52核心处理器。对传送的各个指令和数据进行处理。供其他模块用到的主要引脚有:P0:送码值;P2:送位选信号,连接键盘;TXD、RXD:串口通信;P3.7:蜂鸣器1.2.2 独立键盘 K20-K27键盘分为独立键盘和矩阵式键盘。扫描方法有逐行扫描法和行列翻转法。在本设计中用到的键盘是独立式键盘 K20-K27,分别连接

4、到 MCU C52 的 P2 口,采用逐行扫描法,又由于只有一行,故只需扫描一次即可。在键盘按键时,需要考虑到键盘消抖问题。键盘消抖分为硬件消抖和软件消抖。在本设计中,直接采用软件延时 delay2(),达到消抖功能,代码不长,又节省硬件资源。独立键盘 K20-K27 连接到 C52 管脚 P2 和数码管。各键功能:K20:编辑时间,以递增方式控制时针数值,包括时钟和闹钟K21:编辑时间,以递增方式控制分针数值,包括时钟和闹钟K22:时钟模式切换到闹钟模式2K23:退出闹钟模式,并保存闹钟时间,开启闹钟K24:时钟模式和秒数显示模式切换K25:未用到,供功能扩充使用K26:开闹钟K27:关闹钟

5、1.2.3 数码管数码管用于显示当前时间,闹钟时间和秒数。数码管显示分为静态显示和动态显示。静态显示时,各数码管在显示过程中持续得到送显信号,与各数码管接口的 I/O 口线是专用的。静态显示需借助C52 串口完成。动态显示时,各数码管在显示过程中轮流得到送显信号,与各数码管接口的 I/O 口线是共用的。在动态显示过程中,数码管常亮是通过循环扫描送显信号实现。本设计中用到的数码管为共阴极接法,阴极接位选信号,即 C52 P2 口,阳极接 P0 口,接受码值。时钟和闹钟模式下,显示时针数值和分针数值。秒数显示模式下,只有两个数码管亮,显示当前时间秒值。1.2.4 PC在 PC 端除了编辑软件 Ke

6、il 和烧写工具外,另一个很重要的工具就是串口调试工具。串口工具通过串口线与 C52 通信。PC 端到 C52 传送数据,控制写当前时间和设置闹钟。C52 到 PC 端传送数据,提示 PC 送到 C52 的数据有误,并在串口界面上显示字符串“error! ”,供以提示。在 PC 端的串口工具选项设置与代码中串口设计参数匹配。波特率为 9600,数据位 8 位,停止位 1 位。采用十六进制 Hex 发送。根据上述硬件设计,有如下硬件间系统框图 1。31.3 软件设计1.3.1 时钟时钟设计有两个方案,一:利用程序计数延时定时;二:利用定时器定时。考虑到,程序定时不准确,误差大,而定时器 c52

7、内部晶振提供的时钟,能够精确定时,所以,本设计采用定时器给各模块提供准确时钟。对于时钟,主要用在走秒,即定时器定时时间为 1s,考虑到,设计中需要用到串口进行数据传送,而且对用 C52,1s 属于长定时,所以定时器采用定时器 timer0。timer0 工作在方式 1,定时设置为 50ms,即初始值为 TH0=0x4c,TL0=0x01,再通过一个标志位 flag 来控制次数,初始值为 20,则定时时间刚好为 1s。1.3.2 时间显示模式从设计要求看,本设计至少要涉及到两个模式:(1)时钟模式;(2)闹钟模式。时钟模式下,数码管实时显示当前时间,闹钟模式下,显示设置的闹钟时间,并且闹钟模式下

8、,数码管显示的值闪烁,以区别于时钟模式,这样更易于区分这两种模式。这两个模式通过 K22 和 K23 来切换,K22 从时钟模式进入闹钟模式,K23 退出闹钟模式,并保存当前设置的闹钟时间,并置位闹钟状态位 flag1=0(flag1=0,开闹钟;flag1=1,关闹钟) ,此外,时钟、闹钟模式下均为可编辑状态,K20、K21 分别控制时针数值和分针数值。为了更接近现实P2RXDTXDP3.7P0C52串口工具数码管键盘蜂鸣器图 1 系统框图4的时钟,本设计提供第三种模式-秒数显示模式。这个模式下,4 个数码管只有两个亮,用来显示秒数值,通过键 K24 切换到此模式,和退出此模式,对于秒数,其

9、控制权在定时器 timer0,不提供编辑功能。1.3.3 振铃此功能的实现主要依靠实验箱上的蜂鸣器,当当前时间到达闹钟时间时,RD=0,开始振铃,蜂鸣器响。本设计中,在振铃状态,提供关闹铃功能,通过K27 关闹钟,置闹钟状态位 flag1=1,关闹钟;若是需要打开闹钟,则可按键K26,置 flag1=0。1.3.4 串口此功能用于,在 PC 上通过串口工具,传送数据到 C52,进而控制数码管值,即设置时间和闹钟。在实现串口功能,搭配用了定时器 timer2,timer2 工作于方式 2,即 8 位自动重装。timer2 作为波特率发生器,给串口提供数据传送速率。本设计中,波特率为 9600,故

10、 timer2 初始值为 TH1=0xfd,TL1=0xfd。 在本设计中,在时钟模式和闹钟模式下,串口数据逐位传送,分别传给时针数值和分针数值。更具人性化的是,本设计提供错误提。当传送时针数值时,数据大于 23,或传送分针数值时,数据大于 59 时,C52 通过串口向 PC 传送错误提示“error! ” ,提示数据传送错误。1.3.5 键盘扫描本设计中键盘采用独立键盘 K20-K27。读取键盘值通过:P2=0xff;key_pressed=P2;key_pressed 则为读取到的键盘值,再匹配从而知道按了哪个键。在键盘扫描设计中,一个关键技术是键盘消抖。这里通过延时程序 delay2()

11、延时一段时间,再读取键盘值,判断是键盘抖动还是正常按下的值。1.4 三个模式间状态图51.5 键盘控制程序走向流程图K24K22秒显示状态闹钟模式时钟模式程序烧入RST复位K22K24图 2 三个模式间转换状态图6K23?K20?K21?otherValue?count_h=count_h+1count_m=count_m+1main()init()1 clockModelvalue1=getKeyPressed()value2=getKeyPressed()Delay()value1=value2K26?Flag1=0K22?Delay()alarmClockModelvalue1=getK

12、eyPressed()value2=getKeyPressed()value1=value2K24?Delay()secondModelvalue1=getKeyPressed()value2=getKeyPressed()value1=value2 K24? YNK25? K21?count_m=count_m+1K20? K23?count_h=count_h+1K27?Flag1=1图 3 键盘控制程序走向流程图7图 3 中为体现的功能及操作有以下几点:1.5.1 计数模块 count()计数功能依靠定时器 timer0 的中断,定时 1s,当前时间走 1 秒。1.5.2 振铃模块 mu

13、sic()该功能由蜂鸣器完成。置 RD=0 时,蜂鸣器响。此外蜂鸣器响有一个前提条件:振铃处于开状态,即标志 flag1=0。1.5.3 显示模块 display()该功能显示当前时间或闹钟时间或秒数。控制条件有:标志 CS:CS=0:显示当前时间时、分;CS=1:显示当前时间秒;CS=2:闹钟状态;标志 flag2:控制闹钟状态下闪烁显示。1.6 串口通信图1.5.1 串口向 MCU 送数据送时针值时,数值大小小于 24,送分针数值,数值小于 60。1.5.2MCU 向串口送错误提示信息送错误提示信息送时针、分针数值串口工具 MCU显示数码管图 4 串口通信图8串口向 MCU 送数据不满足上述条件时,送“error! ”提示信息。1.5.3 数据显示若串口传送的数据满足上述条件,则在数码管上显示,否则保持不变。2 实验结果与讨论2.1 程序烧写通过烧写程序将源码烧到单片机中。数码管初始显示为 00.00,与程序设置 count_m,count_h 吻合。2.2 程序调试2.2.1 按键 K20 和 K21,时、分值分别增加,一直按着,则时间持续变化。但不是很稳定,有待改进。2.2.2 按键 K22,数码管进入闹钟编辑状态,并且显示数值交替闪烁

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号