没有合适的资源?快使用搜索试试~ 我知道了~
文档中有详细的电子万年历的设计方案和程序,并且可以实时显示环境温度
资源推荐
资源详情
资源评论
一、课题任务
万年历
实现功能:1.显示年、月、日、星期,当前时间。
2.当前环境温度显示。
3.时间日期预置。
4.能正确显示 2100 年之前的年月日信息。
二、方案比较与选择
方案一:选择单片机作为核心控制器件。目前单片机芯片价格很便宜,比一般的
CPLD/FPGA 芯片便宜很多;单片机一般有 4 个并行和至少一个串行通讯口,与外部电路连
接非常方便,像程序下载串口和显示接口都很方便。
方案二:选择 CPLD/FPGA 芯片作为核心控制器件,以图形输入方式输入。此方案芯片
功能强大,图形输入方式简单明了,做起来思路清晰。数字钟基本功能用图形输入可以很
快很好地实现,但拓展功能的实现就显得麻烦了一点。而且图形输入完全是数电的知识,
也不是以后做设计的主要手段,不能很好地锻炼更适合现今数字系统的设计方法与技巧。
方案三:选择 CPLD/FPGA 芯片作为核心控制器件,以文本输入为输入方式。综合设
计可以模块化设计,用 VHDL 硬件描述语言编写每个模块的程序再生成符号文件。最后在
用图形输入方式把所有模块连接在一起。这样设计既清晰明了又不用额外编程互连,直接
在图形输入中连线即可实现综合设计。
本实验在实际操作时,考虑到各方面原因决定采用方案一。
三、技术难点
难点主要在时间控制芯片、LCD 显示器、温度传感器与单片机的连接使用。时间控制芯
片和 LCD 显示器都需要对他们进行初始化和读/写操作程序设计。
四、电路设计
1.系统方框图。
2.原理图
3.各模块说明:
1)时间芯片模块
DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和 31 字
节静态 RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路.提供秒分时日日期.
月年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过 AM/PM 指示决定采用
24 或 12 小时格式.DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用
到三个口线:1 RES 复位,2 I/O 数据线,3 SCLK 串行时钟.时钟/RAM 的读/写数据以一个字
节或多达 31 个字节的字符组方式通信.
DS1302 引脚图
管脚描述
X1 X2 32.768KHz 晶振管脚
GND 地
RST 复位脚
I/O 数据输入/输出引脚
SCLK 串行时钟
Vcc1,Vcc2 电源供电管脚
DS1302 串行时钟芯片 8 脚 DIP
DS1302 内部寄存器
CH: 时钟停止位 存器 2 的第 7 位 12/24 小时标志
CH=0 振荡器工作允许 bit7=1,12 小时模式
CH=1 振荡器停止 bit7=0,24 小时模式
WP: 写保护位 寄存器 2 的第 5 位:AM/PM 定义
WP=0 寄存器数据能够写入 AP=1 下午模式
WP=1 寄存器数据不能写入 AP=0 上午模式
TCS: 涓流充电选择 DS: 二极管选择位
TCS=1010 使能涓流充电 DS=01 选择一个二极管
TCS=其它 禁止涓流充电 DS=10 选择两个二极管
DS=00 或 11, 即使 TCS=1010, 充电功能也被禁止
RS 位 电阻 典型位
00
没有 没有
01 R1 2KΩ
10 R2 4KΩ
11 R3 8KΩ
2)LCD 显示模块
概述:1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵
字符
图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一
个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B(41H),显示
时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“A”。
显示地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
00
H
01
H
02
H
03
H
04
H
05
H
06
H
07
H
08
H
09
H
0A
H
0B
H
0C
H
0D
H
0E
H
0F
H
40
H
41
H
42
H
43
H
44
H
45
H
46
H
47
H
48
H
49
H
4A
H
4B
H
4C
H
4D
H
4E
H
4F
H
1602LCD 拐脚图
3)温度传感模块
DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型
智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,
并 且 可 根 据 实 际 要 求 通 过 简 单 的 编 程 实 现 9-12 位 的 数 字 值 读 数 方 式 。
DS18B20 的性能特点如下:
(1)独特的单线接口仅需要一个端口引脚进行通信,DS18B20 在与微处
理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。
(2)DS18B20 支持多点组网功能,多个 DS18B20 可以并联在惟一的三
线上,实现多点组网测温;
(3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的
集成电路内;
(4)可通过数据线供电,电压范围为 3.0-5.5 V;
(5)零待机功耗;
( 6 ) 温 度 以 9 或 12 位 数 字 , 对 应 的 可 分 辨 温 度 分 别 为
0.5℃、0.25℃、0.125℃和 0.0625℃,可实现高精度测温;
(7)用户可定义报警设置;
(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能
正常工作;
(10)测量结果直接输出数字温度信号,以"一线总线"串行传送给 CPU,
同时可传送 CRC 校验码,具有极强的抗干扰纠错能力
DS18B20 采用 3 脚 PR35 封装或 8 脚 SOIC 封装,其引脚排列及内部结
构框图如图及测温原理图如下所示:
图 引脚排列
4)按键模块
按键模块包括模式改变按键,加一按键,减一按键,取消设置按键和复位
按键。
五、程序设计
1.DS1302 头文件程序
DS1302 头文件程序:
#ifndef _REAL_TIMER_DS1302_2003_7_21_
#define _REAL_TIMER_DS1302_2003_7_21_
sbit DS1302_CLK = P1.6; //实时时钟时钟线引脚
sbit DS1302_IO = P1.7; //实时时钟数据线引脚
sbit DS1302_RST = P1.5; //实时时钟复位线引脚
sbit ACC0 = ACC.0;
sbit ACC7 = ACC.7;
char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;
typedef struct __SYSTEMTIME__
{
unsigned char Second;
unsigned char Minute;
unsigned char Hour;
unsigned char Week;
unsigned char Day;
unsigned char Month;
unsigned char Year;
unsigned char DateString[11];
unsigned char TimeString[9];
}SYSTEMTIME; //定义的时间类型
#define AM(X) X
#define PM(X) (X+12) // 转成 24 小时制
#define DS1302_SECOND 0x80
#define DS1302_MINUTE 0x82
#define DS1302_HOUR 0x84
#define DS1302_WEEK 0x8A
#define DS1302_DAY 0x86
#define DS1302_MONTH 0x88
#define DS1302_YEAR 0x8C
#define DS1302_RAM(X) (0xC0+(X)*2) //用于计算 DS1302_RAM 地址的宏
void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数)
{
unsigned char i;
ACC = d;
for(i=8; i>0; i--)
{
DS1302_IO = ACC0; //相当于汇编中的 RRC
DS1302_CLK = 1;
DS1302_CLK = 0;
ACC = ACC >> 1;
}
}
unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数)
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1; //相当于汇编中的 RRC
ACC7 = DS1302_IO;
DS1302_CLK = 1;
DS1302_CLK = 0;
}
return(ACC);
}
void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302 地址, ucData:
要写的数据
{
剩余29页未读,继续阅读
资源评论
Airestare
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot和MyBatis的社区问答系统.zip
- (源码)基于Spring Boot和WebSocket的人事管理系统.zip
- (源码)基于Spring Boot框架的云网页管理系统.zip
- (源码)基于Maude和深度强化学习的智能体验证系统.zip
- (源码)基于C语言的Papageno字符序列处理系统.zip
- (源码)基于Arduino的水质监测与控制系统.zip
- (源码)基于物联网的智能家居门锁系统.zip
- (源码)基于Python和FastAPI的Squint数据检索系统.zip
- (源码)基于Arduino的图片绘制系统.zip
- (源码)基于C++的ARMA53贪吃蛇游戏系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功