ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:910.77KB ,
资源ID:2607635      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2607635.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简易数字钟的设计.doc)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

简易数字钟的设计.doc

1、单片机课程设计科信学院课程设计说明书(2012 /2013 学年第 二 学期)课程名称 : 单片机课程设计 题 目 : 简易数字钟课程设计 专业班级 : 学生姓名 : 学 号 : 指导教师 : 苗敬利、王立国等 设计周数 : 2周 设计成绩 : 2013年06 月27 日目 录目 录1 设计任务描述11.1 设计题目:简易数字钟的设计11.2 设计要求:11.2.1 设计目的11.2.2 基本要求11.2.3元件清单12 设计方框图22.1 数字钟硬件部分示意图22.2 数字钟软件部分组成框图32.2.1 时间调整的程序流程32.2.2 时钟显示程序流程43 各部分模块介绍53.1 单片机AT

2、89C52芯片分析53.2 晶振电路模块63.3 复位电路模块63.4 显示模块73.5 时间校对按键模块84 简易数字钟源程序8源程序85 数字钟源程序的仿真125.1 编译、连接125.2 仿真125.3 生成HEX文件136 数字钟硬件原理图15 总原理图15小 结16171 设计任务描述 1.1 设计题目:简易数字钟的设计 1.2 设计要求:1.2.1 设计目的熟练使用Keil开发环境,具备编写单片机程序(汇编语言或C语言)的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。1.2.2 基本要求简要说明任务和要求设计简易的数字钟,该数字钟满足以下要求:设计一台

3、以MCS-5为核心的简易数字钟。四位数码管显示小时和分钟,中间那个点来区分小时和分钟;每秒用一个LED灯闪烁一下;四个按键,分别为:选择键,加键,减键,确认键。时间要精确,整点报时,声音间隔一秒,并且可以调整时间,调整位闪烁提示。1.2.3 元件清单如下:元件名称型号数量用途元件名称型号数量用途单片机AT89S511控制核心电阻10K7按键电路晶振12MHz1晶振电路按键4电容30pF2数码管8段4位4显示电路电解电容30uF/10V1复位电路电阻3307电阻1k1电阻1001蜂鸣器及其驱动电路按键20014蜂鸣器DC5V1电源+5V/0.5A1提供+5V电源三极管901342 设计方框图2.

4、1 数字钟硬件部分示意图该简易数字钟硬件部分主要由晶振、手动复位、单片机AT89C52、数码管显示、时间调整按键模块组成。框图如下:单片机AT89S52电源复位电路晶振电路声音提示数码管显示按键电路基于AT89S51单片机数字钟系统框图 图2.1 数字钟硬件系统示意图 2.2 数字钟软件部分组成框图2.2.1 时间调整的程序流程YYNINT1中断服务子程序时钟分位调整时钟分位+11小时到时钟分位清零返回时钟小时位调整?时钟小时+124小时到时钟小时位清零NY图2.2 时间调整程序流程框图2.2.2 时钟显示程序流程T1中断服务子程序重置T1定时初值1秒到?秒位+11分到?分位+1、秒位清零1小

5、时到?小时位+1、分位清零24小时到?小时位清零返回NNNN图2.3 24小时时钟3 各部分模块介绍3.1 单片机AT89C51芯片分析AT89C51单片机引脚图如下:图 3.1 AT89C51引脚图该单片机是标准的40引脚双列直插式集成电路芯片,其各个引脚功能如下:VCC:+5V电源。VSS: 接地。RST:复位信号。当输入的复位信号延续两个周期以上的高电平时即为有效,用来完成单片机的初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。PO口:P0口作为一个8位漏极开路双向I/O口,当作输出

6、口使用时,必须接上拉电阻才有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”时对引脚输入的干扰。本次设计采用P0口作为数码管段选输出使用。P2口:内部有上拉电阻的8位I/O口,本次设计中作为数码管位选输出使用。3.2 晶振电路模块在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。 图3.2 晶振电路3.3 复位电路模块 单片

7、机复位的条件是:必须使RST/VPD或RST引脚加上两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12MHz,每个机器周期为1us,则只需要2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图所示。电路为上电复位,它利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻分压,在RESET端产生一个复位高电平。图3.3 复位电路3.4 显

8、示模块考虑采用动态显示部分,用P0口作为数码管数据(段选),P2口作为数码管控制(位选)。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。6位数码管,实验室的硬件是共阴极的,故我们的数码表采用0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00;图3.4 显示模块3.5 时间校对按键模块本次设计要求了该简易数字钟必须具备时、

9、分的调整功能。故必须接入2个简单的按键(本设计设置问p1.4调时、p1.5调分,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这2个独立按键的子程序。图3.5 时间校对按键电路4 简易数字钟源程序 源程序#include unsigned char code dispcode=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00; unsigned char dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f;

10、unsigned char dispbuf8=0,0,16,0,0,16,0,0; unsigned char dispbitcnt; unsigned char second; unsigned char minite; unsigned char hour; unsigned int tcnt; unsigned char mstcnt; unsigned char i,j; sbit P3_0=P30;sbit P3_1=P31;sbit P3_2=P32;void main(void) P2=0X00;TMOD=0x02; TH0=0x06; TL0=0x06; TR0=1; ET0=

11、1; EA=1; while(1) if(P3_0=0) for(i=5;i!=0;i-) for(j=248;j!=0;j-); if(P3_0=0) second+; if(second=60) econd=0; dispbuf0=second%10 ; dispbuf1=second/10; while(P3_0=0); if(P3_1=0) for(i=5;i!=0;i-) for(j=248;j!=0;j-); if(P3_1=0) minite+; if(minite=60) minite=0; dispbuf3=minite%10 ; dispbuf4=minite/10; while(P3_1=0); if(P3_2=0) for(i=5;i!=0;i-) for(j=248;j!=0;j-); if(P3_2=0) hour+; if(hour=24) hour=0; dispbuf6=hour%10 ; dispbuf7=hour/10; while(P3_2=0); void t0(void) interrupt 1 using 0 mstcnt+; if(mstcn

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1