首页 毕业设计AD0804脉宽调制

毕业设计AD0804脉宽调制

举报
开通vip

毕业设计AD0804脉宽调制毕业设计AD0804脉宽调制 淮北师范大学学士毕业论文 论文题目 ,,,,,,脉宽调制实现电机转速控制、数字电压表、电子钟、温度测量、整点报时设计 学院、专业 安徽职业技术学院 电气系 应用电子 研 究方 向 AD0804脉宽调制研究 学 生 姓 名 苏晖 学 号 2010221201 班 级 电子1022 指导教师姓名 胡继胜 指导教师职秤 教 授 2012年10月22日 AD0804脉宽调制设计 苏晖 安徽职业技术学院电气系应用电子 I 摘要 随着时代科技的迅猛发展,微电子学和...

毕业设计AD0804脉宽调制
毕业设计AD0804脉宽调制 淮北师范大学学士 毕业论文 毕业论文答辩ppt模板下载毕业论文ppt模板下载毕业论文ppt下载关于药学专业毕业论文临床本科毕业论文下载 论文 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目 ,,,,,,脉宽调制实现电机转速控制、数字电压表、电子钟、温度测量、整点报时设计 学院、专业 安徽职业技术学院 电气系 应用电子 研 究方 向 AD0804脉宽调制研究 学 生 姓 名 苏晖 学 号 2010221201 班 级 电子1022 指导教师姓名 胡继胜 指导教师职秤 教 授 2012年10月22日 AD0804脉宽调制设计 苏晖 安徽职业技术学院电气系应用电子 I 摘要 随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。作为重量测量仪器,智能电子秤在各行各业开始显现其测量准确,测量速度快,易于实时测量和监控的巨大优点,并开始逐渐取代传统型的机械杠杆测量秤,成为测量领域的主流产品。在设计中主要问题和技术难度在于如何实现高精度的测量,且所测结果的重复性好。本文设计的电子秤以单片机为主要部件,用C语言进行软件设计,硬件则以DS18B20及ADC084驱动电路。A/D转换的结果送单片机进行数据处理包括软件滤波并显示,电机驱动电路。其数据显示部分采用LCD12864显示,成本低且能很好地实现所要求的功能。 关键词 单片机;脉宽调制;数字电压表;温度测量;转速控制;时钟显示 I The Design of The High-precision Electronic Scale Ren Ge School of Physics and Electronic Information, Huai Bei Normal University, Anhui Huaibei, 235000 Abstract With the rapid development of technology of the times, the achievements of microelectronics and computers and other modern electronic technology play huge and revolutionary impact on the traditional electronic measuring instrument. As a weight measuring instruments, intelligent electronic scale has shown its high accuracy and speed. It has advantages in real-time measurement and monitoring, and began to gradually replace traditional mechanical scales. Intelligent electronic scale has become the mainstream products in the field of measurement. In this paper, the microcontroller is used as the main the component of the electronic scale, C language is utilized as the software and the strain gauge pressure sensor is used as the main hardware. Because the output is analog and the value of it is relative small, HX711 with precision is 24 bits is used as the main AD converter and amplifier, the accuracy of the scale is 0.01g. The results of AD converter are sampled by the microcontroller, and the information is filtered and displayed. The results are shown in LCD, the system has low cost and can be realized easily. Keywords Single-chip microcomputer;High-precision;Software filter I 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 1 绪论 ................................................. 1 1.1 概述 ....................................... 1 1.2 论文的主要任务 .............................. 1 2.系统及工作原理„„„„„„„„„„„„„„„„„1 2.1 系统组成 ................................... 1 2.2 系统工作原理................................ 2 3 系统的硬件设计 ....................................... 2 3.1 主控芯片STC89C52单片机基本系统 ............. 2 3.2 A/D转换芯片AD0804接口电路的设计 ............ 6 3.3 压电传感器的电路 .......... 错误~未定义书签。11 4 系统软件设计 ........................................ 14 4.1 系统主函数 ................................ 15 4.2 A/D数据采集子函数 ......................... 15 4.3 软件滤波子函数及显示函数 ................... 16 5 DS18B20温控电路 ..................... 错误~未定义书签。17 5.1 DS18B20芯片封装结构: ........ 错误~未定义书签。17 5.2 DS18B20引脚功能 .............................. 18 5.3控制器对18B20操作流程 ......................... 18 5.4 DS18B20芯片与单片机的接口 ....................... 17 I 6电机路„„„„„„„„„„„„„„„„„„„„„„„„.23 6.1电机电路图„„„„„„„„„„„„„„„„„„„„„.23 6.2电机工作理„„„„„„„„„„„„„„„„„„„„„.23 7 蜂鸣器驱动路„„„„„„„„„„„„„„„„„„„„...23 7.1蜂鸣器驱动路图„„„„„„„„„„„„„„„„„„„..24 7.1工作原理„„..„„„„„„„„„„„„„„„„„„„..24 结论……………………………………………………………………..25 附录 系统电路图及程序代码„„„„„„„„„„„..26 致 谢„„„„„„„„„„„„„„„„„„„„„„„„..68 本组成员„„„„„„„„„„„„„„„„„„„„..70 I 1 绪论 1.1 概述 随着科技的迅猛发展,电子技术在生活中得到了广泛的应用。这给电子技术 [1]的发展带来了空前的机会,同时也带来了很大的挑战。电子技术逐渐的向着集成化、高速、高精度、智能化的方向发展。常规的测试仪器仪表已不能满足市场的需求,这就给高精度仪器仪表带来发展机遇。而且,在未来相当长得时间内都将会向着这个方向发展。这就出现了这样的矛盾:陈旧的电子技术产品不能满足 [2]高速发展的市场经济的需求。 我设计的是通过ADC084实现脉宽调制来控制电机转速;DS1302实现实时温度测量;数字电压表;时钟显示等。 1.2 论文的主要任务 本文设计的以单片机为核心控制部件,用C语言作为编程语言来进行软件设计,以AD0804为主要器件,制作出一套测量范围在0,100%脉宽调制,通过调节电位器输出的电量是模拟量,数值在0~255范围;再经过换算成0~5v电压。然后,A/D 转换的结果才能送单片机进行数据处理并显示。其数据显示部分采用LCD 显示,成本低且能很好地实现所要求的功能。 2 系统组成及工作原理 2.1 系统组成 本高精度电子秤系统可分为单片机控制电路、A/D转换电路、复位电路、传感器、时钟电路、LCD显示、滤波电路等几部分,其系统组成如图1所示。 复位电路 电机控制电路 电MCU 位A/D转换电路 器 LCD显示电路 单片机 时钟电路 按键控制 电路 温度电路 报警电路 1 图1 系统组成框图 2.2 系统工作原理 系统原理如图1所示,系统通过传感器将压力这种物理量转化为电信号,即传感器内部的电阻应变片感应到压力后,电阻发生微小变化,通过全桥测量电路将电阻的微小变化转化成电压的微小变化adc08004将信号调整到A/D能采集的范围,然后由A/D进行采集转换,接着把采集到的,位高低电平通过,,口送到单片机进行处理,单片机处理后,把数字信号输送到显示电路中,由显示电路输出测量结果。整个系统实现了用单片机来控制输出,在线性度的确定过程中,需要对程序进行反复的修改,最终实现设计的要求。 系统的关键技术在于将物理量转化为可以传递处理的电信号。本设计笔者使用了adc0804来解决这一技术难题。HX711直接将压力传感器送出的微弱电信号, [3]经过内部放大和24位A/D转换器,转化为处理器可以识别和处理的数字量。通过软件方法,将A/D所采集的数字量进行滤波和标定,最终输出重量值。并由LCD显示屏进行显示。 3 系统的硬件设计 3.1 主控芯片STC89C52单片机基本系统 3.1.1 STC89C52单片机性能介绍 STC89C52是一种低功耗、高性能8位微控制器,具有8K的可编程flash [5]存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。内512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHZ,6T/12T可选。片上flash允许程序存储器在线可编程,也适于常规 [6]编程器。在单芯片上,拥有灵巧的8位CPU和在系统上可编程闪烁存储单元, 2 使得STC89C52为众多嵌入式控制应用系统提供灵活、有效的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,因此笔者在设计时选择了51单片机作为解决方案。 时钟源T T01 SFR和RAM ROM定时/计数器时钟电路 (控制器)4235 CPU系 统 总 线1 并行端口串行端口中断系统 678 P0P1P2P3TXD RXD INT INT 01 图2 单片机内部结构 STC89C52具有以下 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 功能:8K字节闪烁存储器,256字节读写存储器,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许读写存储器、定时器/计数器、串口、中断继续工作。掉电保护方式下,读写存储器内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图2所示为单片机内部结构。 3.1.2 STC89C52单片机引脚功能 VCC:电源。 P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在闪烁编程时,P0口也用来接收指令字节;在程序校验时,输出 [6]指令字节。程序校验时,需要外部上拉电阻。 3 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送“1”。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在闪烁编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 RST:复位输入。当晶振工作时,RST引脚持续2个机器周期高电平将使单片机复位。 EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在闪烁编程期间,EA也接收12伏VPP电压。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 3.1.3 复位电路 单片机上电时,当振荡器正在运行时,只要持续给出RST引脚两个机器周期的高电平,便可完成系统复位。外部复位电路是为提供两个机器周期以上的高电平而设计的。系统采用上电自动复位,上电瞬间电容器上的电压不能突变,RST上的电压是VCC上的电压与电容器上的电压之差,因而RST上的电压与VCC上的电压相同。随着充电的进行,电容器上的电压不断上升,RST上的电压就随着下降,RST脚上只要保持10ms以上高电平,系统就会有效复位。电容C1可取 -6310-33μF,R取10KΩ,充电时间常数为10×10×10×10=100ms。 复位电路的实现可以有很多种方法,但是从功能上一般分为两种:一种是电 4 源复位,即外部的复位电路在系统通上电源之后直接使单片机工作,单片机的起停通过电源控制;另一种方法是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位。本设计使用了第二种方法,其电路图如图3所示。 STC89C52RCVCCVCC140P1.0VCC239P1.1P0.0338P1.2P0.1437P1.3P0.2536C7P1.4P0.3K463510uFP1.5P0.4734P1.6P0.5833P1.7P0.6932RSTP0.71031P3.0/RXDEAR221130P3.1/TXDALE10K1229P3.2/INT0PSEN1328P3.3/INT1P2.71427P3.4/T0P2.61526P3.5/T1P2.5C530pF1625P3.6/WRP2.41724P3.7/RDP2.318231XTAL2P2.2Y11922XTAL1P2.12021VSSP2.012MHz2C630pF 图3 STC89C52单片机复位、晶振电路图 3.1.4 晶振电路 STC89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端,外接石英晶体或陶瓷振荡器以及补偿电容C2、C3构成并联谐振电路。当外接石英晶体时,电容C2、C3选30pF?10pF;当外接陶瓷振荡器时,电容C2、C3选40pF?10pF。STC89C52系统中晶振频率一般在1.2-12MHz选择。外接电容C2、C3的大小会影响振荡器频率的高低、振荡频率的稳定度、起振时间及温度稳定性。在本系统中,选择了12MHz石英晶振,电容C1、C2为30pF。其电路图如图3所示。 5 3.2 A/D转换芯片HX71 AD0804接口电路的设计 3.2.2AD0804简介 ADC0804的管脚图如下所示 它的主要电气特性如下: , 工作电压:,5V,即VCC,,5V。 , 模拟输入电压范围:0,,5V,即0?Vin?,5V。 6 8, 分辨率:8位,即分辨率为1/2=1/256,转换值介于0,255 之间。 , 转换时间:100us(f,640KHz时)。 CK , 转换误差:?1LSB。 , 参考电压:2.5V,即V,2.5V。 ref 1.ADC0804的转换原理 ADC0804是属于连续渐进式(Successive Approximation Method)的A/D转换器,这类型的A/D转换器除了转换速度快(几十至几百us)、分辨率高外,还有价钱便宜的优点,普遍被应用于微电脑的接口设计上。 以输出8位的ADC0804动作来说明“连续渐进式A/D转换器”的转换原理,动作步骤如下表示(原则上先从左侧最高位寻找起)。 第一次寻找结果:10000000 (若假设值?输入值,则寻找位,假设位,1) 第二次寻找结果:11000000 (若假设值?输入值,则寻找位,假设位,1) 第三次寻找结果:11000000 (若假设值>输入值,则寻找位,该假设位,0) 第四次寻找结果:11010000 (若假设值?输入值,则寻找位,假设位,1) 第五次寻找结果:11010000 (若假设值>输入值,则寻找位,该假设位,0) 第六次寻找结果:11010100 (若假设值?输入值,则寻找位,假设位,1) 第七次寻找结果:11010110 (若假设值?输入值,则寻找位,假设位,1) 第八次寻找结果:11010110 (若假设值>输入值,则寻找位,该假设位,0) 这样使用二分法的寻找方式,8位的A/D转换器只要8次寻找,12位的A/D转换器只要12次寻找,就能完成转换的动作,其中的 7 输入值代表图1的模拟输入电压Vin。 电路如图4所示。 图4 HX711接口电路图 2.分辨率与内部转换频率的计算 对8位ADC0804而言,它的输出准位共有28,256种,即它的分辨率是1/256,假设输入信号Vin为0,5V电压范围,则它最小输出电压是5V/256,0.01953V,这代表ADC0804所能转换的最小电压值。 表1列出的是8,12位A/D转换器的分辨率和最小电压转换值。 表1 A/D转换器的分辨率和最小电压值 位数目 分辨率 最小电压转换值 8 1/256 0.01953V 10 1/1024 0.00488V 12 1/4096 0.00122V 至于内部的转换频率fCK,是由图2的CLKR(19脚)、CLK IN(4脚)所连接的R()、C(150PF)来决定。 8 图2 ADC0804与CPLD&FPGA、8051单片机等典型连接图 频率计算方式是:fCK,1/(1.1?R?C) 若以图2的R,10KΩ、C,150PF为例,则内部的转换频率是 fCK,1/(1.1?10 KΩ?150PF),606KHz 更换不同的R、C值,会有不同的转换频率,而且频率愈高代表速度愈快。但是需要注意R、C的组合,务必使频率范围是在100KHz,1460KHz之间。 3.ADC0804的控制方法 3.2.4 ADC0804的时序图 要求ADC0804进行模拟/数字的转换,其实可以直接由下面的时序图及图2信号的流向来配合了解。 9 图3 ADC0804控制信号时序图 以图2、图3信号流向而言,控制ADC0804动作的信号应该只有CS、WR、RD。其中INTR由高电位转为低电位后,代表ADC0804完成这次的模拟/数字转换,而DB0,DB7代表是转换后的数字资料。 图3的动作大概可分成4个步骤区间——S0、S1、S2、S3,每个步骤区间的动作方式如下: , 步骤S0:CS,0、WR,0、RD,1(由CPLD发出信号要求 ADC0804开始进行模拟/数字信号的转换)。 , 步骤S1:CS,1、WR,1、RD,1(ADC0804进行转换动作, 转换完毕后INTR将高电位降至低电位,而转换时间>100us)。 , 步骤S2:CS,0、WR,1、RD,0(由CPLD发出信号以读 取ADC0804的转换资料)。 , 步骤S3:CS,1、WR,1、RD,1(由CPLD读取DB0,DB7 上的数字转换资料)。 由上述步骤说明,可以归纳出所要设计的CPLD动作功能有: , 负责在每个步骤送出所需的CS、WR、RD控制信号。 , 在步骤S1时,监控INTR信号是否由低电位变高电位,如 此以便了解ADC0804的转换动作结束与否。 , 在步骤S3,读取转换的数字资料DB0,DB7。 10 3.2.3 LCD显示模块 11 12 13 图9 液晶显示电路 14 4 系统软件设计 系统软件采用了模块化设计,主要包括毫秒级延时子函数、A/D数据采集子函数、软件滤波子程序、LCD显示子函数和主函数。 4.1 系统主函数 在系统通电后,主程序首先完成系统初始化,其中包括系统变量定义和给系统变量赋初值等,然后调用A/D采集函数,将A/D采集模块输出的24位二进制串行数据转化为十进制,接着进行调零和定标,最后分离出6位十进制数据的千位、百位、十位和个位,调用数码管显示函数,将对应的数值送到对应的地址上进行显示。系统主函数流程图如图10所示。 开始 系统初始化 A/D采集 进制转换、零点标定 分离千、百、十及各位 图10 系统主函数流程图 4.2 A/D数据采集子函数 数据显示 A/D数据采集子程序主要是采集压电传感器的输出小信号,前24个ADSK脉冲采集24位串行二进制数据,接下来的1,3个ADSK脉冲选择下次A/D采集的通道和增益,本设计采用1个ADSK脉冲,选择通道A,增益为128。 15 4.3 软件滤波子函数及显示函数 在测量的过程中传感器所采集输出的信号为毫伏级别的微电量,这样就容易受到外界条件的干扰。传感器本身的特性限制,在测量中也会输出偏差较大的值。A/D转换器在转化的过程中也会出现与真值偏差较大的数据。各种不同的误差积攒在一起就会出现误差的放大,这样就会出现测量不准确,测量值重复性太差等特点。笔者在设计的时候,充分考虑了这些造成误差的因素,最后设计了软件滤波的方案。具体实现方法是所采到的数据先取十个值进行累加,并计算出平均值。然后将每次所得的数据替换已有的数据,并重新计算平均值。最后所得到的值,即为需要显示的真实值。通过软件的方式来补偿系统误差,达到高精度测量的设 [11]计要求。 显示部分可以将处理得出的信号在显示器上显示,让人们直观的看到被测体的质量。LCD 液晶显示器是一种极低功耗显示器,从电子表到计算器,从袖珍时仪表,到便携式微型计算机以及一些文字处理机都广泛利用了液晶显示器,流程图如图11所示。 开始 确定要显示的数据 向LCD送控制字,选通片选 2 送入控制字,确定显示位置 -1q / L?h 写入数据并显示 2 结束 -1 q / L?h 图11 LCD显示流程图 16 5 .DS18B20温控电路 18B20温度传感器应用解析 温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。 DS18B20的主要特征: ?? 全数字温度转换及输出。 ?? 先进的单总线数据通信。 ?? 最高12位分辨率,精度可达土0.5摄氏度。 ?? 12位分辨率时的最大工作周期为750毫秒。 ?? 可选择寄生工作方式。 ?? 检测温度范围为–55?C ~+125?C (–67?F ~+257?F) ?? 内置EEPROM,限温报警功能。 ?? 64位光刻ROM,内置产品序列号,方便多机挂接。 ?? 多样封装形式,适应不同硬件系统。 5.1 DS18B20芯片封装结构: 17 5.2 DS18B20引脚功能: ?GND 电压地 ?DQ 单数据总线 ?VDD 电源电压 ?NC 空引脚 DS18B20工作原理及应用: DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是: ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。 RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。 RAM及EEPROM结构图: 图2 我们在每一次读温度之前都必须进行复杂的且精准时序的处理,因为DS18B20的硬件简单结果就会导致软件的巨大开消,也是尽力减少有形资产转化为无形资产的投入,是一种较好的节约之道。 5.3 控制器对18B20操作流程: 18 1, 复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。 2, 存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。 3, 控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。ROM指令在下文有详细的介绍。 4, 控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作 19 方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。 5, 执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。数据的读写方法将有下文有详细介绍。 若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。其它的操作流程也大同小异,在此不多介绍。 5.4 DS18B20芯片与单片机的接口: 如图所示,DS18B20只需要接到控制器(单片机)的一个I/O口上,由于单总线为开漏所以需要外接一个4.7K的上拉电阻。如要采用寄生工作方式,只要将VDD电源引脚与单总线并联即可。但在程序设计中,寄生工作方式将会对总线的状态有一些特殊的要求。 图5 DS28B20芯片ROM指令表: Read ROM(读ROM)[33H] (方括号中的为16进制的命令字) 这个命令允许总线控制器读到DS18B20的64位ROM。只有当总线上只存在一个DS18B20的时候才可以使用此指令,如果挂接不只一个,当 20 通信时将会发生数据冲突。 Match ROM(指定匹配芯片)[55H] 这个指令后面紧跟着由控制器发出了64位序列号,当总线上有多只DS18B20时,只有与控制发出的序列号相同的芯片才可以做出反应,其它芯片将等待下一次复位。这条指令适应单芯片和多芯片挂接。 Skip ROM(跳跃ROM指令)[CCH] 这条指令使芯片不对ROM编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。 Search ROM(搜索芯片)[F0H] 在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位ROM。 Alarm Search(报警芯片搜索)[ECH] 在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于TH或小于TL报警条件的芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度什达不到报警条件为止。 DS28B20芯片存储器操作指令表: Write Scratchpad (向RAM中写数据)[4EH] 这是向RAM中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警RAM之TH)和地址3(报警RAM之TL)。写入过程中可以用复位信号中止写入。 Read Scratchpad (从RAM中读数据)[BEH] 此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。 Copy Scratchpad (将RAM数据复制到EEPROM中)[48H] 此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。 Convert T(温度转换)[44H] 21 收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。 Recall EEPROM(将EEPROM中的报警值复制到RAM)[B8H] 此指令将EEPROM中的报警值复制到RAM中的第3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样RAM中的两个报警字节位将始终为EEPROM中数据的镜像。 Read Power Supply(工作方式切换)[B4H] 此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。 DS18B20复位及应答关系示意图: 图6 每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。 DS18B20读写时间隙: DS18B20的数据读写是通过时间隙处理位和命令字来确认信息交换的。 写时间隙: 写时间隙分为写“0”和写“1”,时序如图7。在写数据时间隙的前15uS总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在15~60uS,采样时间内如果控制器将总线拉高则表示写“1”,如果控制器将总线拉低则表示写“0”。每一位的发送都应该有一个至少15uS的低电平起始位,随后的数据“0”或“1”应该在45uS内完成。整个位的发送时间应该保持在60~120uS,否则不能保证通信的正常。 22 读时间隙: 读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时也是必须先由主机产生至少1uS的低电平,表示读时间的起始。随后在总线被释放后的15uS中DS18B20会发送内部数据位,这时控制如果发现总线为高电平表示读出“1”,如果总线为低电平则表示读出数据“0”。每一位的读取之前都由控制器加一个起始信号。注意:如图8所示,必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。 在通信时是以8位“0”或“1”为一个字节,字节的读或写是从高位开始的,即A7到A0.字节的读写顺序也是如图2自上而下的。 23 6 电机电路 6.1 电机驱动电路图 6.2 电路原理 单片机给出一个高低电平来控制三极管的导通与截止;此时的三极管是工作在饱和与截止区且具有滤波作用;R7的电阻是提供电机的电流; 7.蜂鸣器驱动电路 7.1 蜂鸣器驱动电路图 7.2 工作原理 24 片机给出一个高低电平来控制三极管的导通与截止;从而使蜂鸣器的贴片振荡;高电平时导通,低电平时截止。 结 论 在设计制作高精度电子秤的过程中,我深切体会到理论与实践相结合的重要性。本系统的制作主要应用到了模拟电子技术、数字电子技术、单片机控制技术、电子工艺和C程序设计等多方面的知识,所设计的基于MCS-51单片机程序控制的高精度数字电子秤,达到了设计要求,同时也使我的动手能力和电子设计能力得到了极大锻炼。特别是在线性度的确定过程中,实验测试数据用MATLAB绘图,可以得出真值和砝码值的关系接近为一条直线,所以就可以得出它们之间的线性关系。接着用最小二乘法对实验测试数据进行拟合,最终完成定标。这一过程很好地将理论与实践结合起来了。同时通过多次测量数据,得出的值更接近真实值。这样利用实验数据进行分析,使设计更有说服力,也增强了本设计电子秤的准确性和精确性。进一步肯定了设计的正确性。 本次论文设计展示了自己的能力,更让笔者体会到了电子技术与设计的趣味,以及其强大深远的实用性。也使我们深切认识到自身知识能力尚存在许多不足。设计中还存在一些不尽完美的地方,硬件电路部分的焊接没有做到最简单方便,布局还可以更合理,软件设计部分还需要进一步的完善。今后,我将更加努力学习,不断完善自己的专业知识,提高专业技能。 25 附录 系统电路图及程序代码 原理图 26 /**********主函数***********/ #include #include #include #include<12864.h> #include #include<18b20.h> #define uchar unsigned char #define uint unsigned int #define nop() _nop_() /**********电机*******/ sbit PWM=P2^4; bit flag; uint t; uchar val; void main() { 27 beep=0; Init_12864(); timer(); while(1) { val=AD_0804(); disp(val,val); ds18b20(); f_18b20(); /************AD脉宽调制程序************/ if(val==0) { PWM = 0; delay_ms(0xff); continue; } if(val==0xff) { PWM = 1; delay_ms(0xff); continue; 28 } PWM=1; delay_ms(val); PWM=0; delay_ms(0xff-val); } /************************************/ } void int0() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; t++; if(t==18) { t=0; flag=1; } Beep(); 29 } void int1() interrupt 3 { TH1=(65535-2500)/256; TL1=(65535-2500)%256; key_scan(); shizhong(); } /**********12864.h****************/ #include #include sbit en=P2^1; sbit rs=P2^0; sbit cs1=P2^3; sbit cs2=P2^2; /***********判忙***********/ void Read_busy() { P0=0x00; rs=0; en=1; while(P0&0x80); en=0; } 30 /************写命令**********/ void com(uchar com) { Read_busy(); rs=0; //命令 P0=com; _nop_(); _nop_(); en=1; _nop_(); _nop_(); en=0; _nop_(); _nop_(); } /***********写数据**********/ void date(uchar date) { Read_busy(); rs=1; P0=date; _nop_(); _nop_(); en=1; _nop_(); _nop_(); en=0; _nop_(); _nop_(); } /************页*************/ 31 void Set_page(uchar page) { page=0xb8|page; com(page); } /***************行************/ void Set_line(uchar line) { line=0xc0|line; com(line); } /*************列***************/ void Set_colum(uchar colum) { colum=colum&0x3f; colum=0x40|colum; com(colum); } /************开/关*************/ void Set_onoff(uchar onoff) { onoff=0x3e|onoff; com(onoff); } /**************选屏******************/ void Crl_srl(uchar photo) { switch(photo) { case 0:cs1=0;cs2=0; break;//全屏 case 1:cs1=0;cs2=1; break;//左屏 case 2:cs1=1;cs2=0; break;//右屏 32 case 3:cs1=1;cs2=1; break;//清屏 default: break; } } void Clean_screen(uchar screen) //清屏 { uchar i,j; Crl_srl(screen); com(0xb8); //页 com(0x40); //列 for(i=0;i<8;i++) { com(0xb8+i); for(j=0;j<64;j++) { date(0x00); } } } /*********8*16字体************/ void disp8(uchar ping,uchar page,uchar colum,uchar *p) { uchar i; Crl_srl(ping); Set_page(page); Set_colum(colum); for(i=0;i<8;i++) { date(p[i]); } Set_page(page+1); Set_colum(colum); 33 for(i=0;i<8;i++) { date(p[i+8]); } } /**************16*16字体***************/ void disp16(uchar ping,uchar page,uchar colum,uchar *p) { uchar i; Set_line(0); Crl_srl(ping); Set_page(page); Set_colum(colum); for(i=0;i<16;i++) { date(p[i]); } Set_page(page+1); Set_colum(colum); for(i=0;i<16;i++) { date(p[i+16]); } } /*********128*64***********/ void disp_tu(uchar a[][64]) { uchar i,j; for(j=0;j<8;j++) { Crl_srl(1); Set_page(j); 34 Set_colum(0); for(i=0;i<64;i++) { date(a[j*2][i]); } Crl_srl(2); Set_page(j); Set_colum(0); for(i=0;i<64;i++) { date(a[j*2+1][i]); } } } /***********12864初始化*********/ void Init_12864() { uchar i; Read_busy(); //判忙 Set_onoff(0);//关显示 Set_onoff(1);//开显示 Set_colum(0);//行 Set_line(0);//列 Set_page(0);//页 Clean_screen(3); disp16(1,0,16,zuo);/*作*/ disp16(1,0,32,zhe);/*者*/ disp8(1,0,48,maohao);/*:*/ disp16(2,0,0,su);/*苏*/ disp16(2,0,16,hui);/*晖*/ 35 disp16(1,2,32,dian);/*电*/ disp16(1,2,48,zi);/*子*/ disp8(2,2,0,maohao);/*:*/ disp8(2,2,8,shuzi[1]);/*1*/ disp8(2,2,16,shuzi[0]);/*0*/ disp8(2,2,24,shuzi[2]);/*2*/ disp8(2,2,32,shuzi[2]); /*2*/ delay_ms(4000); Clean_screen(3); for(i=0;i<8;i++) { disp_tu(laopo); delay_ms(1000); disp_tu(laogong); delay_ms(1000); } Clean_screen(3); //disp_tu(tu); //delay_ms(5000); //Clean_screen(3); disp8(2,2,16,VV);/*V*/ disp8(1,0,0,TT); /*T*/ disp8(1,0,8,II);/*I*/ disp8(1,0,16,MM);/*M*/ disp8(1,0,24,EE);/*E*/ disp8(1,0,32,RR);/*R*/ disp8(1,0,40,maohao);/*:*/ disp16(1,4,0,nao);/*闹*/ disp16(1,4,16,Lg);/*铃*/ disp8(1,4,32,maohao);/*:*/ disp16(2,4,0,dian);/*电*/ 36 disp16(2,4,16,ji);/*机*/ disp16(2,4,48,D_su); /*苏*/ disp16(1,6,0,wen);/*温*/ disp16(1,6,16,du);/*度*/ disp8(1,6,32,maohao);/*:*/ disp16(1,2,0,dian);/*电*/ disp16(1,2,16,ya); /*压*/ disp8(1,2,32,maohao);/*:*/ disp8(2,6,0,DD);/*.*/ disp16(2,6,40,wendu);/*?*/ } /***************ziku.h*****************/ #define uchar unsigned char #define uint unsigned int /******作*****/ uchar code zuo[]={0x80,0x40,0x20,0xF8,0x07,0x22,0x18,0x0C,0xFB,0x48,0x48,0x48,0x68,0x48,0x08,0x00, 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x04,0x04,0x04,0x04,0x06,0x04,0x00}; /******者*****/ uchar code zhe[]={0x00,0x20,0x24,0x24,0x24,0x24,0xA4,0xBF,0x64,0x24,0x34,0x28,0x26,0x24,0x20,0x00, 0x04,0x04,0x04,0x02,0x02,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00}; /*******苏****/ uchar code su[]={0x04,0x04,0x44,0x44,0x44,0x5F,0x44,0xF4,0x44,0x5F,0x44,0xC4,0x04,0x04,0x04,0x00, 0x00,0x40,0x4C,0x27,0x10,0x0C,0x07,0x01,0x20,0x40,0x40,0x 37 3F,0x00,0x02,0x0C,0x00}; /*******晖****/ uchar code hui[]={0x00,0xFE,0x22,0x22,0xFE,0x00,0x13,0x91,0x71,0x1D,0xD1,0x11,0x11,0x13,0x01,0x00, 0x00,0x07,0x04,0x04,0x07,0x08,0x08,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x00}; /******电*****/ uchar code dian[]={0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00, 0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00}; /*******子****/ uchar code zi[]={0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00, 0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00}; /*********闹********/ uchar code nao[]={0x00,0x00,0xF9,0x12,0x90,0x92,0x96,0xFA,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00, 0x00,0x00,0xFF,0x00,0x1F,0x00,0x00,0x7F,0x00,0x08,0x1F,0x40,0x80,0x7F,0x00,0x00}; /*********铃*********/ uchar code Lg[]={0x40,0x30,0x2C,0xEB,0x28,0x28,0x40,0x20,0x18,0x27,0xC8,0x10,0x20,0x60,0x20,0x00, 0x01,0x01,0x01,0xFF,0x41,0x21,0x00,0x01,0x09,0x11,0xE9,0x45,0x03,0x01,0x00,0x00}; 38 /*********开 关*********/ uchar code kg[][32]= { 0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x00, 0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00, 0x00,0x10,0x10,0x10,0x11,0x1E,0x14,0xF0,0x10,0x18,0x17,0x12,0x18,0x10,0x00,0x00, 0x01,0x81,0x41,0x21,0x11,0x09,0x05,0x03,0x05,0x09,0x31,0x61,0xC1,0x41,0x01,0x00 }; /*******温******/ uchar code wen[]= {0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00, 0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00 }; /*******度*****/ uchar code du[]= { 0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00, 0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00 }; /***符号-'-'***/ uchar code fu[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01}; /***符号-?***/ 39 uchar code wendu[]={0x06,0x09,0x09,0xE6,0xF8,0x0C,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00, 0x00,0x00,0x00,0x07,0x1F,0x30,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x10,0x00,0x00}; /***符号-' '***/ uchar code zhankongbi[][16]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0x00, 0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x10,0x10,0x10,0x10,0x10,0x1F,0x00,0x00, 0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x10,0x10,0x10,0x10,0x1F,0x00,0x00,0x00, 0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x40,0x10,0x10,0x10,0x1F,0x00,0x00,0x00,0x00, 0x00,0x00,0xC0,0x40,0x40,0x40,0x40,0x40,0x10,0x10,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x10,0x1F,0x00,0x00,0x00,0x00,0x00,0x00, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; /***符号 -':'***///0xE0,0x00,0xE0,0x20,0x20,0x20,0xE0,0x00,0x07,0x04,0x07,0x00,0x00,0x00,0x07,0x04 uchar code maohao[]={0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00}; /********%********/ 40 uchar code bafen[]= { 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00 }; /*****压*****/ uchar code ya[]={0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00, 0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x21,0x2E,0x24,0x20,0x20,0x00}; uchar code D_su[]={0x40,0x42,0xCC,0x00,0x04,0xE4,0x24,0x24,0xFF,0x24,0x24,0x24,0xE4,0x04,0x00,0x00, 0x40,0x20,0x1F,0x20,0x48,0x49,0x45,0x43,0x7F,0x41,0x43,0x45,0x4D,0x40,0x40,0x00,}; /******Timer*****/ uchar code TT[]={0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00}; uchar code II[]={0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00}; uchar code MM[]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F}; uchar code EE[]={0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00}; uchar code 41 RR[]={0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00}; uchar code VV[]={0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00}; uchar code DD[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00}; /***数字-0~9***/ uchar code shuzi[][16]={ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, //0 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, //1 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, //2 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, //3 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, //4 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, //5 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00, //6 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, //7 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, //8 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, //9 }; /*********快速 慢速********/ 42 uchar code jiajian[][32]= { 0x70,0x00,0xFF,0x08,0xB0,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0xF8,0x80,0x80,0x00, 0x00,0x00,0xFF,0x00,0x80,0x40,0x30,0x0E,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00, 0x70,0x00,0xFF,0x08,0x30,0xC0,0x40,0x5F,0xD5,0x55,0x55,0xD5,0x5F,0x40,0xC0,0x00, 0x00,0x00,0xFF,0x00,0x40,0x41,0x41,0x25,0x2D,0x15,0x35,0x2D,0x45,0x41,0x41,0x00 }; uchar code ji[]={0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00, 0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00}; /********图像***********/ /* uchar code tu[][16]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFE,0x0E,0x1C, 0x18,0x1C,0x0E,0xFE,0xFC,0x00,0x7C,0xFC,0x80,0xFC,0xFC,0x00,0x00,0x00,0x7C,0xFE, 0xC6,0xC6,0xC6,0x00,0x40,0xE8,0xA8,0xF8,0xF0,0x00,0xF8,0xF8,0x10,0x18,0x00,0x00, 0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x06,0x09,0x12,0x09,0x06,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C, 0x12,0x22,0x44,0x22,0x12,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 43 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0xE0,0x20,0x20,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x41,0x40,0x80, 0x40,0x40,0x80,0x01,0x01,0x00,0x04,0x05,0x05,0x07,0x03,0xC0,0x20,0x40,0x20,0xC1, 0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x81,0x80,0x81,0xC1,0xC0,0x40,0xC0,0xC0, 0xE1,0xE1,0xE0,0xE1,0xE1,0xE0,0xE1,0xE1,0xE0,0xE0,0xE0,0x60,0x60,0x40,0x40,0xC0, 0xE0,0xE0,0xA0,0x90,0x8C,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x10,0x28,0x50,0x28, 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x84,0x07,0x84,0x04,0x84,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08, 0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC2,0xE1,0xF0, 0x30,0x18,0x08,0x3C,0xF6,0xFE,0xFB,0x1D,0x0D,0x02,0xC2,0xCB,0x09,0x09,0x09,0x09, 0x08,0x08,0x08,0x08,0x08,0x08,0x00,0xC0,0xFF,0xFC,0xFC,0xF9,0xE1,0xC1,0x11,0x12, 0x02,0xC6,0xC5,0xC9,0xD9,0xF3,0xE3,0xC6,0x0E,0x0C,0x1C,0x38,0x38,0xF0,0xE0,0xC0, 0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x24,0x12,0x0C,0x00,0x00,0x00,0x00,0x00, 44 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x11,0x40,0x00,0x80,0x01,0x00,0x90,0x78,0x78, 0x31,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x70,0xF0, 0x38,0x18,0x0C,0x0C,0x0E,0x0E,0x0E,0x86,0x8E,0x0B,0x0B,0x0B,0x03,0x13,0x31,0x36, 0x57,0xE7,0x87,0x07,0x07,0x07,0x07,0x07,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, 0x03,0x03,0x03,0x03,0x03,0x03,0x33,0x3B,0x33,0x33,0xF3,0x03,0x03,0x03,0x03,0x03, 0x03,0x83,0x83,0xC3,0x63,0x33,0x91,0x91,0x89,0x08,0x00,0x84,0x84,0x84,0x85,0x87, 0x07,0x07,0x06,0x1E,0x38,0x78,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x20,0x40,0x00,0x01,0x81,0x50,0x00,0x00, 0x40,0x00,0x40,0x40,0x00,0x00,0x40,0xC0,0xC0,0x00,0x00,0x00,0xA0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xFC,0xEF,0xFF,0x7B,0x1B,0x08, 0xF0,0xF8,0xFC,0xFE,0xFF,0xEF,0x0F,0x1F,0x1F,0x0F,0xFF,0xFF,0xFE,0xFC,0xF9,0xF2, 0x04,0x00,0x03,0xFE,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, 0x9E,0x7F,0x73,0x18,0x0E,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x1F,0x1F,0x0F,0x7F, 0xFF,0xFF,0xFE,0xFC,0xFC,0xF8,0x18,0xFD,0xFF,0xFF,0x7E,0x1C,0x00,0x00,0x00,0x00, 45 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x15,0x10,0x08,0x66,0x01,0x00,0x0A, 0x10,0x00,0x11,0x04,0x01,0x00,0x00,0x0F,0x14,0x04,0x10,0x08,0x3B,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x27,0x26,0x30,0x30, 0x3F,0x3F,0x3F,0x3F,0x3E,0x26,0x22,0x39,0x39,0x20,0x3C,0x3E,0x3F,0x3F,0x3F,0x3F, 0x3E,0x38,0x38,0x39,0x39,0x38,0x38,0x3A,0x3A,0x3A,0x3A,0x3A,0x3A,0x3A,0x3A,0x3A, 0x3A,0x3A,0x3A,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x39,0x38,0x38,0x39,0x39,0x39, 0x39,0x38,0x38,0x38,0x3E,0x3F,0x3F,0x3F,0x3F,0x3E,0x3E,0x31,0x39,0x39,0x30,0x34, 0x3E,0x3F,0x3F,0x3F,0x3F,0x3B,0x3A,0x33,0x33,0x31,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x01,0x08,0x04,0x02,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 46 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; */ uchar code laopo[][16]= { 0xFF,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x45,0x41,0x3D,0x3D,0x3D,0x7D,0x7D, 0x31,0x1D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x05,0x1D,0x0D,0x1D,0x1D,0x1D,0x05,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 47 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x1D,0x7D,0x3D, 0x7D,0x7D,0x3D,0x3D,0x3D,0x3D,0x1D,0xAD,0x2D,0x39,0x39,0x3D,0x61,0xE1,0x61,0x21, 0x0D,0x01,0x01,0x01,0x01,0x01,0xBD,0xBD,0xCD,0xED,0xED,0xE1,0x1D,0x1D,0x1D,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0D,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x03,0x07,0x01,0x00,0x03,0x02,0x00,0x00,0x00,0x01,0x20,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x03,0x06,0x0E,0x8E,0xBE,0x3C,0x3C,0x3C,0x7E,0x7C, 0x7C,0x7E,0x7E,0xFC,0xFC,0xFC,0xFF,0x02,0x02,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 0x06,0x06,0x06,0x16,0xF7,0xE6,0xE6,0xEE,0x86,0x96,0xB6,0x2E,0x2E,0x06,0x06,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xF0, 48 0xF0,0x00,0x00,0xC0,0xC0,0x80,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77, 0xFE,0xFF,0xFF,0xFE,0xF6,0x7E,0x3E,0x36,0x1E,0x3E,0x3E,0x3E,0x2E,0x6E,0xFE,0xFE, 0xFC,0xFC,0xFC,0xEE,0xFE,0x7C,0x7C,0x7C,0x7C,0x78,0xD8,0xD8,0xF8,0xFC,0xFD,0xBC, 0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x0C,0x3C,0x0C,0x1C,0x3C,0x1C,0x98,0x19,0x11,0x01,0x10, 0x18,0x18,0x1C,0x98,0x19,0xB9,0xF9,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, 0xF0,0xF0,0xF0,0xF8,0xFC,0xFD,0xF9,0xF9,0xF9,0xF1,0xF0,0xF1,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x06,0x07,0x17,0x33,0x33,0x23,0x23, 0x23,0x00,0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0, 0xFF,0xF7,0xF7,0xFF,0xE3,0xE0,0xF1,0xE1,0xE2,0xE0,0xE0,0xE1,0xE0,0xE0,0xEF,0xEF, 0xFF,0xF7,0xC7,0xE7,0xFF,0xDE,0xC2,0xE9,0xFA,0xCC,0xC0,0xE1,0xFF,0xFF,0xFF,0xFF, 0xBB,0xB9,0x39,0xA8,0xB8,0xC1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, 0x07,0x47,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x3F,0x1F,0x87,0xC1,0x60,0xA0,0xE0,0xF8, 0xFE,0xFF,0xFF,0xC8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x0C, 49 0x0C,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xA3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x7F,0x3F,0x3E,0x1E,0x1F,0x1F,0x0F,0x0F,0x0F,0x07,0x07,0x07,0x07, 0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xE0,0xC0,0x80,0x00,0x80, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07, 0x0F,0x0F,0x0F,0x1F,0x1F,0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x1C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F, 0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0xFF,0xEF,0xFF,0xFE, 50 0xFF,0xFF,0xFF,0xFE,0xBE,0xBC,0xF8,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x0F,0x3F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xEE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x07,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x03,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; uchar code laogong[][16]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x81,0xC1,0xC1,0xE1,0xF1,0xF1,0xF1,0xFF,0 51 xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFD,0xFD,0xFD,0xFD,0xFD,0xF9,0xF1,0xE1,0x81,0x01,0x01,0x01, 0x01,0x01,0x01,0x11,0x41,0x01,0x01,0xF5,0x01,0x01,0x11,0x01,0x01,0x01,0x01,0x01, 0x09,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x81,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0xF7,0x31,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x41,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0, 0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF0, 0xE0,0x00,0x00,0x00,0x18,0x00,0x06,0x83,0x3E,0x18,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x70,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xC0,0x0E,0x00,0x00,0x00,0x10,0x00,0xC3,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x 52 FF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xE0,0x40,0x00,0x00,0x06,0x13,0xF0,0x20,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x60,0x00,0x11,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x02, 0xC0,0x00,0x02,0x00,0x80,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x40,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x02,0x3B,0xFC,0x3C,0x78,0xC0,0x00,0x00,0x00, 0x00,0x00,0x80,0x78,0x0E,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x18,0x1A,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x 53 FF,0xFF,0xFF,0xFF,0x7F, 0x07,0x0F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x09,0x1D,0xC8,0x03,0x86,0x70,0x00, 0x00,0x20,0x07,0x00,0x10,0x1C,0x03,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x43,0xC0,0x00,0x00,0x04,0x00,0x61,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, 0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xF0, 0xE0,0xE0,0xE0,0xE0,0xE1,0xE7,0xC7,0x6F,0x0F,0x0F,0x4F,0x67,0xC7,0x87,0x03,0x03, 0x03,0x03,0x83,0x83,0x01,0xF0,0x80,0xB0,0xFF,0xFF,0xFF,0x03,0x07,0x1F,0x1F,0x81, 0xF3,0xFF,0x1F,0x00,0xE0,0x00,0x26,0x00,0x60,0x80,0x62,0xFF,0xFE,0xFE,0x1F,0xC0, 0x7C,0x38,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xE0,0xFC,0xFE,0xF0, 0xFB,0x3F,0x83,0xC0,0xE0,0x80,0x00,0x47,0x40,0x10,0x18,0x1B,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x 54 FF,0xFF,0xFF,0xFF,0xF7, 0xF7,0x77,0x7F,0x79,0x79,0x78,0xF0,0x70,0x70,0x70,0x70,0x3C,0x2F,0x39,0x30,0xA6, 0x8F,0x8F,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xF7,0x87,0xFC,0xFC,0xFE,0x1F,0xC7, 0x20,0x20,0x0D,0xF9,0x60,0x00,0x00,0x07,0x03,0xE0,0xE1,0x07,0x06,0xFF,0xFC,0x21, 0x80,0x00,0x40,0x00,0x00,0x83,0x9F,0x4F,0x80,0x36,0x38,0xFE,0xFF,0xEF,0xFF,0xDF, 0xFF,0xFF,0xFF,0xDF,0xDF,0xB2,0xA3,0x00,0x78,0xE8,0xE8,0xFC,0x00,0x00,0x00,0x00, 0x00,0x88,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x1F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F, 0x8F,0x8F,0x9F,0x8F,0x8F,0x0F,0x07,0x03,0x00,0x00,0x80,0x80,0xC0,0xE0,0xF8,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x07,0xC3,0x81,0x87,0x0F, 0x7E,0xFC,0xFF,0x27,0x00,0x9C,0x00,0x80,0xF0,0x9F,0x82,0x00,0x00,0xFF,0xFF,0x80, 0xE0,0x18,0x08,0x7E,0xFE,0xF0,0xC0,0x83,0x70,0xFE,0xF0,0xFF,0xFF,0xF1,0xFF,0xFF, 0xFF,0xFF,0x1F,0xC0,0x03,0x01,0x0F,0xFF,0xFF,0xFF,0x58,0xFF,0x00,0x00,0x00,0x00 }; /************shizhong.h**************/ bit flag,flag1; 55 uchar s=20,f=58,m=40,g; uint num,n,y,r,j,l; /*********按键******/ sbit k1=P3^0; sbit k2=P3^1; sbit k3=P3^2; /*******蜂鸣器****/ sbit beep=P3^6; /*******AD*******/ sbit cs=P2^5; sbit rd=P2^6; sbit wd=P2^7; /***********定时器初始化***********/ void timer() { TMOD|=0X11; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TH1=(65535-100)/256; TL1=(65535-100)%256; TR0=1; ET0=1; ET1=1; TR1=1; EA=1; } /***********时钟进制**********/ void shizhong() { if(flag==1) { 56 m++; if(m==60) { m=0; f++; if(f==60) { f=0; s++; if(s==24) { s=0; r++; } } } } flag=0; } /***************按键************/ void key_scan() { if(k1==0) { if(k1==0) { TR0=0; while(!k1); m++; if(m==60) { m=0; 57 } TR0=1; } } if(k2==0) { if(k2==0) { TR0=0; while(!k2); f++; if(f==60) { f=0; } TR0=1; } } if(k3==0) { if(k3==0) { TR0=0; while(!k3); s++; if(s==24) { s=0; } TR0=1; } } 58 } /**********时间显示*************/ void disp(uint temp,uint temp1) { temp=temp*195/10; temp1=temp1*100/255; disp16(1,4,40,kg[g]); disp8(1,0,48,shuzi[s%100/10]); disp8(1,0,56,shuzi[s%10]); disp8(2,0,0,fu); disp8(2,0,8,shuzi[f%100/10]); disp8(2,0,16,shuzi[f%10]); disp8(2,0,24,fu); disp8(2,0,32,shuzi[m%100/10]); disp8(2,0,40,shuzi[m%10]); /*************电压显示************/ disp8(1,2,40,shuzi[temp%10000/1000]); disp8(1,2,48,DD); disp8(1,2,56,shuzi[temp%1000/100]); disp8(2,2,0,shuzi[temp%100/10]); disp8(2,2,8,shuzi[temp%10]); /**************占空比%*************/ disp8(2,2,24,zhankongbi[l]); disp8(2,2,32,shuzi[temp1%1000/100]); disp8(2,2,40,shuzi[temp1%100/10]); disp8(2,2,48,shuzi[temp1%10]); disp8(2,2,56,bafen); } void Beep(void) { /*****************整点报时*******************/ 59 if((s==00||s==1||s==2||s==3||s==4|| s==5||s==6||s==7||s==8||s==9|| s==10||s==11||s==12||s==13||s==14|| s==16||s==17||s==18||s==19||s==20|| s==21||s==22||s==23)&&(f==59)&&((m>30&&m<=59))) { beep=!beep; flag1=1; } else { flag1=0; } if(flag1==1) { g=0; } if(flag1==0) { g=1; } } /*************AD_0804转换**************/ uchar AD_0804() { cs=0; wd=1; wd=0; wd=1; _nop_(); rd=0; num=P1; 60 delay(10); cs=1; rd=1; if(num>=148) { j=0; } if(num<148) { j=1; } if(num==0) { l=0; } if(num>0&&num<=25) { l=1; } if(num>25&&num<=51) { l=2; } if(num>51&&num<=102) { l=3; } if(num>102&&num<=153) { l=4; } if(num>153&&num<=204) 61 { l=5; } if(num>204&&num<255) { l=6; } if(num==255) { l=7; } disp16(2,4,32,jiajian[j]);//电机快速慢速 return (num); } /****************18b20.h**************/ #include #define uchar unsigned char #define uint unsigned int #define nop() _nop_() sbit DQ=P3^7; bit kk=0; uint f_temp; uint temp; /**************18B20**************/ void inti() { DQ=1; delay(8); DQ=0; delay(90); DQ=1; 62 nop(); nop(); delay(100); DQ=1; } /*****************写数据**********/ void write(uchar date) { uchar i; for(i=0;i<8;i++) { DQ=0; DQ=date&0x01; delay(5); DQ=1; date>>=1; } } /***************读数据**************/ uchar read() { uchar i,date=0; DQ=1; nop(); for(i=0;i<8;i++) { DQ=0; nop(); nop(); date>>=1; DQ=1; 63 nop(); nop(); if(DQ==1) date|=0x80; delay(30); DQ=1; } return (date); } /**************读温度******************/ uchar read_wendu() { uint a,b; inti(); write(0xcc); write(0x44); inti(); write(0xcc); write(0xbe); a=read(); b=read(); b<<=4; b+=(a&0xf0)>>4; temp=read(); temp<<=8; temp|=a; f_temp=(temp*0.625)*10000; if(b>128) { b=~b+1; kk=1; } 64 else { kk=0; } return (b); } /***************18b20整数显示函数******************/ void ds18b20() { uint dat; dat=read_wendu(); if(kk==1) { disp8(1,6,40,fu); disp8(1,6,48,shuzi[dat%100/10]); disp8(1,6,56,shuzi[dat%10]); } if(kk==0) { disp8(1,6,40,shuzi[dat%1000/100]); disp8(1,6,48,shuzi[dat%100/10]); disp8(1,6,56,shuzi[dat%10]); } } /***************18b20小数显示函数*****************/ void f_18b20() { disp8(2,6,8,shuzi[f_temp%10000/1000]); disp8(2,6,16,shuzi[f_temp%1000/100]); disp8(2,6,24,shuzi[f_temp%100/10]); disp8(2,6,32,shuzi[f_temp%10]); 65 } /**************delay.h****************/ #define uchar unsigned char #define uint unsigned int /***********延时函数*********/ void delay(uint z)//us级延时 { while(--z); } void delay_ms(uint ms)//ms级延时 { uchar i; while(ms--) { for(i=110;i>0;i--); } } 66 致 谢 大学生涯即将结束,临近毕业,我感慨颇多。在论文的设计过程中,我查阅了许多有关压电传感器、A/D转换和C程序设计方面的文献资料,使我对压电传感器的设计和使用有了更深的认识。从论文选题到完成论文,陈得宝老师付出了大量心血,设计过程中,他从多方面进行指导,不断对论文提出修改意见。论文的完成,不仅是我大学三年知识积累的体现,而且也是物电学院所有老师悉心教导的结果,感谢他们让我掌握了一定的专业知识,专业技能和一些做人的道理。同时,我也要感谢周围不断鼓励、支持、帮助我的同学们,是你们的友情、关心、爱心让我倍感生活的精彩和温暖。 67 本组成员 68
本文档为【毕业设计AD0804脉宽调制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_037433
暂无简介~
格式:doc
大小:596KB
软件:Word
页数:81
分类:生产制造
上传时间:2017-10-01
浏览量:12