LED电子钟制作
- 格式:docx
- 大小:37.02 KB
- 文档页数:2
LED 数码显示时钟一、实验目的 :1、地运用数字系统的设计方法进行数字系统设计。
2、能进行较复杂的数字系统设计。
3、数字钟的工作原理, 数字钟的工作流程图与原理方框图, 自顶向下的数字系统设计方法。
二、实验原理:1、数字钟的基本工作原理:数字钟以其显示时间的直观性、走时准确性而受到了人们的欢迎并很快走进了千 家万户。
作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。
数字钟的基本原理方框图如下:(1)时基T 产生电路:由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为 1Hz 的、非常稳定的计数时钟脉冲。
(2)控制逻辑电路:产生调时、调分信号及位选信号。
调时、调分信号的产生:由计数器的计数过程可知,正常计数时,当秒计数器( 60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。
现在我们把电路稍做变动:把秒计数器的进位脉冲和一个频率为2Hz 的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。
调节小时的时间也一样的实现。
(3)计数显示电路:由计数部分、数据选择器、译码器组成,是时钟的关键部分。
计数部分: 由两个 60进制计数器和一个24 进制计数器组成,其中60 进制计数器可用6 进制计数器和10 进制计数器构成;24 进制的小时计数同样可用6 进制计数器和10 进制计数器得到:当计数器计数到24 时,“2”和“4”同时进行清零,则可实现24 进制计数。
数据选择器:84输入14输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号‘—')。
1课设题目 (2)2课设任务 (2)3课设内容 (2)3.1LED电子钟的设计方案 (2)3.1.1LED电子钟的原理 (2)3.1.2芯片介绍 (2)3.1.3核心电路原理图 (4)3.1.4数码管显示原理及设计 (5)3.2汇编程序框图 (6)3.3汇编程序代码 (6)3.4单片机接线 (14)4测试与调试 (14)4.1测试过程 (14)4.2遇到的问题及解决方案 (14)5课设成果 (15)6收获和体会 (15)7参考文献 (15)1课设题目LED电子钟的制作2课设任务用89C51单片机设计制作一个以LED显示的电子钟。
要求用6个数码管显示时、分、秒;要求通过键盘输入初值,打上开关K1时允许设定时间,按下开关K1时开始运行显示时间,K2用作选择是24小时制还是12小时制。
3课设内容3.1LED电子钟的设计方案3.1.1LED电子钟的原理本设计为微机电子时钟系统,主控芯片采用89S51单片机。
配合软件延时实现时、分、秒的计时。
本系统设计采用此种软件控制方法来实现计时,通过定时器定时中断,使时间缓存单元数据加一,提供系统时间。
同时可以通过独立键盘对电子时钟开始计时,暂停计时和结束计时的控制。
单片机内的数据通过并行I/O接口输入输出。
并驱动六位LED数码管(时、分、秒分别用量为数码管显示),动态显示数据。
晶振及复位电路为单片机提供工作脉冲及复位信号。
在单片机应用系统中,键盘和显示往往需要同时使用,为节省I/O口线,可将键盘和显示电路做在一起,构成实用的键盘、显示电路。
由于该系统较为简单,无需扩展I/O口,可直接使用51芯片的引脚控制键盘和显示。
该电子时钟由89S51,独立键盘,六位数码管等构成,采用晶振电路作为驱动电路,由中断延时程序和循环程序产生一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。
而电路当中三个独立按键分别控制电子时钟的开始,暂停和结束,同时通过六位数码管显示时间。
16位LED显示电子钟设计摘要随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。
单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。
然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐。
来自英国Labcenter Electronics 公司的Proteus软件很好地诠释了利用现代EDA工具方便快捷开发单片机系统的优势。
它包括PROTEUS VSM(Virtual System Modelling)、PROTEUS PCB DESIGN 两大组成部分,在PC机上就能实现原理图电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设计与研发过程。
单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面, 其调试过程一般分为软件调试、硬件测试、系统调试3个过程。
如果采用单片机系统的虚拟仿真软件??Proteus,则不用制作具体的电路板也能够完成以上工作。
关键词: 数字电子钟 STC89C52 LED 电子钟ABSTRCTWith the rapid development of semiconductor technology, and mobile communication, network technology, multimedia technology in embedded system design application, SCM from the4,8,16bit to 32 bit, its development course has been subject to the vast majority of electronic enthusiasts attention. Single chip computer is becoming more and more powerful, the price drops ceaselessly however advantage undoubtedly become embedded system design is preferred, while MCU application fields expand also makes more people to join the ranks of the development of SCM system based on SCM technology, promote innovation and progress.However, the traditional single chip microcomputer system development in addition to the need to purchase such as emulators, programmer, oscilloscopes and other expensive electronic equipment, the development process is tedious. From the UK Labcenter Electronics Proteus software, a good interpretation of the use of modern EDA tool convenient and quick development of the advantages of SCM system. It includes the PROTEUS VSM Virtual System Modelling , PROTEUS PCB DESIGN two components, in the PC machine can realize the schematic circuit design, circuit analysis and simulation code, debug and simulation, system testing and verification as well as the formation of PCB file full embedded system design and development process.SCM system as a typical embedded system, the system design including the hardware circuit design and software programming of two aspects ofthe design, the debugging process is generally divided into software debugging and hardware testing, system testing process of 3. If the use of single-chip microcomputer system of the virtual simulation software -- Proteus, without making specific circuit board also can be done.Keywords: digital electronic clock STC89C52LED electronic clock摘要 1ABSTRCT 1第一章绪论 11.1 设计背景 11.2 设计简介 11.2.1 电子钟简介11.2.2 电子钟的应用及发展 2第二章方案对比确定 32.1 主控芯片的选择 32.1.1 ATmega8简介 32.1.2 AT89S52简介 32.1.3 STC89C52简介 42.2 时钟芯片的选择 42.2.1 DS12887简介 42.2.2 DS1302简介 52.3 显示系统的选择 62.3.1 LED优势 62.3.2 LED显示屏 62.4 系统总体方案介绍 6第三章硬件电路设计93.1 Proteus 电路图设计9 3.2 原理图设计103.3 PCB图设计 10第四章系统软件设计134.1 概述134.1.1 主程序 134.1.2 调时程序134.1.3 LED显示模组显示数字13 第五章程序设计175.1 程序预览17结论25致谢27参考文献29绪论设计背景随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。
LED显示电脑电子钟本例介绍一种用LED制作的电脑电子钟(电脑万年历)。
其制作完成装潢后的照片如下图:上图中,年、月、日及时间选用的是1.2寸共阳数码管,星期选用的是2.3寸数码管,温度选用的是0.5寸数码管,也可根据个人的爱好选用不同规格的数码管。
原理图如下图所示:上图中,CPU选用的是AT89C2051,时钟芯片选用的是Dallas公司的DS1302,温度传感器选用的是Dallas公司的数字温度传感器DS1820,显示驱动芯片选用的是德州仪器公司的TPIC6B595,也可选用与其兼容的芯片NC595或国产的AMT9595。
整个电子钟用两个键来调节时间和日期。
一个是位选键,一个是数字调节键。
按一下位选键,头两位数字开始闪动,进入设定调节状态,此时按数字调节键,当前闪动位的数字就可改变。
全部参数调节完后,五秒钟内没有任何键按下,则数字停止闪动,退出设定调节状态。
源程序清单如下(无温度显示程序):start:do;$include(reg51.dcl)declare (sclk,io,rst) bit at (0b3h) register; /* p33,p34,p35 */declare (command,data,n,temp1,num) byte;declare a(9) byte;declare ab(6) byte;declare aco(11) byte constant (0fdh,60h,0dah,0f2h,66h,0b6h,0beh,0e0h,0feh,0f6h,00h); declare week(11) byte constant (0edh,028h,0dch,7ch,39h,75h,0f5h,2ch,0fdh,7dh,00h);declare da literally 'p15',clk literally 'p16',ale literally 'p17', mk literally 'p11',sk literally 'p12';clear:procedure;sclk=0;io=0;rst=0;end clear;send1302:procedure(comm);declare (i,comm) byte;do i=0 to 7;comm=scr(comm,1);io=cy;call time(1);sclk=0;call time(1);sclk=1;end;end send1302;wbyt1:procedure(com,dat);/*字节写过程*/declare (com,dat) byte;call clear;rst=1;call send1302(com);call send1302(dat);call clear;end wbyt1;wbyt8:procedure;/*时钟多字节突发模式写过程*/declare j byte;call clear;a(7)=A(6);a(6)=a(0);rst=1;call send1302(command);do j=1 to 8;call send1302(a(j)); end;call clear;end wbyt8;RBYT1:PROCEDURE;DECLARE I BYTE;CALL CLEAR;RST=1;call send1302(0c1h);IO=1;DO I=0 TO 7;SCLK=1;SCLK=0;CY=IO;N=SCR(N,1);END;A(8)=N;CALL CLEAR;END RBYT1;send595:procedure;declare k byte;do k=0 to 7;data=scr(data,1);da=cy;clk=1;clk=0;end;end send595;send595_1:procedure;declare k byte;do k=0 to 7;data=scr(data,1);da1=cy;clk1=1;clk1=0;end;end send595_1;rb1:procedure(abc,j);DECLARE (I,j,abc) BYTE;CALL CLEAR;RST=1;call send1302(abc);IO=1;DO I=0 TO 7;SCLK=1;SCLK=0;CY=IO;N=SCR(N,1);END;ab(j)=N;ab(j)=dec(ab(j));CALL CLEAR;end rb1;rbyt6:procedure;call rb1(0f1h,0);call rb1(0f3h,1);call rb1(0f5h,2);call rb1(0f7h,3);call rb1(0f9h,4);call rb1(0fbh,5);call rb1(0fdh,6);end rbyt6;wbyt6:procedure;call wbyt1(8eh,0); /* write enable */call wbyt1(0f0h,ab(0));call wbyt1(0f2h,ab(1));call wbyt1(0f4h,ab(2));call wbyt1(0f6h,ab(3));call wbyt1(0f8h,ab(4));call wbyt1(0fah,ab(5));call wbyt1(0fch,ab(6));call wbyt1(8eh,80h); /* write disable */ end wbyt6;rbyt8:procedure;/*时钟多字节突发模式读过程*/ declare (i,j) byte;call clear;rst=1;call send1302(command);io=1;do j=1 to 8;do i=0 to 7;sclk=1;call time(1);sclk=0;cy=io;n=scr(n,1);end;a(j)=n;end;call clear;a(0)=a(6);a(6)=A(7);a(0)=a(0) and 0fh;if a(0)>6 then a(0)=0;CALL RBYT1;if (a(1)=0 and a(2)=0 and a(3)=0) thendo;do num=0 to 35;call time(250);end;temp1=1;end;if temp1=1 thendo;temp1=0;ab(4)=ab(4)+1;if ab(4)>99h thendo;ab(4)=0;ab(5)=ab(5)+1;if ab(5)>99h then ab(5)=0;end;call wbyt6;end;end rbyt8;display:procedure; /*jieya,yima,fasong*/declare (i,n,m) byte;n=a(0) and 0fh; /* send week */data=week(n);call send595;n=a(4); /* send date */n=n and 0fh;data=aco(n);call send595;n=a(4);n=shr(n,4);data=aco(n);call send595;do i=1 to 3; /* send second,minute,hour */n=a(i);n=n and 0fh;data=aco(n);call send595;n=a(i);n=shr(n,4);data=aco(n);call send595;end;do i=5 to 6; /* send month,year */n=a(i);n=n and 0fh;data=aco(n);call send595;n=a(i);n=shr(n,4);data=aco(n);call send595;end;n=a(8); /* send 19 or 20 */n=n and 0fh;data=aco(n);call send595;n=a(8);n=shr(n,4);data=aco(n);call send595;do m=0 to 5;n=ab(m);n=n and 0fh;data=aco(n);call send595_1;n=ab(m);n=shr(n,4);data=aco(n);call send595_1;end;ale=0;ale=1;end display;beginset:procedure;a(0)=06h;a(1)=58h;a(2)=59h;a(3)=23h;a(4)=30h;a(5)=06h;a(6)=97h;a(7)=00;a(8)=19h; /* set date/time (1997,7,1,8:00:00,week 3) */call wbyt1(8eh,0); /* write enable*/call wbyt1(80h,00h);/* start colock */call wbyt1(0beh,0abh);/*两个二极管与8K电阻串联充电*/command=0beh; /* write colock/date */call wbyt8;call wbyt1(0c0h,a(8));call wbyt1(8eh,80h); /* set write protect bit */end beginset;key:procedure;declare (i,time1,k1,tem) byte;call time(100);k1=7;time1=30;if mk=0 thendo;do while time1>0;week: if k1=0 thendo;do i=0 to 5;/* call hz(a(0)); */end;do i=0 to 3;/* call hz0; */end;end;tem=a(k1);if k1=7 then tem=a(8);a(k1)=0aah;if k1=7 then a(8)=0aah;call display;call time(254);call time (254);a(k1)=tem;if k1=7 then a(8)=tem;call display;call time(254);call time(254);call time(254);time1=time1-1;if mk=0 thendo;call time(100); /*MOD KEY PROCESS*/TIME1=30;IF MK=0 THENDO;k1=k1-1;DO WHILE K1=0FFH;K1=7;END;END;end;IF SK=0 THENDO;CALL TIME(100); /*SET KEY PROCESS*/TIME1=30;IF SK=0 THENDO;tem=tem+1;tem=dec(tem);DO CASE K1;DO WHILE tem=7;/*week*/tem=0;END;DO WHILE tem=60H;/*scond*/ tem=0;END;DO WHILE tem=60H;/*minute*/tem=0;END;DO WHILE tem=24H;/*hour*/tem=0;END;DO WHILE tem=32H;/*date*/tem=1;END;DO WHILE tem=13H;/*month*/tem=1;END;DO while tem=100h; /* YEAR */tem=00;END;DO WHILE TEM>=21H;tem=19H;END;END;A(K1)=tem;if k1=7 then a(8)=tem;END;END;END;END;end key;main$program:mk=1;sk=1;temp1=0;num=0;p32=1;if sk=0 then call beginset;clk=0;da=0;ale=1;loop:do while mk=1 ;if a(0)>6 then a(0)=0;command=0bfh;call rbyt8;call display;do while mk=0;call key;call wbyt1(8eh,0);command=0beh;call wbyt8;call wbyt1(0C0H,A(8));call wbyt1(8eh,80h);end;end;goto loop;end start;。
目录摘要……………………………………………………………………………第一章绪论……………………………………………………………………1.1设计的目的和意义………………………………………………………1.2设计工程的发展情况简介………………………………………………第二章电路的设计(原理图)………………………………………………2.1电路设计分析……………………………………………………………2.2主要元器件简介…………………………………………………………2.3电路原理图………………………………………………………………第三章 PCB设计…………………………………………………………………3.1电路的PCB…………………………………………………………………3.2元器件的购买及焊接………………………………………………………第四章程序分析…………………………………………………………………4.1定时器误差分析……………………………………………………………4.2按键消除抖动的设计分析…………………………………………………4.3主要程序分析………………………………………………………………结束语……………………………………………………………………………参考文献…………………………………………………………………………LED电子时钟的设计与制作摘要本次设计中的LED数码管电子时钟电路采用24小时制记时方式。
本次设计采用AT89C51单片机的扩展芯片和6个三极管做驱动,由六块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。
设计采用AT89C51单片机,配备11.0592MHz晶振,复位电路为上电复位。
采用软件译码动态显示,考虑直接用单片机I/O口作为位选时可能驱动功率不够,可采用三极管作驱动共阳极数码管显示。
6位8段LED数码管作正常、调时和节电显示,时间按时分秒排列,时钟误差:24小时误差3~5秒,并且在按键的作用下可以进行调时,调分,复位功能。
海南大学毕业论文(设计)题目:基于STC89C52单片机地LED显示电子钟地制作学号:姓名:年级: 2012级学院:学部:工学部专业:电子科学与技术专业指导教师:完成日期: 2014 年 6 月 30 日摘要随着人类科技文明地发展,人们对于时钟地要求在不断地提高.时钟已不仅仅被看成一种用来显示时间地工具,在很多实际应用中它还需要能够实现更多其它地功能.高精度、多功能、低功耗,是现代时钟发展地趋势.在这种趋势下,时钟地数字化、多功能化已经成为现代时钟生产研究地主导设计方向.本文正是基于这种设计方向,以单片机为控制核心,设计制作一个符合指标要求地多功能数字时钟.本设计基于单片机技术原理,以单片机芯片STC89C52作为核心控制器,通过硬件电路地制作以及软件程序地编制,设计制作出一个电子时钟系统.该时钟系统主要由电源模块、晶振电路模块、复位电路模块、LED点阵显示模块、以及键盘控制模块组成.本设计地电子时钟能够准确显示时间(显示格式为时时:12:30:23:59:50,刚上电时为,当显示到12:30:23:59:59,即有重新:01:01:00:00:00开始显示),可随时进行时间调整.设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高.同时,该时钟系统还具有功耗小、成本低地特点,具有很强地实用性.关键词:单片机;LED点阵;数字时钟AbstractWith the development of human civilization, people to the requirement of clock in constant increase. The clock is not only to be seen as a kind of tool used to display the time, in many practical applications and it needs to be able to achieve more other functions. High accuracy, multi-function, low power consumption, it is the trend of the development of the modern clock. Under this trend, digital clock, muti_function change has become a dominant design of modern clock production research direction. This article is based on the design direction, with the single chip processor as the core, design a meet the requirements of the indicators of the multi-function digital clock. This design principle based on single chip microcomputer technology, chip STC89C52 MCU as the core controller, through the production of hardware circuit and software program compiled, design to produce an electronic clock system. The clock system mainly consists of a power supply module, crystals circuit module, reset circuit module, LED dot matrixdisplay module, and the composition of the keyboard control module. The design of electronic clock can accurately show time (display format for all the time: 12:30:23:59:50, just when the electricity is, when the display to 12:30:23:59:59, namely has again: 01:01:00:00:00 to display), can be adjusted at any time to time. Design with hardware and software into the guiding ideology, give full play to the function of SCM, most of the functionality through software programming to implement the circuit is simple and clear, high system stability. At the same time, the clock system also has the characteristics of low consumption, low cost, strong practicability.Key words: single chip microcomputer。
自制DS1302的电子钟自制LED电子钟在很多电子报刊杂志上都可以见到,但大多数在断电后都要重新设置时间等参数,给使用带来很多不便。
也有用后备电池作为备用电源的,但往往体积较大。
本文介绍的LED电子钟克服了以往的弊端,而且采用了家电通用的红外遥控器进行控制,方便使用。
有一路闹铃输出,可以通过遥控器设置闹铃时间及允许与否。
电子钟的正面电子钟的背面一.工作原理DS1302为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
采用普通32768Hz晶振。
A T89C2051作为主控芯片,一是对接收到的红外遥控编码进行判断识别,并执行相应的处理;第二就是定期的读取时钟芯片DS1302中的时间并把小时和肥以示在4位LED中;第三就是对设置的闹铃时间与实时时间进行比较,如果时间相同且闹铃允许,那么蜂鸣器就会以1秒的周期鸣响一分钟,提醒使用者。
如果要停止鸣闹,只要按遥控器相应键就可以关闭闹铃。
闹铃时间保存在DS1302自带的RAM中,不需要单独的EEPROM。
二.硬件电路图一为电子钟的原理图,IC2为DS1302,电子爱好者可以向MAXIM公司索取免费样品。
Y2为32768 Hz石英晶振,可以用普通电子表里的。
IC3为三脚的塑封一体化红外接收头。
LED1-4 为高亮度共阳数码管。
89C2051所用的晶振Y1如果没有10MHz也可以用其他12M以内的代替,只要修改程序中YS1和YS2的延时参数,让其保持延时长度不变就行。
调整R2可以改变数码管亮度。
P1口接数码管的八字段。
数码管左两位显示小时,右两位显示分,当显示的是闹铃时间时闪动。
第二位和第三位的小数点作为秒闪动,注意第三位数码管按图一布好印制版后安装时要旋转180°,以便让时和分之间出现“:”,最后一位小数点作为闹铃开关标志,亮表示闹铃开启。
蜂鸣器B2采用小型自带音源的。
要特别说明的是备用电源B1,可以用电池或者超级电容(10万uF以上)。
[DIY]二十四小时的感动(现代版) 自制LED点阵电子时钟十六楼已经上传全部电路图和PCB板图文件,以及全套C语言源代码,包括工程文件。
十八年前的我,每次路过学校门卫室的时候,总要驻留一刻,瞄一眼墙上那个会发着红光的电子钟,那时,我一直不知道它是怎么做到的...到现今,这个会发光的可以显示数字的,名叫LED数码管的东东,遍地皆是......算是圆自己的一个小小梦想吧,自己动手做一个点阵LED电子时钟。
先来一组靓照:最喜欢这个夜晚朦胧的感觉......并且亮度可以根据环境光线的强弱自动调节,就像我们的液晶电视,或者汽车仪表盘的背景灯光一样。
放在客厅,让每天每分每秒,都感动着......=============================================================================== ==制作这个点阵LED电子钟,一共使用了30个5x7方形点阵的LED点阵模块。
采用的是我比较熟悉的C8051F系列的MCU,51内核,但CPU速度能到50M。
时钟芯片当然采用的是较常用的DS1302,要想准,晶振是问题。
所以千方百计找精度高的32.768kHz晶体。
后来功夫不负有心人,弄到了几颗精度在±5ppm的西铁城原装晶体。
并且安装了一颗备份锂电池的安装座,掉电情况下时钟一样会接着走,不用重新对时。
LED店镇模块可以显示三行,每行10个字符。
按照我的规划,要可以同时显示日期、时间、星期内容。
注意,是方形点阵哦,比我们平时视觉疲劳的圆形点阵感觉要好看很多。
并且还集成了高精度温度传感器18B20,也是大家最常用的一款1WIRE操作方式的温度传感器,可以实时显示当前环境温度。
但是使用18B20要注意,最好把管脚接长一点,避免电路板附近元器件发热后通过管脚将传感器的温度拉高,那样就不准啦。
由于这个电路板板面尺寸很大,有很多利用的价值,所以我在上面还集成了SIEMENS 的GSM模块安装位置和接口,以后可以基于这个模块,显示SMS等等信息或者短信控制等。
一种带有LED照明装置的智能电子闹钟的制作方法引言随着科技的进步,智能电子设备在我们的生活中变得越来越重要。
本文介绍了一种制作带有LED照明装置的智能电子闹钟的方法。
该闹钟不仅具有基本的闹钟功能,还可以通过LED灯提供照明,并根据用户的需求进行调节。
材料准备在开始制作之前,我们需要准备以下材料:1.Arduino Nano开发板2.DS3231实时时钟模块3.16x2 LCD显示屏4.4位7段数码管5.蜂鸣器6.电位器7.LED灯带8.面包板和杜邦线9.电阻和电容等常用元件10.电池和电池盒(可选)硬件连接1.将Arduino Nano与DS3231时钟模块连接。
使用杜邦线将SCL引脚连接到A5引脚,SDA引脚连接到A4引脚。
2.连接16x2 LCD显示屏。
使用杜邦线将VCC引脚连接到5V引脚,GND引脚连接到GND引脚,SCL引脚连接到A5引脚,SDA引脚连接到A4引脚。
3.连接4位7段数码管。
连接4个数码管的公共引脚到Arduino Nano的引脚6、7、8和9上,连接4个数码管的段引脚到Arduino Nano的引脚2至5上。
4.连接蜂鸣器。
连接一端到Arduino Nano的GND引脚,另一端连接到数字引脚10。
5.连接LED灯带。
连接LED灯带的VCC引脚到Arduino Nano的5V引脚,GND引脚到GND引脚。
软件编程在制作电子闹钟时,我们需要编写一些代码来控制硬件和实现闹钟功能。
首先,我们需要包含所需的库文件。
在Arduino IDE中,我们可以包含Wire.h库来操作DS3231实时时钟模块,LiquidCrystal_I2C.h库来操作LCD显示屏,以及LedControl.h库来操作数码管。
接下来,我们需要定义一些变量。
我们可以设置闹钟的时间、日期和闹钟状态等变量。
此外,我们还可以定义灯光亮度的变量,以便后续调节。
然后,我们需要设置Arduino板的引脚模式。
我们可以将数码管的引脚设置为输出,以及LCD显示屏的地址。
在网上看到不少老外做的各种旋转LED显示屏,非常COOL,我也动手用洞洞板试做了一个类似的显示屏,结果感觉还不错。
于是再接再励继续努力,将作品进一步改进,完善后制成如今这个样子。
由于刚学51单片机,加上制作电路板软件也是从零开始,的确花了我不少的时间和精力。
不过也就是在这艰难的独立制作中,真正学到了不少实在的东西。
本项目的关键是如何解决高速旋转的电路板如何供电,如何调时的问题。
我采用电机电刷的原理,将旋转轴钻空,通过一只插头将电源的从反面引到前面的电路板上,而这个旋转的插头又与固定在背板上的两个铜片接触的。
调时的问题有些困难,一是让电路板在旋转前与PC机相接,由电脑传送调时数据,这虽然可行但不方便。
还有就是用遥控方法,但此方案在调试方面有很大的困难。
显示方式上,我采用平衡式的两排LED,这除了在旋转时能较好的保持平衡外,主要能利用两边交替显示方式,比单排要快一倍。
本装置不仅是一个时钟,它还可以动态显示汉字及图案,这就看如何发挥了。
其具体制作过程如下:一。
旋转电机的制作从制作成本与方便考虑,选用旧电脑用的大软驱上的直流无刷电机,只是对局部进行改造。
就是这种古董软驱软驱上的直流无刷电机拆开后的电机仔细拆开直流电机,将带圆盘的铝轴从中开孔,让它刚好能插入一个插头。
将旋转轴加工成这样装配好以后按拆开时的顺序,反序将轴安装直流电机上。
电机装配完成后用两片铜片做的电刷电刷装好后的侧面图将电路板上较突出的元件改焊在反面,电机的电源接法。
从电路板标注的符号看,“+”为电源正,“G”为电源负,“C”与“M”端分别与电源正相连匀可使电机运转将一张旧唱片按电机座的位置开孔,而定位用的挡光板应根据电路板上感光组件的位置确定。
二。
电路板的制作本制作品用51单片机控制,具体电原理图如下:用Protel 99设计制作了电路板。
最后得到完成的作品。
遥控器用的是松下车载机的,只用了其中的六个键。
三。
软件编程因学的是C51(不懂汇编)这里只提供C语言源程序。
LED数码管电子钟功能特色★声控功能(通过声音开启屏幕显示与延时关闭屏幕显示)------声控延时可调节范围:1秒~99秒★红外遥控功能------通过遥控器可以设置与控制设备★亮度调节功能------显示屏具有6档亮度调节★照明灯------LED照明灯,可以通过遥控开启与关闭★贪睡响闹功能------贪睡功能启动后,每隔5分钟闹声被重新开启,最多重新开启3次★星期闹钟功能------可以单独设置一周中每天的闹钟功能是否开启★显示模式功能------具有6种显示模式可选,如23:00~6:00之间把亮度切换到最暗或关闭显示配置与功耗●微控制器:STC89C52RC●晶振频率:12MHZ●电源电压:DC-12V●功耗:显示关闭:0.15W (LED数码管显示关闭,LED照明灯关闭,响闹BiBi声关闭)正常显示:1.5W (LED数码管显示开启,且亮度调到最亮,LED照明灯关闭,响闹BiBi声关闭)最大功率:3W (LED数码管的所有段都点亮,且亮度调到最亮,LED照明灯开启,响闹BiBi声开启)LED照明灯功率:350mwD:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM; LED数码管电子钟汇编程序; (CPU 8052,使用12MHZ晶振);*********************************************************************************************;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;*********************************************************************************************;申明8052增加的定时器2的特殊功能寄存器的地址T2CON DATA 0C8H;定时器2控制寄存器T H2 DATA 0CDH;定时器2高字节T L2 DATA 0CCH;定时器2低字节R CAP2H DATA 0CBH;定时器2捕获寄存器高字节R CAP2L DATA 0CAH;定时器2捕获寄存器低字节C PRL2 BIT 0C8HC T2 BIT 0C9HT R2 BIT 0CAHE XEN2 BIT 0CBHTCLK BIT 0CCHRCLK BIT 0CDHE XF2 BIT 0CEHT F2 BIT 0CFH;*********************************************************************************************;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;*********************************************************************************************;申明遥控器的用户码与按键键值I R_ADD_L EQU00000010B;设置红外遥控地址码的低8位I R_ADD_H EQU10111101B;设置红外遥控地址码的高8位I R_key_power EQU01000101B;遥控器开关机按键的键值I R_key_mute EQU00001010B;遥控器静音按键的键值I R_key_menu EQU00001011B;遥控器菜单按键的键值I R_key_ok EQU00010101B;遥控器OK按键的键值I R_key_up EQU00010010B;遥控器向上按键的键值I R_key_down EQU00010011B;遥控器向下按键的键值I R_key_left EQU00010001B ;遥控器向左按键的键值I R_key_right EQU00010000B;遥控器向右按键的键值I R_key_VOL_up EQU00011111B;遥控器音量加按键的键值I R_key_VOL_down EQU00001110B;遥控器音量减按键的键值I R_key_CH_up EQU00011000B;遥控器频道加按键的键值I R_key_CH_down EQU00011010B;遥控器频道减按键的键值;*********************************************************************************************;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;*********************************************************************************************mode DATA 03FH;工作模式寄存器;*********************************************************************************************;*********************************************************************************************;计时用寄存器t ime_ms DATA 040H;毫秒计数寄存器,一个单位表示1ms,由定时器2中断驱动,1ms中断一次t ime_10ms DATA 041H;10毫秒计数寄存器,一个单位表示10mst ime_250ms DATA 042H;250毫秒计数寄存器,一个单位表示250mst ime_500ms DATA 043H;500毫秒计数寄存器,一个单位表示500mssec DATA 044H;秒计数寄存器,一个单位表示1秒minute DATA 045H;分计数寄存器,一个单位表示1分钟hour DATA 046H;时计数寄存器,一个单位表示1小时day DATA 047H;天计数寄存器,一个单位表示1天,用于存储星期几m inute_L DATA 048H;分的个位寄存器m inute_H DATA 049H;分的十位寄存器h our_L DATA 04AH;时的个位寄存器h our_H DATA 04BH;时的十位寄存器页: 1D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASML ED_minute_L DATA 04CH;分的个位数的七段码寄存器L ED_minute_H DATA 04DH;分的十位数的七段码寄存器L ED_hour_L DATA 04EH;时的个位数的七段码寄存器L ED_hour_H DATA 04FH;时的十位数的七段码寄存器;*********************************************************************************************;*********************************************************************************************;闹钟用寄存器m inute_alarm DATA 050H;闹钟的分钟寄存器h our_alarm DATA 051H;闹钟的小时寄存器m inute_alarm_L DATA 052H;闹钟的分钟的个位数寄存器m inute_alarm_H DATA 053H;闹钟的分钟的十位数寄存器h our_alarm_L DATA 054H;闹钟的小时的个位数寄存器h our_alarm_H DATA 055H;闹钟的小时的十位数寄存器L ED_minute_alarm_L DATA 056H;闹钟的分钟的个位数的七段码寄存器L ED_minute_alarm_H DATA 057H;闹钟的分钟的十位数的七段码寄存器L ED_hour_alarm_L DATA 058H;闹钟的小时的个位数的七段码寄存器L ED_hour_alarm_H DATA 059H;闹钟的小时的十位数的七段码寄存器S nooze_delay DATA 07EH;闹钟贪睡延时计数器;*********************************************************************************************;*********************************************************************************************;声控延时用寄存器A udio_time DATA 05AH;声控延时时间寄存器,一个单位表示1秒A udio_time_L DATA 05BH;声控延时时间的个位数的寄存器A udio_time_H DATA 05CH;声控延时时间的十位数的寄存器;*********************************************************************************************;*********************************************************************************************;亮度用寄存器L ED_bright DATA 05DH;保存LED亮度设置值的寄存器L ED_bright_OUT DATA 05EH;LED亮度控制寄存器,直接控制LED显示亮度L ED_bright_mode DATA 05FH;LED亮度模式寄存器;*********************************************************************************************;*********************************************************************************************;LED扫描用寄存器L ED_CS DATA 060H;LED扫描位线片选寄存器L ED_OUT DATA 061H;LED扫描字线的七段码输出寄存器L ED1_OUT DATA 062H ;LED1输出显示的七段码寄存器L ED2_OUT DATA 063H ;LED2输出显示的七段码寄存器L ED3_OUT DATA 064H ;LED3输出显示的七段码寄存器L ED4_OUT DATA 065H ;LED4输出显示的七段码寄存器;*********************************************************************************************;*********************************************************************************************;一周闹钟功能开关控制寄存器W eek1_alarm DATA 071H;周一闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek2_alarm DATA 072H;周二闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek3_alarm DATA 073H;周三闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek4_alarm DATA 074H;周四闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek5_alarm DATA 075H;周五闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek6_alarm DATA 076H;周六闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启W eek7_alarm DATA 077H;周七闹钟功能是否开启的控制寄存器,000H就关闭,0FFH就开启;*********************************************************************************************;*********************************************************************************************;按键扫描用寄存器k ey_t0 DATA02CH ;按键前一扫描时刻是否按下状态寄存器,按下相应位为0k ey_t1 DATA02DH ;按键当前扫描时刻是否按下状态寄存器,按下相应位为0l ong_K2 DATA02EH ;按键K2长按时间寄存器,一个单位表示10msk ey_down DATA02FH ;按键有效按下标志寄存器,有效按下相应标志位为1,可以位寻址;下面的Bit位是02FH字节中的位(即按键有效按下标志寄存器key_down中的位)k0 BIT 78H;该按键对应着P1.0端口页: 2D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASMk1 BIT 79H;该按键对应着P1.1端口k2 BIT 7AH;该按键对应着P1.2端口k3 BIT 7BH;该按键对应着P1.3端口k4 BIT 7CH;该按键对应着P1.4端口k5 BIT 7DH;该按键对应着P1.5端口k6 BIT 7EH;该按键对应着P1.6端口k7 BIT 7FH;该按键对应着P1.7端口;*********************************************************************************************;*********************************************************************************************;定义各种状态位和控制位a larm_ON BIT 00H;闹钟功能开启控制位,要开启闹钟功能把该位置1B iBi_ON BIT 01H;响闹控制位,把该位置1就开始响闹L ED_Audio BIT 02H;声控功能开启控制位,要开启声控功能把该位置1L ED_vision BIT 03H;LED是否显示控制位,要熄灭LED把该位清0k ey_down_OK BIT 04H;按键有效按下标志位,任何按键按下该位被置1k ey_down_10S BIT 05H;10秒内有按键按下标志位,如果10秒内无按键该位被清0;*********************************************************************************************;*********************************************************************************************;红外遥控用寄存器I R_lead BIT 06H ;红外引导码是否有效标志位,该位为1表示有效I R_OK BIT 07H ;红外正确接收完成标志位,每正确接收完一次遥控时,该位就被置1I R_IN_ADJ_time BIT 08H ;遥控器进入时间调整模式的第一个按键正确标志位I R_pulse_time DATA 07AH;红外脉冲时间宽度寄存器(即红外信号两个下降沿之间的时间间隔)I R_code DATA 07BH;红外接收到的编码寄存器,存储接收到的8bit编码(地址或者数据码)I R_bit_number DATA 07CH;接收了多少个红外bit的计数寄存器I R_data DATA 07DH;红外数据码寄存器,即遥控按键的键值寄存器;*********************************************************************************************;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;*********************************************************************************************ORG 0000HJMP 0030H;跳转到主程序ORG 0003H;外部中断0向量地址JMP E X0_ISRORG 001BH;定时器1中断向量地址JMP T1_ISRORG 002BH;定时器2中断向量地址JMP T2_ISR;*********************************************************************************************;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;*********************************************************************************************ORG 0030H;*********************************************************************************************;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;*********************************************************************************************;七段码值表初始化(LED七段码的A管脚对应着存储器的D7位,G管脚对应着D1位,DP管脚对应着D0位)MOV 030H,#0FCH ;#03FH ;把数字0的七段码值存放到RAM地址空间中MOV 031H,#060H ;#006H ;把数字1的七段码值存放到RAM地址空间中MOV 032H,#0DAH ;#05BH ;把数字2的七段码值存放到RAM地址空间中MOV 033H,#0F2H ;#04FH ;把数字3的七段码值存放到RAM地址空间中MOV 034H,#066H ;#066H ;把数字4的七段码值存放到RAM地址空间中MOV 035H,#0B6H ;#06DH ;把数字5的七段码值存放到RAM地址空间中MOV 036H,#0BEH ;#07DH ;把数字6的七段码值存放到RAM地址空间中MOV 037H,#0E0H ;#007H ;把数字7的七段码值存放到RAM地址空间中MOV 038H,#0FEH ;#07FH ;把数字8的七段码值存放到RAM地址空间中MOV 039H,#0F6H ;#06FH ;把数字9的七段码值存放到RAM地址空间中MOV 03AH,#000H ;该七段码值不点亮任何段;*********************************************************************************************;*********************************************************************************************页: 3D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASM;开机时初始化各种寄存器MOV mode , #0;把工作模式初始化为模式0MOV sec , #00;秒针初始化MOV minute , #00;分针初始化MOV hour , #12;时针初始化MOV day , #1;天初始化,初始化为星期一MOV m inute_alarm , #00;闹钟分针初始化MOV h our_alarm , #08;闹钟时针初始化MOV A udio_time , #30;声控延时时间初始化,单位为秒MOV L ED_bright , #4;LED亮度初始化,0为最暗,5为最亮MOV k ey_t0 , #0FFH ;按键前一扫描时刻初始化为没有按下MOV k ey_t1 , #0FFH ;按键当前扫描时刻初始化为没有按下MOV l ong_K2 , #0 ;按键K2按下时间初始化为0MOV k ey_down , #000H ;初始化为无按键有效按下MOV W eek1_alarm , #0FFH ;初始化开启周一闹钟功能MOV W eek2_alarm , #0FFH ;初始化开启周二闹钟功能MOV W eek3_alarm , #0FFH ;初始化开启周三闹钟功能MOV W eek4_alarm , #0FFH ;初始化开启周四闹钟功能MOV W eek5_alarm , #0FFH ;初始化开启周五闹钟功能MOV W eek6_alarm , #000H ;初始化关闭周六闹钟功能MOV W eek7_alarm , #000H;初始化关闭周日闹钟功能MOV R2,#1;R2用于设置星期闹钟功能开与关的时候,指示正在设置的天为星期几MOV R3,#10;R3用于在非模式0的情况下,10秒无按键操作自动进入模式0时的延时计数MOV R4,#100;R4用于声控功能延时计数MOV R5,#10;R5用于声控功能延时计数MOV R6,#30;R6用于声控功能延时计数MOV R7,#50;R7用于产生BiBi声音时用于调制声音时的延时计数;*********************************************************************************************;*********************************************************************************************;开机时初始化各种状态位和控制位SETB a larm_ON;初始化开启闹钟功能CLR B iBi_ON;初始化关闭BiBi声SETB L ED_Audio;初始化开启声控功能SETB L ED_vision;初始化开启LED显示;*********************************************************************************************;*********************************************************************************************;定时器2初始化MOV R CAP2L, #Low(-1000);设置定时器2的重载值为-1000,即每1000个脉冲定时器2就溢出一次(1ms溢出一次)MOV R CAP2H, #High(-1000)MOV T2CON, #00000100B;设置定时器2工作在自动重装载模式,并开启定时器2;定时器0和定时器1初始化MOV TMOD ,#00010001B;设置定时器0为16位模式,定时器1为16位模式;中断初始化并设置中断优先级SETB I T0;设置外部中断0为下降沿中断模式MOV IE , #10101001B;开中断(定时器1,2与外部中断0)MOV IP , #00001001B;设置定时器1和外部中断0为最高优先级的中断;*********************************************************************************************;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;*********************************************************************************************;主循环程序;1、在模式0的情况下,按下相应的按键将进入相应的工作模式;2、在其他模式情况下,将调用相应模式的子程序,用于调整该模式下的参数设置;3、当接收到正确的红外按键时,将调用红外按键处理程序L OOP:页: 4D:\LED电子钟汇编程序【8052微控制器】 (2011-11-11)\汇编程序.ASMJNB I R_OK,m ode0_CS;如果没有遥控按键操作就跳转到mode0_CSCALL IRm ode0_CS:MOV A,modeCJNE A,#0,m ode1_CSm ode0_mode3:JNB K3,m ode0_mode6;如果当前为模式0,且按键K3有效,则进入模式3,模式3为闹钟设置模式MOV mode,#3CLR K3JMP LOOPm ode0_mode6:JNB K4,m ode0_mode8 ;如果当前为模式0,且按键K4有效,则进入模式6,模式6为声控设置模式MOV mode,#6CLR K4JMP LOOPm ode0_mode8:JNB K5,m ode0_mode9;如果当前为模式0,且按键K5有效,则进入模式8,模式8为LED亮度设置模式MOV mode,#8CLR K5JMP LOOPm ode0_mode9:JNB K7,m ode0_mode10;如果当前为模式0,且按键K7有效,则进入模式9,模式9为LED亮度模式设置模式MOV mode,#9CLR K7JMP LOOPm ode0_mode10:JNB K6,LOOP ;如果当前为模式0,且按键K6有效,则进入模式10,模式10为星期调整模式MOV mode,#10CLR K6JMP LOOPm ode1_CS:CJNE A,#1,m ode2_CS;如果mode值为1,则调用mode1子程序,mode1为时针调整子程序CALL m ode1JMP LOOPm ode2_CS:CJNE A,#2,m ode3_CS;如果mode值为2,则调用mode2子程序,mode2为分针调整子程序CALL m ode2JMP LOOPm ode3_CS:CJNE A,#3,m ode4_CS;如果mode值为3,则调用mode3子程序,mode3为打开或者关闭闹钟功能子程序CALL m ode3JMP LOOPm ode4_CS:CJNE A,#4,m ode5_CS;如果mode值为4,则调用mode4子程序,mode4为闹钟时针调整子程序CALL m ode4JMP LOOPm ode5_CS:CJNE A,#5,m ode6_CS;如果mode值为5,则调用mode5子程序,mode5为闹钟分针调整子程序CALL m ode5JMP LOOP页: 5m ode6_CS:CJNE A,#6,m ode7_CS;如果mode值为6,则调用mode6子程序,mode6为打开或者关闭声控功能子程序CALL m ode6JMP LOOPm ode7_CS:CJNE A,#7,m ode8_CS;如果mode值为7,则调用mode7子程序,mode7为声控延时时间调整子程序CALL m ode7JMP LOOPm ode8_CS:CJNE A,#8,m ode9_CS;如果mode值为8,则调用mode8子程序,mode8为LED亮度调整子程序CALL m ode8JMP LOOPm ode9_CS:CJNE A,#9,m ode10_CS;如果mode值为9,则调用mode9子程序,mode9为LED亮度模式调整子程序CALL m ode9JMP LOOPm ode10_CS:CJNE A,#10,m ode11_CS ;如果mode值为10,则调用mode10子程序,mode10为星期调整子程序CALL m ode10JMP LOOPm ode11_CS:CJNE A,#11,L OOP_over;如果mode值为11,则调用mode11子程序,mode11为星期的闹钟功能开关子程序CALL m ode11L OOP_over:JMP LOOP;*********************************************************************************************;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;*********************************************************************************************;外部中断0中断服务程序(红外遥控接收程序)E X0_ISR:PUSH ACC;进入中断服务程序时,把累加器A压入堆栈,保护现场。
32*8LED点阵电子钟的制作说明作者:杜洋2005年10月22日近日完成了32*8点阵电子钟的部分制作,现在就在我的身边正常的行动着。
在此写一下制作及注意事项,便于大家共同进步。
我的这款32*8LED点阵电子钟是用多层夹板组成的,所以其非常像三明治,我就把它叫三明治电子钟了。
这个电子钟的主要元件有4块8*8的单色行列式点阵屏单片机控制器,时钟发生芯片,温度检测芯片和一个BCD转16线的转换芯片。
大家也可以根据自己的需要加装蜂鸣器和红外遥控接收头之类的外围接口。
这台电子钟最关键的地方是LED的流动显示和对接口芯片数据的读取上。
以下就原理方面就不像大家细说了。
旨在详细的阐述一下制作与程序的设计。
电路的设计:为了有效的利用I/O资源,我们利用外扩的芯片的方法解决。
74HC154是4线BCD码转换为16线的译码器,在电路中用作列的扫描。
而行则是由单片机的P0、P2口直接驱动的,显示方式应该是逐列扫描。
为了增加驱动能力,提高LED 的显示亮度,我用了三极管8050和8550作显示驱动。
时钟的发生我采用了目前较流行的DS1302实时时钟芯片,而没有用单片机直接产生,因为单片机产生日期星期计算是比较复杂而且不精准的。
而DS1302具有涡流电池备电,2100年以前的日期、时间计算、SPI总线通信。
并在内部集成了31个静态RAM。
使用这款芯片可以减小CPU的工作量,使CPU主攻LED 的扫描。
温度检测我采用了DS18B20温度转感器,它是普通的三极管封装,内部直接将温度变成数字信号,并用先进的单总线输出。
抗扰力强,占用资料少。
更在内置的EEPROM。
没用AD转换,使系统更简单。
在制作时一定请注意P0口和DS18B20的上拉电阻。
LED屏的引线应先用万用表测好,行和列标出。
我是引用一个16*16屏的电路图的原理,只是将它的拼成一行而已,再在软件上加以修理就行了。
所以会作网上流行的16*16的屏再作我的电子钟就简单了许多。
LED点阵电子时钟制作实验报告一、设计目的在日常生活中,大家见到的都是数码管制作的电子钟,LED点阵时钟则不多见。
尽管点阵时钟有它自己的缺点,如硬件利用不充分,价格较高,但是点阵时钟的字体可以方便地改变,只要改变单片机中的程序,就可以任意改变显示出来的字体,亲切的字体常常会给人耳目一新的感觉,不象普通LED数码管的字体那么呆板,这可能是LED点阵时钟最主要的特点了。
二、方案1、LED点阵电子时钟的结构、功能:1)24小时计时。
2)4位时间显示,使用四块Φ3mm 8×8LED点阵。
3)时钟的发生采用了目前较流行的DS1302实时时钟芯片,时钟精确度较高,掉电后能维持一个月保持时间不掉。
4)采用单片机A T89S52,便于硬件扩展。
89S52采用24MHz晶体,工作频率高,显示数字不闪烁!5)采用变压器供电,便于时钟的摆放。
变压器供电电压是9V的,经PCB主板上的7805稳压后输出稳定的5V电压,损耗较小。
6)电子按钮时间调节。
7)双面PCB设计,电路小巧精悍。
8)有红色和绿色LED可选择(注:只能是单色屏)。
9)点阵屏采用接插的方式插在PCB上(可选),默认的点阵屏是焊在主板上的。
10)单元电路都有滤波电路,整体电路工作稳定。
2、LED点阵电子时钟的主要元件Φ3mm 8×8LED点阵四块、A T89S52单片机一片、DS1302实时时钟芯片一片、LM7805稳压芯片一片、24MHz晶振一个、供电电压是9V变压器一个、调节按钮开关四个,其余电阻、电容、二极管、三极管等若干。
3、LED点阵电子时钟的主要元件性能比较1)关于DS1302时钟芯片:采用DS1302实时时钟芯片的时钟,其程序设计及时间准确度,与单片机直接产生时间的时钟,效果不可同日而语。
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM 的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。
尽管现在市面上有很多LED数字钟专用的集成电路,价格也很便宜。
但对于喜欢动手的电子爱好者来说,自制一个LED数字钟,也别有一番味道。
娱乐之余,也是学习电子技术的一种方法。
这里介绍一个用普通数字电路搭成的LED数字钟,其主电路见图1。
它除了有一般数字钟分、时显示之外,还含秒显示和星期显示。
电路比较简单,适合仿制。
下面介绍它的主要工作原理和制作注意事项。
●秒信号发生器;因为在数字钟电路钟,秒信号的准确是时钟计时精度的关键。
秒信号发生器为该电路提供秒基准信号。
(用晶振)●主电路:图1这里以秒计时为例,介绍电路的工作原理。
如图1所示,标准秒时基信号进入CD4033(十进制记数/7段译码器集成电)1脚(记数输入端),“秒”位开始记数。
但记数有9到0时,CD40335脚输出进位脉冲,“十秒位”为变为“1”。
同时我们注意到在接通电源是CD4017的3脚(Q0)输出为高电平。
当“十秒位”为,记数到“2”时,数码管的“e”跳变位高电平“1”,同时此脉冲进入CD4017的14脚进行记数,此时其2脚(Q1)变为高电平;当“十秒位”由5准备变成6时,CD4017再次进位,此时其4脚(Q2)变为高电平,此电平通过电阻对CD4017的15脚进行复位,既CD4033也被复位,显示为“0”,这样实现“59”到“00”的转换,同时进位脉冲有5脚输出。
由于CD4017被复位,其3脚(Q0)输出又为高电平,为下一轮的记数作好准备。
同理,我们也可分析出“分位”电路和“时位”以及“星期指示”电路(见图2)的工作原理。
图2制作要点制作时,数码管选用共阴型。
其中,数码管共阴端的稳压二极管不能用电阻替代。
并应根据电源电压大小来调节稳压二极管的稳压值。
所有的二极管型号为IN4148。
LED电子钟制作
材料准备:
1. Arduino开发板
2.LED显示屏
3.时钟芯片模块(如DS1302)
4.电阻、电容等基础元件
5.面包板、跳线等连接器材
步骤一:连接电路
1. 将LED显示屏连接到Arduino开发板的数字引脚,接线电阻用于
限流保护。
2. 将时钟芯片模块连接到Arduino开发板的数字引脚,其中包括时钟、日期、秒等输入输出引脚。
步骤二:编程
2.在IDE软件中,编写程序来控制LED显示屏和时钟芯片。
3. 使用Arduino编程语言,通过使用时钟芯片的函数库,可以获取
当前的时间、日期和秒,并将其显示在LED显示屏上。
步骤三:实现时钟功能
1.在程序中,编写一个循环函数,用于不断获取当前的时间,然后将
其显示在LED显示屏上。
2. 使用Arduino的延时函数,可以设置每秒钟更新显示屏上的时间。
3.可以通过在程序中添加按钮处理代码,来实现调整时间和日期的功能。
步骤四:增加附加功能
1.可以在LED显示屏上显示其他信息,如温度、湿度等。
2.可以添加闹钟功能,通过编写相应的代码来触发闹钟功能。
3.可以设计多种模式的显示屏样式,并通过按钮来切换。
步骤五:调试和优化
1.测试程序的正确性和稳定性,查找可能的错误和问题,并进行修复。
2.根据实际需求和用户反馈,优化和改进程序功能和显示效果。
3.可以通过添加外壳和外部电源来实现外观美观和长时间运行。
总结:
通过以上步骤,我们可以制作一个简单的LED电子钟。
我们可以根据
自己的需求和兴趣来增加功能和改进设计。
使用Arduino开发板和相应的
元件,可以让我们快速实现各种创意和想法。
祝你成功制作出自己的LED
电子钟!。