




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.../...智能流量计设计制作与调试说明书电子1411班姓名:龚亚辉学号:2016年12月08日目录1.绪论11.1〔智能流量计的发展现状11.2本次设计主要任务12.智能流量计硬件设计22.1系统总体设计22.2电源电路设计22.3主控电路设计32.4流量检测电路设计42.5按键与显示电路设计63.智能流量计软件设计73.1程序结构说明73.2OLED显示程序设计83.3A/D转换程序设计83.4流量运算程序设计94.电路制作调试114.1电路制作与调试114.2程序调试125.总结13附录一电路原理图14附录二印刷电路板图15附录三电路成品图16附录三实现功能演示16附录四程序清单171.绪论1.1〔智能流量计的发展现状随着仪器仪表和信息管理的高度自动化,以计算机为核心的信息处理与过程控制相结合的智能仪器系统应运而生。智能仪器是计算机技术与测试技术相结合的产物,是含有微计算机或微处理器的测量仪器。由于他拥有对数据的存储、运算、逻辑判断和自动化操作等功能,具有一定的智能作用,因而被称为智能仪器。智能仪器的出现,极大地扩充了传统仪器的应用范围。智能仪器凭借其体积小、功能强、功耗低等优势,迅速地在家用电器、科研单位和工业企业中得到了广泛的应用。仪器仪表行业中涉及产品很多,从技术的发展形式来看,仪器仪表的智能化是不可逆转的趋势,数字技术应用在仪表之中,不仅仅使它的性能以及精度得到了很快的提升,然而伴随着现场总线的出现为仪表的更新换代及升级实现了进一步的提高。特别是多参数的在线实时测控和自动化测控,不论是稳定性、可靠性,还是高适应性、多功能性及低消耗等等提供了巨大的发展空间和动力。让智能仪表的信息交换更为迅速。1.2本次设计主要任务本次课程设计中以智能仪表为背景,将研究设计并制作一台智能流量计,主要研究内容是对流量进行检测,主要由流量传感器采集流量信息,然后经过LM331芯片将采集的信息转换为频率信号,再由单片机内部AD转换器将频率信号转换为电压信号传给单片机,单片机在软件系统的控制下,通过算法将电压信号变成实际流量值,并通过OLED屏显示出来。其中,硬件电路的搭接是本设计的重点,控制系统软件的设计是本课题的核心。硬件电路部分,采用STC15单片机,CH40、LM331、LM358等构成单片机控制系统的主体部分。通过脉冲流量传感器,温度传感器进行输入,测量瞬时流量和累计流量。一些其他的功能,如设置参数,OLED显示,定时休屏等功能。系统软件设计部分,分别对AD转换控制,OLED显示,按键设置,休屏键等程序进行了设计,并且设计了主程序和流量控制计算程序。2.智能流量计硬件设计2.1系统总体设计为了适应现代对仪表功能的需求,可以智能化的检测水流量,并且实时在屏幕上动态显示数据的目的,因此我们设计利用了STC15单片机来完成。这个系统可以实现瞬时流量的检测,还有累计流量,温度的检测。当单片机接受到水流量发出的信号,STC15单片机就会下达指令。水流量的情况传输到传感器中,通过STC15单片机进行处理扫描到的水流量脉冲数,然后在OLED上显示出水流量的数据。本方案利用Keilc软件使用C语言进行程序设计,AltiumDesigner软件实现电路和PCB的设计。SSTC15单片机流量处理电路按键电路流量处理电路按键电路温度处理电路下载电路温度处理电路下载电路电源电路电源电路OLED显示OLED显示2.2电源电路设计此系统可以通过三种方式分别供电,一种是有USB端口连接上位机直接通电5V电源,另外一种则是采用外部4.8v~10v供电,通过REG1117-5芯片转换为稳定的5V电源给系统供电,还有一种则是通过干电池作为系统的备用电源,在没有外接电源时使用。电路中有5V供电后,再由正向低压降稳压器AMS1117-3.3将5V电源转为3.3V给相应的电路供电。电路图如下。2.3主控电路设计单片机是把微处理器、存储器、I/O接口。定时器/计数器、串行接口、中断系统和其它电路组合在单个芯片组合完成的单片计算机,单片机作为微型计算机的一个分支,是基于测控领域的发展而诞生和发展的。在我国使用最多的是Intel公司的C51系列单片机。而本次电路我们使用了STC15F2K60S2单片机,这款单片机不需要外部晶振和外部复位电路,可省掉外部EEPROM,利用IAP/ISP技术,可以实现在线编程,无需编程器/仿真器,内部有2K字节SRAM,双串口,两个独立串口,高速10位8通道A/D转换器等丰富的功能。它与C51相比,STC15F2K61S2其优点是,省去晶振、复位电路,内部以高可靠,高精度集成了,这个非常实用,做板的时候能很简洁,也省了很多事情,再也不用为了更换晶振什么的发愁。对于此次课题设计来使用,它的外设比较丰富,在线仿真ADC/DAC/PWM/E2PROM等基本满足智能流量计功能的需求。2.4流量检测电路设计流量检测部分采用水流量传感器,如图1所示,它的组成部分塑料阀体、水流转子组件和霍尔传感器组成。它装在热水器进水端,用于检测进水流量,当水通过水流转子组件时,磁性转子转动并且转速随着流量变化而变化,霍尔传感器输出相应脉冲信号,反馈给LM331芯片,这款芯片是由美国NS公司生产的性能价格比较高的集成芯片,精密频率电压转换器,就是由它将水流量传感器输出的脉冲值由于频率转换为模拟量电压值,反馈给STC15F2K61S2芯片内部ADC转换器,然后通过算法求出单位流量并显示在OLED屏上。课题任务中最重要的是水流量的测量。通过水流量传感器的数据采集,根据不同的水流量传感器的参数可以得出单片机在运算时的数据。水流量传感器一般在零下10摄氏度到55摄氏度的环境温度下可正常运行。在电路和传感器正常工作的情况下,我们根据LM331芯片和水流量传感器提供的技术文档得出了以下两个核心算法,这个也是我们整个电路能否实现正常测量的关键部分。1.f0=1/<t1+t2>=VL/<RLIRt1>2.频率计算=常数7.5*单位流量〔L/min*时间〔秒图〔1.流量传感器2.5按键与显示电路设计为了实现水流量计的智能化,还有对减少电能的消耗增加使用寿命,在电路中我们增加了三个按键,分别用于控制OLED屏幕的点亮和休屏、进入设置模式,对参数进行修改。对于OLED屏幕的控制我们采用1min钟自动息屏,同时可以用按键唤醒,在屏幕亮的过程中也可以通过按键进行息屏,自动息屏的时间通过按键进入设置模式进行修改,休屏时间范围在1~9分钟之间。当然,通过进入设置模式还可以设置仪表常数、仪表编号,在实际产品出厂的时候可以得到应用。显示电路我们采用0.96寸OLED显示屏模块,OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。这款分辨率为128*64,与单片机通讯采用SPI通讯。SPI通讯由串行时钟<SCLK>、串行数据输出<SDO>、串行数据输入<SDI>。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备<Master>,其他设备为SPI从机或从设备<Slave>。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。SPI通讯相当于I2C和UART而言实现简单,有时钟协议。3.智能流量计软件设计3.1程序结构说明软件总的设计要求需要OLED显示瞬时流量、累计流量及其温度,并且能在设置中设置相关参数,调整息屏时间。水流量的测量为0.25秒读取一个流量值。OLED屏开机在第一行显示瞬时流量、第二行为累计流量、第三行为温度,在无按键操作的话默认1分钟后息屏。设置界面由按键控制。进去设置界面后屏幕不需息屏,其中的参数值则通过另一个按键控制。整个程序中结构较为简单,但其中也有几个重要而且比较费脑筋的子程序,包括水测量程序、水流量数据的计算与转换、温度数据转换等程序。在程序中可以分为4个主要模块:水流量模块,温度模块,OLED显示模块,设置模块。如图为总体流程图。系统初始化系统初始化流量测量流量测量温度测量温度测量息屏时间判断息屏时间判断YNYNK3锁屏键操作K3锁屏键操作屏幕常亮屏幕息屏按键判断按键判断无按键操作K2按键操作无按键操作K2按键操作K1按键设置程序显示测量数值界面显示设置界面K1按键设置程序显示测量数值界面显示设置界面3.2OLED显示程序设计本课题采用的是STC15单片机为控制核心,由中景园电子提供的0.96寸OLED模块为显示输出设备,如图2所示,在Keil环境下编写OLED显示模块驱动程序,并下载Hex文件至单片机,从而实现OLED显示系统设计。由于所采用的OLED不带字库,因此无论是显示图形还是显示汉字,均需通过取模软件进行编码,然后按SPI协议,将对应的编码按照所确定的地址模式写入对应的CDDRAM中。系统初始化系统初始化OLEDOLED初始化OLED清屏OLED清屏调用显示字符调用显示字符OLED显示OLED显示图〔2.0.96寸OLED屏图〔2.0.96寸OLED屏3.3A/D转换程序设计本次课题我们采用的是STC15单片机,此款单片机内置有高速10位8通道A/D转换器,它就是把模拟信号转换成数字信号,采用逐次逼近型进行转换。我们将选用P1.4、P1.5为流量传感器和温度传感器的模拟量输入端,其中流量传感器先由LM331转换为电压信号,单片机的内部ADC转换器再将其由电压信号转换为数字量进行计算得出实际流量值,而温度传感器的转换就相对比较简单,通过电桥电路和LM358芯片输入一个模拟量电压,再由单片机进行AD转换为为数字量进行计算。下图为AD转换的程序框图系统初始化系统初始化选择通道,允许AD转换选择通道,允许AD转换读取温度传感器输入电压读取温度传感器输入电压读取LM331输入电压读取寄存器参数读取寄存器参数N转换是否结束N转换是否结束YY读取转换值读取转换值数据处理数据处理3.4流量运算程序设计我们这次使用的水流量传感器也可以称为脉冲流量传感器,内部核心实质上是一对霍尔元件,通过当水通过水流转子组件时,磁性转子转动并且转速随着流量变化而变化,霍尔传感器输出相应脉冲信号,反馈给控制器。通过流量传感器的技术文档我们可知,此款传感器输出的脉冲频率与实际流量值的关系为"频率=常数7.5*单位流量〔L/min*时间〔秒"。而我们电路中采用的是先将频率转换为模拟量电压值,此过程是由LM331芯片完成,这款芯片是美国NS公司生产的性能价格比较高的集成芯片,可用作精密频率电压转换器,通过查阅资料我们可知输入芯片和输出电压值的关系量为"f0=1/<t1+t2>=VL/<RLIRt1>",从它的公式不难看出输出电压的精准度与芯片外部电路有很大关系,所以在硬件设计上要很仔细。通过这两个算法得出的实际流量值,我们使用定时器0.25秒读取一个值,再将这个值除以240得到每秒的流量值,通过累加便实现了累计流量的功能。下图为流量运算程序框图读取AD转换值读取AD转换值计算瞬时流量值计算温度值系统初始化计算瞬时流量值计算温度值系统初始化计算累计流量值计算累计流量值4.电路制作调试4.1电路制作与调试本次硬件设计我们使用的是AltiumDesigner16软件进行设计,并对PCB板进行排版。在这个过程中的重点难点在与硬件电路的设计,各个芯片的外部电路的搭建,还有在进行PCB排版是每个元器件的封装的绘制。在电路设计初期我们首先需要知道电路所需要实现的功能,然后根据功能去选择相对适合的单片机,以及实现各功能所需要使用的传感器及其芯片。对电路需要有大致的设计框架,然后查找每个芯片典型的外部电路,并在此基础上加以改进。在对PCB排版时,我们需要注意的是每个元器件的封装尺寸,都要去网上查阅资料,防止在焊接时才发现封装不对,而导致无法焊接或焊接困难,这个部分也是PCB排版中很重要的一部分。当然还要注意的是每个元器件放置的位置要根据实际情况进行安排,如USB口、电源接口需要放置在板子边缘等。在完成PCB的排版和制作后,接下来的就是焊接,这里我们将使用的是电烙铁,在这个步骤中特别需要注意,元器件不要焊错正反、焊点不要虚焊,对于芯片不宜焊接时间过长,以免烫烧芯片等。在调试部分我们采用分块调试法,分布调试就是把总体电路按功能分成若干个模块,对每个模块分别进行调试。模块的调试顺序是按信号的流向,一块一块地进行,逐步扩大调试范围,最后完成总调。实施分块调试法有两种方式,一种是边安装边调试,即按信号流向组装一模块就调试一模块,然后再继续组装其他模块。另一种是总体电路一次组装完毕后,再分块调试。4.2程序调试在这次课程设计中,我们首先对系统的整体功能进行了构思,然后用结构化分析方法进行分析,将整个系统清楚的划分为几个模块,再根据每个模块的功能编写。代码。而且尽可能的将模块细分,最后在进行函数的调用。我们在函数的编写过程中,我们不仅用到了for循环、while循环,还用到了函数之间的调用。由于是分工编写代码,所以显示程序,AD程序,设置程序等都是子程序,最后需要将每个子程序代码放到一起进行调试。整个过程中我们使用的是KEIL4,进行编程。当然程序不是一次性就可以完成的,需要一个功能一个功能的调试累加,首先我们先编写的是OLED显示程序,在保证OLED正常显示的前提下,对于AD程序进行编写,让流量和温度正常显示在OLED上,之后就是对设置模式的编写,足步往下,步步深入。在每次编写好之后都要生成HEX文件,把得到HEX文件就可以下载到STC15中了。这里要简单的说下,打开下载软件后,在打开的对话框里选择好单片机的型号即IAP15F2K61S2,接下来将STC系统板和电脑用USB连接,选择好端口和波特率,因为我们的板子有冷启动,所以直接点击下载即可。5.总结实训是每一位大学生必须拥有的一段经历,它使我们在实践中增强专业技能,让我们学到了很多在课堂上根本就学不到的知识,增长了操作能力,把理论和实践结合,让我们以后更好地服务社会打下了坚实的基础。在这3周的实训中,虽然实习的时间很短,但对我来说,收获是很大的。这次实训让我深深地感觉到自己所学知识储备的不足,我们在学校学习的是理论上的东西,但是在实际设计实物的时候,实践和经验就显得更为重要,只有掌握更多实用的技能,积累更多的工作经验,才能提高工作效率与质量。在做这次设计时,我还通过互联网参考了许许多多出色的设计者分享的经验,学以致用,把好的经验吸取到我的设计中来使用。通过这次设计,更加加深了我在大学三年当中学到的软件和硬件概念的理解,对我的专业知识也进行了一次巩固和加深印象,同时也加深了我在实际研究问题的能力。这在我以后的学习生活中也会有很大的作用,使我深深的意识到,做事必须老老实实,一步一个脚印,抓好基础,研究好理论的重要性。这次设计是用C语言来编写的程序。在编写的过程当中,我通过学习互联网的许多资料,对整体的程序完成了一个完整的计划,遇到错误的地方及时更正,通过不断努力达到设计的要求。在这一过程中遇到了些问题,比如存储空间如何节省,这就要求自己对各个芯片元件的掌握程度要很高,通过不懈的学习,最终完成了程序的设计。这也是一个锻炼的过程。附录一电路原理图附录二印刷电路板图附录三电路成品图附录四实现功能演示附录五程序清单主程序//******************************************************************************/#include"stc15.h"#include"oled.h"#include"bmp.h"#include"xiumian.h"#include"Set.h"#include"AD.h"unsignedcharz;unsignedintleiji00;unsignedintyx1;voidxiumiansj<>{g=xiumianshijian*60;}voidliangmiao<>{if<q>=5>{q=0; z=<j*100000>/<1567500/18>; leiji00=<z*10000/240>+leiji00;}}voidyunxing<>{ if<yx==60>{yx=0; if<++yx1==24> {yx=0;} }}intmain<void>{ u8t; OLED_Init<>; //初始化OLED OLED_Clear<> ; t=''; dingshichu<>; OLED_DrawBMP<0,0,128,8,BMP1>; delay_ms<600>; OLED_Clear<>; while<1> {shezhianjian<>; //设置按键判断 // OLED_Clear<>; if<c==0>{ OLED_Clear<>; while<c==0>{ shezhianjian<>; //设置按键判断 anjian<>; //熄屏按键判断 xiumiansj<>; //休眠时间 pingmu<>; //点亮关闭屏幕判断 AD<>; //AD转换 yunxing<>; //运行时间 liangmiao<>; //休眠子程序 OLED_ShowCHinese<0,0,0>;//瞬 OLED_ShowCHinese<18,0,1>;//时 OLED_ShowCHinese<36,0,2>;//流 OLED_ShowCHinese<54,0,3>;//量 //两个字符间加18 OLED_ShowString<72,0,":">;//: //两列之间加2 OLED_ShowNum<80,0,z/10,1,16>; OLED_ShowString<91,0,".">; OLED_ShowNum<94,0,z%10,1,16>; OLED_ShowString<114,0,"L">; OLED_ShowCHinese<0,2,4>;//累 OLED_ShowCHinese<18,2,5>;//计 OLED_ShowCHinese<36,2,6>;//流 OLED_ShowCHinese<54,2,7>;//量 OLED_ShowString<72,2,":">;//: OLED_ShowNum<80,2,leiji00/100000,1,16>; //起点坐标x,起点坐标y,数值,数字的位数,字体大小 OLED_ShowNum<88,2,leiji00/10000%10,1,16>; OLED_ShowString<100,2,".">; OLED_ShowNum<105,2,leiji00/1000%10,1,16>; OLED_ShowString<114,2,"L">; OLED_ShowCHinese<0,4,8>;//温 OLED_ShowCHinese<18,4,9>;//度 OLED_ShowString<36,4,":">;//: OLED_ShowNum<80,4,1,1,16>; OLED_ShowNum<88,4,3,1,16>; OLED_ShowString<96,4,".">; OLED_ShowNum<101,4,4,1,16>; OLED_ShowCHinese<110,4,10>;//℃ OLED_ShowCHinese<0,6,28>;//运 OLED_ShowCHinese<18,6,29>;//行 OLED_ShowCHinese<36,6,17>;//时 OLED_ShowCHinese<54,6,18>;//间 OLED_ShowString<72,6,":">;//: OLED_ShowNum<80,6,yx1/10,1,16>; OLED_ShowNum<88,6,yx1%10,1,16>; OLED_ShowString<100,6,":">; OLED_ShowNum<108,6,yx/10,1,16>; OLED_ShowNum<116,6,yx%10,1,16>; }} else{ OLED_Clear<>; while<c==1|c==2|c==3> //设置按键判断 {shezhianjian<>; shezhixianshi<>;}} //设置屏幕显示 }} OLED显示初始化子程序//******************************************************************************/#include"stc15.h"#ifndef__OLED_H#define__OLED_H #defineu8unsignedchar#defineu32unsignedint#defineOLED_CMD0 //写命令#defineOLED_DATA1 //写数据#defineOLED_MODE0sbitOLED_CS=P2^3;//片选sbitOLED_RST=P2^5;//复位sbitOLED_DC=P2^4;//数据/命令控制sbitOLED_SCL=P2^7;//时钟D0〔SCLK?sbitOLED_SDIN=P2^6;//D1〔MOSI数据#defineOLED_CS_Clr<>OLED_CS=0#defineOLED_CS_Set<>OLED_CS=1#defineOLED_RST_Clr<>OLED_RST=0#defineOLED_RST_Set<>OLED_RST=1#defineOLED_DC_Clr<>OLED_DC=0#defineOLED_DC_Set<>OLED_DC=1#defineOLED_SCLK_Clr<>OLED_SCL=0#defineOLED_SCLK_Set<>OLED_SCL=1#defineOLED_SDIN_Clr<>OLED_SDIN=0#defineOLED_SDIN_Set<>OLED_SDIN=1;//OLED模式设置//0:4线串行模式//1:并行8080模式#defineSIZE16#defineXLevelL 0x02#defineXLevelH 0x10#defineMax_Column 128#defineMax_Row 64#define Brightness 0xFF#defineX_WIDTH 128#defineY_WIDTH 64 //OLED端口定义 voiddelay_ms<unsignedintms>; //OLED控制用函数voidOLED_WR_Byte<u8dat,u8cmd>; voidOLED_Display_On<void>;voidOLED_Display_Off<void>; voidOLED_Init<void>;voidOLED_Clear<void>;voidOLED_DrawPoint<u8x,u8y,u8t>;voidOLED_Fill<u8x1,u8y1,u8x2,u8y2,u8dot>;voidOLED_ShowChar<u8x,u8y,u8chr>;voidOLED_ShowNum<u8x,u8y,u32num,u8len,u8size2>;voidOLED_ShowString<u8x,u8y,u8*p>; voidOLED_Set_Pos<unsignedcharx,unsignedchary>;voidOLED_ShowCHinese<u8x,u8y,u8no>;voidOLED_DrawBMP<unsignedcharx0,unsignedchary0,unsignedcharx1,unsignedchary1,unsignedcharBMP[]>;#endif图片库程序//******************************************************************************/#ifndef__BMP_H#define__BMP_HunsignedcharcodeBMP1[]={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,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,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,0x0F,0x0F,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x0F,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x3F,0x7F,0xFF,0xFF,0x7F,0x7F,0x47,0x0F,0x7F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x0F,0x0F,0x07,0x07,0x47,0x07,0x0F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0x0F,0x1F,0x7F,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0x63,0x11,0x01,0x00,0xC0,0xD8,0x03,0x01,0xF1,0xF9,0x00,0x00,0xF9,0xFF,0xFF,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0x01,0x19,0x24,0x00,0x00,0x00,0x32,0x1C,0x00,0x80,0xF8,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xC7,0xFE,0x3E,0x0E,0xEE,0x24,0xE0,0x20,0x20,0xE2,0x12,0x90,0xE2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xF3,0xF3,0xF3,0x8B,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x81,0xE1,0xF9,0xF8,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xE3,0x03,0x03,0xE3,0x7F,0x37,0xE3,0xE3,0xE3,0xE3,0x00,0x00,0xE0,0xF1,0xF1,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFC,0xFE,0xFF,0xF0,0xE0,0xF9,0xFC,0xFC,0xFE,0xFF,0xFF,0xFE,0xFC,0xF9,0xF3,0xF3,0xF0,0xF0,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF8,0xF1,0xF3,0xE3,0xE3,0xE3,0xE3,0xF3,0xF1,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF1,0xF0,0xFC,0xF7,0xF1,0xF8,0xFF,0xF8,0xFC,0xFF,0xF0,0xE7,0xE7,0xE7,0xE7,0xE0,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xCF,0xE9,0xE0,0xE0,0xE0,0xE0,0xE4,0xE4,0xE7,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF0,0xF8,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xC0,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x1F,0x1F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0x1F,0x3F,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,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x18,0x1C,0x1E,0x9F,0x9F,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xF8,0x00,0x00,0x01,0xDF,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,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,0xFF,0xFF,0xFF,0xFE,0xF8,0xF0,0xE0,0xC0,0xC3,0xC7,0x87,0x8F,0x8F,0x87,0x87,0xC3,0xC3,0xE0,0xF0,0xF8,0xFC,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,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,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};#enif自动休眠和唤醒子程序//******************************************************************************/#ifndef__xiumian_H#define__xiumian_H#include"stc15.h"#include"oled.h"sbitk1=P4^6;unsignedinti;unsignedintg;unsignedintq;bitk=1;bitb=1;unsignedintmiao=0;unsignedintyx;voidanjian<>{if<k1==0>//低电平有效{delay_ms<80>;//检测到按键if<k1==0>{while<k1>;//直到松开按键k=~k; b=~b;}}}voidpingmu<>{ if<k==1&b==1> //判断是否在关屏时唤醒{OLED_Display_On<>;TR1=1;} //开启屏幕,同时开启定时器 elseif<k==0|b==0> //判断是否在点亮是关屏 {OLED_Display_Off<>;miao=0;TR1=0;b=0;k=0;} //关闭屏幕,同时关闭定时器,清零标记位}voidtimer_1<>interrupt3{TL1=0xB0; //设置定时初值TH1=0x3C; //设置定时初值 i++; q++; if<i==20> {i=0; miao++; yx++; if<miao==g> //休眠时间 {miao=0; b=0;} } }voiddingshichu<>{ TMOD=0x10; //设置定时器模式 TL1=0xB0; //设置定时初值TH1=0x3C; //设置定时初值 ET1=1; //清除TF1标志 TR1=1; //定时器1开始计时 EA=1;}设置子程序//******************************************************************************/#ifndef__Set_H#define__Set_H#include"stc15.h"#include"oled.h"sbitk2=P4^5; //设置模式选择sbitk3=P4^4; //加数unsignedintc=0;//设置模式标记位unsignedintd=0;//瞬时流量小数点前两位unsignedinte=0; //瞬时流量小数点后一位unsignedintf=0;//unsignedintg; //休眠时间unsignedintshunxiaoshu=0; //瞬时小数 unsignedintleixiaoshu=0; //累计小数 unsignedintxiumianshijian=1;voidshezhianjian<>{if<k2==0&b==1>//低电平有效{delay_ms<80>;//检测到按键if<k2==0>{while<k2>;//直到松开按键c++; if<c!=0>{ while<++f==1> {OLED_Clear<>;} }}}}voidjiashuanjian<>{if<k3==0&b==1>//低电平有效{delay_ms<80>;//检测到按键if<k3==0>{while<k3>;//直到松开按键 if<c==1> { if<++shunxiaoshu==999> {shunxiaoshu=0; } } elseif<c==2> {if<++leixiaoshu==999> {leixiaoshu=0;} } elseif<c==3> {if<++xiumianshijian==10> {xiumianshijian=1;} } }}}voidshezhixianshi<>{ miao=0;OLED_ShowCHinese<30,0,11>;//设 OLED_ShowCHinese<48,0,12>;//置 OLED_ShowCHinese<66,0,13>;//模 OLED_ShowCHinese<84,0,14>;//式 if<c==1>{ f=0; jiashuanjian<>; OLED_ShowCHinese<0,4,19>;//仪 OLED_ShowCHinese<16,4,20>;//表 OLED_ShowCHinese<31,4,21>;//常 OLED_ShowCHinese<47,4,22>;//数 //两个字符间加18 OLED_ShowString<60,4,":">;//: //两列之间加2 OLED_ShowNum<68,4,shunxiaoshu/100,1,16>; OLED_ShowNum<76,4,shunxiaoshu/10%10,1,16>; OLED_ShowNum<84,4,shunxiaoshu%10,1,16>; OLED_ShowCHinese<92,4,27>;//个 OLED_ShowString<107,4,"/I">; } elseif<c==2>{ f=0; jiashuanjian<>; OLED_ShowCHinese<0,4,23>;//累 OLED_ShowCHinese<15,4,24>;//计 OLED_ShowCHinese<30,4,25>;//流 OLED_ShowCHinese<45,4,26>;//量 OLED_ShowString<60,4,":">;//: OLED_ShowNum<68,4,leixiaoshu/100,1,16>; OLED_ShowNum<76,4,leixiaoshu/10%10,1,16>; OLED_ShowNum<84,4,leixiaoshu%10,1,16>; } elseif<c==3>{ f=0; jiashuanjian<>; OLED_ShowCHinese<0,4,15>;//休 OLED_ShowCHinese<18,4,16>;//眠 OLED_ShowCHinese<36,4,17>;//时 OLED_ShowCHinese<54,4,18>;//间 OLED_ShowString<72,4,":">;//: OLED_ShowNum<90,4,xiumianshijian%10,1,16>; OLED_ShowString<102,4,"min">; } elseif<c==4>{c=0;}}AD子程序//******************************************************************************/#ifndef__AD_H#define__AD_H#include<stc15.H>//REG51中不包括相关特殊寄存器,需要另外声明#include<intrins.H>//函数运算头文件#defineuintunsignedint//宏定义变量uint为无符号整型数据〔0-65535#defineucharunsignedchar//宏定义变量uchar为无符号字符型数据〔0-255#defineADC_POWER0x80//ADCpowercontroldit<宏定义ADC电源控制位>10000000#defineADC_FLAG0x10//ADCcompleteflag<宏定义ADC完成标志位>00010000#defineADC_START0x08//ADCstartcontroldit<宏定义ADC启动控制位>00001000#defineADC_SPEEDLL0x00//420clocks<宏定义420时钟>速度控制00000000#defineADC_SPEEDL0x20//280clocks<宏定义280时钟>速度控制00010000#defineADC_SPEEDH0x40//140clocks<宏定义140时钟>速度控制00100000#defineADC_SPEEDHH0x60//070clocks<宏定义70时钟>速度控制00110000voidInitADC<>;//初始化ADC子程序声明ucharzhADC<ucharch>;//ADC转换子程序声明voiddelayms<uintk>;//1ms延时子程序声明voidSR<>;//执行AD转换结果子程序声明unsignedcharj;/*主函数〔无返回值,无参数*/voidAD<>{P1M1=0x01;//P1.0高阻P1.1强推挽:00000001ADC输入高阻、继电器强上拉P1M0=0x02;//P1.0高阻P1.1强推挽:00000010ADC输入高阻、继电器强上拉 zhADC<5>;InitADC<>;//InitADCsfr<初始化ADCSFR>}/*初始化ADC*/voidInitADC<> {P1ASF=0x20;//设置P1.0端口作为模拟输入ADC_RES=0;//Clearpreviousresult<清除以前的结果>ADC_CONTR=ADC_POWER|ADC_SPEEDLL;//开启ACD电源、设置转换速度delayms<1>;//上电延时}/*GetADCResult〔获取ADC结果*/ucharzhADC<ucharch>//zhADC<获取ADC结果>{ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;//启动转换_nop_<>;//4个时钟延时_nop_<>;_nop_<>;_nop_<>;while<!<ADC_CONTR&ADC_FLAG>>;//waitcompleteflag〔等待完成标志ADC_CONTR&=~ADC_FLAG;//CloseADC〔关闭ADC//returnADC_RES;//ReturnADCresult〔返回ADC结果 j=<ADC_RES*5*100>/256;} /*1ms延时子程序〔12M晶振*/voiddelayms<uintk>{uinti,j;for<i=k;i>0;i-->for<j=747;j>0;j-->;}OLED显示子程序//******************************************************************************/#include"oled.h"#include"oledfont.h" voiddelay_ms<unsignedintms>{ unsignedinta; while<ms> { a=1800; while<a-->; ms--;} return;}#ifOLED_MODE==1//向SSD1106写入一个字节。//dat:要写入的数据/命令//cmd:数据/命令标志0,表示命令;1,表示数据;voidOLED_WR_Byte<u8dat,u8cmd>{ DATAOUT<dat>; if<cmd> OLED_DC_Set<>; else OLED_DC_Clr<>; OLED_CS_Clr<>; OLED_WR_Clr<>; OLED_WR_Set<>; OLED_CS_Set<>; OLED_DC_Set<>; } #else//向SSD1306写入一个字节。//dat:要写入的数据/命令//cmd:数据/命令标志0,表示命令;1,表示数据;voidOLED_WR_Byte<u8dat,u8cmd>{ u8i; if<cmd> OLED_DC_Set<>; else OLED_DC_Clr<>; OLED_CS_Clr<>; for<i=0;i<8;i++> { OLED_SCLK_Clr<>; if<dat&0x80> {OLED_SDIN_Set<>;} else OLED_SDIN_Clr<>; OLED_SCLK_Set<>; dat<<=1;} OLED_CS_Set<>; OLED_DC_Set<>; }#endif voidOLED_Set_Pos<unsignedcharx,unsignedchary>{ OLED_WR_Byte<0xb0+y,OLED_CMD>; OLED_WR_Byte<<<x&0xf0>>>4>|0x10,OLED_CMD>; OLED_WR_Byte<<x&0x0f>|0x01,OLED_CMD>;} //开启OLED显示voidOLED_Display_On<void>{ OLED_WR_Byte<0X8D,OLED_CMD>;//SETDCDC命令 OLED_WR_Byte<0X14,OLED_CMD>;//DCDCON OLED_WR_Byte<0XAF,OLED_CMD>;//DISPLAYON}//关闭OLED显示voidOLED_Display_Off<void>{ OLED_WR_Byte<0X8D,OLED_CMD>;//SETDCDC命令 OLED_WR_Byte<0X10,OLED_CMD>;//DCDCOFF OLED_WR_Byte<0XAE,OLED_CMD>;//DISPLAYOFF} //清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!! voidOLED_Clear<void>{ u8i,n; for<i=0;i<8;i++> { OLED_WR_Byte<0xb0+i,OLED_CMD>;//设置页地址〔0~7 OLED_WR_Byte<0x00,OLED_CMD>;//设置显示位置—列低地址 OLED_WR_Byte<0x10,OLED_CMD>;//设置显示位置—列高地址 for<n=0;n<128;n++>OLED_WR_Byte<0,OLED_DATA>; }//更新显示}//在指定位置显示一个字符,包括部分字符//x:0~127//y:0~63//mode:0,反白显示;1,正常显示 //size:选择字体16/12voidOLED_ShowChar<u8x,u8y,u8chr>{ unsignedcharc=0,i=0; c=chr-'';//得到偏移后的值 if<x>Max_Column-1>{x=0;y=y+2;} if<SIZE==16> { OLED_Set_Pos<x,y>; for<i=0;i<8;i++> OLED_WR_Byte<F8X16[c*16+i],OLED_DATA>; OLED_Set_Pos<x,y+1>; for<i=0;i<8;i++> OLED_WR_Byte<F8X16[c*16+i+8],OLED_DATA>; } else{ OLED_Set_Pos<x,y+1>; for<i=0;i<6;i++> OLED_WR_Byte<F6x8[c][i],OLED_DATA>; }}//m^n函数u32oled_pow<u8m,u8n>{ u32result=1; while<n-->result*=m; returnresult;} //显示2个数字//x,y:起点坐标 //len:数字的位数//size:字体大小//mode:模式 0,填充模式;1,叠加模式//num:数值<0~4294967295>; voidOLED_ShowNum<u8x,u8y,u32num,u8len,u8size2> { u8t,temp; u8enshow=0; for<t=0;t<len;t++> { temp=<num/oled_pow<10,len-t-1>>%10; if<enshow==0&&t<<len-1>> { if<temp==0> { OLED_ShowChar<x+<size2/2>*t,y,''>; continue; }elseenshow=1; } OLED_ShowChar<x+<size2/2>*t,y,temp+'0'>; }}//显示一个字符号串voidOLED_ShowString<u8x,u8y,u8*chr>{ unsignedcharj=0; while<chr[j]!='\0'> { OLED_ShowChar<x,y,chr[j]>; x+=8; if<x>120>{x=0;y+=2;} j++; }}//显示汉字voidOLED_ShowCHinese<u8x,u8y,u8no>{ u8t,adder=0; OLED_Set_Pos<x,y>; for<t=0;t<16;t++> {OLED_WR_Byte<Hzk[2*no][t],OLED_DATA>; adder+=1;} OLED_Set_Pos<x,y+1>; for<t=0;t<16;t++> {OLED_WR_Byte<Hzk[2*no+1][t],OLED_DATA>; adder+=1;}}/***********功能描述:显示显示BMP图片128×64起始点坐标<x,y>,x的范围0~127,y为页的范围0~7*****************/voidOLED_DrawBMP<unsignedcharx0,unsignedchary0,unsignedcharx1,unsignedchary1,unsignedcharBMP[]>{ unsignedintj=0;unsignedcharx,y;if<y1%8==0>y=y1/8;elsey=y1/8+1; for<y=y0;y<y1;y++> { OLED_Set_Pos<x0,y>;for<x=x0;x<x1;x++> { OLED_WR_Byte<BMP[j++],OLED_DATA>; }}}//初始化SSD1306 voidOLED_Init<void>{OLED_RST_Set<>; delay_ms<100>; OLED_RST_Clr<>; delay_ms<100>; OLED_RST_Set<>; OLED_WR_Byte<0xAE,OLED_CMD>;//--turnoffoledpanel OLED_WR_Byte<0x00,OLED_CMD>;//setlowcolumnaddress OLED_WR_Byte<0x10,OLED_CMD>;//sethighcolumnaddress OLED_WR_Byte<0x40,OLED_CMD>;//--setstartlineaddressSetMappingRAMDisplayStartLine<0x00~0x3F> OLED_WR_Byte<0x81,OLED_CMD>;//--setcontrastcontrolregister OLED_WR_Byte<0xCF,OLED_CMD>;//SetSEGOutputCurrentBrightness OLED_WR_Byte<0xA1,OLED_CMD>;//--SetSEG/ColumnMapping0xa0左右反置0xa1正常 OLED_WR_Byte<0xC8,OLED_CMD>;//SetCOM/RowScanDirection0xc0上下反置0xc8正常 OLED_WR_Byte<0xA6,OLED_CMD>;//--setnormaldisplay OLED_WR_Byte<0xA8,OLED_CMD>;//--setmultiplexratio<1to64> OLED_WR_Byte<0x3f,OLED_CMD>;//--1/64duty OLED_WR_Byte<0xD3,OLED_CMD>;//-setdisplayoffset ShiftMappingRAMCounter<0x00~0x3F> OLED_WR_Byte<0x00,OLED_CMD>;//-notoffset OLED_WR_Byte<0xd5,OLED_CMD>;//--setdisplayclockdivideratio/oscillatorfrequency OLED_WR_Byte<0x80,OLED_CMD>;//--setdivideratio,SetClockas100Frames/Sec OLED_WR_Byte<0xD9,OLED_CMD>;//--setpre-chargeperiod OLED_WR_Byte<0xF1,OLED_CMD>;//SetPre-Chargeas15Cloc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南昌航空大学《旋律写作基础(1)》2023-2024学年第二学期期末试卷
- 上海市华二附中2025年高三年级下学期十月份月考英语试题含解析
- 上海海洋大学《普通动物学》2023-2024学年第二学期期末试卷
- 江苏省南通如皋市2025届高三二模(4月)英语试题含解析
- 濮阳石油化工职业技术学院《生物医用材料概论》2023-2024学年第二学期期末试卷
- 丽水学院《ACCASBR战略商务报告》2023-2024学年第二学期期末试卷
- 共享员工协议书合同书协议书
- 二零二五集体林地承包租赁合同
- 抵押借款合同范例范例
- 二零二五版餐饮出租简单合同范例
- 《云南土壤类型》课件
- 小儿肝脏间叶错构瘤课件
- 2022智慧园区设计、建设与验收技术规范
- 河南省濮阳市清丰县2023-2024学年八年级上学期期中生物试题( 含答案解析 )
- 30道智能驾驶工程师岗位常见面试问题含HR问题考察点及参考回答
- 护林员劳务派遣投标方案(技术标)
- 住院患者转科交接登记本
- 说课-青霉素皮试液的配置
- 北师大版小学英语3-6年级单词-(三起)带音标-精华版
- 无违法犯罪记录证明申请表(个人)
- 公共卫生概论课件
评论
0/150
提交评论