版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 1编号: 实训(论文)说明书题 目: 红外遥控数字钟红外遥控数字钟 2009 年 12 月 31 日0摘 要本系统设计一个基于单片机红外遥控电子钟,数据处理用 mcs-51 系列采用 89s51单片机作为中央控制器。数据采集部分采用集成数字时间的时、分、秒及温度传感器直接转换为二进制代码,并通过总线传送数据和发送控制指令,控制数字时间、温度传感器的读写操作。时间、温度传感器和单片机接口只需要一个 i/o 口,它使用的是美国 dallas 半导体公司生产的 18b20 温度采集芯片。一种红外遥控数字钟,由时钟集成电路、显示屏、蜂鸣器、分时驱动器、电源等组成,其特征是:在现有时钟电路的基础上增设
2、了一个可以接收和处理由红外遥控器发出的指令,由接收头、反相器、振荡器和解码集成电路等组成的,可以控制时钟集成电路、led128*64 显示屏、蜂鸣器工作状态的受控系统。关键字:89s51;18b20; max232;串行口; led128*641abstract the system design of a microcontroller based infrared remote control electronic clock data processing, with the mcs-51 family as the central controller using 89s51 micr
3、ocontroller. use of integrated digital data collection part of the time, hours, minutes, seconds, and temperature sensor directly converted into binary code, and transmit data through the bus, and sending control instructions to control the digital time and temperature sensor to read and write opera
4、tions. time, temperature sensor and microcontroller interface requires only an i / o port, it uses the u.s. dallas semiconductor chip production 18b20 temperature acquisition. an infrared remote control digital clock from the clock integrated circuits, display, buzzer, time-drive, power supply etc.,
5、 whose characteristics are: on the basis of the existing clock circuit can be added to receive and process by an infrared remote control the directives issued by the receiving head, inverter, oscillator and decoder integrated circuits etc., and can control the clock ic, led128 * 64 display, buzzer w
6、orking status of the controlled system. key words: 89s51; 18b20; max232; serial port; led128 * 640目 录引言 .11 1 设计思想与总体方案.11.1 主控制器选型 .11.2 ds1302 实时显示时间的软硬件 .21.3 显示方案论证 .21.4 报警方案论证 .31.5 键盘接口的选择 .31.6 红外通信的基本原理 .31.6.1 红外通信接口的硬件电路设计.41.6.2 红外发送器及原理.41.6.3 红外遥控电路原理分析.52 2 主要电路与程序设计.52.1 系统硬件的结构框图 .5
7、2.2 单片机最小系统设计 .523 温度电路设计 .624 显示电路设计 .62.5 声光报警电路 .72.6 实时时钟模块 .72.7 串行通信口与 rs232 电平转换接口电路 .82.8 键盘电路 .82.9 红外线接收电路 .93 软件设计说明.93.1 总模块的流程图.103.2 部分主要模块的流程图 .113.3 温度转换核心及其算法 .123.3.1 ds18b20 的内部结构 .123.3.2 ds18b20 的内存结构 .123.3.3 ds18b20 的测温功能 .123.3.4 温度转换算法及分析.134 系统调试及结果分析.164.1 led128*64 的测试方法和
8、结果 .164.2 ds18b20 的测试方法和结果 .164.3 键盘程序的测试方法和结果 .164.4 rs232 模块的测试方法和结果 .164.5 产品最终调试 .165 结论.17致 谢.18参考文献.19附 录 1 应用程序.20附 录 2 作品图.350引言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中红外遥控数字钟就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的红外遥控数字钟与传统的数字钟相比,具
9、有读数方便,也具有测量温度的功能,测温准确,其输出温度采用数字显示。该设计控制器使用单片机 at89s51,测温传感器使用ds18b20,通过液晶 128*64 显示屏读出具体的时间和温度。电流充电能力的低功耗实时时钟电路 ds1302 的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。给出 ds1302 在读写中的 c51 程序及流程图,以及在调试过程中的注意事项。 一种红外遥控数字钟,由红外遥控数字钟和红外遥控器共同组成,红外遥控数字钟由受控系统以及时钟集成电路,显示屏等组成,红外遥控器由编码集成电路、设定按键等组成,可以在
10、黑暗的环境下随时显示时间,交直流两用,蜂鸣时间一经设定,便可自动运行,可广泛适用于家庭和各类公共场所。1 设计思想与总体方案本系统要求完成对时间和环境温度的采集,对时间及温度数据的处理问题,因此,首要解决的采用何种微控制器以及何种传感器来对时间及温暖进行采集处理包括计算,其次是采集到的时间及温暖将通过何种方式去显示或通过何钟方式表达出来让人一目了然,最后要解决的是当检测到的温度超出正常或低于正常值时该做出报警反应或对外部设备作相应的控制。1.1 主控制器选型当今单片机厂商琳琅满目,mcu 品种繁多、产品性能各异。常用的单片机有很多种:intel8051 系列、motorola 和 m68hc
11、系列、atmel 的 at89 系列、microchip 公司的 pic 系列、atmel 的 at90s 系列等。不同型号的单片机功能各异、开发装置也不兼容。我们最终选用了 atmel 公司的 at89s51 单片机。at89s51 是美国 atmel 公司生产的低电压,高性能 cmos8 位单片机,片内含 8kbytes 的可反复擦写的只读程序存储器(perom)和 256bytes 的随机存取数据存储器(ram) ,器件采用 atmel 公司的高密度、非易失性存储技术生产,与标准 mcs-51 指令系统及 8051 产品引脚兼容,片内置通用 8 位中央处理器(cpu)和 flash 存储
12、单元,功能强大 at89s51 单片机适用于许多较为复杂控制应用场合。at89s51 单片机具有低电压供电和体积小等特点,四个端口只需要其中一个或两个口就能满足系统的设计需要,很适合便携手持式产品1的设计使用;系统可用二节电池供电。尽管 at89s51 单片机现在并不是最完善最先进的单片机,但是就其功能及相关资料在市面上非常丰富,编译器已经比较优化我们对其开发环境及开发语言也相当熟悉,对于本设计来说我们完全可以选择 at89s51 单片机作为主控制器。1.2 ds1302 实时显示时间的软硬件ds1302 与 cpu 的连接需要三条线,即 sclk(7)、i/o(6)、rst(5)。 ,其中,
13、时钟的显示用 lcd。 虽然 ds1302 在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的 3.6v 充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 f 就可以保证 1 小时的正常走时。ds1302 在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。 ds1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。ds1302 可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据
14、出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片ds1302,则能很好地解决这个问题。1.3 显示方案论证方案一:直接要数码管或者 7 段数码管加驱动显示。驱动 7 段数码管采用低电压扫描驱动具有:可以节约单片机 i/o 口,耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点;但是显示单一,只能显示数字和几个字母。就本设计而言
15、需要显示很多的操作提示信息和报警信息,数码管是难以达到的;且本设计需要单片机 i/o 口并不多,就 at89s51 的资源来说不必要考虑单片机 i/o 不必要考虑 i/o 口资源不足的问题。方案二:led 点阵显示。led 点阵可以显示多种字符以及图形,可视距离远,可用软件进行调制,有很强的兼容性以及可操作性。但是需要占要很多系统资源来对其控制;而就 at89s51 单片机的速度或系统资源来说控制 led 点阵的效果并不很理想,而且 led 点阵结构比较庞大,不利随身携带。方案三:led 液晶显示。lcd 液晶零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利控制简单等。与数码管相比显
16、得更为专业、漂亮;液晶显示屏以2其微功耗体积小,显示内容丰富、超薄轻巧、使用方便等诸多优点,在通讯、仪器仪表、电子设备、家用电器等低功耗应用系统中得到原来越广泛的应用,使这些电子设备的人机界面变得越来越形象,目前已广泛的饿用于电子表、计算器、ic 卡电话机机,液晶电视机、掌上玩具许多方面;虽然视觉范围较近,不太利于远处观察。对于本设计来说只是做为红外遥控电子钟的温度显示及人机操作界面提示信息,不需要原距离观察,如果需要远距离观察的的话应该首选 led 点阵显示。本例结合需要及实际经济情况综合考虑使用液晶 led128*64 作为时间、温度及信息显示,同时也利用 at89s51 单片机自带的串行
17、通信口与上位机个人电脑进行通信可以将大部分信息显示在电脑上。1.4 报警方案论证方案一:采用 ds1420 语音芯片可分段录放音模块,音质自然、使用方便、单片机存储、反复录音、低功耗、能够给人以直观的提示等诸多特点。在本系统中可以要于随时提示时间和温度以及上下限播报不同报警音乐。但是价格比较昂贵,本设计的来说可以暂时不考虑。方案二:采用单片机产生不同的频率信号来驱动蜂鸣器和发光二极管产生声光提示,不同的温度报警值对应不同的频率,此方案能完成声音提示功能,同时给人以提示可以类似电脑主机的蜂鸣报警,而且易于实现。故此红外遥控电子钟的报警方案采用方案二。1.5 键盘接口的选择在实际应用中,要求设定的
18、上下限温度温值会随着实际情况的需要变化而变化,因此,就要根据实际的情况来改变系统的温度设定值。作为一个系统,一旦做成产品后,就很难通过对程序的修改来完成对各项初值的设定,因而只有用按键的方式来重新对温度值进行设置。键盘有独立式和行列式两种,独立式键盘适用于简单的键盘设置中,行列式键盘适用于复杂的键盘设置中。对于该系统中只需要简单的对温度进行上、下限值设置,因而我们选用独立式键盘,这样的键盘编程简单、可靠。1.6 红外通信的基本原理红外通信是利用 950nm 近红外波段的红外线作为传递信息的媒体,即通信信道。发送端采用脉时调制(ppm)方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发
19、射管以光脉冲的形式发送出去;接收端将接收到的光脉转换成电信号,再经过放大。滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。31.6.1 红外通信接口的硬件电路设计单片机本身并不具备红外通信接口,但可以利用单片机的串行接口与片外的红外发射和接收电路,组成一个应用于单片机系统的红外串行通信接口,如图 1 所示。1.6.2 红外发送器及原理简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输;红外通信接口就是针对红外信道的调制解调器。红外发送器电路包括脉冲振荡器。驱动管 t1 和 t2.红外发射管 d1 和 d2 等部分。其中脉冲振荡器由 ne555 定
20、时器。电阻(r1.r2)和电容(c1.c2)组成,用以产生 38khz的脉冲序列作为载波信号;红外发射管 d1 和 d2 选用 vishay 公司生产的 tsal6238,用来向外发射 950nm 的红外光束。 红外发送器的工作原理为:串行数据由单片机的串行输出端 txd 送出并驱动 t1 管,数位“0”使 t1 管导通,通过 t2 管调制成 38khz 的载波信号,并利用两个红外发射管d1 和 d2 以光脉冲的形式向外发送。数位“1”使 t1 管截止,红外发射管 d1 和 d2 不发射红外光。若传送的波特率设为 1200bps,则每个数位“0”对应 32 个载波脉冲调制信号的时序,如图 4-
21、1 所示。图 4-1 遥控连发信号波形红外接收器红外接收电路选用 vishay 公司生产的专用红外接收模块 tsop1738。该接收模块是一个三端元件,使用单电源+5v 电源,具有功耗低。抗干扰能力强。输入灵敏度高。对其它波长(950nm 以外)的红外光不敏感的特点,其内部结构框图如图 4-2 所示。图 4-2 红外遥控系统框图用于红外线遥控电子钟的遥控器包括至少一个按键、红外线发射部分以及分别与4按键和红外线发射部分相连的遥控器控制电路,其中所述按键分别表示电子钟的各调节功能。受红外线遥控的电子钟包括显示面、电子钟控制电路,还包括接收上述遥控器发来的各种发光信号并将发光信号传递给电子钟控制电
22、路的红外线接收部分,而且电子钟控制电路还设有检测来自红外线接收部分的信号并执行信号所表示的电子钟的各调节功能的程序。1.6.3 红外遥控电路原理分析当红外遥控器按下时,红外接收头接收到红外信号,单片机产生中断,在中断程序进行红外解码,再按解码值判断哪个按键按下。通过按键值对时间进行设置。单片机通过读取时钟芯片1302,数据完成时间显示功能,显示部分采用led128*64显示,可以同时显示年,月,日,时,分,秒,星期及温度。2 主要电路与程序设计2.1 系统硬件的结构框图 根据时间和红外遥控电子钟设计的实际要求和设计方案的论证,系统主要由 at89s51 及相关的复位电路组成的单片机最小系统、由
23、 ds18b20 构成感温测温模块、由液晶显示屏 led128*64 显示模块、由蜂鸣器及 led 发光二级管组成声光报警单元、独立式键盘输入模块 5 部分电路组成。另外为了不浪费单片机剩余资源,同时显示出采集器采集温度实时性,在此特增加了 ds1302 实时时钟模块与用于上位机电脑通信的max232 电平转换驱动模块。综上述实际总体方案电路关系框图如图 2-1 所示:图 2-1 总体方案电路关系框图2.2 单片机最小系统设计单片机作为主控制器,主要是处理各个部分重要的数并据协调各个模块正常工作的关键部件。at89s51 单片机具有 4 个 8 为 i/o 口;本设计中主要是用了 p0 口显示
24、模块的数据接口;p2 口的 p2.5、p2.6、p2.7 位作为液晶屏的使能接口;p1 口的 p1.0、 5p1.1、 p1.2 位分别接实时钟 ds1302 的复位、时钟、数据引脚; p1 口 p1.3 位作为集成数字温度传感器 ds18b20 的数据接口,用来对 ds18b20 进行读写操作;在此特别说明虽然 p0 内部没有上拉电阻,但是在本设计中只是做为液晶显示屏的数据总线或地址总线;可以省去上拉电阻不接。at89s51 单片机接上相应的电源和时钟,组成单片最小系统系统如图 2-2 所示。图 2-2 单片最小系统23 温度电路设计ds18b20 采用一线传输协议,可以使用外部电源工作方式
25、也可以采用寄生电源工作方式,本设计中采用外部电源工作模式,具体电路如图 2-3:图 2-3 外部电源工作模式24 显示电路设计采用 led128*64 液晶显示,其中 rs 接 p.、接.、接 p2.7 ;d0d7 接 p0p7 具体电路如图 2-4:6图 2-4 led128*64 液晶显示2.5 声光报警电路本电路由发光二极管和蜂鸣器构成如图 2-5 图 2-5 声光报警电路2.6 实时时钟模块本模块由 ds1302 时钟芯片加晶振组成具体电路如图 2-6 所示7图 2-6 实时时钟电路2.7 串行通信口与 rs232 电平转换接口电路本电路的核心器件是美信公司生产集成 ic,配合一些电容
26、构成,如图 2-7 所示图 2-7 串行通信口与 rs232 电平转换接口电路2.8 键盘电路如图 2-8 所示是电路的功能按键电路。8 图 2-8 键盘电路2.9 红外线接收电路如图 2-9 所示是电路的红外线接收电路。图 2-9 红外线接收电路3 软件设计说明本系统的执行方法是循环查询加中断执行来显示和控制时间和温度的。键盘扫描程序是用循环查询的办法,与上位机通信采用中断的方法;这样可以进一步节省单片机的 cpu 资源,也可以保证实时响应外部输入。93.1 总模块的流程图 图 3-1 总模块的流程图、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、18b20、 、1302、 、
27、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 enter、 、 、 、 、 、 、 、 、 、 、 、103.2 部分主要模块的流程图 读取温度 ds18b20 模块的流程 图 9 键盘扫描处理流程 图 3-2 部分主要模块的流程图113.3 温度转换核心及其算法3.3.1 ds18b20 的内部结构ds18b20 内部功能模块如图 2-3 所示,主要由 4 部分组成:64 位光刻r0m(图 3)、温度传感器、非易失性的温度报警触发器 th 和
28、 tl、配置寄存器。r0m 中的 64 位序列号是出厂前被光刻好的,他可以看作是该 dsisb20 的地址序列码,每个 dsi8b20 的 64 位序列号均不相同。高低温报警触发器 th 和 tl,配置寄存器均由一个字节的 e2prom 组成,使用一个存储器功能命令可对 th,tl 或配置寄存器写入。配置寄存器中 r1,r0 决定温度转换的精度位数:r1r000,9 位精度,最大转换时间为 93.75 ms;r1r0 = 01,10 位精度,最大转换时间为 187.5 ms;r1r0 = 10,11 位精度,最大转换时间为 375 ms;r1r0 =11,12 位精度,最大转换时间为 750
29、ms;未编程时默认为 12 位精度。本系统采用的也是 12 位的精度。3.3.2 ds18b20 的内存结构dsi8b20 温度传感器的内部存储器包括一个高速暂存 ram (便笺式的内部存储器)和一个非易失性的可电擦除的 eeprom,后者存放高温和低温触发器 th,tl 和结构寄存器。便笺存储器包含了 9 个连续字节(08),前两个字节是测得的温度信息,字节 0 的内容是温度的低 8 位,字节 1 是温度的高 8 位,字节 2 是 th(温度上限报警),字节 3 是 tl(温度下限报警),字节 4 是配置寄存器,用于确定输出分辨率 9 到 12 位。第 5、6、7 个字节是预留寄存器,用于内
30、部计算。字节 8 是冗余检验字节,校验前面所有 8 个字节的 crc 码,可用来保证通信正确。3.3.3 ds18b20 的测温功能当 dsi8b20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16 位带符号扩展的二进制补码形式存储在高速暂存存储器的 0,1 字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以 0062 5lsb形式表示。温度值格式,其中“s”为标志位,对应的温度计算:当符号位 s=0 时,直接将二进制位转换为十进制;当 s=1 时,先将补码变换为原码,再计算十进制值。dsi8b20 完成温度转换后,就把测得的温度值与 th 做比较,若
31、tth 或 t rom 操作命令 - 存储器操作命令- 处理数据(1) 初始化 单总线上的所有处理均从初始化开始 12(2) rom 操作品令 总线主机检测到 dsl820 的存在便可以发出 rom 操作命令之一这些命令如 指令 代码 read rom(读 rom) 33h match rom(匹配 rom) 55h skip rom(跳过 rom cch search rom(搜索 rom) f0h alarm search(告警搜索) ech (3) 存储器操作命令 指令 代码 write scratchpad(写暂存存储器) 4eh read scratchpad(读暂存存储器) beh
32、 copy scratchpad(复制暂存存储器) 48h convert temperature(温度变换) 44h recall eprom(重新调出) b8h read power supply(读电源) b4h3.3.4 温度转换算法及分析由于 ds18b20 转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(ms byte)高 5 位是用来保存温度的正负(标志为 s 的 bit11bit15),高字节(ms byte)低 3 位和低字节来保存温度值(bit0 bit10)。其中低字节(ls byte)的低 4 位来保存温度的小数位(bit0 bit 3)。由于本程序采用
33、的是0.0625 的精度,小数部分的值,可以用后四位代表的实际数值乘以 0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了 0.1 度。算法核心:首先程序判断温度是否是零下,如果是,则 ds18b20 保存的是温度的补码值,需要对其低 8 位(ls byte)取反加一变成原码。处理过后把 ds18b20 的温度 copy 到单片机的 ram 中,里面已经是温度值的hex 码了,然后转换 hex 码到 bcd 码,分别把小数位,个位,十位,百位的 bcd码存入 ram 中。由于百位没有用,默认情况是置为 0a,在显示屏上没有任何显
34、示。温度算法核心代码/*ds18b20sbit dq =p17; /定义通信端口/延时函数void delay(unsigned int i)13while(i-);/初始化函数init_ds18b20(void) unsigned char x=0; dq = 1; /dq 复位 delay(8); /稍做延时 dq = 0; /单片机将 dq 拉低 delay(80); /精确延时 大于 480us dq = 1; /拉高总线 delay(14); x=dq; /稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败 delay(20);/读一个字节readonechar(void)
35、unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) dq = 0; / 给脉冲信号 dat=1; dq = 1; / 给脉冲信号 if(dq) dat|=0 x80; delay(4); return(dat);/写一个字节writeonechar(unsigned char dat)14 unsigned char i=0; for (i=8; i0; i-) dq = 0; dq = dat&0 x01; delay(5); dq = 1; dat=1; /delay(4);/读取温度readtemperature(voi
36、d)unsigned char a=0;unsigned char b=0;unsigned int t=0;init_ds18b20();writeonechar(0 xcc); / 跳过读序号列号的操作writeonechar(0 x44); / 启动温度转换init_ds18b20();writeonechar(0 xcc); /跳过读序号列号的操作writeonechar(0 xbe); /读取温度寄存器等(共可读 9 个寄存器) 前两个就是温度a=readonechar();b=readonechar();t=b;t=8;t=t|a;t=t*0.625;/有效位到小数点后 1 位re
37、turn(t);/ds18b20 结束154. 系统调试及结果分析为了提高调试的效率和成功率,我采用先分别调试各单元模块,再进行整机调试的方法来调试。4.1 led128*64 的测试方法和结果把编写的程序通过单片机仿真软件进行测试,如果在测试过程中,能够通过液晶显示屏正常显示读取时间的信息,那么说明子程序编写正确;如果测试中,显示的结果与我们要求的不一致,那说明程序在编写中出现错误,就应该修改子程序,直到能正确读取时间信息为止。 4.2 ds18b20 的测试方法和结果利用仿真软件不断修改 ds18b20 仿真元件的温度实际值,结果显示的与之相同,说明读温度显示程序编写正确。4.3 键盘程序
38、的测试方法和结果把编写的键盘程序通过单片机仿真软件进行测试,在测试过程中,能够实现时间的调整(自加、自减)功能,那么说明该子程序编写正确;如果测试的结果与要求的不一致,那么就应该修改该子程序,直到正确为止,在修改过程中,不必去改动其它部分程序。4.4 rs232 模块的测试方法和结果将 rs232 的发送与接收端相互短接起来;利用串口调试助手发送一串字符,如果马上在调试助手的接收窗口中接收到刚才发送的字符,说明通信正确可以进行通信。4.5 产品最终调试在分别调试成功每一个部分的程序后,我们就可以把整个系统的程序进行调试,还是用单片机仿真软件调试,在调试中,该程序能按照系统预定的步骤运行,那么说
39、明程序编写正确;如果在调试中出现了我们不需要的结果,那么说明程序出现错误,这时就应该检查主程序在调有子程序及子程序与子程序之间有没有出现错误,其次就检查仿真图的硬件连接正确与否。最后将整个项目的程序写入单片机中进行产品环境测试。将通信线与电电脑的串行通信口连接起来,在电脑运行上位机程序,将时间设置 为 10 年 1 月 1 日 12 时 30 分 0 秒;设置成功后单片机这边立即显示刚才所设置的正确三时间。进一步调试闹铃的功能,通过上位机、遥控或按键设置,结果都令人非常满意。16最后调试温度传感器测量温度的准确性能;要电热管加热一杯水,将数字温度传感器放入水中测量;同插入普通温度计并读出温度值
40、作为温度测量参照。测量数据如下表 1-1 所示:表 1-1 温度测量数据时间 煤油温度计显示 温度(度) 红外遥控电子钟显示温度(度) 误差第 5s17.5 17.4 -0.1第 10s 24.0 23.8-0.2第 20s 38.5 38.6 +0.1第 40s 53.8 53.8 0第 1 分 68.0 68.1 +0.1第 3 分 97.3 97.2 -0.1第 5 分 97.3 97.2 -0.1第 8 分97.497.3 -0.1第 10 分 97.3 97.2-0.15 结论本系统以 at89s51 为核心控制部件,利用软件编程从 ds18b20 读取温度信息、从 ds1302 中
41、读取时间信息,然后通过 led128*64 液晶显示屏上从读取的时间信息、温度信息通过发光二极管的亮灭来模拟相应的外部控制过程、通过键盘操作来校对系统运行中所产生的误差及在实际运用中调整时间的设定,经实验测试证明用本系统用at89s51 单片机能完成温度的采集及一般控制过程。为了减小电磁干扰和恶劣环境下该系统能正常工作,对硬件电路做到简单能用,充分发挥软件的优点,避免因电路和软件而引起必要的误差。通过两个星期的实训,我的综合能力有了很大的提高,我制作电路板的经验将更为熟练,编程水平更上了一个新的台阶,特别是深入了解了单片机原理的应用,感觉它的功能非常的强大。本系统虽然能实现题目的要求;但是还有
42、待以进一步完善,增加更强大功能,但是由于时间和本身知识水平的有限。其它的附加工能将会在未来的时间内一并完成。17致 谢在两个星期的实训中,经过查找资料、收集资料、电路的设计、作品的调试及写论文,论文的完成也意味着我们的作品已完成。在设计时间的时、分、秒及温度采集设计过程中我们得到了指导老师的悉心指导,他渊博的知识以及对我的严格要求和他严谨的作风都给我留下了很深的印象,这将使我终身受益,在此,对指导老师表示衷心的感谢!在此次设计中,感谢百度网站为我提供的大量网上资料。学校的实验室也为我们的设计提供了大部分的电子元件及耗材,在此也向我院实验室表示感谢!另外还要感谢我的同学所给予的帮助。18参考文献
43、1 刘勇.数字电路 .电子工业出版社,2005;2 王法能.单片机原理及应用.科学出版社,2006;3 赛组委会.全国大学生电子设计竞赛获奖作品选编.北京理工大学出版社;20074 赵伟军.protel99 se 教程.人民邮电出版社,2005.5 单片机典型模块设计实例导航.人民邮电出版社,2006.6 李光飞.楼苗然主编.51 系列单片机.北京:北京航空航天大学出版社,200719附 录 1 相关程序代码 /*带字库液晶显示模块 lcm12864zk*/#include #include /#include ds1302.h#include 18b20.h/*/#define uchar
44、unsigned char#define uint unsigned int#define ulong unsigned longunsigned char uckey2r;/*红外线接收*/bit mode; bit code_end_flag ;/校验接收成功标志bit shiwei=1;sbit speak=p00;uchar xuanzhe;uint code_t; /遥控临时代码uint code_tt; /遥控成功码uint code_data1; /校验临时变量uint code_data2; /校验临时变量uchar keyzhi=16;/*按键管脚定义*/sbit key1=
45、 p33;sbit key2= p34;sbit key3= p35;sbit bell=p00;/蜂鸣器/*128*64 管脚定义*/20sbit e=p05; /对应第 8 脚sbit rw=p04; /对应第 7 脚sbit rs=p03; /对应第 6 脚sbit lcd_rst=p06;sbit psb=p07;uchar busy,hang,lie; /显示函数专用/*定义函数原型*/void write_command(uchar cmd,uchar bb); /液晶函数void display( uchar *ptr,uchar ddram); /*显字符串函数*/void k
46、ey(void);unsigned char button(unsigned char n,unsigned char x,unsigned char y) ; /时钟调整子程序void delaynms(int j);/nms/定义字符串数组 */*/unsigned char uccurtime12;unsigned char uccurtimecop12;unsigned char str169=0,0;unsigned char naolin2=0,0;idata char str1=桂林电子科技大学;idata char str2=日期 年 月 日;idata char str3=时
47、间 时 分 秒;idata char str4=当前温度: . ;code char str5= !时间设置! ;code char str6= !闹铃设置! ;code char empty= ;idata char str7=闹铃时间_时_分;/*延时程序*/void delayus(ulong t)/nusint i,j;for (i=0;it;i+)for (j=0;jt;j+);21void delaynms(int j)/nmsuchar i; while (j-) for(i=0;i0; i-)t_io = acc0; /*相当于汇编中的 rrc */t_clk = 1;t_cl
48、k = 0;acc = acc 1; unsigned char uc_rtoutputbyte(void) unsigned char i;for(i=8; i0; i-)acc = acc 1; /*相当于汇编中的 rrc */acc7 = t_io;22t_clk = 1;t_clk = 0; return(acc); void v_w1302(unsigned char uckey2r, unsigned char ucda)t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(uckey2r); /* 地址,命令 */v_rtinputbyte(uc
49、da); /* 写 1byte 数据*/t_clk = 1;t_rst =0; unsigned char uc_r1302(unsigned char uckey2r)unsigned char ucda;t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(uckey2r); /* 地址,命令 */ucda = uc_rtoutputbyte(); /* 读 1byte 数据 */t_clk = 1;t_rst =0;return(ucda);void v_setd1302(unsigned char *psecda) unsigned char i;un
50、signed char ucaddr = 0 x80; v_w1302(0 x8e,0 x00); /* 控制命令,wp=0,写操作?*/for(i =7;i0;i-) v_w1302(ucaddr,*psecda); /* 秒 分 时 日 月 星期 年 */23psecda+;ucaddr +=2;v_w1302(0 x8e,0 x80); /* 控制命令,wp=1,写保护?*/void initial_ds1302(void)unsigned char second=uc_r1302(0 x81);if(second&0 x80)v_w1302(0 x8e,0 x00); v_w1
51、302(0 x80,0);v_w1302(0 x8e,0 x80);/*ds1302end*/*判忙函数*/void busyloop() p2=0 x0ff;/rs=0;rw=1;do e=1;busy=p2;/e=0;while(busy0 x7f);/*写控制字函数*/void write_command(uchar cmd,uchar bb) if(bb)busyloop();rs=0;24rw=0;e=1;p2=cmd;/delayus(1);e=0;/*写数据函数*/void write_data(uchar cmd) busyloop();rs=1;rw=0;e=1;p2=cmd
52、;/delayus(1);e=0;/*液晶初始化*/void chushihua()delayus(38);write_command(0 x30,0);delayus(1);write_command(0 x30,0);delayus(1);write_command(0 x0c,1);delayus(1); write_command(0 x01,1);delayus(20);write_command(0 x06,1);/*清 屏*/void clear() rs=0;25rw=0;e=1;p2=0 x01;/delayus(1);e=0;/*显示函数专用*/void display(u
53、char *ptr,uchar ddram) uchar l,i1,x; l=0; if(ddram0 x88) hang=0; /定位行地址:第一行 else if(ddram0 x90) hang=2; /定位行地址:第三行 else if(ddram0 x07) lie=lie-0 x08; x=lie*2; write_command(ddram,0); / 定位显示起始地址 while (ptrl)!=0) l+; for (i1=0;i13) write_command(0 x80,0); hang=0; /*显示函数结束*/*判断代码子程序* /unsigned char d_code(unsigned int t) if(1500t&t2600)return 1;else/ if(2800t&t=16) dd_code=d_code(temp); if(dd_code=0|dd_code=1) code_t=(code_t1)+dd_code; if(cnt=32) cnt=0; code_end_flag=1; mode=0; ex0=0; tr0=0; if(mode=0) if(8900temp&temp=8; if(code_dat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030葡萄酒酿造技术酒体风味市场需求品牌运营发展规划
- 2025-2030葡萄牙通信设备产业竞争格局市场分析技术创新动态分析优化评估报告
- 常州2025年江苏常州市招聘社会化工会工作者35人笔试历年参考题库附带答案详解
- 岳阳2025年湖南岳阳市平江县事业单位选调2人笔试历年参考题库附带答案详解
- 山东2025年山东第一医科大学第一附属医院(山东省千佛山医院)招聘2人笔试历年参考题库附带答案详解
- 山东2025年山东商业职业技术学院招聘55人笔试历年参考题库附带答案详解
- 宜昌2025年湖北宜昌市第三人民医院急紧缺专业技术人员招聘笔试历年参考题库附带答案详解
- 安徽2025年国网安徽省电力有限公司高校毕业生招聘(第一批)笔试历年参考题库附带答案详解
- 宁波浙江宁波市文联文艺家协会编制外工作人员招聘笔试历年参考题库附带答案详解
- 天津2025年天津市滨海新区塘沽中心血站招聘2人笔试历年参考题库附带答案详解
- 医疗机构信息安全建设与风险评估方案
- 化工设备培训课件教学
- 供热运行与安全知识课件
- 2026年及未来5年市场数据中国3D打印材料行业发展前景预测及投资战略数据分析研究报告
- 2026年长沙卫生职业学院单招职业技能考试题库及答案详解1套
- 煤矿三违行为界定标准及处罚细则
- 服装厂安全生产责任制度制定
- 智研咨询发布:中国血友病药物行业市场现状及投资前景分析报告
- 造价管理限额设计
- 早产护理常规
- SMT工艺流程介绍
评论
0/150
提交评论