《南京信息工程大学光电计数器课程论文报告(20页).doc》由会员分享,可在线阅读,更多相关《南京信息工程大学光电计数器课程论文报告(20页).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-南京信息工程大学光电计数器课程论文报告-第 17 页滨江学院课程报告 题 目 反射式光电计数器设计 院 系 滨江学院 专 业 电子科学与技术 学生姓名 * 学 号 指导教师 常建华 职 称 副教授 二0一三 年 十一 月 二十一日 目录第一章 绪论1.1 光电计数器原理11.2 国内外研究现状21.3 本文主要研究内容2第二章 光电计数器设计方案论证2.1 遮光式光电计数器32.2 反射式光电计数器32.3 方案选择4第三章 硬件电路设计3.1 STC89C52简介53.2 电源电路73.3 传感器部分83.3.1 E18-D50NK反射式红外传感器83.3.2 发射与接收电路93.4 复位
2、电路113.5 晶振电路123.6 显示电路123.6.1 线段的显示133.6.2 字符的显示133.6.3 汉字的显示133.6.4 1602字符型LCD简介 133.6.5 1602LCD的基本参数及引脚功能143.6.6 1602LCD主要技术参数 143.6.7 1602LCD的指令说明及时序15第四章 反射式光电计数器的软件设计4.1 显示程序17第五章 系统调试23参考文献23致谢24附录24反射式光电计数器设计南京信息工程大学滨江学院电子科学与技术,南京 210044摘要:本文基于STC89c52单片机设计了一个结构简单、性能稳定的工业流水线用反射式光电计数器,可实现产品流水线
3、产品的实时计数功能。该系统采用型号为E18-D50NK的红外传感器为信号采集装置,将光信号转换成电信号。以电磁继电器、三极管构成放大电路,放大后的信号经单片机处理后显示在数码管上。当系统出现锁死情况时可以通过复位键调整,直至系统正常工作。该系统优点是硬件电路简单,控制系统可靠,具有很强的实用价值。该系统拓展后,可用于生产流水线的工件计数,具有很好的应用前景。关键词:STC89c52单片机 E18-D50NK红外传感器 实时计数 第一章 绪论 1.1 光电计数器原理光电式传感器就是基于光电效应的理论基础用于光电信号之间的相互转换的一种传感器。其中光电效应可以分为三类。1.外光电效应:能使电子在光
4、照射条件下逸出物体表面。光电倍增管,真空光电管等就是利用了外光电效应。2. 内光电效应:能使物质的电阻率在光线照射条件下改变。半导体光敏电阻这类的器件就是利用了内光电效应。3.光生伏特效应:物体在光线作用下产生电动势的现象即光生电动势。光电晶体管、光电池等就是利用了光生伏特现象。由于敏感的光波长是在可见光附近,包括红外波长和紫外波长。因此,当光电元件受光照后,电特性就会发生变化这就是光电效应。光电计数器通常采用的光电传感器有摄像头、光电管等,采用的光的种类有普通光和激光,可见光和不可见光等。 组成光电传感器的三部分为光源、光学通路和光电元件。光电式传感器是以光电器件作为转换元件的传感器,光电检
5、测方法具有精度高、应用快、非接触等优点,而可测参数多,光电传感器的结构简单,形式灵活多变因此,光电式传感器在检测和控制中应用非常广泛。 1.2国内外研究现状光自动化的计数提高了工业生产上的效率以及准确性计数的自动化和智能化最终能加速实现现代化的工业。随着生产自动化、设备数字化和机电一体化的发展,对光电计数器的需求日益增多。提高自动计数器的实时性、稳定性是现在国内外自动计数生产研究的主要课题。产品自动计数主要用于工厂的流水线,往往是处于高温等环境中所以单片机的功耗一定要低。恰巧的是,STC89c52单片机符合这一要求。1.3 本文主要研究内容本文的研究方向就是基于STC89c52单片机设计出一个
6、简易但是性能稳定且灵敏度高的工业流水线用反射式光电计数器,能够实时的计数产品流水线上产品的数量。该系统采用STC89c52单片机为处理芯片,对红外传感器采集的信号进行处理。采用发射式型号E18-D50NK的红外传感器,它能够灵敏实时的采集光信号,由于工件的遮挡导致光信号的变化从而导致电信号的变化。借由继电器实现小电流控制大电流的功能。用E18-D50NK的红外传感器可确保系统的灵敏性、稳定性。可以实现工业流水线计数器实时计数的功能。设计光电计数器,实现无接触计数,主要用于工厂生产线工件计数。采用反射式光电传感器,要求使用红外发光二极管、光电管检测,要求光电发射管和接收管相邻放置,在制作实物可用
7、导线引出长度,能够实现无接触计数,独立设计光电计数器电路原理图,画出完整的电路原理图(包含电源部分)和PCB板图,查找资料,要求做出实物,可以使用万用板或者PCB板制作实物,独立完成。第二章 光电计数器设计方案论证2.1 遮光式光电计数器遮光式光电计数器工作原理:从红外发光管和红外接收器在产品生产流水线的两边。红外发光管发射出的红外光线能够直射在如光敏电阻和光电管等光电元件上。当有产品经过遮光式计数器的时候红外光线就会被该产品遮挡(比如瓶装啤酒)。那么这时候光电元件的电信号必然会因为此时光信号的改变而改变,从而生成脉冲通过放大器可计数记下被遮挡的次数,通过数字显示显示具体的数量。图 2.1遮光
8、式光电计数器2.2反射式光电计数器反射式光电计数器工作原理:红外发光管和红外接收器在同一边。当产品流水线没有产品经过的时候红外发光管发出的红外线不会被发射。反之,当有产品经过的时候红外发光管发出的红外线就会被产品反射,反射光并被接收器接收。这时候因为光信号的变化必然导致光电元件电信号的变化。从而形成计数脉冲,光电隔离耦进行合并行输入至STC89c52单片机。并用数码管显示具体数值便可实现物体的数量统计。发射与接收电路可以用一个集成好的红外传感器。集成焊接后的电路显得简单明了。图 2.2 反射式光电计数器方案选择单片机STC89c52系统电源电路计数显示电路发射接收电路图 2.3 光电计数装置的
9、原理在工业生产中肯定会考虑到设备成本,设备所占用的空间以及接线的方便程度。最重要的当然是设备工作的稳定性。结合上文对两种光电计数器的介绍反式光电计数器的优点不难被发现。由于发光管和接收器在同一边无疑会大大的节省空间。将发光管和接收器集成在一起可以带来接线和操作上的简便。再者反射式光电计数器带来的良好光路对齐,不受产品颜色和材质的影响的特点都会给设备提供更佳的稳定性。因此,在工业流水线用的光电计数器方案选择上将采用反射式的光电计数器。第三章 STC89C52简介3.1 芯片简介STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。ST
10、C89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工
11、作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。STC89c52共有4个(P0、P1、P2、P3口)8位并行I/O端口,共32个引脚。P0口双向I/O口,用于分时传送低8位地址和8位数据信号;P1、P2、P3口均为准双向I/O口;其中P2口还用于传送高8位地址信号;P3口每一引脚还具有特殊功能,用于特殊信号的输入输出和控制信号。其引脚图:其中引脚说明为:3.2 STC89c52引角功能VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向
12、I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL
13、门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(IL
14、L)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口, RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。
15、3.2 电源电路本文将直接采用笔记本电脑的USB给电板提供5V的直流电。同时,为了显示电板是否通电在电板中添加一个电源指示灯,这个电源指示灯将采用发光二极管。发光二极管工作在正常工作状态时,通过LED的电流10毫安就足矣了。因此,在电路中采用白发蓝高亮的LED,所以可以取10mA左右的电流值,图3.2中的R16是为了保护系统电路的限流电阻。图3.2 电源电路 3.3 红外传感器 3.3.1 E18-D50NK反射式红外传感器 光电开关电路主要由光电开关管,即光电传感器是采用光电元件作为检测元件的传感器。它首先把被测量的变化转换成光信号的变化,然后借助光电元件进一步将光信号转换成电信号。光电传感
16、器一般由光源、光学通路和光电元件三部分组成。电检测方法具有精度高、反应快、非接触等优点,而且可测参数多,传感器的结构简单,形式灵活样因此,光电式传感器在检测和控制中应用非常广泛。如下图示为本次课程设计所采用的光电开关,其型号为E18-D50NK的反射红外传感器。 图 3.3 反射红外传感器下图为红外传感器输出端的原理图:图3.4 红外传感器信号输入端红外传感器感受到外界信息时,产生高低电平,通过软件程序设置单片机内部寄存器,当传感器的高低脉冲被单片机接收到时,单片机产生中断,中断产生后进入中断服务程序,通过设置中断服务程序,进行计数。并通过P22,P23,P24,P25口将计数信息传送至数码管
17、,数码管显示计数的个数。当需要置位是按下复位开关,则计数器清零,数码管显示清零,重新开始计数。3.3.2 发射与接收电路红外发光管和红外接收器在同一边。当产品流水线没有产品经过的时候红外发光管发出的红外线不会被发射。反之,当有产品经过的时候红外发光管发出的红外线就会被产品反射,反射光并被接收器接收。这时候因为光信号的变化必然导致光电元件电信号的变化。从而形成计数脉冲,光电隔离耦进行合并行输入至STC89c52单片机。并用数码管显示具体数值便可实现物体的数量统计。发射与接收电路可以用一个集成好的红外传感器。然而,在自然光里面红外线那是到处都有的,打个很简单的比方太阳光里面就有红外,除掉太阳光这个
18、随处可见的自然光外人工光源里面也是有许多的红外,比如说火源,白炽灯光等等。既然这样,在我们的身边暗藏了如此之多的红外线,接收装置除了接收发射装置发射的红外线外肯定会受到其他光源的干扰。那么如何规避这个问题理所当然的成了要解决的问题。通过查阅相关的资料可以知道虽然这些都是红外线,但是同是红外线它们的波长也是不同的。这时候就可以用调制解调来解决这个问题。具体点说就是将红外线发射装置以固定的频率来发射红外线,再让接收装置来“认出”这些固顶频率的红外线。如此一来便可以规避相关光源的干扰。因为那些可以构成干扰光源中的红外线的频率要不是杂乱无章要不就是拥有其固定的频率,将红外线发射装置调制成迥异与这些干扰
19、光源的频率就可以规避这个问题。3.4 复位电路复位就是给RESET引脚加上2个机器周期以上的高电平信号来实现单片机的初始化操作。除了进入系统的正常初始化之外,最实用的地方就是当程序运行出错或是操作失误使系统处于死锁状态,为了摆脱死锁状态,需要按复位键重新复位。单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。当系统得到工作电压的时候,复位电路工作在上电自动复位状态,通过外部复位电路的电容充电来实现,只要Vcc的上升时间不超过1ms就可现自动上电复位功能。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其
20、结构如图中R15、C3和S1。上电自动复位通过电容C1充电来实现。手动按键复位是通过按键将R15与VCC接通来实现。本设计将采用按键的手动复位方式。如图示两种复位方式:图 3.8复位电路 (a)手动复位 (b)自动复位 3.5 晶振电路 单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XTAK1和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构如图中Y1、C1、C2。可以根据情况选择6MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。晶振电路可以为单片机提供单片机工作用的时钟频率。 晶振电路在单片机系统中显得至关重要,它为单片机工作提供固顶的工作
21、频率。就像马路口的红绿灯一样,红绿灯为车辆提供通行的时间,红绿灯停止之后马路将乱糟糟的。一样的,假如没有了晶振电路单片机将不能正常的有节奏的工作。除此之外,晶振的频率对单片机工作的快慢有着直接的影响。一个稳定的晶振电路可以为单片机提供可靠的工作频率,单片机运行将更为稳定。如图3.7所示,本文中采用内部时钟方式电路。其中补偿电容通常选择30pF左右的瓷片。图中电容C1,C2的大小将会影响到晶振的稳定和速度,C1,C2都将采用22Pf的电容。选择6MHz或24MHz等频率的石英晶体,电容来产生时钟脉冲。如此来提供稳定的时钟频率。 图3.9 晶振电路 3.6 显示部分液晶显示器各种图形的显示原理:3
22、.6.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时,则在屏幕的顶部显示一条由
23、8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。3.6.2 字符的显示用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。3.6.3 汉字的显示汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提
24、取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5右边为2、4、6根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD上得到一个完整汉字。3.6.4 1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图:3.6.5 1602LCD的基本参
25、数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:图10-54 1602LCD尺寸图3.6.6 1602LCD主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏
26、压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表10-13:引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平
27、R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.6.7 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表10-14所示:序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存
28、贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容表10-14:控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D
29、:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10
30、:写数据。指令11:读数据。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无表10-15:基本操作时序表读写操作时序如图10-55和10-56所示:图10-55 读操作时序图10-56 写操作时序第四章 反射式光电计数器的软件设计 程序:#include reg51.h#include delay.c#include 1602.c/*数据定义*/unsigned
31、 char code data1 = Initializing;unsigned char code data2 = Welcome ;unsigned char code data3 = number: ;unsigned long i = 0;/*引脚定义*/sbit clear = P36; /清零sbit led = P33; /检测到产品时LED亮sbit light = P21; /反射式光电管信号/*主函数开始*/void main(void) LCDInit();DelayNms(50); DisplayListChar(5,0,data1);DelayNms(2000);Di
32、splayListChar(0,1,data2);DelayNms(20); DisplayListChar(0,0,data3);i=0;Displaynumnumer(7,0,i);while(1)if(light = 1)DelayNms(10);if(light = 0)i+;Displaynumnumer(7,0,i);while(light = 0)led = 1; led = 0;if(clear = 0)DelayNms(10);if(clear = 0)i=0;Displaynumnumer(7,0,i);#include reg51.h/*引脚定义*/sbit LCD_RS
33、 = P27; /定义引脚sbit LCD_RW = P26;sbit LCD_E = P25;/*宏定义*/#define LCD_Data P0#define Busy 0x80 /用于检测LCD状态字中的Busy标识unsigned char code digit =0123456789; /定义字符数组显示数字/*读状态*/unsigned char ReadStatusLCD(void) LCD_Data = 0xFF; LCD_RS = 0; LCD_RW = 1; LCD_E = 0; LCD_E = 0; LCD_E = 1; while (LCD_Data & Busy);
34、/检测忙信号 return(LCD_Data);/*写数据*/void WriteDataLCD(unsigned char WDLCD) ReadStatusLCD(); /检测忙 LCD_Data = WDLCD; LCD_RS = 1; LCD_RW = 0; LCD_E = 0; /若晶振速度太高可以在这后加小的延时 LCD_E = 0; /延时 LCD_E = 1;/*写指令*/void WriteCommandLCD(unsigned char WCLCD,BuysC) /BuysC为0时忽略忙检测 if (BuysC) ReadStatusLCD(); /根据需要检测忙 LCD_
35、Data = WCLCD; LCD_RS = 0; LCD_RW = 0; LCD_E = 0; LCD_E = 0;LCD_E = 1; /*读数据*/unsigned char ReadDataLCD(void) LCD_RS = 1; LCD_RW = 1; LCD_E = 0; LCD_E = 0; LCD_E = 1; return(LCD_Data);/*初始化*/void LCDInit(void) LCD_Data = 0; WriteCommandLCD(0x38,0); /三次模式设置,不检测忙信号 DelayNms(5); WriteCommandLCD(0x38,0);
36、 DelayNms(5); WriteCommandLCD(0x38,0); DelayNms(5); WriteCommandLCD(0x38,1); /显示模式设置,开始要求每次检测忙信号 WriteCommandLCD(0x08,1); /关闭显示 WriteCommandLCD(0x01,1); /显示清屏 WriteCommandLCD(0x06,1); /显示光标移动设置 WriteCommandLCD(0x0C,1); /显示开及光标设置/*按指定位置显示一个字符*/void DisplayOneChar(unsigned char X, unsigned char Y, uns
37、igned char DData) Y &= 0x1; X &= 0xF; /限制X不能大于15,Y不能大于1 if (Y) X |= 0x40; /当要显示第二行时地址码+0x40; X |= 0x80; /算出指令码 WriteCommandLCD(X, 0); /这里不检测忙信号,发送地址码 WriteDataLCD(DData);/*按指定位置显示一串字符*/void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) unsigned char ListLength; ListLength =