1、 学科分类号 0712 本科生毕业论文(设计) 题目(中文): 温控电动喷灌的研制 (英文):The Design of Temperature-control Electric Sprinkling Irrigation Device 学生姓名: 学号: 系别: 专业: 电子信息科学与技术 指导教师: 起止日期: 2010.12-2011.5 2011年 5月 20 日怀化学院本科毕业论文(设计)诚信声明 作者郑重声明:所呈交的本科毕业论文(设计),是在指导老师的指导下,独立进行研究所取得的成果,成果不存在知识产权争议。除文中已经注明引用的内容外,论文不含任何其他个人或集体已经发表或撰写过的
2、成果。对论文的研究做出重要贡献的个人和集体均已在文中以明确的方式标明。本声明的法律结果由作者承担。 本科毕业论文(设计)作者签名: 年 月 日 目录摘要关键词AbstractKeywords1 前言12 方案设计与论证22.1 总体设计方案及论证22.2 温度传感器模块选择32.3 CPU 方案的选择32.4控制方案和功率电路的选择43.硬件电路设计与计算53.1 温度采集电路53.2 功率控制电路73.3 单片机控制部分83.4 键盘及数字显示部分94 软件设计及程序流程图104.1 PWM波的产生114.2 主系统程序流程图125.测试方法和测试结果125.1 系统测试仪器及设备125.2
3、 测试方法125.3 测量结果126 设计总结13参考文献15致谢16附录A17附录B18附录C18附录D19 温控电动喷灌系统设计摘要 本设计是以AT89S52 单片机为控制核心的温控系统。该系统由温度传感器18B20对温度进行采集并传送给单片机,温度实时控制采用增量型PID算法,通过脉宽调制控制电动喷头的开关,然后通过电控喷头向外喷水,达到温度控制喷灌,然后利用喷灌调节温度的系统循环需求。该系统具有温度超调量小、调节时间短、静态误差小、测量精确、恒定温度与设定温度偏差小等优点,且采用键盘控制1602液晶显示,控制方便、显示直观。同时该系统操作容易,性价比高的特点。关键词温度控制;增量型PI
4、D算法;超调量;调节时间The Design of Temperature-control Electric Sprinkling Irrigation DeviceAbstract This design is the core of AT89S52 SCM control system for control. This system consists of the temperature sensor of temperature 18B20 collection and send it to the microcontroller, temperature real-time cont
5、rol adopts PID algorithm increment, through the pulse width modulation control electric shower nozzle, then through the switch to control water reach the sprinkler irrigation, then use the temperature control system of irrigation adjust temperature cycle demand. The system has a temperature small ov
6、ershoots and short setting time, static error is smaller, measurement precision, constant temperature and setting temperature deviation adopted, and the advantages of small keyboard control 1602 LCD display, control convenient, direct display. At the same time, this system easy operation, cost-effec
7、tive characteristic KeywordsTemperature control; Incremental; Type PID algorithm; Overshoot; Regulation time 1 前言 温度是我们日常生活中最为熟悉的物理量,是极为重要而又普遍的热工参数之一,温度的检测与控制在工程控制领域中也屡见不鲜。随着计算机技术、测量仪器和控制技术的高速发展, 现代冶金、石油、化工及电力生产过程中,应用了越来越多的先进测量控制技术、设备和方法.在这些众多的先进测量控制技术中,如何对室内温度,室外温度进行控制成为焦点课题之一,为越来越多的科研机构所重视。如何更快、更准
8、确的控制所需的温度是温度控制技术的关键。本次设计是针对于园林,田地,花坛,林地等需要温度控制和湿度调节于一体的情况为前提,在经济,直观,实用的基础上实现温度控制喷灌,以求达到精确感应温度,控制温度的目的。延伸来讲,更可以用之控制田地,花坛,林园等的湿度,这对于合理利用水资源,有着相当不错的效果。相对于传统的浇灌,手动的喷灌,温控电动喷灌都有着明显的优势。而此次选择温控电动喷灌的研制作为此次设计的内容,是相当具有实际意义和延伸价值的。此次设计将我们四年所学的电子方面,电路方面的知识进行了综合运用,有效的巩固了所学知识,也让我更加清晰的了解到了所学专业在社会上的前景,为以后的学习工作明确了目标。当
9、然在此次设计的过程中不可避免的会遇到问题,不过在老师的耐心指导和自己不断的求证改进之下,问题一个个得到解决,本次设计的过程是一个学习的过程,一个进步的过程。温控电动喷灌系统设计:本设计中采用了单片机可实现的增量型PID 算法1,此算法控制灵活,精度高一直被使用与各中工程控制领域。此系统通过键盘输入,串行数据传输,脉宽调制,实现温度设定、显示、控制,并通过串口扩展,能与PC 机通讯,增强了系统的可控性和移植性。功率电路方面,选择了光耦元件进行信号控制,然后利用可控硅来控制通断,此次设计选定了220V通用家庭电源,功率电路也同时设置了与之配套的保护电路,此次功率电路具有精简,安全,性价比高等特点。
10、此次设计在经历了不断的筛选和尝试之后做出了较为明晰的选择。2 方案设计与论证2.1 总体设计方案及论证 根据题目要求设计制作温控电动喷灌,对象为通过对温度的测试来控制进行喷灌,最后的直观部分为电控喷头。要求能在35设定控制喷灌,并具有较好的快速性和较小的超调,具有参数、波形显示等功能。 因此我们采用AT89S52单片机2为核心。由温度传感器采集温度变化信号,通过单片机处理后去控制温度,使其达到稳定。使用该单片机具有编程灵活,控制简单的优点,使系统能简单的实现温度的控制及显示,并且通过软件编程3能实现各种控制算法使系统还具有控制精度高的特点。系统原理框图如图2.1 所示。控制电路显示输入测温电路
11、功率电路电动喷灌地图 2.1 温控电动喷灌系统原理图2.2 温度传感器模块选择 方案一:选用铂电阻温度传感器,此类温度传感器在各方面特性都比较优秀,但其成本较高。 方案二:采用热敏电阻,可满足35到95的测量范围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1的温度信号是不适用的。 方案三:选用美国Analog Devices 公司生产的二端集成电流传感器AD590,此器件具有体积小、质量轻、线形度好、性能稳定等优点。其测量范围在-50到+150,满刻度范围误差为0.3。 方案四:采用数字温度传感器DS18B20。DS18B20是支持一线总线接口的温度传感器,具有抗干扰性强,体积小
12、,灵活经济的特点。它的测量温度范围为-55到+125,在-10到+85范围内,精度为0.5且有9到12位分辨率可调,使用电压为3到5V无需备用电源。此外DS18B20集合了64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器,可以直接实现温度的测量和转换,无需再另接外部电路。 比较以上三种方案,方案四具有明显的优点,因此此次设计选用方案四。2.3 CPU 方案的选择 方案1:可以用逻辑电路搭建一个控制器,实现PID控制。但系统还要附加显示、温度设定等功能,要附加很多电路,总体的电路设计和制作比较繁琐。 方案2:采用8031芯片,其内部没有程序存储器,需要进行外部拓展,这给
13、电路增加了复杂度。 方案3:本方案的CPU模块采用2051芯片,其内部有2KB单元的程序存储器,不需要外部拓展程序存储器,但由于系统用到较多的I/O口,因此此芯片的资源不够用。 方案4:采用AT89S52单片机4,其内部有8KB单元的程序存储器,不需要外部扩展程序存储器,而且其I/O5口达32个,完全满足本次设计需要。 比较这4种方案,综合的考虑单片机各部分资源,由于本设计需采用大量数据采集及处理单元,因此,采用方案4不仅减少了硬件电路,同时提高了最大功率点实时采集速度,精度。2.4控制方案和功率电路的选择 方案1:控制的装置,根据题目,可以使用电动喷灌,控制喷头的开与关,从而达到降温的目的。
14、当温度过高时,单片机输出一个低电平,控制功率电路导通,电动喷灌打开,开始洒水降温。 方案2:可以采用可控硅控制加热器的工作6。通过单片机产生PWM信号来控制可控硅的导通和关断,控制电动喷灌喷头的开与关,从而达到在一定温度时进行喷灌的设计目的。 从散热的响应速度考虑,采用方案2。因为散热的功率较大,故电源采用220V。3.硬件电路设计与计算3.1 温度采集电路 一种电路是采用单线数字温度传感器18B20,可直接输出数字量,单线器件和单片机的接口只需一根信号线,所以本设计的硬件电路十分简单,容易实现。能达到0.5C的固有分辨率,使用读取温度暂存寄存器的方法能达到0.2C以上的精度。 18B20连接
15、电路图如图3.1所示。图3.1 温度传感器 图3.2温度传感器18B20其基本通信过程如下: 主机拉低单总线产生至少480us的Tx复位脉冲; 然后由主机释放总线,进入Rx接收模式,主机释放总线时会产生一个由低电平变为高电平的上升沿7。 单总线器件检测到该上升沿后,延时15到60u;单总线器件通过拉低总线60到240us来产生应答脉冲。 主机接收到从机的应答信号后,说明有单总线器件在线,然后就可以开始对从机进行ROM命令和功能命令操作。 DS18B20直接输出数字量,可直接与单片机进行通信,读取测温数据,电路非常简单。使用它,主要工作量集中在了单片机编程上。另一种测温电路采用AD590集成温度
16、传感器8,AD590将温度转化为电流信号,但由于AD转换大都需要电压信号,因此还需要通过相应的调理电路,将电流信号转化为电压信号。AD590测温电路如图3.3所示。图3.3 功率电路图 由于这个电路输出的是电压信号,不能直接被单片机利用,因此需经过一个A/D转换器,将电压信号转换为数字量。A/D转换器有很多类型,需要根据精度和转换速度来进行选择。本设计可采用最常用的A/D芯片之一AD0809的应用电路。也可直接选用带有A/D的单片机,这样可以省去A/D电路的制作,简化了电路,提高了可靠性。带A/D的单片机有很多型号,如常用的PIC16C711内含有4路8位A/D,C8051F020内含一组8路
17、12位A/D和一组8路8位A/D,凌阳SPCE061A单片机内含有8路10位A/D9。3.2 功率控制电路 此部分电路主要由光电耦合器MOC3041和双向可控硅BTA12组成。以脉宽调制输出控制电动喷头与电源的接通和断开比例,以通断控制调压法控制电动喷灌喷头的开与关。MOC3041的内部集成了发光二极管、过零检测电路和一个小功率双向可控硅。当单片机PWM输出为1,MOC3041中的发光二极管发光,用于过零检测电路的同步作用,内部的双向可控硅在过零后马上导通,从而使触发双向可控硅BTA16导通,负载中有电流通过,反之当单片机PWM输出为0,双向可控硅截止,负载中没有电流通过。光电耦合的耐压值为4
18、00v,它的输出级由过零触发的双向可控硅构成,它控制着主电路双向可控硅的导通和关闭。为了满足应用要求并适当流有余地,双向可控硅可选用BTA12 600,其最大工作电压为600V,电流为12A,足以满足要求。光耦选择MC3041,它的耐压值为400v,它的输出级由过零触发的双向可控硅构成,它控制着主电路双向可控硅的导通和关闭。100电阻与0.01uF 电容组成双向可控硅保护电路10。 控制部分电路图如下: 图3.3 控制部分电路图3.3 单片机控制部分 此部分是该系统的核心,系统的控制采用了单片机AT89S52。单片机AT89S52内部有8KB字节的可编程FLASH存储器和256字节的数据存储器
19、。故系统不必外拓存储器,这样大大减少了系统的硬件电路。图3.4 单片机ATS52图3.5 单片机控制图3.4、键盘及数字显示部分 系统仅采用五个按键来进行温度的控制,分别用作确定开关通断与否、温度粗加、温度粗减、温度细加、温度细减。 在显示方面,我们采用了LCD1602的液晶显示模块,通过软件编程,方便清晰的以十进制显示设定的温度和实测的温度,在利用键盘对温度进行设定时可以从液晶屏上直接看到,方便直观。此外,液晶模块的使用也比较简单,只要连接数据总线,选通端口和命令/数据端口即可。 图3.6 键盘及数字显示电路图 4 软件设计及程序流程图4.1 PWM波的产生 PWM是一种对模拟信号电平进行数
20、字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字信号,因为在给定的任何时刻,满幅值的直流供电不是完全有(ON) ,就是完全无(OFF) 。电压或电流源是以一种通(ON) 或断(OFF) 的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM 进行编码9。 用单片机做PWM控制电动喷灌的通断的控制思路可以这么考虑;当环境温度高于所设温度时,输出一个高电平,功率电路导通,控制电动喷灌开始工作降温;当温度降到所设置的温度以下时,控制单片机输出
21、低电平,功率电路截止,电动喷灌降温停止,维持温度在设定值。 4.2 主系统程序流程图 开始初始化键盘扫描调用温度子程序调用液晶显示子程序读出温度值给参数i赋值有键按下设定温度值K1键按下温度加1K2键按下温减1温iPWM赋1打开电动喷灌温度=iPWM赋0关闭电动喷灌NYNNNNYYYY图4.2主系统程序流程图5. 测试方法和测试结果 此次设计过程中的测试相对而言比较简单,在测试温度达到35以上的时候电动喷灌的开关会相应打开,从而达到喷灌降温增湿的设计目的。5.1 系统测试仪器及设备: 数字万用表、GW-INSTEKG、OM-8254、 0100温度计、电动喷灌、秒表。5.2 测试方法 接上系统
22、的电路装置,装入电动喷灌,设定温控温度。记录调节时间、超调温度、稳态温度波动幅度填入表中。5.3 测量结果假定室温30:表5.1 测试结果设定温度/ 24 18 15 13超调温度/ 1.1 0.8 0.2 0.3稳态误差/ 0.6 0.4 0.6 0.6调节时间/min 3.37 5.85 10.05 15.22结果分析: 由以上测量结果可见,系统性能基本达到了所要求的指标。在温控指标中,影响系统性能的因素很多,最关键的是电动喷灌本身的物理性质及控制算法时间。传感器必须加上防水设施,故温度传感难免迟滞,当喷头洒出飞时调节温度本来就有延时,室温受到喷头水量的影响不会太快,这些都会直接影响系统的
23、控制性能。控制算法方面,需反复实验比较,在上升时间和超调量之间做权衡,选出综合效果最好的控制时间。6 设计总结这次毕业设计,让我受益良多,下面我谈谈我的体会和简要回顾下设计过程。还记得刚刚接到此次设计的题目的时候,我比较兴奋,因为自己可以利用所学的知识做自己喜欢做的事情。可是此次设计却并不是简简单单的兴奋就可以达到要求的。万事开头难,在此次设计的开始阶段,我经历了一个很茫然的过程,我不知道温控电动喷灌系统从何下手,不知道自己要做的是什么东西,不知道我所学的知识该怎样运用到这次设计时间中来,这个过程持续了一个礼拜左右,后来才慢慢静下心来,和指导我此次设计的李老师进行了多次交流之后,才对此次设计有
24、了较为清晰的了解。接下来的过程就是电路原理图的设计,作为我相当重视的毕业设计,在设计电路图的时候我不断的提出思路,然后自我否定,不断的改进。这个过程是繁琐的,可也是充实的,我更加了解了我所学的专业领域,同时也提高了动手能力。后来就是硬件的制作和程序的输入,在老师的指导和一些同学的帮助下,问题基本上都得到了解决。此次设计是一个与实际结合的相当紧密的过程,所以在怎样找准实际应用与设计方案的契合点相当的重要,如,所用的温度传感器,并不能直接埋在土地,或者裸露在空气中长期测量温度,在实践中需要用一个类似于保护膜类型的装置进行保护,在达到保护了温度传感器的同时,却使得温度的测量不是最直观。本系统设计是以
25、AT89S52单片机为核心,采用软件编程,运用定时器来控制时间,继而控制电动喷灌的喷灌时间来实现温度的控制。本系统设计过程基本达到了预期目的,系统比较精简,实现了所要求的功能,同时也具有较高的性价比。 总之,这次毕业设计对我来说是一次比较全面的,富有创造性和探索性的锻炼,完成了我选题时的心愿。同时,老师无私的敬业精神以及同学们的热情帮助也令我深有感触,对于我今后的学习、工作和生活都将是受益无穷的.参考文献1 高吉祥.全国大学生电子设计竞赛系列教程数字系统与自动控制系统设计M.北京:电子工业出版社,2007.6.2 高吉祥.模拟电子技术M.北京:电子工业出版社,2007.1.3 谭浩强.C程序设
26、计M.北京:清华大学出版社,2005.4 钟睿.MCS-51单片机原理及应用开发技术M.北京:中国铁道出版社,2006.7.5 刘修文.实用电子电路设计制作300例M.北京:中国电力出版社,2005.6 石宗义.电路原理图与电路板设计教程Protel99SEM.北京:希望电子出版社,2002.6.7 李林功,吴飞青,王兵,丁晓.单片机原理与应用M.北京:机械工业出版社,2007.8 李光忠.基于单片机的温湿度检测系统的设计J.中国学术期刊(光盘版)电子杂志社,2008.9 南建辉,熊鸣,王军茹.MCS-51单片机原理及应用实例M.北京:清华大学出版社,2003.10 刘文涛.Protel 20
27、04完全学习手册M.北京:电子工业出版社,2005.致谢我之所以能顺利完成温控电动喷灌系统设计的设计与实现,是和指导我的导师有关的。我首先谢谢我的指导教师李老师。在整个设计完成期间,从原理上的可行到应用到设计,以及后期软硬件的改进,不管是什么时候遇到困难,只要和李老师一说他就会给我们讲,从不厌其烦。这一点我深表感谢。作为一个老师他是负责的,态度是认真的,同时在设计期间我的同学们也给了我很大的帮助,在此,我对我的同学们表示感谢。我要感谢院方,也就是学院给我们提供这么多的支持。不管是从老师还是其它的辅助设施上,我深表感谢,给我们带来了极大的方便。我也很感谢论文答辩的各位评委老师,感谢他们在百忙之中
28、抽出时间帮我们答辩。我心里深深知道不管他们提出什么样的问题,难也好,容易也好,其目的只有一个,那就是帮助我们提高,在这我也想说一声谢谢您们!谢谢您们帮助我们提高,欢迎你们提出宝贵的意见。附录附录A:单片机系统原理图图A 单片机系统原理图附录B:功率电路原理图图B 功率电路原理图附录C:功率电路PCB图图C 功率电路PGB图附录D:#include#include#define uchar unsigned char #define uint unsigned intunsigned char code digit11=0123456789-;unsigned char code Temp=SH
29、ICE:;unsigned char code Temp1=YUSHE:;unsigned char code User=0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00;sbit s1=P25;sbit s2=P26;sbit s3=P2sbit fmq=P10;sbit RS=P20;sbit RW=P21;sbit E=P22; sbit BF=P07;sbit DQ=P33;sbit PWM=P11;unsigned char time,set_temp,HighL0,HighH0,HighL1,HighH1,c;unsigned char flag,tl
30、temp,flag1,flag3,PWMH0,PWMH1uint o,diff,i,j,t;void ok();void delay1ms() unsigned char i,j; for(i=0;i4;i+) for(j=0;j33;j+) ; void delay(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); bit BusyTest(void)bit result;RS=0;RW=1;E=1;_nop_();_nop_();_nop_();_nop_();result=BF;E=0;return result;vo
31、id WriteInstruction (unsigned char dictate) while(BusyTest()=1);RS=0;RW=0;E=0;_nop_();_nop_();P0=dictate;_nop_();_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();E=0;void WriteAddress(unsigned char x) WriteInstruction(x|0x80);void WriteData(unsigned char y) while(BusyTest()=1);RS=1;RW=0;E
32、=0;P0=y;_nop_();_nop_();E=1;_nop_();_nop_();E=0;void LcdInitiate(void) delay(15);WriteInstruction(0x38);delay(5); WriteInstruction(0x38);delay(5);WriteInstruction(0x0c);delay(5);WriteInstruction(0x06);delay(5);WriteInstruction(0x01); void display_temp1(unsigned char y,unsigned char x) unsigned char
33、k,l; /j,k,l分别储存温度的百位、十位和个位k=x/10; /取十位l=x%10; /取个位 WriteAddress(y); /写显示地址,将在第2行第8列开始显示WriteData(digitk); /将十位数字的字符常量写入LCDWriteData(digitl); /将个位数字的字符常量写入LCDdelay(50); /延时1ms给硬件一点反应时间 void display_temp2(unsigned char x) WriteAddress(0x4a); /写显示地址,将在第2行第11列开始显示WriteData(digitx); /将小数部分的第一位数字字符常量写入LCD
34、delay(50); /延时1ms给硬件一点反应时间void display_dot(void) WriteAddress(0x49); /写显示地址,将在第2行第10列开始显示 WriteData(.); /将小数点的字符常量写入LCD delay(50);bit Init_DS18B20(void) bit flag; /储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; /先将数据线拉高 for(time=0;time2;time+) /略微延时约6微秒 ; DQ = 0; /再将数据线从高拉低,要求保持480960us for(time=
35、0;time200;time+) /略微延时约600微秒 ; /以向DS18B20发出一持续480960us的低电平复位脉冲 DQ = 1; /释放数据线(将数据线拉高) for(time=0;time10;time+) ; /延时约30us(释放总线后需等待1560us让DS18B20输出存在脉冲) flag=DQ; /让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time=0;time200;time+) /延时足够长时间,等待存在脉冲输出完毕 ; return (flag); /返回检测成功标志unsigned char ReadOneChar(void) unsigned
36、 char i=0;unsigned char dat; /储存读出的一个字节数据for (i=0;i8;i+) DQ =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 DQ = 0; /单片机从DS18B20读书据时,将数据线从高拉低即启动读时序 _nop_(); /等待一个机器周期 DQ = 1; /将数据线人为拉高,为单片机检测DS18B20的输出电平作准备 for(time=0;time=1; if(DQ=1) dat|=0x80; /如果读到的数据是1,则将1存入datelsedat|=0x00;/如果读到的数据是0,则将0存入dat /将单片机检测到的电平信号DQ存
37、入ri for(time=0;time8;time+) ; /延时3us,两个读时序之间必须有大于1us的恢复期 return(dat); /返回读出的十六进制数据WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i8; i+) DQ =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 DQ=0; /将数据线从高拉低时即启动写时序 DQ=dat&0x01; /利用与运算取出要写的某位二进制数据, /并将其送到数据线上等待DS18B20采样 for(time=0;time10;time+) ;/延时约30us,DS
38、18B20在拉低后的约1560us期间从数据线上采样 DQ=1; /释放数据线 for(time=0;time=1; /将dat中的各二进制位数据右移1位 for(time=0;time4;time+) ; /稍作延时,给硬件一点反应时间void ReadyReadTemp(void) Init_DS18B20(); /将DS18B20初始化WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换 delay(200); /转换一次需要延时一段时间 Init_DS18B20(); /将DS18B20初始化WriteOneChar(
39、0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器,前两个分别是温度的低位和高位void display_symbol(void) unsigned char i,j; WriteAddress(0x40); /写显示地址,将在第2行第1列开始显示 i = 0; /从第一个字符开始显示while(Tempi != 0) /只要没有写到结束标志,就继续写 WriteData(Tempi); /将字符常量写入LCDi+; /指向下一个字符delay(50); /延时1ms给硬件一点反应时间WriteAddress(0x00); /写显示地址,将在第2行第1
40、列开始显示 j = 0; /从第一个字符开始显示while(Temp1j != 0) /只要没有写到结束标志,就继续写WriteData(Temp1j); /将字符常量写入LCDj+; /指向下一个字符delay(50); /延时1ms给硬件一点反应时间void display_cent(void) unsigned char j; WriteInstruction(0x40); /设定CGRAM地址delay(5);for(j=0;j8;j+ )WriteData(Userj);/写入自定义图形 WriteAddress(0x4c);/设定屏幕上的显示位置 delay(5); WriteData(0x00);WriteAddress(0x0a);/设定屏幕上的显示位置 delay(5); WriteData(0x00); /从CGRAM里取出自定义图形显示 void ok() WriteAddress(0x0d);/设定屏幕上的显示位置 delay(5); WriteData