数字万年历的制作

合集下载

数字万年历的设计毕业设计

数字万年历的设计毕业设计

数字万年历的设计摘要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。

它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。

对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。

该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。

本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。

万年历的设计过程在硬件与软件方面进行同步设计。

硬件部分主要由AT89C52单片机,LED显示电路,以及调时按键电路等组成。

在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。

74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。

软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。

所有程序编写完成后,在wave软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。

最后总在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。

关键词:时钟电钟 DS1302 DS18B20 动态扫描单片机AbstractE-calendar day time is a very wide range of tools, increasingly popular in modern society. It can be year, month, day, Sunday, hours, minutes, seconds for time, but also has a leap year compensation to a variety of functions, and the DS1302's long life, small error. For the digital electronic calendar using an intuitive digital display can simultaneously display year, month, day, Sunday, hours, minutes, seconds, and temperature and other information, but also a time-calibration and other functions. The circuit uses AT89S52 microcontroller as the core, power consumption, low-voltage work in 3V, the voltage can choose 3 ~ 5V voltage supply.The design is based on 51 series of microcontrollers to the design of electronic calendar, you can display date information on when the minutes and seconds, and weeks, with adjustable date and time functions. At the same time in the design of the theoretical basis of the MCU and peripheral expansion of knowledge of the more comprehensive preparation. The hardware and software design, there is no good basic knowledge and practical experience will be greatly limited, each feature is required to achieve the kind of hardware, procedures, how to write, how to implement such algorithms, there is no certain foundation can not be good implementation. Found during the preparation process to the existing knowledge to complete the preparation of the task alone difficult,In the help of teachers and students to complete the program part of the preparation.Calendar of the design process in hardware and software to synchronize the design. Hardware mainly by the AT89C52 microcontroller, LED display circuit, and the tune composed of the circuit when the button. In the SCM choice I used the AT89C52 microcontroller, which is suitable for many of the more complex control applications. Monitor the use of two 7SEG-MPX8-CA and a 7SEG-MPX4-CA. 7SEG-MPX8-CA is a total of eight-yang diode display, 7SEG-MPX4-CA is a total offour-yang diode display. In order to more easily control the three monitors, I use three 74HC164 to drive.74HC164 is an 8-bit edge-triggered shift register, serial input data, and parallel output. The software includes calendar program, time to adjust procedures, turn the lunar calendar programs, display programs. Programs written in assembly language used in order to more easily adjust the time and the realization of the lunar calendar display. All programming is complete, the wave software debugging, make sure that no problems, in the Proteus software within a microcontroller embedded in the simulation. The final overall the teacher to help students, as well as their own efforts to complete the design of the electronic calendar.Keywords:Clock electric clock DS1302 DS18B20 Dynamic scan SCM目录第一章设计要求与方案论证 (1)第一节设计要求 (1)第二节系统基本方案选择和论证 (1)第三节电路设计最终方案决定 (3)第二章系统的硬件设计与实现 (4)第一节电路设计框图 (4)第二节系统硬件概述 (4)第三节主要单元电路的设计 (4)第三章系统的软件设计 (8)第一节程序流程框图 (8)第四章指标测试 (12)第一节测试仪器 (12)第二节硬件测试 (12)第三节软件测试 (13)第四节测试结果分析与结论 (13)致谢词 (15)参考文献 (16)附录一系统电路图 (1)附录二系统使用说明书 (2)第一章设计要求与方案论证第一节设计要求一、基本要求:1.具有年、月、日、星期、时、分、秒等功能;2.时间与阴、阳历能够自动关联;3.具有温度计功能;4.具备年、月、日、星期、时、分、秒校准功能。

6、用DS1302与LCD1602可调数字万年历实验设计报告

6、用DS1302与LCD1602可调数字万年历实验设计报告

利用时钟芯片DS1302实现万年历系别电子通信工程系组别第十组专业名称电子信息工程指导教师组内成员2013年8月19日用DS1302与LCD1602设计的可调式电子日历时钟一、总体设计1.1、设计目的为巩固所学的单片机知识,把所学理论运用到实践中,用LCD1602与DS1302 设计可调式电子日历时钟。

1.2、设计要求(1)显示:年、月、日、时、分、秒和星期;(2)设置年、月、日、时、分、秒和星期的初始状态;(3)能够用4个按键调整日历时钟的年、月、日、时、分、秒和星期;完成可调式电子日历时钟的硬件和软件的设计,包括单片机的相关内容;日历时钟模块的设计,液晶显示模块的设计,按键模块的设计。

控制程序的编写等。

备注:本程序另外添加了每到上午8:10和下午2:10的闹钟提醒功能。

1.3、系统基本方案选择和论证1.3.1、单片机芯片的选择方案方案一:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容。

方案二:采用STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。

但造价较高。

1.3.2 、显示模块选择方案和论证:方案一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用显示数字显得太浪费,且价格也相对较高。

所以不用此种作为显示。

方案二:采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需要的个数偏多,功耗较大,显示出来的只是拼音,而不是汉字。

所以也不用此种作为显示。

方案三:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字符,且视觉效果较好,外形美观。

基于PCF8563时钟芯片的万年历制作

基于PCF8563时钟芯片的万年历制作

万年历是一种能够显示日期、星期和时间的工具,它不仅能够告诉我们当天是几号,还能显示星期几和当前时间。

在这个项目中,我们将使用PCF8563时钟芯片来制作一个基于PCF8563的万年历。

PCF8563是一种CMOS实时时钟和日历芯片,它可以提供年、月、日、星期和小时、分钟、秒的数据。

它具有电源管理功能,可以通过一个电源低于2V脉冲输入来切换系统电源供电方式。

为了制作这个基于PCF8563的万年历,我们需要以下材料和工具:1. Arduino主控板2.PCF8563时钟芯片3.16x2液晶显示屏4.面包板5.杜邦线6.10k电阻接下来,我们将按照以下步骤来制作基于PCF8563的万年历:第一步:连接电路首先,将Arduino主控板插入面包板。

接着,连接PCF8563时钟芯片到Arduino主控板上的I2C总线。

将SDA引脚连接到A4引脚,将SCL引脚连接到A5引脚。

此外,还需要使用10k电阻将VCC引脚连接到VCC引脚上。

接下来,将16x2液晶显示屏连接到面包板。

连接液晶屏的RS引脚到Arduino主控板的D12引脚,RW引脚到GND引脚,和E引脚到D11引脚。

将液晶屏的D4到D7引脚连接到Arduino主控板的D5到D2引脚。

第二步:编写代码打开Arduino IDE并创建一个新的项目。

然后,编写以下代码:#include <Wire.h>#include <LiquidCrystal_I2C.h>//定义PCF8563的地址#define PCF8563_ADDR 0x51//定义显示屏的尺寸#define LCD_COLUMNS 16#define LCD_ROWS 2LiquidCrystal_I2C lcd(0x27, LCD_COLUMNS, LCD_ROWS);void setup//初始化I2C总线Wire.begin(;//设置时钟芯片为24小时模式Wire.beginTransmission(PCF8563_ADDR);Wire.write(0x02);Wire.write(0x00);Wire.endTransmission(;//初始化液晶显示屏lcd.begin(LCD_COLUMNS, LCD_ROWS);lcd.setCursor(0, 0);lcd.print("Date: ");lcd.setCursor(0, 1);lcd.print("Time: ");void loop//读取PCF8563的日期和时间Wire.beginTransmission(PCF8563_ADDR); Wire.write(0x02);Wire.endTransmission(;Wire.requestFrom(PCF8563_ADDR, 7);int second = bcdToDec(Wire.read( & 0x7F); int minute = bcdToDec(Wire.read();int hour = bcdToDec(Wire.read( & 0x3F); int dayOfWeek = bcdToDec(Wire.read();int dayOfMonth = bcdToDec(Wire.read();int month = bcdToDec(Wire.read( & 0x1F); int year = bcdToDec(Wire.read();//显示日期和时间lcd.setCursor(6, 0); printWithLeadingZero(dayOfMonth);lcd.print("/");printWithLeadingZero(month);lcd.print("/");lcd.print(2000 + year);lcd.setCursor(6, 1); printWithLeadingZero(hour);lcd.print(":");printWithLeadingZero(minute);lcd.print(":");printWithLeadingZero(second);delay(1000);//将BCD码转换为十进制int bcdToDec(int bcd)return (bcd / 16 * 10) + (bcd % 16);//打印带有前导零的数字void printWithLeadingZero(int number)if (number < 10)lcd.print('0');}lcd.print(number);第三步:上传代码将Arduino主控板连接到电脑,并根据需要选择正确的端口和板类型。

用Excel做电子万年历

用Excel做电子万年历

用Excel制作电子万年历先看一下最终效果(秀一下萌娃(*^_^*)):本电子万年历的功能包括:1.自动显示当月日历,突出显示当日日历;2.显示当月所有周别;3.显示当月所有节日和特殊日子(可自定义);4.可查询年月,包括该月的节日和特殊日子;5.具有个性化表盘时钟。

需要用到的Excel函数和符号有:if、year、month、today、day、date、weekday、text、DBNum、vlookup、iserror、weeknum、concatenate、mod、mid、now、minute、hour、$、>、&需要用到的Excel技巧有:1.插入背景;2.设置行高和列宽;3.输入有序文本;4.设置数据有效性;5.快速选择整列;6.设置条件格式;7.选择性粘贴;8.设置单元格格式;9.隐藏网格线;10.制作圆环图和饼图、保存和调用图表模板;11.图表的组合;12.冻结窗格;13.工作表加密制作步骤:第一步,设置万年历背景和区域:在“页面布局”选项卡选择“背景”,选择需要作为背景的图片,单击“插入”,插入后效果如图:在第一张图片中间选择一个25行*8列的区域作为日历区域(这里选择了C5:J29区域),框线按下图设置(也可以按照其他方式设置),并调整单元格的行高和列宽。

第二步,设置万年历标题:在“C6”(C6:H6单元格合并)单元格输入“电子万年历”;“C9”(C9:D9单元格合并)单元格输入“查询年月”;“F9”单元格输入“年”;“H9”单元格输入“月”;C11:J11单元格分别输入“周别”、“日”、“一”、“二”、“三”、“四”、“五”、“六”。

第三步,设置可查询的年月:在“N5”单元格输入“年份”,“O6”单元格输入“月份”;在“N6:N206”单元格分别输入年份“1900”、“1901”、“1902”……“2099”、“2010”(当然还可以往后输入更多);在“O6:O17”单元格分别输入月份“1”、“2”、“3”……“11”、“12”。

自己动手制作Excel万年历

自己动手制作Excel万年历

自己动手制作Excel万年历自己动手制作Excel万年历在网上看到别人用Excel制作的万年历非常精美,于是自己动手,跟着学习,自己制作一了属于自己的“万年历”;现在把制作过程和大家一起分享!首先还是看看我制作的“万年历”的最终效果:这个万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便,一起来试试吧!第一步:启动Excel2003,新建一个工作表,取名保存(如万年历.xls);并在相应的单元格中输入如图①所示的内容。

其中:在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,即输入1900―2050年份序列;同样的方法,在J1至J12单元格中输入1―12月份序列。

第二步:同时选中B1、C1、D1单元格,单击“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式=TODAY()后回车;再次选中B1(合并后的)单元格,执行“格式→单元格→数字→分类→日期”,在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

(如图②)注:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。

第三步:选中F1单元格,输入公式=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2))后回车;再次选中F1单元格,执行“格式→单元格→数字→分类→特殊”,在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式。

(如图③)注:上述公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。

第四步:选中H1单元格,输入公式=NOW()后回车;再次选中H1单元格,执行“格式→单元格→数字→分类→时间”,在右侧“类型”下面选中一款时间格式,“确定”退出。

如何用EXCEL表格制作日历

如何用EXCEL表格制作日历

今天我们介绍用Excel制作万年历的方法。

这个万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。

如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧!本文所涉及到的函数有:1、AND (logical1,logical2, ...)2、DATE (year,month,day)3、DAY (serial_number)4、IF (Logical,Value_if_true,Value_if_false)5、INT (number)6、MONTH (serial_number)7、NOW ()8、OR (logical1,logical2, ...)1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。

2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。

选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。

3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。

选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。

数字电子课设:万年历的设计

数字电子课设:万年历的设计

编号北京工商大学数字电子技术基础《万年历的设计》姓名学院班级学号设计时间一、设计目的1、熟悉集成电路的引脚安排2、掌握芯片的逻辑功能及使用方法3、了解数字电子钟及万年历的组成及工作原理4、熟悉数字电子钟及万年历的设计与制作5、熟悉multisim电子电路设计及仿真软件的应用二、设计思路1、设计60进制秒计数器芯片2、设计24进制时计数器芯片3、设计31进制天计数器芯片4、设计12机制月计数器芯片5、设计7进制周计数器芯片6、设计闰年平年不同月份不同进制逻辑三、设计过程1、Tr_min and s 60进制计数器芯片:“秒”、“分”电路都六十进制,它由一级十进制计数器和一级六进制计数器组成,六十进制计数器的设计图如下,采用四个片74ls161N串联而成,低位芯片的抚慰信号作为下级输入信号,串接起来构成“秒”、“分”计数器芯片。

2、Tr_hour 24进制计数器芯片:24进制计数器芯片的设计图如下,时计数电路由两片74ls161串联组成。

当时个位计数为4,十位计数为2时,两片74ls160N复零,从而构成24进制计数。

3、Tr_day天计数器芯片:采用两片74ls160N和一片74ls151N串联而成,天计数器的进制受到月计数器反馈M、N影响和年计数器反馈R4的影响,在M、N不收到反馈信息的时候,天计数器为28进制,电路设计图如下:4、Tr_week周计数器芯片:周计数器由一块74ls161N构成一个七进制计数器,原理与秒、分、时计数器相似,电路设计图如下5、Tr_month月计数器芯片:采用两片74160N和两片74HC151D_2V串联而成,月计数器的反馈信息M、N影响日计算器的进制,本身月进制计数器为12进制,电路设计图如下:6、Tr_year年计数器芯片:年计数器由七片74160N组成,其中四片构成四个十进制来确定年份,另外三块则为闰年R4确定值,并把R4反馈到日计数器芯片中。

电路设计图如下:7、Tr_555 555计数器:方波信号,其周期约为一秒。

如何用EXCEL表格模板制作日历

如何用EXCEL表格模板制作日历

今天我们介绍用Excel制作万年历的方法。

这个万年历能够显示当月的月历,还可以够随意查阅任何日期所属的月历,特别方便。

若是你愿意,还可以够让它在特其他日子里显示不同样的提示文字,一起来试一试吧!本文所涉及到的函数有:1、AND (logical1,logical2, ...)2、DATE (year,month,day)3、DAY (serial_number)4、IF (Logical,Value_if_true,Value_if_false)5、INT (number)6、MONTH (serial_number)7、NOW ()8、OR (logical1,logical2, ...)1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。

注意:①上述前面一个公式的含义是:若是(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。

②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整正确。

4、在I1、I2单元格分别输入1900、1901,尔后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入1900—2050年份序列。

同样的方法,在J1至J12单元格中输入1—12月份序列。

5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“赞同”右侧的下拉按钮,选中“序列”选项,在“本源”下面的方框输入:=$I$1:$I$151,“确定”退出。

同样的操作,将F15单元格数据有效性设置为“=$J$1:$J$12”序列。

注意:经过这样的设置今后,当我们选中D15(或F15)单元格时,在单元格右侧出现一个下拉按钮,按此下拉按钮,即可选择年份(或月份)数值,快速输入需要盘问的年、月值。

用EXCEL制作一份万年历

用EXCEL制作一份万年历

用EXCEL制作一份万年历今天我们介绍用Excel制作万年历的方法。

这个万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。

如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧!本文所涉及到的函数有:1、(logical1,logical2, ...)2、3、4、5、6、7、8、1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。

2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。

选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。

3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。

选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。

注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。

②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。

数字万年历课程设计

数字万年历课程设计

《数字万年历》课程设计报告专业:自动化班级:*****姓名:*****指导老师:*****二零一一年六月摘要在当代繁忙的工作与生活中,时间与我们每个人都有非常密切的关系,每个人都被时间影响着,我们必须对时间有个度量,因此设计万年历来记录时间,本设计采用AT89C51和DS1302实时时钟芯片进行万年历电路设计和软件设计,该万年历能实现能够实现年、月、日、时、分的显示,也可以人为校正时间,初始时间:2000 01 01 。

本次设计以12MHZ晶振与AT89C51相连,通过编程实现以24小时为一周期,利用单片机的定时器和计数器产生定时效果,通过编程产生数字时钟效果,然后用数码管动态扫描显示内部处理的数据。

通过端口读入当前外部控制状态来改变程序的不同状态从而实现不同功能。

本次万年历设计以单片机为核心软硬件结合,使硬件部分大为简化,也提高了系统的稳定性。

关键词:万年历单片机DS1302目录一、方案的确定 (3)单片机芯片的选择方案 (3)显示方案 (3)时钟芯片的选择方案 (5)二、系统的硬件设计与实现 (6)电路设计框图 (6)主要单元电路的设计 (7)单片机主控制模块的设计 (7)时钟电路模块的设计 (8)三、系统的软件设计 (9)程序流程框图 (9)电子时钟计算程序图 (10)调整流程图 (11)程序设计 (12)四、致谢词 (15)参考文献 (15)附录:proteus仿真图 (16)一.方案的确定单片机芯片的选择方案方案1:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,实验室学生用的较多的也较为熟悉的处理单元。

方案2:采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,但AT89S52性价比不高。

基于单片机的数字万年历设计

基于单片机的数字万年历设计

基于单片机的数字万年历设计引言本文设计的电子万年历属于小型智能家用电子产品。

利用单片机进行控制,实时时钟芯片进行记时,外加掉电存储电路和显示电路,可实现时间的调整和显示。

电子万年历既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业等相关行业的大厅,以及单位会议室、门卫等场所。

因而,此设计具有相当重要的现实意义和实用价值。

系统概述本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和24C02FLASH存储器,显示阳历年、月、日、星期、时、分、秒和阴历年、月、日,在显示阴历时间时,能标明是否闰月,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示。

人机接口由三个按键来实现,用这三个按键对时间、日期可调,并可对闹铃开关进行设置。

软件控制程序实现所有的功能。

整机电路使用+5V稳压电源,可稳定工作。

系统框图如下图所示,其软硬件设计简单,时间记录准确,可广泛应用于长时间连续显示的系统中。

系统框图系统硬件电路的设计按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、存储模块、键盘接口模块、显示模块和闹铃模块共6个模块组成,电路系统构成框图如下图所示。

主控芯片使用52系列AT89S52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DS1302,存储模块采用美国ATMEL公司生产的低功耗CMOS串行EEPROM存储芯片AT24C02。

DS1302作为主要计时芯片,可以做到计时准确。

更重要的是,DS1302可以在很小电流的后备(2.5~5.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。

电子万年历电路系统构成框图系统程序的设计阳历程序的设计因为使用了时钟芯片DS1302,阳历程序只需从DS1302各寄存器中读出年、周、月、日、[小]时、分、秒等数据,再处理即可。

c51设计的模拟数字万年历

c51设计的模拟数字万年历

Diap.c#include "reg52.h"#include "intrins.h"#define uchar unsigned charbit Display_Flag=0;sbit SH_CP=P1^4;sbit DS=P1^5;sbit ST_CP=P1^6;void write_74hc595(uchar *content){ uchar i=18,j;while(i--){ for(j=0;j<8;j++){ DS=(bit)(content[i]<<j&0x80);SH_CP=0;_nop_();SH_CP=1; //移位时钟脉冲上升沿移位}}ST_CP=0;_nop_();ST_CP=1; //上升沿将数据送到数据锁存器_nop_();ST_CP=0; //锁存显示数据}void show(uchar *content){ uchar code data_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};uchar Disp_CODE[18];uchar i;for(i=0;i<17;i++){ if(i==14&&content[14]==0){ Disp_CODE[14]=0x80;continue;}Disp_CODE[i]=data_code[content[i]];}Disp_CODE[17]=content[17];write_74hc595(Disp_CODE);}uchar Disp_temp[18]={2,0,1,2, 0,1, 2,0, 2,2, 0,9, 3,0, 5, 2,7, 0xff};ds18b20.c#include "reg52.h"#include "intrins.h"#define uchar unsigned char#define uint unsigned int#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}sbit DQ=P1^3; //DS18B20数据线bit DS18B20_IS_OK=1; //传感器正常标志bit DS18B20_Flag=0; //温度负数标志void delayus(uchar us){ while(us)--us;}//初始化DS18B20uchar initialize_ds18b20(void){ uchar status;DQ=1; delayus(8);DQ=0; delayus(90);DQ=1; delayus(8);status=DQ;delayus(100);DQ=1;return status; //初始化成功时返回0}//读一字节uchar readbyte(void){ uchar i,dat=0;DQ=1; _nop_();for(i=0;i<8;i++){ DQ=0; dat>>=1; DQ=1; _nop_(); _nop_();if(DQ)dat|=0x80; delayus(30); DQ=1;}return dat;}//写一字节void writebyte(uchar dat){ uchar i;for(i=0;i<8;i++){ DQ=0; DQ=dat&0x01; delayus(5); DQ=1; dat>>=1;}}void convert(void){ initialize_ds18b20();DS18B20_IS_OK=0;if(~initialize_ds18b20()){ writebyte(0xcc);writebyte(0x44);DS18B20_IS_OK=1;}}char readtemp(void){ uchar temp1,temp2,temp3;convert();if(DS18B20_IS_OK){ initialize_ds18b20();writebyte(0xcc);writebyte(0xbe);temp1=(readbyte()&0xf0)>>4;temp2=(readbyte()&0x07)<<4;temp3=temp1+temp2;DS18B20_Flag=0;if(temp2&0x80){ temp3=256-temp3;DS18B20_Flag=1;}return(temp3);}}Ds1302.c#include "reg52.h"#define uchar unsigned char#define uint unsigned intsbit SDA=P1^0;sbit CLK=P1^1;sbit RST=P1^2;uchar DateTime[7]; //所读取的日期时间//一年中每个月的天数,2月的天数由年份决定uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; //向DS1302写入一字节void Write_A_Byte_TO_DS1302(uchar x){ uchar i;for(i=0;i<8;i++){ SDA=x&1; CLK=1; CLK=0; x>>=1;}}//从DS1302读取一字节uchar Get_A_Byte_FROM_DS1302(void){ uchar i,b,t;for(i=0;i<8;i++){ b>>=1; t=SDA; b|=t<<7; CLK=1; CLK=0;}//BCD码转换return(b/16*10+b%16);}//从DS1302指定位置读数据uchar Read_Data(uchar addr){ uchar dat;RST=0; CLK=0; RST=1;Write_A_Byte_TO_DS1302(addr);dat=Get_A_Byte_FROM_DS1302();CLK=1; RST=0;return(dat);}//向DS1302某地址写入数据void Write_DS1302(uchar addr,uchar dat){ CLK=0; RST=1;Write_A_Byte_TO_DS1302(addr);Write_A_Byte_TO_DS1302(dat);CLK=0; RST=0;}//设置时间void SET_DS1302(void){ uchar i;//写控制字,取消写保护Write_DS1302(0x8e,0x00);//分时日月年依次写入for(i=1;i<7;i++){ //分的起始地址1000 0010(0x82),后面续依次是时,日,月,年,写入地址每次递增2Write_DS1302(0x80+2*i,(DateTime[i]/10<<4)|(DateTime[i]%10));}Write_DS1302(0x8e,0x80); //加保护}//读取当前日期时间void GetTime(void){ uchar i;for(i=0;i<7;i++){ DateTime[i]=Read_Data(0x81+2*i);}}//判断是否为闰年uchar isLeapYear(uint y){ return((y%4==0&&y%100!=0)||(y%400==0));}//--------------------------------------------//求自2000.1.1开始的任何一天是星期几//函数没有通过,求出总天数后在求出星期几//因为求总天数可能会月出uint的范围//--------------------------------------------void RefreshWeekDay(void){ uint i,d,w=5; //已知1999.12.31是周五for(i=2000;i<2000+DateTime[6];i++){ d=isLeapYear(i)?366:365;w=(w+d)%7;}d=0;for(i=1;i<DateTime[4];i++)d+=MonthsDays[i];d+=DateTime[3];//保存星期,0~6表示星期日,星期一,二,、、、六,为了与DS1302的星期格式匹配,返回值需要加1DateTime[5]=(w+d)%7+1;}//日期与时间转换为数字字符void Format_DateTime(uchar d,uchar *a){ a[0]=d/10; a[1]=d%10;}Main.c#include "disp.c"#include "DS1302.c"#include "string.h"#include "DS18B20.c"uchar tCount=0;uchar Adjust_Index=-1;sbit sb1=P3^3;sbit sb2=P3^4;sbit sb3=P3^5;sbit sb4=P3^6;//年月日时分秒++/--void DateTime_Adjust(char x){ switch(Adjust_Index){ case 6: //年00-99if(x==1&&DateTime[6]<99)DateTime[6]++;if(x==-1&&DateTime[6]>0)DateTime[6]--;//获取2月天数MonthsDays[2]=isLeapYear(2000+DateTime[6])?29:28;//如果年份变化后当前月份的天数大于上限则设为上限if(DateTime[3]>MonthsDays[DateTime[4]])DateTime[3]=MonthsDays[DateTime[4]];break;case 4: //月01-12if(x==1&&DateTime[4]<12)DateTime[4]++;if(x==-1&&DateTime[4]>1)DateTime[4]--;//获取2月份天数MonthsDays[2]=isLeapYear(2000+DateTime[6])?29:28;//如果月份变化后当前月份的天数大于上限则设为上限if(DateTime[3]>MonthsDays[DateTime[4]])DateTime[3]=MonthsDays[DateTime[4]];break;case 3: //日00-28/29/30/31;调节之前首先根据年份得出该年中2月的天数MonthsDays[2]=isLeapYear(2000+DateTime[6])?29:28;//根据当前月份决定调节日期的上限if(x==1&&DateTime[3]<MonthsDays[DateTime[4]])DateTime[3]++;if(x==-1&&DateTime[3]>1)DateTime[3]--;break;case 2: //时if(x==1&&DateTime[2]<23)DateTime[2]++;if(x==-1&&DateTime[3]>1)DateTime[2]--;break;case 1: //分if(x==1&&DateTime[1]<59)DateTime[1]++;if(x==-1&&DateTime[1]>1)DateTime[1]--;break;case 0: //秒if(x==1&&DateTime[0]<59)DateTime[0]++;if(x==-1&&DateTime[0]>1)DateTime[0]--;}}//键盘中断(INT0)void EX_INT0(void) interrupt 0{ if(sb1==0) //选择调整对象{ if(Adjust_Index==-1||Adjust_Index==0)Adjust_Index=7;Adjust_Index--;if(Adjust_Index==5)Adjust_Index=4; //跳过对星期的调整}else if(sb2==0)DateTime_Adjust(1); //加else if(sb3==0)DateTime_Adjust(-1); //减else if(sb4==0) //确定{ SET_DS1302(); //将调整后的时间写入DS1302Adjust_Index=-1; //操作索引重设为-1,时间继续正常显示}}//定时器0每秒刷新LCD显示void T0_INT(void) interrupt 1{ TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(++tCount<10)return;tCount=0;Display_Flag=~Display_Flag;if(Adjust_Index==-1) //如果未执行调整操作则正常读取当前时间{ Disp_temp[17]=~Disp_temp[17]; GetTime(); }//更新星期RefreshWeekDay();//按指定格式生成待显示的日期时间串Format_DateTime(DateTime[6],Disp_temp+2);Format_DateTime(DateTime[4],Disp_temp+4);Format_DateTime(DateTime[3],Disp_temp+6);//星期Disp_temp[14]=DateTime[5]-1;//时分秒Format_DateTime(DateTime[2],Disp_temp+8);Format_DateTime(DateTime[1],Disp_temp+10);Format_DateTime(DateTime[0],Disp_temp+12);//读取温度if(DS18B20_IS_OK){ Disp_temp[15]=readtemp()/10;Disp_temp[16]=readtemp()%10;}if(Adjust_Index==6) //年if(Display_Flag==1)Disp_temp[2]=Disp_temp[3]=10;if(Adjust_Index==4) //月if(Display_Flag==1)Disp_temp[4]=Disp_temp[5]=10;if(Adjust_Index==3) //日if(Display_Flag==1)Disp_temp[6]=Disp_temp[7]=10;if(Adjust_Index==2) //时if(Display_Flag==1)Disp_temp[8]=Disp_temp[9]=10;if(Adjust_Index==1) //分if(Display_Flag==1)Disp_temp[10]=Disp_temp[11]=10;if(Adjust_Index==0) //秒if(Display_Flag==1)Disp_temp[12]=Disp_temp[13]=10;show(Disp_temp); //显示}void main(){ IE=0x83;IP=0x01;IT0=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1);}。

项目四数字万年历制作与调试

项目四数字万年历制作与调试

项目四数字万年历的制作与调试一、项目要求:⑴熟悉元器件的特点、规格,性能指标、外形尺寸、识别标志以及包装形式。

⑵分析电路原理,绘图设计PCB板。

⑶注意元件的极性,合理调试。

二、项目目标:⑴熟练掌握焊接技术,保证质量,了解自动焊接技术。

⑵掌握手工焊接SMT元器件的要求与条件步骤、SMT元器件的焊接与手工拆焊工艺。

⑶掌握浸焊、波峰焊、回流焊SMT焊接检查设备及工艺方法。

⑷掌握电子产品生产操作的基本技能及其调试方法。

⑸培养自身安全意识。

二.知识链接1.集成电路:定义:集成电路是利用半导体工艺、厚薄膜工艺、薄膜工艺,将有源器件、无源器件按照设计要求连接起来,制作在同一硅片上,形成具有特定功能的电路,并封装在管壳之中,英文为缩写为IC,也俗称芯片。

特点:体积小,重量轻,功耗低,成本低,可靠性低,性能稳定。

分类:按照制作工艺分为:半导体集成电路,薄膜集成电路,厚膜集成电路,混合集成电路;按照功能分为:模拟集成电路,数字集成电路,微波集成电路;按照集成规模分为:小规模(SSI),中规模(MSI),大规模(LSI),超大规模(VLSI);按照电路中晶体管的类别分为:双极型集成电路,单极性集成电路。

封装:封装形式:指安装半导体集成电路芯片用的外壳封装作用:起着安装、固定、密封、保护芯片等方面的作用常用的封装材料:塑料,陶瓷,金属。

金属封装特点:散热性好,可靠性高,但安装使用不方便,成本高。

一般高精密度集成电路或大功率器件均以此形式封装。

按国家标准有T和K型两种;陶瓷封装特点:散热性差,但体积小,成本低。

陶瓷封装的形式可分为扁平型和双列直插式型;塑料封装特点:这是目前使用最多的封装形式。

)圆形分装:将管底对准集成电路,引脚编号按顺时针方向排列(现应用较少)单列直插式封装(SIP):集成电路引脚朝下,以缺口、凹槽或色点作为引脚参考标记,引脚编号顺序一般从左到右排列双列直插是封装(DIP):集成电路引脚朝上,以缺口或色点等标记为参考标记,引脚编号按顺时针方向排列;反之,引脚按逆时针方向排列三脚封装:正面(印有型号商标的一面)朝向集成电路,引脚编号顺序自左向右方向排列。

数字万年历实验报告

数字万年历实验报告

一、实验目的1. 掌握数字万年历的基本原理和设计方法。

2. 熟悉单片机编程和硬件电路设计。

3. 提高动手能力和问题解决能力。

二、实验原理数字万年历是一种能够显示年、月、日、星期、时、分、秒等信息的电子设备。

它主要由单片机、时钟芯片、显示模块、按键模块等组成。

本实验采用MSP430F149单片机作为核心控制单元,通过编程实现对万年历功能的实现。

三、实验设备1. MSP430F149单片机实验板2. 1602液晶显示屏3. DS1302时钟芯片4. 按键模块5. 电源模块6. 连接线四、实验步骤1. 设计硬件电路根据实验要求,设计万年历的硬件电路。

主要包括以下部分:(1)单片机模块:使用MSP430F149单片机作为核心控制单元。

(2)时钟芯片模块:使用DS1302时钟芯片提供时间基准。

(3)显示模块:使用1602液晶显示屏显示年、月、日、星期、时、分、秒等信息。

(4)按键模块:使用按键模块实现时间调整、功能选择等操作。

2. 编写程序根据硬件电路设计,编写万年历的程序。

主要步骤如下:(1)初始化硬件设备,包括单片机、液晶显示屏、时钟芯片等。

(2)从时钟芯片读取当前时间,并显示在液晶显示屏上。

(3)编写按键处理程序,实现时间调整、功能选择等功能。

(4)编写显示程序,实现年、月、日、星期、时、分、秒等信息的显示。

(5)编写时钟芯片校准程序,实现时间的精确控制。

3. 调试程序将编写好的程序烧录到MSP430F149单片机中,通过调试工具进行调试。

主要调试内容包括:(1)检查液晶显示屏显示是否正常。

(2)检查按键功能是否正常。

(3)检查时间调整、功能选择等功能是否正常。

(4)检查时钟芯片校准是否准确。

五、实验结果与分析1. 实验结果经过调试,万年历实验板能够正常显示年、月、日、星期、时、分、秒等信息,并且可以通过按键进行时间调整、功能选择等操作。

2. 实验分析(1)万年历的硬件电路设计较为简单,主要涉及单片机、时钟芯片、液晶显示屏、按键模块等。

Excel 实验指导-制作新年万年历

Excel  实验指导-制作新年万年历

Excel 实验指导-制作新年万年历新年万年历主要是用来显示和查看当月的月历,也可以随时查阅任何日期所属的月历,使用起来既快捷又方便。

下面例子通过运用函数、公式、数据有效性、设置数字格式和插入背景图片等功能,来详细介绍新年万年历的制作方法。

1.实验目的●应用函数●运用公式●设置数据有效性●设置数字格式●插入背景图片2.操作步骤(1)新建空白工作薄,分别在G1、I1、D3至J3、D4、D5至J5、E13、H13和J13单元格区域中,输入相应内容,如图7-73所示。

图7-7Excel输入相应内容提示单击Office按钮,执行【保存】命令,在弹出的【另存为】对话框中,选择路径,并修改文件名为“新年万年历”,单击【保存】按钮即可。

输入日期及年月(2)在D1单元格中输入“=TODAY ()”公式,并在【数字】组中的【数字格式】下拉列表中,执行【其他数字格式】命令。

然后在【分类】栏中,选择【日期】选项,并选择一种日期类型,如图7-74所示。

图7-7设置日期类型提 示 选择D1至F1单元格区域,单击【对齐方式】组中的【合并后居中】按钮。

(3)在H1和J1单元格中,分别输入“=IF(WEEKDAY(D1,2)=7,"日",WEEKDAY(D1,2))和=NOW()”公式。

并设置H1的【数字格式】为【特殊】项中的“中文小写数字”类型,如图7-75所示。

图7-Excel 输入公式提 示 选择J1单元格,在【分类】栏中的【时间】项中选择一种时间类型。

(4)分别在K1和K2单元格中输入1900和1901,选择K1至K2单元格区域,将鼠标至于右下角的填充柄上,向下拖动至K151单元格。

依照同样方法,在L1至L12单元格区域中输入1至12序列,如图7-76所示。

选择单击选择执行图7-Excel 输入年份和月份(5)选择G13单元格,在【数据工具】组中的【数据有效性】下拉列表中,执行【数据有效性】命令。

并在弹出对话框的【允许】下拉列表中,选择【序列】项,在【来源】文本框中输入“=$K$1:$K$151”,如图7-77所示。

基于单片机的数字万年历的设计与实现

基于单片机的数字万年历的设计与实现

基础课程设计(论文)基于单片机的数字万年历的设计与实现专业:电气工程及其自动化指导教师:小组成员:信息技术学院电气工程系2014年12月15日摘要本次设计就是设计一款万年历,以C51单片机为核心,配备数码管显示模块、按键等功能模块。

万年历采用24小时制方式显示时间,在数码管上显示年、月、日、小时、分钟、秒等功能。

设计的核心主要包括硬件设计和软件编程两个方面。

硬件电路设计主要包括中央处理单元电路、时钟电路、执行电路等几部分。

软件用汇编语言来实现,主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。

近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领、域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

而51系列单片机是各单片机中最为典型和最有代表性的一种,通过本次课程设计进一步对单片机学习和应用,从而更熟悉单片机的原理和相关设计并提高了开发软、硬件的能力。

本设计主要设计一个基于 80C51单片机的电子时钟,并在LED上显示相应的时间,通过两个控制键和4×4键盘来实现时间的调节功能。

应用Proteus软件实现单片机数字时钟系统的设计与仿真。

关键词:单片机时钟电路 C51 万年历目录摘要 (I)1绪论 (1)1.1 方案选择与DIY电子万年历的研究情况 (1)1.1.1时钟芯片选择 (1)1.1.2键盘选择 (2)1.1.3显示模块选择 (3)1.2 DIY万年历的研究情况 (3)2 主要硬件描述 (3)2.1 89C51模块 (3)2.2 显示模块LCM12864 (4)2.2.1液晶模块概述 (4)2.2.2液晶模块特点 (4)2.3 芯片DS1302简介 (5)2.4 芯片DS18B20简介 (5)3 硬件设计与实现 (6)3.1 单片机最小系统的设计 (6)3.2 时钟电路的设计 (7)3.3 温度采集模块的设计 (7)3.4 人机交互模块设计 (8)4 系统软件设计与实现 (9)4.1 主要算法流程图描述 (9)4.2 各子程序设计 (13)参考文献 (20)1绪论多功能数字万年历已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、医院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

Excel制作万年历方法(一看就会)

Excel制作万年历方法(一看就会)

按CTRL,点击我我们将一步一步教您怎么制作EXCEL万年历!Office 2007是微软Office产品史上最具创新与革命性的一个版本。

全新设计的用户界面、稳定安全的文件格式、无缝高效的沟通协作。

Excel是Office套件中的一个重要组件之一。

直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的微机数据处理软件。

日历分为阴历和阳历。

阳历的历年为一个回归年,现时国际通用的公历(格里高历)即为太阳历的一种,亦简称为阳历;阴历亦称月亮历,或称太阴历,其历月是一个朔望月,历年为1 2个朔望月,其大月30天,小月29 天;中国的农历就是阴阳历的一种。

如何在Excel实现万年历是对Office能力的综合运用,又是分析问题并进行求解的一系列过程。

<!--[if !supportLists]-->2. <!--[endif]-->分析<!--[if !supportLists]-->2.1 整体构思在进行整体构思之前,不妨我们先看看多数日历是怎样的情形,其中:<!--[if !supportLists]-->1、<!--[endif]-->上面居中为当前年份。

<!--[if !supportLists]-->2、<!--[endif]-->然后为当年的12个月份,至于每行为3个月还是4个月取决于可见界面的大小和美观。

<!--[if !supportLists]-->3、<!--[endif]-->总所周知,一周则为7天,每个月最大31天,最小28天;如果1号为周六或周日的话,则该月可能要跨越6周;因此每个月最大的跨越为六周,事实上我们找一下其它日历的模板,就会发现一般都是六周。

所以我们可以把每个月视为一个7 *6的单元格集合。

我们将一步一步教您怎么制作EXCEL万年历!<!--[if !supportLists]-->2.2 <!--[endif]-->算法问题当我们确定了每个月事实上为7*6的单元格集合后,我们接下来要做以下几件事情:<!--[if !supportLists]-->1、<!--[endif]-->如何定位和填充相应的每月的7*6单元格在单纯的Excel表中,我们很难采用逻辑判断和循环的方式获取在7*6单元格集合中的第一个星期一应该是哪一天;但我们知道这个7*6单元格所在月的第一天即1号却是固定的,同样当日期固定后,该日期所在的星期几也是固定的,假设2010-01-01为星期五,那星期一是几号呢?很显然,为2010年1月1号向前推4天即2009年12月28号,星期二则为1月1号向前推3天,以此类推,可以推到整个42个单元格中,只不过超过当月第一天的日期则向后推了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字万年历的制作
数字显示万年历,它采用一枚专用软封装的时钟芯片,驱动15只红色共阳极数码管,可同时显示公历年、月、日、时、分、星期,以及农历月、日,还有秒点显示和整点报时、定时闹钟功能,使用220V 市电供电,预留有备用电池座,外形尺寸为长21cm×宽×厚3cm,最厚处6cm,适合放置在办公桌面上使用,具有很好的实用性。

成品外观如图1所示。

图1
图2
原理简介
电路原理图如图2所示,为了读图方便,连线稍作了简化。

从图中可以看出,IC1是一枚专用时钟芯片,Y1是32768Hz的晶振,为芯片提供时基频率信号,经过芯片内部处理后,输出各显示位的驱动信号,经过PNP(8550)型三极管做功率放大后驱动各数码管显示。

芯片采用了动态扫描的输出方式,由于人眼存在视觉暂留现象,且扫描速度比较快,因此看上去所有数码管都是在显示的。

这种方式可以有效减少芯片的输出引脚数量,简化了线路,降低了功耗。

在电源部分中,整流二极管VD1~VD4组成了桥式整流电路,将变压器输出的交流电转换为直流电,经C6滤波后,送至三端稳压块7805,输出5V直流稳压电源,为电路供电。

VD3和VD8组成互相隔离的供电电路,目的是在市电停电时,后备纽扣电池通过VD3,自动为芯片IC1提供后备电源,保证芯片计时数据不中断。

同时由于VD8、
VD9的存在,后备电池将不再向数码管供电,以节约后备电池的耗电量。

由于芯片自身耗电较低,因此靠纽扣电池也可以维持芯片在很长时间里,内部计时不中断。

当市电恢复后,7805输出经过VD8、VD9分别向芯片和数码管供电,由于DV3的存在,且纽扣电池电压为3V,低于7805输出的5V,因此纽扣电池将自动停止供电,7805输出也不会对纽扣电池充电。

VT9是唯一一只NPN(8050)型三极管,用于驱动喇叭,做为整点报时和定闹发声。

LED10、LED14是用于秒点显示的发光二极管,LED11和LED12分别是整点报时显示和定闹显示的发光二极管,均为红色。

图3是万年历的全套散件的照片。

表1是元器件清单。

图3
表1 元器件清单
17二极管400*5373×10自攻螺
6

18二极管1N60238印板1 19发光管Φ5mm红439面板1 20三极管8550840机壳1套Array
图4
拿到套件后,请先将元件袋内的元件统一放置在一个盒子里,不要散放在桌面上,以避免丢失。

图4是印板图。

装配步骤
图5
1.实物印板上也印有元件的编号和参数,对照元件清单和印板字符焊装即可。

建议先焊接电阻和二极管,利用剪下的元件引脚焊接印板上15条跨接线。

然后再焊接三极管、瓷片电容、电解电容、三端稳压块、晶振、电池簧片等,其中3只电解电容、三端稳压块7805需要卧式安装在印板上,不能立式安装,以免合盖时与面板发生碰撞
上。

二极管管身上有银色色环的一端是负极。

三极管只有左下角Q9的型号是8050,为NPN型,其余均为8550,是PNP型,注意不要搞混。

最后将15只数码管和4只发光二极管焊装在印板上,发光管短引脚是负极,管身和印板字符外圆有一小段直线的一端亦表示为负极,对应安装即可。

焊装好的印板如图5所示。

图6
2、在按键板上焊接4个微动开关和5芯导线,如图6所示。

图7
3、焊接时钟专用软封装芯片。

由于芯片是CMOS的,很容易受感应电和静电的影响而损坏,因此焊接时应将烙铁断电,用余热焊接。

芯片是直接焊接在印板走线面的。

先将芯片摆正,用焊锡将一个引脚与印板上的焊盘焊接在一起,然后查看位置是否合适,不正的话可以再重焊该引脚并修正芯片位置,确认位置合适后可将对角线上的另一引脚焊接好,此时芯片就已固定在板上了,然后依次将各引脚与印板焊接在一起,焊接时要确保不要出现引脚间搭锡短路的现象。

烙铁余热温度不足时可重新通电,加热后再断电焊接,此过程大约需要重复3次可将所有引脚焊好。

焊好的芯片如图7所示。

图8
4、分别用2颗3×6自攻螺丝将按键板和变压器固定在机壳后盖上,变压器220V一端的引线与电源引线接在一起,并用胶布把连接处包好。

电源引线在机壳入口处打个结再引出,可避免电源引线受到外力牵拉而出现故障。

再用2个带垫3×6自攻螺丝将喇叭固定,并焊好2根引线。

如图8所示。

图9
5、仔细检查印板上所有元件、跨接线、芯片等的焊接质量。

确定无误后,就可以装入机壳后盖,并将按键板的5芯导线、2根喇叭线、2根变压器输出线分别焊在印板相应位置上。

印板用3×6自攻螺丝初步固定。

如图9所示。

图10
6、再仔细检查线路,确认无误后就可以试通电,观察显示效果。

刚通电时,数码管会显示初始时间,同时喇叭也会播放一首乐曲,说明电路工作基本正常。

如图10所示。

7、接下来可进行功能检查和设置。

时间设置按“设置”按键,会看到“年”开始闪烁,再按“修改”按键,“年”开始增加,设置好年份后,再按“设置”键,“月”开始闪烁,按“修改”键,设置月份。

接下来按上述步骤依次设置好“小时”、“分钟”,最后再按一次“设置”键后,时间调整完毕,这
时秒闪自动开始闪烁。

农历和星期会自动匹配,不用单独设置。

定闹设置按“定闹”按键则进入闹钟设置状态,再按“设置”键,“小时”开始闪烁,按“修改”键设定小时。

然后再按“设置”键,“分钟”开始闪烁,按“修改”键设定分钟,最后按“退出”键恢复正常时间显示,同时定闹指示LED点亮。

如果需要取消“定闹”,则先按“定闹”按键,显示出当前设置的定闹时间,再连续按“修改”键直到时间显示“——:——”,再按“退出”按键,此时,定闹指示LED熄灭,定闹取消并恢复正常时间显示。

整点报时设置本电路具有整点报时功能,在正常时间显示状态下,按“修改”键,整点指示LED点亮,表示整点报时功能开启,再按一下“修改”键,整点报时指示LED熄灭,该功能被取消。

如果需要安装备用电池,可自行选购圆片形的大纽扣电池,建议使用型号为2032的,额定电压为3V。

备用电池仅用做市电停电后维持芯片内部计时数据之用,可以不装。

如不装通电后须重新设置时间。

安装电池只需将电池推入电池簧片中即可,使电池的正极与电池簧片相接,负极与电池下面的一条跨接线相通。

图11
8、全部检查、设置完毕后,就可以合盖了。

先将面板放置在数码管前面,四角放置在支柱上。

如图11所示。

图12
9、然后将机壳前盖扣好,在后盖并用6颗3*10自攻螺丝固定。

如图12所示。

图13
10、最后将不干胶装饰贴画贴在机壳正面的下部的预留槽内。

至此,这个万年历就组装完成了,如图13所示。

把它放在办公桌上,一个自己亲手打造的数字万年历就可以开始为你服务了。

相关文档
最新文档