欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PDF文档下载
     

    LED显示的电子钟要点.pdf

    • 资源ID:5197387       资源大小:615.36KB        全文页数:18页
    • 资源格式: PDF        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    LED显示的电子钟要点.pdf

    1 单片机原理及其接口技术 课程设计报告 课题LED 显示的电子钟 姓名周文 学号201104170132 院系 自动控制与机械工程学院 班级电气 1 班 指导教师冯维杰王玮 2013 年 7 月 2 目录 一、设计目的及要求.1 二、系统设计.1 三、硬件设计. 1 1、AT89C51 2 2、LED数码管显示部分 2 2、晶振部分 3 4、按键部分 . 3 四、软件设计. 4 1、protues 软件4 2、流程图 4 3、仿真结果 6 五、总结与心得体会7 六、附录( C语言程序) . 8 3 一、设计目的及要求 1、设计题目: LED显示的电子钟 2、设计任务:基于AT89C51 单片机 ,制作一个LED 显示的智能电子钟。 3、设计要求: (1) 、用 6个 7 段 LED 数码管作为显示设备,设计时钟功能。 (2) 、显示格式,日期:YY MM DD, 时间: HH MM SS. (3) 、可以分别设计年、月、日,时、分、秒。在复位后的日期应该为:12 01 01,时间为: 00 00 00。 (4) 、秒钟复位功能,当秒位键按下后,秒的那位回到00 。 (5) 、键盘按键个数应该万为己确定。 (6) 、时间、月、日自行交替显示,或者按键切换显示。 二、系统设计 设计中采用 AT89C51芯片及 LED显示器,一些独立式按键构成一个简单的数字电子钟。 设计中是采用单片机的内部定时器进行定时,程序框图如图2.1 所示: 图 2.1 系统框图 整个电子钟的工作原理是:在正常的供电状态下,首先利用单片机定时,到了相应的时 间由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则进入相应的按键 显示和调整状态,进行按键调整。 三、硬件设计: 硬件设计是指应用系统的电路设计,包括单片机芯片、控制电路、存储器、I/O 接口等等。硬件设计 时,应考虑留有充分余量,电路设计力求无误,因为在系统调试中不易修改硬件结构。 如原理图所示,硬件系统主要由单片机最小应用系统、LED 数码管显示部分、电源部分、晶振部 分、按键部分等组成。 内部时钟发生器 复位清零 控制按键 AT89C51 单片机 LED 数码管 74HCS245 芯片 4 1、单片机最小系统 AT89C51. AT89C51是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8 位微处理器,俗称单 片机。时钟电路由一个12MHZ的石英晶体振荡器和两个22pF 的的电容组成振荡电路和分频电路,为单片 机提供内部时钟。复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送 入单片机。如图3. 1: 图 3.1 89C51单片机图 2、 LED 数码管显示模块 本系统利用6 位 LED 数码管显示时间,共阴极结构。LED 数码管由7 段发光二极管组成,当要显示 某个数字时只要将数字所对应的引脚送入低电平。 图 3.2 LED 数码管的数值表及其引脚图 5 3、晶振模块: 下图所示为时钟电路原理图,在AT89S51 芯片内部有一个高增益反相放大器,其输入端为芯片引脚 XTAL1 ,输出端为引脚XTAL2 。而在芯片内部,XTAL1 和 XTAL2之间跨接晶体振荡器和微调电容,从 而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时 钟脉冲信号。 图 3.3 晶振部分电路图 4、按键模块: 本设计中主要有8 个控制按键,按键功能为: (1)、 P1.0 键位为秒复位键,当使用时,使秒所显示数据复位。回到0 0; (2)、 P1.1 键位为分钟加“1”; (3)、 P1.2 键位为小时加“1”; (4)、 P1.3 键位为切换日期和时间; (5)、 P1.4 键位为天数加“1”; (6)、 P1.5 键位月份加“ 1”; (7)、 P1.6 键位为年份加“1”; (8)、 P1.7 为清零开关,当功能切换为日期显示时,P1.7 键位为日期复位。 图 3.4 独立按键部分电路图 6 四、软件设计: 1、Protues 软件的介绍: Proteus 软件所提供了30 多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。在 Proteus软件包中,不存在同类仪表使用数量的问题。Proteus还提供了一个图形显示功能,可以将线路 上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。提供软件调试功能。在 硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态, 因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。 具有强大的原理图绘制功能。总之, 该软件是一款集单片机和SPICE分析于一身的仿真 软件,功能极其强大。 在 protues绘制好原理图后, 调入已编译好的目标代码文件:*.HEX, 可以在 protues 的原理图中看到模拟的实物运行状态和过程。 用 Protues软件进行仿真,其仿真的电路图如图4.1 所示 仿真设计图如下: 图 4.2 .1 仿真电路图 2、程序设计流程图 根据所编写的 C 语言程序,画出如下所示的流程图,程序按照流程图的步骤运行。 7 图 4.2.1 主程序流程图 图 4.2.2 时间处理子程序图 8 图 4.23键盘扫描程序流程图 3、软件仿真结果 经过仿真,得到要求中的结果,如图所示: 图 4.3.1 清零结果图 9 图 4.3.2 日期复位结果图 图 4.3.3 秒复位结果图 五、设计总结 我们电气工程机自动化专业的学生学习单片机原理及接口技术课程,配套的开设课程设 计。 我们三个班的同学在一起进行了一次单片机的课程设计的实训,实训的时间为一个周, 在这个周的实训中,我们通过本课程设计明白了这样的课程是培养学生的主专业课,是培养 现代化人才的重要技术之一。 单片机的课程设计是学习单片机理论的重要实践环节,在单片机的实验课程基础上,我 10 们通过课程的设计和学习,使我们增进对单片机的感性认识,加深对单片机理论的的理解, 使我们掌握单片机的内部功能模块的应用,掌握单片机的接口功能和扩展的应用,掌握一些 特殊器件的使用方法,学习编辑综合的程序。使我们了解和掌握单片机应用系统的硬件和软 件的设计的方法和调试的过程。充分发挥我们的主观能动性,更好的激发了我们的学习激情 和学习的兴趣。 这次试训培养了我们大学生能主动利用芯片解决工程上实际的问题的意识,培养了我们 的工程实践能力、实际动手能力和自我学习的能力。使我们为完成从实际项目立题、调研、 方案论证、方案实施、系统的调试、编写使用说明书等调研过程的基本训练,为今后在相关 的领域中从事和单片机有关的设计、开发、应用等工作打下扎实的基础。 六、附录 用 C语言编写的程序: #include #define uchar unsigned char #define uint unsigned int /* 七段共阴管显示定义*/ uchar code dispcode =0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, /* 定义并初始化变量*/ 0x80,0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF; uchar second=0; uchar minute=0; uchar hour=0; uchar mstcnt=0; uchar mon=1; uchar day=1; uchar year=12; int disp=0; int a=0,k1num; sbit P10=P10; / second调整定义 sbit P11=P11; /minite调整定义 sbit P12=P12; /hour调整定义 sbit P13=P13; /年月日与时分秒转换 sbit P14=P14; sbit P15=P15; 11 sbit P16=P16; sbit P17=P17; /* 函数声明 */ void delay(uchar k ); /延时子程序 void time_pro( ); /时间处理子程序 void display( ); /时分秒显示子程序 void display1( ); / 年月日显示子程序 void keyscan( ); /键盘扫描子程序 /*/ /* 延时子程序 */ /*/ void delay (uchar k) uchar j; while(k-)!=0) for(j=0;j=99) year=1; /*/ /* 时分秒显示子程序*/ /*/ void display(void) P2=0xfe; P0=dispcodehour/10; /显示小时的十位 delay(4); P2=0xfd; P0=(dispcode(hour%10)|0X80; /显示小时的个位 delay(4); P2=0xfb; P0=dispcodeminute/10; /显示分的十位 delay(4); P2=0xf7; P0=(dispcodeminute%10)|0X80; /显示分的个位 delay(4); P2=0xef; P0=dispcodesecond/10; /显示秒的十位 delay(4); 14 P2=0xdf; P0=dispcodesecond%10; /显示秒的个位 delay(4); /* 年月日显示程序*/ void display1(void) P2=0xfe; P0=dispcodeyear/10; delay(4); P2=0xfd; P0=(dispcode(year%10)|0X80; delay(4); P2=0xfb; P0=dispcodemon/10; delay(4); P2=0xf7; P0=(dispcodemon%10)|0X80; delay(4); P2=0xef; P0=dispcodeday/10; delay(4); P2=0xdf; P0=dispcodeday%10; delay(4); /*/ /* 键盘扫描子程序*/ /*/ void keyscan (void) if(P10=0) /按键秒的调整 delay(30); k1num+; if(P10=0) 15 second+; if(k1num=0) if(second=60) second=0; if(k1num=1) second=0; k1num=0; while(P10=0) display(); if(P11=0) /按键分的调整 delay(30); if(P11=0) minute+; if(minute=60) minute=0; while(P11=0) display(); if(P12=0) /按键小时的调整 delay(30); if(P12=0) 16 hour+; if(hour=24) hour=0; while(P12=0) display(); if(P13=0) /年月日与时分秒的转换 delay(30); if(P13=0) disp=! disp; while(P13=0) display(); if(P14=0) delay(30); if(P14=0) day+; if(day=31) day=1; while(P14=0) display1(); if(P15=0) 17 delay(30); if(P15=0) mon+; if(mon=13) mon=1; while(P15=0) display1(); if(P16=0) delay(30); if(P16=0) year+; if(year=100) year=1; while(P16=0) display1(); if(P17=0) delay(30); if(P17=0) second=0;minute=0;hour=0;day=01;mon=01;year=12; void timer0(void) interrupt 1 using 0 /定时器方式,ms中断一次 18 TH0=0x3c; TMOD = 0x11; mstcnt+; if(mstcnt=20) second+; mstcnt=0; /*/ /* 主函数 */ /*/ void main(void) P1=0xff; /初始化 p1 口,全设为 TMOD = 0x11; /time0为定时器,方式 TH0=0x3c; /预置计数初值 TL0=0xb0; EA=1; ET0=1; TR0=1; while (1) keyscan( ); /按键扫描 time_pro( ); /时间处理 if(disp) display1( ); /显示时间 else display( );

    注意事项

    本文(LED显示的电子钟要点.pdf)为本站会员(tbuqq)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开