题目班级学号多功能数字电子时钟********************************指导时间**********2010 年12月18日瓷学院电工电子技术课程设计任务书目录1、总体方案与原理说明................................... .. (1)2、单元电路1 ——单片机最小系统 (3)3、单元电路 2 ——指示灯与数码管显示电路. . . . . . . . . . . . . . . . . . . . . . 5 4、单元电路 3 ——键盘检测电路 (7)5、单元电路4 ——A T 2 4 C 0 2 存储电路 (9)6、总体电路原理相关说明 (11)7、总体电路原理图 (13)8、PCB印制电路板图 (14)9、元件清单.............................................................. . . . . . . . . . . . . . . . . . . 1 510 、参考文献 (16)11、设计心得体会............................................................... . . . . . . . . . . . . . . 1 712 、附件: C 源程序..............................................................181、总体方案与原理说明图1:作品总体框图这是一个具有时间、日期、秒表、闹铃以及断电储存数据功能的多功能数字电子时钟。
它主要由以下几部分组成:单片机最小系统;指示灯及数码管显示电路;按键电路;以及AT24C02存储电路。
整机的逻辑框图如右图所示:本时钟的主控芯片是一台AT89S51单片机,AT89S51是一个低功耗,高性能CMOS 啦单片机,片含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATME公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片集成了通用8 位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:40个引脚,4k Bytes Flash片程序存储器,128 bytes 的随机存取数据存储器(RAM,32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT电路,片时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM勺数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP 和PLCC等三种封装形式,以适应不同产品的需求。
整个电路由一台单片机和一些外围电路组成。
它的计时采用单片机部的定时器,其晶振频率为11.0592MHz其主要功能都是通过C语言编程来实现的。
其显示部分用四位数码管来显示,能同时显示小时和分钟。
它主要有以下几个功能:(1)时间显示及调整:在正常状态下显示当前时间,并随时可以通过控制按键进行调整。
(2)日期显示及调整:在日期显示状态下可以显示当前日期,进入日期调整状态后还可以调整日期。
(3)秒表功能:进入秒表状态后可以进行秒表计时,它能计时的长度为100分钟,当时间在0~1 0分钟计时精度为0.1 秒,四位数码管中第一位显示分钟,中间两位显示秒钟,最后一位显示0.1 秒表;当时间在1 0~1 00分钟计时精度为1 秒,四位数码管前两位显示分钟,后两位显示秒钟。
(4)闹铃功能:在进入闹铃调整状态后可以设定闹铃时间,当时间到达设定好的时间时蜂鸣器就会发出“嘀嘀”的报警声。
(5)整点报时功能:当时间到达整点时蜂鸣器会发出“嘀”的一声报警,以提示到达整点。
(6)断电存储数据的功能:当时钟在运行时,它会实时将当前时间存入一个AT24C02存储器中,在每次启动时它会首先从该存储器中读取数据,这样将保证时钟在断电后数据不会丢失,再次接通电源后将接着上次的时间运行。
以下我将对各部分的原理进行详细的阐述。
2、单元电路1――单片机最小系统图2:单片机最小系统单片机最小系统由一个单片机加上一个复位电路和振荡电路组成。
图中右下角还有一个蜂鸣器电路,它用于闹铃的报警:(1)复位电路单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。
当复位电平持续两个机器周期以上时复位有效。
复位电平的持续时间必须大于单片机的两个机器周期。
具体数值可以由RC电路计算出时间常数。
复位电路由按键复位和上电复位两部分组成。
(1)上电复位:8051系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC再连接一个电阻到GND 由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。
(2)按键复位:按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
(2)振荡电路单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定围调整频率,称为压控振荡器(VCO。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。
如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
AT89S51使用11.0592MHz的晶体振荡器作为振荡源,由于单片机部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。
3、 单元电路2――指示灯及数码管显示电路u”u —M-图4:数码管内部原理图数码管有一位、双位、四位等几种。
而不管将几位数码管连在一起,数码管 和显示原理都是一样的,都是靠点亮部的发光二极管来发光。
数码管的部电路结--------- I ZZI' □ □□□□□S.S.0.S.图3:指示灯与数码管显示电路 1、数码管显示原理构如上图所示:从(a)可看出,一位数码管的引脚数是10个,显示一个8字需要7 个小段,另外还有一个小数点,所以其部一共有8 个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装1 0个引脚。
而它们的公共端又分为共阳极和共阴极。
上页图的(b)和(c)分别为共阳极和共阴极数码管的原理图。
本电子钟上的数码管采用的是4 位共阳极数码管。
所谓“共阳”就是指其部的8 个发光二极管的阳极全部接在一起,而它们的阴极是独立的,通常在设计电路时一般把阳极接VCC当我们给数码管的任一个阴极加低电平时,对应的那个发光二极管就点亮了。
当使用多位一体数码管时,它们部的公共端是独立的,而负责显示什么数字的段线全部都是连在一起的,独立的公共端可以控制多位数码管中哪一位点亮。
通常我们把公共端叫做“位选线” ,连在一起的段线叫做“段选线” 。
2、显示部分C源程序的编写:由于在本电子钟中4位数码管的段选线是直接接在单片机的P0 口的,所以我们首先应该计算出显示各个数字所对应的P0 口输出的二进制编码。
例如如果要显示一个“ 0”对照上面的(a)图,我们需要点亮数码管中的a、b、c、d、e、f,而g和dp不点亮,故a、b、c、d、e、f、g、dp对应的二进制编码就为:00000011。
再对照数码管段选线与单片机连接的顺序就可得要赋给单片机P0 口的值应为10100000,转换为十六进制就是a0。
同理可以得到其它数字对应的十六进制编码:uchar code table[10]={0xa0,0xbe,0x62,0x2a,0x3c,0x29,0x21,0xba,0x20,0x28};uchar code table_dot[10]={0x80,0x9e,0x42,0x0a,0x1c,0x09,0x01,0x9a,0x00,0x08}; // 带小数点的数字段码表3、指示灯功能说明:其中秒表、日期、闹铃、小时调整、分钟调整为状态指示灯,当时钟处于其中的某种状态时,对应的指示灯会亮。
秒针指示为秒针指示灯,它会每隔0.5 秒闪烁一次,用来指示当前正处于计时状态(包括时间显示和秒表状态)。
显示部分的具体C源程序见附录单元电路3――键盘检测电路图5:键盘与单片机连接电路上图是5个按键与单片机的连接图,其中一端是直接接地的,当某一个按键被按下时,与之对应的I/O 口就会被置为低电平,由于一上电时计算机的所有I/O 口都是高电平,当单片机检测到某一个I/O 口为低电平时就知道是哪个按键被按下了。
但是如果直接检测引脚是否为低电平的话是会有问题的。
请看图6。
从图中可以看出,理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都会有抖动现象,抖动时间的长短和按钮的机械特性有关,一般为5~10ms通常我们手动通常我们手动按下键然后释放,这个动作中稳定闭合的时间超过20ms因此单片机在检测键盘是否按下时都要加上去抖动操作,有专门的去抖动电路,但通常我们用软件延时的方法就能很容易地解决抖动的问题,因此没必要增加多余的硬件电路。
在编写程序时,一般在检测按下是加入去抖延时。
按键检测的流程图如下:因此,键盘检测部分的C源程序的写法应如下所示:void keysca n(){if(key==0){delay(10);if(key==0){(按键后要执行的语句)while(!key);〃等待按键释放}}}键盘检测部分的具体C源程序见附录。
开始寄存器及I/O 口初始Y检测是否有键释放Y执行相应的代码图7:按键检测流程图检测是否有键按下检测是否有键按下4、单元电路4 —— AT24C02存储电路图8: AT24C02存储电路单片机与AT24C02芯片通信使用|2C总线协议。