找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6243|回复: 0
打印 上一主题 下一主题
收起左侧

关于数值电阻阻值测量电路设计的实习(实训)报告下载

[复制链接]
跳转到指定楼层
楼主
word格式的完整论文下载:
关于数值电阻阻值测量电路设计的实习.docx (224.96 KB, 下载次数: 25)


摘要

随着电子工业的发展,电子元器件急剧增加,电子元器件的适用范围也逐渐广泛起来,在应用中我们常常要测定电阻的大小。因此,设计可靠,安全,便捷的电阻阻值测量电路具有极大的现实必要性。

该电路设计是以单片STC89C52为核心,通过恒流源模块,555多谐振荡电路,LCD显示模块实现了电阻在大范围内测量,并且能在测量量程为 10Ω、1kΩ、10kΩ、1MΩ四档中自由切换。

目录
关于数值电阻阻值测量电路设计的实习(实训)报告
摘要
1.前言
1.1设计的背景及意义
1.2本设计所做的工作
2.电阻阻值测量电路设计的原理
2.1电阻测量电路的设计方案
2.2系统的原理框图
3.电阻阻值测量的设计电路
3.1单片机电路的设计
3.2测量电阻电路的设计
4 电阻阻值测量电路的软件设计
4.1 I/O口的分配
4.2 主程序流程图
4.3 频率参数计算的原理
5系统调试与系统测试
5.1系统软件调试
5.2系统测试
6 总结
参 考 文 献
附 录
附录一 系统原理图
附录二 PCB图
附录三 源程序


1.前言1.1设计的背景及意义

通常情况下,电路参数的数字化测量是把被测参数传换成直流电压或频率后进行测量。

电阻测量依据产生恒流源的方法分为电位降法、比例运算器法和积分运算器法。比例运算器法测量误差稍大,积分运算器法适用于高电阻的测量。

本次设计是在参考555振荡器基础上拟定的一套自己的设计方案。是尝试用555振荡器将被测参数转化为频率,这里我们将测量电路产生的频率送入AT89S52的计数端,通过定时并且计数可以计算出被测频率再通过该频率计算出各个参数。

1.2本设计所做的工作

设计要求:电阻测量范围10Ω到1MΩ,精度5%,4位显示。

本设计是以555为核心的振荡电路,将被测参数模拟转化为频率,并利用单片机实现计算频率,所以,本次设计需要做好以下工作:

(1)学习单片机原理等资料。

(2)设计测量电阻的振荡电路。

(3)设计LCD电路。

(4)设计测量频率程序,设置程序。

(5)安装和调试,并进行实际测试,记录测试数据和结果。

2.电阻阻值测量电路设计的原理2.1电阻测量电路的设计方案

利用555多谐振荡电路将电阻参数转化为频率,这样就能够把模拟量近似的转换为数字量,而频率f是单片机很容易处理的数字量,一方面测量精度高,另一方面便于使仪表实现自动化,而且单片机构成的应用系统有较大的可靠性。系统扩展、系统配置灵活。容易构成各种规模的应用系统,且应用系统有较高的软、硬件利用系数。单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。所以,本次设计选定以单片机为核心来进行。

2.2系统的原理框图

统设计框图如图2-1如下所示



图2-1 系统设计框图

框图各部分说明如下:

1)控制部分:本设计以单片机为核心,采用89C52单片机,利用其管脚的特殊功能以及所具备的中断系统,定时/计数器和LCD显示功能等。在本设计中,采用LCD1602液晶显示。

2)测量电路:RC震荡电路是利用555振荡电路实现被测电阻频率化。

3.电阻阻值测量的设计电路3.1单片机电路的设计

在本设计中,考虑到单片机构成的应用系统有较大的可靠性,容易构成各种规模的应用系统,且应用系统有较高的软、硬件利用系数。还具有可编程性,硬件的功能描述可完全在软件上实现。另外,本设计还需要利用单片机的定时计数器、中断系统、串行接口等等,所以,选择以单片机为核心进行设计具有极大的必要性。在硬件设计中,选用STC89C52单片机,其LED灯、LCD液晶屏等,通过软件进行控制。

本设计中单片机的设计电路如下图3-1所示:

图3-1 单片机的设计电路

本电路使用单片机内部振荡器,12MHz的晶体谐振器直接接在单片机的时钟端口X1和X2,电路中C2、C3为振荡器的匹配电容。该电路简单,工作可靠 。另外本系统的容阻上电复位,就是利用RC电路的充电过程来给单片机复位。当需要复位时,也可以按下复位按键,进行复位。

3.2测量电阻电路的设计

定时器555是一种用途很广的集成电路,只需外接少量R、C元件,就可以构成多谐、单稳及施密特触发器。电阻的测量采用“脉冲计数法”,由555电路构成的多谐振荡电路,通过计算振荡输出的频率来计算被测电阻的大小。

555接成多谐振荡器的形式,其振荡周期为:

得出:

即:   

其中R16=1KΩ, R17=1KΩ,C11=0.1uF:

电阻测试电路见图3-2所示。

图3-2 电阻测试电路
4 电阻阻值测量电路的软件设计4.1 I/O口的分配

P1.0  R测量程序的选择

在本设计的模块中,模块是以单片机为核心,再通过按键控制测量的被测参数在数码管显示。

按键主流程图如4-1所示。

图4-1按键主程序流程图

4.2 主程序流程图

4.3 频率参数计算的原理

本设计频率的计算采用单片机外部中断    ,对外触发电路产生的脉冲频率的测量,再通过对测量数据的校正来完成。

单片机对频率测量的原理如下图4-3所示。

图4-3 测频率原理图示

说明:图4-3中t1时刻检测到高电平开定时器1,开始计数;t2时刻等待检测低电平;t3时刻第二次检测到高电平时关定时器停止计数。

利用GATE=1,TR1=1,只有

引脚输入高电平时,T1才允许计数,利用此,将外部输入脉冲经 引脚上输入,等待高电平的到来,当检测到高电平时开定时器开始计数,然后检测低电平,当检测到低电平时已经测得脉冲的脉宽,但我们测得是频率,故在程序中药继续检测等待下一个高电平的到来,此时关定时器停止计数,用此计数值乘以机器的周期数(晶振频率已知),得出触发电路产生的周期,然后再经过数据处理便得到输入信号的频率。

5系统调试与系统测试5.1系统软件调试

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。

5.2系统测试

(1)测试原理:在系统设计中,以STC89C52单片机为核心的电阻测量电路,将电阻使用对应的振荡电路转化为频率实现各个参数的测量。电阻是采用555多谐振荡电路产生的,将振荡频率送入STC89C52的计数端,通过定时并且计数可以计算出被测频率,再通过该频率计算出被测参数。以Keil51为仿真平台,使用C语言与汇编语言混合编程编写了系统应用软件;包括主程序模块、显示模块、电阻测试模块。

(2)测试方法:在测试时将被测参数通过本系统测量出来的示值与参数的标称值进行对比,进而可以知道本系统的测试精度。

(3)测试仪器:示波器,万用表,稳压电源,计算机。

(4)测试结果:通过按键,实现其按键所对应的功能,并观察测试结果,对设计进一步的进行校正和对实现功能的可靠性的确认,并记录观察结果。

测试结果如下:

a)电阻测试数据如表5-1所示。

表5-1电阻测试数据

标称值

(Ω)

振荡频率

(Hz)

系统测量

(Ω)

相对误差

(%)

330

6929

333

0.9

200

9501

205

2.5

530

4981

528

0.4

4700

5036

4892

4.1

20000

2596

19216

3.9

470000

157

464683

1.1


(4)测试分析:在实际测量中,由于测试环境,测试仪器,测试方法等都对测试值有一定的影响,都会导致测量结果或多或少地偏离被测量的真值。为了减小本设计中误差的大小,主要利用修正的方法来减小本测试仪的测量误差。所谓修正的方法就是在测量前或测量过程中,求取某类系统误差的修正值。在测量的数据处理过程中选取合适的修正值很关键,修正值的获得有三种途径。第一种途径是从相关资料中查取;第二种途径是通过理论推导求取;第三种途径是通过实验求取。

本测试修正值选取主要通过实验求取,对影响测量读数的各种影响因素,如温度、湿度、电源电压等变化引起的系统误差。通过对相同被测参数的多次测量结果和不同被测参数的多次测量选取平均值,最后确定被测参数公式的常数K值,从而达到减小本设计系统误差的目的。由于振荡电路外围器件由电容电阻分立元件搭接而成,所以由振荡电路产生的被测参数对应的频率有一定的误差,所以只能通过多次实验测量,选取合适的修正值来尽可能的减少本测试系统的误差。

6 总结

本设计的硬件电路图简单,可降低生产成本。采用单片机可提高系统的可靠性和稳定性,缩小系统的体积,调试和维护方便,而且以STC89C5251单片机最小系统为核心的设计能够满足了整个系统的工作需求,555振荡器实现了被测电阻参数的频率化,被测频率通过模拟开关送入单片机计数,再经过显示电路显示被测参数的测量值,软件用C语言编程,根据具体情况控制启动被测参数的相应程序,能灵活控制被测参数的档位切换。经过测试,系统各个模块都能正常共组,成功地达到了设计的硬件要求。

系统的软件部分是系统实现各种工作状态的关键。通过结合硬件电路,在Keil51的平台上,使用C语言与汇编语言混合编程编写了系统应用程序,使程序能够正常运行,实现了设计的要求。

这次实训一次非常好的将理论与实际相结合的机会,通过对电阻测量的课题设计,锻炼了我的实际动手能力,增强了我解决实际工程问题的能力,同时也提高我查阅文献资料、设计规范以及电脑制图等其他专业能力水平。

参 考 文 献

[1]申忠如,申淼,谭亚丽.MCS-51单片机原理及系统设计.西安交通大学出版社,2008年3月第1版

[2]申忠如,郭福田,丁晖.现代测试技术与系统设计.西安:西安交通大学出版社,2006.2.

[3]付家才.单片机控制工程实践技术[M].北京化学工业出版社,2004

[4]张毅刚.MCS-51单片机应用系统.哈尔滨工业大学出版社,1997

[5]夏继强.单片机实验与实践教程.北京航空航天大学出版社,2001

[6]肖洪兵.跟我学用单片机.北京航空航天大学出版社,2002
[7]付晓光.单片机原理与使用技术.清华大学出版社,ISBN7- 81082- 169- 5TP

[8]李桂安.电子技术实验及课程设计.东南大学出版社,2008

附 录附录一 系统原理图
附录二 PCB图

源程序:
  1. #include "reg51.h"
  2. #include
  3. #include
  4. #define uint8 unsigned char
  5. #define uint16 unsigned int
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. uint16 cnt2ms;              //10ms计数器
  9. uint8 cnt1s;              //1秒计数器
  10. #define        Z1 13700053.00
  11. #define        Z2 3685279.00
  12. float RZ=0;
  13. unsigned long   RX=0;
  14. unsigned long   RX2=0;
  15. unsigned long   RX3=0;
  16. unsigned long   RX4=0;
  17. unsigned long   RX5=0;
  18. unsigned long   RX6=0;
  19. unsigned long   RX7=0;
  20. unsigned long   RX8=0;
  21. unsigned long   RX9=0;
  22. float LZ=0;
  23. #define        C1 0.0461
  24. float CZ=0;
  25. float CX=0;
  26. #define        R1 24874

  27. uint8 KL=0;              //
  28. unsigned int Pulsecnt=0;              //脉冲个数
  29. unsigned int Pulsenum;              //脉冲个数
  30. uint8 start=0;              //
  31. uint16 PulseTime;              //10ms计数器
  32. uint16 Pulse;              //10ms计数器
  33. bit flag=0;
  34. uint8 CH=0;              //
  35. unsigned long x;
  36. void Init_Extint(void);
  37. void TimerInitProc();
  38. void Init_System(void);
  39. void Display(uint8 chose_dat, uint8 dat);
  40. void ShowDisp(uint8 tPulsenum, uint8 tPulsecnt, uint8 tcnt1s);
  41. void DelayMs(uint8 Ms);
  42. uint8 Pulse_FLAG=0;
  43. uint8 Pulse_5=0;
  44. sbit    K1=P1^3;
  45. sbit    K2=P1^4;
  46. sbit    K3=P1^5;
  47. sbit    A0=P2^1;
  48. sbit    A1=P2^0;
  49. sbit    RED=P3^6;
  50. sbit    YEW=P3^4;
  51. sbit    GRE=P3^3;
  52. #define LCD_Data P0           //LCD的数据口
  53. sbit    LCD_BF=LCD_Data^7;    //LCD忙信号位
  54. sbit    LCD_RS=P1^0;
  55. sbit    LCD_RW=P1^1;
  56. sbit    LCD_EN=P1^2;
  57. #define LCD_GO_HOME               0x02        
  58. #define LCD_AC_AUTO_INCREMENT     0x06        
  59. #define LCD_AC_AUTO_DECREASE      0x04        
  60. #define LCD_MOVE_ENABLE           0x05        
  61. #define LCD_MOVE_DISENABLE        0x04     
  62. #define LCD_DISPLAY_ON            0x0C      
  63. #define LCD_DISPLAY_OFF           0x08      
  64. #define LCD_CURSOR_ON             0x0A        
  65. #define LCD_CURSOR_OFF            0x08        
  66. #define LCD_CURSOR_BLINK_ON       0x09      
  67. #define LCD_CURSOR_BLINK_OFF      0x08      
  68. #define LCD_LEFT_MOVE             0x18         //LCD显示左移一位
  69. #define LCD_RIGHT_MOVE            0x1C         //LCD显示右移一位
  70. #define LCD_CURSOR_LEFT_MOVE      0x10         //光标左移一位
  71. #define LCD_CURSOR_RIGHT_MOVE     0x14         //光标右移一位
  72. #define LCD_DISPLAY_DOUBLE_LINE   0x38         //两行显示
  73. #define LCD_DISPLAY_SINGLE_LINE   0x30         //单行显示
  74. void LCD_ClrAll(void);              //清屏
  75. void Judge_LCD_busy(void);           //检测是否忙碌
  76. void LCD_Write(uchar WriteData);     //写控制字
  77. void LCD_write_data(uchar LCD_data); //写数据显示
  78. void LCD_cursor(uchar x);    //光标起始地址
  79. void LCD_printc(unsigned char lcd_data) ;  //输出一个字符
  80. void LCD_prints(unsigned char *lcd_string);//输出字符串
  81. /*LCD1602忙碌判断子程序*/
  82. void Judge_LCD_busy(void)   //判断LCD1602是否忙状态
  83. {
  84. while(1)
  85.   {
  86.    LCD_EN=0;
  87.    LCD_RS=0;
  88.    LCD_RW=1;
  89.    LCD_Data=0xff;
  90.    LCD_EN=1;   //EN 是 1—0 使能
  91.    if(!LCD_BF)break; //LCD_BF=1表示忙碌,需要等待。
  92.   }
  93.    LCD_EN=0;
  94. }
  95. void LCD_ClrAll(void)
  96. {
  97. Judge_LCD_busy();   //判断是否忙碌
  98. LCD_RS=0;
  99. LCD_RW=0;
  100. LCD_Data=0x01;
  101. LCD_EN=1;
  102. LCD_EN=0;
  103. }
  104. /*******LCD写数据定义各种模式*********/
  105. void LCD_Write(uchar WriteData)   //写指令到LCD
  106. {
  107. Judge_LCD_busy();
  108. LCD_RS=0;
  109. LCD_RW=0;

  110. P0=WriteData; //把WriteData的数据送到数据口
  111. LCD_EN=1;
  112. LCD_EN=0;
  113. }
  114. /********LCD显示数据***********/
  115. void LCD_write_data(uchar LCD_data)      //输出一个字节数据到LCD
  116. {
  117. Judge_LCD_busy();
  118. LCD_RS=1;
  119. LCD_RW=0;

  120. P0=LCD_data;
  121. LCD_EN=1;
  122. LCD_EN=0;
  123. }
  124. /****光标位置的确定***/
  125. void LCD_cursor(uchar x)            //LCD光标定位到x处
  126. {
  127. LCD_Write(0x80+x);                       //第一行地址是0x80

  128. }
  129. /*输出一个字符*/
  130. void LCD_printc(unsigned char lcd_data)
  131. {
  132. LCD_write_data(lcd_data);
  133. }

  134. /*输出字符串*/
  135. void LCD_prints(unsigned char *lcd_string)
  136. {
  137. unsigned char i=0;
  138. while(lcd_string[i]!=0x00)
  139.   {
  140.    LCD_write_data(lcd_string[i]);
  141.    i++;
  142.   }
  143. }

  144. /*初始化程序*/
  145. void LCD_initial(void)                        //初始化LCD
  146. {
  147. LCD_Write(LCD_AC_AUTO_INCREMENT|LCD_MOVE_DISENABLE);
  148. LCD_Write(LCD_DISPLAY_ON|LCD_CURSOR_OFF);
  149. LCD_Write(LCD_DISPLAY_DOUBLE_LINE);
  150. LCD_ClrAll();

  151. }
  152. void delay_1ms(uint x)
  153. {
  154. uint j;
  155. uchar i;
  156. for(j=0;j<x;j++)
  157. {
  158. for(i=0;i<120;i++);
  159. }
  160. }
  161. void Key_SM(void){

  162.         if(K3==0){
  163.              delay_1ms(5);
  164.             if(K3==0){
  165.                 YEW=1;RED=0;
  166.                 GRE=1;                 
  167.                 LCD_cursor(0x00);
  168.                 LCD_prints("   MEASURE Lx   ");
  169.                                A0=0;
  170.                 A1=1;
  171.                 CH=2;//电感档

  172.                 while(K3==0){}

  173.                  }
  174.             }

  175.         if(K2==0){
  176.              delay_1ms(5);
  177.             if(K2==0){
  178.                 GRE=1;YEW=0;
  179.                 RED=1;                 
  180.                 LCD_cursor(0x00);           
  181.                 LCD_prints("   MEASURE Rx   ");
  182.                 A0=1;
  183.                 A1=0;
  184.                 CH=1;

  185.                 while(K2==0){}
  186.                      }
  187.                 }
  188.        if(K1==0){
  189.              delay_1ms(5);
  190.             if(K1==0){
  191.                YEW=1;GRE=0;RED=1;
  192.                LCD_cursor(0x00);
  193.                LCD_prints("   MEASURE Cx   ");
  194.                 A0=0;
  195.                 A1=0;
  196.                 CH=3;                  
  197.                while(K1==0){}
  198.                        }
  199. }

  200. void  Value_to_ASCII(unsigned long value,uchar add)
  201. {
  202.     unsigned char temp[] = "0000.000K ";
  203.     temp[0] = value/1000000 + 0x30;//数值改成字符,液晶显示需要ASCII码
  204.     value = value%1000000;
  205.     temp[1] = value/100000 + 0x30;
  206.     value = value%100000;
  207.     temp[2] = value/10000 + 0x30;
  208.     value = value%10000;
  209.     temp[3] = value/1000 + 0x30;
  210.     value = value%1000;
  211.     temp[5] = value/100 + 0x30;
  212.     value = value%100;
  213.     temp[6] = value/10 + 0x30;
  214.     value = value%10;
  215.     temp[7] = value + 0x30;
  216.     LCD_cursor(add);   //光标起始地址 ,第一行地址是0x00~0x0F,第二行地址是0x40~0x4f
  217.     LCD_prints(temp);
  218. }

  219. void  Value_to_ASCIIL(unsigned long value,uchar add)
  220. {
  221.     unsigned char temp[] = "000000uH ";
  222.     temp[0] = value/100000 + 0x30;
  223.     value = value%100000;
  224.     temp[1] = value/10000 + 0x30;
  225.     value = value%10000;
  226.     temp[2] = value/1000 + 0x30;
  227.     value = value%1000;
  228.     temp[3] = value/100 + 0x30;
  229.     value = value%100;
  230.     temp[4] = value/10 + 0x30;
  231.     value = value%10;
  232.     temp[5] = value + 0x30;

  233.     LCD_cursor(add);   //光标起始地址 ,第一行地址是0x00~0x0F,第二行地址是0x40~0x4f
  234.     LCD_prints(temp);
  235. }
  236. void  Value_to_ASCIIC(unsigned long value,uchar add)
  237. {
  238.     unsigned char temp[] = "00000.0pF ";
  239.     temp[0] = value/100000 + 0x30;
  240.     value = value%100000;
  241.     temp[1] = value/10000 + 0x30;
  242.     value = value%10000;
  243.     temp[2] = value/1000 + 0x30;
  244.     value = value%1000;
  245.     temp[3] = value/100 + 0x30;
  246.     value = value%100;
  247.     temp[4] = value/10 + 0x30;
  248.     value = value%10;
  249.     temp[6] = value + 0x30;

  250.     LCD_cursor(add);   //光标起始地址 ,第一行地址是0x00~0x0F,第二行地址是0x40~0x4f
  251.     LCD_prints(temp);
  252. }
  253. void main()
  254. {

  255.       TMOD=0x01;                             //设置定时器0,方式1:16位定时器
  256.       TH1=0;
  257.       TL1=0;
  258.       TH0=(65536-2300)/256; //设定定时周期
  259.       TL0=(65536-2300)%256;
  260.       TR0=1;
  261.       TR1=1;
  262.       ET1=1;
  263.       ET0=1;
  264.       EA=1;
  265.       A0=1;
  266.       A1=0;
  267.     LCD_initial();
  268.               delay_1ms(50);
  269.     LCD_initial();
  270.               delay_1ms(50);
  271.     LCD_cursor(0x00);

  272.     LCD_prints("   MEASURE Rx   ");
  273.     GRE=1;
  274.               YEW=0;
  275.                 RED=1;
  276.     LCD_cursor(0x45);
  277.     CH=1;

  278.               while(1)
  279.               {

  280.      Key_SM();
  281.     if(flag==1){

  282.         flag=0;

  283.         x=Pulsenum*6536+TH1*256+TL1;//计算1s内的脉冲个数,频率=脉冲个数
  284. if(CH==1){

  285.         RZ=(Z1/x);//测量100到1000
  286.         RX=RZ-1000;
  287.         RX=RX>>1;

  288. if(RX>=1005){
  289.         RX=RX-1005;
  290.     }else{RX=0;}

  291.     if(x==0){RX=0;RX2=0;RX3=0;RX4=0;RX5=0;RX6=0;RX7=0;RX8=0;RX9=0;}
  292.   if(RX>1000000){RX=100000; }

  293.               RX2=(RX+RX3+RX4+RX5+RX6+RX7+RX8+RX9)>>3;//求平均提高精度

  294. RX9=RX8;RX8=RX7;RX7=RX6;RX6=RX5;RX5=RX4;RX4=RX3;RX3=RX;
  295.               //保存上一次的阻值

  296.          Value_to_ASCII(RX2,0x44);//更新阻值显示



  297. }
  298. if(CH==2){


  299.         LZ=(x*39*C1)/100000;
  300.         LZ=LZ*x;
  301.         LZ=1000000/LZ;
  302.     if(x==0)LZ=0;
  303.   if(LZ>999999)LZ=999999; //限制最高值
  304.          Value_to_ASCIIL(LZ,0x44);//更新电感值显示
  305. }
  306. if(CH==3){

  307.        CZ=6600000/x;
  308.     if(x==0||x>3050)CZ=0;
  309.   if(CZ>999999)CZ=99999;  //限制最高值
  310.          Value_to_ASCIIC(CZ,0x44);//更新电容值显示
  311. }
  312.          cnt2ms=0;
  313.          Pulsenum=0;
  314.          TH1=0;
  315.          TL1=0;
  316.          TR1=1;

  317.     }
  318.             
  319.               }
  320. }
  321. void T1_interrupt(void) interrupt 3 using 0
  322. {

  323.   Pulsenum++;              //保存测得脉搏值
  324.             
  325. }
  326. 函数功能:定时器/计数器1中断处理
  327. 入口参数:null
  328. 返    回:null
  329. void Timer0IntProc() interrupt 1 using 0 //3ms
  330. {
  331.   TH0=(65536-3000)/256;
  332.   TL0=(65536-3000)%256;
  333.     cnt2ms++;

  334.               if(cnt2ms==297)              //1s计时到
  335.               {

  336.         TR1=0;


  337.                             cnt2ms = 0;
  338.                  
  339.         flag=1;
  340.               }

  341. }
复制代码

</x;j++)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩

相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表