温度万年历

温度万年历
温度万年历

龙岩学院

温度万年历毕业论文(设计)

题目:基于51单片机的电子万年历的制作专业:电子信息工程

作者:兰添英

指导教师(职称):任志山

(副教授)二00八年四月二十六日

基于51单片机的电子万年历制作

物理与机电工程学院电子信息工程专业

200402125 兰添英指导老师:任志山

【摘要】本次设计就是设计一款万年历,以AT89S52单片机为核心,配备数码管显示模块、按键等功能模块。分别采用A/D转换器TLC1549和温度传感器LM35来实现的。万年历采用24小时制方式显示时间,在数码管上显示年、月、日、小时、分钟、秒等功能。

设计的核心主要包括硬件设计和软件编程两个方面。硬件电路设计主要包括中央处理单元电路、时钟电路、执行电路等几部分。软件用汇编语言来实现,主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。

【关键词】单片机万年历温度传感器LM35 A/D转换器TLC1549

【绪论】万年历,就是记录一定时间范围内(比如100年或更多)的具体阳历与阴历的日期的年历,方便有需要的人查询使用。万年只是一种象征,表示时间跨度大。这次设计通过对万年历系统的设计,详细介绍了51 单片机应用中的按键处理、数码管显示原理、动态和静态显示原理、定时中断、A/D转换等原理。该系统能够显示年、月、日、小时、分钟、秒、星期、农历、温度,通过按键可以修改时间和设定闹钟等功能。此系统结构简单、功能齐全,具有一定的推广价值。

1.系统说明

1.1方案选择

●方案一:采用日历时钟芯片DS12887来产生时间,数据经单片机处理后送到数码管显示。

DS12887内部有晶体振荡器、振荡电路、充电电路和可充电锂电池。此外,片内有114B的RAM。

●方案二:采用纯单片机制作。

方案一中因为有了日历时钟芯片,这就使得单片机的软件部分简单很多。但是考虑到芯片成本高,因此采用方案二。

1.2 系统方框图:

如图1-1所示:

图1-1 系统方框图

1.3 说明

系统由51系列单片机AT89S52、按键、温度采集、数码管显示、闹钟报时,电源等部分构成。单片机部分包括时钟电路、复位电路;按键部分能够实现对时间的调整和定时时间的设定。四个按键的功能分别为:退出、闹钟、设置、修改。温度采集部分包括温度传感器、A/D转换。传感器采样进来的信号经A/D转换后送给单片机,经软件处理后送至7段共阳数码管显示。一旦定时时间到,外接电路中的音乐芯片就会发出响声。电源部分共输出2个电压,9V和5V。9V电压给TL431提供电源,5V电压给各个芯片提供电源。

2.电路模块说明

2.1 单片机电路

2.1.1 时钟电路

时钟系统是单片机的心脏,在本次设计中,包括中央处理器在内的所有单片机都是时钟系统所提供的节拍工作的。

时钟电路由外接谐振器的时钟振荡器、时钟发生器及关断控制信号等组成。时钟振荡器是单片机的时钟源,时钟发生器对振荡器的输出信号进行二分频。

CPU的时钟振荡信号有两个来源:一是采用内部振荡器,此时需要在XTAL1和XTAL2脚连接一只频率范围为0—33MHZ的晶体振荡或陶瓷振荡器及两只30pf电容。二是采用外部振荡,此时应将外部振荡器的输出信号接至XTAL1脚,将XTAL2脚浮空。

利用单片机内部的定时功能来实现时钟的走时,通过编程实现每50毫秒产生一次中断,中断20

次后,秒单元加1,秒单元加到60时,跳回到零再继续加,同时分单元加1。以次类推,从而实现秒、分、小时、年的走时。

本次设计中采用的是内部振荡器,频率为12MHZ的晶体振荡器及30pf的瓷片电容。如图2-1所示。

图2-1时钟电路

2.1.2复位电路

复位是指在规定的条件下,单片机自动将CPU以及与程序运行相关的主要功能部件、I/O口等设置为确定初始状态的过程。如果电路参数不符合规定的条件或干扰导致单片机不能正确的复位,系统将无法进行正常的工作,因此,复位电路除了要符合厂家规定的参数外,还要滤除可能的干扰。

AT89S52单片机内部有一个由施密特触发器等组成的复位电路。复位信号是从其9脚,即RST脚输入的。AT89S52单片机规定,当其处于正常工作状态,且振荡器工作稳定后,在RST端有从高电平到低电平,且高电平时间大于两个机器周期的复位信号时,CPU将完成对系统的复位。有两点需要注意:一、复位信号是高电平有效,二、高电平的保持时间必须大于两个机器周期,可见高电平保持时间与振荡频率有关。本次设计中采用上电复位电路,上电复位是指在系统上电时,RST端自动产生复位所需要的信号将单片机复位,本次设计中的上电复位电路如图所示。上电时,RST端高电平的维持时间取决于R(1k)和C(22uF)的值。要使单片机可靠的复位,设计中使其维持的时间足够长。如图2-2所示。

图2-2 复位电路

2.2 温度采集电路

2.2.1 温度传感器

该系统采用LM35作为温度传感器,LM35系列是精密集成电路温度传感器,其输出的电压线性地与摄氏温度成正比。因此,LM35比按绝对温标校准的线性温度传感器优越得多。LM35系列传感器生产制作时已经过校准,输出电压与摄氏温度一一对应,使用极为方便。灵敏度为10.0mV/℃,精度在0.4℃至0.8℃(-55℃至+150℃温度范围内),重复性好,低输出阻抗,线性输出和内部精密校准使其与读出或控制电路接口简单和方便,可单电源和正负电源工作。

图2-3LM35的管脚图2-4 LM35的电路

特性:

1、在摄氏温度下直接校准

2、+10.0mV/℃的线性刻度系数

3、确保0.5℃的精度(在25℃)

4、额定温度范围为-55℃至+150℃

5、适合于远程应用

6、工作电压范围宽,4V至30V

7、低功耗,小于60uA

8、在静止空气中,自热效应低,小于0.08℃的自热

9、非线性仅为±1/4℃

10、输出阻抗,通过1mA电流时仅为0.1Ω

极限参数:

电源电压输出电压输出电流

+35V~0.2V +6V~1.0 100mA

2.3.2 A/D转换

●方案一:采用AD0809

AD0809是一种8路模拟输入8位数字输出的逐次逼近法A/D器件,可以测量多路的模拟输入,但也占用比较多的I/O资源。

●方案二:采用TLC1549

TLC1549是一种1路模拟输入带串行控制的10位模数转换器,转换精度高,由于采用串行输入方式占用比较少的I/O资源。

这次设计只需一路的模拟输入,转换精度高要求比较高,因此选用方案二。

从温度传感器采集进来的电压信号进入到A/D转换器以形成单片机便于处理的数字信号。在该设计中,采用了美国TI公司生产的10位模数转换器TLC1549。它采用CMOS工艺,具有内在的采样和保持,采用差分基准电压高阻输入,抗干扰,可按比例量程校准转换范围,总不可调整误差达到(±)1LSB Max(4.8mv),占地面积小等特点。其引脚图见图2-5。

图2-5 TLC1549的管脚排列

其工作原理为:在芯片选择(/CS)无效情况下,I/O CLOCK最初被禁止且DATA OUT处于高阻状态。当串行接口把/CS拉至有效时,转换时序开始允许I/O CLOCK工作并使DATA OUT脱离高阻状态。串行接口然后把I/O CLOCK 序列提供给I/O CLOCK并从DATA OUT接收前次转换结果。I/O CLOCK从主机串行接口接收长度在10和16个时钟之间的输入序列。开始10个I/O时钟提供采样模拟输入的控制时序。在/CS的下降沿,前次转换的MSB出现10个时钟长度,那么在10个时钟的下降沿,内部逻辑把DATA OUT 拉至低电平以确保其余位的值为零。在正常进行的转换周期内,规定时间内/CS端高电平至低电平的跳变可终止改周期,器件返回初始状态(输出数据寄存器的内容保持为前次转换结果)。由于可能破坏输出数据,所以在接近转换完成时要小心防于止/CS被拉至低电平。时序图如图2-6所示。

图2-6 TLC1549工作时的时序图

由于它采用串行输出的方式,占地面积小,方便灵活,与单片机的接口简单,所以应用非常广泛。电路如图2-7所示。

图2-7A/D转换电路

2.3按键电路

●方案一:采用阵列式键盘

此类键盘是采用行列扫描方式,当按键较多时可以减少占用单片机的I/O口数目。

●方案二:采用独立式按键电路

每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。但是当按键较多时占用单片机的I/O数目较多。

本系统只需四个按键,因此选择方案二。

如果按键采用中断的话,可以使单片机工作更加灵活、效率更高。由于该系统要用到4个按键,考虑到单片机的中断资源不够,所以就只用外部INT0和INT1中断,另外2个按键接P1.0和P1.1口。电路如图2-8所示。

图2-8 按键电路

2.4 显示电路

●方案一:采用动态显示

这种工作方式是分时轮流选通数码管的公共端,使得各个数码管轮流导通。当所有数码管依次显示一遍后,软件控制循环,使每位显示器分时点亮。这种方式不但能提高数码管的发光效率,并且由于各个数码管的字段线是并联使用的,因而大大简化了硬件线路。

各个数码管虽然是分时轮流通电,但由于发光数码管具有余辉特性及人眼具有视觉暂留作用,所以适当选取循环扫描频率时,看上去所有数码管是同时点亮的,察觉不出有闪烁现象。

●方案二:采用静态显示

数码管工作在静态显示方式下,共阴极或共阳极点连接在一起接地或高电平。每位的段选线与一个8位并行口相连。只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。该工作方式常采用串行口设定方式0输出,外接74LS164移位寄存器构成显示电路。

由于该系统用到的数码管很多,要分3行显示,如果采用动态显示的话,单片机的I/O口资源明显不够。而采用静态显示的话,一个数码管就要对应一片74LS164芯片,这使得成本要花费很多。综合考虑后,决定采用动态显示和静态显示相结合的方法。

采用3片74LS164级联的方法来带动21个数码管显示。第一行中年、月、日的段选线串接在一起接到第一片74LS164,第二行中小时、分钟、秒、星期的段选线串接在一起接到第二片74LS164,第三行中农历月、日、温度的段选线串接在一起接到第三片74LS164。

第一片的A、B脚由单片机的RXD脚输入,第二片的A、B脚接到第一片的QH,第三片的A、B脚接到第二片的QH。三片的CLK脚共同接到单片机的TXD。

位选通信号用8个三极管来控制。千年与十时、农历十月相连接至W1;百年与时、农历月相连接至W2;十年与十分、农历十日相连接至W3;年与分、农历日相连接至W4;十月与十秒、温度十位相连接至W5;月与秒、温度个位相连接至W6;十日与星期相连接至W7;日个位接至W8。发送第1个数据时,数据暂存在第一片164芯片中;发送第2个数据时,第1个数据就移到第二片164芯片,而第2个数据就存在第一片芯片中;发送第3个数据时,第1个数据就移到第三片芯片,第2个数据移到第二片芯片,而第3个数据就存在第一片芯片中。当连续发送完3个数据后,把W1打开,这时就显示第1列的3个

数;当第2次发送完3个数据后,把W2打开,就显示第2列的3个数;依此下去就可以显示全部的数据。W1-W8由P2口来控制选通,当选通速度很快时,肉眼就看不出有闪烁现象。电路如图2-9所示。

图2-9 显示电路

2.5 电源电路

该部分有2个输出电压,9V和5V。220V交流市电通过电源变压器变换成交流12V低压,再经过桥式整流电路D1~D4和滤波电容2200uf的整流和滤波,在固定式三端稳压器LM7809的Vin和GND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过LM7809的稳压和100uf电容的滤波后,便在稳压电源的输出产生了精度高、稳定度好的直流输出9V电压。9V电压给可调分流基准芯片TL431提供电源。TL431的主要作用是给A/D转换芯片TLC1549提供比较精确的参考电压。9V电源再经过LM7805稳压后,给各个芯片提供电源。电路见图2-10。

三端稳压器是标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。三端稳压器的工作原理(以78系列为例)如下:它与一般分立元件组成的串联式稳压电路基本相似。不同的是增加了启动电路、保护电路和恒流源。启动电路是为恒流源建立工作点而设置的。恒流源随着在基准电压形成和误差放大器电路中,是为了使稳压器能够在比较大的电压变化范围内正常可靠工作。在芯片内设置了两种较完善的保护电路:一是过流保护,一是过热保护。

图2-10 电源电路

德州仪器公司生产的TL431是一个有良好的热稳定性能的三端可调分流基准源。它的输出电压用两个电阻就可以任意地设置到从Vref(2.5V)到36V范围内的任何值。该器件的典型动态阻抗为0.2Ω。

图2-11是该器件的符号。3个引脚分别为:阴极(CATHODE)、阳极(ANODE)和参考端(REF)。它在恒压电路中的应用如图2-12所示。

图2-11 TL431图

图2-12 TL431的电路

◇编程输出电压,达36伏

◇电压参考源误差:典型+/-0.4%@25℃

◇低动态输出阻抗,典型为0.22欧

◇1.0毫安至100毫安的灌电流能力

◇典型值为50ppm/℃的等效全范围温度系数

◇在整个额定工作温度范围内可进行工作温度补偿

◇低输出噪声电压

TL431的内部含有一个2.5V的基准电压,所以当在REF端引入输出反馈时,器件可以通过从阴极到阳极很宽范围的分流,控制输出电压。如图2-13所示的电路,当R1和R2的阻值确定时,两者对Vo 的分压引入反馈,若V o增大,反馈量增大,TL431的分流也就增加,从而又导致Vo下降。显见,这个深度的负反馈电路必然在VI等于基准电压处稳定,此时Vo=(1+R1/R2)Vref。选择不同的R1和R2的值可以得到从2.5V到36V范围内的任意电压输出,特别地,当R1=R2时,Vo=5V。需要注意的是,在选择电阻时必须保证TL431工作的必要条件,就是通过阴极的电流要大于1 mA 。在该系统中,2个电阻都取1K,主要是给TLC1549提供+5V的参考电压。电路如图2-13所示。

图2-13 TL431所构成的电路

在该系统中还需加一个掉电保护。掉电保护通常可采用以下三种方法:一是加接不间断电

源,让整个系统在掉电时继续工作;二是采用备份电源,掉电后保护系统中全部或部分数据存

储单元的内容;三是采用EEPROM来保存数据。由于第一种方法体积大、成本高,对单片机系统

来说,不宜采用。第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢

复后,能够继续执行程序,因而经济实用,故大量采用。EEPROM既具有ROM掉电不丢失数据的

特点,又有RAM随机读写的特点。但由于其读写速度与读写次数的限制,使得EEPROM不能完全

代替RAM。考虑到成本等各方面问题,该系统只外接一个蓄电池。当掉电后,二极管导通,这

时电源由蓄电池来提供。

2.6 闹钟电路

●方案一:采用蜂鸣器声音指示。蜂鸣器又分无源和有源两种。前者需要输入声音频率信号

才能正常发声,后者则需外加适当直流电源电压就可以了。

●方案二:采用发光二极管来代表闹钟闹铃。

●方案三:外接音乐芯片。一旦定时时间到,单片机就给音乐芯片一个触发脉冲,使芯片工

作发出响声。

这三种方案的电路都很简单,但考虑到方案一中蜂鸣器发出的响声不悦耳,因此不采用;方案二用发光二极管起不到很好的报警提示作用,故也不采用。方案三虽外接音乐芯片使成本提高,但可以起到很好的报警作用,因此采用方案三。

2.7 总电路图:(见图2-14)

图2-14 总电路图

3. 程序流程图3.1主程序流程图

3.2按键扫描程序流程图

3.3设置时间程序流程图(INT0中断) 3.4修改时间程序流程图(INT1中断)

3.5时间程序流程图(T0中断)

3.6温度采集程序流程图

3.7闹钟程序流程图

3.8公历转农历程序流程图

4.系统调试和设计效果

4.1系统调试

硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性错误。由于在做板过程中出了点错误,导致腐蚀板出现挺多断线。经万用表检查,手工慢慢焊接好后接入电源。再用万用表检查各个芯片管脚的电压是否达到正常的工作电压,然后判断是否有存在短路现象等,经一步步修改后把硬件调试好。

程序的调试是采用一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能等;最后逐步将各子程序联接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。

在程序调试过程当中,主要是判断进位的问题。要调试它在大小月中进位会不会出现错误,尤其是十六进制和十进制之间的问题。有时候没考虑清楚,在运算过程当中就会经常出现错误。在显示部分中,我是把第一行显示写好后,再写第二行,然后第三行,再把这三行显示结合在一起。在温度采集中,要把传感器采集进来的信号经过A/D 转换后,再进行乘法和除法运算,BCD 码转换。还有就是判断闰年和闰月的问题,公历纪年法中,能被4整除的大多是闰年,能被100整除而不能被400整除的年份不是闰年,能被3200整除的也不是闰年。

4.2使用说明

刚上电时,由于单片机复位后I/O 口输出高电平,音乐芯片就触发导通发出响声。4个按键的功能分别为:退出、闹钟、设置、修改。

退出键:当数码管显示闹钟时间时,按下退出键后,显示就切换到当前时间,同时设置键中选择的要修改的时间位也回到初始位置。

闹钟键:用来设定闹钟。要设定闹钟时,应先按下闹钟键,这时显示画面就切换到闹钟时间,然后通过设置键和修改键修改定时时间。

设置键:用来选择要修改的时间。当数码管显示当前时间时,选择的是当前时间;当数码管显示闹钟时间时,选择的是闹钟时间。在选择时间后要结合修改键要调整时间。

修改键:用来修改设置键选择的要修改的时间。每按一下修改键,选择的时间值就加一。

4.3设计效果

1 .经过不断的调试以后,总体功能达到了预期效果。时间误差很小,运行一天以后时间误差几乎感觉不出来。如下表4-1所示是与北京时间相对照测试出的时间数据: 表4-1:时间误差测试数据表

北京时间段 测量时间段 时间误差(秒)

第一天 24:00:00 24:00:07 7 第二天 24:00:00 24:00:08 8 第三天

24:00:00

24:00:08

8

结论:从以上的数据测试可知显示时间基本和北京时间相符,基本符合设计要求。

2. 显示的温度也接近于外界温度,用手捏住温度传感器,温度显示也会慢慢升高。如下表4-2所示是在3个不同时间与水银温度计所测试的温度数据: 表4-2:温度误差测试数据表 水银温度计所测试(℃)

数码管所显示(℃)

温度误差(℃)

第一次

22 23 1 第二次 25

26 1 第三次

28

29

1

时 间

天 数

次 数

结论:从以上的测试数据可知显示温度与水银温度显示的数据基本相同,基本符合设计要求。

总结:从以上两个测试的数据表可知,时间和温度的误差很小,基本符合设计要求。随意调整公历日期后,相对应的农历日期和星期也跟着改变。通过按键可以修改当前时间和闹钟时间。当定时时间到,小喇叭就发出音乐响声,乐曲完后就停止。

5.结论

以上是本人设计的一款基于51单片机的电子万年历,详细介绍了设计的思路、原理、结构、框图等。这款万年历的设计成本低廉,结构简单,功能齐全总体达到了设计要求,具有一定的推广价值。

6.致谢辞

紧张的毕业设计就要结束了,大学四年的生活也到了尾声。在设计的过程中我们要特别感谢我们的导师任志山老师,本次设计是在任老师悉心指导下完成的,从系统方案的确立、电路板的设计到软硬件的调试、论文写作当中,多次给予细心指导,指出了设计过程中存在的不足和需要改进的地方,使得能顺利完成这次毕业设计。在此,向任老师表示由衷的感谢!感谢学校、院老师对我大学四年来的培养、关心及支持。同时感谢同学在此次毕业设计过程中对我莫大的鼓励与帮助。我一定在今后的工作与生活中好好努力,利用所学习的知识,为社会贡献自己的力量,不辜负学校和老师对我的希望。最后谨以此文献给多年来教导鼓励我的父母和所有关心支持我的家人。新的人生旅途就要启程,话别昨天,追寻未来,祝愿我自己,也祝愿亲人、师长、同学和朋友未来一切顺利。

参考文献:

[1] 苏家健,曹柏荣,汪志锋 .单片机原理及应用技术[M]. 高等教育出版社

[2] 付家才 .电子实验与实践[M]. 高等教育出版社

[3] 张毅刚 .单片机原理与应用[M]. 高等教育出版社

[4] 陈阳海.单片机的典型结构及AT89S5X系列单片机[J].电子制作,2006,1

[5] 周雪 .模拟电子技术[M]. 西安电子科技大学出版社

[6] 严天峰 .单片机应用系统设计与仿真调试[M]. 北京航空航天大学出版社

[7] 李东生,张勇,晁冰 .PROTEL DXP[M]. 电子工业出版社

[8] 王青.温度传感器DS18B20和51单片机的接口技术及应用[J].电子制作,2006,7

[9] https://www.360docs.net/doc/e07394866.html,/cx/upfiles/200592420228840.doc

[10]杨垒,于泉生,郭静梅.基于AT89S52的定时器设计[J] 山东大学学报,2006,5

[11] https://www.360docs.net/doc/e07394866.html,/5428784.html

Based on the 51 SCM production of electronic calendar

Physics and Electrical and Mechanical Engineering College

Electronic and Information Engineering

200402125 Lan tianying Teacher: Ren zhishan

[abstract]this design designs section of ten thousand calendars, take at89S52 monolithic integrated circuit as the core, provides pressed key functional modules and so on display module, pressed key. Uses A/D separately switch TLC1549 and temperature sensor LM35 realizes. Te n thousand calendars use 24 small tense way tell time, demonstrates the year, the month, Japan, the hour, the minute, the second on the pressed key and so on functions.

the design's core mainly includes the hardware design and the software programs two aspects. The hardware circuit design mainly includes the central processing element electric circuit, the clock circuit, the executive circuit and so on several parts. The software realizes with the assembly language, mainly includes software modules and so on master routine, keyboard scanning subroutine, time establishment subroutine.

[key word]Monolithic integrated circuit ten thousand calendars Temperature sensor LM35 A/D switch TLC1549

带温度显示的万年历_数码管显示(附电路图和源代码)

设计报告 设计任务: 设计一个智能化万年历时钟电路,LED数码管作为电路的显示部分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度。并能准确计算闰年闰月的显示。设计要求: 通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,三个个按钮连接P3.0、P3.1、P3.2可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术所连线路和单片机接口仿真图如图3所示: 图3 仿真按键 4)温度采集部分: DS18B20温度传感器,测温范围-55℃~+125℃,固有测温分辨率0.5℃。独特的单线接口方式,DS18B20在与微处理器

连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。DS18B20的采集数据通过DQ传入单片机,单片机读取数据后将数据输出!如图所示 : 程序如下: ReadOneChar(void) { unsigned char i=0;// 定义i用于循环 unsigned char dat = 0;// 读取的8位数据 for (i=8;i>0;i--)//8次循环 { DQ = 0;// 拉低DQ总线开始读时序 dat>>=1;// dat左移一位 DQ = 1; //释放DQ总线 if(DQ)// 如果DQ=1,执dat|=0x80;(0x80即第7位为1,如果DQ为1,即读取的数据为1,将dat的第7为置1,然后dat>>=1,循环8次结束,dat 即为读取的数据) //DQ=0,就跳过 dat|=0x80; Tdelay(4);// 延时以完成此次读时序,之后再读下一数据 } return(dat); 返回读取的dat } //写一个字节 WriteOneChar(unsigned char dat) { unsigned char i=0;// for (i=8; i>0; i--)// { DQ = 0;// DQ = dat&0x01;// Tdelay(5);//延时以完成此次读时序,之后再读下一数据

C++万年历实验报告

《高级语言程序设计》课程设计报告万年历程序设计

(1)课程设计名称:C++万年历设计 (2)使用工具软件:Microsoft visual C++ (3)课程设计内容简介 1、以开关语句进行执行功能的选择,这些功能分别是: A、判断闰年; B、判断某天是星期几; C、判断某年的隶属生肖; D、输出某年的日历; E、输出某月的日期; F、退出系统; 2、建立类wnl,定义类的成员函数; void isleapyear(); //判断闰年,用于输出判断结果,以流的形式bool isleap(int year); //判断闰年,返回判断结果,用于计算天数int getdays(int year,int month,int day); //获取据第一天天数 void weekdays(int year,int month,int day);//获取星期几 void printyear(int year); //输出年的日历 void printyearmonth(int year,int month); //输出某年某月的日历 void animal(int year); //判断某年的生肖 int getyear(){return Year;} //返回私有成员的值 int getmonth(){return Month;} int getday(){return Day;} 3、定义私有成员:i nt Year,Month,Day; 4、定义类的对象:_wnl; 5、为类的成员函数填写代码,满足功能实现; 6、运行环境:控制台应用程序的源程序; (4)得意之处: 1、可以满足多功能实现,可以循环执行功能; 2、可以选择每行输出的月份数; 3、有欢迎界面; 4、客户输入错误会有提示; 5、使用了C语言的流的形式,判断闰年,提高执行速度; 6、使用I/O流控制头文件iomanip.h控制月份日历的输出,更加整齐;(5)创意的技术实现

带温度计的万年历

设计课题题目: 带温度计的万年历 一、设计任务与要求 1. 显示准确的北京时间(时、分、秒)及公历日期显示功能(年、月、日); 2. 可通过按键切换年、月、日及时、分、秒的显示状态; 3. 可随时可以调校年、月、日或时、分、秒; 4. 可每次增减一进行时间调节,也可快速增减进行时间调节; 5. 可显示环境温度。 二、系统设计方案 方案一、用主芯片为AT89C51的单片机控制实现,使用单片机内部的定时计数器实现时间的设定,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS 公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配处理器等优点。显示时间和温度使用数码管显示。 方案二、用主芯片为STC89C52的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,温度传感器使用 DS18B20。显示时间和温度使用LCD1602显示。 方案一片内定时器会导致计时节拍的时间误差,当进行年、月、日的日历计时,定时中断误差扥积累就会很大。使用片内定时器进行计时的时候,单片机始终要处于工作状态。才能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。为了满足单片机系统的实时钟需求,本设计采用的是方案二,系统框图如图2-1所示。 图2-1 三、单元电路分析与设计 1. 原理分析 1.1主控制器 单片机STC89C52 具有低电压供电和体积小等特点,如图3-1所示。

1.2晶振电路 AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C1、C2按图3-2所示方式连接。晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz 之间,电容C1、C2取值范围在5~30pF 之间。 根据实际情况,本设计晶振选择频率为12MHZ ,电容选择30pF 如图3-2。经计算得单片机工作的机器周期为:12×(1÷12M )=1us 。振荡器的振荡信号从XTAL2端输入到片内的时钟发生器上。时钟发生器是个二分频的触发器,它将振荡器的信号频率fosc 除以2,向CPU 提供两相时的时钟号。 1.3复位电路 时钟电路工作后, 芯片内部开始进行初始复位,如图3-3 。 1.4 LCD 显示电路 显示器是单片机常用的功能单元之一,显示器的工作是由单片机通过显示接口驱动的。本设计采用的是LCD1602显示电路图如图3-4所示。

电子万年历实验1

电子万年历实验 实验要求: 在LCD (12864或者1602)上显示: 年月日 星期 时间 可以 自由修改显示的 年月日 星期 时间 实验需求: 硬件需求: 1.需要按键做初始化等需求 2.需要LED 作为显示输出。 2需要一款硬件作为实时时钟 器件选型 DS1302 实时时钟芯片,三线接口,带涓流充电。 DS1307 实时时钟芯片,I2C 接口。 DS1337 实时时钟芯片,I2C 接口,带两个日历闹钟。 PCF8563 实时时钟芯片,I2C 接口,带中断输出。 PCF8583 实时时钟芯片,I2C 接口,带中断输出,内置的32.768KHz 振荡器,256个字节RAM ,但性价比较差。

选型结论: LCD:12864 键盘:4*4矩阵键盘 实时时钟芯片:DS1302 结构框图 DS1302 DS1302 是DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM 可通过简单的串行接口与单片机进行通信 可提供: --秒分时日日期月年的信息 --每月的天数和闰年的天数可自动调整 --可通过AM/PM 指示决定采用24 或12 小时格式

--保持数据和时钟信息时功率小于1mW

DS1302引脚 X1 X2 32.768KHz 晶振管脚 GND 地 CE 复位脚 I/O 数据输入/输出引脚 SCLK 串行时钟 Vcc1,Vcc2 电源供电管脚 各引脚的功能为: Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出; I/O:三线接口时的双向数据线; CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次, CE提供结束单字节或多字节数据传输的方法。

EDA实训万年历

《EDA技术与应用》实训报告指导教师:

实训题目:数字日历 1. 系统设计 1.1 设计要求 1.1.1 设计任务: 设计一个数字日历电路 1.1.2 技术要求: ⑴用Verilog HDL 语言设计一个数字日历。 ⑵数字日历能正确显示年、月、日、时、分和秒。 ⑶通过开关分别控制对年、月、日或时、分、秒校对及自动切换、,并且运用 按钮对年、月、日或时、分、秒校对。 ⑷通过按钮对数码管全部清零。 ⑸拓展功能:添加时钟闹钟功能,并通过LED管显示。 1.2 方案比较: 由于这次实验用到的仪器是EDA实训仪,数码管个数只有八个,因此不能同时显示年、月、日、时、分、秒。但是实训仪的LED管只有12个,因 此在拓展功能时12 小时做一个周期的整点记时显示。在多次的测试和修改 后,得到此最好方案。 1.3 方案论证 1.3.1 总体思路: 通过EDA S程的学习,可知运用Verilog HDL语言设计一个数字日历 括计时器模块(jsq60、j sq24 )、年月日模块(nyr2009)、控制模块 (conr)、校时选择模块(mux_4、显示选择模块(mux_16和闹钟定时模块 (LED1)、闹钟灯模块(nzd);然后将各个模块连接起来画成原理图再下载 到实训仪上,调节开关及按钮来实现数字日历的功能。 1.3.2 设计方案: 总原理图如下:

2 ?各个模块程序的设计 (1)设计一个分频器进行20MHz分频得到实训所需的1Hz的频率 分析:这是个20MHZ寸钟的分频器,将原来EDA实训仪提供的频率为20MHZ 的时钟转换成频率1HZ的时钟,然后输出到有需要的端口,触发模块起作用。 ⑵分别设计一个能显示年月日和时分秒的程序 校准年月日和秒分时的原理图如下: 分析:①当k=0时,开关j1,j2,j3校秒时分然后将信号分别送到jsq24模块的jm(校秒)、jf (校分)、js (校时)。 ②当k=1时,开关j1,j2,j3校年月日然后将信号分别送到nyr2009模块的jr(校日)、jy (校月)、jn (校年)。 计算年月日的模块如下: FIHI Ilk m ■!:! 下町nr TUT TFT) H'j 31 , mzitc' FIH iOS H<匚; rm c 计七匚― H ?- i-im LTJ rn ?■ FIM Cl | r-NLCs' M'l t Fl处i/l FIW反

万年历实验报告

篇一:电子万年历实验报告 重庆电力高等专科学校 计算机科学系 实训报告 课程名称 实验名称 班级信息0911 姓名廖林单片机应用技术电子万年历 学号 200903020243 教师任照富 日期 2010-12-28 地点一教七机房一、实训任务: 1、看实训要求,计划出自己实训所要用元件,在网上查找资料。 2、思考仿真原理图,然后画出来(具体i/o口暂时不确定)。 3、在网上找一些程序,然后自己改一些,进行编译。 4、编译无误之后,跟原理图相联系,完成最终的仿真图。 5、进行最后的改写,把程序和仿真原理图确定下来。 6、根据仿真图形,制作出实物图。 7、在实物制作过程中,进行电路检查和最后的调试。 二、实训要求: 要求:能显示阳历的年、月、日、星期、时、分、秒; 能显示阴历的年、月、日; 能进行日期、时间的调整。 扩展:能显示当前温度; 有闹钟功能(至少2个) 选择ds1302时钟芯片,温度传感器采用ds18b20数字温度传感器。 三、实训环境(软件、硬件): 软件:keil protues7.5 硬件:计算机2单片机的应用 四、实训意义:在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人,而数字化的钟表给人们带来了极大的方便。由于单片机具有灵活性强、成本低、功耗低、保密性好等特点,所以电子日历时钟一般都以单片机为核心,外加一些外围设备来实现。 电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。所以,电子万年历无论作为竞赛题目还是毕业设计题目都是很有价值。对于这个实验项目,我们还要有一些其他的基本知识掌握和意义:(1)在学习了《数字电子技术》和《单片机原理及接口技术》课程后,为了加 深对理论知识的理解,学习理论知识在实际中的运用,为了培养动手能力和解决实际问题的经验,了解专用时钟芯片ds1302,并会用ds1302芯片开发时钟模块,应用到其他系统中去。熟悉keil和protues软件调试程序和仿真. (2)通过实验提高对单片机的认识; (3)通过实验提高焊接、布局、电路检查能力; (4)通过实验提高软件调试能力; (5)进一步熟悉和掌握单片机的结构及工作原理。

万年历阴历星期温度

#include #include #include #define uchar unsigned char #define uint unsigned int sbit CLK=P1^1; //DS1302时钟线 sbit SDA=P1^0; // DS1302数据线 sbit RST=P1^2; //DS1302复位线 sbit RS=P2^0;//数据/指令选择端口 sbit RW=P2^1;//读写端口 sbit EN=P2^2;//使能端口 sbit K1=P3^4; // 选择 sbit K2=P3^5; // 加 sbit K3=P3^6; // 减 sbit K4=P3^7; // 确定 uchar tCount=0;//一年中每个月的天数,2月的天数由年份决定 uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; uchar *WEEK[]={"sun","mon","tus","wen","thu","fri","sat"};//周日,周一到周六 uchar LCD_DSY_BUFFER1[]={"Date 00-00-00 "}; //LCD显示缓冲 uchar LCD_DSY_BUFFER2[]={"Time 00-00-00 "}; uchar DateTime[7]; //所读取的日期时间 char Adjust_Index=-1; //当前调节的时间:秒,分,时,日, uchar Change_Flag[]="-MHDM-Y"; uchar Read_LCD_State();//读LCD状态 void LCD_Busy_Wait();//判忙 void Write_LCD_Data(uchar dat);//写数据 void Write_LCD_Command(uchar cmd);//写命令 void Init_LCD();//LCD初始化 void Set_LCD_POS(uchar p);//设置显示位置 void Display_LCD_String(uchar p,uchar *s);//写字符串 void DelayMS(uint x)//延时 { uchar i; while(x--) for(i=0;i<120;i++); } uchar Read_LCD_State()//读LCD状态 { uchar state;

万年历_开题报告

xxxxx 毕业论文(设计) 开题报告 题目基于年历设计 学院电气工程学院 年级 xxx级 专业电子信息工程 姓名宋飞 学号 2011588693 指导教师欧阳飞 教务处制表 2012年12月10日

一、选题依据 课题来源、选题依据和背景情况;课题研究目的、学术价值或实际应用价值时间对人们来说总是那么宝贵,工作的忙碌和繁杂容易使人忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己和他人带来很大的麻烦。平时我们要求上班准时,约会或召开会议必然要提及时间:火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的。 想知道时间,手表当然是一个很好的选择,但是,在忙碌当中,我们还需要个“助理”及时的给我们提醒时间。所以,计时器最好能够拥有个定时系统,随时提醒容易忘记时间的人。最早能够定时、报时的时钟属于机械式钟农,但这种时钟受到机械结构、动力和体积的限制,在功能、性能以及造价上都没办法与电子时钟相比。 电子万年历是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必须品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时报警、按时自动打铃、定时广播、自动启闭灯箱、通断动力设备、甚至各种定时电气的自动启动等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。在国内:单片机的学习呈上升趋势,但很多人学习是无头绪,不知道从何入手,行业发展迅速,国内生产技术不断提升。国内企业为了获得更大的投资收益,在生产规模和产品质量上不断提升,开发单片机呈必然趋势。我国生产的电子万年历有很多,总体上来说是研究多功能电子万年历为主,使万年历除了具有原来的时间、日期等基本功能外,还具有闹钟,报警等功能,商家生产的电子万年历更从质量、价格、实用上考虑不断改变电子万年历的设计,使其更有市场。在科技发达的今天,智能化必将是以后的发展趋势,所以开发活和学习单片机是社会发展的必然需求。

lcd数显温度万年历电波钟

外观尺寸:29cm(宽)*18.5cm(高) 可挂可摆,背面有挂孔,可挂在墙上,也可以安装随机配送的支架摆放在台面上。 电子说明书地址:https://www.360docs.net/doc/e07394866.html,/item.htm?spm=a1z09.5.0.4 0&id=16362908718 功能特点: 1、时间显示:时:分:秒,12/24小时制可选 2、日历显示:日/月 3、星期显示:英文简写 4、温度显示:摄氏或华摄,范围:0℃-50℃(32℉-122℉),分辨率:0.1℃。 5、闹铃功能:可设置1个闹铃时间。 6、特殊日期提醒功能:可设置三个特殊日期提醒。 使用电源:两节AA电池(不配送电池),超省电,两节电池可使用一年以上。 使用说明: 一、信号自动同步: 当时钟正确装上电池后,稍等几秒,自动开始接收日本发射的无线电校时信号,接收过程中屏幕右上角显示一个闪动的信号接收塔标识。当接收到正确的时间信号后,接收塔标识停止闪动并自动同步时间和日历信息,时钟每天会定时进行接收,无须人工干预。如果接收不成功,时钟仍可以作为一个高精度石英钟使用。 时钟在接收信号的过程(接收塔标识闪动)中无法进行其他功能的操作,如果需要进行其它设置或取消接收,须按下‘+’键退出接收状态。为了达到最好的接收效果,应将时钟远离其它用电器至少在1-2米以上,并可以适当转动时钟位置以获取最佳接收效果。 二、信号手动同步: 在正常的时钟显示模式,长按‘+’键,强制进入信号接收状态,此时收塔标识闪动,接收过程与自动同步一样。 三、手动设定时钟、日历: 在正常的时钟显示模式,长按‘CLK/CAL’键,进入时间日历设置界面,当前设置项目闪动,通过短按‘+,-’键调整数值,再短按‘CLK/CAL’确认并进入下一设置项目。设置项目顺序:12/24时制—小时—分钟—年—月—日—时区。 四、每日闹钟设置: 在正常的时钟显示模式,长按‘ALARM’键,进入闹铃设置界面,通过短按按‘+,-’键输入每天的闹铃时间,最后按‘ALARM’键确认。 在正常的时钟显示模式,短按‘-’键可以开启和关闭闹铃功能,当闹铃响时,按任意键都可以关闭闹铃。 五、特殊日期提醒设置:

万年历课程设计实验报告

百度文库- 让每个人平等地提升自我 黄淮学院 JAVA 课程设计报告 题目:《万年历》课程设计 学院:信息工程学院 专业:计算机科学与技术 班级:计科1101班 指导老师: 二0一三年六月

目录 前言 (2) 1需求分析 (2) 1.1需求分析 (2) 1.2功能设计 (3) 2.概要设计 (3) 2.1程序设计思路 (3) 3.流程图 (5) 4.程序的主要类,和说明: (6) C (17) F (18) G (18) I (19) M (19) S (19) U (20) 类分层结构 (20) 接口分层结构 (21) 前言 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、

Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都 有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。 1需求分析 1.1需求分析 本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。 1.2功能设计 本程序要构建的万年历程序,其功能有以下几个方面: (1)实现图形界面,通过简单的单击按钮能实现查询日期操作。 (2)能以月历形式显示日期与星期。 (3)提供月份的下拉形式菜单来选择月份。 2.概要设计 2.1程序设计思路 (1)日期类的设计: 设定日期年的方法 public void changeYear(String year){ cal.set(Calendar.YEAR,Integer.parseInt(year)) ; updateCalendar();//每次修改年后,更新日期

基于51单片机带温度显示的液晶万年历

摘要 在寒假期间我用一周时间完成了这个液晶万年历,它可以显示年月日、时分秒、以及温度(可上下限报警),可以对时间进行加一或减一调整,并加入了闰、平年时间调整,方便可行,已经调试成功。考虑到成本和方便,本作品采用了STC89c52和DS18B20,计时用的是51单片机自带的十六位定时器/计数器T0,尽管对时间进行了误差调整但是还是有一定的误差,考虑到学校后改用DS1302时钟芯片,进一步减小误差。温度显示精度达到0.1摄氏度。 关键词:单片机 DS18B20 万年历温度 1.硬件工作介绍 (1)上电自动复位及手动复位电路 STC89c52单片机的RST端外部复位有两种操作方式:上电自动复位和按键手动复位。本设计用上电自动复位以及手动复位下结合的方式外接电路(见附图)。 (2)时钟振荡电路 作品中采用12M晶振,其连接方法如图所示,其中电容的值都为22pF。(3)1602液晶显示接口 1602采用标准的16脚接口(见附图),其中: 第1脚:GND为地电源 第2脚:VCC接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。 第15脚:VCC 第16:GND (4)键盘 键盘是通过S3(P3.2),S4(p3.3),S5(p3.4)对时钟进行调整,其S3选择要调整的对象如时,分,日,月等等,并在液晶屏上显示所选的对象。S4对所选中

万年历时钟实验报告

万年历时钟设计报告 专业: 年级: 姓名: 学号: 指导老师:

万年历的设计与仿真 一、实验目的; 电子时间显示器现在在任何地方都有涉及到,例如电子表和商场、车站的时间显示等等,所以它是一种既方便又实用的技术,而我们所做的万年历则是在它的基础上做出来的,通过万年历的制作,我们可以进一步了解计数器的使用,了解各个进制之间的转换,以及他的任意进制计数器的构成方法等,并且进一步了解74LS160以及74ls90的性质,以及门电路的使用等。 二、实验要求: A. 设计一个能显示“年月日”、“星期”、“时分秒“的十进制万年历时钟显示器; B. 要求要满足一天24小时,一小时60分,一分60秒; C. 关于显示星期天时,要用8来代替; D. 年月日显示时,要满足大月31天,小月30天,闰年二月29天,平年二月28天; 三、实验器材: ISIS 仿真软件、一些常用逻辑门(与门、非门,或门等); 本实验要用到得芯片有:74ls160 74ls161 74ls160 74ls160: 74ls160是一块十进制上升沿触发计数器如右下图: 其中MR 是异步清零端,LOAD 是同步置数端 CLK 是时钟脉冲输入端;D0、D1、D2、D3是 置数输入端,Q0、Q1、Q2、Q3是计数输出端, RCO 是进位端; 74ls161与74ls160的功能基本相同,74ls160是十进制的,而74ls161是十六进制的。 异步清零端 进位端 同步置数端

置九端 74ls90: 74ls90是一块二—五—十进制计数器其图如下: 其中 2、3端为置零端,6、7端为置九端, CKB 为五进制脉冲输入端,CKA 二进制脉冲输入端, ,Q0、Q1、Q2、Q3是计数输出端; LED 七段显示器: 其功能是将BCD 码以十进制形式显示出来,其图如下: 四、万年历时钟构架图: 万年历时钟显示器需要有显示“年”、“月”、“日”、“星期”、“时”、“分” “秒”的功能,又根据它们之间的进位和置位关系 可知,它们主要有以下各部分组成,其整个电路的 框架图如下图所示: 五进制脉冲输入端 置零端 二进制脉冲输入端

可以显示温度的万年历程序(已在PD1000开发板上运行)

//1602+18b20+ds1302程序 // 程序名称:1602+18b20+ds1302程序 // 实验目的:综合应用lcd1602,ds18b20,ds1302 // 连接方法:将LCD1602液晶屏插到J9端子上引脚朝下 // JP8与JP5 用8p排线连接 // 描述:液晶显示当前时间(可调整),温度(精度可调) // K1设置键 K2递增键 K3递减键 // 版本:PD1000开发板 // 作者:青岛普爱特 // 日期:2011.02.28 //注:(1):主芯片STC89C52RD 使用12M晶振 // (2):Keil uV3 3.30编译运行通过 // (3):本例程在 PD1000 开发板平台上成功运行通过 // (4):青岛普爱特版权所有,只供学习参考,不得应用于商业用途. // (5):公司网站:https://www.360docs.net/doc/e07394866.html, 淘宝网店:https://www.360docs.net/doc/e07394866.html, #include #include #include #define uchar unsigned char //功能引脚定义 sbit set= P1^0; //设置调整按键 sbit up = P1^1; //加键 sbit down =P1^2; //减键 sbit LCM_RS= P2^5; //l602定义引脚 sbit LCM_RW= P2^6; sbit LCM_E =P2^7; #define LCM_Data P0

#define Busy 0x80 //用于检测LCM状态字中的Busy标识 uchar id,timecount,dipsmodid; bit lmcinit_or_not; //是否需要清屏标志位“1”为需要“0”为不需要 bit flag,sflag; //flag是时钟冒号闪烁标志,sflag是温度负号显示标志void Disp_line1(void); //显示屏幕第一行 void Disp_line2(void); //显示屏幕第二行 void id_case1_key(); void Disp_mod0(void); //*********** DS1302 时间显示定义部分 sbit T_IO =P3^4; sbit T_RST=P3^5; sbit T_CLK=P3^6; sbit ACC0=ACC^0; sbit ACC7=ACC^7; void Set(uchar,uchar); //根据选择调整相应项目 void RTInputByte(uchar); /* 输入 1Byte */ uchar RTOutputByte(void); /* 输出 1Byte */ void W1302(uchar, uchar); // 向DS1302写入一个字节 uchar R1302(uchar); // 从DS1302读出一个字节 void Set1302(unsigned char * ); // 设置时间 bit sec,min,hour,year,mon,day,weekk; //闪烁标志位 //初始化后设置为:11年02月28日星期1 08点11分59秒 unsigned char inittime[7]={0x59,0x11,0x08,0x28,0x02,0x11,0x01}; // 秒分钟小时日月年星期 //***** 18B20温度显示定义部 sbit DQ=P3^7; //18B20 接P3.7口 typedef unsigned char byte; typedef unsigned int word; Read_Temperature(char,char); void mychar(void); byte ow_reset(void); byte read_byte(void); void write_byte(char val); void adjust_res(char res); //res 分别等于 0x1f, 0x3f, 0x5f 温度读数分辨率分别对应 // 0.5, 0.25, 0.125

电子万年历

河北科技师范学院课程设计说明书 题目: 学院(系): 年级专业: 学号: 学生姓名: 指导教师:

摘要 本设计是电子万年历。具备三个功能:能显示:年、月、日、时、分、秒及星期信息,并具有可调整日期和时间功能。 我选用的是单片机8052来实现电子万年历的功能。该电子万年历能够成功实现时钟运行,调整,显示年月日时分秒及星期,温度等信息。 该电子万年历使用12MHZ晶振与单片机8052相连接,通过软件编程的方法实现了以24小时为一个周期,同时显示小时、分钟和秒的要求。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。 电子万年历设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,这样一来就降低了硬件电路的复杂性,从而使得其成本降低,更适合我们大学生自主研发。所以在该设计与制作中我选用了单片机8052,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, 单片机8052的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。 因此,采用单片机8052原理制作的电子万年历,不仅仅在原理上能够成功实现计时等功能,也更经济,更适用,更符合我们实际生活的需要,对我们大学生来说也更加有用。

多功能液晶显示万年历、温度计

实验报告 实验名称:多功能液晶显示万年历、温度计的制作 所在专业:测控技术与仪器 学生姓名: 班级学号: 任课教师:陆婷 2014 /2015 学年第一学期

摘要:多功能液晶显示万年历、温度计具有造型美观、经济实用,性能稳定、耗电少等优点。实验内容为学习PCB板的设计和绘制方法,完成一个多功能万年历、温度计的装配及调试。 一、设计目的:1. 了解并掌握多功能液晶显示万年历、温度计的主要工作原理,更好的理解和掌握平时所学的电子电路理论知识; 2.认识贴片元件,学习贴片元件的装配方法和PCB板的设计和绘制方法; 2.通过自己亲自动手装配,锻炼动手能力,提高学生解决实际电路问题的能力。还能激发学生的好奇心。 二、基本功能说明: (1)液晶同屏显示年、月、日、星期、时、分、秒,正常走时状态下,外围电路设有一LED秒指示灯,每秒闪烁一次。 (2)开机画面显示3秒,显示相关制作信息3秒,清屏后进入正常走时状态。 (3)整点报时功能,早8点到晚10点,多首歌曲在整点时刻循环播放,每首歌曲的长度均控制在一分钟以内。 (4)公历和农历所有的节日提醒,均在屏幕最下面一行显示。如果当天是某个节日,则显示相关节日信息,若当天无任何节日,则可显示当天的各个时段信息,如:凌晨、早晨、上午、中午、下午、

晚上、夜里、深夜等。 (5)实时温度显示,精确到小数点后一位。(6)时间调整:在正常走时状态下,按SET键进入时间调整界面,可以依次调节年、月、日、星期、时、分等信息,按CLK键退出当前的调整状态,恢复正常走时。 (7)闹钟调整:在正常走时状态下,按CLK键,进入闹钟设置界面,可以依次调节闹钟小时、闹钟分、闹钟开启和闹钟关闭。当想要设置闹钟时,设置好小时、分之后,再按此键至闹钟开启,按SET键即可退出闹钟设定界面,闹钟设置完成,若不想使用闹钟,就按CLK 键至闹钟关闭状态时,再按SET键退出界面,则闹钟被关闭。(8)外部电路设有扬声器开关,用户可根据需要自行开关扬声器。(9)电路板界面设计人性化,便于人机交互,在正常走时界面或任一调整界面状态时,均会在相应按键对应位置显示相关的操作提示信息,使用户使用方便,易学易用。 三、元件

万年历实训报告

《EDA技术及其应用》 实 训 报 告 班级电信一班 姓名 xx 学号 xx 指导教师 xx 2012年05月21 日 xxxx学院 10级机械电子工程系

目录 1.1前言 (4) 1.2课题 (4) 1.3 实验的目的及意义 (4) 1.4 实验的内容及要求 (4) 1.5 实验的地点 (4) 1. 6 实验的器材 (4) 1. 7 实验设计思想 (4) 1.8各模块的设计程序和元件介绍 (5) 1.9感想……………………………………………………….

1.1 前言 随着电子技术的不断发展与进步,电子系统的设计方法发生了很大的变化,基于EDA技术的设计方法正成为电子系统设计的主流,EDA技术已成为许多高职高专院校电类专业学生必须掌握的一门重要技术。 此次基于EDA技术的万年历实训,加强了同学们对EDA 工具QuartusII的使用方法、VHDL语言知识、FPGA开发技术的深入理解,通过万年历的功能实现和功能测试,详细介绍QuartusII的完整设计流程,在此基础上,进一步介绍面向复杂模块的使用方法。其中包括年、月、日、时、分、秒以及调整、控制等各个模块的功能实现和仿真测试,进一揭示VHDL语言在语句应用和电路功能描述上的特点及其特殊用法,使我们在很短的时间内快速掌握了EDA这门重要技术。 1.2实验的课题:万年历 1.3实验的目的及意义: (1)掌握EDA技术及FPGA技术的开发流程。 (2)掌握系统设计的方法和层次化设计的方法。 (3)掌握QuartusII软件的使用方法。 (4)掌握VHDL语言的程序设计、编写、编译和错误修改。(5)掌握熟悉EDA实验箱的各个模块 (6)掌握EDA试验箱与pc机的连接、下载和引脚绑定的全过程和

电子万年历

第一章绪论 1.1设计背景 从改革开放开始,电子工业已成为科技创新的重要领域,我国的电子产业也在新世纪开始高速发展,无论是产业结构,产业规模和技术水平都有了十分明显的进步和提升,而且电子产品在各个领域都有开创性的发展,使我们的生活变得更加智能化,为我国经济的发展做出了杰出的贡献。其中,单片机的大规模使用为我们的生活创造了极大的便利,可以说无时无刻不在影响着我们的生活。何为单片机,单片机全名为单片微控制器,它的结构组成就是将微型计算机的基本功能部件全都集成在一个半导体芯片上。尽管仅仅是一个芯片,但从单片机的构成和功能的角度来看充分具备一个计算机系统的中央处理功能。最重要的优点是,单片机体积小巧,可以任意嵌入到任何符合条件的应用系统中作为中央处理器进行指挥决策,是系统实现完全的智能化。当今世界,单片机已经无时无刻不在我们生活的周边存在,各类电子产品几乎都以单片机作为主控核心,通过单片机的控制使之更加智能快速,使我们的生活更加舒畅和方便。正是随着日常周边科学技术的进步,人们对待生活用品的要求也在逐步提高,时钟亦是如此,从古至今,人们对时间的概念就非常重视,从日晷到摆钟,经历了百年的发展,如今,人们对时钟的要求不仅仅是能够知道时间,还需要能够知道日期,星期,节气,天气情况等等,以便于满足人们对生活的各种需要,由此电子万年历就诞生了,正是因为电子万年历功能的多样性,使它在应用在各种场合,人们对它的需求量也就却来越大,电子万年历的发展空间也越来越广阔,成为了一项重要的产业。 1.2设计的目的及意义 中国从古至今就有重视时间的好传统,农民通过日照和鸡叫开始一天的劳作,商人通过古老的计时工具来确认是否应该开门迎客,学士知道时间后则开始一天的读书学习,这种传统一直绵延至今。当今社会,人们的生活节奏飞快,在工作中讲究快速和效率,需要在最短的时间内完成最合理的工作要求,所以人们通常需要在最短的时间内了解到最丰富的信息,人们不满足于只能看到此时此刻的时间信息,还需要了解过去和未来几天内的时间情况,包括农历,天

万年历说明书

万年历说明书 2、定闹的设置:按“D”键,进入定闹的设置,月数码管位置显示定闹序号,序号闪烁,按“B”或“C”键,可选择定闹1~4中的某个设置;再按“D”键时闪烁,按“B”或“C”键其调整为设置值;再按“D”键分闪烁,按“B”或“C”键其调整为设置值;再按“D”键,在日数码管位置显示“on”或“--”的定闹状态并闪烁,,按“B”或“C”键,关闭或开启此定闹,再按“D”键,退出定闹的设置。注:4个定闹中只要有1个或1个以上的定闹状态设置为开启,定闹指示灯即亮,只有所有定闹的状态都为关闭时,定闹指示灯才灭。 3、整点闹铃的设置:在正常运行状态下,按一下“B”键,面板上的整点闹指示灯“亮”表示整点闹铃已开启,反之,灯“灭”为关闭。 数码万年历使用说明书 作者pupaishop浏览213发布时间11/09/24 1.按键阐明:报时/退出键、设置键、上调键、下调/定闹键、流水键、模式/定闹键(模式键只在选为倒计天或逆计天才有)。 2.时光调剂: ①反常走时状态下,按“设置”键进进时间设置状态,同时暮年份“闪

耀”,可按“上调”或“下调”键建改暮年份,修正佳先按“设置”键将闪烁位移到公历“月”,按“上调”或“下调”键建改月份;用同样的方式可对于日、时、分、秒入止设置;12个公历节日及正计地数、24个农历节气及正计天数、12生肖、12星座、礼拜、工历月、日将自静追随母历的变更。 ②该秒设定佳先,再按“设置”键退出时间设置,归到正常时间状态。 3.12/24小时制切换: 在反常走时状态,按住“上调”键3秒钟,则可进止12小时制取24小时造的切换。 下电单位时,否默以为24大时造或者12大时造,由选项决议。4.启/闭零面报时: 在正常走时状态,按一下“上调”键,则可以挨开整点报时指导灯和整点报时功能;按一下“上调”键,则可以关关整点报时指导灯战整点报时功能。 5.地数正计时或逆计时(由选项决议) 在正常时间状态下,按“模式”键进入“天数计时状态”,在温度位显示“d1”,计时天数位若显示“????”,表示计时“无效”;若显示详细数字表示有效,按“上调”键可以切换“有效”/“无效”,按“设置”键进入天数设定,且右边第一位(千位)闪烁,按“上调”或“下调”键修改内容,按“设置”键挪动闪烁位置到第两位(百位),按“上调”或“下调”键修改闪烁位的内容,同样方式可设置十位取个位。

软件工程-万年历实验报告

《软件工程》实验报告 学号:099074069 姓名:朱霄 班级:计092 指导教师:周兵

实验题目:编写一个万年历程序 要求: 输入一个年份(1-3000),然后显示12个月的月历,如屏幕显示不下,则应提供翻页功能。 一:实验目的 1、能按照软件工程的思想,采用面向对象过程的方法开发出一个小型的软件系统 2、在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程知识 3、培养良好的软件开发习惯,了解软件企业文化 4、掌握结构话数据流分析技术 5、掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格 6、掌握单元测试的一般步骤及技术 7、掌握集成测试的一般步骤和技术 二:实验内容 1、功能需求分析 ·能列出公元元年到3000年所有月历 ·能解决闰年和平年问题 ·能输出显示结果 2、运行需求分析 ·运行于window xp 及更高版本操作系统上 3、数据流图

4、软件设计与编码 ·检查输入 ·输入数据是否超出程序处理范围 ·输入数据是否非法字符机器处理

while(iserror){ printf("Enter the year:"); scanf("%d",&year); if(year<1||year>3000) printf("input error!\n"); else break; getch(); } ·确定闰年 if((year%4==0)&&(year%100!=0)||year%400==0) ·显示表头 ·计算一月一日 ·程序代码: #include #include #include int isleapyear(int year){ if((year%4==0)&&(year%100!=0)||year%400==0) return 1; else return 0; } void main(){ int isleapyear(int); int i,day,year,temp,temp_i,year_start=1,per_year_days,iserror=1; int month_days[]={31,28,31,30,31,30,31,31,30,31,30,31,29}; long int year_days=0; while(iserror){ printf("Enter the year:"); scanf("%d",&year); if(year<1||year>3000) printf("input error!\n"); else break; getch(); } while(year_start

相关文档
最新文档