智能仪表设计实时日历时钟显示系统毕业论文.doc_第1页
智能仪表设计实时日历时钟显示系统毕业论文.doc_第2页
智能仪表设计实时日历时钟显示系统毕业论文.doc_第3页
智能仪表设计实时日历时钟显示系统毕业论文.doc_第4页
智能仪表设计实时日历时钟显示系统毕业论文.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

河 南 农 业 大 学智能仪器设计实习设 计 说 明 书题 目: 实时日历时钟显示系统 学 院: 理学院 专 业: 电子信息科学与技术 智 能 仪 器 设 计 实 习设 计 任 务 书题目 实时日历时钟显示系统的制作 主要内容、基本要求、主要参考资料等:主要内容:功能要求:完成实时日历时钟显示系统的制作1) 在51单片机系统中设置、获取、记录实时的日历时钟信息并通过LED显示或LCD显示。2) 能够进行长时间的记录,并且存储的时间信息在掉电情况下能长期保存。3) 初始的时间信息要求用户用键盘输入或通过PC机和单片机的串口通信来设置。上述内容为基本要求,可按照自己的理解增加功能使之更完善。基本要求:l 明确设计任务,复习与查阅有关资料。l 设计所用硬件芯片按给定使用。l 按要求对设计进行简要说明,总体设计方案,各部分的详细设计。l 写出体会和总结。要求全部使用A4纸打印稿,不少于5000字。主要参考资料:l 李朝青编单片机原理及接口技术(简明修订版)北京航空航天大学出版社,1998l 冯克MCS-51单片机实用子程序及其应用实例黑龙江科学技术出版社,1990l 杨欣荣等智能仪器原理、设计与发展中南大学出版社,2003l 孙传友等感测技术基础 电子工业出版社,2001l 王福瑞等单片微机测控系统设计大全北京航空航天大学出版社,1999l 科技期刊:单片机与嵌入式系统应用、实用测试技术、自动化仪表、传感器世界、测控技术、电子技术应用等2001年以后各期。完 成 期 限:2010年12月12日指导教师签名: 实时日历时钟显示系统一背景及意义(1) 数字电子钟的背景 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。 目前,单片机正朝着高性能和多品种的方向发展。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统的设计思想和设计方法,从前必须油模拟电路或数字电路实现的大部分功能都能用单片机通过软件的方法来实现。 单片机模块中最常见的就是数字钟,它与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的应用。(二)数字电子钟的意义 数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛应用于个人家庭、车站、办公室等公共场所,成为人们日常生活中的必需品。由于数字集成电路的发展,使得数字钟的的精度远远超过老式钟表。钟表的数字化给人们的生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。数字钟具有走时准、性能稳定、携带方便等优点,可适用于计时、自动报时及自动控制等各个领域。因此,研究数字钟及扩大其应用。有非常大的意义。二.系统分析(一)设计任务和要求1.在51单片机系统中设置、获取、记录实时的日历时钟信息并通过LED显示或LCD显示。2.能够进行长时间的记录,并且存储的时间信息在掉电情况下能长期保存。3.初始的时间信息要求用户用键盘输入或通过PC机和单片机的串口通信来设置。(二)设计方案 1.总电路原理方框图 电路原理图2. 基本工作原理 数字电子钟是一个将“ 时”、“分”、“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒。因此,一个基本的数字电子钟电路主要由秒信号发生器、“时、分、秒、星期”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号发生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。每累计24小时,发出一个“星期脉冲”信号,该信号将被送到“星期计数器”,“星期计数器” 采用7进制计时器,可实现对一周7天的累计。译码显示电路将“时”、“分”、“秒”、“星期”计数器的输出状态送到LCD显示译码器译码,通过LCD显示器显示出来。整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后去触发音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”、“星期”显示数字进行校对调整的。3. 主要器件功能分析 (1)主控制器AT89C51 AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。(2)时钟电路DS1302 DS1302可对秒、分、时、日、周、月以及年进行计数,拥有用于高速数据暂存的 318位RAM,具有最少引脚的串行I/O接口电路,2.55.5V时耗电小于300nA,有用于时钟或RAM数据读/写的 单字节或多字节(脉冲方式)数据传送方式,有简单的三线接口,具有可选的慢速充电(至Vcc1)能力。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月与月末的日期自动进行调整。时钟的运行可以采用24小时或带AM(上午)/PM(下午)的12小时格式。三.系统硬件设计(一) 最小系统设计 单片机的最小系统是由电源、复位、晶振、/EA=1组成,如下图:下面将具体介绍每一个组成部分:1. 电源引脚 Vcc 40 电源端 GND 接地端 正常工作电压为5V。2. 外接晶体引脚 晶振连接的内部、外部方式图XTAL1 19XTAL2 18XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端。使用外部振荡器时,外部晶振信号应直接加到 XTAL1上,而XTAL2悬空。使用内部方式时,时钟发生器对震荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。系统的时钟电路设计采用的是内部方式,即利用芯片内部的震荡电路。AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。复位 RST 9 在振荡器运行时,有两个机器周期(24个震荡周期)以上的高电平出现在此引脚时,将使单片机复位。只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片从ROM的00H处开始运行程序。复位电路通常采用上电自动复位和按钮复位两种方式,此电路采用的是上电与按钮复位电路。复位操作不会对内部RAM产生影响。常用的复位电路如下图所示:3. 输入输出引脚(1)P0端口(P0.0P0.7)是一个8位漏极开路型双向I/O端口,端口置1时作高阻抗输入端,作为输出口时能驱动8个TTL.。 (2)P1端口(P1.0P1.7)是一个带有内部上拉电阻的8位双向I/O端口,输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。 (3)P2端口(P2.0P2.7)是一个带有内部上拉电阻的8位双向I/O端口,输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。(4)P3端口(P3.0P3.7)是一个带有内部上拉电阻的8位双向I/O端口,输出时可驱动4个TTL。对内部Flash程序存储器编程时,接控制信息。除此之外,P3端口还用于一些专门功能,见下表:P3引脚兼用功能P3.0串行通讯输入RXDP3.1串行通讯输出TXDP3.2外部中断0 INT0P3.3外部中断1 INT1P3.4定时器0输入T0P3.5定时器1输入T1P3.6外部数据存储器写选通WRP3.7外部数据存储器读选通RD(2) 主要硬件介绍 1.AT89C51(1)AT89C51简介 AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。见下图: AT89C51外观图(2)AT89C51管脚分布及功能 AT89C51管脚图VCC:供电电压GND:接地 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,P2口输出其特殊功能寄存器的内容,P2口在FLASH编程和校验时接收高八位地址信号和控制信号P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入XTAL2:来自反向振荡器的输出(3) AT89C51的主要特性 *与MCS-51 兼容; *4K字节可编程闪烁存储器; *寿命:1000写/擦循环; *数据保留时间:10年; *全静态工作:0Hz-24MHz; *三级程序存储器锁定; *1288位内部RAM; *32可编程I/O线 ; *两个16位定时器/计数器; *5个中断源; *可编程串行通道; *低功耗的闲置和掉电模式; *片内振荡器和时钟电路2. DS1302(1) DS1302简介 美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路DS1302的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。(2) DS1302管脚分布及功能 其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。(3) DS1302的结构及工作原理 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 DS1302的内部结构 DS1302的数据读写时序 DS1302有关计时的寄存器3. YB51B实验板 YB-51-B单片机通用实验板全部采用优质元气件生产而成,直接通过PC的USB接口获取电源,不需要再单独外接电源,性能稳定可靠,并且增加了更多的功能。采用该实验板可以进行的实验有:(1)基本的流水灯实验(2)按键的编程实验(3)通过74LS164和74HC138驱动7段数码管显示实验(4)液晶屏的显示实验(5)串行存储器24C02的读写实验(6)单片机和PC RS232的通讯实验(7)单片机通过继电器驱动外部设备实验(8)蜂鸣器发声实验(9)外部中断(INT0)的实验(10)时钟电路DS1302的应用实验(11)数字温度模块DS18B20的应用实验(12)A/D转换芯片ADC0832的应用实验 四.系统软件设计系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:a 根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;b 培养良好的编程风格,如考虑结构化程序设计、实时模块化、子程序化,既便于调试、链接,又便于移植和修改;c 建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;d 绘制程序流程图;e 合理分配系统资源;f 为程序加入注释,提高可读性,实施软件工程;g 注意软件的抗干扰设计,提高系统的可靠性。(一)程序流程图 1.主程序 主程序最先开始运行,然后启动定时器,定时器启动后再进行按键检测,检测完后就可以显示时间。 主程序流程图2. 定时器中断程序 定时器中断流程图3. 时间显示程序时间显示是先秒个位计算显示,然后秒十位计算显示,再是分个位显示,再然后是分十位显示 时间显示流程图(2) 源程序代码1.主程序#include #define T_CLK P1_6 /*实时时钟时钟线引脚 */#define T_IO P1_7 /*实时时钟数据线引脚 */#define T_RST P3_3 /*实时时钟复位线引脚 */* 实时时钟模块 时钟芯片型号:DS1302 */* * 名称: v_RTInputByte* 说明: * 功能: 往DS1302写入1Byte数据* 调用:* 输入: ucDa 写入的数据 * 返回值: 无*/void v_RTInputByte(Uchar ucDa) Uchar i,xbyte;xbyte = ucDa;for(i=8; i0; i-)T_IO = xbyte&0x01;T_CLK = 1;T_CLK = 0;xbyte = xbyte 1; /* * 名称: Uchar uc_RTOutputByte* 说明: * 功能: 从DS1302读取1Byte数据* 调用: * 输入: * 返回值: xbyte*/Uchar uc_RTOutputByte(void) Uchar i,xbyte,xbyte1=0;for(i=8; i0; i-)xbyte = xbyte 1;xbyte1 =(xbyte1|(Uchar)(T_IO)0;i-) /*8Byte = 7Byte 时钟数据 + 1Byte 控制*/v_RTInputByte(*pSecDa);/* 写1Byte数据*/pSecDa+;T_CLK = 1;T_RST =0; /* * 名称: v_BurstR1302T* 说明: 先写地址,后读命令/数据(时钟多字节方式)* 功能: 读取DS1302时钟数据* 调用: v_RTInputByte() , uc_RTOutputByte()* 输入: pSecDa: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B* 返回值: ucDa :读取的数据*/void v_BurstR1302T(Uchar *pSecDa)Uchar i;T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(0xbf); /* 0xbf:时钟多字节读命令 */for (i=8; i0; i-) *pSecDa = uc_RTOutputByte(); /* 读1Byte数据 */pSecDa+;/T_CLK = 1;T_RST =0;/* * 名称: v_BurstW1302R* 说明: 先写地址,后写数据(寄存器多字节方式)* 功能: 往DS1302寄存器数写入数据(多字节方式)* 调用: v_RTInputByte() * 输入: pReDa: 寄存器数据地址* 返回值: 无*/void v_BurstW1302R(Uchar *pReDa)Uchar i;v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(0xfe); /* 0xbe:时钟多字节写命令 */for (i=31;i0;i-) /*31Byte 寄存器数据 */v_RTInputByte(*pReDa); /* 写1Byte数据*/pReDa+;T_CLK = 1;T_RST =0; /* * 名称: uc_BurstR1302R* 说明: 先写地址,后读命令/数据(寄存器多字节方式)* 功能: 读取DS1302寄存器数据* 调用: v_RTInputByte() , uc_RTOutputByte()* 输入: pReDa: 寄存器数据地址* 返回值: 无*/void v_BurstR1302R(Uchar *pReDa)Uchar i;T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(0xff); /* 0xbf:时钟多字节读命令 */for (i=31; i0; i-) /*31Byte 寄存器数据 */*pReDa = uc_RTOutputByte(); /* 读1Byte数据 */pReDa+;T_CLK = 1;T_RST =0;/* * 名称: v_Set1302* 说明: * 功能: 设置初始时间* 调用: v_W1302() * 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年 * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B* 返回值: 无*/void v_Set1302(Uchar *pSecDa) Uchar i;Uchar ucAddr = 0x80; v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/for(i =7;i0;i-) v_W1302(ucAddr,*pSecDa); /* 秒 分 时 日 月 星期 年 */pSecDa+;ucAddr +=2;v_W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/* * 名称: v_Get1302* 说明: * 功能: 读取DS1302当前时间* 调用: uc_R1302() * 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年 * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B* 返回值: 无*/void v_Get1302(Uchar ucCurtime) Uchar i;Uchar ucAddr = 0x81;for (i=0;i7;i+)ucCurtimei = uc_R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */ucAddr += 2;2. 时间程序 #include data Uchar yjdispbuff32; /液晶屏显示缓冲区data Uchar clockdata27; /时钟数据缓冲区data Uchar *clockdatain;data Uchar *clockdataout;data Uchar cmddata;data Uchar indata,outdata;data Uchar houtdatal,houtdatah,moutdatal,moutdatah,soutdatal,soutdatah; /时、分、秒data Uchar noutdatal,noutdatah,youtdatal,youtdatah,routdatal,routdatah; /年、月、日data Uchar woutdatal, woutdatah; /星期void main() Uchar j;for(j=0;j4)&0x07; moutdatal=clockdata21&0x0f; moutdatah=(clockdata214)&0x07; houtdatal=clockdata22&0x0f; houtdatah=(clockdata224)&0x07; routdatal=clockdata23&0x0f; routdatah=(clockdata234)&0x07; youtdatal=clockdata24&0x0f; youtdatah=(clockdata244)&0x07; woutdatal=clockdata25&0x0f; woutdatah=(clockdata254)&0x07; noutdatal=clockdata26&0x0f; noutdatah=(clockdata264)&0x07; yjdispbuff0=50; /50代表数字2的ASC码,液晶屏是按照ASC码来显示字符的 yjdispbuff1=48; /48代表数字0的ASC码 yjdispbuff2=noutdatah+48; /48表示对应数字的实际值和相对应的ASC码的偏移量 yjdispbuff3=noutdatal+48; yjdispbuff5=youtdatah+48; yjdispbuff6=youtdatal+48; yjdispbuff8=routdatah+48; yjdispbuff9=routdatal+48; yjdispbuff13=woutdatal+48; yjdispbuff17=houtdatah+48; yjdispbuff18=houtdatal+48; yjdispbuff20=moutdatah+48; yjdispbuff21=moutdatal+48; yjdispbuff23=soutdatah+48; yjdispbuff24=soutdatal+48; yjdispbuff4=45; /-的ASC码 yjdispbuff7=45; yjdispbuff10=32; /空格的ASC码 yjdispbuff11=32; yjdispbuff12=32; yjdispbuff14=32; yjdispbuff15=32; yjdispbuff16=32; yjdispbuff19=45; yjdispbuff22=45; for(j=0;j32;j+) Disponechar(0,j+2,yjdispbuffj); 3. LCD液晶显示驱动程序#include#define RS1602 P1_0 /数据/命令选择#define RW1602 P1_1 /读/写选择#define EL1602 P1_2 /使能信号#define DataPort P0 / 数据端口#define Busy 0x80/*=正常读写操作之前必须检测LCD控制器状态: CS=1 RS1602=0 RW1602=1DB7: 0 LCD控制器空闲; 1 LCD控制器忙=*/void WaitForEnable( void ) DataPort = 0xff; RS1602=0; RW1602=1; _nop_(); EL1602=1; _nop_(); _nop_(); while( DataPort & Busy ); EL1602=0;/*=写控制字符子程序: E=1 RS1602=0 RW1602=0=*/void LcdWriteCommand( Uchar CMD,Uchar AttribC ) /送控制字符子程序 if (AttribC) WaitForEnable(); / 检测忙信号? RS1602=0; RW1602=0; _nop_(); DataPort=CMD; _nop_(); EL1602=1;_nop_();_nop_();EL1602=0; / 操作允许脉冲信号/*=当前位置写字符子程序: E =1 RS1602=1 RW1602=0=*/void LcdWriteData( char dataW ) WaitForEnable(); / 检测忙信号 RS1602=1; RW1602=0; _nop_(); DataPort=dataW; _nop_(); EL1602=1; _nop_(); _nop_(); EL1602=0; / 操作允许脉冲信号/*=初始化程序, 必须按照产品资料介绍的初始化过程进行=*/void Lcdreset( void ) LcdWriteCommand( 0x38, 0); / 显示模式设置(不检测忙信号) Delayms(10); LcdWriteCommand( 0x38, 0); / 共三次 Delayms(10); LcdWriteCommand( 0x38, 0); Delayms(10); LcdWriteCommand( 0x38, 1); / 显示模式设置(以后均检测忙信号) LcdWriteCommand( 0x08, 1); / 显示关闭 LcdWriteCommand( 0x01, 1); / 显示清屏 LcdWriteCommand( 0x06, 1); / 显示光标移动设置 LcdWriteCommand( 0x0c, 1); / 显示开及光标设置/*=显示光标定位(X表示行 ,Y表示列)=*/void Disp_XY( char posx,char posy) Uchar temp; temp = posy & 0x0f; posx &= 0x1; if ( posy15 ) temp |= 0x40;if (posx=1) temp |=0x40; temp |= 0x80; LcdWriteCommand(temp,0);/*=按指定位置显示数出一个字符=*/void Disponechar(Uchar x,Uchar y,Uchar Wdata) Disp_XY( x, y ); / 定位显示地址 LcdWriteData( Wdata ); / 写字符/*=液晶屏上显示字符串=*/void Eputstr(Uchar x,Uchar y, Uchar code *ptr) Uchar i,l=0; while (*ptr+ 0)l+;

温馨提示

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

评论

0/150

提交评论