




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Zigbee无线传感网技术与应用厨房监控系统0401了解串口通信原理03掌握温湿度传感器数据的获取05掌握单片机输出PWM信号的方法04了解AD采样方法02掌握串口使能方法学习目标Learningobjectives任务一:厨房温湿度监控系统任务要求要求读者查看SHT11数字温湿度传感器芯片资料,实现系统对温湿度的ZigBee数据采集、存储和收集功能,并通过RS232与PC机相联,把收集到的温湿度数据传输到PC机中进行分析处理。任务目标Missionobjectives01掌握单片机串行通信的方法03了解数字传感器串行数据的读取方法02了解SHT11数字式温湿度传感器储备知识微控制器与外设之间的数据通信分为两种:并行通信、串行通信,它们根据连接结构和传输方式的不同而制定的。1.什么是串口通信并行通信与串行通信
并行通信(如右图)至数据的每个位同时发送或接收,每个数据位都有一个导线。其特点为传输速度快、效率高,但需要较多数据口、成本高。储备知识1.什么是串口通信
串行通信(如右图)其通信为一位一位发送或接收。数据口较少即TXD、RXD两个口,成本低,但传输速度慢,效率低。串行通信又分同步和异步两种方式
串行同步通信同步通信中,所有设备使用同一个时钟,以数据块为单位传送数据,每个数据块包括同步字符、数据块和校验字符。同步字符位于数据块的开头,用于确认数据字符的开始;接收时,接收设备连续不断地对传输线采样,并把接收到的字符与双方约定的同步字符进行比较,只有比较成功后才会把后面接收到的字符加以存储。储备知识1.什么是串口通信同步通信的优点是数据传输速率高,缺点是要求发送时钟和接收时钟保持严格同步。在数据传送开始时先用同步字符来指示,同时传送时钟信号来实现发送端和接收端同步,即检测到规定的同步字符后,接着就连续按顺序传送数据。这种传送方式对硬件结构要求较高。
串行异步通信异步通信中,每个设备都有自己的时钟信号,通信中双方的时钟频率保持一致。异步通信以字符为单位进行数据传送,每一个字符均按照固定的格式传送,又被称为帧,即异步串行通信一次传送一个帧。储备知识1.什么是串口通信每一帧数据由起始位(低电平)、数据位、奇偶校验位(可选)、停止位(高电平)组成。帧的格式如下图:图:异步通信数据帧格式储备知识1.什么是串口通信起始位:发送端通过发送起始位而开始一帧数据的传送。起始位使数据线处于逻辑0,用来表示一帧数据的开始。数据位:起始位之后就开始传送数据位。在数据位中,低位在前,高位在后。数据的位数可以是5、6、7或者8。奇偶校验位:是可选项,双方根据约定用来对传送数据的正确性进行检查。可选用奇校验、偶校验和无校验位。停止位:在奇偶检验位之后,停止位使数据线处于逻辑1,用以标志一个数据帧的结束。停止位逻辑值1的保持时间可以是1、1.5或2位,通信双方根据需要确定。空闲位:在一帧数据的停止位之后,线路处于空闲状态,可以是很多位,线路上对应的逻辑值是1,表示一帧数据结束,下一帧数据还没有到来。储备知识2.使能CC2530串口通信CC2530有两个串行通信接口USART0和USART1,两个USART接口具有相同的功能,其通过PERCFG寄存器可以设置两个USART接口对应外部I/O引脚的映射关系。选择串口位置:PERCFG寄存器位名称复位功能介绍1U1CFG0USART1的I/O位置0:表示RX0、TX01:表示RX1、TX10U0CFG0USART0的I/O位置0:表示RX0、TX01:表示RX1、TX1图:USART接口位置图:UxCSR寄存器储备知识2.使能CC2530串口通信教材采用开发板的I/O位置位于位置1->P0.2、P0.3口,故需要将PERCFG&=~(0x01);使第0位置为0,表示选择USART0->RX0、TX0位置。一、请在下方编写代码,将USART1,RX1、TX1设置为作用。二、请在下方编写代码,将USART0,RX1、TX1设置为作用。思考练习:储备知识2.使能CC2530串口通信设置模式:UxCSR寄存器UxCSR分为U0CSR、U1CSR分别控制USART0、USART1接口,UxCSR控制着USART的模式如SPI模式、UART模式,包含一个ACTIVE位用于判断USART是否处于空闲状态。其相关位说明如表所示。(为了使读者能快速理解,教材只列举最重要的几个位,读者如需了解更全面的资料可查看芯片手册)位名称复位功能介绍7MODE0USART模式选择0:SPI模式1:UART模式6REN0UART接收使能0:关闭接收1:开启接收0ACTIVE0表示USART状态0:空闲1:忙碌储备知识2.使能CC2530串口通信如表所示,如需开启USART0工作模式则需要使U0CSR|=0xC0,将第7、6位置为1,表示工作在UART模式、接收使能开启。一、请在下方编写代码,使USART1,工作模式为SPI模式。二、请在下方编写代码,使USART0,工作模式为UART模式、但不接收。思考练习:储备知识2.使能CC2530串口通信设置通信协议:UxUCR寄存器UxUCR控制着串口通信协议的具体状态,如奇偶校验、停止位、校验位等,其相关位说明如下表所示。(为了使读者能快速理解,教材只列举最重要的几个位,读者如需了解更全面的资料可查看芯片手册)位名称复位功能介绍5D90奇偶校验:0:奇校验1:偶校验4BIT90数据位(如开启奇偶校验则必须9位):0:8位1:9位3PARITY0UART奇偶校验使能0:关闭奇偶校验1:开启奇偶校验2SPB0停止位位数:0:1位停止位1:2位停止位1STOP1停止位的电平:0:停止位为低电平1:停止位为高电平0START0启始位的电平:0:起始位为低电平1:起始位为高电平储备知识2.使能CC2530串口通信如表所示,如需要设置特殊状态串口通信则需要设置UxUCR,如无需特殊要求则不需要对其进行设置。一、请在下方编写代码,使串口通信开启偶数校验模式。二、请在下方编写代码,使串口通信起时位电平为高电平。思考练习:储备知识2.使能CC2530串口通信设置波特率:UxBAUD寄存器与UxGCRUxBAUD分为U0BAUD、U1BAUD分别控制USART0、USART1两个串口的波特率。UxGCR也分为U0GCR、U1GCR分别控制USART0、USART1两个串口的波特率。CC2530的波特率由UxBAUD、UxGCR共同决定,计算公式为:储备知识2.使能CC2530串口通信在TI公司手册中,给出了32MHZ系统时钟下各个常用波特率的参数值,由计算公式即可得出16MHZ时钟下的对应参数。波特率16MHZ系统时钟32MHZ系统时钟UxBAUDUxGCR80059859796005995981920059105995760021611216101152002161221611图:波特率计算储备知识2.使能CC2530串口通信根据上表所示,如在波特率为16MHZ的情况下需要设置USART0波特率为57600则需要将U0BAUD=216;U0GCR=11。一、请在下方编写代码,如芯片工作在32MHZ设置USART1波特率为115200。二、请在下方编写代码,如芯片工作在16MHZ设置USART0波特率为9600。思考练习:储备知识2.使能CC2530串口通信发送与接收:UxDBUF寄存器UxDBUF分为U0DBUF、U1DBUF分别为USART0、USART1的接收/发送数据缓冲区,即当需要发送数据0x11给USART0时则需U0BUF=0x11即可,同理获取为申明变量a=U0DBUF。但在发送后需要等待发送完成,这里可判断一个中断标志UTX0IF,其为1则完成发送。代码如下所示。U0DBUF=0x11;//发送数据while(!UTX0IF);//表示等待完成,如为1则完成UTX0IF=0;//清除标志位一、在下方编写在USART0发送数据0xaa的代码。二、在下方编写在USART0接收数据的代码。思考练习:储备知识2.使能CC2530串口通信串口使能流程图观看流程图,重新整理记忆使能串口流程,串口使能流程图如右图所示。储备知识3.开发板串口电路图由于计算机的串行通信接口是RS-232的标准接口,而Zigbee开发板的USART接口为TTL电平,两者的电气规范不同(即电压不同),所以要完成两者之间的数据通信,就需要借助接口芯片在两者直接进行电平的转换,其中常用的芯片为MAX232。图:串口电路图储备知识3.开发板串口电路图TTL电平:逻辑0表示电压为小于0.8V逻辑1表示电压为大于2.4VRS232电平:逻辑0表示电压为5到15V逻辑1表示电压为-5V到-15V知识补充储备知识4.SHT11数字式温湿度传感器SHT11传感器简介它是瑞士Sensirion公司生产的具有接口的单片全校准数字式相对湿度和温度传感器,采用独特的CMOSensTM技术,具有数字输出、免调试、免校准、外围电路全互换等特点。详细介绍了传感器的性能特点、接口时序和命令,给出了接口电路和相应的程序。综述了温湿度测量在仓库管理、生产、气象观测、科学研究和日常生活中的广泛应用。传统的模拟湿度传感器一般需要设计信号调理电路,经过复杂的校准和校准过程,测量精度难以保证,线性、重复性等性能往往不理想。CMOSensTM技术是由瑞士Sensirion公司开发的,该传感器将CMOS芯片技术与传感器技术相结合,起到了很强的互补作用。模块如图所示。储备知识4.SHT11数字式温湿度传感器图:SHT11模块储备知识4.SHT11数字式温湿度传感器集成温湿度传感器、信号放大与调理、AD转换与接口为一体。输出标定的相对湿度和温度值。I2C总线数字输出接口。具有露点计算输出功能。具有露点计算输出功能。具有优良的长期稳定性。SHT11型温湿度传感器的主要特点是:储备知识4.SHT11数字式温湿度传感器SHT11传感器引脚说明SHT11的供电电压范围为2.4-5.5V,建议供电电压为3.3V。DATA为数据引脚、SCK为时钟引脚。SHT11采用I2C通信协议,由于协议难度较高,故教材不设计该内容,读者直接调用类库即可。5.设备与设备通信本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、ZigBee开发板、5V电源适配器、USB下载线、串口线。环境准备任务实施5.设备与设备通信硬件连接任务实施任务实施
使用串口调试助手,打开串口监听波特率为9600
按下按钮sw1输出“hello”任务要求编写代码步骤1:新建工程->工程名称为“串口通信”->保存->新建语言程序.c文件名称为“main.c”->设置opion->编写最简单的代码,代码如下所示。(新建工程具体步骤,不再重复介绍)5.设备与设备通信#include"iocc2530.h"voidmain(){while(1){
}}任务实施步骤2:编写I/O初始化P0.2、P0.3为外设口,代码如下所示。5.设备与设备通信#include"iocc2530.h"voidmain(){
P0SEL|=0x0c;//设置外设
while(1){
}}
任务实施步骤3:编写设置USART0–>I/O位置P0.2、P0.3代码,代码如下所示。5.设备与设备通信#include"iocc2530.h"voidmain(){
P0SEL|=0x0c;//设置外设
PERCFG&=~0x01;//设置I/O位置
while(1){
}}任务实施步骤4:编写设置UART模式代码,代码如下所示。5.设备与设备通信#include"iocc2530.h"voidmain(){
P0SEL|=0x0c;//设置外设
PERCFG=0x00;//设置I/O位置
U0CSR|=0x80;//设置UART模式while(1){
}}任务实施步骤5:编写设置波特率为9600并开启总中断使能,代码如下所示。(系统默认波特率为16MHZ)5.设备与设备通信#include"iocc2530.h"voidmain(){ P0SEL|=0x0c;//设置外设 PERCFG=0x00;//设置I/O位置 U0CSR|=0x80;//设置UART模式 U0BAUD=59;//设置波特率为9600 U0GCR=9;//设置波特率为9600 EA=1; //开启总中断
while(1)
{
}}任务实施步骤6:经过上述5个步骤,即完成了串口初始化过程,现需要发送一个字符‘a’给电脑,代码如下所示。5.设备与设备通信#include"iocc2530.h"voidmain(){ P0SEL|=0x0c;//设置外设 PERCFG=0x00;//设置I/O位置 U0CSR|=0x80;//设置UART模式 U0BAUD=59;//设置波特率为9600 U0GCR=9;//设置波特率为9600 EA=1; //开启总中断 U0DBUF='a';//发送a
while(1){ }}任务实施步骤7:打开配套资料\项目四\串口调试助手.exe,设置COM口、波特率9600->打开串口。5.设备与设备通信图:串口调试助手任务实施步骤8:设置断点,位于U0DBUF发送的位置处。5.设备与设备通信图:设置断点任务实施步骤9:单步执行,查看串口调试助手接收到数据a。5.设备与设备通信图:串口调试助手数据任务实施步骤10:在代码完成调试后,将两段代码改写成函数,方便后续调用,同时在发送函数中加入判断标志,代码如右所示。5.设备与设备通信#include"iocc2530.h"voidUartInit(){P0SEL|=0x0c;//设置外设PERCFG=0x00;//设置I/O位置U0CSR|=0x80;//设置UART模式U0BAUD=59;//设置波特率为9600U0GCR=9;//设置波特率为9600EA=1;//开启总中断}voidsend(unsigned
chars){U0DBUF=s;//发送a
while(!UTX0IF);UTX0IF=0;}voidmain(){UartInit();send('a');
while(1){
}}任务实施5.设备与设备通信一、修改上述代码,使波特率变为38400。二、修改上述代码,按下按下sw1发送数字1,再次为2,一次累加。拓展练习:任务实施5.设备与设备通信步骤11:进一步编写批量发送字符串口函数,代码如下所示。……voidsend(unsigned
chars){U0DBUF=s;//发送a
while(!UTX0IF);UTX0IF=0;}voidsendstr(unsigned
char*s,unsigned
charlen){
intcount=0;
while(len--){send(*(s+count));count++;}}voidmain()……代码小贴士:代码:调用函数:sendstr(参数1,参数2);表示获取温湿度数据。函数:call_sht11(参数1,参数2);参数1:指针参数可传入字符串如“你好”,数组等参数2:整型发送字符的数量任务实施5.设备与设备通信一、调用“sendstr”函数实现显示“你好世界”字符串。技能拓展6.厨房温湿监控系统本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、ZigBee开发板、5V电源适配器、USB下载线、SHT11温湿度传感器模块。环境准备任务实施任务实施
获取温湿度值
将温湿度值传输给PC机。任务要求模块连接将SHT11温湿度模块连接至zigbee模块,连接串口线至电脑,如右图所示。6.厨房温湿监控系统6.厨房温湿监控系统步骤1:新建工程,复制将上述任务代码,“配套资料\项目四\SHT11”目录下提供的SHT11等文件到工程根目录下。编写代码(由SHT11的驱动比较难理解,故本任务在提供的调用文件实现调用即可)任务实施图:复制调用文件6.厨房温湿监控系统步骤2:编写引用头文件,方便后续调用其中函数,代码如下所示。任务实施#include"SHT11.h"//引用温湿度头文件步骤3:声明全局整型全局变量temp、hum,在主函数中调用头文件中函数,获取温湿度数据,代码如下所示。……inttemp,hum;//声明全局变量……voidmain()……call_sht11(&temp,&hum);//调用函数获取温湿度……代码小贴士:代码:调用函数:call_sht11(&temp,&hum);表示获取温湿度数据。函数:call_sht11(参数1,参数2);参数1:指针参数表示将温度数据传给temp,调用时将temp变量地址传入参数2:指针参数表示将温度数据传给hum,调用时将hum变量地址传入6.厨房温湿监控系统步骤4:设置断点至获取温湿度函数位置,并查看temp、hum变量的变化。temp为270/10=27度,hum为750/10=75%。任务实施图:获取的温湿度信息6.厨房温湿监控系统步骤5:编写发送温度数据同时解析数据发送串口,由于发送串口需要单个字符单个字符发送,需将整型数据拆分成十位、个位。部分代码如下所示。任务实施……inttemp,hum;voidmain(){
UartInit();sendstr("温度:",5);send((temp/100)+'0');send((temp/10%10)+'0');send('.');send((temp%10)+'0');sendstr("℃",2);send('\n');while(1){
}}……6.厨房温湿监控系统步骤6:设置断点,单步调试代码查看发送数据单个执行,同时打开串口调试助手选择“字符串接收”方式。任务实施图:获取温度显示数据任务实施一、根据任务代码进行修改,编写获取湿度代码。二、添加按钮代码,使按下按钮显示当前温度、湿度信息。三、使用定时器,每1秒发送一次当前的温度信息。6.厨房温湿监控系统技能拓展Zigbee无线传感网技术与应用厨房监控系统0401了解串口通信原理03掌握温湿度传感器数据的获取05掌握单片机输出PWM信号的方法04了解AD采样方法02掌握串口使能方法学习目标Learningobjectives任务二:厨房火灾报警系统任务要求要求读者查看火焰传感器模块资料,实现CC2530单片机系统对数字量信号的采集,掌握接收PC串口信号的方法。任务目标Missionobjectives01了解火焰传感器模块的结构03掌握接收串口信号的方法02掌握厨房火灾报警系统的调试储备知识开关量输出是实现传感器将感应到的模拟或数字信号转换成一个开关量信号,再继而输出的一个功能。一般的开关量输出通过继电器实现,如单掷单刀,单掷双刀,双掷双刀等。该物理量只有两种状态,如开关的导通和断开的状态,继电器的闭合和打开,电磁阀的通和断,等等。开关量传感器发出的信号是数字信号,有断开和闭合两种状态,比如液位传感器开关就是一种常见的开关量传感器。当液位传感器低于设定值时,液位传感器开关断开(或闭合);当液位传感器高于设定值时,开关闭合(或断开)。对控制系统来说,由于CPU是二进制的,数据的每位有“0”和“1”两种状态,因此,开关量只要用CPU内部的一位即可表示,比如,用“0”表示开,用“1”表示关。1.什么是开关量储备知识ZigBee火焰传感器模块由红外接收二极管及比较器电路构成,该模块只有4个接口引脚,分别为VCC、GND、DOUT、AOUT,其中VCC、GND为电路的供电端,DOUT为模块开关量输出端,输出高低电平信号,对应是否检测到火焰;AOUT为模拟量输出,输出的电压值会根据接收到的火焰强度而发生变化。2.ZigBee火焰传感器模块图:火焰模块储备知识由电路图可知火焰传感器的Dout连接至P0.0的IO口,火焰传感器为数字量传感器代码与按钮类似。3.火焰传感器电路图4.厨房火灾报警系统本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、ZigBee开发板、火焰传感器模块、5V电源适配器、USB下载线。环境准备任务实施任务实施
获取厨房火焰传感器数据
如果有火焰则持续发送报警信息
当电脑发送0x01时停止报警任务要求编写代码步骤1:新建工程->工程名称为“厨房火焰报警系统”->保存->新建源程序.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码如下所示。(新建工程具体步骤,不再重复介绍)4.厨房火灾报警系统#include"iocc2530.h"voidmain(){
while(1){
}}任务实施步骤2:编写火焰传感器I/O宏定义,代码如下所示。4.厨房火灾报警系统步骤3:编写获取火焰传感器的状态代码并设置发送串口标志,根据电路图设置I/O口P0.0为输入。代码如下所示。//宏定义
火焰传感器I/O口#defineflameP0_0#include"iocc2530.h"#defineflameP0_0voidmain(){
charflag=0;//声明标志P0DIR&=~(0x01);
while(1){
if(flame==0)//如果有火焰{flag=1;//设置标志,便于发送串口循环}}}代码小贴士:代码:charflag=0;说明:程序设计时长用一个变量标示一些标志,flag表示一个标志,判断当标志为1时则不断执行所需代码。任务实施步骤4:编写获取串口接收、发送与初始化数据代码,代码与任务一类似,在U0CSR开启接收使能,URX0IE=1开启中断使能,代码如右所示。4.厨房火灾报警系统voidsend(unsigned
chars){U0DBUF=s;//发送a
while(!UTX0IF);UTX0IF=0;}voidsendstr(unsigned
char*s,unsigned
charlen){
intcount=0;
while(--len){send(*(s+count));count++;}}voidUartInit(){P0SEL|=0x0c;//设置外设PERCFG=0x00;//设置I/O位置U0CSR|=0xc0;//设置UART模式
使能接收U0BAUD=59;//设置波特率为9600
U0GCR=9;//设置波特率为9600;
URX0IE=1;//开启串口接收中断EA=1;//开启总中断}任务实施步骤5:编写串口中断函数,声明接收数据变量Command,代码如下所示。4.厨房火灾报警系统…charCommand;…#pragmavector=URX0_VECTOR__interruptvoidUART(){Command=U0DBUF;//接收缓存数据到dataURX0IF=0;//清中断标志}任务实施步骤6:编写发送串口代码,当有火焰时不断每秒发送报警数据,代码如下所示。4.厨房火灾报警系统voidmain(){
charflag=0;UartInit();
while(1){
if(flame==0)//如果有火焰{flag=1;//设置标志,便于发送串口循环}
if(flag){sendstr("火焰报警",8);}}}任务实施步骤7:在while循环中编写判断停止报警信号代码,代码如下所示。4.厨房火灾报警系统voidmain(){
charflag=0;UartInit();
while(1){
if(flame==0)//如果有火焰{flag=1;//设置标志,便于发送串口循环}
if(flag){sendstr("火焰报警",8);}
if(Command==0x01){Command=0;//清空数据接收flag=0;//清空发送标志}}}代码小贴士:代码:if(flag){}说明:在条件内容可以简写flag大于1则条件满足为0则不满足,与代码if(flag==1)相同任务实施步骤8:打开串口调试助手,设置发送发送为“16进制发送”。4.厨房火灾报警系统图:设置16进制发送任务实施步骤9:在串口接收中断函数中设置断点,使用串口调试助手发送数据01(注意选择16进制发送)->点击“手动发送”,查看效果。4.厨房火灾报警系统图:发送数据任务实施4.厨房火灾报警系统图:设置断点任务实施一、如果停止的指令为英文字符“s”,代码需要如何修改。二、如果停止指令为“stop”字符串,代码需要如何修改。4.厨房火灾报警系统技能拓展Zigbee无线传感网技术与应用厨房监控系统0401了解串口通信原理03掌握温湿度传感器数据的获取05掌握单片机输出PWM信号的方法04了解AD采样方法02掌握串口使能方法学习目标Learningobjectives任务三:厨房照明灯调节系统任务要求要求读者编写程序实现实验板获取芯片外部光敏传感器的电压,通过串口发送电压值。实验板安装上光线传感器,光线的强弱转换成电压的高低,经ADC转换以后通过串口将电压值发送给PC,可以通过串口调试软件读取电压值。同时控制Zigbee开发板上的LED根据外界光照强度的不同自动调节LED亮度。任务目标Missionobjectives01模拟信号和数字信号有哪些区别?03CC2530的模数转换精度及如何处理数据?02CC2530的ADC需要设置那些寄存器?如何设置?储备知识信息是指客观事物属性和相互联系特性的表征,它反映了客观事物的存在形式和运动状态。表示信息的形式可以是数值、文字、图形、声音、图像以及动画等。信号是信息的载体,是运载信息的工具,信号可以是光信号、声音信号、电信号。电话网络中的电流就是一种电信号,人们可以将电信号经过发送、接收以及各种变换,传递着双方要表达的信息。数据是把事件的属性规范化以后的表现形式,它能被识别,可以被描述,是各种事物的定量或定性的记录。信号数据可以表示任何信息,如文字、符号、语音、图像、视频等等。从电信号的表现形式上,可以分为模拟信号和数字信号。1.电信号的形式与转换模拟信号是指用连续变化的物理量所表达的信息,如温度、湿度、压力、长度、电流、电压等等,我们通常又把模拟信号称为连续信号,它在一定的时间范围内可以有无限多个不同的取值。模拟信号储备知识1.电信号的形式与转换数字信号数字信号指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示,在计算机中,数字信号的大小常用有限位的二进制数表示。由于数字信号是用两种物理状态来表示0和1的,故其抵抗材料本身干扰和环境干扰的能力都比模拟信号强很多;在现代技术的信号处理中,数字信号发挥的作用越来越大,几乎复杂的信号处理都离不开数字信号,只要能把解决问题的方法用数学公式表示,就能用计算机来处理代表物理量的数字信号。模拟/数字转换通常简写为ADC,是将输入的模拟信号转换为数字信号。各种被测控的物理量(如:速度、压力、温度、光照强度、磁场等)是一些连续变化的物理量,传感器将这些物理量转换成与之相对应的电压和电流就是模拟信号。单片机系统只能接收数字信号,要处理这些信号就必须把他们转换成数字信号。模拟/数字转换是数字测控系统中必须的信号转换。模拟/数字转换储备知识2.CC2530的模数转换(ADC)模块CC2530的ADC模块支持最高14位二进制的模拟数字转换,具有12位的有效数据位。它包括一个模拟多路转换器,具有8个各自可配置的通道;以及一个参考电压发生器。转换结果通过DMA写入存储器,还具有多种运行模式。ADC模块结构如图所示。图:LED与CC2530连接电路图储备知识2.CC2530的模数转换(ADC)模块可选的抽取率,设置分辨率(7到12位)8个独立的输入通道,可接收单端或差分信号参考电压可选为内部单端、外部单端、外部差分或AVDD5转换结束产生中断请求转换结束时可发出DMA触发CC2530的ADC模块有如下主要特征:可以将片内温度传感器作为输入电池电压测量功能储备知识对于CC2530的ADC模块,端口P0引脚可以配置为ADC输入端,依次为AIN0~AIN7。可以把输入配置为单端或差分输入。在选择差分输入的情况下,差分输入包括输入对AIN0-AIN1、AIN2-AIN3、AIN4-AIN5和AIN6-AIN7。除了输入引脚AIN0-AIN7,片上温度传感器的输出也可以选择作为ADC的输入用于温度测量;还可以输入一个对应AVDD5/3的电压作为一个ADC输入,在应用中这个输入可以实现一个电池电压监测器的功能。特别提醒,负电压和大于VDD(未调节电压)的电压都不能用于这些引脚。它们之间的转换结果是在差分模式下每对输入端之间的电压差值。3.使能CC2530模数转换(ADC)ADC模块的输入储备知识8位模拟量输入来自I/O引脚,不必通过编程将这些引脚变为模拟输入,但是,当相应的模拟输入端在APCFG寄存器中被禁用时,此通道将被跳过。当使用差分输入时,相应的两个引脚都必须在APCFG寄存器中设置为模拟输入引脚。APCFG寄存器如表所示。3.使能CC2530模数转换(ADC)位名称复位R/W描述7:0APCFG[7:0]0x00R/W模拟外设I/O配置。APCFG[7:0]选择P0.7~P0.0作为模拟I/O0:模拟I/O禁用1:模拟I/O使用表:APCFG–模拟I/O配置寄存器单端电压输入AIN0到AIN7以通道号码0到7表示。通道号码8到11表示差分输入,它们分别是AIN0–AIN1、AIN2–AIN3、AIN4–AIN5和AIN6–AIN7组成。通道号码12到15分别用于GND(12)、预留通道(13)、温度传感器(14)和AVDD5/3(15)。储备知识CC2530的ADC模块可以按序列进行多通道的ADC转换,并把结果通过DMA传送到存储器,而不需要CPU任何参与。转换序列可以由APCFG寄存器设置,八位模拟输入来自I/O引脚,不必经过编程变为模拟输入。如果一个通道是模拟I/O输入,它就是序列的一个通道,如果相应的模拟输入在APCFG中禁用,那么此I/O通道将被跳过。当使用差分输入,处于差分对的两个引脚都必须在APCFG寄存器中设置为模拟输入引脚。寄存器位ADCCON2.SCH用于定义一个ADC转换序列。如果ADCCON2.SCH设置为一个小于8的值,ADC转换序列包括从0通道开始,直到并包括ADCCON2.SCH所设置的通道号码。当ADCCON2.SCH设置为一个在8和12之间的值,转换序列包括从通道8开始差分输入,到ADCCON2.SCH所设置的通道号码结束。3.使能CC2530模数转换(ADC)序列ADC转换与单通道ADC转换储备知识除可以设置为按序列进行ADC转换之外,CC2530的ADC模块可以编程实现任何单个通道执行一个转换,包括温度传感器(14)和AVDD5/3(15)两个通道。单通道ADC转换通过写ADCCON3寄存器触发,转换立即开始。除非一个转换序列已经正在进行,在这种情况下序列一完成,单个通道的ADC转换就会被执行。3.使能CC2530模数转换(ADC)ADC的相关寄存器IO口的配置,其实仔细用大脑想想不用看数据手册就应该想到,IO口要配置成为输入模式,以下摘自数据手册:当使用ADC时,端口0引脚必须配置为ADC输入。可以使用多达八个ADC输入引脚。要配置一个端口0脚为一个ADC输入,APCFG寄存器中相应的位必须设置为1。这个寄存器的默认值选择端口0引脚为非ADC,即数字输入输出。APCFG寄存器的设置将覆盖P0SEL的设置。储备知识ADC有两个数据寄存器:ADCL(0xBA)–ADC数据低位寄存器、ADCH(0xBB)–ADC数据高位寄存。ADC有三个控制寄存器:ADCCON1、ADCCON2和ADCCON3。这些寄存器用来配置ADC并返回转换结果。关于和ADC有关的几个寄存器,使用ADCL和ADCH,主要放的是ADC转换完毕的值,控制ADC启用转换的是三个控制器,分类是ADCCON1,ADCCON2,ADCCON3。其中ADCCON1,ADCCON2可以启用连续转换,而ADCCON3可以控制某一个通道执行一次转换。以上这些一般人都是可以通过看手册配置的,但是配置不是什么大问题,但是从ADCL和ADCH取值有疑问的。3.使能CC2530模数转换(ADC)ADC的配置和应用ADC有三种控制寄存器:ADCCON1,ADCCON2和ADCCON3。这些寄存器用于配置ADC,以及读取ADC转换的状态。储备知识ADCCON1.EOC位是一个状态位,当一个转换结束时,设置为高电平;当读取ADCH时,它就被清除。ADCCON1.ST用于启动一个转换序列。当没有转换正在运行时这个位设置为高电平,ADCCON1.STSEL是11,就启动一个序列。当这个序列转换完成,ADCCON1.ST就被自动清0。ADCCON1.STSEL位选择哪个事件将启动一个新的转换序列。该选项可以选择为外部引脚P2.0上升沿或外部引脚事件,之前序列的结束事件,定时器1的通道0比较事件或ADCCON1.ST是1。ADCCON2寄存器设置转换序列的执行方式。ADCCON2.SREF用于选择参考电压。ADCCON2.SDIV位用来选择抽取率,抽取率的设置决定分辨率和完成一个转换所需的时间。ADCCON2.SCH设置转换序列的最后一个通道数。ADCCON3寄存器控制单个转换的通道号码、参考电压和抽取率。该寄存器位的设置选项和ADCCON2是完全一样的。单通道转换在寄存器ADCCON3写入后将立即发生,如果一个转换序列正在进行,该序列结束之后立即启动ADC转换。3.使能CC2530模数转换(ADC)储备知识3.使能CC2530模数转换(ADC)ADC转换使能流程图观看流程图,方便读者理解并记忆各个寄存器功能。储备知识4.光照模块电路图:光照模块电路图5.获取数字量光照值本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、Zigbee开发板、5V电源适配器、USB下载线、光照传感器。环境准备任务实施任务实施
获取厨房光照强度;
发送数据至PC的串口。任务要求模块连接将光照传感器模块连接至zigbee模块,连接串口线至电脑,如右图所示。5.获取数字量光照值任务实施编写代码步骤1:新建工程->工程名称为“厨房光照系统”->保存->新建源程序.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码如下所示。(新建工程具体步骤,不再重复介绍)#include"iocc2530.h"voidmain(){
while(1){
}}5.获取数字量光照值任务实施步骤2:初始化P0_0I/O状态,设置外设、设置I/O为ADC使用,代码如下所示:5.获取数字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//设置P0_0为ADC使用P0SEL|=0x01;//设置P0_0为外设口
while(1){
}}任务实施步骤3:编写启动转换代码包含设置参考电压为引脚AVDD5输入、10位ADC、P0_0通道,代码如下所示。5.获取数字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//设置P0_0为ADC使用
P0SEL|=0x01;//设置P0_0为外设口
//参考电压AVDD5引脚、12位精度ADC、P0_0通道
//启动转换
ADCCON3=(0x80|0x30|0x00);
while(1){
}}任务实施步骤4:编写清除标志,等待转换成功代码,代码如下所示。5.获取数字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//设置P0_0为ADC使用
P0SEL|=0x01;//设置P0_0为外设口
//参考电压AVDD5引脚、10位精度ADC、P0_0通道
//启动转换
ADCCON3=(0x80|0x30|0x00);
ADCIF=0;//清除标志
while(!ADCIF);//等待完成
while(1){
}}任务实施步骤5:在转换成功后,声明一个全局变量无符号整型变量data,提取高8位与低8位数据,同时转换成int类型数据,代码如下所示。5.获取数字量光照值#include"iocc2530.h"
unsigned
intdata=0;
voidmain(){
APCFG|=0x01;//设置P0_0为ADC使用
P0SEL|=0x01;//设置P0_0为外设口
//参考电压AVDD5引脚、12位精度ADC、P0_0通道
//启动转换
ADCCON3=(0x80|0x30|0x00);ADCIF=0;//清除标志
while(!ADCIF);//等待完成
data=ADCL;//提取低位
data|=(unsignedint)(ADCH<<8);//提取高位
data=data>>3;//转换为12位
while(1){
}}任务实施步骤6:在转换成功代码处data=data>>3,设置断点查看数据情况。5.获取数字量光照值图:转换结果任务实施步骤7:用手遮住光照传感器查看数据是否发送变化,如数值变小则表示转换成功。5.获取数字量光照值图:转换结果2任务实施步骤8:封装对应代码,方便后续调用,封装后的代码如下所示。5.获取数字量光照值#include"iocc2530.h"voidAdcInit(){APCFG|=0x01;//设置P0_0为ADC使用P0SEL|=0x01;//设置P0_0为外设口}unsigned
intAdcGet(){
unsigned
inttmp=0;
//参考电压AVDD5引脚、12位精度ADC、P0_0通道
//启动转换ADCCON3=(0x80|0x30|0x00);ADCIF=0;//清除标志
while(!ADCIF);//等待完成
tmp=ADCL;//提取低位tmp|=(unsigned
int)(ADCH<<8);//提取高位tmp=tmp>>3;//转换为12位
returntmp;}unsigned
intdata=0;voidmain(){AdcInit();data=AdcGet();
while(1){
}}任务实施步骤9:使用任务一编写的串口发送代码,将数据结果发送至电脑,关键代码如下所示。5.获取数字量光照值voidmain(){
unsigned
chardisp[4];AdcInit();UartInit();
while(1)
{
data=AdcGet();disp[0]=data/1000+'0';//提取千位disp[1]=data/100%10+'0';//提取百位disp[2]=data/10%10+'0';//提取十位
disp[3]=data%10+'0';//提取个位
sendstr("光照值:",8);//发送中文sendstr(disp,4);//发送数据send('\n');//发送换行符
delay_ms(2000);
//延迟一段时间发送}}任务实施步骤10:全速执行代码,过程中可用手去遮住光照传感器查看数值的变化,打开串口调试助手,查看效果。5.获取数字量光照值图:获取光照值任务实施一、如使用10位ADC精度进行转换数据,代码将如何更改。5.获取数字量光照值技能拓展储备知识PWM是PulseWidthModulation的英文单词缩写,中文意思就是脉冲宽度调制,简称脉宽调制。PWM是利用微处理器输出数字信号来对模拟电路进行控制的一种非常有效的技术方法,广泛应用于测量、通信、功率控制与变换等众多领域。6.什么是PWM储备知识占空比是指脉冲信号的通电时间与通电周期之比。在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度2μs,信号周期4μs的脉冲序列占空比为0.5。7.什么是占空比图:占空比储备知识PWM是一种对模拟信号电平进行数字编码的方法,也可以理解为在一定的时间内用高低电平所占的比例不同来控制一个对象。通过改变方波信号的占空比改变加到控制设备的平均电压,从而达到改变流过设备的平均电流、功率的目的。例如在1ms周期内,高电平占0.3ms,低电平占0.7ms。如果用高电平去控制一个开关闭合,此开关再去控制一个LED灯,低电平时这个开关断开,那么在1ms内,这个灯就只能通电0.3ms,而0.7ms内是不通电的。这个灯的通电时间只有30%。如果把高电平的时间延长到0.7ms,而低电平就只有0.3ms了,此时灯的通电时间就变成70%了,灯获得的能量变大,亮度自然就提高了。8.PWM调光原理储备知识CC2530定时器1是一个独立的16位定时器,支持典型的定时/计数功能,例如:输入捕获,输出比较和PWM功能。定时器1有五个独立的捕获/比较通道。每个通道使用一个I/0引脚。CC2530的每个输出通道都有相关的寄存器控制,通道捕获/比较控制寄存器用于设置输出PWM信号的波形,通道捕获/比较值寄存器和T1CC0用于设置PWM信号的周期和占空比。定时器1的功能如下:9.CC2530定时器的PWM功能五个捕获/比较通道可选择上升沿、下降沿或任何边沿进行输入捕获设置、清除或切换输出比较自由运行、模或正计数/倒计数操作在每个捕获/比较和最终计数上生成中断请求DMA触发功能储备知识可以通过两个8位的SFR读取16位的计数器值:T1CNTH和T1CNTL,分别包含高位和低位字节。当读取T1CNTL时,计数器的高位字节在那时被缓冲到T1CNTH,以便高位字节可以从T1CNTH中读出。因此T1CNTL必须总是在读取T1CNTH之前首先读取。对T1CNTL寄存器的所有写入访问将复位16位计数器。当达到最终计数值(溢出)时,计数器产生一个中断请求。可以通过设置T1CTL来控制定时器开始或挂起。如果是非00值写入T1CTL.MODE时,计数器开始运行;如果是00写入T1CTL.MODE,计数器停止在它现在的值上。9.CC2530定时器的PWM功能储备知识与定时器1相关的寄存器有:9.CC2530定时器的PWM功能T1CNTH、T1CNTL:定时器1计数器高低字节T1CTL:定时器1控制器T1STAT:定时器1状态标志位T1CCTLn:定时器1捕获/比较控制T1CCnH、T1CCnL:定时器1捕获寄存器高低字节TIMIF:定时器1/3/4中断屏蔽/标志储备知识如下表所述,PWM使能需要占用一个定时器,把定时器工作在对应的模式下,建议直接使用定时器->1分频、自由运行模式即可。使用定时器1、1分频工作在自由运行模式下,代码如下所示。10.使能PWM功能定时器工作模式–TxCTLT1CTL|=0x01;//1分频,自由口运行模式表:定时器1--T1CTL寄存器位名称复位功能介绍7:4--0000保留3:2DIV[1:0]001时钟分频设置00:1分频01:8分频10:32分频11:128分频1:0MODE[1:0]00定时器1工作模式设置00:暂停运行01:自由运行模式,0x0000到0xffff反复计数11:正计数/倒计数模式储备知识10.使能PWM功能表:定时器3--T3CTL寄存器名称复位功能介绍7:5DIV[1:0]000定时器3时钟分频设置000:1分频100:16分频001:2分频101:32分频010:4分频110:64分频011:8分频111:128分频1:0MODE[1:0]0定时器3工作模式设置00:暂停运行01:自由运行模式,0x0000到0xffff反复计数11:正计数/倒计数模式储备知识10.使能PWM功能表:定时器4--T4CTL位名称复位功能介绍7:5DIV[2:0]000定时器4时钟分频设置000:1分频100:16分频001:2分频101:32分频010:4分频110:64分频011:8分频111:128分频1:0MODE[1:0]0定时器4工作模式设置00:暂停运行01:自由运行模式,0x0000到0xffff反复计数11:正计数/倒计数模式储备知识10.使能PWM功能一、请在下方编写代码,使定时器2工作在自由运行模式,编写对应代码。二、请在下方编写代码,使定时器3工作在正计数/倒计数模式,编写对应代码。思考练习:定时器对应通道设置–PERCFG如上表所述对应教材开发板LED灯,如需设置P1_0、P1_1、P1_3、P1_4所在通道与定时器为“定时器1备用位置2通道2、通道1”、“定时器3备用位置1通道0、通道1”,代码为:PERFCG|=0x40(01000000)。储备知识10.使能PWM功能表:PERCFG寄存器名称复位功能介绍6T1CFG0定时器10:备用位置1
1:备用位置253FG0定时器30:备用位置1
1:备用位置24T4FG0定时器40:备用位置1
1:备用位置2储备知识10.使能PWM功能表:通道对应I/O位置定时器备用位置1与通道备用位置2与通道定时器1P0.2->通道0P0.3->通道1P0.4->通道2P0.5->通道3P0.6->通道4P1.0->通道2P1.1->通道1P1.2->通道0定时器3P1.3->通道0P1.4->通道1P1.6->通道0P1.7->通道1定时器4P1.0->通道0P1.1->通道1P2.0->通道0P2.3->通道1储备知识10.使能PWM功能一、请在下方编写代码,选择P0.2、P1.0作为PWM输出,编写对应PERFCG代码,并说明用到的定时器。二、请在下方编写代码,选择P2.0、P1.6作为PWM输出,编写对应PERFCG代码,并说明用到的定时器。思考练习:设置对应通道PWM模式–TxCCTLx如上表所述TxCCTLx,Tx的x表示定时器1、2、4其中的一个,Lx的x表示通道,任务工作模式主要工作在“比较模式”,向下比较低电平模式。故如需控制开启P1.0PWM则需要根据下表,代码为:T1CCTL|=0x24(00100100)。储备知识10.使能PWM功能表:TxCCTLx寄存器位名称复位功能介绍5:3CMP[2:0]000通道比较模式选择000:比较设置输出001:比较清楚输出010:比较切换输出011:向上比较高电平,在定时器值为0时低电平。100:向下比较低电平,在定时器值为0时高电平。2MODE0模式:选择定时器x通道x模式0:捕获模式1:比较模式储备知识10.使能PWM功能一、请在下方编写代码,选择P0.2、P1.0作为PWM输出,编写对应TxCCTLx代码。二、请在下方编写代码,选择P2.0、P1.6作为PWM输出,编写对应TxCCTLx代码。思考练习:设置比较值–TxCCx如上表所述TxCCxH,Tx的x表示定时器1、2、4其中的一个,CCx表示通道,该寄存器控制着PWM周期时间。以教材开发板LED为例对应“定时器1->备用位置2->通道2、通道1->P1.0、P1.1->D3、D4”寄存器为T1CC2、T1CC1,设置比较值一般情况下只需让TxCCxH作出改变占空比将根据其数值大小作出对应的变化,如定时器工作在自由运行模式,其最大值为255,设置成最大值则表示占空比为99%接近100%(工作在向下比较低电平模式即高电平占100%)。TxCCxL则需要一直保持在0xff数值下。储备知识10.使能PWM功能如使P1.0控制其占空比为50%代码如下所示:T1CC2L=0xff;//默认保持0xffT1CC2H=255;//一半占空比即除上2表:TxCCxH寄存器位名称复位功能介绍7:0TxCCxH0x00定时器x通道x捕获比较值,高字节表:TxCCxL寄存器位名称复位功能介绍7:0TxCCxL0x00定时器x通道x捕获比较值,低字节储备知识10.使能PWM功能一、请在下方编写代码,选择P0.2、P1.0作为PWM输出占空比为30%,编写对应TxCCxL、TxCCxH代码。二、请在下方编写代码,选择P2.0、P1.6作为PWM输出占空比为20%,编写对应TxCCxL、TxCCxH代码。思考练习:储备知识10.使能PWM功能PWM使能流程图观看流程图,重新整理记忆使能PWM输出流程,PWM流程图如右图所示。11.照明灯调节系统本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、ZigBee开发板、光照传感器模块、5V电源适配器、USB下载线。环境准备任务实施任务实施在上一个任务中根据获取到的光照强度数值,来控制LED的亮度。当光照数值越低,LED亮度越低。利用定时器控制输出信号的高电平时间和低电平时间,调整占空比来控制LED灯的亮度。任务要求编写代码步骤1:新建工程->工程名称为“照明灯调节系统”->保存->新建源程序.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码如右所示。(新建工程具体步骤,不再重复介绍)11.照明灯调节系统任务实施步骤2:编写设置I/OP1.0、P1.1为外设使用,设置I/O为输出,代码如下所示。11.照明灯调节系统#include"iocc2530.h"voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x03;//设置P1.0、P1.1为输出P1=0x00;//设置LED全灭
while(1){
}}任务实施步骤3:编写定时器1模式,分频1、自由运行模式,代码如下所示。11.照明灯调节系统#include"iocc2530.h"
voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出P1=0;//设置LED全灭
T1CTL|=0x01;//分频1、自由运行模式
while(1){
}}任务实施步骤4:设置定时器1使用通道2,代码如下所示。11.照明灯调节系统#include"iocc2530.h"
voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出P1=0;//设置LED全灭
T1CTL|=0x01;//分频1、自由运行模式
PERCFG|=0x40;//使用通道2
while(1){
}}任务实施步骤5:编写设置定时器1通道代码,设置通道输出模式为,代码如下所示。11.照明灯调节系统#include"iocc2530.h"voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出P1=0;//设置LED全灭T1CTL|=0x01;//分频1、自由运行模式PERCFG|=0x40;//使用通道2
//设置通道1(P1.0)为PWM模式为向下比较低电平模式
T1CCTL1|=0x24;
//设置通道2(P1.1)为PWM模式为向下比较低电平模式
T1CCTL2|=0x24;
while(1){}}任务实施步骤6:编写设置比较值,分别将P1.0、P1.1比较值设置为50%,20%,代码如下所示。11.照明灯调节系统#include"iocc2530.h"voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年计算机二级考试回答技巧试题及答案
- 2024年5月深海潜水心理压力阈值测定与装备失效应急推演
- 2024年投资咨询测试题及答案总结
- 天使的微笑护理读书笔记
- 2024监理工程师考试独特挑战试题及答案
- 2024人力资源管理师考试高频试题及答案
- 黑龙江民族职业学院《文学文本细读》2023-2024学年第一学期期末试卷
- 黑龙江省伊春市南岔区伊春二中2024-2025学年高三下期第二次月考语文试题含解析
- 黑龙江省哈尔滨市依兰县2024-2025学年初三下期末物理试题(一模)质量监控试卷含解析
- 黑龙江省哈尔滨市第九中学2025年高三第二学期二模考试英语试题含解析
- 2024年电子商务师真题试题及答案
- 异麦芽糖酐铁注射液-药品临床应用解读
- 园艺植物遗传育种 课件全套 第1-10章 绪论-新品种的审定与推广繁育+实训
- 【初中化学】常见的盐(第1课时常见的盐的性质和用途)-2024-2025学年九年级化学人教版(2024)下册
- 《智能优化算法解析》 课件 第6章-基于群智能的智能优化算法
- 湖南省高二年级下册期中联考物理试题(原卷版)
- 智慧教室建设实施计划方案
- 神经外科病人肺部管理
- 【MOOC】思辨式英文写作-南开大学 中国大学慕课MOOC答案
- 24秋国家开放大学《经济法学》形考任务(记分作业)1-4参考答案
- 2024年湖北省武汉市中考英语真题(含解析)
评论
0/150
提交评论