《红外抄表电度表——抄表器.doc》由会员分享,可在线阅读,更多相关《红外抄表电度表——抄表器.doc(69页珍藏版)》请在三一办公上搜索。
1、太原理工大学现代科技学院毕业设计设计题目:红外抄表电度表抄表器学 生:专 业:测控技术与仪器班 级:学 号:指导教师:设计日期:太原理工大学现代科技学院毕业设计(论文)任务书毕业设计(论文)题目:红外抄表电度表抄表器原始资料:近年来,随着信息技术的飞速发展,无线技术正在向各个领域渗透,特别是红外线无线技术,在工业生产、家用电器、安全保卫以及人们的日常生活中得到了广泛的应用。本文详细描述了该红外抄表系统的设计方案、硬件电路设计和软件设计,并利用keil仿真软件对所开发的C语言程序进行了验证。在本文的第五章讨论了系统的发展趋势和改进,为系统的进一步开发奠定了基础。本系统关键部分主要是红外通信原理。
2、系统在分析可行性、可靠性的基础上,参照工程设计方法,确定了模块化设计的思路。本系统主要由控制模块、发射模块、接收模块、显示模块4个模块组成。38kHz频率作为数据通信的载波,发射和接收模块对数字信号进行调制和解调,通过LCD液晶显示屏将收到的数据显示出来。该系统还具备掉电保护和数据存储功能。利用一个红外抄表器来完成琐碎的抄表工作。从而从根本上杜绝“肉眼观察”所带来的随机误差,并大大提高了抄表的效率。 毕业设计(论文)主要内容:本文主要介绍以AT89S51单片机为核心控制的红外抄表系统设计。该系统主要由控制模块、发射模块、接收模块、显示模块4个模块组成。系统的数据由发射板的3个按键按一定的计算规
3、则所得。发射管发射的38kHz频率载波由单片机编程控制产生。发射模块是对发送的数字信号进行适当的调制编码,后经发射管的转换电路转变为红外光脉冲并发射到空中;接收模块对接收到的红外光脉冲进行光电转换、解调译码后恢复原数字信号。收到的数据通过LCD1602液晶显示屏显示出来。主要参考文献:1 胡汉才,单片机原理及其接口技术M,北京,清华大学出版社,1996,48622 沈德金,MCS-51系列单片机接口电路与应用程序实例M,北京,北京航空航天大学出版社,1990,21843 祁伟,杨婷,单片机C51程序设计教程与实验M,北京航空航天出版社,20064 凌志浩,仪表原理与设计技术M5 许晓平,孙晓彦
4、,程传胜.PCB设计标准教程M,北京,北京邮电大学出版社,20086 胡伟,季晓衡,单片机C程序设计与应用实例M,人民邮电出版社,20037 程道喜,传感器的信号处理及接口M,北京,科学出版社,19898 杨将新,李华军,刘东骏,单片机程序设计及应用从基础到实践M,北京,电子工业出版社, 20019 胡汉才,单片机原理及其接口技术M,北京,清华大学出版社,1995,(6),11212610 苏长赞,红外线与超声波遥控M,北京,人民邮电出版社,199711 张玉香,新型遥控接收模块HS0038J,无线电,1998 学生须提交的文件:1、 毕业设计任务书2、 毕业设计中期检查表3、 毕业论文设计成
5、绩评定表4、 论文进度安排:第一周到第三周:查阅资料,文献综述。第四周:提交开题报告。第五周到第六周:总体方案设计。第七周到第十一周:数据采集。第十二周到第十四周:完善系统设计,撰写毕业论文。第十五周:修改完善毕业论文,准备毕业答辩。专业班级 测控技术与仪器 学生 设计(论文)工作起止日期 指导教师签字 日期 专业(系)主任签字 日期 红外抄表电度表抄表器摘 要近年来,随着信息技术的飞速发展,无线技术正在向各个领域渗透,特别是红外线无线技术,在工业生产、家用电器、安全保卫以及人们的日常生活中得到了广泛的应用。本文详细描述了该红外抄表系统的设计方案、硬件电路设计和软件设计,并利用keil仿真软件
6、对所开发的C语言程序进行了验证。在本文的第五章讨论了系统的发展趋势和改进,为系统的进一步开发奠定了基础。本系统关键部分主要是红外通信原理。系统在分析可行性、可靠性的基础上,参照工程设计方法,确定了模块化设计的思路。本系统主要由控制模块、发射模块、接收模块、显示模块4个模块组成。38kHz频率作为数据通信的载波,发射和接收模块对数字信号进行调制和解调,通过LCD液晶显示屏将收到的数据显示出来。该系统还具备掉电保护和数据存储功能。利用一个红外抄表器来完成琐碎的抄表工作。从而从根本上杜绝“肉眼观察”所带来的随机误差,并大大提高了抄表的效率。关键词:通信,红外抄表,单片机,调制,解调INFRARED
7、METER READING METERMETER READERSABSTRACT 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
8、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 syst
9、em 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
10、 design. This system mainly consists of control module, the 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 scr
11、een 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 WOR
12、DS: communication, Infrared meter reading, Single chip microcomputer, Modulation, demodulation目录1 绪论61.1课题的背景和意义61.2课题总体设计方案62 系统硬件设计 82.1 控制模块82.2 发射模块92.3 接收模块112.4 显示模块133 系统软件设计173.1 38kHz频率的产生及发射程序设计183.2 数据计算程序203.3 显示模块程序设计213.3.1 数码管显示213.3.2 LCD液晶显示程序223.4 接收模块程序设计264 电路板的制作 284.1 原理图的绘制284
13、.2 PCB图的生成284.3 电路板到印制和焊接295 系统调试305.1 硬件调试305.2 软件调试30总结语32参考文献33致谢34附录一:发射原理图36附录二:接收原理图37附录三:源程序381 绪论1.1课题的背景和意义众所周知,电表是一种非常重要的计量仪表,它的计量准确与否直接关系到千家万户的利益。为此,国家制订严格的标准,各电表生产厂家在严格遵守国家标准基础上,实行更严格的内控标准。事实上,每一台出厂的合格表,都经过了严格的校验及误差处理,这些误差处理通常包括硬件和软件的处理。因而,用户最终使用的电表其自身的计量精度是达到国家标准的。然而,在电表的实际应用过程中,由于人为的操作
14、给其计量带来种种的随机误差,尤为突出的便是抄表。目前在我国,抄表工作大多数还是采用“肉眼观察”。即抄表人员挨家挨户上门读取电能表计度器示值。可想而知,这种抄表方法效率是多么低下、花费人力大、抄表不准确,而它却仍在全国占据主流位置。所以“人眼”抄表带来了很多不便。目前,我国城乡居民用户抄电表、水表和煤气表的方式基本上都是人工抄表,即由抄表人员每月逐户查抄水表、电表、煤气表。这种落后的方式,消耗大量的人力、物力,而且采集数据的时间跨度大、采集数据的准确度低。因此,国家有关部门规定以后将逐步以计算机为基础的自动抄表系统取代传统的人工抄表。利用一个红外抄表器来完成琐碎的抄表工作。从而从根本上杜绝“肉眼
15、观察”所带来的随机误差,并大大提高了抄表的效率。本设计是一个基于单片机的红外抄表系统,利用红外线这种非电信号作为传输介质,来传送数据信息,可以在那些不适合或不方便架设电缆线及电磁干扰较强的工作环境下,来实现电度表的抄表,并通过LCD液晶显示屏显示读数,完成电度表用电量的抄录工作。1.2课题总体设计方案本文主要介绍以AT89S51单片机为核心控制的红外抄表系统设计。该系统主要由控制模块、发射模块、接收模块、显示模块4个模块组成。系统的数据由发射板的3个按键按一定的计算规则所得。发射管发射的38kHz频率载波由单片机编程控制产生。发射模块是对发送的数字信号进行适当的调制编码,后经发射管的转换电路转
16、变为红外光脉冲并发射到空中;接收模块对接收到的红外光脉冲进行光电转换、解调译码后恢复原数字信号。收到的数据通过LCD1602液晶显示屏显示出来。 图1-1 电源、电池供电电路设计图本系统具有掉电保护功能,以便在停电时保护所储存的数据信息。如图1-1所示为电源、电池供电电路设计图。当有外接电源时VCC电压高于电池电压,二级管处于截止状态,电池不给单片机供电;当VCC电压低于电池电压时,二极管处于导通状态,电池给单片机供电,以保证数据不丢失。还具有数据存储功能,可以按整体键查看之前所收到的数据。如图1-2所示为系统工作的整体框图。单片机发射模块发送接收模块单片机显示模块数据设置显示模块图1-2 系
17、统框图2 系统硬件设计硬件电路主要由两个单片机控制模块、发射模块、接收模块、显示模块以及一些外围驱动电路组成。2.1 控制模块图2-1 AT89S51实体图AT89S51是美国ATMEL公司生产的低功耗、高性能CMOS8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位。AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。89S51单片机实物图如图
18、2-1所示。AT89S51提供以下标准功能:4K字节闪速存储器,128字节内部RAM,32个I/O口,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中到内容,但振荡器停止工作并禁止其它所有工作部件直到下一个硬件复位。AT89S51在平时的应用时比较多,同样对它的最基本电路驱动电路也是比较熟悉的。首先必须有5V的驱动直流电源,现在有现有的
19、5V直流电源模块,就可以直接应用5V直流电源模块做为驱动单片机AT89S51的电源。这就是在VCC管脚处接上5V电源。GND接地,同时EA管脚现在不用下载程序也接上5V电源。其次要给AT89S51一个时钟电路,为了方便计算时钟频率设计了在引脚XTAT1和XTAL2外接12M的晶振构成内部振荡方式。再加上2个30pF的电容就组成了时钟电路。最后要有复位电路,单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路用10K电阻,加上一个10uF的电解电
20、容和一个复位按钮来组成复位电路。由于AT89S51的存储器以足够,这就不需要我再设计外部扩展存储器的电路了。具体设计的AT89S51的最基本外围电路就设计完成了,如图2-2所示为最小系统原理图 。图2-2 最小系统原理图2.2 发射模块红外发射模块是采用红外发光二极管来发送经过调制的红外光波。红外发射器发出的红外光转换成相应的电信号,再送前置放大器放大。红外发射电路的信号一般采用两级调制。在红外数据传输的信号调制方式上,采用脉冲调制的二进制不归零码。这种调制方式比较简单,编码、解码都比较方便,有利于电路简化。红外线发射管在LED封装行业中主要有三个常用的波段,如下850nm、875nm、940
21、nm。根据波长的特性运用的产品也有很大的差异,850nm波长的主要用于红外线监控设备、875nm主要用于医疗设备、940nm波段的主要用于红外线控制设备。本系统采用的是红外的940nm波段。如图2-3所示为红外发射二极管实物图。图2-3发射二极管实物图在红外发射模块设计中选择红外发射二极管时,要注意以下几个问题:第一,由于红外发射二极管的PN结电容的存在,影响了它的工作频率,选型时应选择响应时在S的红外发射二极管,以适应数据通信的要求;第二,由于现在大多数红外发射二极管为球面透镜封装,红外发射二极管的发射指向角较小,为改善发射光线的指向特性,使之在较宽的偏移臣离内正常工作,应采用多管并发的方法
22、但对本系统综合考虑还是采用了一个红外发射管。图2-4发射管连接图本系统的红外发射模块连接方式如图2-4所示,接单片机的P1.0引脚。两个电阻是限流的作用,R121是防止电流过大烧坏三极管,R122是防止电流过大烧坏红外发射管D121,三极管起到放大电流的主要作用,使得红外发射的更远,当单片机的P1.0口赋值1时,三极管工作,红外发射管工作发射红外线,当单片机的P1.0赋值0的时候三极管不工作,红外发射管不工作。如图2-5所示为发射管内部工作流程图。图2-5 发射管内部工作流程图2.3 接收模块一体化的红外接收模块将数据信号的接收、放大、检波、整形集于一体,并且输出可以让单片机识别的信号,这样大
23、大简化了接收电路的复杂程度和电路的设计工作,方便使用。本系统采用红外一体化的接收头(HS0038)。如图2-6所示为接收模块实物图。HS0038黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽、功耗低、灵敏度高。在用小功率发射管发射信号情况下,其接收距离可达35m。它能与TTL、COMS电路兼容。HS0038为直立侧面收光型。它接收红外信号频率为38kHz,周期约为26s,同时能对信号进行放大、检波、整形,得到TTL 电平的编码信号。三个管脚分别是地、5 V 电源、解调信号输出端。 图 2-6 接收模块实物图 图2-7 接收模块测试图 表2-1 红外接收模块的主要参数工作电压4.8-5
24、.3V工作电流1.7-2.7mA接收频率38kHz峰值波长940nm静态输出高电平输出低电平0.4V输出高电平接近工作电压红外一体化接收头的好坏测试可以利用图2-7所示的电路进行,在HS0038的电源端2与信号输出端3之间接上一只二极管及一只发光二极管后,再配上规定的工作电源(为5 V),当手拿遥控器对着接收头按任意键时,发光二极管会闪烁,说明红外接收头和遥控器工作都正常;如果发光二极管不闪烁发光,说明红外接收头和遥控器至少有一个损坏。只要确保遥控器工作正常,很容易判断红外接收头的优劣。在使用红外接收模块时应保证HS0038接收模块接地良好以防止干扰,由于此模块抗连续脉动光干扰的特性,在进行数
25、据通讯时应发送一个字节后停顿大小为一个字节所占用的时宽,以满足此模块的脉动占空比要求。如果发送一个字节后不作停顿,接收器将会认为是光噪声,将造成通讯失败。如图2-8所示为接收模块的内部结构图。图2-8 接收模块内部结构图本系统在使用接收模块时在电源端和地端之间加了个电容,主要是因为电源波形影响信号的输入,而加个电容有滤波的效果和提高灵敏度。如图2-9所示为接收模块连接原理图。图2-9 接收管原理连接图2.4 显示模块液晶显示模块具有体积小、功耗低、显示内容丰富等特点,液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样就可以显示出图形。本系统发射板用到的显示模块
26、为4位共阳LED数码管,采用的是动态扫描方式显示所需要发送的数据。用数码管显示信息时,由于每个数码管至少需要8个I/O口,如果需要多个数码管,则需要太多I/O口,而单片机的I/O口是有限的。所以在实际应用中,一般采用动态显示的方式来解决此问题。下面对数码管进行简单的介绍,数码管是一种半导体发光器件,其基本单元是发光二极管,数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(CO
27、M)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。本系统用LCD1602液晶显示器来显示收到的数据信息。LCD1602可以显示2行16个字符,有8位数据总线D0-D7和RS、R/W、E三个控制端口,工作电压为5V。LCD1602液晶模块内部的字符发生存储器(CGRO
28、M)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。LCD1602内部结构由DDRAM、CGROM、IR、DR、BF、AC等大规模集成电路组成。(1)DDRAM为数据显示用的RAM,用以存放要LCD显示的数据,只要将标准的ASC码放入DDRAM,内部控制线路就会自动将数据传送到显示器上,并显示出ASC对应的字符。(2)CGROM为字符产生器ROM,可供使用者存储特殊造型的字符
29、码,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变为0时,读取数据。当RS引脚信号为1,R/W引脚信号为0且E引脚信号为由1变为0时,存入数据。图2-10 LCD液晶显示原理图如图2-10所示为液晶显示原理图,8位数据总线由单片机的I/O口P2控制,RS脚的高低电平控制数据和指令的写入,R/W脚的高低电
30、平控制数据的读取和写入。如图2-11为模拟接线方式图。LCD液晶屏的第三引脚接了个滑动变阻,目的是对LCD对比度进行调节,使显示达到合适的效果。当电阻器滑到最靠近电源端时对比度最弱,当滑到最靠近地端时对比度最高。但对比度过高时会产生“鬼影”,因此用一个滑动变阻来调整对比度。表2-2为LCD1602液晶显示屏的主要技术参数。图2-12所示为读操作时序的控制器接口图。表2-2 LCD1602的主要技术参数显示容量162个字符芯片工作电压4.5-5.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.954.35(WH)mm表2-3 LCD1602液晶显示屏接口信号的说明编号符号引
31、脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据/命令选择端12D5Data I/O5R/W读/写选择端13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极图2-11 模拟接线图图2-12 读操作时序的控制器接口图3 系统软件设计程序的编写就要涉及到程序语言的选择,下面先看看汇编语言和C语言的特性,再进行语言的选择。(1)C语言:C语言是国内外广泛使用的计算机语言,是计算机应用人员应掌握的一种程序设
32、计工具。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言特别适合编写系统软件。除了这些特点外,C语言还具有以下优越性:在不需要完全了解单片机系统具体硬件的情况下,也能够编出符合硬件实际的专业水平的程序;以适应片上存储器的大小;中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;提供常用的标准函数库,以供用户直接使用; 头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地
33、被排除掉;可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。(2)汇编语言:汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而在对于程序的空间和时间要求很高的场合,汇编语言是必不可少的,至于对于很多需要直接控制硬件的应用场合,更是非用汇编语言不可。除了这些特性,汇编语言还具有下列特性: 占用的内存单元和CPU资源少,能直接对硬件进行控制; 程序简短执行速度快; 可直接调用单片机的全部资源,并可有效地利用单片机的专有特性; 能准确
34、地掌握指令的执行时间,适用于实时控制系统。红外抄表系统的软件程序设计主要由主程序、发射程序、显示程序、接收程序组成。通过对以上两种语言的分析,由于C语言程序有利于实现较复杂的算法,同时该程序也比较复杂,要控制多个部件模块。为了能简单有条理的编辑程序。两种语言都有其独有的特性,结合自身的情况,对C语言比汇编语言要熟悉,并且应用C的时间比汇编长,所以我最终选择了以C语言来编写系统的程序。如图3-1所示为红外抄表系统的整体程序流程图,系统开始工作时进行初始化操作。由按键控制数据是否发送。初始化子程序数值按键扫描数码管显示是运行接收程序LCD显示后续处理接收按键扫描开始运行发送程序否 图3-1 系统软
35、件流程图3.1 38kHz频率的产生及发射程序设计38kHz频率可以有效防止日光和灯光的干扰,使得通信距离更远。现讨论产生38kHz频率的两种方案。方案一:分频电路产生图3-2 分频电路图如图3-2所示455kHz晶振经12分频得到38kHz。由455kHz的晶振CRY,反相器74HC04及电阻、电容构成的振荡器产生455kHz的方波信号。经脉冲分频器74LS92,六分频成为75.83kHz的脉冲信号。再经过D触发器构成的2分频/整形电路变成38kHz的方波信号。本方案的振荡器采用了晶振,因晶振频率十分稳定。RC振荡器的稳定性差,往往由于偏差很大而缩短控制距离。方案二:软件生成38kHz频率f
36、=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
37、数据位右移一位后判断发送。如此循环8次数据就发送完毕。发送完毕指令kHz(20),后停止发送。如图3-3所示发射和接收波形图。 a=2ms b=1ms c=1.5ms图3-3 发射接收波形图khz(116);delayms(125);for(num1=8;num10;num1-) khz(40);if(num&0x001)delayms(93);/delay 1.5mselsedelayms(65);/delay 1msnum=num1;如图3-4所示为38kHz的载波频率:低电平17us、高电平9us,17+9=26us 比26.3快一点点。高、低电平时间不是固定值,只要相加等于26us就是
38、发送38khz的频率。 图3-4 计算得出的载波频率3.2 数据计算程序本系统用发射板的三个按键来设置需要发送的数据,三个按键分别是个、十、百位控制键,数值计算规则如下:每按一个按键对应位加一。利用软件编程对各位进行相加计算。每位最大只能按到9,当超过9,则返回到0并且蜂鸣器响一声,如此反复循环计算。如个、十、百位各按一下,则得数据111。计算规则十分简单,如下程序为百位控制:key1为百位控制键,首先进行按键扫描,当按键引脚为低电平时说明按键没有按下,继续等待;当引脚为高电平时说明按键已按下,则蜂鸣器响一声,百位加一。百位计算部分程序如下:if(key1=0)delay_ms(10);if(
39、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 数码管显示数码管动态显示程序中,各个位的延时时间长短非常重要,如果延时时间长,则会出现闪烁现象;如果延时时间太短,则会出现显示暗且有重影。所有数码管的段选全部连接在一起,动态显示是多个数码管,交替显示,利用人的视觉暂留作用使人看到多个数码管同时显示。在编程时,需要输出段
40、选和位选信号,位选信号选中其中一个数码管,然后输出段码,使该数码管显示所需要的内容,延时一段时间后,再选中另一个数码管,再输出对应的段码,高速交替。 例如需要显示数字“12”时,先输出位选信号选中第一个数码管,输出1的段码延时一段时间后选中第二个数码管,输出2的段码。把上面的流程以一定的速度循环执行就可以显示出“12”,由于交替的速度非常快,人眼看到的就是连续的“12”。先显示百位,延时一段时间后显示十位,最后显示各位。一直按照设置时间循环显示。交替显示,利用人的视觉暂留作用使人看到多个数码管同时显示。使得看到连续的3位数。部分程序如下:P2=dispcodebai;P0=dispbitcod
41、e0;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字节的
42、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显示一个字符时比较复杂,因为一个字
43、符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。(3)汉字的显示汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5右边为2、4、6根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD上得到一个完整汉字。如表3-1所示为1602液晶模块内部控制器的控制指令。如图3-5所示为LCD液晶显示流程图。 表3-1 1602液晶模块内部控制器指令序号指令RSR/WD7D6D5D4D3