基于80C51的LED灯模拟表盘时钟设计_第1页
基于80C51的LED灯模拟表盘时钟设计_第2页
基于80C51的LED灯模拟表盘时钟设计_第3页
基于80C51的LED灯模拟表盘时钟设计_第4页
基于80C51的LED灯模拟表盘时钟设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、作者:jungle目 录摘要 1前言 1设计任务及要求1方案设计与论证 1单元电路的设计、参数计算和器件选择 2电路原理分析3组装调试过程9总结收获、体会10参考文献 10附录 111 / 30摘要单片计算机即单片微型计算机。(Single-Chip Microcomputer),是集 CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而 51 单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。关键字:51单片机,4-16线译码器,定时器,中断,模拟

2、时钟,动态显示前言本文通过对一个能实现时钟时间设置,闹铃时间设置,实时时间显示,整点报时等功能的时间系统的设计学习,简单介绍了 51单片机应用中的单片机的定时器、中断原理,数码管显示原理,LED灯显示原理,动态扫描显示原理,蜂鸣器工作原理,从而达到学习,了解单片机相关指令在各方面的应用。系统由 AT89C52、4线16线译码器、LED灯、数码管、 按键、二极管,三极管、蜂鸣器等部分构成。能实现的功能:能进行时、分、秒的显示。也具有时钟时间的校准、闹铃定时时间的设定,整点报时,开启或关闭响铃等功能。文章后附有电路原理图 ,电路PCB图,程序清单。一、设计任务及要求以单片机为控制核心,设计用LED

3、灯表示时、分、秒的无表针钟表,要求有整点报时、可设置开启/停止报时功能、可设置修改时分数值及具有闹钟等功能。键盘输入80C52单片机译码器74LS154报时/闹铃电路模拟LED灯表盘秒闪烁电路分闪烁电路图1-系统框图二、方案论证和选择,画出系统框图方案1:对课题的初步认识:既然是模拟时钟,那么想完整显示小时、分钟、秒数是不现实的,因此只用12个LED灯分别表示小时数,而对分钟、秒数暂不考虑。对整点报时的理解是:一但到达整点则用蜂鸣器鸣45S来表示,而对点数没有区分。对设置开启/停止报时功能的理解:对一个管脚(Bell-EN)进行循环检测,当电平为真/假时则开启/停止报时功能。对设置修改时分数值

4、及具有闹钟功能的理解:当要进行时钟时间修改时,通过时钟使能端(Time-EN电平方式)进入时间设置状态(Time-SET电平方式);当要进行闹铃时间修改时,通过闹铃使能端(Ring-EN)进入时间设置状态(Time-SET)。方案2:对题目的最终认识:12个LED灯在需要的时候可用来显示大概的分钟数(误差5min)、秒数(误差5S)。蜂鸣器对不同的整点数鸣对应的声数。对设置开启/停止报时功能时,直接采用拨动开关断掉电源来实现,如此省了一个I/O管脚。采用按键的多功能复用方式,SW2小时累加/时钟使能端(Time-EN边沿触发方式),SW3分钟十位累加/闹铃使能端(Ring-EN边沿触发方式),

5、SW4分钟个位累加/表盘显示当前分钟数(误差5min),SW5确认键/表盘显示当前秒数(误差5S)。按键SW2/P0.4SW3/P0.5SW4/P0.6SW5/0.7第一功能时钟使能端闹铃使能端长按时显示分钟数长按时显示秒数第二功能小时加1键分钟十位加1键分钟个位加1键时间设置确认键对方案的更进一步认识:模拟表盘显示方式与数字显示方式的区别就是在时间的显示、读取方式上。本质都是数字时钟,只是在表达数字的方式上有区别,因此必须想到在时间的显示上不应该有太大的误差。有12个LED灯足够分别显示时、分、秒数了。如此对显示的最终方式是:正常情况下12个LED灯显示的是对应的小时数,在需要的时候可采用-

6、“分”-显示方式或-“秒”-显示方式。三、单元电路的设计、参数计算和器件选择。1 . 单元电路设计:数码管指示电路由于所用的80C51的I/O口输出电流较小,无法驱动LED数码管正常显示。因此必须加上拉电阻对数码管进行驱动。模拟钟盘电路针对表盘显示的唯一性,采用74LS154(4线-16线译码器)设计电路,译码器的输出电流足够驱动LED灯,不用再进行驱动,同时串联一个限流电阻,保护LED灯。按键电路采用独立键盘方式,外加上拉电阻以确定管脚电平。蜂鸣器电路采用NPN二极管驱动蜂鸣器工作,二极管工作在开关状态。基极b为高电平时二极管导通蜂鸣器响起,为低电平时截止蜂鸣器不响。2 . 参数计算:发光二

7、极管的工作电流一般为520mA,按课设板工作电压5V计算,LED工作压降为3V、工作电流10mA算,则限流电阻的取值为:R=(5-3)V/10mA=200。四、电路原理分析一 . 显示原理1 . 模拟表盘的显示电路原理图见附录的原理图。P0口的低4位作为4-16线74LS154译码器的译码地址输入端,译码器的前12个输出端对应接LED灯。小时显示:用12个LED灯分别对应小时数。分钟显示:在SW4长按情况下,采用动态显示,长亮的灯表示分钟的十位数值,闪烁或微亮的灯表示分钟的个位数值。秒数显示:在SW5长按情况下,采用动态显示,长亮的灯表示秒数的十位数值,移动的灯表示秒数的个位数值。(表1)74

8、LS154真值表输 入输 出OE1'+OE2'DCBAY0'Y1'Y2'Y3'Y4'Y5'Y6'Y7'Y8'Y9'Y10'Y11'1xxxx111111111111000000111111111110000110111111111100010110111111111000111110111111110010011110111111100101111110111111001101111110111110011111111110111101000111111110111010011111

9、1111101101010111111111101010111111111111102 . 系统相关的辅助指示方法 数码管在显示“_”时表示进入时间校对,定时器调整状态;显示“=”时表示进入闹铃设定调整状态;显示“三”时表示进入闹铃响铃状态;显示“.”时表示非以上状态。 分钟指示LED灯(MINUTE),其工作方式为:亮1分钟>暗1分钟>亮1分钟。 秒指示LED灯(SECOND),其工作方式为:亮1秒钟>暗1秒钟>亮1秒钟。二 . 键盘及读数原理1 . 独立式按键的使用:图二为按键与单片机的连接图。机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触

10、点机械抖动,然后其触点才稳定下来。其抖动过程如图二所示,抖动时间的长短与开关的机械特性有关,一般为510ms。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。本课设中采用软件去抖方式。按键与单片机连接图按键被按下时电压的变化按键去抖开始按键按下?延时10ms按键还按下?按键释放了?进行相应操作按键去抖结束NoYesYesYesNoNo键盘去抖流程框图图二-键盘相关原理图2 . 系统的功能选择由 SW2、SW3、SW4、SW5 完成。

11、如下表-1所示(表-2)按键SW2/P0.4SW3/P0.5SW4/P0.6SW5/0.7第一功能时钟使能端闹铃使能端长按时显示分钟数长按时显示秒数第二功能小时加1键分钟十位加1键分钟个位加1键时间设置确认键相关说明:在按键第一功能下SW2为时间校对,定时器调整功能键,按SW2进入时钟时间调整状态,之后启用按键的第二功能对时间进行调整;SW3为闹铃设定功能键,按SW3进入闹铃时间调整状态,之后启用按键的第二功能对时间进行调整。长按SW4时选择“分”显示方式,长按SW5时选择“秒”显示方式。在按键第二功能下SW2按一次小时计数器加1,SW3按一次分钟的十位计数器加1,SW4按一次分钟个位计数器加

12、1,SW5作为本轮时间设置确认键,按下则返回主程序。三 . 程序设计思想1 . 整体简单思路本次课设的课题既然是关于时钟,那么首先想到的定是要保证时间的准确性,因此肯定首选定时器作为时间的其准。再考虑到时钟时间的独立性,宜用中断进行计时、分、秒的累加计数。2 . 时钟时间累加原则为了保证时钟时间的独立性、实时性,都在中断中对时间进行处理。每够50ms就进入中断服务程序,50ms累加器加1,够20个50ms则50ms累加器清零、1s累加器加1。够60s则秒计数器清零、分计数器加1。够60Min则分计数器清零、小时累加器加1。够12个小时则小时累加器清零。3 . 整点报时和闹铃工作方式蜂鸣器对不同

13、的整点数时鸣对应的声数。当到达定时时间点时,蜂鸣器响60s作为闹铃方式。若整点报时与定时响铃重叠,处理方式为:整点报时具有优先权。4 . 实时时间校准,定时设置为保证系统时间校准,定时设置的快速、准确、稳定,在主程序中采用不断的对键盘进行扫描检测,对不同的触发响应不同的功能。 按SW2?长按SW5?开始初始化(I/O口、定时器、中断设置)时钟时间设置按SW3?闹铃时间设置闹铃时间到?响铃1min整点时间到?整点报时长按SW4?“分钟”显示方式“秒数”显示方式YesYesYesYesYesYesNoNoNoNoNoNo图三-主程序流程图中断开始T0定时器重新赋初值50ms个数加150ms个数够2

14、0?50ms个数计数器清零秒计数器加1秒计数器够60?秒计数器清零分计数器加1分计数器够60?分计数器清零小时计数器加1小时计数器够12?小时计数器清零整点报时使能端置1中断返回YesNoYesYesYesNoNoNo图四-中断服务程序流程图键盘子程序按SW2?小时计数器加1数码管显示相应值按SW3?分钟的十位计数器加1数码管显示相应值按SW4?分钟的个位计数器加1数码管显示相应值按SW5?键盘返回YesYesYesYesNoNoNoNo图五-键盘处理子程序流程图二 . 软件调试首先用PROTUES仿真软件来对程序进行验证,大概确定数据结构、算法分析的正确性。图六-用PROTUES进行仿真的简

15、易原理图三 . 软硬件联合调试1 . 为了达到动态显示分钟、秒数,必须尝试给定不同的延时时间来保证,十位数字的长亮,个位数字的闪烁状态来区别。2 . 要验证系统的时间逻辑性,就要运行整体程序,在关键点试验操作的实际工作方式,是否为预期的效果。六、总结收获、体会一 . 方案、电路优缺点1 . 基于单片机的时钟不管是模拟时钟,还是数字时钟,本质上都是数字时钟,只是在显示方式上有区别。数字时钟采用的是数码管或液晶的直接数字显示方式。模拟时钟采用的是发光二极管模拟机械式的时钟表盘来达到模拟时钟的效果。如此他们的本质上都是数字时钟。2. . 本系统采用定时器中断方式来确定时间,这样能保证时钟时间的独立性

16、、实时性,与主函数具体操作占用的时间无关。3 . 本系统能随时进行时钟时间,闹铃时间的设定。能进行时、分、秒的显示。也具有整点报时,开启或关闭响铃等功能。实时性,稳定性高。七、参考文献【1】 白驹珩, 雷晓平编著. 单片计算机及其应用(第二版). 北京:高等教育出版社;成都:电子科技大学出版社,2005.9【2】 康华光等编著. 电子技术基础(第五版). 北京:高等教育出版社,2006.1 【3】 赵建领,薛圆圆等编著. 51单片机开发与应用技术详解. 北京:电子工业出版社,2009.1【4】 吴晓苏, 张中明编著. 单片机原理与接口技术. 北京:人民邮电出版社,2009【5】 汤竞南,沈国琴

17、编著. 51单片机c语言开发与实例. 北京:中国电力出版社,2008.2【6】 阎石编著. 数字电子技术基础(第五版). 北京:高等教育出版社2006.5八、附录1. 程序/*-作者:黄俞舒*/*-0700820119-*/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit key2=P04; /定义"小时"按钮sbit key3=P05; /定义"分钟-10"按钮sbit key4=P06; /定义"分钟-1"按钮sbit k

18、ey5=P07; /定义"确认"按钮sbit bell=P12;sbit min=P13;sbit sec=P14;uchar hour,minute,second; /实时时间变量uchar Rhour,Rminute; /闹铃时间变量uchar shi,fen10,fen1; /中间时间变量uchar Misec,k;bit BellEN; /整点闹铃使能-软件unsigned char code table= /共阴极数码管编码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0

19、x79,0x71 ;void keyexam(); void delay(uint z); /声明延时子函数void init(); /声明初始化函数void main() init(); /调用初始化子程序while(1)if(key2=0) delay(10); if(key2=0) while(!key2); /-时钟设置P3=0x08;keyexam();hour=shi;P0=hour|0xf0;minute=fen10*10+fen1;shi=0;fen10=0;fen1=0;elseP3=0x80;if(key3=0) delay(10); if(key3=0) while(!k

20、ey3); /-闹铃时间设置P3=0x48;keyexam();Rhour=shi;Rminute=fen10*10+fen1;shi=0;fen10=0;fen1=0;if(Rhour=hour && Rminute=minute)/-闹铃报时 bell=1;else bell=0; if(BellEN=1) /-整点报时P3=0x49;k=hour;if (k=0)k=12;for(;k>0;k-)bell=1;delay(700);bell=0;delay(700);BellEN=0;while(!key4) /-分-显示方式P0=(minute/10)|0xf0;

21、delay(50);P0=(minute%10)|0xf0;delay(5);while(!key5) /-秒-显示方式P0=(second/10)|0xf0;delay(8);P0=(second%10)|0xf0;delay(8);P0=hour|0xf0; /返回-小时-显示方式void delay(uint z) /延时子函数uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void init() /初始化子程序hour=0;minute=0;second=0;Rhour=0;Rminute=0;shi=0;fen10=0;fen1=0;M

22、isec=0;k=0; BellEN=0;P0=0xff;P3=0x00;bell=0;sec=0;min=0;TMOD=0x01; /使用定时器T0的方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; /定时50ms中断一次EA=1; /中断总允许ET0=1; /允许定时器T0中断TR0=1; /启动定时器开始工作void timer0() interrupt 1TH0=(65536-50000)/256; /重新赋初值TL0=(65536-50000)%256;Misec+; /中断一次50ms计数器的值加1if(Misec>=20) /中

23、断20次后,定时时间为20*50ms=1000ms=1sMisec=0;second+; /秒second的值加1sec=sec; / *取反*if(second>=60) /秒表到达60s后秒计数器清零second=0;minute+;min=min; /*取反*BellEN=0;if(minute>=60) /秒表到达60分钟后分计数器清零minute=0;hour+;if(hour>=12) /秒表到达12小时后小时计数器清零hour=0;P0=hour|0xf0;BellEN=1;void keyexam() /键盘检测子函数while(1) if(key2=0) /检测"小时"按钮是否按下delay(10); /延时去抖动if(key2=0)

温馨提示

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

评论

0/150

提交评论