




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEII功率测量模块的软件设计与实现摘要:本文介绍了一种基于8051单片机的功率测量模块的软件设计.首先简介硬件电路部分,简述一种简单有效的功率测量方法,利用从负载获得的电流和电压信号,采用ADE7755芯片完成功率计算,输出与功率成正比的频率信号,与单片机结合对频率计数处理,可方便地得到功率值。然后主要对软件进行介绍,功率测量模块的软件包括主程序、功率测量数据的获取、外部中断子程序、实际功率的工程量计算与显示程序.分析了软件的功能需求,采用模块化设计方法。对每个程序模块分别进行仿真调试和整体调试,最后和硬件联合进行调试,经过反复修改,程序运行基本正常。关键词:单片机;程序设计;ADE7755;功率测量SoftwareDesignAndImplementationofPowerMeasurementModulesAbstract:Thispaperintroducesapowerofmeasurementbasedon8051monolithicintegratedcircuitsdesignofsoftwaremodules。firstabriefintroductionofahardwarecircuit,simpleandeffectivepowerwasmeasured,usingfromtheloadofthecurrent,voltageade7755chipin,withcompletepoweroutputproportionaltothepowerofthesignalfrequencyandmonolithicintegratedcircuitstothefrequency,withacountcaneasilygetthepower.Andmaintothesoftwareareintroduced,thepowertomeasuresoftwaremodulesincludingthemainprogram,thepowertoobtaindata,outsidemeasurementofthesubroutine,theactualpowerworkamountwiththatprocedure。theanalysisofthesoftwarefunctionandusemodulardesign.foreachprogrammoduleforemulation,thecommissioningandthewhole,andthehardware,thedebuggedafterrepeatedamendment,aprogramisallright。Keywords:SCM;Programming;ADE7755;PowerMeasurement目录TOC\o”1-3”\h\z\u第1章功率测量模块的系统概述 21.2设计要求 32.2STC89C51RC介绍 42.3液晶显示部分 7HYPERLINK\l”_Toc264891987"2。3.1LCD16824概述 7_Toc264891990"2。5RS-232接口电路 11HYPERLINK\l”_Toc264891991"第3章软件设计 12HYPERLINK\l”_Toc264891992"3.1软件的设计思路 12HYPERLINK\l”_Toc264891993"3。1.1软件设计需求 12HYPERLINK\l”_Toc264891994"3.1.2软件设计思想 12_Toc264891996"3.2。1主程序 13HYPERLINK\l”_Toc264891997"3。2.2LCD显示程序设计 143。2。3ADE7755与单片机程序设计 15_Toc264892000”4。1软件调试 184.1。1软件调试 18HYPERLINK\l”_Toc264892002"4.1.2软件烧录 19HYPERLINK\l”_Toc264892003"4。2Proteus软件仿真 21HYPERLINK\l”_Toc264892004”4.3软件硬件联合调试 22_Toc264892006”参考文献 25HYPERLINK\l”_Toc264892007"致谢 26HYPERLINK\l”_Toc264892008"附录1系统原理图 27HYPERLINK\l”_Toc264892010”附录2源程序代码 28第41页共44页前言随着电力技术的高速发展,高精度数字式的电力测量设备已广泛地应用在电力系统中.为了适应这种测量的要求,数字式电参数测量仪表多采用高精度的专用电能测量芯片来研制.对于功率的计量方法,以前主要采用的是机械式电能表的设计,但是机械表很难做到较高的精度要求.因此,机械式电能表虽然具有工作寿命较长的优点,仍然不可避免的被电子电能表取代。电子电能表的核心是一块计量芯片,配以一些外围器件实现电能计量功能。此类芯片主要基于模拟乘法器和频率变换原理的设计,这类芯片中应用较广泛的有CIRRUSIDGIC公司CS5460、美国ADI公司的ADE7755和贝岭公司的BID932.这些芯片拥有内部集成度高,易于与微处理器接口,测量精度高等特点,利用这些芯片开发电量测量系统和设备,将有效提高系统的精度和降低开发难度.对电量的测量和计算,传统的机械式电度表体积大、精度差,需派专门人员上门抄表,工作量大,不利于集中管理。目前广泛采用的交流采样法能量计,测量精度高,便于计算机集中管理,但为保证计量精度,需保证采样时刻准确,每个采样周期要采集足够多的点数,这就对数据转换速度和单片机处理速度提出了很高的要求,为得到功率值需进行大量的数值计算,编程过程非常麻烦.本文介绍了一种简单有效的测量方法,利用从负载获得的电流和电压信号,采用ADE7755芯片完成功率计算,输出与功率成正比的频率信号,与单片机结合对频率计数处理,可方便地得到功率值。选题联系了实际需求,结合所学专业知识,将微电子技术与计算机技术相结合,将理论与实践相结合,将功率计量专用芯片采集到的数据送到单片机集中处理。研究设计了一种基于ADE7755芯片的功率测量模块,在保证计量精度与系统稳定性的前提下,实现了8路负载功率的计量,LCD显示测量数据与上位机的串行通讯等基本功能。第1章功率测量模块的系统概述1.1系统概述电度表作为电能计量工具,在国民经济各部门中得到广泛应用。随着微电子技术的迅猛发展,微控器(单片机)和大规模集成电路在电能计量领域的广泛应用,使电度表的技术水平和性能得到长足发展。根据我国目前的发展状况,和广大用电单位及个人的用电状况,发现现在所使用的电能计量器具功能较少,不能满足人们目前的要求。电子式电能表具有功耗少、防潜动、启动电流小、防窃电、稳定性好、计量准确等诸多优点,替代感应式电能表是电表行业的发展趋势。目前,全国几乎所有的电能表厂家都在致力于电子式电能表的研制与生产。在这些年的城网改造和农网改造中,电子式电能表一直占据着电表市场。电子技术的飞速发展造就了电能表的更新换代,而计算机技术的迅猛突起对电能表市场又提出了更新的要求,那就是网络化的管理。目前,普通的电子式电能表大多数采用专用的电能表芯片,靠专用芯片产生的电能累计脉冲去驱动机电式计度器,这种结构的优点是简单、便宜,在不需要联网的场合被大量使用,但这种电表中无CPU、无存贮器、无通信接口,因而该类表是无法构成自动抄表系统的。如果在该类表的基础上进行改造,则每表增加1个CPU、1个存贮器、1个通信接口芯片,显然表的硬件成本会成倍增加,而且作为整个自动抄表系统的网络节点容量数也会显得十分庞大。考虑中国城市居民住宅的特点(一般进户的电缆集中在楼道),我们将上述结构进行改造,将进线电缆在一起的用户共用1个CPU、1个存贮器、1个通信接口芯片,并且发挥CPU的强大功能,共用1个显示窗口轮流显示各用户电量信息,构成多用户电子式电能表。再由各多用户电表与管理机构成整个自动抄表系统,其系统结构如图1-1所示。多用户电表1多用户电表1多用户电表2多用户电表3管理微机用户脉冲1用户脉冲2用户脉冲n用户脉冲1用户脉冲2用户脉冲s用户脉冲1用户脉冲2用户脉冲p………。。……6………图1—1由多用户电能表构成的自动抄表系统结构从图1-1可知,系统依旧符合国家要求的一户一表原则,不仅节约了硬件资源,而且大大减少了网络的节点数量。电子式多功能电能表主要针对国内市场三相用电的工业用户。随着电力行业改革深入,工业用电对多功能电能表的需求大量增加。目前国内多功能表种类少、价格较高、功能不完善,往往仅是针对某些地区的特定要求开发,缺乏通用性,本文介绍的功率测量模块以单片机为核心,课完成负载功率测量,并可通过通信功能将功率发送至管理计算机。1.2设计要求1、测量8路功率(1KW以内)。2、测量功率结果通过LCD显示.3、完成整个功率测量模块的软件设计与调试,并与硬件联合调试。4、撰写任务突出符合规范的毕业设计论文。 第2章系统硬件电路方案简介2。1工作原理功率测量模块硬件电路主要由测量单元ADE7755、时钟、单片机、显示器、存储器、电源、通信接口和8个继电器控制系统电路等几部分组成[3]。工作原理如下:通过检测模块来检测电量,将测到的数据送给单片机,单片机再将数据进行一定的处理,转化为液晶可以显示的内容,当然这会在在编程中有很明显的体现,液晶显示也有他一定的规则特别是动态显示的方式.总体结构框图如图2—1所示.单片机单片机电压电流ADE7755LCD16824Eeprom串口选择端图2-1功率模块的整体结构2.2STC89C51RC介绍STC89C51RC/RD+系列单片机是宏晶科技推出的新一代超强抗干扰、强抗静电,高速、高可靠,低功耗的单片机,指令代码完全兼容传统8051单片机[4],12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。STC89C51RC具有4K的程序存储器,512字节的数据存储器,内置2K的E2PROM,支持ISP与IAP同时完全兼容C51指令与AT89C5X系列的引脚(40DIP封装兼容),功耗低,可使用高达48M的外部晶振,速度较普通12M晶振提高至少1/3。其引脚图与AT89C51类似。1、特点:(1)80C51核心处理器;(2)3V/SV工作电压,操作频率0~33MHz(STC89LE516AD最高可达90MHz);5V工作电压,操作频率0~40MHz;(3)大容量内部数据RAM:1K字节RAM(4)64/32/16/8kB片内Flash程序存储器,具有在应用可编程(IAP),在系统可编程(ISP),可实现远程软件升级,无需编程器;(5)支持12时钟(默认)或6时钟模式;(6)双DPTR数据指针;(7)PCA(可编程计数器阵列),具有PWM的捕获/比较功能;(8)4个8位I/O口,含3个高电流P1口,可直接驱动LED;(9)3个16位定时器/计数器;(10)可编程看门狗定时器(WDT);(11)兼容TTL和CMOS逻辑电平;(12)掉电检测和低功耗模式;(13)低EMI方式(ALE禁止);2、中断STC89C51RC共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0、1、2)和串行口中断.这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。IE也有一个总禁止位EA,它能控制所有中断的允许或禁止[5].3、定时器控制寄存器(TCON)该寄存器用于保存外部中断请求以及定时器的计数溢出。进行字节操作时,寄存器地址为操时,各位的地址为88H~8FH.寄存器的内容及位地址表示如表2-1下:表2—1定时器控制寄存器位地址表位地址8FH8EH8DH8CH8BH8AH89H88H位符号TF1TR1TF0TR0IE1IT1IE0IT0当计数器产生计数溢出时,相应的溢出标志位由硬件置“1”.当转向中断服务时,再由硬件自动清“0”。计数溢出标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用.4、串行口控制寄存器(SCON)进行字节操作时,寄存器地址为98H.按位操作时,各位的地址为98H~9FH.寄存器的内容及位地址表示如毕表2-2下:
表2—2串行口控制寄存器位地址表位地址9FH9EH9DH9CH9BH9AH99H98H位符号SM0SM1SM2RENTB8RB8TIRI当接收完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0"。串行中断请求由TI和RI的逻辑或得到。就是说,无论是发送标志还是接收标志,都会产生串行中断请求。5、编程方法编程前,先设置好地址、数据及控制信号,STC89C51RC编程方法如下:(1)在地址线上加上要编程单元的地址信号。(2)在数据线上加上要写入的数据字节。(3)激活相应的控制信号。(4)在高电压编程方式时,将EA/Vpp端加上+12V编程电压。(5)每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲.每个字节写入周期是自身定时的,通常约为1。5ms。重复1—5步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。芯片擦除:利用控制信号的正确组合并保持ALE/PROG引脚10mS的低电平脉冲宽度即可将PEROM阵列(4k字节)和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入“1”,这步骤需再编程之前进行。读片内签名字节:STC89C52单片机内有3个签名字节,地址为030H、031H和032H。用于声明该器件的厂商、型号和编程电压。读AT89C52签名字节需将P3.6和P3。7置逻辑低电平,读签名字节的过程和单元030H、031H及032H的正常校验相仿,只返回值意义如下:(030H)=1EH声明产品由STC公司制造。(031H)=51H声明为STC89C51RC单片机。(032H)=FFH声明为12V编程电压。(032H)=05H声明为5V编程电压。2。3液晶显示部分2。3。1LCD16824概述LCD16824是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面.可以显示8×4行16×16点阵的汉字。也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块[6]。
本功率模块采用的是16824字符型LCD,16824通常有20条引脚线,其中的2条线是背光电源线.引脚如下表2—3所示:表2-3串行接口管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7——DB0为显示数据RS=“L”,表示DB7-—DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7-—DB0R/W=“L",E=“H→L”,DB7——DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接.*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。2.3。2软件说明指令表表2-4软件说明指令表指令名称控制信号控制代码RSR/WD7D6D5D4D3D2D1D0显示开关设置000011111D显示起始行设置0011L5L4L3L2L1L0页面地址设置0010111P2P1P0列地址设置0001C5C4C3C2C1C0读取状态字01BUSY0ON/OFFRESET0000写显示数据10数据读显示数据11数据详细解释各个指令功能1、读状态字格式BUSY0ON/OFFRESET0000状态字是MPU了解LCM(液晶显示模块)当前状态,或LCM向MPU提供其内部状态的唯一的信息渠道.BUSY表示当前LCM接口控制电路运行状态。BUSY=1表示LCM正在处理MPU发过来的指令或数据.此时接口电路被封锁,不能接受除读状态字以外的任何操作.BUSY=0表示LCM接口控制电路已外于“准备好”状态,等待MPU的访问。ON/OFF表示当前的显示状态。ON/OFF=1表示关显示状态,ON/OFF=0表示开显示状态。RESET表示当前LCM的工作状态,即反映/RES端的电平状态.当/RES为低电平状态时,LCM处于复位工作状态,标志位RESET=1.当/REST为高电平状态时,LCM为正常工作状态,标志位RESET=0。在指令设置和数据读写时要注意状态字中的BUSY标志。只有在BUSY=0时,MPU对LCM的操作才能有效。因此MPU在每次对LCM操作之前,都要读出状态字判断BUSY是否为“0”.若不为“0”,则MPU需要等待,直至BUSY=0为止。2、显示开关设置格式0011111D该指令设置显示开/关触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示屏上的显示状态.D位为显示开/关的控制位.当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中ON/OFF=0。当D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中ON/OFF=1。3、显示起始行设置格式11L5L4L3L2L1L0该指令设置了显示起始行寄存器的内容。LCM通过CS的选择分别具有64行显示的管理能力,该指令中L5~L0为显示起始行的地址,取值在0~3FH(1~64行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果【10】。4、列地址设置格式01C5C4C3C2C1C0该指令设置了Y地址数计数器的内容,LCM通过CS的选择分别具有64列显示的管理能力,C5~C0=0~3FH(1~64)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行.Y地址计数器具有自动加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次.页面地址的设置和列地址的设置将显示存储器单元唯一地确定下来,为后来的显示数据的读/写作了地址的选通.5、写显示数据格式数据该操作将8位数据写入先前已确定的显示存储器的单元内.操作完成后列地址计数器自动加一。2。4功率测量模块ADE7755计量模块由高精度专用电能计量芯片ADE7755是美国模拟器件公司(ADI)生产的一种高准确度电能测量集成电路.它的内部只有模/数转换电路和基准电源是用模拟电路,其它的信号处理都使用数字电路,这使得ADE7755在恶劣的环境下仍能保持极高的准确度和长期的稳定性,具有优良的温度和时间稳定性,其技术指标超过了IEC1036规定的准确度要求,能适应各种环境要求,为电能表的质量提供了保证[7]。ADE7755的输入为电流和电压信号,输出为与有功功率成正比频率信号,其内部组成主要由可编程放大器、电源监控电路、基准电路、模/数转换电路(ADC)、相位校正网络、乘法器、高通滤波(HPF)、低通滤波(LPF)、数字-频率转换器等组成,其内部原理框图如图2—3所示。D/FD/F转换器F2F1F2ADCADCV1PV1NV2PV2NREVPLPFHFF图2—3AD7755内部原理框图图中,由V1P,V1N组成的电流通道输入电流信号,由V2P和V2N组成的电压通道输入电压信号,其中电流通道经过可变增益放大器PGA,用户可方便地根据需要调整增益为1,2,8或16.两信号进入模/数转换电路ADC转换成数字信号,这两个ADC都是16为二阶∑—Δ模数转换器,其过采样速率达900kHz。由于电流互感器中可能有直流信号,需经高通滤波滤去直流成分后送乘法器,与ADC送来的电压信号相乘得瞬时功率信号.有功功率是从瞬时功率信号推到计算出来的,瞬时功率信号时用电流和电压信号直接相乘得到的。为了得到有功功率分量(即直流分量),只要对瞬时功率信号进行低通滤波就可以了[8]。2。5RS-232接口电路数据通信方式主要有并行数据通信与串行数据通信两种。考虑到串行数据通信只需要一对数据传送线进行信息的传送,所需传输线条数极少,传送成本较低,特别适用于分级、分层和分布式控制系统以及远距离通信之中,故本设计选择串行数据通信。RS—232接口电路是最常用的接口之一,缺点是只能用于短距离的数据通信。但这已经能够满足我们的设计要求了,所以在此我们选用了RS-232接口做为与上位机的通讯电路[10].Maxim公司专门为上位机设计的RS-232标准串口的接口电路,使用+5V电源供电。RS-232是一种把电脑的串行口信号电平(-10~+10V)转换为单片所用到的TTL信号电平(0~+5V)芯片。图2—6RS—232接口电路第3章软件设计3.1软件的设计思路3.1。1软件设计需求在研制单片机应用系统时,汇编语言是一种常用的软件工具,它能直接操作硬件,指令的执行速度快。但其指令系统的固有格式受硬件结构的限制很大,难以编写与调试,可移植行也差。随着单片机性能的提高,工作速度越来越快,因此在编写单片机应用系统程序时,更着重于程序本事的编写效率。所以C51已成为目前最流行的开发单片机的软件工具。与汇编语言相比,C51在功能、结构、可读性、可维护性上有明显的优势,因而易学易用.另外,使用C51可以缩短开发周期,降低开发成本,可靠行高,可移植性好[11]。3.1.2软件设计思想功率测量模块软件设计主要由主程序,外部中断子程序,电量脉冲计算程序及显示子程序组成。C语言程序有利于实现较复杂的算法,功率测量模块有较复杂的计算(计算模块的功率),所以程序采用C语言编写.运用KeilC51软件环境编写,KeilC51是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具uVision2.uVision2全Windows界面,只要看一下编译后生成的编译代码,就能体会到KeilC51生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解,在开发大型软件时更能体现高级语言的优势[12]。3。2系统的软件构成整个系统的软件主要包括主程序,系统初始化、电量脉冲计算、电量转化、LCD显示、数据保存等功能子程序,通过主程序直接或通过中断的方式调用子程序,实现系统整体功能.主程序框图如图3-1所示。该电能表的工作原理还是要根据电能表的三大模块来进行说明,其中最重要的还是测量模块,也就是ADE7755如何测测量电量的,以及它和单片机的连线。AD7755程序AD7755程序单片机主题程序LCD16824程序其他程序通信子程序图3—1系统的软件构成软件是整个控制系统设计的核心,它具有充分的灵活性,可以根据系统的要求而变化.在硬件结构一定的情况下,只要改变软件就能实现一些不同的功能。单片机所具有的智能功能要由软件来完成.在本设计中[13],软件结构采用模块化设计方法,将数字电能表所要完成的功能分别编写和调试。所有模块调试成功以后,将各个模块连接构成单片机软件系统。这样的设计有利于程序代码的优化,而且便于设计、调试和维护.3。2.1主程序主程序流程图如下图3-2所示.主程序首先对系统环境初始化,设置定时器T1工作模式为16位的定时计数器模式,置位总中断允许位EA并给显示端口P0和P2清0。然后调用超声波发生子程序送出一个超声波脉冲。由于采用12MHz的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(对脉冲计数)按下式计算即可测得被测量模块的电能,一个周期内消耗的电能为:电能=平均功率×积分时间=脉冲个数(3—1)测出电能后结果将以十进制BCD码方式送往LCD显示。初始化LCD初始化LCD开机界面初始化定时器显示各路功率开始图3—2主程序流程图3。2。2LCD显示程序设计在STC89C51RC单片机中,液晶驱动作为一个外围模块集成于片内,极大的简化了液晶显示部分的接口设计,只要选择合适的液晶显示器,采用合适的驱动方式即可完成数据的显示.主程序一开始运行则设置堆栈起始地址为00H,设置寄存器,首先系统进入主函数进行初始化.包括LCD16824进行一次清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符.通过上一章节对LCD16824介绍可知,只要将01H送到数据总线,使RS=0,R/W=0,E有个下降沿的脉冲就可以完成清屏工作。用指令实现送到数据DB7-DB0,调用子程序ENABLE,由于下降沿时,内部数据要送到RAM区,所以要有一个延时子程序,使这个下降沿持续2.5毫秒。内部RAM有指令代码后就开始对RAM进行清零,所以屏幕原有的字符将被清除[14]。接着对16824行功能的设定。按表3-2来看是设定显示器按4行显示,每行8位,5×7点阵。LCD显示程序流程图如3—3所示:设置行设置行写数据设置面设置页忙?读忙YN开始图3-3LCD显示程序流程图3。2。3ADE7755与单片机程序设计ADE7755与微控制器(MCU)接口最简单的方法是使用CF高频输出,输出频率设定2048(F1,F2,这要求设置SCF=0和S0=S1=1).当模拟输入端加入有满度交流信号时,CF输出频率高达5。5KHZ左右。示出的方案能把输出频率数字化,并且完成前面提到的平均作用.其设计框图如图3—4所示,计数器0如图3—5所示,定时器1如图3—6所示设AD设ADE7755采样时间时间是否到测量AD7755脉冲数转化为电能值返回主程序NY是否超限NY开始图3-4ADE7755程序流程图ADE7755初始化程序如下:/******ADE7755初始化*********/voidInit7755(){ G0=0; G1=0;//增益=1,最大差动信号=470mv}/******定时器/计数器初始化********/voidInitTimer(){ TMOD=0x15;//00010101设置方式1,计数器0,定时器1 TH1=0x3c;//定时初值装载,50ms TL1=0xb0; TCON=0X51;//01010001计数器0下降沿触发 IE=0X89;//10001001开总中断、外部中断0、定时中断1}外部中断了?对脉冲外部中断了?对脉冲计数YN初始化2秒到了?读取计数值换通道YN初始化图3—5计数器0流程图3—6定时器1流程终端服务子程序如下:/*******终端服务子程序******/voidInt0()interrupt0using1{ N++;//计数脉冲数 }voidTimer1()interrupt3using2{ TH1=0x3c;//定时初值重装,50ms TL1=0xb0; M++; if(M==40)//计时2秒到了? { temp=N;//读取2秒内脉冲数 N=0;//清零 M=0; Fq=temp/2+(temp%2);//计算频率 tab_pow[c]=Fq;//保存各路功率值 c++; if(c==8) c=0; CH=(0x01〈<c); } } 第4章系统调试及总结4。1软件调试当硬件制作完成后,软件制作也是不可轻视的部分,是实现电路的功能的关键部分,通过本次毕业设计,总结经验如下:1、先进行人工检查。写好程序后,不要立刻烧入单片机,先对纸面上的程序进行人工检查。由于采用C语言编程,所以要特别小心地检查语法错误,如括号不配对,漏写分号等,通过仔细的检查,发现并排除这些错误。2、人工检查无误后,上机调试.在编译时给出的语法错误的信息,根据提示的信息具体找出程序中错误之处并改之,从上至下逐一改正。应当注意的是:有的提示出错行并不是真正出错的行,如果在提示出错的行上找不到错误的话,则应该到上行再找。3、当确认程序无语法错误和逻辑错误时,通过直接下载到单片机来调试。采用的是自下到上的调试方法,即单独调好每一个模块,然后再连接成一个完整的系统调试。4、程序烧入单片机后,观察各个部件的工作是否正常,功能是否实现。如不能正常工作,则继续检查程序中的相应模块,必要时从上到下重新检查程序[15]。4.1.1软件调试硬件电路制作完成并调整检查好以后,接下就是软件的设计调试。在keil_uVision2软件中编写并运行调试程序,直至运行成功自动生成后缀名为。hex的文件。图4-1为程序在keil_uVision2软件中的编写界面。图4—1程序在keil_uVision3软件中的编写界面KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2IDE可为它们提供单一而灵活的开发环境。uVision2包含一个器件数据库(devicedatabase),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求[16]。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extradatapointer)或者加速器(mathaccelerator)的特性。4。1.2软件烧录程序运行成功之后[17],将。hex的文件通过STC-ISP烧录软件下载到单片机运行。STC-ISP烧录软件的特点是将程序源代码下载进单片机内部,而不用编译器。下图4—2为烧录的界面。图4—2STC-ISP烧录界面本次设计采用STC—ISPVer2.0B。PCB演示板作为编程工具,它可以完成下载/烧录用户程序的功能.需要注意的是,要先点击Download/下载,再打开电源,因为需要冷启动才运行系统ISP程序。图4-3为STC—ISPVer2.0B.PCB演示板。图4—3STC—ISPVer2。0B.PCB演示板4。2Proteus软件仿真初始化仿真测试如图4—4所示[18]:图4-4初始化仿真测试工作中仿真测试4—5所示:图4-5工作中仿真测试4.3软件硬件联合调试1、静态检查根据硬件电路图核对元器件的型号、规格、极性、集成芯片的插接方向是否正确。用逻辑笔、万用表等工具检查硬件电路连线是否与电路图一致,有无短路、虚焊等现象。严防电源短路和极性接反。检查数据总线、地址线和控制总线是否存在短路的故障。2、通电检查通电检查时,可以模拟各种输入信号分别送入电路的各有关部分,观察I/O口的动作情况,查看电路板上有无元件过热、冒烟、异味等现象,各相关设备的动作是否符合要求,整个系统的功能是否符合要求。3、联合调试硬件和软件调试完成之后,应进行系统调试。在系统调试时,应将全部硬件电路都接上,应用程序模块、子程序也都组合好,进行全系统软、硬件调试,系统调试的任务是排除软、硬件中的残留错误,使整个系统能够完成预定的工作任务,达到要求的性能指标。在进行系统调试时,对于有电气控制负载的系统,应先试验空载,空载正常后再试验负载情况.要试验系统的各项功能,避免遗漏.系统调试成功之后,就可以将程序固化到ROM中,程序固化可以在有些仿真系统中进行,最好用专用程序固化器进行固化操作,因为它的功能完善,使用方便、可靠.将固化好程序的ROM插回到应用系统电路板的相应位置,即可脱机运行。系统试运行要连续运行相当长的时间,以考验其稳定性。并要进一步进行修改和完善处理。一般地,经开发装置调试合格的软、硬件,脱机后应正常运行.但由于开发调试环境与应用系统的实际运行环境不尽相同,也会出现脱机后不能正常运行的情况。当出现脱机运行故障时,应考虑程序固化有无错误;仿真系统与实际系统在运行时,有无某些方面的区别(如驱动能力);在联机仿真调试时,未涉及的电路部分有无错误,硬件实物图如图4-6所示:图4—6硬件实物图4。4本章总结本章叙述了系统的软件设计,包括主程序的设计首先对系统环境初始化,经过反复修改,程序运行基本正常,我的设计已能实现功率测量模块的基本功能,并在LCD上显示实际的功率.但在某些提高测量功率的精度方面、环境影响、某些功能设计构想还没有完整的表达出来.调试过程中遇到的问题及解决方法总结如下:1、提示无asm文件编译时候提示:F:\。.\XX。asmFilehasbeenchangedoutsidetheeditorreload?解决方法:重新生成项目,产生examl1.asm即可。2、再进入Keil的调试环境以后,发现程序有错解决方法:将光标定位于需要修改的程序上,用菜单,DebugInlineAssambly…即可出现对话框,3、EnterNew后面的编辑框内直接输入需要修改的程序语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不在需要修改,可以点击右上角的关闭按钮关闭窗口。输入程序时,有中文标点,用Keil编译时出现错误解决方法:程序里有带中文标点,用英文重输入一遍4、汇编出现数字,字母混淆解决方法:字母“O”和数字“0”.主要错在这里。注意细节!当然由于时间和精力等多方面的原因,此功率模块多少还存在一些不足之处,有待进一步改进和提高.参考文献[1]赵林。单片机基础[M].北京:科学出版社,2008。[2]李全利。单片机原理及接口技术[M]。北京:高等教出版社,2004.[3]严天峰.单片机应用系统设计与仿真调试[J]。北京航空航天大学出版社,2005,20(4):40-42.[4]Bernd-MarkusPfeiffer.Astudyofoperatoreffectsonultrasonicmeasuresoffatdepthandlongissimusmuscleareaincattle[J].InformationSystemsandTechnologies,KORUS2002,28(4):169-173.[5]AnthonyCollins.ACostWatt—hourEnergyMeterBasedontheAD7755(AN559)[M].ADIInc,2003[6]兰吉昌.51单片机应用设计百例[M]。北京:化学工业出版社,2009.[7]陈新扩,鲍鸿,陈宇翔.AD7755的测量原理与应用[J]。广东工业大学学报(自然版),2002,19(4):30-33.[8]陈霞.利用AD7755实现电能有功功率的测量[J].山东理工大学学报(自然科学版),2004,18(5):68-72.[9]张洪润,孙悦,张亚凡。单片应用及应用[M]。北京:清华大学出版社,2008。[10]周坚.单片机C语言程序设计[M]。北京:北京航空航天大学出版社,2007。赵林.单片机基础[M]。北京:科学出版社,2008.[11]吴金戌。8051单片机实践与应用[M].北京:清华大学出版社,2003年.[12]李朝青。PC机及单片机数据通信技术[M].北京:航空航天大学出版社,2000.[13]江志红。51单片机技术与应用系统开发案例精选[M].北京:清华大学出版社,2008.[14]田明光.单片机与可编程控制器[M].山东:山东科学技术出版社,2006.[15]胡汉才。单片机原理及其接口技术[M]。北京:清华大学出版社,2004.[16]王为青,程国刚.单片机keilc51应用开发技术[M]。北京:人民邮电出版社,2007.[17]赵文博,刘文涛.单片机语言C51程序设计[M].北京:人民邮电出版社,2005.[18]周润景,张丽娜,刘映群.PROTEUS入门实用教程[M].北京:机械工业出版2007.致谢撰写毕业论文是大学生完成学业的最后一个学习任务,撰写毕业论文的目的在于总结专业理论学习的成果,考核毕业生观察问题、分析问题和解决问题的能力.同时,这也是对我大学四年以来学习的检验和总结.经过这次设计,自身的实践能力和职业素质都得到了显著的提高。这其中也凝结了很多他人的心血,没有他们的帮助,我将无法顺利完成这次设计,在此对他们表示衷心的感谢。首先,感谢四年来江苏技术师范学院的领导对我的关怀和培养,感谢老师们四年内对我的学习和生活上的帮助指导,这对我的成长起到了至关重要的作用。再次,感谢这次课题设计的指导老师罗老师,在做设计的过程中罗老师和我一块分析课题,查阅相关资料,共同讨论制作具体的设计方案;并且在遇到难题时细心的分析问题,帮我解决问题;在做设计的后期又对我的设计作了认真的批改,提出了许多细小的问题。总之,在这里我真心的感激,感谢曾经帮助指导帮助过我的老师和同学附录1系统原理图附录2源程序代码/*********************** AD7755功率计 12M晶振 1T************************/#include〈reg52。h〉#include”12864LCD.h”#include"code.h”#defineCHP0//继电器通道选择sbitREVP=P1^0;sbitG0=P1^4;//通道1增益选择sbitG1=P1^5;sbitF1=P1^6;//有功功率输出sbitF2=P1^7;uintN=0;//脉冲计数值uintM=0;//T1中断计数值uinttemp=0;//2秒内脉冲数uintFq=0;//CF频率uinttab_pow[8];//8路功率ucharc=0;//sbitCF=P1^3;/******AD7755初始化*********/voidInit7755(){ G0=0; G1=0;//增益=1,最大差动信号=470mv}/******定时器/计数器初始化********/voidInitTimer(){ TMOD=0x15;//00010101设置方式1,计数器0,定时器1 TH1=0x3c;//定时初值装载,50ms TL1=0xb0; TCON=0X51;//01010001计数器0下降沿触发 IE=0X89;//10001001开总中断、外部中断0、定时中断1}/**********显示函数***********/voiddisp_power(uchari)//显示第i路功率,1<=i<=8{ ucharj,k; uintge,shi,bai,qian; switch(i) { case1:j=1;k=0; break; case2:j=1;k=2; break; case3:j=1;k=4; break; case4:j=1;k=6; break; case5:j=2;k=0; break; case6:j=2;k=2; break; case7:j=2;k=4; break; case8:j=2;k=6; break; default: break; } qian=tab_pow[i—1]/1000; bai=(tab_pow[i—1]%1000)/100; shi=((tab_pow[i—1]%1000)%100)/10; ge=((tab_pow[i-1]%1000)%100)%10; Display_FULL(j,k,0*16,(i+1));//选屏,页,列,字数 Display_HALF(j,k,3*8,qian); Display_HALF(j,k,4*8,bai); Display_HALF(j,k,5*8,shi); Display_HALF(j,k,6*8,ge); }/******主函数**********/voidmain(){ uchari; CH=0XFF;//关闭所有通道 InitLCD(); Display_PIC(&tab_start[0]);//开机画面 delay();//延时5s ClearScreen(0); CH=0X01;//打开通道1 InitTimer();//初始化定时器 while(1) { for(i=1;i<=8;i++) { disp_power(i); } }}/*******终端服务子程序******/voidInt0()interrupt0using1{ N++;//计数脉冲数 }voidTimer1()interrupt3using2{ TH1=0x3c;//定时初值重装,50ms TL1=0xb0; M++; if(M==40)//计时2秒到了? { temp=N;//读取2秒内脉冲数 N=0;//清零 M=0; Fq=temp/2+(temp%2);//计算频率 tab_pow[c]=Fq;//保存各路功率值 c++; if(c==8) c=0; CH=(0x01<〈c); } }#ifndef_12864LCD_H_#define_12864LCD_H_#include〈reg52。h〉#include〈intrins。h>#include"code.h"#defineuintunsignedint#defineucharunsignedchar/*******************************LCD接口定义*******************************/#defineDATAP2//LCD12864数据线sbitRST=P3^7;//复位,0有效sbitRS=P1^3;//数据\指令选择sbitRW=P3^3;//读\写选择sbitEN=P3^4;//读\写使能sbitcs1=P3^5;//片选1sbitcs2=P3^6;//片选2/*******************************延时函数*******************************/voiddelayms(){ unsignedchara,b,c;for(c=1;c>0;c--)for(b=142;b>0;b—-)for(a=2;a>0;a-—);}/*******************************测忙函数*******************************/voidCheckBusy() {uchardat;//状态信息(判断是否忙)RS=0;//数据\指令选择,D/I(RS)=“L”,表示DB7∽DB0为显示指令数据RW=1;//R/W=“H”,E=“H”数据被读到DB7∽DB0do{DATA=0x00;EN=1; //EN下降源 _nop_();//一个时钟延时 dat=DATA;EN=0;dat=0x80&dat;//仅当第7位为0时才可操作(判别busy信号)}while(!(dat==0X00));}/*******************************写命令*******************************/voidWrite_COM(ucharcom){CheckBusy();//状态检查,LCD是否忙RS=0; //向LCD发送命令。RS=0写指令,RS=1写数据RW=0;//R/W=“L”,E=“H→L”数据被写到IR或DR//_nop_();DATA=com; //com:命令//delayms();EN=1;//EN下降源_nop_();EN=0;//delayms();}/*******************************写显示数据*******************************/voidWrite_DAT(uchardat) {CheckBusy();//状态检查,LCD是否忙RS=1;//RS=0写指令,RS=1写数据RW=0;//R/W=“L",E=“H→L”数据被写到IR或DR//_nop_();DATA=dat;//dat:显示数据//delayms();EN=1;//EN下降源_nop_();EN=0;//delayms();}/*******************************设置页*******************************/voidSet_PAGE(ucharpage) {page=0xb8|page;//10111xxx0<=page<=7设定页地址-—X0—7,8行为一页64/8=8,共8页Write_COM(page);}/*******************************设置行*******************************/voidSet_LINE(ucharstartline) {startline=0xc0|startline;//11000000Write_COM(startline);//设置从哪行开始:0--63,一般从0行开始显示}/*******************************设置列*******************************/voidSet_COLUMN(ucharcolumn) {column=column&0x3f;//column最大值为64,越出0=〈column<=63column=0x40|column;//01xxxxxxWrite_COM(column);}/*******************************设置显示开关*******************************/voidDisp_SW(ucharsw) { sw=0x3e|sw;//0011111x,sw只能为0或者1 Write_COM(sw);}/******************************* 选择屏幕 screen:0—全屏,1-左屏,2-右屏*******************************/voidSelectScreen(ucharscreen) { switch(screen)//仿真时CS1,CS2低电平有效,实际使用时高电平有效{case0:cs1=0;//全屏_nop_();_nop_();_nop_();cs2=0;_nop_();_nop_();_nop_();break;case1:cs1=0;//左屏_nop_();_nop_();_nop_();cs2=1;_nop_();_nop_();_nop_();break;case2:cs1=1;//右屏_nop_();_nop_();_nop_();cs2=0;_nop_();_nop_();_nop_();break;}}/******************************* 清屏 screen:0—全屏,1—左屏,2-右屏*******************************/voidClearScreen(ucharscreen) { uchari,j;SelectScreen(screen); for(i=0;i〈8;i++) //控制页数0-7,共8页 { Set_PAGE(i); Set_COLUMN(0);for(j=0;j〈64;j++) //控制列数0-63,共64列 {Write_DAT(0x00);//写点内容,列地址自动加1}} }/*******************************初始化LCD*******************************/voidInitLCD() { RST=0;//复位 _nop_(); _nop_(); RST=1; _nop_(); _nop_(); CheckBusy(); SelectScreen(0); Disp_SW(0);//关显示 SelectScreen(0); Disp_SW(1);//开显示 SelectScreen(0); ClearScreen(0);//清屏 Set_LINE(0);//开始行:0}/*******************************显示函数*******************************//*显示全角汉字*/voidDisplay_FULL(ucharss,ucharpage,ucharcolumn,ucharnumber){ inti; //选屏参数,page选页参数,column选列参数,number选第几汉字输出 SelectScreen(ss); column=column&0x3f; Set_PAGE(page); //写上半页 Set_COLUMN(column);//控制列 for(i=0;i〈16;i++)//控制16列的数据输出 { Write_DAT(Hzk[i+32*number]);//i+32*number汉字的前16个数据输出 } Set_PAGE(page+1); //写下半页 Set_COLUMN(column); //控制列for(i=0;i<16;i++) //控制16列的数据输出 { Write_DAT(Hzk[i+32*number+16]); //i+32*number+16汉字的后16个数据输出 }}/*显示半角汉字和数字和字母*/voidDisplay_HALF(ucharss,ucharpage,ucharcolumn,ucharnumber){ uinti;//选屏参数,page选页参数,column选列参数,number选第几汉字输出 SelectScreen(ss); column=column&0x3f; Set_PAGE(page); //写上半页 Set_COLUMN(column); for(i=0;i<8;i++) { Write_DAT(Ezk[i+16*number]); } Set_PAGE(page+1); //写下半页 Set_COLUMN(column); for(i=0;i<8;i++) { Write_DAT(Ezk[i+16*number+8]); }}/*************************************** 显示128*64的图片 纵向取模,字节倒序***************************************/voidDisplay_PIC(uchar*p)//通过指针引用数组{ uinti,j;SelectScreen(1);//左屏 for(i=0;i〈8;i++) //控制页数0—7,共8页 { Set_PAGE(i); Set_COLUMN(0);for(j=(i*128);j<((i*128)+64);j++) //控制列数0—63,共64列 {Write_DAT(*(p+j));//写内容,列地址自动加1}} SelectScreen(2);//右屏 for(i=0;i<8;i++) //控制页数0-7,共8页 { Set_PAGE(i); Set_COLUMN(0);for(j=((i*128)+64);j<((i+1)*128);j++) //控制列数0—63,共64列 {Write_DAT(*(p+j));//写内容,列地址自动加1}} }#endif#ifndef_CODE_H_#define_CODE_H_#include〈intrins。h〉#defineuintunsignedint#defineucharunsignedchar/*******延时5S**********/voiddelay(void)//误差0us{unsignedchara,b,c;for(c=165;c〉0;c—-)for(b=100;b〉0;b--)for(a=150;a〉0;a-—);_nop_();//ifKeil,requireuseintrins.h_nop_();//ifKeil,requireuseintrins.h}/*******字库******///半角字库ucharcodeEzk[]={/*——文字:0—-*//*--楷体12;此字体下对应的点阵为:宽x高=8x16--*/0xE0,0xF8,0xF8,0x18,0x18,0xF8,0xF0,0x00,0x0F,0x1F,0x3F,0x30,0x30,0x3F,0x1F,0x00,/*-—文字:1--*//*-—楷体12;此字体下对应的点阵为:宽x高=8x16--*/0x00,0x20,0x30,0xF8,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x00,0x00,/*—-文字:2——*//*--楷体12;此字体下对应的点阵为:宽x高=8x16-—*/0x30,0x38,0x38,0x08,0x98,0xF8,0xF8,0x00,0x30,0x38,0x3C,0x3E,0x37,0x33,0x31,0x00,/*——文字:3--*//*—-楷体12;此字体下对应的点阵为:宽x高=8x16--*/0x30,0x38,0x38,0x88,0x88,0xF8,0xF8,0x00,0x08,0x18,0x38,0x31,0x31,0x3F,0x1F,0x04,/*—-文字:4—-*//*—-楷体12;此字体下对应的点阵为:宽x高=8x16—-*/0x00,0x80,0xC0,0xF0,0xF8,0xF8,0xF8,0x00,0x06,0x07,0x07,0x04,0x3F,0x3F,0x3F,0x00,/*—-文字:5—-*//*--楷体12;此字体下对应的点阵为:宽x高=8x16—-*/0xE0,0xF8,0xF8,0xC8,0xC8,0x88,0x88,0x00,0x19,0x39,0x30,0x20,0x30,0x3F,0x1F,0x00,/*——文字:6——*//*——楷体12;此字体下对应的点阵为:宽x高=8x16——*/0x00,0xC0,0xE0,0xF8,0xB8,0x98,0x80,0x00,0x1F,0x1F,0x3F,0x30,0x30,0x3F,0x1F,0x00,/*—-文字:7——*//*--楷体12;此字体下对应的点阵为:宽x高=8x16-—*/0x08,0x08,0x08,0x08,0xC8,0xF8,0x78,0x00,0x00,0x20,0x3C,0x3F,0x1F,0x01,0x00,0x00,/*——文字:8—-*//*——楷体12;此字体下对应的点阵为:宽x高=8x16-—*/0x70,0xF8,0xF8,0x88,0x98,0xF8,0xF8,0x00,0x1E,0x3F,0x3B,0x31,0x31,0x3F,0x1F,0x00,/*-—文字:9—-*//*--楷体12;此字体下对应的点阵为:宽x高=8x16--*/0xF0,0xF8,0xB8,0x08,0x18,0xF8,0xF8,0xE0,0x01,0x23,0x33,0x3F,0x1F,0x07,0x03,0x00,};//汉字库ucharcodeHzk[]={/*-—文字:负--*//*--楷体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x00,0x00,0x00,0xE0,0xF8,0xDE,0x6E,0x7E,0x78,0xE8,0xE8,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x4F,0x6F,0x71,0x3F,0x1F,0x31,0x7F,0x6F,0x40,0x00,0x00,0x00,/*—-文字:载——*//*——楷体12;此字体下对应的点阵为:宽x高=16x16--*/0x40,0x40,0x40,0x50,0xD0,0xFC,0xFC,0xBC,0xBE,0xFE,0xE4,0xA4,0xAC,0x88,0x00,0x00,0x00,0x00,0x15,0x17,0x1F,0x7F,0x7F,0x6A,0x3A,0x1F,0x1F,0x3F,0x71,0x70,0x70,0x00,/*——文字:一--*//*-—楷体12;此字体下对应的点阵为:宽x高=16x16—-*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x00,/*--文字:二——*//*-—楷体12;此字体下对应的点阵为:宽x高=16x16—-*/0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x30,0x30,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0C,0x0C,0x0C,0x0C,0x00,/*--文字:三--*//*--楷体12;此字体下对应的点阵为:宽x高=16x16—-*/0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x98,0x98,0x88,0x98,0x10,0x00,0x00,0x00,0x20,0x30,0x30,0x10,0x11,0x11,0x11,0x11,0x11,0x10,0x19,0x19,0x18,0x18,0x18,0x00,/*—-文字:四—-*//*--楷体12;此字体下对应的点阵为:宽x高=16x16-—*/0x00,0x20,0xE0,0xE0,0x20,0xF0,0xF0,0x30,0xF0,0xF0,0x10,0x18,0xF8,0xF0,0x70,0x00,0x00,0x00,0x07,0x0F,0x0F,0x0B,0x08,0x08,0x0D,0x0D,0x0D,0x1F,0x1F,0x0F,0x00,0x00,/*——文字:五-—*//*--楷体12;此字体下对应的点阵为:宽x高=16x16-—*/0x00,0x00,0x00,0x00,0x10,0x10,0xF0,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x00,0x20,0x20,0x20,0x21,0x31,0x3F,0x1F,0x17,0x11,0x1F,0x1F,0x13,0x10,0x10,0x30,0x00,/*-—文字:六-—*//*-—楷体12;此字体下对应的点阵为:宽x高=16x16—-*/0x00,0x80,0x80,0x80,0x80,0x80,0x88,0x98,0x98,0xD0,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,0x00,0x20,0x30,0x1C,0x0E,0x06,0x04,0x00,0x06,0x0E,0x1C,0x18,0x10,0x00,0x00,/*—-文字:七——*//*--楷体12;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x00,0x00,0x00,0x00,0x1C,0xFC,0xF8,0xC0,0xC0,0x40,0x60,0x60,0x60,0x40,0x00,0x00,0x02,0x02,0x03,0x01,0x01,0x1F,0x1F,0x10,0x10,0x10,0x10,0x18,0x1C,0x1C,0x00,/*--文字:八-—*//*--楷体12;此字体下对应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 昆明学院《现代办公技能训练A》2023-2024学年第二学期期末试卷
- 2025年非接触温度计项目合作计划书
- 苏州城市学院《场景特效》2023-2024学年第二学期期末试卷
- 喷枪及类似器具项目效益评估报告
- 全国川教版信息技术八年级上册第9课《编辑工作表》教学设计
- 桂林师范高等专科学校《数字绘画技术》2023-2024学年第二学期期末试卷
- 农村打井简易合同范本
- 扬州大学《展具设计》2023-2024学年第二学期期末试卷
- 上海立达学院《食品营养与卫生管理》2023-2024学年第二学期期末试卷
- 河南2024年河南信阳师范大学招聘专职辅导员30人笔试历年参考题库附带答案详解
- 中考英语高频单词专项训练题配套答案
- 火龙罐疗法经典课件
- 应用写作(第六版) 课件 第1-4章 应用写作概述-行政事务应用文
- 核岛通风系统介绍
- 我见证改革开放三十年课件
- xxxx智能化工程施工进度计划表
- 供应商来料包装运输存储规范
- 搭桥术后护理查房
- 人工智能概论PPT全套完整教学课件
- 第一章-运动选材概述课件
- 藏式建筑简介优质课件
评论
0/150
提交评论