数字时钟设计1 - 图文

更新时间:2024-05-02 03:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

第一章 绪论

3

第二章 方案论证与设计

5

2.1设计要求 5 2.2方案论证 5 2.3 系统设计

6

2.3.1 晶体振荡器电路 6

2.3.2 分频器电路

6

2.3.3 时间计数器电路 6

2.3.4 内部时钟电路 6 2.3.5复位电路 7 2.3.6 按键部分 8 2.3.7声光报警电路 8

2.3.8 根据各模块的功数字能互相连接成时钟的控制电路第三章 设计所用器件及硬件介绍

10

3.1器件 10 3.2硬件介绍 10 3.2.1 AT89S51 10

3.22 LCD1602液晶显示器 3.2.3 DS1302 13 3.2.4 DHT21 14

第四章 系统软件总体设计 15

4.1 温湿度传感模块程序设计 15

4.2 时钟模块程序设计 17 4.3.1 写单字节数据程序模块 18 4.3.2 读单字节数据程序模块 18 4.3.3 初始化设置程序模块 19 4.4 按键处理 19

第五章 调试与检测安全

20

参考文献: 21 致谢 21

9

数字时钟设计

摘要:本设计以数字集成电路技术为基础,单片机技术为核心。软件设计采用模块化结构,C语言编程。系统通过LCD显示数据,可以显示温湿度、公历日期(年、月、日、时、分、秒)以及星期,并实现闹钟功能。在内容安排上首先描述系统硬件工作原理,着重介绍了各硬件接口技术和各个接口模块的功能;其次,详细的阐述了程序的各个模块和实现过程。

第一章 绪论

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社

会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动

力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时自动报时及自动控制的领域

LCD( Liquid Crystal Display),对于许多的用户而言可能是一个并不算新鲜的名词了,不过这种技术存在的历史可能远远超过了我们的想像 -早在19世纪末,奥地利植物学家就发现了液晶,即液态的晶体,也就是说一种物质同时具备了液体的流动性和类似晶体的某种排列特性。现在的时代其实还是模拟时代,而未来的时代从目前的发展趋势来看是数字时代。显示器智能化操作,数字控制、数码显示是未来显示器的必要条件。随着数字时代的来临,数字技术必将全面取代模拟技术,LCD不久就会全面取代现在的模拟CRT显示器。

第二章 方案论证与设计

2.1设计要求

本设计准备实现的功能:

(1) 显示公历日期功能(年、月、日、时、分、秒以及星期) (2) 可通过按键切换年、月、日及时、分、秒的显示状态 (3) 可随时调校年、月、日或时、分、秒 (4) 可实时显示温、湿度

(5) 可动态完整显示年份,实现真正的万年历显示 (6) 可实现闹钟功能

2.2方案论证

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微

型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。

凌阳16位单片机有丰富的中断源准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。I/O口功能也比较强大,方便使用。用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。这些都方便对设计进行扩展,使设计更加完善。成本也相对低一些。但是,在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高,而且就需要完成万年历这个不太复

杂的设计可以不必用凌阳16位单片机来完成,采用单片机既能够实现既定功能,成本也不高。综合考虑最后选择用单片机来作为中心控制器件。

液晶显示效果出众,可以运用菜单项来方便操作,比较简单,所以,最后选择液晶显示方案。

传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。

2.3 系统设计

2.3.1 晶体振荡器电路

晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体荡器电路。本设计中的震荡电路如图2.1所示

图2.1 晶振电路

2.3.2 分频器电路

分频器电路将高频方波信号经分频后得到1Hz的方波信号供秒计数器进行计数,分频器实际上也就是计数器。

2.3.3 时间计数器电路

时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器而根据设计要求,时个位和时十位计数器为12进制计数器。

2.3.4 内部时钟电路

内部时钟电路如图3.2所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常石英晶体和电容组成的并联谐振回路,晶体振荡器选择12MHZ,电容采用30PF

图2.2 内部时钟电路

2.3.5复位电路

MCS-51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发

器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

上电复位:上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST 引脚的高电平信号必须维持足够长的时间。

上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。电路如图2.3所示

图2.3 复位电路RC

2.3.6 按键部分

本设计总的用了五个按扭开关作为键盘,用于调整时间和设置状态。电路如图2.4所示

图2.4 按键电路

2.2.7声光报警电路

利用单片机的IO口控制一个8550的三极管,三极管控制蜂鸣器的电源通断。从而实现输出声音。声光报警电路如图2.5所示

图2.5 声光报警电路

2.2.8 根据各模块的功能互相连接成数字时钟的控制电路

图2.6控制模块示意图

第三章 设计所用器件及硬件介绍

3.1器件

5V电源

单片机1个(AT89S51) 液晶显示器(LCD1602 )1个 DS1302 1个 DHT21 1个

电阻 10K的滑动变阻器1个、1K的电阻的2个、2K的1个、排阻1个、导线若干 8550三极管

晶振12M的一个 32768K的一个 电容(30P的4个) 蜂鸣器1个 LED二极管1个

1μf电容2个、47μf的电解电容1个、轻触开关6个、发光二极管2个

3.2 硬件介绍 3.2.1 AT89S51

AT89S51 为 ATMEL 所生产的可电气烧录清洗的 8051 相容单芯片,其内部程序

代码容量为4KB

(一)、AT89S51主要功能列举如下:

1、为一般控制应用的 8 位单芯片

2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz) 3、内部程式存储器(ROM)为 4KB 4、内部数据存储器(RAM)为 128B 5、外部程序存储器可扩充至 64KB 6、外部数据存储器可扩充至 64KB

7、32 条双向输入输出线,且每条均可以单独做 I/O 的控制 8、5 个中断向量源 9、2 组独立的 16 位定时器 10、1 个全多工串行通信端口

11、8751 及 8752 单芯片具有数据保密的功能 12、单芯片提供位逻辑运算指令

(二)、AT89S51各引脚功能介绍:

VCC:

AT89S51 电源正端输入,接+5V。 VSS:

电源地端。 XTAL1:

单芯片系统时钟的反相放大器输入端。 XTAL2:

系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET:

AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能

AT89S51 完成系统重置的各项动作,使得内部特殊 功

能寄存器之内容均被设成已知状态,并且至 地址0000H处开始读入程序代码而执行程序。

EA/Vpp:

\为英文\的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。 ALE/PROG:

ALE是英文\的缩写,表示地址锁存器启用信号。AT89S51可以

利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为AT89S51是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。 PSEN:

此为\的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。 PORT0(P0.0~P0.7):

端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。

PORT2(P2.0~P2.7):

端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。 PORT1(P1.0~P1.7):

端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。 PORT3(P3.0~P3.7):

端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数

据存储器内容的读取或写入控制等功能。 其引脚分配如下:

P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断0输入。 P3.3:INT1,外部中断1输入。 P3.4:T0,计时计数器0输入。 P3.5:T1,计时计数器1输入。 P3.6:WR:外部数据存储器的写入信号。 P3.7:RD,外部数据存储器的读取信号。

3.22 LCD1602液晶显示器

1602字符型LCD简介

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图 3.1

图3.1 1602字符型液晶显示器实物图

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3.2所示:

图3.2 1602LCD尺寸图

1602LCD主要技术参数:

显示容量:16×2个字符

芯片工作电压:4.5—5.5V

工作电流:2.0mA(5.0V)

模块最佳工作电压:5.0V

字符尺寸:2.95×4.35(W×H)mm

引脚功能说明

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:

编号 1 2 3 4 5 6 7 8 符号 VSS VDD VL RS R/W E D0 D1 引脚说明 电源地 电源正极 液晶显示偏压 数据/命令选择 读/写选择 使能信号 数据 数据 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 数据 数据 数据 数据 数据 数据 背光源正极 背光源负极 表10-13:引脚接口说明表

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

1602LCD的指令说明及时序

1602液晶模块内部的控制器共有11条控制指令,如表10-14所示:

序号 指令 1 2 3 4 5 6 7 8 9 清显示 光标返回 置输入模式 显示开/关控制 光标或字符移位 置功能 置字符发生存贮器地址 置数据存贮器地址 读忙标志或地址 RS R/W D7 D6 D5 D4 D3 D2 D1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 D0 1 * S B * * 1 I/D D C 1 S/C R/L * DL N F * 1 字符发生存贮器地址 1 显示数据存贮器地址 BF 计数器地址 10 写数到CGRAM或DDRAM) 11 从CGRAM或DDRAM读数 0 要写的数据内容 1 读出的数据内容 表10-14:控制命令表

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)

指令1:清显示,指令码01H,光标复位到地址00H位置。

指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。

指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

指令7:字符发生器RAM地址设置。

指令8:DDRAM地址设置。

指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据。

指令11:读数据。

与HD44780相兼容的芯片时序表如下:

读状态 写指令 读数据 写数据 输入 RS=L,R/W=H,E=H 输出 D0—D7=状态字 输入 RS=L,R/W=L,D0—D7=指令码,E=高脉冲 输出 无 输入 RS=H,R/W=H,E=H 输入 RS=H,R/W=L,D0—D7=数据,E=高脉冲 输出 D0—D7=数据 输出 无 表10-15:基本操作时序表

读写操作时序如图3.3和3.4所示:

图3.3读操作时序

图3.4 写操作时序

LCD1602的RAM地址映射及标准字库表

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3.5是1602的内部显示地址。

图3.5 1602LCD内部显示地址

例如,第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图3.6所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”

图3.6 字符代码与图形对应图

1602LCD的一般初始化(复位)过程

延时15mS

写指令38H(不检测忙信号) 延时5mS

写指令38H(不检测忙信号) 延时5mS

写指令38H(不检测忙信号)

以后每次写指令、读/写数据操作均需要检测忙信号 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:显示清屏 写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置

硬件原理图

1602液晶显示模块可以和单片机AT89C51直接接口,电路如图3.7所示。

图3.7硬件原理图

程序代码

#include #include sbit rs= P2^0; sbit rw = P2^1; sbit ep = P2^2;

unsigned char code dis1[] = {%unsigned char code dis2[] = {\void delay(unsigned char ms) {

unsigned char i; while(ms--) {

for(i = 0; i< 250; i++) {

_nop_(); _nop_(); _nop_(); _nop_(); } } }

bit lcd_bz() {

bit result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_();

result = (bit)(P0 & 0x80); ep = 0;

return result; }

void lcd_wcmd(unsigned char cmd) {

while(lcd_bz());//判断LCD是否忙碌 rs = 0; rw = 0; ep = 0;

_nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }

void lcd_pos(unsigned char pos) {

lcd_wcmd(pos | 0x80); }

void lcd_wdat(unsigned char dat) {

while(lcd_bz());//判断LCD是否忙碌 rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }

void lcd_init() {

lcd_wcmd(0x38); delay(1);

lcd_wcmd(0x0c); delay(1);

lcd_wcmd(0x06); delay(1);

lcd_wcmd(0x01); delay(1); }

void main(void) {

unsigned char i;

lcd_init();// 初始化LCD delay(10);

lcd_pos(0x01);//设置显示位置 i = 0;

while(dis1[i] != '\\0') {

lcd_wdat(dis1[i]);//显示字符 i++; }

lcd_pos(0x42);// 设置显示位置 i = 0;

while(dis2[i] != '\\0') {

lcd_wdat(dis2[i]);// 显示字符 i++; }

3.2.3 DS1302

S1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图3.8所示及内部结构如图3.9所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。

图3.8 DS1302的外部引脚图

图3.9 DS1302的内部结构

各引脚的功能为:

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

3.2.4 DHT21

DHT21数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集激素和和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个NTC测湿元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT21传感器都在极为精确的湿度校验室进行校准。校准系数以程序的形式储存在OPT内存中,传感器内部在检测检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离高达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选择。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。

第四章 系统软件总体设计

4.1 温湿度传感模块程序设计

DHT21的数据通信是以单总线串行输入/输出的方式,读写数据时均从字节最低位开始逐位写入或读取。编程时需要按照广州奥松有限公司公司官方DATASHEET精确地进行时序控制。它包含微秒级延时程序模块、DHT21读数据程序模块、数据处理模块,下面是模块程序设计的详细介绍。

(1) 微秒级延时子程序 void delay(int n) { while(n--); }

该函数用于控制时序中的高低脉冲时间,具体延迟时间所需设定的形参值均由KEIL软件计算得出。while(us--);连续执行n 个周期的空指令,一个周期大约是1us,则该程序大约延时n us。

(2) DHT21的读数据程序

DHT21读数据程序的流程图如图4.1 所示。

图4.1 DHT21读数据程序流程图

本文来源:https://www.bwwdw.com/article/c44g.html

Top