单片机进制转换实现(报告+源码)

您所在的位置:网站首页 单片机存储结构实验报告 单片机进制转换实现(报告+源码)

单片机进制转换实现(报告+源码)

2024-07-12 17:08:39| 来源: 网络整理| 查看: 265

用4x4矩阵及LCD1602液晶显示实现各进制转换

摘要:在计算机及其相关的各领域中,数制的二进制、八进制、十进制和十六进制之间的相互转换可谓无处不在。为满足相关领域人员对进制转换计算的需求,特此利用51系列单片机开发进制转换器,实现二进制、八进制、十进制之间的相互转换。本文从数制转换的基本原理出发,分析二进制、八进制、十进制之间的相互关系,并通过设计实验,尝试使用STC89C52rc单片机、4x4矩阵按键以及LCD1602液晶显示屏,通过相关软件的编程烧录,开发进制转换器,实现二进制、八进制以及十进制数之间的相互转换。

关键词:4x4矩阵按键;LCD1602;51单片机;进制转换; 

1 绪论

        随着近年来计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入。它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,适合于与控制有关的系统。因此单片机越来越广泛地应用于自动控制,消费电子,智能化仪器,仪表,数据采集,信息处理,军工产品以及家用电器等各个领域。单片机往往是作为一个核心部件来使用,再根据具体硬件结构,以及具体应用对象的特点,与软件相结合,构成完整的应用系统,并保留可扩展功能以作日后完善。本设计将采用STC89C52rc单片机开发进制转换器,从理论和实践两个角度出发,对一个功能齐全,数制转换准确,运行稳定的数制转换器进行设计与实现分析。

1.1 本设计的目标及主要研究内容

        本设计要求通过设计实验,熟悉C51单片机的编程及其原件的结构、工作原理和使用方法,通过相关的开发工具实现各进间制相互转换,要求能够通过按键输入数据,并具有清屏、换行、确认功能,转换结果由LCD1602液晶显示屏输出。

        本设计从数制转换的基本原理出发,分析二进制、八进制、十进制之间的相互关系,并通过设计实验,尝试使用4x4矩阵按键以及LCD1602实现二进制、八进制以及十进制数之间的相互转换,以按键输入十进制D(0~9),八进制O(0~7),二进制B(0~1),通过按键扫描和LCD1602扫描,51最小系统计算进制换算,计算结果通过LCD1602显示。

1.2 系统的开发环境及运行环境

操作系统:Windows 10 跨平台操作系统

开发工具:Keil uVision5;stc-isp-15xx-v6.89B烧录软件;51单片机开发板;

1.3 本文的结构安排

        本文简要介绍了进制转换的相关知识,利用C51单片机开发出能实现各进制相互转换的系统,方便人们在工作学习中节省计算进制转换的时间。

本文具体结构如下:

第一章:阐述研究目标、主要内容、研究框架。

第二章:主要介绍了基于STC89C51单片机开发进制转换器所需要的模块及其结构功能,对理解实现进制转换有一个基础认识。

第三章:主要介绍了各进制转换过程的相关理论。简单讲解单片机实现各进制相互转换的基本步骤,并简单分析各进制转换的数学原理,其中包括二进制与十进制的相互转换,八进制与十进制的相互转换,十六进制与十进制的相互转换(因本系统无法实现十六进制转换,故只做简单分析,不做详细介绍与实现设计,后续成果展示也无十六进制展示,可以作为扩展功能展望,进一步完善本系统进制转换功能) 

第四章:通过开发工具在STC89C51单片机开发板上进行系统开发,最终使进制转换器得以实现,通过实际操作,进行系统展示,并简单分析系统开发过程存在的问题及解决办法。 

第五章: 对本文的内容、问题进行概括,总结本系统开发的心得体会,通过简单分析,提出在今后硬件与软件升级后,对本转换器功能扩展的展望。

2 系统实现需要的模块 2.1 LCD1602显示模块

        本系统显示模块采用LCD1602液晶显示屏,它有体积小,重量轻,功耗低等显著优点,并且特别适用于51系列单片机,在本设计中采用单片机的P0系列端口作为LCD1602的8位数据端口,接至LCD1602的D0-D7引脚,另外LCD1602的RS(指令,数据选择端),RW(指令,数据读写选择端),E(使能端)分别接至单片机的P1.0,P1.1,P2.5引脚。LCD1602电路图(见图2.1.1),LCD1602实物图(见图2.1.2)。

图2.1.1 LCD1602电路图

图2.1.2 LCD1602实物图

Fig 2.1.1 The circuit diagram of LCD1602

Fig 2.1.2 The physical diagrm of LCD1602

2.2 4x4矩阵按键模块 

        本系统数据输入及功能选择均由4x4矩阵按键扫描实现,采用中断控制扫描的方式来实现CPU对按键的处理。中断控制扫描方式是利用外部中断源,响应输入信号。

        当无按键按下时,CPU执行正常工作程序;当有按键按下时,CPU立即产生中断,在中断服务子程序中扫描按键,判断是哪一个键被按下,然后执行该键的功能子程序。

        终端服务子程序是将各个按键都连接到一个与门上,当有任何一个按键按下时,都会使与门输出为低电平,从而引起单片机的中断。它的好处是不用在主程序中持续不断地循环查询,如果有键按下,单片机再去做相应的处理。4x4矩阵按键电路图(见图2.2.1),4x4矩阵按键实物图(见图2.2.2)。

图2.2.1 4x4矩阵按键电路图

图2.2.2 4x4矩阵按键实物图

Fig 2.2.1 The circuit diagram of matrix keys

Fig 2.2.2 the physical diagram of matrix keys

2.3 电源模块

        本系统电源模块为USB供电,电源供电路,是硬件电路工作的基础。本设计中电源的输入电压选择直流10V,由开关电源为系统供电。在图中电源芯片的3脚为电源的输入端。L2为二极管,在电路中的作用是防反接保护,如果操作者将电源接反,系统不会对外供电。USB供电电路(见图2.3.1)。

图2.3.1 USB供电电路图

Fig 2.3.1 The circuit diagram of USB power supply

2.4 51最小系统

图为51最小系统原理图(见图2.4.1)。

图2.4.1 51最小系统原理图

Fig 2.4.1 The schematic diagram of minimum system of 51 series

3各进制转换过程相关理论 3.1 进制相关概念 3.1.1 数制

        数制也称为计数制,是指用一组固定的符号和统一的规则来表示数值的方法。在数制计算中,一般采用的是进位计数,按照进位的规则进行计数的数制称为进位计数制。

3.1.2基数

        在一个计数制中表示每个数位上可用字符的个数称为该计数制的基数,若用r表示,则称为r进制,其进位规律为“逢r进1”。

3.1.3位权

        数码在不同位置上的权值。确定位权须要两个因素:基数和位置序号。位置序号是整数系,其排列规则为:以小数点为中介点,以左的整数是从零开始的自然数;以右的小数是从-1开始的负整数。(见表3.1.3)。

表3.1.3 各进制数

Table3.1.3 The table of various system of numbers

3.2 二进制与十进制的相互转换 3.2.1十进制整数转二进制整数

十进制整数转二进制整数采用“除2取余,逆序排列”法。

具体做法:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时止,然后把所有余数按逆序依次排列。

3.2.2十进制小数转二进制小数。 

十进制小数数转二进制小数采用“乘2取整,顺序排列”法。

具体的做法:用2乘以十进制小数,可以得到积,将积的整数部分取出,再用2乘以余下的小数部分,又会得到一个积,再将积的整数部分取出,如此进行,直到积中小数部分为零,或者达到所要求的精度为止,然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为二进制数的低位有效位。

3.2.3二进制数转十进制数。 

二进制数转十进制数采用“按权相加法”,将二进制数的每一位数值乘上该位对应十进制的权值再相加,最终的结果即为对应的十进制数。(见表3.2.3)。

权值

256

128

64

32

16

8

4

2

1

2^8

2^7

2^6

2^5

2^4

2^3

2^2

2^1

2^0

表3.2.3 二进制权值表

Table 3.2.3 The table of Binary weights

3.3 八进制与十进制的相互转换 3.3.1八进制转换为十进制

八进制数的一共有0、1、2、3、4、5、6、7八个字符。同理,可以采取“除8取余,逆序排列”法,将十进制整数转换成八进制整数[4]。

同理:对于要转换的十进制数的小数部分,则应不断地乘以8,并记下其整数部分,直到结果的小数部分为零或达到需要的精度为止。

3.3.2八进制转换成十进制

八进制数转十进制数采用“按权相加法”,将八进制数的每一位数值乘上该位对应十进制的权值再相加,最终的结果即为对应的十进制数。(见表3.3.2)。

权值

16777216

2097152

262144

32768

4096

512

64

8

1

8^8

8^7

8^6

8^5

8^4

8^3

8^2

8^1

8^0

表3.3.2 八进制权值表

Table 3.3.2 The table of Octal weights

3.4 二进制与八进制的相互转换 3.4.1二进制转换成八进制

        二进制含有0和1,八进制数含有0-7,通过二进制表来表示八进制0-7,需要采用三位二进制组合成一个八进制方法来实现,归纳为“三位并一”的原则,把需要转成成八进制的二进制数以小数点为分界点,小数点左边的从右向左为三位一组高位不够三位的补零,小数点右边的从左向右三位一组低位不够三位的补零,然后把三位一组的二进制数转换成十进制数组合在一起就是所求的八进制数。

3.4.2八进制转换成二进制

        采用的是把一位八进制数分成三位二进制数,和二进制转换成八进制数的过程正好相反。归纳与“一分三”的原则。

3.5 进制转换的流程 3.5.1 进制转换对应的流程(见图3.5.1)。

图3.5.1 进制转换流程图

Fig 3.5.1 System conversion flow chart

 3.5.2 进制转换方法小结(见图3.5.2)。

 图3.5.2 进制转换关系图

 Fig 3.5.2 Decimal conversion diagram

进制转换共三种方法:按权位展开、辗转乘或除、按位兑换

3.5.2.1按权位展开法

此方法适合于r进制转换为十进制,公式为: 

其中,Xi表示第i位的r进制的数,Xi可取的数由r决定;m,n为正整数,i=n-1表示数的某一位,从0位开始。按位权展开特点是以小数点为界限,整数位指数从0开始编码,小数位的指数从-1开始编码。

位权Nn在 二、八、十六进制中所对应的值[8](见表3.5.2.1)。

表3.5.2.1 二进制、八进制、十六进制权值表

Table 3.5.2.1 Weights of Binary、Octal and hexadecimal

3.5.2.2辗转乘或除

此方法适用于十进制转r进制。十进制转r进制时,整数和小数部分的转换方法不一样,需分开进行。整数部分:逐次除以r,取余数倒排。小数部分:逐次乘r,取整顺排。

这种算法的特点是整数部分用目标进制为基数短除,余数倒排,小数部分用目标进制为因子连续相乘,取出来的整数顺排,一般保留三位即可。此算法适合十进制转任意进制。

3.5.2.3按位兑换

此方法适用于2n进制与二进制之间相互转换。从小数点开始,整数部分向左分割,小数部分向右分割,按位兑换。因为2n进制与二进制之间存在位数对应关系: (2n)^x=2^y(x=1),即x位2n进制可以用y位二进制来表示。所以转换可以按位兑换。

(1)一位兑多位:2n进制转成二进制,一位兑成x位,最终结果将整数部分高位和小数部分低位的零舍弃。

(2)多位兑一位:二进制转成2n进制,从小数点开始,整数部分向左分割,小数部分向右分割,位数不够的整数部分高位和小数部分低位补零,x位合成一位。

(3)以二进制为中介转换:2n进制与2m进制(n≠m)之间,需要以二进制为中介转换。按位兑换适合任意进制二进制之间转换。特点是需要理清(2n)^x=2^y(x=1)中的对应关系(见图3.2.5.3)。

 图3.2.5.3 有关二进制的关系

Fig 3.2.5.3 Diagram of Binary system

 3.5.3 二、八、十、十六进制对应数值表(见图3.5.3)

图3.5.3 进制对应数值表

Fig 3.5.3 System corresponding numerical table

3.5.4 进制转换时4x4矩阵按键对应的键值及功能

键值对应关系如下:S1~S10输入0~9,S11十进制功能键,S12二进制功能键,S13八进制功能键,S14清屏键,S15确认键,S16闲置。(见图3.5.4)。 

 图3.5.4 键值及功能表

 Fig 3.5.4 The table of key values and functions

4 数制转换器结果展示 4.1数制转换器初始化结果展示

初始化界面结果(见图4.1.1):

十进制初始化结果(见图4.1.2):

八进制初始化结果(见图4.1.3):

二进制初始化结果(见图4.1.4):

图4.1.1 初始化界面

图4.1.2 十进制初始化结果

Fig 4.1.1 Initialization interface

Fig 4.1.2 Decimal initialization result

图4.1.3 八进制初始化结果

图4.1.4 二进制初始化结果

Fig4.1.3 Octal initialization result

Fig 4.1.4 Binary initialization result

4.2 各进制相互转换结果展示 4.2.1 十进制与二进制

十进制转二进制(以11转1011为例),见图4.2.11:

二进制转十进制(以1011转11为例),见图4.2.11:

图4.2.11 十进制转二进制结果

图4.2.12 二进制转十进制结果

Fig 4.2.11 The result of decimal to binary

Fig4.2.12 The result of binary to decimal

4.2.2 十进制与八进制

十进制转八进制(以11转13为例),见图4.2.21:

 八进制转十进制(以11转13为例),见图4.2.22:

图4.2.21 十进制转八进制结果

图4.2.22 八进制转十进制结果

Fig4.2.21 The result of decimal to octal

Fig4.2.22 The result of octal to decimal

4.2.3八进制与二进制

八进制转二进制(以11转1001为例),见图4.2.31:

二进制转八进制(以11转3为例),见图4.2.32:

图4.2.31八进制转二进制结果

图4.2.32二进制转八进制结果

Fig4.2.31 The result of octal to binary

  Fig4.2.32 The result of binary to octal

5 总结与展望 5.1总结

        经过两个周的准备,通过查阅资料,学习原理,编写程序,撰写报告,我完成了本次考查内容,成果由本报告呈现。

        本设计以STC89c52rc单片机为主控器,使用LCD1602显示模块,4x4矩阵按键模块,利用Keil uVision5及stc-isp-15xx-v6.89B烧录软件,51单片机开发板进行了基于单片机的数制转换器开发。通过各个硬件设备的特点设计来了相应的软件系统,达到了本设计的目的,是一款实用且非常有可开发性的产品,设计结构简单、调试方便、成本低、功耗低。采用模块化的设计思想,设计开发周期短,各个模块具有独立性,有很大的扩展空间。报告在撰写过程中,力求将理论与实践应用相结合,对各种理论进行阐述的同时配合系统从实际应用和操作技巧上加以说明,希望能够更充分地体现这些知识与技术在本系统中的应用与实现。

        本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些模块以及整个系统还有许多不完善的地方,如操作性不太友好,不能进行连续数制转换等。

        通过这次工程设计开发的实践训练,进一步掌握了工程的方法和技术,提高了工程开发的实际能力,培养了工程设计能力和综合分析、解决问题的能力。学习和实践了在分析和设计计算机应用系统所需要的知识,包括系统分析与设计,编码和测试方面的知识,并将其运用于工程开发的全过程。

        本系统开发的过程中遇到了许多问题,虽然旅途艰辛,但是经过自己不断的翻阅书本以及同学的相互交流,这些问题终于被克服了。这有助于我们提高自己的学习和独立工作的能力。

5.2展望

        本次系统开发结束以后,虽然自己在运用基础、专业知识解决问题、检索信息的能力得到了很大的提升,但是也发现了自己所欠缺的知识还很多。这次的题目属于计算机领域常用问题,因此,我认为可行性与实用性还是非常强的。经过这次的系统开发设计,我认识到系统开发还有很多可以提升完善的地方,因只有4×4矩阵按键,所以不能有效输入16进制,故只能进行二、八、十进制间的互相转换,若后续硬件更新,可在本系统的基础上继续扩展功能,实现十六进制及其他需要转换的进制。可以根据自己知识的提升,软硬件设施的更新,不断的完善进制转换系统,增添诸如十六进制,五进制,三进制等各常用进制转换功能。简而言之,这次的系统开发设计使我受益匪浅。

Use 4x4 matrix and LCD1602 liquid crystal display to realize the conversion of each base

Abstract: In the computer and related fields, the conversion between binary, octal, decimal and hexadecimal of the number system is everywhere. In order to meet the requirements of the relevant field personnel on the base conversion calculation, we hereby use the 51 series of single-chip microcomputer to develop the base converter to achieve the conversion between binary, octal and decimal. In this paper, starting from the basic principle of number system conversion, analysis of the relationship between binary, octal and decimal, and through the design of experiments, try to use STC89C52rc MCU, 4x4 matrix keys and LCD1602 liquid crystal display, through the programming of related software burning, the development of base converter, Implement the conversion between binary, octal and decimal numbers.

Keywords: 4x4 matrix keys; LCD1602; 51 MCU; Base conversion;

附源码如下: /* key_0 key_1 key_2 key_3 key_4 key_5 key_6 key_7 key_8 key_9 key_D key_B key_O clear change back D 十进制 B 二进制 O 八进制 */ //引用第三方头文件 #include //矩阵按键使用P3组端口,LCD1602数据使用P0组端口 #define KEY_DATA P3 #define LCD_DATA P0 unsigned char KEY_VALUE = 0;//存放按键的号位 unsigned char KEY_STATE;//存放按键状态的值 //按键值的存放数组,以此对应每一个按键的值 unsigned char code LCD_SHOW_KEY[]="0123456789DBOCT"; unsigned char Recive_Buff[10] = {0}; // 读取按键值的数据空间 unsigned int Recive_lengh = 0; // 读取按键值的数据长度 unsigned char CHANGE_Buff[10] = {0}; // 将按键值由字符转换为整型数值的数据空间 unsigned int CHANGE_lengh = 0; // 将按键值由字符转换为整型数值的数据长度 unsigned char RESULT_Buff[10] = {0}; // 输出结果的数据空间 unsigned int RESULT_lengh = 0; // 输出结果的数据长度 sbit LCD_RS = P1^0 ; //定义lcd数据/命令选择脚 sbit LCD_RW = P1^1 ; //定义lcd读/写选择脚 sbit LCD_EN = P2^5 ; //定义lcd屏使能引脚 void delay_ms(unsigned int i); //定义延时函数 unsigned char KEY_INPUT(); //检测按键值函数 void LCD_INIT(); //LCD屏初始化函数 void LCD_WRITE_DATA(unsigned char Data);//LCD屏写数据函数 void LCD_WRITE_CMD(unsigned char Cmd); //LCD屏写命令函数 void CHANGE_OUTPUT(void);//字符串读取函数 void Delete(void);//变量清除函数 void D_CHANGE(void);//十进制转换函数 void B_CHANGE(void);//二进制转换函数 void O_CHANGE(void);//八进制转换函数 void CHANGE_D(void);//转换十进制函数 void CHANGE_B(void);//转换二进制函数 void CHANGE_O(void);//转换八进制函数 unsigned int DATA_BEFOR=0;//进制转换前变量 unsigned int DATA_AFTER=0;//进制转换后变量 unsigned char i = 0;//for循环变量1 unsigned char j = 0;//for循环变量2 /******************************主函数**********************************/ void main(void) { LCD_INIT();//LCD屏初始化 KEY_STATE=0;//按键状态值置0 while(1){ while(KEY_INPUT()!=20){ //检测到按键被按下 //将按键的值以字符的形式存入数组 Recive_Buff[Recive_lengh] = LCD_SHOW_KEY[KEY_VALUE]; Recive_lengh = Recive_lengh + 1; // 地址后移 switch(KEY_VALUE){ case 0:LCD_WRITE_DATA('0');break;//按键值为0,输出lcd屏0 case 1:LCD_WRITE_DATA('1');break;//按键值为1,输出lcd屏1 case 2:LCD_WRITE_DATA('2');break;//按键值为2,输出lcd屏2 case 3:LCD_WRITE_DATA('3');break;//按键值为3,输出lcd屏3 case 4:LCD_WRITE_DATA('4');break;//按键值为4,输出lcd屏4 case 5:LCD_WRITE_DATA('5');break;//按键值为5,输出lcd屏5 case 6:LCD_WRITE_DATA('6');break;//按键值为6,输出lcd屏6 case 7:LCD_WRITE_DATA('7');break;//按键值为7,输出lcd屏7 case 8:LCD_WRITE_DATA('8');break;//按键值为8,输出lcd屏8 case 9:LCD_WRITE_DATA('9');break;//按键值为9,输出lcd屏9 case 10:LCD_WRITE_DATA('D');LCD_WRITE_DATA(':');CHANGE_OUTPUT();break;//按键值为D,输出/输出十进制数 case 11:LCD_WRITE_DATA('B');LCD_WRITE_DATA(':');CHANGE_OUTPUT();break;//按键值为B,输出/输出二进制数 case 12:LCD_WRITE_DATA('O');LCD_WRITE_DATA(':');CHANGE_OUTPUT();break;//按键值为O,输出/输出八进制数 case 13:LCD_WRITE_CMD(0X01);Delete();break;//清屏命令 case 14:LCD_WRITE_CMD(0XC0);break;//换行命令 case 15:break;//无用途,搁置 } } } } /**********************按键函数设置********************/ unsigned char KEY_INPUT(void){ char a; KEY_DATA=0x0f; //设置初始值 if(KEY_DATA!=0x0f){ //按键消除抖动 delay_ms(10);//延时消除抖动 if(KEY_DATA!=0x0f){ KEY_STATE=0; KEY_DATA=0xf0;//列扫描 switch(KEY_DATA){ case 0xe0:KEY_VALUE=0; break;//确定第一列 case 0xd0:KEY_VALUE=1; break;//确定第二列 case 0xb0:KEY_VALUE=2; break;//确定第三列 case 0x70:KEY_VALUE=3; break;//确定第四列 } KEY_DATA=0x0f;//行扫描 switch(KEY_DATA){ case 0x0e:KEY_VALUE=KEY_VALUE; break;//确定第一行 case 0x0d:KEY_VALUE=KEY_VALUE+4; break;//确定第二行 case 0x0b:KEY_VALUE=KEY_VALUE+8; break;//确定第三行 case 0x07:KEY_VALUE=KEY_VALUE+12; break;//确定第四行 } /*********稳定按键功能***********/ while((a 0 && Recive_Buff[Recive_lengh - 2] =='T' //第一位为输入进制的类型确定 && (Recive_Buff[0] == 'D'||Recive_Buff[0] == 'B'||Recive_Buff[0] == 'O') //最后一位为输出进制的类型确定 && (Recive_Buff[Recive_lengh - 1] == 'D'||Recive_Buff[Recive_lengh - 1] == 'B'||Recive_Buff[Recive_lengh - 1] == 'O')) { switch(Recive_Buff[0]){ case 'D':D_CHANGE();break; case 'B':B_CHANGE();break; case 'O':O_CHANGE();break; } } } /*******************************************************/ /*****************输入进制转换******************/ void D_CHANGE(void){ for (i = 0; Recive_Buff[i] !='T'; i++) { if (Recive_Buff[i] >= '0' && Recive_Buff[i] = '0' && Recive_Buff[i] = '0' && Recive_Buff[i]


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭