LED电子钟的制作概要.docx
- 文档编号:26843658
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:23
- 大小:172.98KB
LED电子钟的制作概要.docx
《LED电子钟的制作概要.docx》由会员分享,可在线阅读,更多相关《LED电子钟的制作概要.docx(23页珍藏版)》请在冰豆网上搜索。
LED电子钟的制作概要
东北石油大学课程设计任务书
课程单片机课程设计
题目LED电子钟的制作
一、任务
以AT89C51单片机为控制核心,制作一个利用六位LED显示的智能电子钟。
二、设计要求
[1]计时显示:
秒、分、时;
[2]可以利用独立键盘,完成电子钟的调时、预约定时等基本功能;
[3]计时精度:
误差≤1秒/月(具有微调设置);
[4]基本电路包括:
单片机最小系统、LED显示电路、蜂鸣器电路、独立键盘
电路等;
[5]提交设计报告、电路图及程序源码。
三、参考资料
[1]吴杰.基于ISP技术的电子公告牌系统[J].科技资讯2008.NO.14:
83-87.
[2]万光毅.单片机实验与实践教程[M].北京:
北京航空航天大学出版社.2005.1.
[3]张毅刚.单片机原理及应用[M].北京:
高等教育出版社.2003:
160-190.
[4]马忠梅.单片机的C语言应用程序设计[M].北京:
北京航空航天大学出版
社.2006
[5]周润景.基于Proteus的电路与单片机仿真系统设计与仿真[M].北京:
北京航
空航天大学出版社.2005.
目录
第1章绪论1
1.1LED数码管概述1
1.2LED数码管的驱动方式1
1.3本设计任务2
第2章总体方案论证与设计3
2.1数字时钟方案3
2.2LED显示方案3
2.3总体硬件组成框图4
第3章系统硬件设计5
3.1LED显示模块的硬件设计5
3.2蜂鸣器电路设计6
3.3独立键盘模块的设计6
第4章系统的软件设计7
4.1程序设计7
第5章系统调试与测试结果分析8
5.1使用的电路器件8
5.2系统调试8
5.3测试结果9
结论10
参考文献11
附录1程序12
附录2仿真效果图14
第1章绪论
LED数码管,实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
当数码管特定的段加上电压后,这些特定的段就会发亮。
LED数码管以发光二极管作为发光单元,颜色有单红,黄,蓝,绿,白,七彩效果,它属于一种照明装饰、亮化灯具。
主要用于楼体墙面,广告招牌、高档的DISCO、酒吧、夜总会、会所的门头广告牌等方面[1]。
1.1LED数码管概述
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管。
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮[2]。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
1.2LED数码管的驱动方式
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
1.2.1静态显示驱动
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
1.2.2动态显示驱动
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动[3]。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
1.3本设计任务
数码管是一类显示屏通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
由于它的价格便宜、使用简单。
在电器,特别是家电领域应用极为广泛,空调、热水器、冰箱等等。
绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
本研究即以AT89C51单片机为控制核心,制作一个利用六位LED显示的智能电子钟。
第2章总体方案论证与设计
本系统采用单片机AT89C51为LED电子钟的控制核心,系统主要包括单片机最小系统、LED显示电路、蜂鸣器电路、独立键盘电路等。
下面对电路的设计逐一进行论证比较。
2.1数字时钟方案
数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:
本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:
本方案完全用软件实现数字时钟。
原理为:
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作[4]。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.2LED显示方案
方案一:
静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:
动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁[5]。
显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
比较以上两种方案,系统设计中采用方案二。
2.3总体硬件组成框图
图2-1总体硬件组成框图
系统框图如图2-1所示,系统主要由三大模块组成即LED显示模块、蜂鸣器模块、独立键盘模块。
第3章系统硬件设计
为使该模块化LED电子钟控制系统具有更加方便和灵活性,我们对系统的硬件做了精心设计。
硬件电路包括LED显示模块、蜂鸣器模块、独立键盘模块等三大模块。
3.1LED显示模块的硬件设计
LED显示模块是LED电子钟设计的关键部分,显示电路设计的好坏直接关系到时间显示、定时、秒表等重要问题。
本次设计中LED的显示是通过三极管和六位数码管显示实现的。
三极管最基本的作用是放大作用,它可以把微弱的电信号变成一定强度的信号,当三极管的基极上加一个微小的电流时,在集电极上可以得到一个是注入电流β倍的电流,即集电极电流[6]。
集电极电流随基极电流的变化而变化,并且基极电流很小的变化可以引起集电极电流很大的变化,这就是三极管的放大作用[7]。
NPN三极管管脚图如图3-1所示:
图3-1NPN三极管管脚图
本实验中,LED的数据输入端口接到单片机89C51的P0口,使用P2.0~P2.5分别通过一个三极管来控制数码管的1~6位[8]。
LED显示电路原理如图3-2所示:
图3-2LED显示电路原理图
3.2蜂鸣器电路设计
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型[9]。
蜂鸣器电路的设计原理图如图3-3所示:
图3-3蜂鸣器电路设计原理图
由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的(但AVR可以驱动小功率蜂鸣器),所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了[10]。
3.3独立键盘模块的设计
该部分电路原理图如图3-4所示:
图3-4独立键盘原理图
如图3-4所示,按键的一端连接到电源地,另一端直接连到51单片机的I/O引脚上。
本实验中独立按键接于P3口,所以无需外接上拉电阻[11]。
当按键被按下时,单片机的I/O引脚直接连接到电源地,其上被加了一个低电平。
第4章系统的软件设计
软件是该LED电子钟控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。
4.1程序设计
本系统中下位机(单片机89C51)的主要功能就是实现LED电子钟计时显示、调时、预约定时等功能。
其程序流程如图4-1所示:
系统初始化
LED显示及处理
Y
N
NNNN
定分
YYYY
定时
调分
调时
中断初始化
N
上电显示120000
Y
显示秒表
图4-1主程序流程图
第5章系统调试与测试结果分析
5.1使用的电路器件
表5-1使用的电路器件
器件名称
说明
数量
AT89C51
51单片机
1
RES
通用电阻
9
CAP
电容
2
CAP-ELEC
极性电容
1
SW-SPST
单置开关
3
CRYSTAL
晶体
1
BUTTON
独立按键
2
7SEG-MPX6-CA
六位七段码共阳极数码管
1
SPEAKER
蜂鸣器
1
RSPACK-8
上拉排阻
1
NPN
三极管
7
5.2系统调试
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:
LED显示的调试,独立键盘的调试,蜂鸣器模块的调试等,最后将各模块组合后进行整体测试。
5.2.1硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
5.2.2软件调试
软件调试采用单片机仿真器Proteus及KeilC,将编好的程序进行调试,主要是检查语法错误。
5.2.3硬件软件联调
将调试好的硬件和软件进行联调,主要调试系统的实现功能。
5.3测试结果
此次系统设计结果较好,LED电子钟能很好的显示信息。
实现了调时、预约定时、秒表的功能。
结论
本系统是以AT89C51单片机为核心,使用定时器与软件结合、动态扫描技术,利用人眼视觉暂留现象实现时间显示的LED数码管显示。
系统总体电路由最小系统电路,LED显示电路,独立键盘电路和蜂鸣器电路构成。
LED显示电路由NPN型三极管进行电流放大实现单片机数据传输,完成将数模向外部数模数组的传递过程。
通过软件完成对LED数码管显示的驱动,实现数模信息于LED显示上亮灭的转变过程。
其中外部中断0和外部中断1实现了在调时与预约定时时对时位和分位的调整。
在最初的软硬件的仿真调试中,虽然实现了LED电子钟时间的显示,形式为“时时分分秒秒”。
但调整时和分的时候,出现按一次按键就加4或5的状况,经过查找资料,发现是按键的抖动引起的。
于是在每次判断后加了两次延时,实现了加一的功能。
之后,经过多次电路图调整与程序修改,最终完整实现了本次课程设计LED电子钟的基本功能:
LED时间显示、调时、预约定时、秒表。
其中,预约定时时显示为“时时分分”,秒表显示为“0000秒秒”。
本次设计中LED数码管所展现的功能较为简单,但在实际应用中,功能不仅仅于此,通过对程序的稍做修改,可以实现年月日与时分秒的切换显示,以及定时报点等,并且都可以和上位机进行通信实现时间的更新。
参考文献
[1]吴杰.基于ISP技术的电子公告牌系统[J].科技资讯2008.NO.14:
83-87.
[2]万光毅.单片机实验与实践教程[M].北京:
北京航空航天大学出版社.2005.1.
[3]张毅刚.单片机原理及应用[M].北京:
高等教育出版社.2003:
160-190.
[4]马忠梅.单片机的C语言应用程序设计[M].北京:
北京航空航天大学出版
社.2006
[5]周润景.基于Proteus的电路与单片机仿真系统设计与仿真[M].北京:
北京航
空航天大学出版社.2005.
[6]金炯泰,金奎焕.如何使用KEIL8051C编译器[M].北京:
北京航空航天大学出
版社.2002.
[7]于海生.微型计算机控制技术[M].北京:
清华大学出版社.1999.6.
[8]孙涵芳.MCS-51系列单片机原理及应用[M].北京:
北京航空航天大学出版
社.1996.4.
[9]杨欣等.电子设计从零开始[M].北京:
清华大学出版社.2005.10.
[10]夏路易,石宗义.电路原理图与电路设计教程Protel99SE[M].北京:
北京
希望电子出版社.2002.
[11]王毓银.数字电路逻辑设计[M].北京:
高等教育出版社.2004.2.
附录1程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitsw1=P3^1;
sbitk1=P3^2;
sbitk2=P3^3;
sbitsw2=P3^6;
sbitsw3=P3^7;
sbitFMQ=P1^7;
uchartab[]={0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
uchardis_buff[6];
ucharsec100,sec101,sec,min,hour;
ucharsetm,seth,sets;
voiddelay(uintk)
{uintm,n;
for(m=0;m {for(n=0;n<120;n++);} } voiddisplay(void) {P2=0x10; P0=tab[dis_buff[1]]; delay (2); P2=0x08; P0=tab[dis_buff[2]]; delay (2); P2=0x04; P0=tab[dis_buff[3]]; delay (2); P2=0x02; P0=tab[dis_buff[4]]; delay (2); if(sw2==0)P2=0x00; elseP2=0x20; P0=tab[dis_buff[0]]; delay (2); if(sw2==0)P2=0x00; elseP2=0x01; P0=tab[dis_buff[5]]; delay (2); } voiddisp_data(void) {if(sw2==0) {dis_buff[4]=seth/10; dis_buff[3]=seth%10; dis_buff[2]=setm/10; dis_buff[1]=setm%10;} elseif(sw2! =0&sw1==0) {dis_buff[5]=0; dis_buff[4]=0; dis_buff[3]=0; dis_buff[2]=0; dis_buff[1]=sets/10; dis_buff[0]=sets%10;} else {dis_buff[5]=hour/10; dis_buff[4]=hour%10; dis_buff[3]=min/10; dis_buff[2]=min%10; dis_buff[1]=sec/10; dis_buff[0]=sec%10;} } voidinc_hour(void) {hour++; if(hour>23){hour=0;} } voidinc_min(void) {min++; if(min>59) {min=0;inc_hour();} } voidinc_sec(void) {sec++; if(sec>59) {sec=0;inc_min();} } voidinc_seth(void) {if(seth>23)seth=0;} voidinc_setm(void) {if(setm>59)setm=0;} voidinc_sets(void) {if(sw2! =0&sw1==0) {sets++; if(sets>59)sets=0;} if(sw1! =0)sets=0; } voidint0()interrupt0 {delay(100); if(sw2! =0&INT0==0) {delay(150); if(sw2! =0&INT0==0)delay(100); if(sw2! =0&INT0==0)inc_hour();} } voidint1()interrupt2 {delay(100); if(sw2! =0&INT1==0) {delay(150); if(sw2! =0&INT1==0)delay(100); if(sw2! =0&INT1==0)inc_min();} } voidset1() {delay(100); if(sw2==0&INT0==0) {delay(150); if(sw2==0&INT0==0)delay(100); if(sw2==0&INT0==0)inc_seth();} } voidset2() {delay(100); if(sw2==0&INT1==0) {delay(150); if(sw2==0&INT1==0)delay(100); if(sw2==0&INT1==0)inc_setm();} } voidtimer0()interrupt1{TH0=0xDC; TL0=0x00; sec100++;sec101++; if(sec100>=100) {sec100=0;inc_sec();} if(sec101>=100) {sec101=0;inc_sets();} } voidint_init(void) {TMOD=0x01; TH0=0xDC; TL0=0x00; TR0=1; ET0=1; EX0=1; IT0=0; EX1=1; IT1=0; EA=1;} voidFM() {if(sw3==0) {if(hour==seth&min==setm&sec==0) {FMQ=1; delay(500); FMQ=0; delay(500);}} } voidmain(void) {int_init(); P0=0xFF; P2=0x00; hour=12; min=0; sec=0; sec100=0; sec101=0; seth=0; setm=0; sets=0; FMQ==0; while (1) {disp_data();display();} } 附录2仿真效果图 东北石油大学课程设计成绩评价表 课程名称 单片机课程设计 题目名称 LED电子钟的制作 学生姓名 学号 指导教 师姓名 职称 序号 评价项目 指标 满分 评分 1 工作量、工作态度和出勤率 按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。 20 2 课程设计质量 课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。 45 3 创新 工作中有创新意识,对前人工作有一些改进或有一定应用价值。 5 4 答辩 能正确回答指导教师所提出的问题。 30 总分 评语: 指导教师: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 电子钟 制作 概要