版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ATmega16AD转换与ADC中断程序及扩展ADCPPT内容概览ATmega16内部 ADC 特点模拟噪声抑制技术ADC 转换结果ADC 及相关寄存器ADC 中断程序231、ATmega16内部ADC特点 10 位精度,逐次逼近型 ADC 65 - 260 s 的转换时间 最高分辨率时采样率高达 15 kSPS 8 路复用的单端输入通道 7 路差分输入通道 2 路可选增益为 10 x 与 200 x 的差分输入通道41、ATmega16内部ADC特点 可选的左对齐 ADC 读数 0 - VCC 的 ADC 输入电压范围 可选的 2.56V ADC 参考电压 连续转换或单次转换模式 通过自动触
2、发中断源启动 ADC 转换 ADC 转换结束中断 基于睡眠模式的噪声抑制器51、ATmega16内部ADC特点 一个10位的逐次逼近型 ADC,与一个8通道的模拟多路复用器连接,能对来自端口 A 的8 路单端输入电压进行采样。 ADC 包括一个采样保持电路 ADC 由 AVCC 引脚单独提供电源。AVCC与VCC 之间的偏差不能超过 0.3V。61、ATmega16内部ADC特点 逐次逼近电路需要一个从 50 kHz 到 200 kHz 的输入时钟以获得最大精度(所需的转换精度低于10 比特时输入时钟频率可以高于 200 kHz)71、ATmega16内部ADC特点 ADC 模块包括一个预分频
3、器,可以由任何超过100 kHz 的 CPU 时钟来产生可接受的 ADC 时钟。预分频器通过 ADCSRA 寄存器的 ADPS 进行设置。置位 ADCSRA 寄存器的 ADEN 将使能ADC,预分频器开始计数。只要 ADEN 为1,预分频器就持续计数,直到 ADEN 清零。81、ATmega16内部ADC特点 ADCSRA 寄存器的 ADSC 置位后,单端转换在下一个 ADC 时钟周期的上升沿开始启动。91、ATmega16内部ADC特点 正常转换需要 13 个 ADC 时钟周期。为了初始化模拟电路,ADC 使能( ADCSRA 寄存器的 ADEN 置位) 后的第一次转换需要 25 个 ADC
4、 时钟周期。101、ATmega16内部ADC特点112、模拟噪声抑制技术 设备内部及外部的数字电路都会产生电磁干扰(EMI),从而影响模拟测量的精度。如果转换精度要求较高,那么可以通过以下方法来减少噪声:- 1. 模拟通路越短越好。保证模拟信号线位于模拟地之上,并使它们与高速切换的数字信号线分开。- 2. AVCC 应通过 LC 网络与数字电压源 VCC 连接。- 3. 使用 ADC 噪声抑制器来降低来自 CPU 的干扰噪声。- 4. 如果有其他 ADC 端口被用作数字输出,那么必须保证在转换进行过程中它们不会有电平的切换。123、ADC转换结果 转换结束后( ADIF 为高 ),转换结果被
5、存入ADC 结果寄存器( ADCL, ADCH )。 单次转换的结果如下( VIN 为被选中引脚的输入电压):133、ADC转换结果 如果使用差分通道,结果(用2 的补码形式表示):143、ADC转换结果 差分测量范围:154、ADC及相关寄存器 ADC 多工选择寄存器 ADMUX:ADMUX4、ADC及相关寄存器Bit 7:6 REFS1:0: 参考电压选择REFS1RESF0参考电压选择参考电压选择00AREF,内部Vref关闭01AVCC,AREF引脚外加滤波电容10保留112.56V片内基准电压源,AREF引脚外加滤波电容16ADMUX4、ADC及相关寄存器Bit 7:6 REFS1:
6、0: 参考电压选择- 如果将一个固定电源接到 AREF 引脚,那么就不能选择其他的基准源,因为这会导致片内基准源与外部参考源的短路。如果 AREF 引脚没有联接任何外部参考源,则可以选择 AVCC 或1.1V 作为基准源。参考源改变后的第一次 ADC 转换结果可能不准确,建议不要使用这一次的转换结果。17ADMUX4、ADC及相关寄存器Bit 5 ADLAR: ADC 转换结果 左对齐- ADLAR 影响 ADC 转换结果在 ADC 数据寄存器中的存放形式ADLAR 置位时转换结果为左对齐,否则为右对齐 ADLAR 的改变将立即影响 ADC 数据寄存器的内容,不论是否有转换正在进行。18ADM
7、UX4、ADC及相关寄存器Bits 4:0 MUX4:0: 模拟通道与增益选择位MUX4.MUX0单端输入单端输入00000ADC000001ADC100010ADC200011ADC300100ADC400101ADC500110ADC600111ADC7详见ATmega16数据手册 Page204 Table8419ADMUX204、ADC及相关寄存器 ADC 控制和状态寄存器A ADCSRA:ADCSRA4、ADC及相关寄存器Bit 7 ADEN: ADC 使能- ADEN 置位即启动 ADC,否则 ADC 功能关闭。在转换过程中关闭 ADC 将立即中止正在进行的转换。21ADCSRA4
8、、ADC及相关寄存器Bit 6 ADSC: ADC 开始转换- 在单次转换模式下,ADSC 置位将启动一次 ADC 转换。在连续转换模式下,ADSC 置位将启动首次转换。第一次转换( 在 ADC 启动之后置位 ADSC,或者在使能 ADC 的同时置位 ADSC ) 需要 25 个ADC 时钟周期,而不是正常情况下的 13 个。第一次转换执行 ADC初始化的工作。- 在转换进行过程中读取 ADSC 的返回值为 1”,直到转换结束。ADSC 清零不产生任何动作。22ADCSRA4、ADC及相关寄存器Bit 5 ADATE: ADC 自动触发使能- ADATE 置位将启动 ADC 自动触发功能。触发
9、信号的上跳沿启动ADC转换。触发信号源通过 SFIOR 寄存器的 ADC 触发信号源选择位 ADTS 设置。23ADCSRA4、ADC及相关寄存器Bit 4 ADIF: ADC 中断标志 - 在 ADC 转换结束,且数据寄存器被更新后,ADIF 置位。如果ADIE 及 SREG 中的全局中断使能位 I 也置位,ADC 转换结束中断服务程序即得以执行,同时 ADIF 硬件清零。此外,还可以通过向此标志写1 来清 ADIF。要注意的是,如果对 ADCSRA 进行读修改写操作,那么待处理的中断会被禁止。24ADCSRA4、ADC及相关寄存器Bit 3 ADIE: ADC 中断使能 - 若 ADIE
10、及 SREG 的位 I 置位, ADC 转换结束中断即被使能。25ADCSRA4、ADC及相关寄存器Bit 2:0 ADPS2:0: ADC 预分频器选择位 ADPS2ADPS1ADPS1分频因子分频因子000200120104011810016101321106411112826ADCSRA274、ADC及相关寄存器 ADC 数据寄存器 ADCL 及 ADCH:ADCL 及 ADCH284、ADC及相关寄存器 ADC 数据寄存器 ADCL 及 ADCH:ADCL 及 ADCH4、ADC及相关寄存器ADC 数据寄存器 ADCL 及 ADCH:- 读取 ADCL 之后,ADC 数据寄存器一直要等
11、到 ADCH 也被读出才可以进行数据更新。因此,如果转换结果为左对齐,且要求的精度不高于 8 比特,那么仅需读取 ADCH 就足够了。否则必须先读出ADCL 再读 ADCH。29ADCL 及 ADCH304、ADC及相关寄存器 特殊功能 IO 寄存器 SFIOR:SFIOR314、ADC及相关寄存器 Bit 7:5 ADTS2:0: ADC 自动触发源- 若 ADCSRA 寄存器的 ADATE 置位,ADTS 的值将确定触发 ADC 转换的触发源;否则,ADTS 的设置没有意义。被选中的中断标志在其上升沿触发 ADC 转换。从一个中断标志清零的触发源切换到中断标志置位的触发源会使触发信号产生一
12、个上升沿。如果此时ADCSRA 寄存器的 ADEN 为 1,ADC 转换即被启动。切换到连续运行模式(ADTS2:0=0)时,即使 ADC 中断标志已经置位也不会产生触发事件。SFIOR324、ADC及相关寄存器 Bit 7:5 ADTS2:0: ADC 自动触发源ADTS2ADTS1ADTS0触发源触发源000连续转换模式001模拟比较器010外部中断请求 0011定时器/ 计数器0 比较匹配100定时器/ 计数器0 溢出101定时器/ 计数器比较匹配B110定时器/ 计数器1 溢出111定时器/ 计数器1 捕捉事件SFIOR334、ADC及相关寄存器 Bit 4 Res: 保留位- 这一位
13、保留。为了与以后的器件相兼容,在写 SFIOR 时这一位应写0。SFIOR344、ADC及相关寄存器 模拟比较器控制和状态寄存器 ACSR- Bit 7 ACD: 模拟比较器禁用ACD 置位时,模拟比较器的电源被切断。可以在任何时候设置此位来关掉模拟比较器。这可以减少器件工作模式及空闲模式下的功耗。改变 ACD 位时,必须清零 ACSR 寄存器的 ACIE 位来禁止模拟比较器中断。否则 ACD 改变时可能会产生中断。SFIOR354、ADC及相关寄存器 中断寄存器 SREG- Bit 7 I: 全局中断使能I 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果 I 清零,则不论
14、单独中断标志置位与否,都不会产生中断。任意一个中断发生后 I 清零,而执行 RETI 指令后 I 恢复置位以使能中断。I 也可以通过 SEI 和 CLI 指令来置位和清零。SFIOR365、ADC中断程序 “#pragma interrupt_handler : ”- ADC 转换结束中断向量为 15- 中断向量表见 ATmega16 数据手册 Page43 Table18完MobileVR通用I/O口结构3.1 通用I/O口寄存器3.2编程应用3.3三、AVR通用I/O口 有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32
15、路通用I/O接口,分别对应于芯片上32根I/O引脚。 所有这些I/O口都是双(有的为3)功能复用的。其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。 1、I/O口结构三、AVR通用I/O口结构图1、I/O口结构三、AVR通用I/O口DDRx:控制I/O口的输入输出方向,即控制I/O口的工作方式为输出方式还是输入方式。 当DDRx=1时,I/O口处于输出工作方式。此时数据寄存器PORTx中的数据通过一个推挽电路输出到外部引脚:1、I/O口结构三、AVR通用I/O口当PORTx=1时,I/O引脚输出高电平,
16、可提供输出20mA的电流;而当PORTx=0时,I/O引脚呈现低电平,同时可吸纳20mA电流。AVR的I/O在输出方式下提供了比较大的驱动能力,可以直接驱动LED等小功率外围器件。PORTx:数据输出寄存器;Pin:数据读入寄存器1、I/O口结构三、AVR通用I/O口 当DDRx=0时,I/O处于输入工作方式。此时引脚寄存器PINx中的数据就是外部引脚的实际电平,通过读I/O指令可将物理引脚的真实数据读入MCU。此外,当I/O口定义为输入时(DDRx=0),通过PORTx的控制,可使用或不使用内部的上拉电阻。 1、I/O口结构三、AVR通用I/O口 表中的PUD为寄存器SFIOR中的D2位,它
17、的作用相当AVR全部I/O口内部上拉电阻的总开关。当PUD=1时,AVR所有I/O内部上拉电阻都不起作用(全局内部上拉无效);而PUD=0时,各个I/O口内部上拉电阻取决于PORTXn的设置。1、I/O口结构三、AVR通用I/O口 Atmega通用I/O特点:n双向可独立位控的I/O口 ATmega16的PA、PB、PC、PD四个端口都是8位双向I/O口,每一位引脚都可以单独的进行定义,相互不受影响。如用户可以在定义PA口第0、2、3、4、5、6位用于输入的同时定义第1、7位用于输出,互不影响。 nPush-Pull大电流驱动 (最大40mA) 每个I/O口输出方式均采用推挽式缓冲器输出,提供
18、大电流的驱动,可以输出(吸入)20mA的电流,因而能直接驱动LED显示器。 n可控制的引脚内部上拉电阻 当I/O口被用于输入状态,且内部上拉电阻被激活(有效)时,如果外部引脚被拉低,则构成电流源输出电流(uA量级)nDDRx可控的方向寄存器。1、I/O口结构三、AVR通用I/O口 I/O口使用注意事项: 1)使用AVR的I/O口,首先要正确设置其工作方式,确定其工作在输出方式还是输入方式。 2)当I/O工作在输入方式,要读取外部引脚上的电平时,应读取PINxn的值,而不是PORTxn的值。 3)当I/O工作在输入方式,要根据实际情况使用或不使用内部的上拉电阻。如能利用AVR内部I/O口的上拉电
19、阻,可以节省外部的上拉电阻 4) 一旦将I/O口的工作方式由输出设置成输入方式后,必须等待一个时钟周期后才能正确的读到外部引脚PINxn的值。 5)每次读写I/O前都要先配置DDRx寄存器。2、I/O口寄存器三、AVR通用I/O口 每个I/O口3个寄存器,共用12个寄存器。2、I/O口寄存器三、AVR通用I/O口 下图是PA口寄存器PORTA、DDRA、PINA各个位的具体定义,及复位初始值。其它3个口的寄存器的情况与PA口相同,只是地址不一样。 3、I/O口编程应用三、AVR通用I/O口一种标准的C程序可以采用以下的写法: #define BIT0 0 #define BIT7 7 PORT
20、C = 1(BIT0) | 1(BIT3); /* PC口的第0位和第3位输出“1”,其它为“0”*/1(BIT0)表示逻辑1左移0位,结果为0b00000001;1(BIT3) 表示逻辑1左移3位,结果为0b00001000。0b00000001在同0b00001000相或,结果为0b00001001。 以上的逻辑运算不产生具体的操作指令,由编译器在编译时运算完成,得到结果,最后只是产生将结果赋值到PORTC寄存器的操作指令。 这种表示方法有利于“不同CPU的移植”。3、I/O口编程应用三、AVR通用I/O口 这种表示方式,比直接赋值0b00001001更容易理解程序的作用。在后面的程序将广
21、泛使用这种表达方法,如对USART串口编程中大量使用了这样的描述方式:#define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1FE) #define PARITY_ERROR (1UPE) #define DATA_OVERRUN (1OVR)3、I/O口编程应用三、AVR通用I/O口#define DATA_REGISTER_EMPTY (1UDRE) #define RX_COMPLETE (1RXC
22、) char status; status = UCSRA; if ( status & ( FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN ) = 0 ) / 接收数据无错误处理过程 else /接收数据产生错误处理过程 3、I/O口编程应用三、AVR通用I/O口 程序中的UCSRA为ATmega16的串行接口USART的状态寄存器,UPE是UCSRA的第2位,当UPE为1时表示接收到的数据产生了校验错误。 程序中采用了定义语句,定义 PARITY_ERROR为(1 UPE), 实际就是0b00000100。 因此一旦USART的值为PARIT
23、Y_ERROR时, 表示接受的数据产生了校验错误,使程序的阅读非常明了。 (1)、LED发光二极管驱动三、AVR通用I/O口(1)、LED发光二极管驱动三、AVR通用I/O口#include void delay(unsigned char t);/*声明函数*/void main(void) char position = 0; / position PORTA=0 xFF; / PA1LED DDRA=0 xFF; / PA while (1) PORTA = (1= 8) position = 0; delay(100); /*定义函数*/ void delay(unsigned cha
24、r t) unsigned char a,b; for(a=0;a100;a+) for(b=0;bt;b+); (2)、继电器控制三、AVR通用I/O口(3)、步进电机驱动三、AVR通用I/O口(3)、步进电机驱动三、AVR通用I/O口 单极3相步进电机有三个磁激励相,分别用A、B、C表示,每相有一个磁激线圈。通过控制三个磁激线圈电流的通断的先后时间顺序和通断频率就可以改变步进电机的变旋转方向和控制转速,图6-9是单极3相步进电机的原理图。 单极3相步进电机有3相3拍和3相6拍两种驱动方式,图6-10给出它们的控制时序图。3相3拍就是A、B、C三相分别通电,正转为ABCABC,反转为ACBA
25、CB,每拍转动3。3相6拍中有三拍是两相同时通电,正转为AABBBCCCA,反转为AACCCBBBA,每拍转动1.5。 (3)、步进电机驱动三、AVR通用I/O口(3)、步进电机驱动三、AVR通用I/O口 单极3相步进电机有三个磁激励相,分别用A、B、C表示,每相有一个磁激线圈。通过控制三个磁激线圈电流的通断的先后时间顺序和通断频率就可以改变步进电机的变旋转方向和控制转速,图6-9是单极3相步进电机的原理图。 单极3相步进电机有3相3拍和3相6拍两种驱动方式,图6-10给出它们的控制时序图。3相3拍就是A、B、C三相分别通电,正转为ABCABC,反转为ACBACB,每拍转动3。3相6拍中有三拍
26、是两相同时通电,正转为AABBBCCCA,反转为AACCCBBBA,每拍转动1.5。 (3)、步进电机驱动三、AVR通用I/O口#include #include flash char step_out6=0 x04,0 x06,0 x02,0 x03,0 x01,0 x05; void main(void) char i = 0; int delay = 500; PORTA=0 x00; DDRA=0 x07; while (1) PORTA = step_outi; if (+i = 6) i = 0; delay_ms(delay); ; (3)、数码管显示(并行)三、AVR通用I/O
27、口(3)、数码管显示(并行)三、AVR通用I/O口假设PA.0-aPA.7-h要显示数字1共阴极:PA输出?共阳级:PA输出?与此同时,公共端接法?欲连续显示数字0-9该如何?(3)、数码管显示(并行)三、AVR通用I/O口(3)、数码管显示(并行)三、AVR通用I/O口(3)、数码管显示(并行)三、AVR通用I/O口#include #include flash char led_710=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F; flash char position6=0 xfe,0 xfd,0 xfb,0 x
28、f7,0 xef,0 xdf; char time3; / 时、分、秒计数 char dis_buff6; / 显示缓冲区,存放要显示的6个字符的段码值 char time_counter; / 1秒计数器 ,全局变量bit point_on; / 秒显示标志 ,全局变量(3)、数码管显示(并行)三、AVR通用I/O口void display(void) / 扫描显示函数,执行时间12ms char i; for(i=0;i=5;i+) PORTA = led_7dis_buffi; if (point_on & ( i=2 | i=4 ) PORTA |= 0 x80; / (1)
29、PORTC = positioni; delay_ms(2); / (2) PORTC = 0 xff; / (3) (3)、数码管显示(并行)三、AVR通用I/O口void time_to_disbuffer(void) / 时间值送显示缓冲区函数 char i,j=0; for (i=0;i= 40) time_counter = 0; / (4) point_on = point_on; / (5) if (+time0 = 60) time0 = 0; if (+time1 = 60) time1 = 0; if (+time2 = 24) time2 = 0; time_to_dis
30、buffer(); delay_ms(13); / 延时13ms,可进行其它处理(6) (3)、数码管显示(串行)三、AVR通用I/O口(3)、数码管显示(串行)三、AVR通用I/O口(3)、数码管显示(串行)三、AVR通用I/O口#define HC164_data PORTA.0 #define HC164_clk PORTA.1 void HC164_send_byte(char byte) char i; for (i=0;i=7;i+) HC164_data = byte & 1 i; HC164_clk = 1; HC164_clk = 0; void display(vo
31、id) char temp,i; for(i=0;i=5;i+) temp = led_7dis_buffi; if (point_on & (i=2 | i=4) HC164_send_byte(temp | 0 x80); else HC164_send_byte(temp); PORTC = positioni; delay_ms(2); PORTC = 0 xff; 。 (4)、字符LCD三、AVR通用I/O口(4)、字符LCD三、AVR通用I/O口(4)、字符LCD三、AVR通用I/O口函数功能简介:1)void LCD_init(void)该函数对LCD进行初始化,将显示位
32、置回到第0行的第0列的起始位置处。函数的参数应是LCD显示器的列数(一行能够显示的字符数)。使用LCD显示器时,必须先使用该函数对LCD显示器进行初始化。 2)void LCD_clear(void) 该函数清除LCD的显示,并将显示位置回到第0行的第0列的起始位置处。 3)void LCD_write_data(unsigned char data) 写数据到LCD。4) LCD_write_char(unsigned char x,unsigned char y,unsigned char data) 该函数将字符c在当前的显示位置上显示出来。 5)void LCD_write_str(u
33、nsigned char x,unsigned char y,unsigned char *s)该函数将在从当前的显示位置开始,显示定义在SRAM中的字符串(str为SRAM中定义的字符串的指针)。 (4)、字符LCD三、AVR通用I/O口6)void LCD_write_com(unsigned char com) 写命令到LCD。(4)、字符LCD三、AVR通用I/O口初始化及主程序:#include #include lcd1602.hvoid main(void) unsigned char i; unsigned char *p; PORTA = 0 xFF; /*打开上拉*/ DD
34、RA = 0 x00; /*方向输入*/ PORTB = 0 xFF; /*电平设置*/ DDRB = 0 xFF; /*方向输出*/ PORTC = 0 x7F; DDRC = 0 x80; PORTD = 0 xFF; DDRD = 0 x00;delay_ms(100); LCD_init();while (1) i = 1; p = “LCD-1602-test”; LCD_clear(); LCD_write_str(5,0,Welcome); delay_ms(250); while (*p) LCD_write_char(i,1,*p); i +; p +; delay_ms(2
35、50); delay_ms(250); (4)、字符LCD三、AVR通用I/O口初始化及主程序:#include #define RS_CLR PORTD &= (1 PD3)#define RS_SET PORTD |= (1 PD3)#define RW_CLR PORTD &= (1 PD4)#define RW_SET PORTD |= (1 PD4)#define EN_CLR PORTD &= (1 PD6)#define EN_SET PORTD |= (1 PD6)/*延时函数*/void delay_us(unsigned int n) if (n = 0) return ; while (-n);(4)、字符LCD三、AVR通用I/O口/*延时函数*/void delay_ms(unsigned char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 紫胶熔胶过滤工岗前生产安全水平考核试卷含答案
- 民族拉弦弹拨乐器制作工成果测试考核试卷含答案
- 十二碳二元酸装置操作工安全生产能力测试考核试卷含答案
- 木刻水印雕刻版员岗前工艺分析考核试卷含答案
- 塑料模压工安全知识宣贯考核试卷含答案
- 涂料合成树脂工岗前基础技能考核试卷含答案
- 劳务派遣管理员岗前规章考核试卷含答案
- 橡胶成型工岗中实操熟练考核试卷含答案
- 皮鞋制作工岗中实操综合知识考核试卷含答案
- 平台稳性操作员岗中决策判断考核试卷含答案
- GB 48145-2026井工煤矿机电设备完好性要求
- 城市绿道配套给排水方案
- 2026年安徽公务员行测真题试卷附答案
- 新版2026秋新北师大版数学五年级上册全册教案教学设计含综合实践合集
- 新版(2026秋)人教版(新教材)六年级数学上册全册教案合集
- 2026年陕西省高考生物学真题试卷
- 交管12123学法减分题库500题(含标准答案+解析2026全国完整版)
- 专业足球场赛事宣传策划合同
- 闭合电路的欧姆定律 课件-2026-2027学年高二上学期物理人教版必修第三册
- 2026年中学综合实践测试题及答案
- 化学检验员(技师)职业鉴定理论考试题库(浓缩400题)
评论
0/150
提交评论