版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主编:李文华“十四五”职业教育国家规划教材经全国职业教育教材审定委员会审定制作液晶显示的数字电压表任务15单片机的fosc=11.0592MHz,用I/O端口扩展并行A/D转换芯片ADC0804和液晶显示器1602,在ADC0804的模拟输入端输入0~5V的模拟电压,用液晶显示器实时显示ADC0804所输入的模拟电压。任务要求相关知识1、用I/O端口扩展并行接口芯片(1)接口电路1、用I/O端口扩展并行接口芯片举例STC89C51采用I/O端口的方式扩展ADC0804和8255AP1口充当数据口P2.0、P2.1分别充当读写控制线
P2.3、P2.4充当低位地址线P2.2、P2.5充当高位地址线
1、用I/O端口扩展并行接口芯片(2)访问程序写芯片操作程序的编写①先产生片选信号:将与接口芯片片选脚相接的I/O口线置为低电平②产生地址信号(若接口芯片无地址引脚,则跳过此步):按照接口芯片的操作原理,将与接口芯片的端口地址引脚相接的I/O口线置为高电平或者低电平,使接口芯片的端口选中。③写入数据:将待写入的数据写入并行口。④产生写控制信号:在与写控制引脚相接的I/O口线上产由高至低、再由低至高的脉冲信号。⑤撤销片选:将与接口芯片片选脚相接的I/O口线置为高电平。1、用I/O端口扩展并行接口芯片(2)访问程序写芯片操作程序的编写void wr0804(uchar m){CS=0; //片选置0,选中ADC0804P_DATA=m; //数据写入数据口WR_0804=0; //产生写控制下降沿WR_0804=1; //产生写控制上升沿CS=1; //片选置1,撤销片选}1、用I/O端口扩展并行接口芯片读芯片操作程序的编写
①先产生片选信号:将与接口芯片片选脚相接的I/O口线置为低电平。
②产生地址信号(若接口芯片无地址引脚,则跳过此步):同写操作的第2步。
③产生读控制下降沿:将与接口芯片读控制脚相接的I/O口线置为低电平。
④读取数据:从数据口中读取数据至指定的变量中
⑤产生读控制上升沿:将与接口芯片读控制脚相接的I/O口线置为高电平。
⑥撤销片选:将与接口芯片片选脚相接的I/O口线置为高电平。1、用I/O端口扩展并行接口芯片读芯片操作程序的编写uchar rd0804(void){ uchar m; //定义变量
P_DATA=0xff; //数据口写1,准备读数
CS=0; //片选置0,选中ADC0804 RD_0804=0; //产生读控制下降沿
m=P_DATA; //从数据口中读数至m中
RD_0804=1; //产生读控制上升沿
CS=1; //片选置1,撤销片选
return m; //返回所读取的值}2、字符型液晶显示器1602的应用特性液晶显示器(LCD)分字符型液晶显示器和图形液晶显示器2类。1602液晶显示器是常用的字符型液晶显示器,其控制器是日立公司生产的HD44780及其兼容芯片,驱动芯片为HD44100及其兼容芯片,可显示2×16个字母、数字、符号等字符,每行16个字符,每个字符由5×7点阵组成。目前市面上的1602液晶显示器已经模块化,包括液晶显示片、HD44780芯片和HD44100芯片等,如图。其中,HD44780也是其他字符型液晶显示器中常用的控制器,研究1602液晶显示器的应用主要是研究控制器HD44780的应用控制。2、字符型液晶显示器1602的应用特性(1)1602液晶显示模块的引脚功能及其与单片机的接口电路控制器HD44780共有80个引脚,但在1602液晶显示模块上,这80个引脚中绝大多数引脚用于与液晶显示片和驱动芯片相连,并没有对用户开放,用户也不必深究,只有与单片机和外部电源相接的少数几个引脚才以模块引脚的形式对外开放,供用户搭建电路之用。1602液晶显示模块的引脚分布如图所示2、字符型液晶显示器1602的应用特性1602液晶显示模块的引脚各引脚的功能2、字符型液晶显示器1602的应用特性采用I/O端口控制1602液晶显示模块的电路电路的连接方法:液晶显示器的数据口与单片机的某个并行口相接,液晶显示器的RS、R/W、E引脚分别与单片机的3根I/O口线相接,5V电源经可调电阻分压后给液晶显示器提供反视度电压,液晶显示器的背光电源显示接5V电源。2、字符型液晶显示器1602的应用特性(2)HD44780的编程结构
主要由数据显示RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、指令寄存器(IR)、数据寄存器(DR)、忙标志(BF)和地址计数器(AC)等几部分组成2、字符型液晶显示器1602的应用特性(2)HD44780的编程结构存放待显示字符的ASCII码。HD44780共有80字节的数据显示RAM,每个字节对应液晶屏上的一个字符位,最多可控制液晶屏显示4行共80个字符,每行20个字符。相当于数码管显示中的字符笔型码表。用来存放192个5×7的点阵字模,包括阿拉伯数字、常用的符号、英文大小写字母和日文假名等,字模的排列方式与标准的ASCII码相同。单片机向DDRAM中写入数据m,HD44780就会以m为依据到CGROM中读取对应的点阵字模,并控制相关电路在液晶屏上进行显示。功能类似于CGROM,用来存放用户自造字符的点阵字模2、字符型液晶显示器1602的应用特性(2)HD44780的编程结构存放单片机写入的指令代码暂存单片机与HD44780所交换的数据指示HD44780的当前工作状态。BF=1时,表示HD44780当前正在处理数据,不能接收单片机发来的指令和数据记录单片机所访问DDRAM或者CGRAM单元的地址,具备自动加1或者减1功能2、字符型液晶显示器1602的应用特性(3)HD44780的访问命令①清屏命令功能:将DDRAM的内容全部更新为0x20(空格的ASCII码),液晶显示的内容被清除,地址计数器(AC)的值设置为0,光标移至左上角(第0行第0列处)。2、字符型液晶显示器1602的应用特性②光标归位命令功能:
将光标移至左上角;地址计数器(AC)的值设置为0;DDRAM的内容不变,即液晶显示的内容不变。2、字符型液晶显示器1602的应用特性③设置字符进入模式命令I/D:设置数据写入DDRAM或者CGRAM后,地址计数器的值是递增还是递减。I/D=0:AC递减;I/D=1:AC递增。S:设置屏幕上的字符是否移动。S=0:数据写入DDRAM后,显示字符不移动;S=1:数据写入DDRAM后,显示字符向左(I/D=1)或者向右(I/D=0)移动一格,光标位置不变。I/D位与S位组合的含义如下2、字符型液晶显示器1602的应用特性④显示器开关命令D:显示屏打开/关闭控制位。D=1:打开显示屏;D=0:关闭显示屏。C:光标显现控制位。C=1:光标出现在地址计数器所指的位置;C=0:不显示光标。B:光标闪烁控制位。B=1:光标出现后会闪烁;B=0:光标不闪烁。2、字符型液晶显示器1602的应用特性⑤显示光标移位命令S/C、R/L位的含义如下:2、字符型液晶显示器1602的应用特性⑥功能设置命令DL:数据长度选择位。DL=1:每次数据传输为8位(DB7~DB0);DL=0:每次数据传输为4位,使用DB7~DB4位分2次传输一个完整的字符数据。N:显示屏为单行或双行选择。N=1:双行显示;N=0:单行显示。F:大小字符显示选择。F=1:用5×10点阵字符显示(有些产品无此功能);F=0:用5×7点阵字符显示。2、字符型液晶显示器1602的应用特性⑦CGRAM地址设置命令其中,A5~A0为所要访问的CGRAM单元的地址。⑧DDRAM地址设置命令其中,A6~A0为所要访问的DDRAM单元的地址2、字符型液晶显示器1602的应用特性⑨读忙标志和AC计数值命令该命令是在RS=0的条件下从HD44780中读取数据,所读得数据的最高位为BF,低7位为地址计数器(AC)的值,其值表示CGRAM或者DDRAM的地址,至于到底是哪一种地址值则取决于最后一次写入的地址设定指令。若最后一次写入的地址设定指令为DDRAM地址设定指令,则AC的值为DDRAM的地址。2、字符型液晶显示器1602的应用特性⑩写数据至CGRAM或者DDRAM中命令D7~D0为待写的数据。该命令用在设定CGRAM地址或者设定DDRAM地址命令之后,用来将指定的数据写入AC计数器所指定的地址单元中。2、字符型液晶显示器1602的应用特性⑪从CGRAM或者DDRAM中读数命令D7~D0为所读得的数据。该命令用在设定CGRAM地址或者设定DDRAM地址命令之后,用来读取AC计数器所指定的地址单元中的数据。2、字符型液晶显示器1602的应用特性(4)HD44780的操作时序读操作时序图
其中,在数据有效时RS为0的时序为读BF时序,其RS的初态为1;在数据有效时RS为1的时序为读数据时序,其RS的初态为0。2、字符型液晶显示器1602的应用特性(4)HD44780的操作时序HD44780的读时序参数符号含义最小值最大值单位tc使能周期1000
nstw使能脉冲宽度450
nstsp1地址建立时间140
nsthd1地址保持时间10
nstd数据延迟时间
320nsthd2数据保持时间10
ns2、字符型液晶显示器1602的应用特性(4)HD44780的操作时序时序图的理解①读操作之前,E为低电平,R/W可为任意状态,若是读BF和AC计数值,RS为高电平,若是读数据,RS为低电平。2、字符型液晶显示器1602的应用特性(4)HD44780的操作时序时序图的理解②RS有效时(读BF:RS=0,读数据:RS=1),R/为高电平,RS有效后至少要过tSP1时间才能产生E信号的上升沿。因此,进行读操作时,单片机应先将R/置为高电平,然后置RS信号,延时tSP1时间后再产生E信号的上升沿。2、字符型液晶显示器1602的应用特性(4)HD44780的操作时序时序图的理解③在E信号的上升沿,HD44780将内部数据输送到数据引脚上,由于存在数据延迟,E信号上升沿后td时间,数据线上出现有效数据。单片机产生E信号上升沿后应延时td时间才能从数据线上读取数据。2、字符型液晶显示器1602的应用特性(4)HD44780的操作时序时序图的理解④使能脉冲宽度tw的最小值为450ns,单片机产生E信号上升沿后至少要延迟tw时间才能产生E信号的下降沿。2、字符型液晶显示器1602的应用特性(4)HD44780的操作时序时序图的理解⑤E信号下降沿后,至少要过thd1时间才能复位RS信号(读BF:RS=1,读数据:RS=0)。复位RS时,R/为高电平。RS复位后,R/可为任意态。因此,E信号下降沿后可以不设置R/的状态。2、字符型液晶显示器1602的应用特性读取BF和AC计数值的流程图读取BF及AC计数值的程序uchar rd1602bf(void){ uchar m; RW1602=1; RS1602=0; EN1602=1; PD1602=0xff; m=PD1602; EN1602=0; RS1602=!RS1602; return m;}#define PD1602 P1sbit RS1602=P2^0;sbit RW1602=P2^1;sbit EN1602=P2^2;此句改为“RS1602=1;”,则变成了读DDRAM或者CGRAM数据程序2、字符型液晶显示器1602的应用特性写操作操作时序包括写指令和写数据2种操作,它们的差别仅仅只是所选择的寄存器不同而已,即RS引脚的状态不同。在数据有效时RS为0的时序为写指令时序,其RS的初态为1;在数据有效时RS为1的时序为写数据时序,其RS的初态为0。2、字符型液晶显示器1602的应用特性写时序参数表符号含义最小值最大值单位tc使能周期1000
nstw使能脉冲宽度450
nstsp1地址建立时间140
nsthd1地址保持时间10
nstsp2数据建立时间195
nsthd2数据保持时间10
ns2、字符型液晶显示器1602的应用特性写HD44780的流程图向HD44780入数据m的程序void wr1602dat(uchar m){ while(rd1602bf()&0x80); RW1602=0; RS1602=1; EN1602=1; PD1602=m; EN1602=0; RS1602=0;}此句改为“RS1602=0”则变成写命令程序2、字符型液晶显示器1602的应用特性(5)1602液晶显示器的应用程序
包括初始化液晶显示器、设置字符的显示位置、显示字符等,这些程序是通过调用HD44780的读写程序来实现的。
①初始化液晶显示器程序
功能:选择数据传输的位数、显示屏的行数、显示字符点阵的大小,设置字符进入的模式、光标的起始位置,打开显示屏。编程方法:调用wr1602cmd()函数向HD44780写入命令6、命令3、命令1和命令4。2、字符型液晶显示器1602的应用特性(5)1602液晶显示器的应用程序初始程序代码:void initlcd(void){ wr1602cmd(0x38); //命令6,功能设置。8位数据传输,双行显
示,5*7点阵 wr1602cmd(0x06); //命令3,输入模式设置。AC地址增,显示
屏不移动 wr1602cmd(0x01); //命令1,清显示。0x01:复位显示 wr1602cmd(0x0c); //命令4,显示开关设置。打开屏,禁止光
标闪烁显示}2、字符型液晶显示器1602的应用特性(5)1602液晶显示器的应用程序②设置显示起始位置程序功能:按照图7-22的对应关系,将字符在屏幕上显示的位置坐标转换成DDRAM的地址,然后组合成DDRAM地址设置命令,并向HD44780写入该命令。程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}2、字符型液晶显示器1602的应用特性(5)1602液晶显示器的应用程序程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}③显示字符程序实质:向DDRAM的单元中写入待显示字符的ASCII码。
编程方法:先定义一个数组disstr[],然后将待显示字符的ASCII码存入数组中,需要显示字符时,就将数组中各元素的值写入DDRAM中。
注意事项:在调用显示字符程序之前,先用setpos()函数设置字符显示的位置。2、字符型液晶显示器1602的应用特性(5)1602液晶显示器的应用程序程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}举例在液晶显示屏的(0,0)位置处开始显示“china”void display(uchar * str); //显示字符函数说明uchar distr[17]={"china"}; //定义显示数组,初始字符为chinavoid main(void) //main函数{ initlcd(); //初始化液晶显示屏 setpos(0,0); //设置显示位置
display(distr);
//调用display显示distr中的字符 while(1); //死循环}2、字符型液晶显示器1602的应用特性(5)1602液晶显示器的应用程序程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}举例在液晶显示屏的(0,0)位置处开始显示“china”//显示字符程序void display(uchar * str){ uchar * tp; //定义指针变量tp for(tp=str;*tp!=0;tp++) //指针指向数组首元素,若当
//前元素非空,则执行循环体 wr1602dat(*tp); //循环体:将指针所指元素的
//值写入DDRAM中}任务实施程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}1、搭建硬件电路电路图如下:任务实施程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}2、编写软件程序(1)流程图:任务16的程序框架与任务15相同。但在任务16中,ADC0804采用I/O端口控制,而不是三总线控制,电压值采用的是液晶显示,而不是通过串口回送至计算机中显示。任务实施程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}(1)流程图:任务实施程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}任务16的程序代码如下:#include <reg51.h> #define uchar unsigned char #define uint unsigned int #define N 8 #define P_DATA P2 #define PD1602 P2 sbit CS=P1^0; //7ADC0804的片选线定义,接P1.0sbit RD_0804=P1^1; //8ADC0804的读控制线定义,接P1.1sbit WR_0804=P1^2; //9ADC0804的写控制线定义,接P1.2sbit INTR=P3^2; //10ADC0804的INTR引脚定义,接P3.2sbit RS1602=P1^3; //111602的RS端定义,接P1.3sbit RW1602=P1^4; //121602的读写控制端RW的定义,接P1.4sbit EN1602=P1^5; //131602的使能控制端E的定义,接P1.5任务实施程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}任务16的程序代码如下:uchar idata adarr[N]; //14定义数组(保存N个AD值)uchar idata * idata fp; //15定义指针变量(指向当前AD值存放的位置)uchar distr[]={"Volt:0000mV"}; //16定义显示字符数组,并赋初值uchar filt(char); void wr0804(uchar m); uchar rd0804(void); void initlcd(void); uchar rd1602bf(void); void wr1602dat(uchar m); void wr1602cmd(uchar cmd);void setpos(uchar x,uchar y);void display(uchar *str);任务实施程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}void main(void) //26main函数{uint volt; //27定义变量volt(当前电压值)uchar adval; //28定义变量adval(A/D转换值)SP=0x5f; //29定义堆栈
fp=adarr; //30指针变量fp指向数组的首元素
initlcd(); //31初始化1602液晶显示器
while(1) //32死循环
{ wr0804(0xff); //33向ADC0804写入0xff:启动A/D转换
INTR=1; //34INTR端口写1,准备读端口
while(INTR==1); //35等待INTR引脚变成低电平
adval=rd0804(); //36读A/D转换值并保存至adval中
adval=filt(adval); //37数字滤波,结果存入adval中
volt=adval*5000L/255; //38A/D值变成电压值,并存入volt distr[8]=volt%10+0x30; //39求电压值的个位数,转换成ASCII码
//后存显示数组中任务实施程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}volt=volt/10; //40缩小10倍
distr[7]=volt%10+0x30; //41求电压值的十位数,转换成ASCII码
//后存显示数组中
volt=volt/10; //42缩小10倍
distr[6]=volt%10+0x30; //43求电压值的百位数,转换成ASCII码
//后存显示数组中
volt=volt/10; //44缩小10倍
distr[5]=volt%10+0x30; //45求电压值的千位数,转换成ASCII码
//后存显示数组中
setpos(0,0); //46设置字符显示的起始位置:0行0列
display(distr); //47显示字符串"Volt:xxxxmV"} //48死循环结束} //49main函数结束任务实施程序代码:void setpos(uchar x,uchar y){ //x:行坐标,值为0-15,y:列坐标,值为0-1 x=x&0x0f; //容错,行坐标为0-15,高4位无效 y=y&0x01; //容错,列坐标为0-1,高7位无效 if(y) x=x+0x40; //计算显存地址,或者x=y*0x40+x wr1602cmd(x|0x80); //形成DDRAM地址设置命令 //(命令8),并写入HD44780}volt=volt/10; //40
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年AI客服训练师:服务场景中的实体属性抽取训练
- 2026春新外研版英语七下第1单元【The Secrets of Happiness】核心知识点总结
- 塔吊转让合同协议书
- 医学影像科人力资源负荷监测策略
- 班车事故预案
- 外卖行业晋升路径
- 护理查对度专项考试试题(含答案解析)
- 建筑地面节能工程施工方案
- 岐黄国医班职业发展路径
- 《计算机应用 基础》-第7章
- 2025年中级消防设施操作员理论考试题库(300题)附答案
- 高度参与的课堂:提高学生专注力的沉浸式教学阅读记录
- 中北大学大一高数期末试卷及答案
- GB/T 37607-2025耐蚀合金盘条和丝
- U型生产线课件
- 大学藏语考试题目及答案
- 铜氨溶液碱分解中CuO形貌控制与催化活性研究
- 药品注册试题(附答案)
- 基因编辑技术的发展历程
- 2025年长沙市事业单位招聘考试卫生类口腔医学专业知识试题
- 2026届潍坊市中考联考英语试题含答案
评论
0/150
提交评论