单片机电子时钟的设计 单片机课程设计Word文档格式.docx
《单片机电子时钟的设计 单片机课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机电子时钟的设计 单片机课程设计Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
单片机
第1章绪论
1.1研究背景
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟已成为人们日常生活中:
必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
1.1选题的目的和意义
单片机课程设计是单片机课程后续学习阶段的一个重要的实践学习环节,它既能增强学生对所学课程内容的理解和综合,也能培养学生的综合应用及设计能力,同时,还可以拓宽课程内容和培养创新意识。
数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
1.2本课程设计的主要内容
本设计电子时钟主要功能为:
自动计时功能。
能显示计时时间,显示效果良好。
有校时功能,能对时间进行校准。
扩展功能:
具有整点报时功能,在整点时使用蜂鸣器进行报时。
具有定时闹钟功能,能设定定时闹钟,在时间到时能使蜂鸣器鸣叫。
第2章单片机电子时钟设计方案设计
2.1设计方案
单片机电子时钟方案选择主要涉及两个方面:
计时方案和显示方案。
2.1.1计时方案
单片机电子时钟计时有两种方法:
第一种是通过单片机内部的定时器/计数器,采用软件编程来实现时钟计时,这种实现的时钟一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合;
第二种是采用专用的硬件时钟芯片计时,这种实现的时钟一般称为硬时钟。
专用的时钟芯片功能比较强大,除了自动实现基本计时外,一般还具有日历和闰年补偿等功能,计时准确,软件编程简单,但硬件成本相对较高,通常用在对时钟精度要求较高的场合。
2.2.2显示方案
对于电子时钟而言,显示是另一个重要的环节。
显示通常采用两种方式:
LED数码管显示和LCD液晶显示。
其中LED数码管显示亮度高,显示内容清晢,根据具体的连接方式可分为静态显示和动态显示,在多个数码管时一般采用动态显示,动态显示时须要占用CPU的大量时间来执行动态显示程序,显示效果往往和显示程序的执行相关。
LCD液晶显示一般能显示的信息多,显示效果好,而且液晶显示器一般都带控制器,显示过程由自带的控制器控制,不须要CPU参与,但液晶显示器造价相对较高。
为了便于比较与学习,这里给出两种设计方案,一种是软件计时LED数码管显示的单片机电子时钟,另一种是硬件定时LCD液晶显示的单片机电子时钟。
软件计时LED数码管显示的单片机电子时钟总体设计框图如图2-1所示。
硬件定时LCD液晶显示的单片机电子时钟总体设计框图如图2-2所示。
图2-1软件计时LED显示时钟总体框图
图2-2硬件定时LCD显示时钟总体框图
2.2.3键盘的基本原理
键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合,按下后可向计算机产生一脉冲波。
按键开关的结构和产生的波形如图2-3所示。
(a)键盘开关的结构(b)键盘产生的波形
图2-3键盘开关及波形示意图
当按键开关未按下时,开关处于断开状态,向P1.1输入高电平;
当按键开关按下时,开关处于闭合状态,向P1.1输入低电平。
因此可通过读入P1.1的高低电平状态来判断按键开关是否按下。
(1)抖动的消除
在单片机应用系统中,通常按键开关为机械式开关,由于机械触点的弹性作用,一个按键开关在闭合时往往不会马上稳定地接通,断开时也不会马上断开,因而在闭合和断开的瞬间都会伴随着一串的抖动,如波形如图2-4所示。
按下键位时产生的抖动称为前沿抖动,松开键位时产生的抖动称为后沿抖动。
如果对抖动不作处理,会出现按一次键而输入多次,为确保按一次键只确认一次,必须消除按键抖动。
消除按键抖动通常有硬件消抖和软件消抖两种方法。
图2-4抖动波形示意图
硬件消抖是通过在按键输出电路上添加一定的硬件线路来消除抖动,一般采用R-S触发器或单稳态电路,图2-5是由两个与非门组成的R-S触发器消抖电路。
平时,没有按键时,开关倒向下方,上面的与非门输入高电平,下面的与非门输入低电平,输出端输出高电平。
当按下按键时,开关倒向上方,上面的与非门输入低电平,下面的与非门输入高电平,由于R-S触发器的反馈作用,使输出端迅速的变为低电平,而不会产生抖动波形,而当按键松开时,开头回到下方时也一样,输出端迅速的回到高电平而不会产生抖动波形。
经过图中的R-S触发器消抖后,输出端的信号就变为标准的矩形波。
图2-5硬件消抖电路
软件消抖是利用延时程序消除抖动。
由于抖动时间都比较短,因此可以这样处理:
当检测到有键按下时,执行一段延时程序跳过抖动,再去检测,通过两次检测来识别一次按键,这样就可以消除前沿抖动的影响。
对于后沿抖动,由于在接收一个键位后,一般都要经过一定时间再去检测有无按键,这样就自然跳过后沿抖动时间而消除后沿抖动了。
当然在第二次检测时有可能发现又没有键按下,这是怎么回事呢?
这种情况一般是线路受到外部电路干扰使输入端产生干扰脉冲,这时就认为没有键输入。
在单片机应用系统中,一般都采用软件消抖。
(2)键盘的分类
一般来说,单片机应用系统的键盘可分为两类:
独立式键盘和行列键盘。
独立式键盘就是各按键相互独立,每个按键各接一根I/O接口线,每根I/O接口线上的按键都不会影响其他的I/O接口线。
因此,通过检测各I/O接口线的电平状态就可以很容易地判断出哪个按键被按下了。
独立式键盘如图2-6所示。
独立式键盘的电路配置灵活,软件简单。
但每个按键要占用一根I/O接口线,在按键数量较多时,I/O接口线浪费很大。
故在按键数量不多时,经常采用这种形式。
图2-6独立式键盘结构图
行列键盘往往又叫矩阵键盘。
用两组I/O接口线排列成行、列结构,一组设定为输入,一组设定为输出,键位设置在行、列线的交点上,按键的一端接行线,一端接列线。
例如,图2-7是由4根行线和4根列线组成的4´
4矩阵键盘,行线为输入,列线为输出,可管理4´
4=16个键。
矩阵键盘占用的I/O接口线数目少,如图2-7中4´
4矩阵键盘总共只用了8根I/O接口线,比独立式键盘少了一半的I/O接口线,而且键位越多,情况越明显。
因此,在按键数量较多时,往往采用矩阵式键盘。
矩阵键盘的处理一般注意两个方面:
键位的编码和键位的识别。
(a)二进制组合编码(b)顺序排列编码
图2-7矩阵键盘的结构图
键位的编码矩阵键盘的编码通常有两种:
二进制组合编码和顺序排列编码。
(1)二进制组合编码如图2-7(a)每一根行线有一个编码,每一根列线也有一个编码,图2-7(a)中行线的编码从下到上分别为1、2、4、8,列线的编码从右到左分别为1、2、4、8,每个键位的编码直接用该键位的行线编码和列线编码组合一起得到。
图2-7(a)中4´
4键盘从右到左,从下到上的键位编码分别是:
11H、12H、14H、18H、21H、22H、24H、28H、41H、42H、44H、48H、81H、82H、84H、88H。
这种编码过程简单,但得到的编码复杂,不连续,处理起来不方便。
(2)顺序排列编码如图2-7(b),每一行有一个行首码,每一列有一个列号,图2-7(b)中4行的行首码从下到上分别为0、4、8、12,4列的列号从右到左分别是0、1、2、3。
每个键位的编码用行首码加列号得到,即:
编码=行首码+列号。
这种编码虽然编码过程复杂,但得到的编码简单,连续,处理起来方便,现在矩阵键盘一般都采用顺序编码的方法。
(3)键位的识别
矩阵式键盘键位的识别可分为两步:
第一步是首先检测键盘上是否有键按下;
第二步是识别哪一个键按下。
检测键盘上是否有键按下的处理方法是:
将列线送入全扫描字,读入行线的状态来判别。
其具体过程如下:
P2口低四位输出都为低电平,然后读连接行线的P1口低四位,如果读入的内容都是高电平,说明没有键按下,则不用做下一步;
如果读入的内容不全为1,则说明有键按下,再做第二步,识别是哪一个键按下。
识别键盘中哪一个键按下的处理方法是:
将列线逐列置成低电平,检查行输入状态,称为逐列扫描。
从P2.0开始,依次输出“0”,置对应的列线为低电平,其它列为高电平,然后从P1低四位读入行线状态。
在扫描某列时,如果读入的行线全为“1”,则说明按下的键不在此列;
如果读入的行线不全为“1”,则按下的键必在此列,而且是该列与“0”电平行线相交的交点上的那个键。
为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行有键按下,就用该行的行首码加列号得到当前按键的编码。
(4)独立式键盘与单片机的接口
独立式键盘每一个键用一根I/O接口线管理,电路简单,通常用于键位较少的情况下。
对某个键位的识别通过检测对应I/O线的高低电平来判断,根据判断结果直接进行相应的处理。
在MCS-51单片机系统中,独立式键盘可直接用P0~P3四个并口中的I/O线来连接,连接时,如果用的是P1~P3口,因为内部带上拉电阻,则