测控系统、设备与仪器应用综合能力训练

上传人:n**** 文档编号:55107392 上传时间:2018-09-24 格式:DOCX 页数:22 大小:998.31KB
返回 下载 相关 举报
测控系统、设备与仪器应用综合能力训练_第1页
第1页 / 共22页
测控系统、设备与仪器应用综合能力训练_第2页
第2页 / 共22页
测控系统、设备与仪器应用综合能力训练_第3页
第3页 / 共22页
测控系统、设备与仪器应用综合能力训练_第4页
第4页 / 共22页
测控系统、设备与仪器应用综合能力训练_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《测控系统、设备与仪器应用综合能力训练》由会员分享,可在线阅读,更多相关《测控系统、设备与仪器应用综合能力训练(22页珍藏版)》请在金锄头文库上搜索。

1、测控系统、设备与仪器应用综合能力训练-红外遥控电子时钟设计说明书目录目录1 绪论.12 硬件设计.22.1 DS1302 时钟芯片.22.1.1 管脚介绍.22.1.2 读写指令32.1.3 电路连接.42.2 红外遥控器.42.3 1602 显示屏53 程序设计.83.1 程序流程图.83.2 时间显示.83.2.1 读取时间.83.2.2 显示时间93.3 按键识别.113.4 时间设置.123.4.1 光标位置控制.123.4.2 设置时间.14参考文献.16附录 程序清单.1711 绪论电子时钟在我们生活中随处可见,已经不是一个稀奇的东西了。然而现在的各种电子时钟虽然可能有着各种先进的

2、功能,但普遍存在一个缺点时钟的控制按键都设置在时钟上,要想完成时间设置这一基本功能,必须拿到时钟才能实现。尤其是对于那些壁挂式的电子时钟,若每次设置的时候都要将其取下来必然带来很大的不便。针对这一缺点,本文阐述了一个普通电子时钟的改进方案。本次课程设计设计的电子时钟,要求能够计时年、月、日、时、分、秒和星期,并可以通过红外遥控器设置时间,非常方便。计时部分采用 DS1302 时钟芯片实现。该芯片有两个电源引脚,在主电源掉电的情况下可由电池供电而继续工作,从而避免了每次开机都需要重新设置时间的麻烦。显示部分采用的是 1602 显示屏,可以在一屏上显示出所有时间信息,比数码管显示更加清晰。22 硬

3、件设计本文设计的是一个电子时钟。系统的时间从 DS1302 读取。用户可以通过红外遥控器设置系统时间。为了提高遥控器所发射信号的抗干扰能力,遥控器发射的红外信号是经过调制的,所以首先要经过解码器将原始信号从载波信号中分离出来。然后再由单片机对原始信号进行处理,识别出当前按下的按键并执行相应的命令,实现时间设置。最终由 LCD1602 显示屏将时间显示出来。系统工作原理如图 2.1 所示。图 2.1 电子时钟电路工作原理2.1 DS1302 时钟芯片2.1.1 管脚介绍DS1302 时钟芯片是本次设计的电子时钟的时间来源。他和我们日常接触的电子表差不多,可以对年月日、时分秒和星期计时。可以用单片

4、机从 DS1302 中读取时间放在液晶屏上显示,也可以用单片机往 DS1302 里面写入时间进行时间设置。这样就可以实现一块电子表的功能了。DS1302 的工作电压为 2.0-5.5V,工作电流小于 320 nA,所以在主电源断开的情况下,仅需一块电池任然能够维持长时间的工作。芯片能够自动完成大月小月以及闰年的计算,计时时间可到 2100 年。DS1302 共有 8 个管脚,管脚图如图 2.2 所示。图 2.2 DS1302 管脚图3其中 X1,X2 脚为 32.768KHz 晶振管脚,为芯片提供工作频率,该晶振的精度直接影响到芯片的计时精度。2.1.2 读写指令DS1302 的一条指令一个字

5、节 8 位,其中第七位(即最高位)是固定 1,这一位如果是 0的话,那写进去是无效的。第六位是选择 RAM 还是 CLOCK 的,我前边说过,我们这里主要讲 CLOCK 时钟的使用,它的 RAM 功能我们不用,所以如果选择 CLOCK 功能,第六位是 0,如果要用 RAM,那第六位就是 1。从第五到第一位,决定了寄存器的 5 位地址,而第零位是读写位,如果要写,这一位就是 0,如果要读,这一位就是 1。DS1302 有 8 个和时钟有关的寄存器,5 位地址分别是 00000 一直到 00111 这 8 个地址,还有一个寄存器的地址是 01000,这是涓流充电所用的寄存器,程序中没有用到。在DS

6、1302 的数据手册里的地址,直接把第七位、第六位和第零位值给出来了,所以指令就成了 80H、81H 那些了,最低位是 1,那么表示读,最低位是 0 表示写,如图 2.3 所示。图 2.3 DS1302 时钟寄存器从图中可以看出,年月日、时分秒和星期都有各自的地址,且读写地址不同,所以只要先向芯片中写入目标地址,就可以从芯片中读取时间或向芯片中写入时间1。42.1.3 电路连接图 2.4 DS1302 外部电路DS1302 外部电路如图 2.4 所示。SCLK 脚、I/O 脚和 RST 脚分别接单片机的 P10、P11 和P12 脚,时钟脉冲由单片机发出,根据三线之间的电平变化关系,可以实现从

7、芯片中读取时间或向芯片中写入时间2。具体时序关系参见程序设计部分。2.2 红外遥控器红外遥控器主要作用是设置时间,这里选用的遥控器采用的是 TC9012 芯片,该芯片可应用于电视机、组合音响设备、录音卡座、VCD、DVD 播放机等设备的控制。由于我们用到的的只是遥控器发出的红外信号,所以这里对芯片的工作原理不做详细介绍。按下遥控器的不同按键可发出不同的红外编码,通过程序解码后可判断是哪一按键被按下,然后做相应的处理。解码原理将在程序设计部分介绍。红外遥控器的接收器与单片机的连接关系如图 2.5 所示3。图 2.5 红外接收器电路图接收器的 1 脚为信号输出端,连接到单片机的 3.2 脚做外部中

8、断 0 的中断源,同时连接到了 LED1,通过 LED 指示接收器是否接收到了信号。2 脚为电源负极,3 脚为电源正极,这里接了一个 0.1uF 的电容,滤除电源中的杂波。接收器的作用是将接收到的红外信号中5的原信号与载波信号分离,得到原始信号。2.3 1602 显示屏LCD1602 是一种常用的简易显示屏,可以显示阿拉伯数字、英文大小写字母以及一些简单的日文和符号等,但是不能显示汉字。LCD1602 模块上固化了字模存储器(CGROM 和 CGRAM) ,内置了 192 个常用字符的字模,存于字符产生器 CGROM(Character Generator ROM)中,还有 8 个允许用户自定

9、义的字符产生 RAM,称为 CGRAM(Character Generator RAM)。DDRAM(Display Data RAM)是显示数据 RAM,用来寄存待显示的字符代码。DDRAM 相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。同理,为了在液晶屏幕上显示字符,把字符代码送入 DDRAM 即可。1602 的字符代码与字符的 ASCII 码一致。字符的显示位置由字符写入的显存地址控制。1602 共有 80 个字节的显存,但显示屏只有十六位,所以只用到了其中的 16 个字节,第一行的八个字节的地址为 0x800x87,第二行的八个位置

10、对应的地址是 0xC00xC7。写在这些地址外的内容除非移动屏幕否则不会被显示。1602 有 16 个引脚,如图 2.6 所示(图中从左往右依次是 16 脚到 1 脚) 。图 2.6 1602 引脚图各个引脚的功能说明见表 2-1。表 2-1 1602 引脚说明6引脚号符号引脚说明引脚号符号引脚说明1VSS电源地9D2数据端口2VDD电源正极(+5V)10D3数据端口3VO偏压信号11D4数据端口4RS命令/数据12D5数据端口5RW读/写13D6数据端口6E使能14D7数据端口7D0数据端口15A背光正极8D1数据端口16K背光负极注:1. VO 是液晶显示的偏压信号,可接 10K 的 32

11、96 精密电位器。或同样阻值的 RM065/RM063 蓝白可调电阻。2. RS 是命令/数据选择引脚,接单片机的一个 I/O,当 RS 为低电平时,选择命令;当 RS 为高电平时,选择数据。3. RW 是读/写选择引脚,接单片机的一个 I/O,当 RW 为低电平时,向 LCD1602 写入命令或数据;当 RW 为高电平时,从 LCD1602 读取状态或数据。如果不需要进行读取操作,可以直接将其接VSS。4. E 为执行命令的使能引脚,接单片机的一个 I/O。5. D0D7,并行数据输入/输出引脚,可接单片机的 P0P3 任意的 8 个 I/O 口。如果接 P0 口,P0口应该接 4.7K10

12、K 的上拉电阻。如果是 4 线并行驱动,只须接 4 个 I/O 口。6. A 背光正极,可接一个 1047 欧的限流电阻到 VDD。7. K 背光负极,接 VSS。1602 的电路连接图如图 2.7 所示。7图 2.7 LCD1602 电路连接图数据位 DB0DB7 连接的是单片机的 P0 口,VO 接 10K 的电位器用来调节显示屏的对比度。83 程序设计3.1 程序流程图图 3.1 数字时钟流程图3.2 时间显示3.2.1 读取时间DS1302 的读取时序如图 3.2 所示。图 3.2 DS1302 读时序9RST 引脚(复位引脚)标号上面的一个横杠表示此引脚低电平有效,也即给它低电平后芯

13、片复位,不能正常工作4。所以欲使芯片正常工作,此引脚应该给高电平,从时序图中也可以看出,我们进行写操作的时候 RST 引脚应该置为高电平。再看 SCLK 时钟引脚和IO 引脚。图中的前八位的黑色箭头表示写入的数据在上升沿锁存,后八位的黑色箭头表示下降沿读取数据。也就是说如果我们要从 DS1302 里面读出一位二进制数据,首先应该把 SCLk 引脚拉高,然后把 SCLK 拉低(在 SCLK 拉低的一瞬间 DS1302 的数据送到了 IO端口上),再把 IO 口上的数据存入变量,此时就读到了一位二进制数据。还有一点需要注意,读数据的时候先读低位,后读高位,且要先写地址,后读数据。从 R/的符号中可

14、以看出,写地址时,如果最低位写入的是 0 这说明是要往芯片里W写数据,在输入完第一个字节后,芯片会等待输入数据;如果最低位写入的是 1,则是从芯片读取数据,在写完地址后芯片会在串行时钟的控制下输出时间数据。要注意的是,芯片在写完一个字节后的第一个下降沿就开始输出时间,中间没有间隔。从 DS1302 直接读取的是时间的 8421BCD 码,前四位储存的是十位数的二进制值,后四位是给位数的二进制值。经 time = time/16*10+time%16;这步运算后将其转化为十进制数并作为函数的返回值。3.2.2 显示时间1602 显示屏的写操作分为写命令和写数据两种。写命令包括清屏、光标归位、显示

15、屏开关以及是否显示光标等。详细指令集可查阅 1602 元件手册。写入数据前先写入命令将光标移动到要显示该数据的位置。写入数据后,根据设置光标自动向左或向右移动一位。所以如果是写连续显示的几位的话可以不必每次都写入光标移动命令。执行写操作时 RW 脚要清零,此时若 RS 脚也清零则为写命令,否则为写数据,写时序图如图 3.3 所示。10图 3.3 1602 写时序图先将使能端 E 电平拉低,然后将 R/W 脚电平拉低,根据写命令还是写数据设置好 RS脚的电平,把要写入的数据放到 P0 口,这样便做好了写的准备工作。这时再将 E 脚电平置 1 即可将 P0 的数据写入 1602。1602 执行某些

16、指令需要花费较长的时间,当上条指令没有执行完时是无法接收下一条指令的。所以在写指令之前要进行判忙,以免指令丢失。利用以上两个函数便可实现显示功能,如以下两个函数分别可以实现在指定位置显示一个字符和字符串。void WriteChar(int x,int y,char charData)/在(x,y)处显示字符 charData if(y = = 0) WriteCommand(0x80+x);/写入要显示的位置 else WriteCommand(0xC0+x); WriteData(charData);/写入显示的内容 void WriteString(int x,int y,char* string)/从(x,y)处显示字符串 string /addx = x; /addy = y; if(y = = 0) WriteCommand(0x80+x); else WriteCommand(0xC0+x); while(*string) /循环发送所有字符,每写完一个字符光标自

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 电气安装工程

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号