电子钟单片机课程设计_第1页
电子钟单片机课程设计_第2页
电子钟单片机课程设计_第3页
电子钟单片机课程设计_第4页
电子钟单片机课程设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机课程设计姓 名: 学 号: 0803731028 班 级: 自动化081 成 绩: 指导老师: 设计时间:2011-1-14 目 录 摘要31 设计课题任务、基本原理及方案4 1.1 设计课题任务4 1.2 软时钟的基本原理4 1.3 设计课题总体方案42 设计课题硬件系统的设计5 2.1设计课题硬件系统各主要器件简要介绍5 2.2设计课题硬件系统各模块功能简要介绍7 硬件电路连接图102.3 设计课题元器件清单113 设计课题软件系统的设计11 3.1 设计课题使用单片机资源的情况11 3.2 设计课题软件系统个模块功能简要介绍11 3.3 设计课题软件系统程序流程框图12 3.4 课

2、程设计各部分程序介绍144 课程设计结论、误差分析、心得体会19 4.1设计课题的设计结论19 4.2设计课题的误差分析19 4.3设计体会205 参考文献20摘要单片机即单片微型计算机,由ram、rom、cpu构成,定时、计数和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产业和工业自动化上。这次课程设计通过对它的学习、设计、开发软、硬的能力。 1957年,ventura发明了世界上的第一个电子表,从而奠定的电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒进一分,满

3、六十分进一小时,满二十四小时自动清零,从而达到计时的功能。电子时钟是人民生活中不可缺少的工具。通常通过用单片机设计电子时钟有两种方法:一是通过单片机内部的定时器/计数器,采用软件编程的方法实现时钟计时,一般称为软时钟。这种方法硬件电路简单,系统的功能一般与软件的设计有关;二是采用时钟芯片,它的功能强大,功能部件集成在芯片的内部,自动产生时钟等相关的功能。这种方案硬件成本相对较高,软件编程简单,通常用在对时钟精度要求较高的场合。本次课程设计采用深圳宏晶公司的stc 89c52rc单片机为核心,使用12mhz晶振与单片机stc 89c52rc相连接,通过软件编程的方法实现以24小时为一个周期的计时

4、功能,并通过8位7段led数码管显示当前的时间,显示的格式为:时分秒(如12-25-09)。该电子时钟电路中有四个按键:k0,k1,k2,rst。对按键进行相应的操作可以达到调时、复位的功能。整个过程就是先设计和焊接好硬件电路,再通过汇编语言编写应用程序并下载到单片机上实现我们需要的功能。由于本实验的硬件电路的结构简单、直观,所以软件的编程及调试是本次课程设计的重点和难点。 1 设计课题任务、基本原理及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。具有时间显示、并具有时间设定,时间调整,复位重置的功能。1.2 软时钟的基本原理 软时钟是利用了单片机内部的定时器/计数器来实现的,它的

5、处理过程如下:首先设定单片机内部的的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(如10ms),然后用另一个定时器/计数器后软件计数的方法对基准时间计数形成秒(对10ms计数100次),对秒计数60次形成分,对分计数60次形成小时,对小时计数24次则表示计满了一天,单片机可以自动清零重新计时。 在计时的过程中可以通过数码管把技术的内容在相应的位置显示出来。数码管显示可以采用静态显示方法和动态显示方法。静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示一般用6个或8个数码管。由于系统没有其他的复杂的任务需要处理,而且显示的时钟信息随时都可以变化,一般采用动态显示方法。动态显示方

6、法,线路相对简单,但需要动态扫描,扫描的频率要大于人眼的视觉暂留频率(每秒24次),信息看起来才稳定。译码方式可分为软件译码和硬件译码,软件译码通过译码程序查询显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。 在具体处理中,定时器/计数器采用中断方式工作,对时钟的形成在在中断服务程序中实现。在主程序中只需要对定时器/计数器初始化、调用显示自程序和控制子程序。另外,为了使用方便,设计了简单的按键,可以通过按键实现对时、分的调整,这样在主程序中就要加入键盘设置的子程序。1.3 设计课题总体方案 图1.1 总体设计方案图2 设计课题硬件系统的设计2.1 设计课题

7、硬件系统各主要器件简要介绍本设计的硬件系统主要采用以下电子元器件:单片机 stc 89c52rc,锁存器hd74ls373p,数码管(共阴极),npn型三极管2n5551,电阻,电容,晶振,按键。【1】单片机 stc 89c52rc为本次课程设计的核心器件。 图2.1 stc 89c52rc封装图 在单片机 stc 89c52rc中,有256kb的片内数据存储器和8kb的片内程序存储器,因此在组建单片机的最小应用系统时,不需要在单片机的外部扩展片外存储器。 单片机 stc 89c52rc中有四个8位的并行i/o接口:p0、p1、p2、p3。这四个接口,既可以作输入,也可以作输出,既可以按8位处

8、理,也可以按位处理。p0口也可以作数据/地址线使用,在本次课程设计中,p0作数据线使用,向锁存器输出8位的字段码。p2口也可以作地址线使用,在本次实验中,p2口作位选码输出端。p1口中选三个端口作按键输入端。单片机控制线介绍:rst:上电复位端,当单片机振荡工作时,在该引脚上出现两个机器周期的高电平,单片机就可实现复位操作,使单片机回到初始状态。xtal1、xtal2:外接晶振引脚。/ea:片外程序存储器选用端,低电平有效。本次实验中不需要扩张存储器,因此,在电路中此端口接高电平。/psen:片外程序存储器读选通信号输出端,低电平有效。本次试验中无片外程序存储器,故此功能不需要,此端口接高电平

9、或悬空。ale:地址锁存信号输出端。本次试验中没有用到16位地址线,故此端口悬空处理。vcc:电源端,接+5v电源正端。gnd:接地端,接+5v电源地端。【2】锁存器hd74ls373p 图2.2 74ls373的结构图 hd74ls373p是一个带输出三态们的8位锁存器,具有8个输入端d0d7,8个输出端q0q7,g位数据锁存控制端,g位高电平,则把输入的数据存入锁存器中,/oe位输出允许端,低电平是把锁存器中的内容通过输出端输出。 图2.3 74ls373的功能表【3】数码管(共阴极) 图2.4 数码管封装图2.2 设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实

10、现:单片机最小系统模块,输入模块、输出模块。(1)单片机最小系统模块:包括单片机stc 89c52rc、复位电路、晶振电路。本本模块stc 89c52rc系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚xtal1,其输出端位位引脚xtal2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。这样就构成一个稳定的自激振荡器。 图2.5 晶振电路 图2.6 复位电路当复位键k3未按下时,rst端是低电平。当复位键k3按下时,rst端瞬间上升到电源电压,及为高电平,电路中电源对电容快速充电。当复位键弹起时,电容通过电阻向地端放电,rst端电压逐渐下

11、降。在保证rst端能得到大于两个机器周期的高电平时,单片机完成复位初始化操作。 图2.7 单片机的最小系统(2) 输入模块:本模块共用到了3个按键独立式按键:k0键是选择功能键,k1加一功能,k2减一功能。单片机通过计数k0、k1、k2键被按下的次数,做出相应的反应:没有按键,则时钟正常走时。当按下k0键,进入调分状态,时钟停止走动;按k1或k2键可进行加1或减1操作;继续按k0键可分别进行分和小时的调整;最后按k0键将退出调整状态,时钟开始继续计时运行。 图2.8 输入模块(3) 输出模块:本次设计显示为8位,采用八位七段式数码管(共阴极)作为显示窗口.由于显示过程是采用了动态显示的方法,一

12、次单片机只让一位数码管显示,但以高频率连续扫描八位数码管,使得人看到的是稳定的数字。每一次显示时,单片机的p0口作为数据线,输出一个数码管显示所需的八位字段码,并通过锁存器74ls373与数码管相连。p2口作为位选码输出端,分别通过npn型三极管与共阴极的数码管的公共端相连。p2口的八位输出端每次只有一个端口输出高电平,使得相对应的npn型三极管导通,从而使得相连的数码管公共端接地,则此公共端接地的数码管可以显示相应的字符。 图2.9 输出模块 图2.10 硬件电路路2.3 设计课题元器件清单序号产品名称规格型号数量1单片机stc89c52rc12晶振12mhz13独石电容30pf24电解电容

13、47f25电解电容10f16按钮47rj电阻10k48rj电阻51089rj电阻4.7k810三极管2n5551 npn811锁存器74ls3731128段式led数码管8 图2.11 元器件清单 3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况单片机资源使用的情况如下:p0口作为段码输出口,输出数码管显示的段码信号;p1口作为按键输入口,将按键上的信号输入到单片机内部;p3口作为位码输出口,输出数码管的位显示,输出数码管位选信号;晶振11.0592m; 3.2 设计课题软件系统个模块功能简要介绍 本设计的软件系统模块大致分为:主程序模块,中断服务程序,数码驱动显示程序,键扫程序

14、。主程序:用于对程序进行全局控制,包括信号的输入输出,调用各个功能的子模块,调配按键的使用。中断服务程序:用于产生1s的脉冲信号。键盘扫描模块:用于及时校正计时状态。数码驱动模块:用于驱动数码管的正确显示计时。3.3 设计课题软件系统程序流程框图主程序执行流程如下图:主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下,则转入相应的功能程序.开始显示单元清零t0、t1设为16位计数模式允许t0中断调用显示子程序按下键否?进入功能程序是否 图 3.1 定时器/计数器t0用于时间计时,选择方式1,定时时间设为50ms,定时时间到则中断,在中断服务程序中用

15、一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清零;分单元加到60则对时单元加1,同时分单元清零;时单元加到24则对时单元清零,标志一天时间计满。在对各单元计数的同时,把它们的值放到存储单元的指定位置。 定时器/计数器t0中断服务程序流程图如下图: 图 3.2按键扫描部分流程图:按键k0的扫描流程图如下,单片机在工作的过程中部端的对按键k0经行扫描,一旦发现k0按下,就开始作出一系列的连续反应。按键k1、k2的扫描方法与按键k0的方法相似,单片机中一个储存单元记录k0的按下的此时,k1、k2对记录着分或小时的计数单元内的数值经行加或者减的处理。 图

16、3.3 按键扫描流程图3.4 课程设计各部分程序介绍/采用8位led软件译码动态显示程序。/使用stc 89c52rc单片机,12mhz晶振。/p0口输出字段码,p2口输出位选码,用共阴极led数码管,key0为调时位选择键,key1为加1键,key2为减1键。【1】程序头文件部分及各储存单元的定义:#include "reg52.h"#include "stdio.h"#define char unsigned charchar code dis_712=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f

17、,0x00,0x40;/共阴极led数码管09、灭和-的字段码char code scan_con8=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/位选择码char data dis8=0x00,0x00,0x0b,0x00,0x00,0xb0,0x00,0x00;/显示缓冲区,时、分、秒初始为0,0x0b为-的编码char data timedata3=0x00,0x00,0x00; /分别为秒、分和小时的值char data ms50=0x00,con=0x00,con1=0x00,con2=0x00; /计数次数初值sbit key0=p10;sbit

18、 key1=p11;sbit key2=p12;【2】1ms延时程序部分:/1ms延时函数delay1ms(int t)int i,j;for (i=0;i<t;i+)for (j=0;j<120;j+);【3】按键扫描,处理部分:/按键处理函数keyscan( ) ea=0; if (key0=0) /按下k0 delay1ms(10); /k0去抖 while(key0=0) con+; tr0=0; et0=0; if (con>=3) con=0;tr0=1;et0=1; if(con != 0)if (key1=0)delay1ms(10); /k1去抖while

19、(key1=0);timedatacon+;if (con=2) con1=24;else con1=60;if (timedatacon>=con1)timedatacon=0; if (con!=0)if (key2=0)delay1ms(10); /k2去抖while (key2=0);timedatacon-;if (con=2) con2=23;else con2=59;if (timedatacon<=0)timedatacon=con2;ea=1;【4】数码管显示部分:/数码管显示函数scan( )char k;dis0=timedata0%10;dis1=timed

20、ata0/10;/秒dis3=timedata1%10;dis4=timedata1/10; /分dis6=timedata2%10;dis7=timedata2/10; /时for (k=0;k<8;k+)p0=dis_7disk;p2=scan_conk;delay1ms(1);p2=0x00;【5】主程序部分: 对定时器/计数器t0经行初始化。调用显示子程序和扫描子程序。/主函数main( )th0=0x3c;tl0=0xb0; /t0定时50mstmod=0x01;et0=1;tr0=1;ea=1;while (1)scan( );keyscan( );【6】定时器/计数器t0中

21、断,形成秒,分,时:/定时器、计数器t0中断服务函数void time_intt0(void) interrupt 1et0=0;tr0=0;th0=0x3c;tl0=0xb0;tr0=1;ms50+;if (ms50=20) /循环20次,计1sms50=0x00;timedata0+; /秒+1if (timedata0=60)timedata0=0;timedata1+; /分+1if (timedata1=60) timedata1=0;timedata2+; /小时+1if (timedata2=24)timedata2=0; et0=1; 4 课程设计结论、误差分析、心得体会4.1

22、 设计课题的设计结论本设计为基于单片机的电子钟的设计。本设计用八个共阳数码管做为显示器,它显示时间值;设计中有四个按键,其中k0为启动/选择调整位置,k1为加控制键 、k2为减控制键,k3位复位键。上电之后,电子时钟可以自动开始计时,通过按键k0、k1、k2可以对电子时钟经行调整,通过复位键k3可以让电子时钟重新开始计时,这样的结果与设计要求完全相符,本设计成功。完成了设计任务。4.2 设计课题的误差分析该电子钟在运行中存在一定的误差,误差产生有三种可能:首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的;其次还有硬件系统也有一定的影响;第三,设计用到11.0592mhz的晶振,计算是满20次为一秒钟,但实际会慢很多。4.3 设计体会经过为期一周的忙碌,终于完成了单片机的课程设计实验。在此期间,我不仅把课堂上学习到的东西经行了巩固和强化,而且在实践过程中各方面的能力也有所提高。当然,这里少不了老师和小组中的其他成员的帮组和指导。在经行课程设计之前,老师给我们详细的讲解了本次课程设计的各部分电路的原

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论