电子万年历系统设计方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
据指针12SO 字节
SRAM
~1L
8 16M2>64k
宇竹闪存
2k・sic字节
ISP引导码
P0
8051 徴处理器四个&隹并
行瑞口
P1
/
ETROM A/D
D白怡flash石加价
P2 n
P4
0—P43
四个附
电子万年历系统设计方案
1.1 STC89C52 简介
STC89C52完全兼容MCS-51还有新的功能,比如新增两级中断优先级,多一个外中断,置EEPRO,M512B存等。
还支持ISP下载,不用编程器,只要一个MAX23和一些廉价的元件就能写程序,可擦写10万次。
比51起最大的优点能支持在线下载,在线烧写程序,而不必专门买昂贵的编程器,
只需要ISP下载线就可以了。
1.2 性能参数
STC单片机比51单片机性能有以下优越性:
7图
(1)高抗静电(ESD), 6000伏静电测试,直接打在芯片管脚上,安然无恙
T2/P1. 0
T2EX/PL 1
P1.2
PL 3
PL. 4
P1. 5
Pt 6
Pl. 7
Rsr
RXLVP3 0
TXD/P3, 1 INTO/F3. 2 而
1 /P3, 3
T0/P3. 4
I1./P5. 5
WP3. 6
R^/PS. 7
XTAL2
XT All
vss 140
239
338
437
536
635
—34
S33
9 -32
10 p31
11 O30
11229
1328
11427
1526
1625
11724
1S23
1922
12021
VCC
PO.0 ADO
1 PO.1/ADL J
PO. 2
PO. 3 鱼D3
FO. 4. AD I
7
■
■
■
■
I P2.4 A12 _] P2 3,
A11
1 P2.
2 1:J
二I P2, 1/-A9 二I
P2. 0 AS
⑵超强抗干扰,轻松过2KV/4KV快速脉冲干扰(EFT)。
⑶超强加密,性能良好。
⑷STC 5V单片机,宽电压,5V - 3.8V给复位信号,正常工作。
(5) STC单片机,Power直接在用户系统上用ISP在线下载方式,将用户程序
⑹下载进STC单片机Down掉电时功耗<0.1uA(C版本)。
(7) I/O 口输入/输出口经过特殊处理,很多干扰是从I/O进去的,每个I/O均有对VCC对GN二级管箝位保护。
(8) 单片机部的电源供电系统经过特殊处理,很多干扰是从电源进去的。
鉴于SCT89C5和AT98C5引I脚分布相同,以上仅介绍SCT89C5一些优于AT98C5的
性能,在此,就不对单片机多做介绍了,详细参数可以参考SCT89C52 PD资料图,或
者相关书籍,或者上网查阅相关,在此,推荐一官方:.mcu-memory.
nnH
2 应用系统设计
2.1 系统功能说明
根据家居生活中的实际需要,万年历应该具有如下功能。
1、时间显示时间显示是万年历设计最重要的功能。
万年历应该不仅能准确显示时、分、秒,而且还要能够显示年、月、日和星期。
2、时间调整万年历在第一次使用时,需要根据当前时间进行时间调整,设定起初始时间,设置完成之后,它会在设定值基础上进行准确的计时和显示。
在万年历断电或出现其他故障排除后,也需要根据当前时间进行时间调整。
3、定时闹钟定时闹钟是万年历的一个辅助功能。
可以通过键盘设定定时时间,这样当万年历运行到设定的定时时间时,会发出语音提示,提示时间为1 分钟。
可以根据需要设定闹钟功能的开启和关闭。
4、温度显示温度显示是万年历的另外一个辅助功能。
万年历上设置有一个温度传感器,用于检测环境温度,提示用户注意温度的变化,做好诸如防寒保暖等措施。
5、掉电运行万年历采用市电或者电池供电。
当发生停电或者电池量耗尽等情况时,它通过置的纽扣电池给时钟供电以保持正确的时钟数据,但关闭其他部分的电源,这样在来电或者更换电池之后不必重新设定时间。
在市电运行正常时,可以根据需要更换备用的纽扣电池而不影响时钟运行。
2.2应用系统设计
2.2.1系统方案设计
应用于单片机控制的实时时钟系统根据基准信号产生的途径,可以分为两种:一是利
用单片机中的定时器作为实时时钟基准;二是利用专用实时时钟日历芯片产生基准时钟信号。
STC89C52单片机带有实时时钟接口,可以通过外接32768Hz的晶振分频后产生基准始终系好,这为万年历的设计提供了一种新的选择。
采用上述方式产生时钟基准信号的设计方案及其比较如表1所示。
方案时钟源定时
闹铃
温度检测方案评估
软件定时器在单片机部。
无需附加外部兀器件,通过
1 单片机定时器实现温度传感器编程实现时钟功能,精度受单片机外接电容等的
影响,成本低但精度差,而且程序设计困难。
外接32768Hz晶振软件温度传感器外接32768Hz晶振分频后作为始终基准信号,具2 实现有较咼的精度但程序设计困难。
硬件实时时钟芯片能自动产生1秒时钟基准信号,且
3 实时时钟日历芯片实现温度传感器自带日期及闰年调整功能,计时精度和集成度非
常咼,程序设计间单但成本略咼。
表1万年历方案及评估
通过上述方案设计及性能评估可知,又实时时钟日历芯片产生基准计时信号构成的万年历虽然成本上比其他两种方案产生基准信号的方式略高,但是由于实时时钟日
历芯片具有集成度高、走时准确、自动日历及闰年调整并集成有闹钟功能,这样使得程序设计变得非常的简单,故在设计中采用方案3。
2.2.2应用系统结构设计
根据万年历的功能要求和选定的设计方案,设计出如图3所示的控制系统结构。
图3万年历系统结构框图
223设备选型
本设计采用STC89C52乍为控制系统的核心。
按照图1所确定的系统结构,选择
合适的功能部件,以完成完整的系统控制电路设计。
控制系统需要选择实时时钟日历
单元、温度传感器单元、键盘和显示单元三部分。
表2是万年历设计具体的设备选型
表2万年历设计设备选型表
器件名称型号基本参数
器件
编号
1 单片机STC89C5
2 前面以介绍
2 I 2C接口日历芯片,自动日历到2099 年,B CD码年、
实施日历芯片SD2303 月、日、周、时、分、秒输入/输出,带两路定时闹
钟,年误差小于2.5分钟
3 温度传感器DS1722 SPI/三线串行接口温度传感器,测量围-55° C〜
120° C,8〜12位可编程分辨率,测量误差小于
2.0 °C
4 键盘单兀独立键盘7个可独立键盘
5 显示单元数码管16个7段数码管
2.2.4控制面板设计
控制面板即万年历外形图,如图4所示
I时间设負I PR I上一位I
万年历
日日日阱日日月日日日
星期日i nr丿烂日日日
日日时日日分
在万年历的控制面板上设置有16个数码管,分别用于显示年、月、日、星期、温度、时和分。
显示格式如下。
年:4位数码管显示年,如2008表示2008年。
月:2位数码管显示月,如06表示6月份。
日:2位数码管显示日,如10表示10日。
星期:3位数码管显示星期,如7表示星期日。
温度:3位数码管显示温度,如H28表示+28E,L05表示—5C。
时:2位数码管显示时,如23表示23点。
分:2位数码管显示分,如59表示59分。
为了进行时间设定和闹钟设定,在控制面板下方设置有7个按键,分别为“时间设置”建、“闹铃设置”键、“ + ”键、“―”键、“上一位”键、“下一位”键和“确定”键,其功能如下所示。
当需要设置时间时,按下“时间设置”键,这时万年历停止计时并将时间清零,在年的最高位上的小数点点亮表示进行年最高位设置,用户可以通过“ + ”或者“一”
来调整数字,调整完后按“下一位”,则年的最高位小数点熄灭而次高位小数点点亮,用户按照上述方法设置次高位……直到时间设置完。
注意,温度不可以设置。
设置完
后按“确定”键,用户设定值将存储进入单片机并开始以此时间计时。
当需要设置闹铃时,按下“时间设置”键,这时万年历仍继续计时而面板上的时间将全部显示为“0”,同时时间的小时高位小数点电亮,用户按照时间设定的方式设置闹钟的时和分,按下“确定”键图4万年历控制面板
后,闹铃被存储进单片机。
当万年历走时走到设定闹铃时间时,蜂鸣器发出报警声。
闹铃的设置时间可以通过按“闹铃设置” 键来查看,任何不符合走时的闹铃设置将关闭闹铃功能。
如设置“ 06时20分”将关闭闹铃功能。
这是取消闹铃功能的一种方法。
3 硬件设计
万年历的硬件设计电路如图5 所示。
下面对各部分分别予以说明
10 V CC
20 19 18 17 16 P3 ST9C52 AAA
VC GN
4 7 8
G vv
ND M°DADD
SC
LK O D S D
4D I
2
B I
AT —
J
■I
l
S;常熾0綁RX K)(SC)M)I肅那叩
(TO(TO
SCSC
2) P)
^CPCPCPC PCPC (AD(ADADADAD(AD(AD(A
D
7) F6) F5) F4) P) F2) P) P0)
P A7A6A5A4A3A2A1 A0
10 V
1;C
hc
16
V
TCC CLR
9
D301
D302
D101
C LK QA
QB
QC
QD
QE
QF
QG
QH
74 U
沪
63D303 4 D304 5D305
图5硬件电路图
12 C
C
C
C
3
2口
2
1二
A
B
C
D
E
F
Dp
lD
10
2
D103
7D104
4D105
2D106
1Q107
12
二9
一8
C3
C2
C1'一
A
B
C
D
E
F
T Dp
C
C
C
C
3匸
2
2
1(:
A
B
C
D
E
F
Dp
2
10
11
D/
D*
A
B
C
D
E
F
——DG
3.1 实时时钟电路设计
ESET
V
CC
3
PN
■
Il
C
C
1 K
P?
S1T
3
22
V
CC
PDPDPDPDPDPD PDPD PBPBPBPBPBPBPB PB
N
C
D
D
uF
V N
SS
C
2
10
SD
23
03
K*
4
SDSC
INTNTB L
V
CC
R
P1
C D REF C7C65 4 3 2 1 0
4
2
3
5
6
一
N
N
PN
卑
N
QON
PN
6
9|
8
6
9
D301
7
4
2
10
5
D302
万年历采用支持两线式串行接口、带温度补偿的高精度实时时钟日历芯片
ED2303
VDD
SCX
NC SE>A NG
[NTB
vss
]NTA
CD
-FBO CTJ] ¥ 何切卩切 -FBI CT1] > CfCCD PAI
-FB2 (AINO)
(AEX2) P 畑
(ADC?) PA3
•曲〔阴 (ADC4) PA4
• FP*i CWfOSl)
2「M )P 帖 • FDCi CMI5O) 「AE Cu) PA j -FB7(SCK) (ADC7)PA7
H30(RXD)
■CT --! 1 rTVT'-iS
PCD
1 JrUJ L IjyjJI
r^Ul J FD2CIHTD) PC2
| HD3(IHn ) PC3 PD4
PC4
PDS(OCIA) PCS
PDti tlCP^ (TOSCI) PCS FD7 CT0SC2) (T0SC2) PC7
RESET
AREF
AGND
X :l
AVCC
* X2 §
3&
3c 37 3t 3匕
也
r 22 22
松
2f
27
29
n
SD2303,它与STC89C5单片机的连接如图6所示
图6实时时钟电路
3.1.1 实时时钟芯片SD2303简介
SD2303是 一种具有置晶振、支持两线串行接口的高精度实时时钟芯片。
该系列 芯片可保证时钟精度为土 5ppm (在25± 1°C 下),即年误差小于2.5分钟;该芯片置 时钟精度调整功能,可以在很宽的围校正时钟的频率偏差,
能以最小分辨率3.052ppm
来进行校正,通过与温度传感器的结合可以设定适应温度变化的调整值,
实现在宽问
围高精度的计时功能;置电池、串行 NVSEAM 其中置的一次性SRAM 擦写次数可达 100亿次。
该系列芯片可满足对实时时钟芯片的各种需要,是高精度实时时钟的理想 选择。
SD2303具有如下特点: (1)
低功耗:典型值 0.5uA (VDD=3.0V 。
(2) 工作电压为1.8〜5.5V,工作温度为-40〜85C 。
(3) 年、月、日、星期、时、分、秒 BCD 码输入输出,并可通过独立的地址访 问各时间寄存器。
|_5
+ 2 ^=10斗 ^T ^LO U F ~3 ~4
20
13
pr 时r 丐
2
3
5
7 7 8
rj?
4L
(4)自动日历到2099年(包括闰年自动换算功能)。
(5)可设定并自动重置的两路定时闹钟功能。
(6)周期性中断脉冲输出:2Hz、1Hz、每分、小时、月输出可选择不同波形的中断脉冲。
(7)可控的32768Hz方波信号输出。
(8)置时钟精度数字调整功能。
(9)30秒时间调整功能。
(10)部晶振停振检测功能:保证时钟的有效性。
(11)置总线1秒自动释放功能,保证了时钟数据的有效性及可靠性。
(12)置电源稳压,部及时电压可低至1.2V。
(13)置晶振,出厂前已对时钟进行校准,保证精度土5ppm即时钟误差小于2.5 分钟。
(14)工业级型号为SD2303API封装形式为8-DIP封装。
3.1.2 SD2303的引脚设置
SD2303实时时钟日历芯片的引脚配置如图7所示。
图
表3给出了SD2303的引脚功能说明。
表3 SD2303引脚功能表
引脚编号符号功能备注
INTRA 报警中断A路输出N沟道开路输出,需接上拉电阻1
2 NC 没有作用
3 NC 没有作用
4 VSS 地
5 INTRB 报警中断B路输出N沟道开路输出,需接上拉电阻
6 SCL IIC串行时钟输入
7 SDA IIC串行时钟输入/输出N沟道开路输出,需接上拉电阻
8 VDD 电源
3.1.3 SD2303 的部寄存器
SD2303将时间数据和控制命令存储在不同地址的寄存器,具体的地址分配如表4 所示。
表4 SD2303寄存器列表
部地址描述功能
0x00 秒寄存器以BCD码形式计数与存储秒
0x01 分寄存器以BCD码形式计数与存储分
0x02 时寄存器以BCD码形式计数与存储时
0x03 周寄存器以BCD码形式计数与存储周
0x04 天寄存器以BCD码形式计数与存储天
0x05 月寄存器以BCD码形式计数与存储月
0x06 年寄存器以BCD码形式计数与存储年
0x07 时间调整晶振参数修正及外部晶振选择控制
0x08 分定时A 存储定时器A的分数据
0x09 时定时A 存储定时器A的时数据
0x0a 天定时A 存储定时器A的天数据
0x0b 分定时B 存储定时器B的分数据
0x0c 时定时B 存储定时器B的时数据
0x0d 天定时B 存储定时器B的天数据
0x0e 控制寄存器1 闹铃使能、中断输出选择及周期性中断选择
0x0f 控制寄存器2 时间显示格式选择、中断与报时标志及停振检测(1)秒寄存器(部地址0x00)
秒计数围为0x00〜0x59 (BCD码格式),当计数从0x59变为0x00时,分寄存器值加1.默认操作是指当XSTP位为1 (上电、掉电或者停振后再起振)时,执行读操作。
(2)分寄存器(部地址0x01)。
D7 D6 D5 D4 D3 D2 D1 D0 操作
分计数围为0x00〜0x59,当计数从0x59变为0x00时,时寄存器值加1
(3)时寄存器(部地址0x02)。
时计数围为0x01〜0x12( 12小时制)或0x00〜0x23 (24小时制)。
当计数从11PM
变成12AM( 12小时制)或0x23变成0x00 (24小时制)时,天寄存器值加1。
(4)周寄存器(部地址0x03)。
周计数围为0x00〜0x06,其中0x01〜0x06表示星期1至星期6, 0x00表示星期天。
当天计数加1时,星期计数也加1。
(5)天寄存器(部地址0x04)。
D7 D6 D5 D4 D3 D2 D1 D0 操作
一一D20 D10 D8 D4 D2 D1 写
0 0 D20 D10 D8 D4 D2 D1 读
0 0 一一一一一一默认
天计数围为:
0x01 〜-0x31 (一月、三月、、五月、七月、八月、十月、十二月)
0x01 〜7x30 (四月、六月-、九月、十一月)
0x01 〜7x29 (闰年二月)
0x01
〜
-0x28 (平年二月)
(6)月寄存器(部地址0x05)。
D7 D6 D5 D4 D3 D2 D1 D0 操作
一一D20 D10 D8 D4 D2 D1 写
0 0 D20 D10 D8 D4 D2 D1 读
0 0 一一一一一一默认
月寄存器围为0x01〜0x02,当计数从0x12变成0x01时,年寄存器值加1.
(7)月寄存器(部地址0x05)。
Y80 Y40 Y20 Y10 Y8 Y4 Y2 Y1 读 默认
年寄存器围为0x00〜0x99,其中0x00、0x04、0x08…0x92、
(8)时间调整寄存器(部地址0x07)。
0x96 为闰年。
D7 D6 D5 D4 D3 D2 D1 D0 操作 XSL_ F6 F5 F4 F3 F2 F1 F0 写 XSL_
F6
F5
F4
F3
F2
F1
F0
读
默认
位7: XSL-位为晶振选择为。
SD2303置 茅晶
振,
此位必须固定为
0。
位6〜位0:时间调整位。
时间调整电路是在当秒计数到 0x00、0x20、0x40时刻, 根据预先设定的数据(F5〜F0)改变1秒时钟的计数个数。
通常每32768个脉冲位1 秒(对寄存器预定初值,才能激活整个调整电路)。
当F6为0时,产生1秒的寄存器计数脉冲将增加为 32768+[ (F5、F4、F3、F2、 F1、F0)
-1]*2个;当F6为1时,产生1秒的寄存器计数脉冲将增加为 32768-[ (/F5、 /F4、/F3、/F2、/F1、/F0) +1]*2 个。
当(F6、F5、F4、F3、F2、F1、F0)预设为(*、0、0、0、0、* )时,产生 1 秒的寄存器计数脉冲个数不变。
当(F6、F5、F4、F3、F2、F1、F0) = (0、1、0、1、0、0、1)且当时钟运行到
0x00、0x20、0x40秒时刻时,寄存器计数脉冲变为 32768+ (41-1 ) *2+32848个;
当(F6、F5、F4、F3、F2、F1、F0) = (1、1、1、1、1、1、0)且当时钟运行到 0x00、
0x20、0x40秒时刻时,寄存器计数脉冲变为 32768- (1+1) *2+32764个;
当(F6、F5、F4、F3、F2、F1、F0) = (0、0、0、0
、0、0、1)且当时钟运行到 0x00、
0x20、0x40秒时刻时,寄存器计数脉冲个数不变;
因为每20秒增加或者减少的计数脉冲个数最少为 2个,故时钟调整寄存器的最 小调整精度为 2/ (32768*20) =3.015ppm
时钟调整电路仅仅是调整时钟走时,并不影响晶振本身频率调整,故 32768Hz 的
脉冲输出不会改变。
(9)闹铃A 分寄存器(部地址0x08)。
闹铃A 分寄存器计数围同分寄存器
(10)闹铃A时定时器(部地址0x09)
D5位在12小时制中置0表示AM置1表示PM在24小时制中表示小时的十位在12小时制中,午夜的零点应该设置为0x12,中午0点应该设置为0x32。
(11)闹铃A周定时器(部地址0x0a)o
闹铃A周定时器的AW&AW0位对应星期6至星期1以及星期天。
如置位AW6和
AW(位,表示在星期六和星期天闹铃起作用。
当AW& AW(全部位0时,关闭闹铃。
(12)闹铃B分寄存器(部地址0x0b)o
D7 D6 D5 D4 D3 D2 D1 D0 操作~
-—BM40__BM20__BM10__BM8 BM4 BM2 BM1 写
—BM40 BM20 BM10 BM8 BM4 BM2 BM1 读
0 ———————默认
闹铃B分寄存器围同闹铃A寄存器。
(13)闹铃B时定时器(部地址0x0c)o
D7 D6 D5 D4 D3 D2 D1 D0 操作
——BH20/P_A__BH10__BH8 BH4__BH2 BH1 写
0 0 BH20/P_A BH10 BH8 BH4 BH2 BH1 读
00 ——————默认
闹铃B时定时器围同闹铃A时定时器。
(14)闹铃B周定时器(部地址OxOd)。
D7 D6 D5 D4 D3 D2 D1 D0 操作
-—BW6 BW5__B W4B W3__BW2 BW1 BW0 写
—BW6 BW5 BW4 BW3 BW2 BW1 BW0 读
0 ———————默认
闹铃B周定时器围同闹铃A周定时器。
(15)控制寄存器1 (部地址0x0e)o
位7: AALE为闹铃A使能位。
AALE置1时使能闹铃A中断,置0时禁止中断
位6: BALE为闹铃B使能位。
BALE S 1时使能闹铃B中断,置0时禁止中断
位5〜位4: SL2和SL1位中断输出选择位,如表5所示。
表5 SD2303中断输出选择
SL2 SL1 描述
0 0 闹铃A、闹铃B和周期性中断从INTRA输出,32k时钟脉冲从INTRB输出
闹铃A和周期性中断从INTRA输出,32k时钟脉冲和闹铃B从INTRB输出
0 1
1 0 闹铃A和闹铃B从INTRA输出,32k时钟脉冲和周期性中断从INTRB输出
1 1 闹铃A从INTRA输出,闹铃B、32k时钟脉冲和周期性中断从INTRB输出
位3: TEST位为SD2303测试位。
TEST位置0时,SD2303处于正常工作模式;TEST 位置1时,SD2303工作于测试模式。
一般TEST位应该置0。
位2〜位0: CT2和CT0为周期性中断选择位。
如表6所示。
表6 SD2303周期性终端选择
CT2 CT1 CT0 波形模式描述
0 0 0 一INTRA/INTRB为高电平
0 0 1 一INTRA/INTRB为低电平
脉冲模式2Hz中断(占空比50%)
0 1 0
0 1 1 脉冲模式1Hz中断(占空比50%)
1 0 0 电平模式每秒钟中断
电平模式每分钟中断(每分钟的00秒)
1 0 1
1 1 0 电平模式每小时中断(每小时的00分00秒)
1 1 1 电平模式每月中断(每月第一天的00时00分00秒)
脉冲模式中断时输出2Hz和1Hz的时钟脉冲,波形关系如图8所示
CTFC;
INTRA/1NTRE
图8脉冲中断波形输出
电平模式中断时输出每秒、每分、每小时或每月的中断波形,如图9所示。
CTFG=0
J
秒计数
INTRA/INTRB
:f
CTFG=C
!秒计数 卯秒计数
图9电平中断波形输出
(16)控制寄存器2 (部地址OxOf )。
D7 D6 D5 D4 D3 D2 D1 D0 操作 一
一
12/2
ADJ
CLEN
CTFG
AAFG
BAFG
写
4
0 12/2
XSTP
CLEN
CTFG
AAFG
BAFG
读
4
一
1
默认
位5: 12/24位为时间格式选择位。
12/24位置1时为24小时制,置0时为12小 时制。
位4: ADJ 位为秒调整位。
ADJ 位置1时为秒调整操作,置0时表示正常工作。
XSTP 位检测晶振停振与否。
在掉电或者晶振后该位自动置
1,检测该位可以判断时钟数据
的有效性。
XSTP 置位后 XSL F6〜FO 、CT2-CTO AALE BALE SL2〜S1、SLEN 和 TEST 位全部复位,INTRA 停止输出而INTRB 输出32768Hz 的时钟脉冲。
正常工作时应将XSTP 位写0复位。
位3: CLEN 位为32kHz 时钟输出使能位。
当发生CLEN 位置1时允许32kHz 时钟输 出,置0时禁止32kHz 时钟输出。
位2: CFG 位为周期性中断标志位。
当发生周期性中断时,该位置 1。
在电平模式 下将CTFG&写0将中止中断过程。
写入后INTRA 或INTRB 将变成高电平。
位1和位0: AAFG 和BAFG 位为闹铃 A 和闹铃B 的中断标志位。
仅当 AALE/BALE 置1时,才能产生闹铃中断。
当时钟时间和预设闹铃时间一致时,该位置
1。
将
AAFG/BAF (写 0可以中止中断过程。
写入后INTRA 或 INTRB 将变成高电平。
AAFG/BAF (与 INTRA/INTRB 的关系如图 10 所示。
AAFG/B A FG
^AAFG/EAFGj^O 置AAFG/BAFGjtfO
T V
时I可吻舍吋间吻合0寸罔物合
图10闹铃中断波形图输出
3.1.4 SD2303的数据传输
SD2303采用l2C三线串口接口,可参考l2C协议中的串行数据传输标准,下面仅给出SD2303的读写操作时序。
SD2303的12C器件代码为0x64。
D0=1表示读操作,D0=0 表示写操作。
(1)向SD2303寄存器写数据。
单片机向SD2303寄存器写数据时序如下:
•单片机发出STAR■开始信号。
•单片机送7位器件地址0110010,第8位送写命令0,然后收到SD2303的应答信号ACK
•单片机送1字节数据,高4位为SD2303的寄存器地址,低4位为写传输模式0000, 然后收到SD2303的应答信号ACK
•单片机送1字节数据,发送完成后收到SD2303的应答信号。
•如果需要送多字节数据,重复上一步动作。
•单片机发出停止信号STOP吉束l2C数据传输。
向SD2303寄存器0x04和0x05写数据的过程如图11所示。
从单
—ra应答信長| | ASD23O3到单片机叵| STO謄止信号叵]向0泊地址写一宇节数据'一
图11 SD2303写数据时序
(2)从SD2303寄存器读数据。
单片机从SD2303寄存器读数据可以通过如下3种方式进行: a )从SD2303指定寄存器地址中读数据。
从SD2303指定寄存器地址中读数据时序如下: •单片机发出STAR ■开始信号。
•单片机送7位器件地址0110010,第8位送读命令0,然后收到SD2303的应答 信号ACK •单片机送1字节数据,高4位为SD2303的寄存器地址,低4位为写传输模式0000, 然后收到
SD2303的应答信号ACK
•单片机发出一个新的STARTS 始信号。
•单片机送7位器件地址0110010,第8位送写命令1,然后收到SD2303的应答 信号ACK •单片机接收1字节数据,接收完成后向SD2303发送应答信号0。
•如果需要送多字节数据,重复上一步多年动作。
•单片机接收最后1字节数据,接收完成后向SD2303发送非应答信号1。
•单片机发出停止信号STOP 吉束l 2C 数据传输。
从SD2303指定寄存器地址0x04开始读3字节数据的过程如图12所示。
S
0 1 1 0
0 1 0 0 A Li 1 丁
0 0 0 0 0 A
SD23O3器件瓏趾 写
内部地址DM 写传输稅式0x0
图12 SD2303读数据时序
b )从SD2303指定寄存器地址中读数据。
从SD2303指定寄存器地址中读数据时序如下: •单片机发出STAR ■开始信号。
S
1 1 0 0 1 U 1
A
D1
A
D2 A
D3
/A P
SD2303器件地址
读
0x4
0x5
0x6
START 开始信号|直|应答信号0
□ 从SD^03^J 单片桩 回 ?TOP 停止信号 区 菲应答蓿寻1
匚| M 奇有鬧读一
宇节
•单片机送7位器件地址0110010,第8位送写命令0,然后收到SD2303的应答信号ACK
| ]从寄存蛊读一宇节 •单片机送1字节数据,高4位为SD2303勺寄存器地址,低4位为写传输模式0100,
然后收到SD2303的应答信号ACK
•单片机接收1字节数据,接收完成后向SD2303发送应答信号0。
•如果需要送多字节数据,重复上一步多年动作。
•单片机接收最后1字节数据,接收完成后向SD2303发送非应答信号1。
•单片机发出停止信号STOP 吉束|2C 数据传输。
从SD2303旨定寄存器地址0x04开始读3字节数据的过程如图13所示。
匚|从单片机剥SD23O3叵沢ART 开始信号[T ] 口 从SD23C35J 单片机 叵| STOP 停止信号 /A
图13 SD2303读数据时序
C )直接读取数据(只能从0x0f 地址开始读取)。
直接读取数据的时序如下: •单片机发出STAR ■开始信号。
•单片机送7位器件地址0110010,第8位送读命令1,然后收到SD2303的应答
信号ACK
•单片机接收1字节数据,接收完成后向SD2303发送应答信号0。
•如果需要送多字节数据,重复上一步多年动作。
•单片机接收最后1字节数据,接收完成后向SD2303发送非应答信号1。
•单片机发出停止信号STOP 吉束|2C 数据传输。
直接读取数据只能从0x0f 地址开始,然后是地址0x00、0x01…,如图14所示。
□痕片机至即咖邑汰的开輛号丄|備信別□从曲鹹一打 |—|躺D230翅单片机回
STOP 停止信号庄|菲应答信号1
图14 SD2303读数据时序
''I
g
1
4
VDD CE
VDA SDI MOD SDO GND
SCLK
丄
7
3
1
5
6
7
14
I J O
J TZ
19_ lJDuF ~30 21
—
P0O (10) ?
PB1CT1)
PB2 (A1N
PB3 (AIN1FB4CSS) PB5 (MOS P 戎(MISO PB7 (SCK
FD(J(RXD FDl (TXD)PD2 (INTO PM (INTI)PIMfOClB
PD5(OC1A
PD6(ICP)
PD7(TOSC
RESET
XL
X2 5
39
38
37 36 25 34
33 71
23 24 25 26 27
2S
£
32 31 30
3.2 温度检测电路设计
万年历种的温度检测采用带 SPI/三线串行接口的DS1722温度传感器芯片,它与
STC89C5单片机的连接如图15所示
图15 温度检测电路
3.2.1
温度传感器DS1722简介
DS1722是美国MAXIM 公司的一款SPI/三线串行接口的DS1722温度传感器,无
需外围元件即可完成对环境温度的检测。
她可通过 Motorola 公司倡导的SPI 总线或
者三线串口方式同处理器进行通信。
通信方式可自行选择。
DS1722温度传感器的测量围位—55E 〜120C ,精度为土 2C 。
DS1722提供8〜 12位的可
编程转换值,即分辨率从1.0 C 〜0.0625 C 。
温度值直接以数字形式输出。
DS1722可以工作在单次转换和自由(连续)转换模式下。
当工作在单次转换模 式下时,每启动
一次转换,DS1722便将采集到的温度数据存储在寄存器里面;当工 作于自由转换模式下时,DS1722连续采集温度数据,并将最近一次的采集数据存储 起来。
DS1722
13 1
2
J
u?
40
322 DS1722的引脚配置
DS1722的引脚配置如图16所示
图16 DS1722引脚配置
表7给出了DS1722的引脚功能说明。
表7 DS1722引脚功能表
引脚编号符号功能
1 VDDD 数字电源,供电围:1.8V〜5.5V
2 CE 片选,当DS1722与微处理器通信时必须置低
3 SCLK 串行时钟输入
4 GND 地
5 SDO 串行数据输出
6 SDI 串行数据输入
7 SERMODE SPI/三线串口模式选择
8 VDDA 模拟电源,供电围: 2.66V〜5.5V
DS1722温度传感器采用SPI/三线串行接口通信模式。
当SERMOD g VCC寸,选择SPI模式;当S E R M O D接地时,选择三线串口模式。
在SPI模式下,SCLK SDI和SDO分别位SPI的串行时钟输入端、串行数据输入端和串行数据输出端。
在三线串口通信模式下,SDI必须和SDO!连作为一个I/O 口。
3.2.3 DS1722的部寄存器
DS1722部设置有3个寄存器,包含一个控制/状态寄存器和两个温度数据寄存器。
(1)控制寄存器。
控制/状态寄存器分配有2个地址。
当写控制/状态寄存器时,访问地址为0x80; 当读控制/状态寄存器时,访问地址为0x00。
位4: 1SHOT为单次转换使能位。
如果SD位为1 (自由转换使能禁止),将1SHOT 位写1,将启动一次温度转换并存储数据。
转换结束时1SHO■位被硬件清零。
如果SD 位为0,对1SHOT 位执行写操作无效。
上电时1SHOT位为0。
位3〜位1: R2 R1、R0位为DS1722温度转换分辨率选择位。
如表8所示。
上
电时(R2, R1,RC)= (0,0,1 ),即默认为9位分辨率
R2 R1 R0 分辨率最大转换时间
0 0 0 8位0.075 秒
0 0 1 9位0.15 秒
10位0.30 秒
0 1 0
0 1 1 11位0.60 秒
1 X X12位 1.20 秒
位0: SD位为DS1722自由转换模式选择位。
当SD=0时,DS1722将持续进行温
度转换并存储最近一次的转换值到温度数据寄存器。
当SD从0变为1时,DS1722Z
直到完成当前转换后才回到低功耗状态。
上电时SD位为1
(2)温度数据寄存器。
温度数据寄存器由两个寄存器组成,访问地址分别为0x02和0x01 (读、写)。
温度数据寄存器存放以摄氏温度为单位的温度数值。
温度的整数位存储在0x02地址
的寄存器里,而小数位存储在0x01地址的寄存器里。
其中S位为符号位,S=1表示零下温度。
表9列出了不同的温度数值以12位分辨率采样时在温度数据寄存器里面存储的格式。
如果以较低的分辨率采样时,相应的位将为0。
表9 DS1722 温度数据存储格式
温度数字输出(二进制)数字输出(十六进制)
+ 120C0111 1000 0000 0000 0x7800
+25.0625 C0001 1001 0001 0000 0x1910
+ 10.125 C0000 1010 0010 0000 0x0a10
+0.5 C0000 0000 1000 0000 0x0080
0C0000 0000 0000 0000 0x0000
-0.5 C1111 1111 1000 0000 0xff80
-10.125 C1111 0101 1110 0000 0xf5e0
-25.06 25C1110 0110 1111 0000 0xe6f0
-55C1100 1001 0000 0000 0xc900
3.2.4 DS1722的数据传输过程
DS1722可以通过Motorola SPI和三线串口方式同微处理器通信。
当采用SPI通
信方式时,数据的最高位MSB最先被传送,而采用三线串口通信方式时数据的最低位LSB被最先传送。
在SPI通信方式下,DS1722为SPI从机,微处理器为主机。
只有在片选引脚CE 被置高后,移位时钟SCLK方被激活。
在许多带SPI接口的微处理器中,时钟极性CPOL 是可编程的,但DS1722的时钟极性CPO则是当片选端CE有效时通过采样SCLK脚的电平来确定的,输入数据在部选通时被锁存,输出数据在移位边沿被移出。
如表10所示。
图17给出了不同CPOL寸DS1722的数据传输时序。
表10 SPI
工作方式时DS1722的状态表
操作模式CE SCLK SDI SDO
无效L 输入无效输入无效高阻态
写操作H CPOL=1* 数据锁存高阻态
CPOL=0
读操作H CPOL=1 X下一位数据移位
CPOL=0 ** *时钟极性CPOL在微处理器的SPI控制寄存器中设置。
**读数据操作数据被移出前高阻态。
移位1-內部先備CPOL=1 1 、F1
▼ 1 r▼
I-
CE
CPOL=0
SCUC
图17不同时钟极性时的数据传出时序
微处理器以SPI方式与DS1722通信时,时钟相位CPHA必须置1。
SPI方式下, SCLX nnnnnnnnnnnnnn.n_n
spi _________________
DS1722单字节数据读写时序如图18和19所示。