项目四 电子万年历系统设计
电子万年历的设计—毕业设计论文

基于51单片机的电子万年历的设计目录摘要 (I)ABSTRACT (II)1 引言 (1)2 功能要求 (1)3 方案论证与设计 (1)3.1控制部分的方案选择 (1)3.2测温部分的方案选择 (2)3.3显示部分的方案选择 (3)4 系统硬件电路设计 (4)4.1主控器AT89C52 (4)4.2时钟电路DS1302 (5)4.2.1. DS1302的性能特性 (5)4.2.2 DS1302数据操作原理 (6)4.3测温电路的设计 (9)4.3.1 温度传感器工作原理 (9)4.3.2 DS18B20与单片机的接口电路 (16)4.4显示电路的设计 (17)4.5键盘接口的设计 (19)5 系统程序的设计 (19)5.1阳历程序设计 (19)5.2时间调整程序设计 (20)5.3温度程序设计 (20)5.3.1 主程序 (21)5.3.2 读出温度子程序 (21)5.3.3 温度转换命令子程序 (21)5.3.4 计算温度子程序 (23)5.3.5显示数据刷新子程序 (23)6调试及性能分析 (25)6.1调试步骤 (25)6.2性能分析 (25)7总结 (26)参考文献 (26)致谢 (28)基于51单片机的电子万年历的设计摘要电子万年历是单片机系统的一个应用,由硬件和软件相配合使用。
硬件由主控器、时钟电路、温度检测电路、显示电路、键盘接口5个模块组成。
主控模块用AT89C52、时钟电路用时钟芯片DS1302、显示模块用LED数码管、温度检测采用DS18B20温度传感器、键盘接口电路用普通按键接上拉电阻完成;软件利用C语言编程实现单片机程序控制。
单片机通过时钟芯片DS1302获取时间数据,DS18B20采集温度信号送该给单片机处理,单片机再把时间数据和温度数据送给74LS154译码,然后通过三极管C9015放大驱动LED数码管显示阳历年、月、日、时、秒、闹钟、星期、温度。
关键词电子万年历;单片机;温度传感器;时钟;数码显示AbstractElectronic perpetual calendar which is an application of the single-chip processor system, is utilized by combining hardware and software. And Hardware is composed of five modules: Main control unit, clock circuit, temperature test circuit, display circuit, keyboard interface. Main control board adopts AT89S52, clock circuit adopts the DS1302 clock chip, display module adopts the LED digital tube, and temperature test adopts the DS18B20 temperature sensor, keyboard interface circuit is completed by connecting ordinary button with pull-up resistor. Software takes advantage of C to program, so as to realize the programmed control of single-chip processor. Single-chip processor gets the time data through using the DS1302 clock chip. The DS18B20 gathers temperature signals and transmits them to single-chip processor. Then, single-chip processor transmits the time data and the temperature data to the 74LS154 decoder. Lastly, the LED displays solar calendar year, year, month, day, hour, minute, second, alarm clock, week and temperature with being enlarged and driven by the C9015 triode.Keywords:Electronic perpetual calendar; single-chip processor; temperature sensor; clock; digital display1 引言随着微电子技术和超大规模集成电路技术的不断发展,家用电子产品不但种类日益丰富,而且变得更加经济实用,单片微型计算机体积小、性价比高、功能强、可靠性高等独有的特点,在各个领域得到了广泛的应用。
电子万年历的设计与制作毕业论文

(5)矩阵式键盘及其接口26
(6)键盘扫描控制方式:26
四、测试结果分析与结果27
1.测试结果分析27
(1)在测试中遇到LEDLCD16824不显示27
(2)按键调整时,不是按单位递增和递减28
五、系统评价28
六、系统程序清单28
七、辞31
八、参考文献31
绪论
随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。
5.显示模块的设计17
三、系统的软件设计18
1.程序流程框图:18
2.子程序的设计:21
(1)键盘子程序的实现:21
(2).读写DS1302子程序21
3.系统硬件电路设计:23
4.系统硬件PROTEUS仿真原理图:24
5.主要单元电路的设计:24
(1)显示4.1显示部分设计24
(2)键盘接口:25
(3)按键开关去抖动问题:25
本设计采用的是AT89S52单片机,该单片机采用的MCU51核,因此具有很好的兼容性,部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序更加方便。
计时芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电掉电时能够利用后备电池准确计时。
方案三:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
LED显示数码管
常见的LED显示具有清晰明亮的特点。是显示接口也是绝大多数单片机应用系统必备的部件之一。
电子万年历课程设计

电子万年历课程设计一、课程目标知识目标:1. 学生能够理解电子万年历的基本原理和组成部分。
2. 学生掌握电子万年历的日期、时间设置及调整方法。
3. 学生了解电子万年历在不同场合的应用和功能。
技能目标:1. 学生能够独立完成电子万年历的组装和调试。
2. 学生通过实际操作,学会使用编程软件编写简单的程序,实现电子万年历的基本功能。
3. 学生具备分析电子万年历故障并进行排除的能力。
情感态度价值观目标:1. 学生培养对电子万年历的兴趣,激发学习电子技术和编程的热情。
2. 学生在合作学习中,培养团队协作能力和沟通表达能力。
3. 学生认识到电子万年历在现代生活中的重要作用,增强对科技创新的认识。
课程性质:本课程为实践性较强的信息技术课程,结合电子技术和编程知识,培养学生的动手能力和创新能力。
学生特点:五年级学生具备一定的电子技术基础和编程兴趣,好奇心强,喜欢动手操作。
教学要求:教师应关注学生的个体差异,采用分层教学,引导学生主动探索、实践,提高学生的综合素养。
在教学过程中,注重目标分解,确保学生能够达到预期学习成果。
二、教学内容1. 电子万年历的原理与结构- 介绍电子万年历的组成及工作原理- 分析电子万年历的核心元件及其功能2. 电子万年历的组装与调试- 指导学生进行电子万年历的组装- 教授调试方法,确保电子万年历正常运行3. 编程软件的使用- 介绍编程软件的基本操作和功能- 演示如何编写程序,实现电子万年历的基本功能4. 电子万年历的应用与拓展- 讲解电子万年历在不同场合的应用- 探讨电子万年历的拓展功能及其实现方法5. 故障分析与排除- 分析电子万年历可能出现的故障- 教授排除故障的方法和技巧教学内容安排与进度:第一课时:电子万年历原理与结构介绍第二课时:电子万年历组装与调试第三课时:编程软件使用及基本程序编写第四课时:电子万年历应用与拓展第五课时:故障分析与排除教材章节关联:本教学内容与课本第四章“电子时钟与万年历”相关,涉及电子万年历的原理、组装、编程及应用等方面的知识。
电子万年历的设计

三、硬件设计
LED数码管动态 数码管动态 扫描显示模块 AT89S52 主控制 模块 温度采集模块 键盘模块
DS1302时钟模块 时钟模块
主控制系统图
键盘模块
日期和时间的修改由3 个按键构成。 键1为向右移; 键2为加1; 键3为减1。
DS1302的引脚图
返回
ds1302内部结构
温度采集模块
谢谢大家 欣赏
数字式温度传感器DS18B20, 它是数字式温度传感器, 具有测量精度高,电路连 接简单特点,此类传感器 仅需要一条数据线进行数 据传输,使用P0.7与 DS18B20的I/O口连接加一 个上拉电阻,Vcc接电源 ,Vss接地
I/O
vss
vcc
返回
LED动态扫描显示模块 动态扫描显示模块
系统电路图
一.设计要求
具有年、 具有年、月、日、星期、时、分、秒等功 星期、 能; 时间与阴、阳历能够自动关联; 时间与阴、阳历能够自动关联; 具备年、 星期、 具备年、月、日、星期、时、分、秒校准 功能; 功能; 具有温度计功能; 具有温度计功能;
二、基本方案
采用AT89S52作为主控制系统 作为主控制系统 采用 采用DS1302提供时钟 提供时钟 采用 采用数字式温度传感器DS18B20 采用数字式温度传感器 采用LED数码管动态扫描作为显示 数码管动态扫描作为显示 采用
1.
六、总结
通过此次毕业设计, 通过此次毕业设计,我 不仅把知识融会贯通, 不仅把知识融会贯通,而且 丰富了大脑, 丰富了大脑,同时在查找资 料的过程中也了解了许多课 外知识,开拓了视野, 外知识,开拓了视野,认识 了将来电子的发展方向, 了将来电子的发展方向,使 自己在专业知识方面和动手 能力方面有了质的飞跃。 能力方面有了质的飞跃。
电子万年历毕业设计

目录摘要 ........................................................... 错误!未定义书签。
一.设计要求与方案论证............................................ 错误!未定义书签。
1.1设计要求................................................... 错误!未定义书签。
1.1.1基本要求................................................ 错误!未定义书签。
1.1.2创新要求................................................ 错误!未定义书签。
1.2系统基本方案选择和论证...................................... 错误!未定义书签。
1.2.1单片机芯片.............................................. 错误!未定义书签。
1.2.2 显示模块 ............................................... 错误!未定义书签。
1.2.3时钟芯片................................................ 错误!未定义书签。
1.2.4温度传感器.............................................. 错误!未定义书签。
1.3电路设计最终方案决定........................................ 错误!未定义书签。
二.电子万年历硬件设计与实现...................................... 错误!未定义书签。
2.1电子万年历系统设计.......................................... 错误!未定义书签。
自动万年历课程设计

自动万年历课程设计一、引言万年历是一种常见的时间表示工具,能够提供年、月、日、星期等日期信息。
随着科技的发展,人们对于万年历的需求也越来越多样化。
本次课程设计旨在实现一个自动万年历的功能,通过编程实现自动计算日期、星期和节假日等功能。
二、设计目标设计一个自动万年历的程序,实现以下功能:1.输入年份和月份,自动计算该月的日期信息;2.根据输入的日期,自动计算该日是星期几;3.判断输入的日期是否是法定假日,如春节、清明节等;4.根据输入的年份,自动计算该年的各个节假日日期。
三、设计思路3.1 输入年份和月份,自动计算日期1.根据输入的年份和月份,判断该年是否为闰年;2.根据月份判断该月的天数;3.输出该月的日期信息。
3.2 根据日期,自动计算星期1.判断输入的年份是否为闰年;2.计算该日的累计天数;3.判断累计天数对7取模的结果,得到星期。
3.3 判断输入日期是否为法定假日1.根据输入日期判断是否是法定假日,需根据法定假日的具体规定进行判断;2.输出判断结果。
3.4 根据年份,自动计算节假日日期1.根据公历计算的时间规律,计算出春节的日期;2.根据农历计算的时间规律,计算出农历节日的日期;3.输出计算结果。
四、详细设计4.1 输入年份和月份,自动计算日期1.首先通过输入函数获取用户输入的年份和月份;2.使用条件语句判断输入的年份是否为闰年,根据结果确定二月的天数;3.根据月份和上一步得到的天数,使用循环结构输出该月的日期信息。
4.2 根据日期,自动计算星期1.输入年份、月份和日期;2.使用条件语句判断输入的年份是否为闰年,根据结果确定二月的天数;3.根据输入的年、月、日,计算出累计天数;4.使用计算得到的累计天数对7取模,得到星期。
4.3 判断输入日期是否为法定假日1.定义法定假日的日期范围和名称;2.输入日期;3.对输入日期进行判断,判断是否在法定假日日期范围内;4.输出判断结果。
4.4 根据年份,自动计算节假日日期1.输入年份;2.根据公历的时间规律,计算出春节的日期;3.根据农历的时间规律,计算出农历节日的日期;4.输出计算结果。
电子万年历课程设计报告

课程:创新与综合课程设计电子与电气工程系实践教学环节说明书题目名称电子万年历院(系)电子与电气工程学院专业电子信息工程班级119411学号1109635010学生姓名11指导教师q1起止日期13周周一~14周周五电子万年历一.设计目的设计一个具有报时功能、停电正常运行(来电无需校时)、带有年月日、时分秒及星期显示的电子日历。
二.方案设计硬件控制电路主要用了AT89S52芯片处理器、LCD1602显示器等。
根据各自芯片的功能互相连接成电子万年历的控制电路。
软件控制程序主要有主控程序、电子万年历的时间控制程序、时间显示及星期显示程序等组成。
主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是电子万年历中比较重要的部分。
时间控制程序体现了年、月、日、时、分、秒及星期的计算方法。
时间控制程序主要是定时器0计时中断程序每隔10ms中断一次当作一个计数,每中断一次则计数加1,当计数100次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。
先给出一般年份的每月天数。
如果是闰年,第二个月天数不为28天,而是29天。
再用公式s=v-1 +〔(y-1/4〕-〔(y-1/100〕+〔(y-1/400〕+ d计算当前显示日期是星期几,当调节日期时,星期自动的调整过来。
闰年的判断规则为,如果该年份是4或100的整数倍或者是400的整数倍,则为闰年;否则为非闰年。
在我们的这个设计中由于只涉及100年范围内,所以判断是否闰年就只需要用该年份除4来判断就行了。
三.系统的设计框图本系统以AT89S52单片机为核心,结合时钟芯片DS1302,LCD1602,键盘等外围器件,实现电子万年历的一系列功能,并通过液晶屏和按键控制完成人机交互的功能。
系统总体设计框图如图(1)所示四.系统硬件设计1.单片机主控制模块AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
电子万年历的设计与制作

一、设计目的及意义(1)在学习了《数字电子技术》和《单片机原理及接口技术》课程后,为了加深对理论知识的理解,学习理论知识在实际中的运用,培养动手能力和解决实际问题的经验让学生接触专用时钟芯片DS1302,并会用DS1302芯片开发时钟模块,应用到其他系统中去。
熟悉WAVE 软件调试程序和仿真。
(2)、通过实验提高对单片机的认识;(3)通过实验提高焊接、布局、电路检查能力;(4)、通过实验提高软件调试能力;(5)进一步熟悉和掌握单片机的结构及工作原理.(6)通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。
(7)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
(8) 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
二、设计内容要求电子万年历能显示阳历年、月、日、星期、[小]时、分、秒和阴历月、日,在显示阴历时间时能标明是否为闰年。
三、方案选择与实验基本原理。
按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键盘接口模块共4个模块组成,电路系统构成框图如图L1所示.主控芯片使用51系列AT89c52单片机,时钟芯片使用美国DALLAs公司推出的一种高性能、低功耗、带RAM的实时时钟DSl302.采用DSl 302作为主要计时芯片,可以做到计时准确。
更重要的是,DSl302可以在很小电流的后备电源(2.5-5.5v电源,在2.5v时耗电小于300 nA)下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。
显示模块采用普通的共阳LED数码管,键输入采用查询法实现调整功能。
图1 电子万年历电路系统构成框图系统硬件电路的设计图2为电子万年历电路设计原理图,系统由主控制器AT89C52、时钟芯片DSl302、串口显示电路及键扫描电路组成。
图2电子万年历电路设计原理图3。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
21 22 23 24 25 26 P2.5 27 P2.6 28 P2.7
RXD TXD ALE/P PSEN
10 11 30 29
4.2单片机与LCD液晶显示模块接口
#include <reg51.h>
#define uchar unsigned char
sbit LCDEN=P1^5;
//
使能信号,H为读,H跳变
74ABLS16124
CLK GND
8 VMCRC7
194
7AB4LS16124
CLK GND
8 VMCRC7
194
7AB4LS16124
CLK GND
8 VMCRC7
194
74ABLS16124
CLK GND
8 VMCRC7
194
B A
2 1
19 18
X1 X2
9 RESET
17 16
RXD TXD ALE/P PSEN
时钟脉冲,P0.0作为数据输出线。
DS1
DS2
DS3
DS4
DS5
U1
1 2 3 4 5 6 7 8
P10 P11 P12 P13 P14 P15 P16 P17
P00 P01 P02 P03 P04 P05 P06 P07
39 38 37 36 35 34 33 32
dp
8
g7
d
f6
c
ee 5
b
g
f
Y a=4?
N
发送第(4-a)个数码 管的字型码
sent(dispb[4-a])
Y i=8?
N
ch=ch<<1; DIN=CY; CLK=0; CLK=1;
显示子程序
a++ 返回
i++ 返回
4.1单片机与LED数码管接口
三、LED数码管动态显示原理
动态扫描显示接口是单片机中应用最为广泛的一种显示方 式之一。其接口电路是把所有数码管的8个笔划段a-h同名端连在 一起,而每一个数码管的公共极COM是各自独立地受控制。CPU向 字段输出口送出字形码时,所有显示器接收到相同的字形码,但 究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的, 所以就可以自行决定何时显示哪一位了。而所谓动态扫描就是指 采用分时的方法,轮流控制各个显示器的COM端,使各个显示器 轮流点亮。
4.1单片机与LED数码管接口
共阴数码管码表
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0x7d , 0x07 , 0x7f
0
1
2
3
4
5
6
7
8
, 0x6f , 0x77 , 0x7c , 0x39 , 0x5e , 0x79 , 0x71 , 0x00
0x93f , 0x0A6 , 0x5b B, 0x4f , 0Cx66 , 0x6Dd , 0x7d , E0x07 , F0x7f 无显示
设置屏幕 1602程序
-----------------------------------------------------------------------------------------------------------*/
#define CLEAR_1602 屏
write_com(0x01)
10 11 30 29
RD WR
VCC
VCC
VCC
VCC
VCC
例:上图所示的显示电路,五个数码管分别显示23456。
4.1单片机与LED数码管接口
主程序
开始
显示子程序
设置a=0
发送字型码的子程序
设置i=0;
Ch=dispb[4-a];
给每个数码管赋字型码
dispb[0]=dispcode[2]; dispb[1]=dispcode[3]; dispb[2]=dispcode[4]; dispb[3]=dispcode[5]; dispb[4]=dispcode[6];
1 a DPY
2b
a
3 4
c d
f
g
b
5 ee
c
6f d
7g
dp
8 dp
DS?
DPY_7-SEG_DP
1 a DPY
2b
a
3 4
c d
f
g
b
5 ee
c
6f d
7g
dp
8 dp
DS?
DPY_7-SEG_DP
1 a DPY
2b
a
3 4
c d
f
g
b
5 ee
c
6f d
7g
dp
8 dp
gnd 9
gnd
gnd 9
6 5 4
Q2 Q1 Q0
3
13 12 11 10
Q7 Q6 Q5 Q4 Q3
6 5 4
Q2 Q1 Q0
3
13 12 11 10
Q7 Q6 Q5 Q4 Q3
6 5 4
Q2 Q1 Q0
3
13 12 11 10
Q7 Q6 Q5 Q4 Q3
6 5 4
Q2 Q1 Q0
3
U1
U2
U3
U4
U
8 VMCRC7
194
// 清
#define HOME_1602 返回原点
write_com(0x02)
// 光标
#define SHOW_1602 光标不闪动
write_com(0x0c) //开显示无
#define HIDE_1602
write_com(0x08) //关显示
#define CURSOR_1602
unsigned char sel=0x01;
void main(void)
{
unsigned char i;
while(1)
{
for(i=0;i<6;i++)
{
P1= dispcode[i]; //字型码
P3=sel;
//位选
sel=sel<<1;
if(sel==0x40) sel=0x01;
}
}
P10 P11 P12 P13 P14 P15 P16 P17
13 12
INT1 INT0
C1
15 VCC 14
T1 T0
33PF Y1 12MHZ
C2
31 EA/VP
19 18
X1 X2
9 RESET
33PF R1 1.2K GND
17 16
RD WR
8031 S1
R2 100
C3 +5V
20
GND
共阳0数码管码表1
2
3
4
5
6
7
8
, 0x6f , 0x77 , 0x7c , 0x39 , 0x5e , 0x79 , 0x71 , 0x00
9
A
B
C
D
E
4.1单片机与LED数码管接口
二、LED数码管静态显示原理
LED显示器工作方式有两种:静态显示方式和动态显示方式。 所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能 的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形 代码发送到接口电路,就不用管它了,直到要显示新的数据时, 再发送新的字形码,因此,使用这种方法单片机中CPU的开销小, 可以提供单独锁存的I/O接口电路很多(以串并转换电路74LS164 为例)。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短 暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉 效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度 足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
4.1单片机与LED数码管接口
VC C
40
U1
1 2 3 4 5 6 7 8
4.1单片机与LED数码管接口
g f GNDa b
a
f
b
g
e
c
d ·dp
e dGND c dp
(a)
a b c d e f g dp
共阴极
+5V
a b c
d e
f g dp
(b)
共阳极
使用LED显示器时,要注意区分这两种不同的接法。为了显示数 字或字符,必须对数字或字符进行编码。七段数码管加上一个小数 点,共计8段。因此为LED显示器提供的编码正好是一个字节。根据
到L时为写。
sbit LCDRW=P1^6; // H为读LCD
数据,L为向LCD写数据,如果仅是
写,此端口可直接接地。
sbit LCDRS=P1^7;
write_com(uchar com);
write_dat(uchar date);
4.2单片机与LCD液晶显示模块接口
/*----------------------------------------------------------------------------------------------------------
4.1单片机与LED数码管接口
提高题: 采用动态显示,用定时器以间隔1S在6位数码管上依次显示0、1、 2、3….C、D、E、F,重复。
4.2单片机与LCD液晶显示模块接口
1.阅读说明书 2.读子程序 3.显示简单字符
4.2单片机与LCD液晶显示模块接口
电路原理图
VCC
2 R2
3 3.3K
1 16