简易数字钟的设计.doc_第1页
简易数字钟的设计.doc_第2页
简易数字钟的设计.doc_第3页
简易数字钟的设计.doc_第4页
简易数字钟的设计.doc_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

单片机课程设计科信学院课程设计说明书(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 单片机AT89C52芯片分析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 基本要求简要说明任务和要求设计简易的数字钟,该数字钟满足以下要求:设计一台以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.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小时到?小时位+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口,当作输出口使用时,必须接上拉电阻才有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”时对引脚输入的干扰。本次设计采用P0口作为数码管段选输出使用。P2口:内部有上拉电阻的8位I/O口,本次设计中作为数码管位选输出使用。3.2 晶振电路模块在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。 图3.2 晶振电路3.3 复位电路模块 单片机复位的条件是:必须使RST/VPD或RST引脚加上两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12MHz,每个机器周期为1us,则只需要2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图所示。电路为上电复位,它利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻分压,在RESET端产生一个复位高电平。图3.3 复位电路3.4 显示模块考虑采用动态显示部分,用P0口作为数码管数据(段选),P2口作为数码管控制(位选)。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。6位数码管,实验室的硬件是共阴极的,故我们的数码表采用0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00;图3.4 显示模块3.5 时间校对按键模块本次设计要求了该简易数字钟必须具备时、分的调整功能。故必须接入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; 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=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(mstcnt=8) mstcnt=0; P0=dispcodedispbufdispbitcnt; P2=dispbitcodedispbitcnt; dispbitcnt+; if(dispbitcnt=8) dispbitcnt=0; tcnt+; if(tcnt=4000) tcnt=0; second+; if(second=60) second=0; minite+; if(minite=60) minite=0; hour+; if(hour=24) hour=0; dispbuf0=second%10 ; dispbuf1=second/10; dispbuf3=minite%10 ; dispbuf4=minite/10; dispbuf6=hour%10 ; dispbuf7=hour/10; 5 数字钟源程序的仿真 5.1 仿真图 5.2 编译、连接将数字钟源程序输入到keil软件,建立工程项目,添加完成程序的编译、连接,通过后无错误。如图所示:图5.1 编译、连接图5.3 仿真 生成HEX文件利用keil将编译、连接无误的源程序生成hex文件,准备与protues联调进行仿真。图 6.2.1 从keil里生成十六进制文件6 数字钟硬件原理图6.1 总原理图图6.1 数字钟硬件原理图7课设感受本次课程设计我们小组选择的课题是简易数字钟的设计。主要的设计思路是运用5个单元模块的组合来实现符合设计要求的数字钟。五大模块设置合理,各自发挥自己的作用,成为一个整体。分模块来调试,最终实现。通过这次课程设计,我学会了很多书本上学不到的知识,熟练掌握了Keil的开发环境,也加深了软件的使用。这个课设从自己找相关软件、装软件、学软件再到仿真,充满许多艰辛,付出了很多汗水和时间,

温馨提示

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

评论

0/150

提交评论