红外抄表电度表——抄表器.doc_第1页
红外抄表电度表——抄表器.doc_第2页
红外抄表电度表——抄表器.doc_第3页
红外抄表电度表——抄表器.doc_第4页
红外抄表电度表——抄表器.doc_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

太原理工大学现代科技 学院 毕业设计 设计题目: 红外抄表电度表抄表器 学学 生:生: 专专 业:测控技术与仪器业:测控技术与仪器 班班 级:级: 学学 号:号: 指导教师:指导教师: 设计日期:设计日期: 太原理工大学现代科技学院 毕业设计(论文)任务书毕业设计(论文)任务书 毕业设计(论文)题目:红外抄表电度表抄表器 原始资料: 近年来,随着信息技术的飞速发展,无线技术正在向各个领域渗透, 特别是红外线无线技术,在工业生产、家用电器、安全保卫以及人们的日 常生活中得到了广泛的应用。 本文详细描述了该红外抄表系统的设计方案、硬件电路设计和软件设计, 并利用 keil 仿真软件对所开发的 c 语言程序进行了验证。在本文的第五 章讨论了系统的发展趋势和改进,为系统的进一步开发奠定了基础。本系 统关键部分主要是红外通信原理。系统在分析可行性、可靠性的基础上, 参照工程设计方法,确定了模块化设计的思路。本系统主要由控制模块、 发射模块、接收模块、显示模块 4 个模块组成。38khz 频率作为数据通信 的载波,发射和接收模块对数字信号进行调制和解调,通过 lcd 液晶显示 屏将收到的数据显示出来。该系统还具备掉电保护和数据存储功能。 利用一个红外抄表器来完成琐碎的抄表工作。从而从根本上杜绝“肉 眼观察”所带来的随机误差,并大大提高了抄表的效率。 毕业设计(论文)主要内容: 本文主要介绍以at89s51单片机为核心控制的红外抄表系统设计。该系统主要由控 制模块、发射模块、接收模块、显示模块4个模块组成。系统的数据由发射板的3个按 键按一定的计算规则所得。发射管发射的38khz频率载波由单片机编程控制产生。发射 模块是对发送的数字信号进行适当的调制编码,后经发射管的转换电路转变为红外光 脉冲并发射到空中;接收模块对接收到的红外光脉冲进行光电转换、解调译码后恢复 原数字信号。收到的数据通过lcd1602液晶显示屏显示出来。 主要参考文献: 1 胡汉才,单片机原理及其接口技术m,北京,清华大学出版社,1996,4862 2 沈德金,mcs-51 系列单片机接口电路与应用程序实例m,北京,北京航空航天大 学出版社,1990,2184 3 祁伟,杨婷,单片机 c51 程序设计教程与实验m,北京航空航天出版社,2006 4 凌志浩,仪表原理与设计技术m 5 许晓平,孙晓彦,程传胜.pcb 设计标准教程m,北京,北京邮电大学出版社, 2008 6 胡伟,季晓衡,单片机 c 程序设计与应用实例m,人民邮电出版社,2003 7 程道喜,传感器的信号处理及接口m,北京,科学出版社,1989 8 杨将新,李华军,刘东骏,单片机程序设计及应用从基础到实践m,北京,电子工 业出版社, 2001 9 胡汉才,单片机原理及其接口技术m,北京,清华大学出版社,1995, (6), 112126 10 苏长赞,红外线与超声波遥控m,北京,人民邮电出版社,1997 11 张玉香,新型遥控接收模块 hs0038j,无线电,1998 学生须提交的文件: 1、 毕业设计任务书 2、 毕业设计中期检查表 3、 毕业论文设计成绩评定表 4、 论文 进度安排: 第一周到第三周:查阅资料,文献综述。 第四周:提交开题报告。 第五周到第六周:总体方案设计。 第七周到第十一周:数据采集。 第十二周到第十四周:完善系统设计,撰写毕业论文。 第十五周:修改完善毕业论文,准备毕业答辩。 专业班级 测控技术与仪器 学生 设计(论文)工作起止日期 指导教师签字 日期 专业(系)主任签字 日期 0 红外抄表电度表抄表器 摘 要 近年来,随着信息技术的飞速发展,无线技术正在向各个领域渗透, 特别是红外线无线技术,在工业生产、家用电器、安全保卫以及人们的日 常生活中得到了广泛的应用。 本文详细描述了该红外抄表系统的设计方案、硬件电路设计和软件设计, 并利用 keil 仿真软件对所开发的 c 语言程序进行了验证。在本文的第五 章讨论了系统的发展趋势和改进,为系统的进一步开发奠定了基础。本系 统关键部分主要是红外通信原理。系统在分析可行性、可靠性的基础上, 参照工程设计方法,确定了模块化设计的思路。本系统主要由控制模块、 发射模块、接收模块、显示模块 4 个模块组成。38khz 频率作为数据通信 的载波,发射和接收模块对数字信号进行调制和解调,通过 lcd 液晶显示 屏将收到的数据显示出来。该系统还具备掉电保护和数据存储功能。 利用一个红外抄表器来完成琐碎的抄表工作。从而从根本上杜绝“肉 眼观察”所带来的随机误差,并大大提高了抄表的效率。 关键词:通信,红外抄表,单片机,调制,解调 1 infrared meter reading metermeter readers abstract in recent years, with the rapid development of information technology, wireless technology is to permeate all areas, especially in the infrared wireless technology, in industrial production, household appliances, security, and has been widely used in peoples daily life. this paper describes in detail the infrared meter reading system design scheme, hardware circuit design and software design, and use the keil simulation software developed by c language program are verified. in the fifth chapter of this article discusses the development trend of the system and improved, and laid a solid foundation for the further the development of the system. the system key part mainly is the principle of infrared communication. system based on the analysis of the feasibility, reliability, and reference to engineering design method of determine the idea of modular design. this system mainly consists of control module, the 2 transmitting module and receiving module, display module of four modules. 38 khz frequency as carrier of data communication, transmitting and receiving modules of digital signal modulation and demodulation, and displayed through the lcd screen will receive the data. the system also have power lost protection and data storage function. using an infrared meter reading device to do trivial meter reading. to fundamentally eliminate the “naked eye“ brought about by the random error, and greatly improve the efficiency of meter reading. key words: communication, infrared meter reading, single chip microcomputer, modulation, demodulation 3 目录目录 1 绪论6 1.1 课题的背景和意义 6 1.2 课题总体设计方案 6 2 系统硬件设计 8 2.1 控制模块 .8 2.2 发射模块 .9 2.3 接收模块 .11 2.4 显示模块 .13 3 系统软件设计17 3.1 38khz 频率的产生及发射程序设计18 3.2 数据计算程序 .20 3.3 显示模块程序设计 .21 3.3.1 数码管显示21 3.3.2 lcd 液晶显示程序22 3.4 接收模块程序设计 .26 4 电路板的制作 28 4.1 原理图的绘制 .28 4.2 pcb 图的生成.28 4.3 电路板到印制和焊接 .29 5 系统调试30 5.1 硬件调试 .30 5.2 软件调试 .30 总结语32 4 参考文献33 致谢34 附录一:发射原理图36 附录二:接收原理图37 附录三:源程序38 5 1 1 绪论绪论 1.1 课题的背景和意义 众所周知,电表是一种非常重要的计量仪表,它的计量准确与否直接关系到千家 万户的利益。为此,国家制订严格的标准,各电表生产厂家在严格遵守国家标准基础 上,实行更严格的内控标准。事实上,每一台出厂的合格表,都经过了严格的校验及 误差处理,这些误差处理通常包括硬件和软件的处理。因而,用户最终使用的电表其 自身的计量精度是达到国家标准的。然而,在电表的实际应用过程中,由于人为的操 作给其计量带来种种的随机误差,尤为突出的便是抄表。目前在我国,抄表工作大多 数还是采用“肉眼观察”。即抄表人员挨家挨户上门读取电能表计度器示值。可想而 知,这种抄表方法效率是多么低下、花费人力大、抄表不准确,而它却仍在全国占据 主流位置。所以“人眼”抄表带来了很多不便。 目前,我国城乡居民用户抄电表、水表和煤气表的方式基本上都是人工抄表,即 由抄表人员每月逐户查抄水表、电表、煤气表。这种落后的方式,消耗大量的人力、 物力,而且采集数据的时间跨度大、采集数据的准确度低。因此,国家有关部门规定 以后将逐步以计算机为基础的自动抄表系统取代传统的人工抄表。利用一个红外抄表 器来完成琐碎的抄表工作。从而从根本上杜绝“肉眼观察”所带来的随机误差,并大 大提高了抄表的效率。 本设计是一个基于单片机的红外抄表系统,利用红外线这种非电信号作为传输介质,来 传送数据信息,可以在那些不适合或不方便架设电缆线及电磁干扰较强的工作环境下, 来实现电度表的抄表,并通过lcd液晶显示屏显示读数,完成电度表用电量的抄录工作。 6 1.2 课题总体设计方案 本文主要介绍以at89s51单片机为核心控制的红外抄表系统设计。该系统主要由控 制模块、发射模块、接收模块、显示模块4个模块组成。系统的数据由发射板的3个按 键按一定的计算规则所得。发射管发射的38khz频率载波由单片机编程控制产生。发射 模块是对发送的数字信号进行适当的调制编码,后经发射管的转换电路转变为红外光 脉冲并发射到空中;接收模块对接收到的红外光脉冲进行光电转换、解调译码后恢复 原数字信号。收到的数据通过lcd1602液晶显示屏显示出来。 图1-1 电源、电池供电电路设计图 本系统具有掉电保护功能,以便在停电时保护所储存的数据信息。如图1-1所示为 电源、电池供电电路设计图。当有外接电源时vcc电压高于电池电压,二级管处于截止 状态,电池不给单片机供电;当vcc电压低于电池电压时,二极管处于导通状态,电池 给单片机供电,以保证数据不丢失。还具有数据存储功能,可以按整体键查看之前所 收到的数据。如图1-2所示为系统工作的整体框图。 图 1-2 系统框图 单单 片片 机机 发射模块发送接收模块 单单 片片 机机 显示模块 数据设置 显示模块 7 2 2 系统硬件设计系统硬件设计 硬件电路主要由两个单片机控制模块、发射模块、接收模块、显示模块以及一些 外围驱动电路组成。 2.1 控制模块 图 2-1 at89s51 实体图 at89s51 是美国 atmel 公司生产的低功耗、高性能 cmos8 位单片机,片内含 4k 的 可编程的 flash 只读程序存储器,器件采用 atmel 公司的高密度、非易失性存储技术 生产,兼容标准 8051 指令系统及引脚。它集 flash 程序存储器既可在线编程(isp) 也可用传统方法进行编程及通用 8 位微处理器于单片机芯片中,atmel 公司的功能强 大,低价位。at89s51 单片机可提供许多高性价比的应用场合,可灵活应用于各种控 制领域。89s51 单片机实物图如图 2-1 所示。 at89s51 提供以下标准功能:4k 字节闪速存储器,128 字节内部 ram,32 个 i/o 口,看门狗(wdt) ,两个数据指针,两个 16 位定时/计数器,一个 5 向量两级中断结 构,一个全双工串行通信口,片内振荡器及时钟电路。同时,at89s51 可降至 0hz 的 静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 cpu 的工作,但 允许 ram,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 ram 中到内 容,但振荡器停止工作并禁止其它所有工作部件直到下一个硬件复位。 at89s51 在平时的应用时比较多,同样对它的最基本电路驱动电路也是比较熟悉 的。首先必须有 5v 的驱动直流电源,现在有现有的 5v 直流电源模块,就可以直接应 用 5v 直流电源模块做为驱动单片机 at89s51 的电源。这就是在 vcc 管脚处接上 5v 电 源。gnd 接地,同时 ea 管脚现在不用下载程序也接上 5v 电源。其次要给 at89s51 一 个时钟电路,为了方便计算时钟频率设计了在引脚 xtat1 和 xtal2 外接 12m 的晶振构 8 成内部振荡方式。再加上 2 个 30pf 的电容就组成了时钟电路。最后要有复位电路,单 片机的复位是由外部的复位电路来实现的。复位引脚 rst 通过一个斯密特触发器与复 位电路相连,斯密特触发器用来抑制噪声,斯密特触发器的输出电平由复位电路采样 一次,然后才能得到内部复位操作所需要的信号。复位电路用 10k 电阻,加上一个 10uf 的电解电容和一个复位按钮来组成复位电路。由于 at89s51 的存储器以足够,这 就不需要我再设计外部扩展存储器的电路了。具体设计的 at89s51 的最基本外围电路 就设计完成了,如图 2-2 所示为最小系统原理图 。 图 2-2 最小系统原理图 2.22.2 发射模块 红外发射模块是采用红外发光二极管来发送经过调制的红外光波。红外发射器发 出的红外光转换成相应的电信号,再送前置放大器放大。红外发射电路的信号一般采 用两级调制。在红外数据传输的信号调制方式上,采用脉冲调制的二进制不归零码。这 种调制方式比较简单,编码、解码都比较方便,有利于电路简化。红外线发射管在 led 9 封装行业中主要有三个常用的波段,如下850nm、875nm、940nm。根据波长的特 性运用的产品也有很大的差异, 850nm 波长的主要用于红外线监控设备、 875nm 主要用于医疗设备、 940nm 波段的主要用于红外线控制设备。 本系统采用的是红 外的 940nm 波段。如图 2-3 所示为红外发射二极管实物图。 图 2-3 发射二极管实物图 在红外发射模块设计中选择红外发射二极管时,要注意以下几个问题:第一,由 于红外发射二极管的pn结电容的存在,影响了它的工作频率,选型时应选择响应时在 s的红外发射二极管,以适应数据通信的要求;第二,由于现在大多数红 外发射二极管为球面透镜封装,红外发射二极管的发射指向角较小,为改善发射光线 的指向特性,使之在较宽的偏移臣离内正常工作,应采用多管并发的方法但对本系 统综合考虑还是采用了一个红外发射管。 图 2-4 发射管连接图 本系统的红外发射模块连接方式如图2-4 所示,接单片机的 p1.0 引脚。两 个电阻是限流的作用, r121 是防止电流过大烧坏三极管, r122 是防止电流过大 烧坏红外发射管 d121,三极管起到放大电流的主要作用,使得红外发射的更远, 当单片机的 p1.0 口赋值 1 时,三极管工作,红外发射管工作发射红外线,当单片 机的 p1.0 赋值 0 的时候三极管不工作,红外发射管不工作。如图2-5 所示为发 射管内部工作流程图。 10 图 2-5 发射管内部工作流程图 2.3 接收模块 一体化的红外接收模块将数据信号的接收、放大、检波、整形集于一体,并且输 出可以让单片机识别的信号,这样大大简化了接收电路的复杂程度和电路的设计工作, 方便使用。本系统采用红外一体化的接收头(hs0038) 。如图2-6所示为接收模块实物 图。hs0038黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽、功耗低、 灵敏度高。在用小功率发射管发射信号情况下,其接收距离可达35m。它能与 ttl、coms电路兼容。hs0038为直立侧面收光型。它接收红外信号频率为38khz,周期约 为26s,同时能对信号进行放大、检波、整形,得到ttl 电平的编码信号。三个管脚 分别是地、5 v 电源、解调信号输出端。 图 2-6 接收模块实物图 图 2-7 接收模块测试图 表 2-1 红外接收模块的主要参数 工作电压4.8-5.3v 工作电流1.7-2.7ma 接收频率38khz 峰值波长940nm 静态输出高电平 11 输出低电平0.4v 输出高电平接近工作电压 红外一体化接收头的好坏测试可以利用图2-7所示的电路进行,在hs0038的电源端 2与信号输出端3之间接上一只二极管及一只发光二极管后,再配上规定的工作电源 (为5 v),当手拿遥控器对着接收头按任意键时,发光二极管会闪烁,说明红外接 收头和遥控器工作都正常;如果发光二极管不闪烁发光,说明红外接收头和遥控器至 少有一个损坏。只要确保遥控器工作正常,很容易判断红外接收头的优劣。 在使用红外接收模块时应保证hs0038接收模块接地良好以防止干扰,由于此模块 抗连续脉动光干扰的特性,在进行数据通讯时应发送一个字节后停顿大小为一个字节 所占用的时宽,以满足此模块的脉动占空比要求。如果发送一个字节后不作停顿,接 收器将会认为是光噪声,将造成通讯失败。如图2-8所示为接收模块的内部结构图。 图2-8 接收模块内部结构图 本系统在使用接收模块时在电源端和地端之间加了个电容,主要是因为电源波形 影响信号的输入,而加个电容有滤波的效果和提高灵敏度。如图2-9所示为接收模块连 接原理图。 图 2-9 接收管原理连接图 12 2.4 显示模块 液晶显示模块具有体积小、功耗低、显示内容丰富等特点,液晶显示的原理是利 用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样就可以显 示出图形。 本系统发射板用到的显示模块为 4 位共阳 led 数码管,采用的是动态扫描方式显 示所需要发送的数据。用数码管显示信息时,由于每个数码管至少需要 8 个 i/o 口, 如果需要多个数码管,则需要太多 i/o 口,而单片机的 i/o 口是有限的。所以在实际 应用中,一般采用动态显示的方式来解决此问题。 下面对数码管进行简单的介绍,数码管是一种半导体发光器件,其基本单元是发 光二极管,数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多 一个发光二极管单元(多一个小数点显示) ;按能显示多少个“8”可分为 1 位、2 位、 4 位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共 阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(com)的数码管。共阳数 码管在应用时应将公共极 com 接到+5v,当某一字段发光二极管的阴极为低电平时,相 应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。 。共阴数码管是指将 所有发光二极管的阴极接到一起形成公共阴极(com)的数码管。共阴数码管在应用时应 将公共极 com 接到地线 gnd 上,当某一字段发光二极管的阳极为高电平时,相应字段 就点亮。当某一字段的阳极为低电平时,相应字段就不亮。 本系统用 lcd1602 液晶显示器来显示收到的数据信息。lcd1602 可以显示 2 行 16 个字符,有 8 位数据总线 d0-d7 和 rs、r/w、e 三个控制端口,工作电压为 5v。lcd1602 液晶模块内部的字符发生存储器(cgrom)已经存储了 160 个不同的点阵 字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名 等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是 01000001b(41h) ,显示时模块把地址 41h 中的点阵字符图形显示出来,我们就能看到 字母“a” 。lcd1602 内部结构由 ddram、cgrom、ir、dr、bf、ac 等大规模集成电路组 成。(1)ddram 为数据显示用的 ram,用以存放要 lcd 显示的数据,只要将标准的 asc码放入 ddram,内部控制线路就会自动将数据传送到显示器上,并显示出 asc 对应的字符。(2)cgrom 为字符产生器 rom,可供使用者存储特殊造型的字符码,cgrom 最多可存放 8 个字符。(3)ir 为指令寄存器,负责存储 mcu 要写个 lcd 的指令码。当 rs 及 r/w 引脚信号为 0 且 e 引脚信号为由 1 变为 0 时,d0d7 引脚上的数据便会存入 到 ir 寄存器中。(4)dr 为数据寄存器,负责存储单片机要写到 cgram 或 ddrom 的数据。 因此,可将 dr 视为一个数据缓冲区。当 rs 及 r/w 引脚信号为 1 且 e 引脚信号为由 1 13 变为 0 时,读取数据。当 rs 引脚信号为 1,r/w 引脚信号为 0 且 e 引脚信号为由 1 变 为 0 时,存入数据。 图 2-10 lcd 液晶显示原理图 如图 2-10 所示为液晶显示原理图,8 位数据总线由单片机的 i/o 口 p2 控制,rs 脚的高低电平控制数据和指令的写入,r/w 脚的高低电平控制数据的读取和写入。如 图 2-11 为模拟接线方式图。lcd 液晶屏的第三引脚接了个滑动变阻,目的是对 lcd 对 比度进行调节,使显示达到合适的效果。当电阻器滑到最靠近电源端时对比度最弱, 当滑到最靠近地端时对比度最高。但对比度过高时会产生“鬼影” ,因此用一个滑动变 阻来调整对比度。表 2-2 为 lcd1602 液晶显示屏的主要技术参数。图 2-12 所示为读操 作时序的控制器接口图。 14 表 2-2 lcd1602 的主要技术参数 显示容量162 个字符 芯片工作电压 4.5-5.5v 工作电流 2.0ma(5.0v) 模块最佳工作电压 5.0v 字符尺寸2.954.35(wh)mm 表 2-3 lcd1602 液晶显示屏接口信号的说明 编号符号引脚说明编号符号引脚说明 1vss 电源地 9d2data i/o 2vdd 电源正极 10d3data i/o 3vl 液晶显示偏压信号 11d4data i/o 4rs 数据/命令选择端 12d5data i/o 5r/w 读/写选择端 13d6data i/o 6e 使能信号 14d7data i/o 7d0data i/o15bla 背光源正极 8d1data i/o16blk 背光源负极 图 2-11 模拟接线图 15 图 2-12 读操作时序的控制器接口图 16 3 3 系统软件设计系统软件设计 程序的编写就要涉及到程序语言的选择,下面先看看汇编语言和 c 语言的特性, 再进行语言的选择。 (1)c 语言: c 语言是国内外广泛使用的计算机语言,是计算机应用人员应掌握的一种程序设 计工具。c 语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高, 可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,c 语言特 别适合编写系统软件。除了这些特点外,c 语言还具有以下优越性:在不需要完全了 解单片机系统具体硬件的情况下,也能够编出符合硬件实际的专业水平的程序;以适 应片上存储器的大小;中断服务程序的现场保护和恢复,中断向量表的填写,是直接 与单片机相关的,都由 c 编译器代办;提供常用的标准函数库,以供用户直接使用; 头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的 系列化产品的开发;有严格的句法检查,错误很少,可容易地在高级语言的水平上迅 速地被排除掉;可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实 用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提 高运行的安全性等等。 (2)汇编语言: 汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机 所有硬件特性并能直接控制硬件的唯一语言,因而在对于程序的空间和时间要求很高 的场合,汇编语言是必不可少的,至于对于很多需要直接控制硬件的应用场合,更是 非用汇编语言不可。除了这些特性,汇编语言还具有下列特性: 占用的内存单元和 cpu 资源少,能直接对硬件进行控制; 程序简短执行速度快; 可直接调用单片机的全部资源,并可有效地利用单片机的专有特性; 能准确地掌握指令的执行时间,适用于实时控制系统。 红外抄表系统的软件程序设计主要由主程序、发射程序、显示程序、接收程序组 成。通过对以上两种语言的分析,由于 c 语言程序有利于实现较复杂的算法,同时该 程序也比较复杂,要控制多个部件模块。为了能简单有条理的编辑程序。两种语言都 17 有其独有的特性,结合自身的情况,对 c 语言比汇编语言要熟悉,并且应用 c 的时间 比汇编长,所以我最终选择了以 c 语言来编写系统的程序。 如图 3-1 所示为红外抄表系统的整体程序流程图,系统开始工作时进行初始化操 作。由按键控制数据是否发送。 图 3-1 系统软件流程图 3.1 38khz 频率的产生及发射程序设计 38khz 频率可以有效防止日光和灯光的干扰,使得通信距离更远。现讨论产生 38khz 频率的两种方案。 方案一:分频电路产生 初始化子程序 数值按键扫描 数码管显示 是 运行接收程序 lcd 显示 后续处理 接收按键扫描 开始 运行发送程序 否 18 图 3-2 分频电路图 如图 3-2 所示 455khz 晶振经 12 分频得到 38khz。由 455khz 的晶振 cry,反相器 74hc04 及电阻、电容构成的振荡器产生 455khz 的方波信号。经脉冲分频器 74ls92,六 分频成为 75.83khz 的脉冲信号。再经过 d 触发器构成的 2 分频/整形电路变成 38khz 的方波信号。本方案的振荡器采用了晶振,因晶振频率十分稳定。rc 振荡器的稳定性 差,往往由于偏差很大而缩短控制距离。方案二:软件生成 38khz 频率 f=38khz t=1/f 计算得 t26.3us 如图 3-5 所示发射管接在单片机的 p1.0 引脚上,所以只要控制单片机 p1.0 引脚 的高、低电平周期为 26.3us。程序如下: for(a=aa;a0;a-) out=1; i=7; while(i0)i-; out=0; 如下程序首先发送 3.028ms38khz 频率,再停止发送 2.012ms。这两个段是为了让 接收模块识别防止其他信号的干扰。接着开始发送数据,khz(40)(发送时间为 1ms) 后判断数据的最后一位是“1”还是“0” 。如果数据是“1”则停止发送 delayms(93), 否则停止发送 delayms(65)(1ms) 。一个数据为发送完毕,num=num1 数据位右移一 位后判断发送。如此循环 8 次数据就发送完毕。发送完毕指令 khz(20),后停止发送。 如图 3-3 所示发射和接收波形图。 19 a=2ms b=1ms c=1.5ms 图 3-3 发射接收波形图 khz(116); delayms(125); for(num1=8;num10;num1-) khz(40); if(num/delay 1.5ms else delayms(65);/delay 1ms num=num1; 如图 3-4 所示为 38khz 的载波频率:低电平 17us、高电平 9us,17+9=26us 比 26.3 快一点点。高、低电平时间不是固定值,只要相加等于 26us 就是发送 38khz 的 频率。 图 3-4 计算得出的载波频率 3.2 数据计算程序 本系统用发射板的三个按键来设置需要发送的数据,三个按键分别是个、十、百 位控制键,数值计算规则如下: 每按一个按键对应位加一。利用软件编程对各位进行相加计算。每位最大只能按 20 到 9,当超过 9,则返回到 0 并且蜂鸣器响一声,如此反复循环计算。如个、十、百位 各按一下,则得数据 111。计算规则十分简单,如下程序为百位控制:key1 为百位控 制键,首先进行按键扫描,当按键引脚为低电平时说明按键没有按下,继续等待;当 引脚为高电平时说明按键已按下,则蜂鸣器响一声,百位加一。百位计算部分程序如 下: if(key1=0) delay_ms(10); if(key1=0) while(!key1); bai+; if(bai=10) bai=0; beer=1; delay_ms(100); beer=0; 上述为百位计算程序,同理十位和个位也是一样。扫描一遍按键后进行总和计算 程序,并由数码管显示。总和计算公式为:zong=bai*100+shi*10+ge。 3.3 显示模块程序设计 3.3.1 数码管显示 数码管动态显示程序中,各个位的延时时间长短非常重要,如果延时时间长,则 会出现闪烁现象;如果延时时间太短,则会出现显示暗且有重影。所有数码管的段选 全部连接在一起,动态显示是多个数码管,交替显示,利用人的视觉暂留作用使人看 到多个数码管同时显示。在编程时,需要输出段选和位选信号,位选信号选中其中一 个数码管,然后输出段码,使该数码管显示所需要的内容,延时一段时间后,再选中 另一个数码管,再输出对应的段码,高速交替。 例如需要显示数字“12”时,先输出位选信号选中第一个数码管,输出 1 的段码 延时一段时间后选中第二个数码管,输出 2 的段码。把上面的流程以一定的速度循环 执行就可以显示出“12” ,由于交替的速度非常快,人眼看到的就是连续的“12” 。 先显示百位,延时一段时间后显示十位,最后显示各位。一直按照设置时间循环 显示。交替显示,利用人的视觉暂留作用使人看到多个数码管同时显示。使得看到连 续的 3 位数。部分程序如下: p2=dispcodebai; 21 p0=dispbitcode0; delay_ms(10); p0=dispbitcode3; p2=dispcodeshi; p0=dispbitcode1; delay_ms(10); p0=dispbitcode3; 3.3.2 lcd 液晶显示程序 液晶显示屏的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵 式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来 分,可以分为静态驱动(static)、单纯矩阵驱动(simple matrix)和主动矩阵驱动 (active matrix)三种。 (1)线段的显示 点阵图形式液晶由 mn 个显示单元组成,假设 lcd 显示屏有 64 行,每行有 128 列,每 8 列对应 1 字节的 8 位,即每行由 16 字节,共 168=128 个点组成,屏上 6416 个显示单元与显示 ram 区 1024 字节相对应,每一字节的内容和显示屏上相应 位置的亮暗对应。例如屏的第一行的亮暗由 ram 区的 000h00fh 的 16 字节的内容决 定,当(000h)=ffh 时,则屏幕的左上角显示一条短亮线,长度为 8 个点;当 (3ffh)=ffh 时,则屏幕的右下角显示一条短亮线;当(000h)=ffh,(001h) =00h,(002h)=00h,(00eh)=00h,(00fh)=00h 时,则在屏幕的顶部显示一 条由 8 段亮线和 8 条暗线组成的虚线。这就是 lcd 显示的基本原理。 (2)字符的显示 用 lcd 显示一个字符时比较复杂,因为一个字符由 68 或 88 点阵组成,既要 找到和显示屏幕上某几个位置对应的显示 ram 区的 8 字节,还要使每字节的不同位为 “1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。 但由于内带字符发生器的控制器来说,可以让控制器工作在文本方式,根据在 lcd 上 开始显示的行列号及每行的列数找出显示 ram 对应的地址,设立光标,在此送上该字 符对应的代码即可。 (3)汉字的显示 汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一 般用字模提取软件),每个汉字占 32b,分左右两半,各占 16b,左边为 1、3、5 右边为 2、4、6根据在 lcd 上开始显示的行列号及每行的列数可找出显示 ram 对 22 应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加 1,送第二个字节, 换行按列对齐,送第三个字节直到 32b 显示完就可以 lcd 上得到一个完整汉字。 如表 3-1 所示为 1602 液晶模块内部控制器的控制指令。如图 3-5 所示为 lcd 液晶显示 流程图。 表 3-1 1602 液晶模块内部控制器指令 序号指令rsr/wd7d6d5d4d3d2d1d0 1清显示0000000001 2光标返回000000001* 3置输入模式00000001i/ds 4显示开/关控制0000001dcb 5光标或字符移位000001s/c r/l* 6置功能00001dlnf* 7 置字符发生存贮器 地址 0001 字符发生存贮器地址 8置数据存贮器地址001显示数据存贮器地址 9读忙标志或地址01bf计数器地址 10 写数到 cgram 或 ddram) 10 要写的数据内容 11 从 cgram 或 ddram 读数 11 读出的数据内容 1602 液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明: 1 为高电平、0 为低电平) 指令 1:清显示,指令码 01h,光标复位到地址 00h 位置 指令 2:光标复位,光标返回到地址 00h 23 指令 3:光标和显示模式设置 指令 4:显示开关控制 指令 5:光标或显示移位 指令 6:功能设置命令 指令 7:字符发生器 ram 地址设置 指令 8:ddram 地址设置 指令 9:读忙信号和光标地址 指令 10:写数据 指令 11:读数据 图 3-5 液晶显示流程图 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙 标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址, 也就是告诉模块在哪里显示字符,图 3-6 为 lcd1602 液晶屏的内部显示地址。 开始 lcd 初始化 延时 设第一行显示位置 显示第一行内容 设第二行并显示位置 显示第二行内容 24 图 3-6 lcd1602 液晶屏内部显示地址 例如第二行第一个字符的地址是 40h,那么是否直接写入 40h 就可以将光标定位 在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 d7 恒定为 高电平 1 所以实际写入的数据应该是 01000000b(40h)+10000000b(80h) =11000000b(c0h)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自 动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 lcd1602 液晶模块内部的字符发生存储器(cgrom)已经存储了 160 个不同的点阵 字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名 等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是 01000001b(41h),显示时模块把地址 41h 中的点阵字符图形显示出来,我们就能看 到字母“a”。部分程序如下: void adr_write(unsigned char adr) delay(20); e=0; rs=0; rw=0; e=1; lcd_data=adr; e=0; 使用时都要进行初始化操作,如两行显示、清显示、是否需光标,从哪里开始显 示等等。部分程序如下: adr_write(0x38); /两行显示,5*7 模式 adr_write(0x01);/清显示 adr_write(0x0c); /整体显示打开,不显示光标 adr_write(0x06); 25 adr_write(0x80);/从第一行的第一个位置开始显示 开机时,首先从坐标的(0,0)开始显示“please power on!“, (1,0)显示为空。 接着按照同样显示定位显示“has boot!“和“think you!“。最后显示收到的数据,第一 行显示“diandushuzhi:“加数值,第二行显示为空。 void display_init() str_write(“please power on!“); str_write(“ “); void display_on() str_write(“has boot! “); str_write(“think you! “); void dis_play() str_write(“diandushuzhi:“); 当按整体键时,显示之前所存储的数据。由于本设计显示屏比较小,所以只设置 显示 4 个读数。第一行显示两个数,第二行显示两个数,显示方式为: 第一行: ds1:+数值 ds2:+数值 第二行: ds3:+数值 ds4:+数值 部分程序如下: str_write(“ds1:“); ddr_write(tablenum1/100); ddr_write(tablenum1/10%10); ddr_write(tablenum1%10); str_write(“ds2:“); ddr_write(tablenum2/100); ddr_write(tablenum2/10%10); ddr_write(tablenum2%10); 3.4 接收模块程序设计 红外接收头在接收数据时首先要对脉冲信号进行识别,判断是不是所要的那个信 号。系统采用外部中断方式来进行数据的识别和解码。当收到一个红外信号时,立即 对其他红外信号进行屏蔽并对此信号进行识别。部分识别程序如下: void sieasdf() interrupt 0 ex0=0; 26 for(a=5;a0;a-) delayms(35);/延时 0.5ms 判断 5 次 5*0.52.5ms 进行 5 次判断,如图 3-7 所示:发射模块发射了 3ms38khz 频率,接收模块进行 了 2.5ms 时间的判断。如是正确信号即执行解码程序,否则跳出解码程序。解码部分 程序如下: if(fleg) delayms(72);/延时 1ms 判断是不是高电平了 if(in) delayms(115);/延时让它超过 2ms; 2.5+1+1.623=5.123ms 图 3-7 波形识别 for(a=10;a0;a-) while(!in); delayms(86);/延时 1.188ms 判断 io 高低 num=num1; if(in) delayms(31);/延时 0.6ms mun=num; 解码完毕 如不是正确信号,则跳出。跳出程序:if(in)fleg=0; 27 4 4 电路板的制作电路板的制作 4.1 原理图的绘制 本次设计的红外通信系统的原理是通过查阅大量的资料,在图书馆以及网上查找 资料所得到的,经过综合的分析其可行性,经济性等方面要求前提下做出的电路原理 图。而在有可靠的电路原理图之后,我需要再做的就是将电路原理图变成一个硬件, 使其实现预定的功能。 如果使用的是万能板,则不需要绘制电路图,只要根据原理图的元器件在万能板 上摆放好,用导线将其焊接起来即可。但是在使用万能板时有许多的不便之处,比如 说在焊接的过程中需要跳线,而板子本身也不够美观,好看。所以为了获得更好的效 果,我们一般都使用腐蚀板,这样我们就首先的步骤就是在 protel 99se 中绘制电路 原理图。在本设计的电路图中的元器件,在 protel 99se 的标准元件库里基本上都有, 但是四位七段的共阳数码管在标准库里没有找到,所以在绘制电路图时就需要自己画 一个数码管,同时也要做一个它的封装图,还有用到的 lcd1602 是在库中没有找到元 件和封装,这也同样需要我测量该元件的管脚和找出它的原件参数,做出它的原件图 和封装库。做好了这个基本上就可以了画出完整的电路原理图了。首先我们先要在元 器件库中调入各个元器件,将各个模块的元器件放在一起,然后用线将其连接起来其 可完成原理图的基本绘制。 4.2 pcb 图的生成 由前面一节我提到在 protel 99se 里绘制的原理图,如果要生成制作电路板所用 的 pcb 图的话,首先要确认我们前面画的电路原理图的正确性,确定每个元器件的连 线都连接上,所以在生成 pcb 之前我们要对每个元器件进行封装,封装库没有的元器 件要自己做一个,比如前面讲到的四位七段数码管的封装。在对每个元器件封装的同 时定义每个元器件的编号,编号要一一对应,不能有重复。 电阻:axial0.3axial0.7 其中 0.40.7 指电阻的长度,一般用 ax

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论