矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 其实不想走

【参赛】五位半台式万用表DIY

  [复制链接]
     
 楼主| 发表于 2016-2-4 13:17:15 | 显示全部楼层
yangen 发表于 2016-2-3 20:43
感谢!!!!!

邮件已发。。。。
回复 支持 反对

使用道具 举报

发表于 2016-2-4 16:30:49 | 显示全部楼层
如果搂主暂时不求精度,只是论证原理,都用国产器件多好,包括ADC,电压基准。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2016-2-5 14:07:34 | 显示全部楼层
本帖最后由 其实不想走 于 2016-2-5 14:36 编辑

前两天在给面板打孔的时候,我的小台钻的皮带断了,手里也没有替换的,快过年了快递都停了,也买不到新的啦,台钻只能就此罢工了。台钻是我在DIY过程中所需要的重要工具,台钻罢工了,我的DIY也只能止步了,好在大面上基本完成,功能性已经不收影响了,就是外观以及一些细节方面没法完善了,只能等年后换个皮带再弄。
上一张英勇就义的小台钻的照片吧: 台钻.jpg
下面我就把简单粗糙的装配图发上了大家看一下,仪器的面板没装,现在看到的是面板里面的一块设备固定板。数码管显示屏也没有滤光片,照片拍出来效果不好,数字的可分辨度很差,大家将就看吧,将来有了面板再加上,到时候显示效果应该会好很多。还有就是档位量程指示只把一部分发光管装上了,也没有图案显示,现在只有简易的指示,毕竟现在软件还没把各个功能完善,装上也没效果。
内部图: 装配图1.jpg 装配图2.jpg 装配图3.jpg
电压档开机显示图: 电压档.jpg
电流档开机显示图: 电流档.jpg
电阻档开机显示图: 电阻档.jpg
自动手动量程指示: 自动量程指示.jpg
开机演示视频:
开机演示视频

评分

3

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2016-2-5 14:42:51 | 显示全部楼层
怎么把视频放到帖子里显示啊?以前我记得可以啊,怎么现在找不到选项了?
回复 支持 反对

使用道具 举报

     
发表于 2016-2-5 16:20:43 | 显示全部楼层
楼主动手能力真强。赞一个!
回复 支持 反对

使用道具 举报

发表于 2016-2-5 16:39:37 | 显示全部楼层
顶了,真不错 。
回复 支持 反对

使用道具 举报

     
发表于 2016-2-5 17:05:06 | 显示全部楼层
这个要支持一下!期待最后的结果。
回复 支持 反对

使用道具 举报

     
发表于 2016-2-6 16:32:22 | 显示全部楼层
支持,学习、佩服!看基准版,价格不菲
回复 支持 反对

使用道具 举报

     
发表于 2016-2-10 06:20:52 | 显示全部楼层
牛人,这个也能DIY,牛!
回复 支持 反对

使用道具 举报

     
发表于 2016-2-10 16:49:27 | 显示全部楼层
做的真不错!支持折腾
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2016-2-11 12:30:50 | 显示全部楼层
本帖最后由 其实不想走 于 2016-2-11 12:45 编辑

给表的显示屏加了个临时滤光片,这样拍的照片和视频就能看清楚读数了。
发几个万用表的简单测试图片和视频,各位老师给指导指导。
现在的机子各量程都未经过校准和线性修正,基本都是最原始的测量数据,所以各档与对比表34401A相差较大,等以后有时间了再做修正。
先发个开机测试视频,之前发的那个看不清屏幕。
开机测试视频
1K电阻测试对比:
1K电阻测试34401.jpg
1K电阻测试视频
5K电阻测试对比:
5K电阻测试34401.jpg
5K电阻测试视频
10K电阻测试对比:
10K电阻测试34401.jpg
10K电阻测试视频
下面是电压档测试视频,因为没有稳定的低电压源,就用手持万用表测量一个5K电阻来产生一个小电压来测量。
电压档测试视频
通过视频可以看出250mV档最后1位跳的比较厉害,2.5V原始档位比较稳定。主要原因是250mV档位经过了一个x10的放大电路,本身放大电路的运放用的就是ICL7650斩波稳零运放,这种运放的最大缺点就是噪声很大,经过10倍放大,噪声也就被放大了10倍,所以读数就会跳的厉害。因为此原因,25V档最后一位跳的也比较厉害,这是电路本身缺陷造成的,没办法。计划以后改进时改用低噪声运放做放大。
电阻档还是很稳定的,因为电阻档用的是AD的5V原始量程,没经过任何放大。而且500Ω档位测试电流用的是10mA,测量小电阻,与我的HP34401A对比,比它还要稳定的多。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2016-2-11 14:47:15 | 显示全部楼层
把单片机的程序发上来
  1. /********************************************************************
  2. * 文件名  : LED显示 5位半万用表
  3. * 描述    :  使用24M晶体 , STC15F2K32S2单片机 ,LTC2400  ADC
  4. * 创建人  : CCA767,2016.1.28
  5. * 版本号  : 1.0
  6. ***********************************************************************/
  7. #include<STC15F2K60S2.H>   //定义STC15F2K32S2单片机特殊功能寄存器和位寄存器的。
  8. #include <intrins.h>     //包含指令_nop_(); 延时一个机器周期。
  9. #include<math.h>

  10. #define uchar unsigned char
  11. #define uint  unsigned int

  12. #define AVE 30                          //平均值滤波次数
  13. #define Vref 5.00025          //电压基准值


  14. uchar code table1[] ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};          //带小数点数字编码
  15. uchar code table[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};          //不带小数点数字编码



  16. sbit LE1=P3^6;      //继电器控制锁存器 锁存控制端 (低电平锁存)
  17. sbit LE2=P3^5;                //模拟开关控制锁存器 锁存控制端 (低电平锁存)
  18. sbit FUN_EN=P1^0;        //功能选择板模拟开关使能端
  19. sbit FUN_A2=P1^1;        //功能选择板模拟开关地址口A2
  20. sbit FUN_A1=P1^2;        //功能选择板模拟开关地址口A1
  21. sbit FUN_A0=P1^3;        //功能选择板模拟开关地址口A0



  22. sbit SCK=P5^4;        //定义LTC2400引脚 时钟口
  23. sbit SDO=P5^5;        //LTC2400数据口       
  24. sbit CS=P3^4;        //LTC2400片选口


  25. long value;   //采样前滤波值  
  26. uchar gear;          //档位标识符
  27. uchar range;  //量程标识符
  28. uchar add;    //超量程标识符
  29. uchar red;    //减量程表示符
  30. uchar AUTO;          //自动量程手动量程标识
  31. long null;   //NULL值
  32. long U;       //计算后测量值
  33. uchar num;
  34. long ZERO;
  35. uchar n;

  36. long get_v();
  37. long filter();
  38. void AUTO_ZERO();
  39. void delay_ms(unsigned int i);                //延时函数 i*ms
  40. void delay_us( uchar i);                                //延时函数  (i+1)*us
  41. void LED_display(uchar i,uchar j);
  42. void DCV_250mV();
  43. void DCV_2500mV();
  44. void DCV_25V();
  45. void DCV_250V();
  46. void ohms_2w_5M();
  47. void ohms_2w_500K();
  48. void ohms_2w_50K();
  49. void ohms_2w_5K();
  50. void ohms_2w_500();
  51. void null_set();
  52. void DCI_2mA();
  53. void DCI_20mA();
  54. void DCI_200mA();
  55. void DCI_2A();
  56. uchar keyboard();
  57. void keyscan();
  58. void display_v_Auto();
  59. void display_V_Man();
  60. void display_i_Auto();
  61. void display_i_Man();
  62. void display_ohms_Auto();
  63. void display_ohms_Man();
  64. void welcome(); //开机欢迎语 HELLO


  65. void system_init()
  66. {
  67.         P1=0x00;
  68.         LE1=1;   
  69.         delay_ms(1);
  70.         LE1=0;
  71.         P1=0x45;        //5V,x1,1/1,5M ,ohms
  72.         LE2=1;       
  73.         delay_ms(1);
  74.         LE2=0;
  75.         CS=0;
  76.         SCK=0;
  77.         AUTO=1;
  78. }

  79. long filter()                //滤波函数
  80. {
  81.         long V=0;
  82.         V=get_v();
  83.         if(labs(V-value)>2000)         //限幅
  84.                 value=V*AVE;          
  85.         else
  86.                 value=V+value-value/AVE;                 //一阶滤波
  87.         return  value/AVE;                         //取平均值
  88. }
  89. void time_init()
  90. {
  91.         TMOD=0X00;
  92.         TL0=(65536-40000)%256;
  93.         TH0=(65536-40000)/256;
  94.         TR0=1;
  95.         ET0=1;
  96.         EA=1;
  97. }
  98. /********************************************************************
  99. * 名称 : 主函数                  
  100. * 功能 :
  101. * 输入 : 无                  
  102. * 输出 : 无                    
  103. ***********************************************************************/
  104. void main()
  105. {       
  106.         P0M1=0x00;
  107.         P0M0=0x00;
  108.         P5M0=0x00;
  109.         P5M1=0x20;
  110.         P2M0=0xff;
  111.         P2M1=0x00;
  112.         P4M0=0xff;
  113.         P4M1=0x00;
  114.        

  115.         welcome();

  116.         system_init();
  117.         AUTO_ZERO();
  118.         time_init();
  119.         delay_ms(2000);
  120.        
  121.         while(1)
  122.                    {
  123.                         keyscan();
  124.                         if(n==3)
  125.                         {
  126.                                 AUTO_ZERO();
  127.                         }
  128.                         switch(gear)
  129.                         {
  130.                                 case 0:
  131.                                         if(AUTO)
  132.                                                 display_v_Auto();
  133.                                         else
  134.                                                 display_V_Man();
  135.                                         break;
  136.                                 case 1:
  137.                                         if(AUTO)
  138.                                                 display_ohms_Auto();
  139.                                         else
  140.                                                 display_ohms_Man();
  141.                                         break;
  142.                                 case 2:
  143.                                         if(AUTO)
  144.                                                 display_i_Auto();
  145.                                         else
  146.                                                 display_i_Man();
  147.                                         break;
  148.                         }                               
  149.                     
  150.                 }

  151. }

  152. void DCV_250mV()
  153. {
  154.         P1=0;
  155.         LE1=1;
  156.         delay_us(10);
  157.         LE1=0;
  158.         P1=0x45;  //x10.1/1
  159.         LE2=1;
  160.         delay_us(10);
  161.         LE2=0;
  162.         gear=0;               
  163.         range=0; //量程标识符
  164. }
  165. void DCV_2500mV()
  166. {
  167.         P1=0;
  168.         LE1=1;
  169.         delay_us(5);
  170.         LE1=0;
  171. //        P1=0x41;   //x10,1/100
  172.         P1=0x05;        //5V,x1,1/1,5M ,ohms
  173. //        P1=0x03;
  174. //        P1=0x35;        //5k ohms
  175. //        P1=0x25;        //50k,ohms
  176. //        P1=0x15;        //500k,ohms
  177. //        P1=0x03;
  178.         LE2=1;
  179.         delay_us(5);
  180.         LE2=0;
  181. }
  182. void DCV_25V()
  183. {
  184.         P1=0x04;
  185.         LE1=1;
  186.         delay_us(5);
  187.         LE1=0;
  188.         P1=0x41;   //x10,1/100
  189. //        P1=0x43;
  190.         LE2=1;
  191.         delay_us(5);
  192.         LE2=0;
  193. }

  194. void DCV_250V()
  195. {
  196.         P1=0x04;
  197.         LE1=1;
  198.         delay_us(5);
  199.         LE1=0;
  200.         P1=0x01;        //x1.1/100
  201. //        P1=0x03;
  202.         LE2=1;
  203.         delay_us(5);
  204.         LE2=0;
  205. }
  206. void ohms_2w_5M()
  207. {
  208.         P1=0x38;
  209.         LE1=1;
  210.         delay_us(5);
  211.         LE1=0;
  212.         P1=0x05;
  213.         LE2=1;
  214.         delay_us(5);
  215.         LE2=0;
  216.         gear=1;
  217.         range=4; //量程标识符
  218. }
  219. void ohms_2w_500K()
  220. {
  221.         P1=0x38;
  222.         LE1=1;
  223.         delay_us(5);
  224.         LE1=0;
  225.         P1=0x15;
  226.         LE2=1;
  227.         delay_us(5);
  228.         LE2=0;
  229. }
  230. void ohms_2w_50K()
  231. {
  232.         P1=0x38;
  233.         LE1=1;
  234.         delay_us(5);
  235.         LE1=0;
  236.         P1=0x25;
  237.         LE2=1;
  238.         delay_us(5);
  239.         LE2=0;
  240. }
  241. void ohms_2w_5K()
  242. {
  243.         P1=0x38;
  244.         LE1=1;
  245.         delay_us(5);
  246.         LE1=0;
  247.         P1=0x35;
  248.         LE2=1;
  249.         delay_us(5);
  250.         LE2=0;
  251. }
  252. void ohms_2w_500()
  253. {
  254.         P1=0x78;
  255.         LE1=1;
  256.         delay_us(5);
  257.         LE1=0;
  258.         P1=0x35;
  259.         LE2=1;
  260.         delay_us(5);
  261.         LE2=0;
  262. }
  263. void null_set()
  264. {
  265.         switch(gear)
  266.         {
  267.                 case 0: break;
  268.                 case 1:
  269.                         null=U;
  270.                         break;
  271.         }                       
  272. }
  273. void DCI_2mA()
  274. {
  275.         P1=0x02;
  276.         LE1=1;
  277.         delay_us(10);
  278.         LE1=0;
  279.         P1=0x49;  
  280.         LE2=1;
  281.         delay_us(10);
  282.         LE2=0;
  283.         gear=2;               
  284.         range=0; //量程标识符
  285. }
  286. void DCI_20mA()
  287. {
  288.         P1=0x0a;
  289.         LE1=1;
  290.         delay_us(10);
  291.         LE1=0;
  292.         P1=0x49;  
  293.         LE2=1;
  294.         delay_us(10);
  295.         LE2=0;
  296. }
  297. void DCI_200mA()
  298. {
  299.         P1=0x12;
  300.         LE1=1;
  301.         delay_us(10);
  302.         LE1=0;
  303.         P1=0x49;  
  304.         LE2=1;
  305.         delay_us(10);
  306.         LE2=0;
  307. }
  308. void DCI_2A()
  309. {
  310.         P1=0x06;
  311.         LE1=1;
  312.         delay_us(10);
  313.         LE1=0;
  314.         P1=0x49;  
  315.         LE2=1;
  316.         delay_us(10);
  317.         LE2=0;
  318. }
  319. uchar keyboard()
  320. {
  321.         uchar i, temp1,temp2;
  322.         for(i=0;i<4;i++)
  323.         {
  324.                 P0=~(1<<i);
  325.                 temp1=P0&0xf0;
  326.                 if(temp1!=0xf0)
  327.                 {
  328.                         delay_ms(10);
  329.                         temp2=P0&0xf0;
  330.                         if(temp1==temp2)
  331.                         {
  332.                                 if(temp1==0x70) //7
  333.                                 {
  334.                                         while(temp1!=0xf0)
  335.                                         {
  336.                                                 temp1=P0&0xf0;
  337.                                         }
  338.                                         return i*4+0;
  339.                                 }
  340.                                 if(temp1==0xd0) //5
  341.                                 {
  342.                                         while(temp1!=0xf0)
  343.                                         {
  344.                                                 temp1=P0&0xf0;
  345.                                         }
  346.                                         return i*4+1;
  347.                                 }
  348.                                 if(temp1==0xe0) //4
  349.                                 {
  350.                                         while(temp1!=0xf0)
  351.                                         {
  352.                                                 temp1=P0&0xf0;
  353.                                         }
  354.                                         return i*4+2;
  355.                                 }
  356.                         }
  357.                         else
  358.                                 return 16;
  359.                 }
  360.         }
  361. }

  362. /*******************************************************************************
  363.                                                                         |
  364.          6                         4                          5                |         2                         0                         1
  365.         DCV         DCI         OHMS        |        ***                        ***                        NULL
  366. ------------------------------------------------------------------------------
  367.                                                                         |
  368.          10                         8                         9                |        14                        12                        13
  369.          <                         >                        ***                |        ***                        Auto                ***
  370.                                                                                                         Man
  371. *******************************************************************************/
  372. void keyscan()
  373. {
  374.         uchar KEY;
  375.         KEY=keyboard();
  376.         switch(KEY)
  377.         {
  378.                 case 6:
  379.                         DCV_250mV();
  380.                         break;
  381.                 case 5:
  382.                         ohms_2w_5M();
  383.                         break;
  384.                 case 1:
  385.                         null_set();
  386.                         break;
  387.                 case 4:
  388.                         DCI_2mA();
  389.                         break;
  390.                 case 10:
  391.                         if(range>0)
  392.                                 range--;
  393.                         break;
  394.                 case 8:
  395.                         if(gear==1)
  396.                         {
  397.                                 if(range<4)
  398.                                 range++;
  399.                         }
  400.                         else
  401.                         {
  402.                                 if(range<3)
  403.                                 range++;
  404.                         }
  405.                         break;
  406.                 case 12:
  407.                         if(AUTO==1)
  408.                                 AUTO=0;
  409.                         else
  410.                                 AUTO=1;
  411.                         break;
  412.         }
  413. }
  414. void display_v_Auto()
  415. {
  416.     long V; uchar SIG=0,NEG=0;
  417.         V=filter();
  418.         if(V&0x2000000)
  419.         {       
  420.                 V=V-33554432;
  421.                 if(V<ZERO)
  422.                         U=ZERO-V;
  423.                 else
  424.                 {
  425.                         U=V-ZERO;
  426.                         NEG=1;
  427.                 }
  428.                 U=U*Vref/1.6777216;       
  429.         }
  430.         else
  431.         {       
  432.                 U=(33554432-V)*Vref/1.6777216 ;
  433.                 U=U+25001100;
  434.         }       
  435.         if(U>25500000)
  436.                 {
  437.                         add++;
  438.                 }
  439.         if(U<2500000)
  440.         {
  441.                 red++;
  442.         }
  443.         if(add==2)
  444.         {       
  445.                 if(range<3)
  446.                 {
  447.                         range++;
  448.                 }
  449.                 add=0;
  450.         }
  451.         if (red==2)
  452.         {
  453.                 if(range>0)
  454.                 {
  455.                         range--;
  456.                 }
  457.                 red=0;
  458.         }
  459.         if(NEG)       
  460.         {
  461.                 LED_display(191,0);
  462.         }
  463.         else
  464.         {
  465.                 LED_display(255,0);
  466.         }
  467.         switch (range)
  468.         {
  469.                 case 0:
  470.                                 DCV_250mV();
  471.                             LED_display(table[U/10000000],1);       
  472.                                 LED_display(table[U%10000000/1000000],2);       
  473.                                 LED_display(table1[U%1000000/100000],3);       
  474.                                 LED_display(table[U%100000/10000],4);
  475.                                 LED_display(table[U%10000/1000],5);
  476.                                 LED_display(table[U%1000/100],6);       
  477.                             LED_display(0xbf,7);
  478.                                 LED_display(0xff,8);
  479.                                 LED_display(0xfe,9);
  480.                                 break;                                 
  481.                 case 1:
  482.                                 DCV_2500mV();
  483.                                 LED_display(table1[U/10000000],1);       
  484.                                 LED_display(table[U%10000000/1000000],2);       
  485.                                 LED_display(table[U%1000000/100000],3);       
  486.                                 LED_display(table[U%100000/10000],4);
  487.                                 LED_display(table[U%10000/1000],5);
  488.                                 LED_display(table[U%1000/100],6);
  489.                                 LED_display(0xef,7);
  490.                                 LED_display(0xfe,9);
  491.                                 break;
  492.                 case 2:
  493.                                 DCV_25V();
  494.                                 if(NEG)
  495.                                         U=U*1.00024-650;
  496.                                 else
  497.                                         U=U*1.00024+650;
  498.                                 LED_display(table[U/10000000],1);       
  499.                                 LED_display(table1[U%10000000/1000000],2);       
  500.                                 LED_display(table[U%1000000/100000],3);       
  501.                                 LED_display(table[U%100000/10000],4);
  502.                                 LED_display(table[U%10000/1000],5);
  503.                                 LED_display(table[U%1000/100],6);
  504.                                 LED_display(0xef,7);
  505.                                 LED_display(0xfe,9);
  506.                                 break;
  507.                        
  508.                 case 3:
  509.                                 DCV_250V();
  510.                                 if(NEG)
  511.                                         U=U*1.00024-65;
  512.                                 else
  513.                                         U=U*1.00024+65;
  514.                                 LED_display(table[U/10000000],1);       
  515.                                 LED_display(table[U%10000000/1000000],2);       
  516.                                 LED_display(table1[U%1000000/100000],3);       
  517.                                 LED_display(table[U%100000/10000],4);
  518.                                 LED_display(table[U%10000/1000],5);
  519.                                 LED_display(table[U%1000/100],6);
  520.                                 LED_display(0xef,7);
  521.                                 LED_display(0xfe,9);
  522.                                 break;
  523.         }

  524. }
  525. void display_V_Man()
  526. {
  527.         long V; uchar SIG=0,NEG=0;
  528.         V=filter();
  529.         if(V&0x2000000)
  530.         {       
  531.                 V=V-33554432;       
  532.                 if(V<ZERO)
  533.                         U=ZERO-V;
  534.                 else
  535.                 {
  536.                         U=V-ZERO;
  537.                         NEG=1;
  538.                 }
  539.                 U=U*Vref/1.6777216;               
  540.         }
  541.         else
  542.         {       
  543.                 U=(33554432-V)*Vref/1.6777216 ;
  544.                 U=U+25001100;
  545.         }       
  546.         if(NEG)       
  547.         {
  548.                 LED_display(191,0);
  549.         }
  550.         else
  551.         {
  552.                 LED_display(255,0);
  553.         }
  554.         switch (range)
  555.         {
  556.                 case 0:
  557.                                 DCV_250mV();
  558.                             LED_display(table[U/10000000],1);       
  559.                                 LED_display(table[U%10000000/1000000],2);       
  560.                                 LED_display(table1[U%1000000/100000],3);       
  561.                                 LED_display(table[U%100000/10000],4);
  562.                                 LED_display(table[U%10000/1000],5);
  563.                                 LED_display(table[U%1000/100],6);       
  564.                             LED_display(0xbf,7);
  565.                                 LED_display(0xff,8);
  566.                                 LED_display(0x7e,9);
  567.                                 break;                                 
  568.                 case 1:
  569.                                 DCV_2500mV();
  570.                                 LED_display(table1[U/10000000],1);       
  571.                                 LED_display(table[U%10000000/1000000],2);       
  572.                                 LED_display(table[U%1000000/100000],3);       
  573.                                 LED_display(table[U%100000/10000],4);
  574.                                 LED_display(table[U%10000/1000],5);
  575.                                 LED_display(table[U%1000/100],6);
  576.                                 LED_display(0xef,7);
  577.                                 LED_display(0x7e,9);
  578.                                 break;
  579.                 case 2:
  580.                                 DCV_25V();
  581.                                 if(NEG)
  582.                                         U=U*1.00024-650;
  583.                                 else
  584.                                         U=U*1.00024+650;
  585.                                 LED_display(table[U/10000000],1);       
  586.                                 LED_display(table1[U%10000000/1000000],2);       
  587.                                 LED_display(table[U%1000000/100000],3);       
  588.                                 LED_display(table[U%100000/10000],4);
  589.                                 LED_display(table[U%10000/1000],5);
  590.                                 LED_display(table[U%1000/100],6);
  591.                                 LED_display(0xef,7);
  592.                                 LED_display(0x7e,9);
  593.                                 break;
  594.                        
  595.                 case 3:
  596.                                 DCV_250V();
  597.                                 if(NEG)
  598.                                         U=U*1.00024-65;
  599.                                 else
  600.                                         U=U*1.00024+65;
  601.                                 LED_display(table[U/10000000],1);       
  602.                                 LED_display(table[U%10000000/1000000],2);       
  603.                                 LED_display(table1[U%1000000/100000],3);       
  604.                                 LED_display(table[U%100000/10000],4);
  605.                                 LED_display(table[U%10000/1000],5);
  606.                                 LED_display(table[U%1000/100],6);
  607.                                 LED_display(0xef,7);
  608.                                 LED_display(0x7e,9);
  609.                                 break;
  610.         }
  611. }
  612. void display_i_Auto()
  613. {
  614.         long V; uchar SIG=0,NEG=0;
  615.         V=filter();
  616.         if(V&0x2000000)
  617.         {       
  618.                 V=V-33554432;
  619.                 if(V<ZERO)
  620.                         U=ZERO-V;
  621.                 else
  622.                 {
  623.                         U=V-ZERO;
  624.                         NEG=1;
  625.                 }
  626.                 U=U*Vref/1.6777216;       
  627.         }
  628.         else
  629.         {       
  630.                 U=(33554432-V)*Vref/1.6777216 ;
  631.                 U=U+25001100;
  632.         }       
  633.        
  634.         if(U>25500000)
  635.                 {
  636.                         add++;
  637.                 }
  638.         if(U<2500000)
  639.         {
  640.                 red++;
  641.         }
  642.         if(add==2)
  643.         {       
  644.                 if(range<3)
  645.                 {
  646.                         range++;
  647.                 }
  648.                 add=0;
  649.         }
  650.         if (red==2)
  651.         {
  652.                 if(range>0)
  653.                 {
  654.                         range--;
  655.                 }
  656.                 red=0;
  657.         }
  658.        
  659.         if(NEG)       
  660.         {
  661.                 LED_display(191,0);
  662.         }
  663.         else
  664.         {
  665.                 LED_display(255,0);
  666.         }
  667.         switch (range)
  668.         {
  669.                 case 0:
  670.                                 DCI_2mA();
  671.                             LED_display(table1[U/10000000],1);       
  672.                                 LED_display(table[U%10000000/1000000],2);       
  673.                                 LED_display(table[U%1000000/100000],3);       
  674.                                 LED_display(table[U%100000/10000],4);
  675.                                 LED_display(table[U%10000/1000],5);
  676.                                 LED_display(table[U%1000/100],6);       
  677.                             LED_display(0xbf,7);
  678.                                 LED_display(0xff,8);
  679.                                 LED_display(0xfd,9);
  680.                                 break;                                 
  681.                 case 1:
  682.                                 DCI_20mA();
  683.                                 LED_display(table[U/10000000],1);       
  684.                                 LED_display(table1[U%10000000/1000000],2);       
  685.                                 LED_display(table[U%1000000/100000],3);       
  686.                                 LED_display(table[U%100000/10000],4);
  687.                                 LED_display(table[U%10000/1000],5);
  688.                                 LED_display(table[U%1000/100],6);
  689.                                 LED_display(0xef,7);
  690.                                 LED_display(0xfd,9);
  691.                                 break;
  692.                 case 2:
  693.                                 DCI_200mA();
  694.                                 LED_display(table[U/10000000],1);       
  695.                                 LED_display(table[U%10000000/1000000],2);       
  696.                                 LED_display(table1[U%1000000/100000],3);       
  697.                                 LED_display(table[U%100000/10000],4);
  698.                                 LED_display(table[U%10000/1000],5);
  699.                                 LED_display(table[U%1000/100],6);
  700.                                 LED_display(0xef,7);
  701.                                 LED_display(0xfd,9);
  702.                                 break;
  703.                        
  704.                 case 3:
  705.                                 DCI_2A();
  706.                                 LED_display(table1[U/10000000],1);       
  707.                                 LED_display(table[U%10000000/1000000],2);       
  708.                                 LED_display(table[U%1000000/100000],3);       
  709.                                 LED_display(table[U%100000/10000],4);
  710.                                 LED_display(table[U%10000/1000],5);
  711.                                 LED_display(table[U%1000/100],6);
  712.                                 LED_display(0xef,7);
  713.                                 LED_display(0xfd,9);
  714.                                 break;
  715.         }
  716. }
  717. void display_i_Man()
  718. {
  719.         long V; uchar SIG=0,NEG=0;
  720.         V=filter();
  721.         if(V&0x2000000)
  722.         {       
  723.                 V=V-33554432;
  724.                 if(V<ZERO)
  725.                         U=ZERO-V;
  726.                 else
  727.                 {
  728.                         U=V-ZERO;
  729.                         NEG=1;
  730.                 }
  731.                 U=U*Vref/1.6777216;       
  732.         }
  733.         else
  734.         {
  735.                 U=(33554432-V)*Vref/1.6777216 ;
  736.                 U=U+25001100;
  737.         }       
  738.         if(NEG)       
  739.         {
  740.                 LED_display(191,0);
  741.         }
  742.         else
  743.         {
  744.                 LED_display(255,0);
  745.         }
  746.         switch (range)
  747.         {
  748.                 case 0:
  749.                                 DCI_2mA();
  750.                             LED_display(table1[U/10000000],1);       
  751.                                 LED_display(table[U%10000000/1000000],2);       
  752.                                 LED_display(table[U%1000000/100000],3);       
  753.                                 LED_display(table[U%100000/10000],4);
  754.                                 LED_display(table[U%10000/1000],5);
  755.                                 LED_display(table[U%1000/100],6);       
  756.                             LED_display(0xbf,7);
  757.                                 LED_display(0xff,8);
  758.                                 LED_display(0x7d,9);
  759.                                 break;                                 
  760.                 case 1:
  761.                                 DCI_20mA();
  762.                                 LED_display(table[U/10000000],1);       
  763.                                 LED_display(table1[U%10000000/1000000],2);       
  764.                                 LED_display(table[U%1000000/100000],3);       
  765.                                 LED_display(table[U%100000/10000],4);
  766.                                 LED_display(table[U%10000/1000],5);
  767.                                 LED_display(table[U%1000/100],6);
  768.                                 LED_display(0xef,7);
  769.                                 LED_display(0x7d,9);
  770.                                 break;
  771.                 case 2:
  772.                                 DCI_200mA();
  773.                                 LED_display(table[U/10000000],1);       
  774.                                 LED_display(table[U%10000000/1000000],2);       
  775.                                 LED_display(table1[U%1000000/100000],3);       
  776.                                 LED_display(table[U%100000/10000],4);
  777.                                 LED_display(table[U%10000/1000],5);
  778.                                 LED_display(table[U%1000/100],6);
  779.                                 LED_display(0xef,7);
  780.                                 LED_display(0x7d,9);
  781.                                 break;
  782.                        
  783.                 case 3:
  784.                                 DCI_2A();
  785.                                 LED_display(table1[U/10000000],1);       
  786.                                 LED_display(table[U%10000000/1000000],2);       
  787.                                 LED_display(table[U%1000000/100000],3);       
  788.                                 LED_display(table[U%100000/10000],4);
  789.                                 LED_display(table[U%10000/1000],5);
  790.                                 LED_display(table[U%1000/100],6);
  791.                                 LED_display(0xef,7);
  792.                                 LED_display(0x7d,9);
  793.                                 break;
  794.         }
  795. }
复制代码
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2016-2-11 14:48:18 | 显示全部楼层
  1. void display_ohms_Auto()
  2. {
  3.         long V; uchar SIG=0,NEG=0;
  4.         V=filter();
  5.         if(!(V&0x2000000))
  6.         {
  7.                 SIG=1;
  8.                        
  9.         }
  10.         if(V&0x2000000)
  11.         {
  12.                 V=V-33554432;
  13.                 U=V*Vref/1.6777216;       
  14.         }

  15.         else
  16.                 {
  17.                         U=(33554432-V)*Vref/1.6777216 ;
  18.                 }
  19.        
  20.         if(U>55000000)
  21.                 {
  22.                         add++;
  23.                 }
  24.         if(U<5500000)
  25.         {
  26.                 red++;
  27.         }
  28.         if(add>=1)
  29.         {       
  30.                 if(range<4)
  31.                 {
  32.                         range++;
  33.                 }
  34.                 add=0;
  35.         }
  36.         if (red>=1)
  37.         {
  38.                 if(range>0)
  39.                 {
  40.                         range--;
  41.                 }
  42.                 red=0;
  43.         }

  44.         LED_display(0xff,0);

  45.         switch (range)
  46.         {       
  47.                 case 0:
  48.                                 ohms_2w_500();
  49.                                 U=U-null;
  50.                                 if(U<0)
  51.                                         U=0;          
  52.                                 LED_display(table[U/10000000],1);       
  53.                                 LED_display(table[U%10000000/1000000],2);       
  54.                                 LED_display(table1[U%1000000/100000],3);       
  55.                                 LED_display(table[U%100000/10000],4);
  56.                                 LED_display(table[U%10000/1000],5);
  57.                                 LED_display(table[U%1000/100],6);
  58.                                 LED_display(0xfb,7);
  59.                                 LED_display(0xfb,9);
  60.                                 break;
  61.                 case 1:
  62.                                 ohms_2w_5K();
  63.                                 U=U-null/10;
  64.                                 if(U<0)
  65.                                         U=0;
  66.                             LED_display(table1[U/10000000],1);       
  67.                                 LED_display(table[U%10000000/1000000],2);       
  68.                                 LED_display(table[U%1000000/100000],3);       
  69.                                 LED_display(table[U%100000/10000],4);
  70.                                 LED_display(table[U%10000/1000],5);
  71.                                 LED_display(table[U%1000/100],6);
  72.                                 LED_display(0xfe,7);
  73.                                 LED_display(0xfb,9);
  74.                                 break;                                 
  75.                 case 2:
  76.                                 ohms_2w_50K();
  77.                                 U=U*0.99996;
  78.                                 U=U-null/100;
  79.                                 if(U<0)
  80.                                         U=0;
  81.                                 LED_display(table[U/10000000],1);       
  82.                                 LED_display(table1[U%10000000/1000000],2);       
  83.                                 LED_display(table[U%1000000/100000],3);       
  84.                                 LED_display(table[U%100000/10000],4);
  85.                                 LED_display(table[U%10000/1000],5);
  86.                                 LED_display(table[U%1000/100],6);
  87.                                 LED_display(0xfe,7);
  88.                                 LED_display(0xfb,9);
  89.                                 break;
  90.                 case 3:
  91.                                 ohms_2w_500K();
  92.                                 U=U*1.00016;
  93.                                 U=U-null/1000;
  94.                                 if(U<0)
  95.                                         U=0;
  96.                                 LED_display(table[U/10000000],1);       
  97.                                 LED_display(table[U%10000000/1000000],2);       
  98.                                 LED_display(table1[U%1000000/100000],3);       
  99.                                 LED_display(table[U%100000/10000],4);
  100.                                 LED_display(table[U%10000/1000],5);
  101.                                 LED_display(table[U%1000/100],6);
  102.                                 LED_display(0xfe,7);
  103.                                 LED_display(0xff,8);
  104.                                 LED_display(0xfb,9);
  105.                                 break;
  106.                        
  107.                 case 4:
  108.                                 ohms_2w_5M();
  109.                                 U=U-null/10000;
  110.                                 if(U<0)                                                                                                                                                                                         
  111.                                         U=0;
  112.                                 if(U<56000000)
  113.                                 {
  114.                                 LED_display(table1[U/10000000],1);       
  115.                                 LED_display(table[U%10000000/1000000],2);       
  116.                                 LED_display(table[U%1000000/100000],3);       
  117.                                 LED_display(table[U%100000/10000],4);
  118.                                 LED_display(table[U%10000/1000],5);
  119.                                 LED_display(table[U%1000/100],6);
  120.                                 LED_display(0xbf,8);
  121.                                 LED_display(0xff,7);
  122.                                 LED_display(0xfb,9);
  123.                                 }
  124.                                 else
  125.                                 {       
  126.                                 LED_display(191,1);       
  127.                                 LED_display(191,2);       
  128.                                 LED_display(191,3);       
  129.                                 LED_display(191,4);
  130.                                 LED_display(191,5);
  131.                                 LED_display(191,6);
  132.                                 LED_display(0xbf,8);
  133.                                 LED_display(0xff,7);
  134.                                 LED_display(0xfb,9);
  135.                                 }
  136.                                 break;
  137.         }

  138. }
  139. void display_ohms_Man()
  140. {
  141.         long V; uchar SIG=0,NEG=0;
  142.         V=filter();
  143.         if(!(V&0x2000000))
  144.         {
  145.                 SIG=1;               
  146.         }
  147.         if(V&0x2000000)
  148.         {
  149.                 V=V-33554432;
  150.                 U=V*Vref/1.6777216;       
  151.         }
  152.         else
  153.         {
  154.                 U=(33554432-V)*Vref/1.6777216;
  155.         }
  156.         LED_display(0xff,0);
  157.         switch (range)
  158.         {       
  159.                 case 0:
  160.                                 ohms_2w_500();
  161.                                 U=U-null;
  162.                                 if(U<0)
  163.                                         U=0;
  164.                                 if(U<56000000)
  165.                                 {
  166.                                 LED_display(table[U/10000000],1);       
  167.                                 LED_display(table[U%10000000/1000000],2);       
  168.                                 LED_display(table1[U%1000000/100000],3);       
  169.                                 LED_display(table[U%100000/10000],4);
  170.                                 LED_display(table[U%10000/1000],5);
  171.                                 LED_display(table[U%1000/100],6);
  172.                                 LED_display(0xfb,7);
  173.                                 LED_display(0x7b,9);
  174.                                 }
  175.                                 else
  176.                                 {       
  177.                                 LED_display(191,1);       
  178.                                 LED_display(191,2);       
  179.                                 LED_display(191,3);       
  180.                                 LED_display(191,4);
  181.                                 LED_display(191,5);
  182.                                 LED_display(191,6);
  183.                                 LED_display(0xff,8);
  184.                                 LED_display(0xfb,7);
  185.                                 LED_display(0x7b,9);
  186.                                 }
  187.                                 break;
  188.                 case 1:
  189.                                 ohms_2w_5K();
  190.                                 U=U-null/10;
  191.                                 if(U<0)
  192.                                         U=0;
  193.                                 if(U<56000000)
  194.                                 {
  195.                             LED_display(table1[U/10000000],1);       
  196.                                 LED_display(table[U%10000000/1000000],2);       
  197.                                 LED_display(table[U%1000000/100000],3);       
  198.                                 LED_display(table[U%100000/10000],4);
  199.                                 LED_display(table[U%10000/1000],5);
  200.                                 LED_display(table[U%1000/100],6);
  201.                                 LED_display(0xfe,7);
  202.                                 LED_display(0x7b,9);
  203.                                 }
  204.                                 else
  205.                                 {       
  206.                                 LED_display(191,1);       
  207.                                 LED_display(191,2);       
  208.                                 LED_display(191,3);       
  209.                                 LED_display(191,4);
  210.                                 LED_display(191,5);
  211.                                 LED_display(191,6);
  212.                                 LED_display(0xff,8);
  213.                                 LED_display(0xfe,7);
  214.                                 LED_display(0x7b,9);
  215.                                 }
  216.                                 break;                                 
  217.                 case 2:
  218.                                 ohms_2w_50K();
  219.                                 U=U*0.99996;
  220.                                 U=U-null/100;
  221.                                 if(U<0)
  222.                                         U=0;
  223.                                 if(U<56000000)
  224.                                 {
  225.                                 LED_display(table[U/10000000],1);       
  226.                                 LED_display(table1[U%10000000/1000000],2);       
  227.                                 LED_display(table[U%1000000/100000],3);       
  228.                                 LED_display(table[U%100000/10000],4);
  229.                                 LED_display(table[U%10000/1000],5);
  230.                                 LED_display(table[U%1000/100],6);
  231.                                 LED_display(0xfe,7);
  232.                                 LED_display(0x7b,9);
  233.                                 }
  234.                                 else
  235.                                 {       
  236.                                 LED_display(191,1);       
  237.                                 LED_display(191,2);       
  238.                                 LED_display(191,3);       
  239.                                 LED_display(191,4);
  240.                                 LED_display(191,5);
  241.                                 LED_display(191,6);
  242.                                 LED_display(0xff,8);
  243.                                 LED_display(0xfe,7);
  244.                                 LED_display(0x7b,9);
  245.                                 }
  246.                                 break;
  247.                 case 3:
  248.                                 ohms_2w_500K();
  249.                                 U=U*1.00016;
  250.                                 U=U-null/1000;
  251.                                 if(U<0)
  252.                                         U=0;
  253.                                 if(U<56000000)
  254.                                 {
  255.                                 LED_display(table[U/10000000],1);       
  256.                                 LED_display(table[U%10000000/1000000],2);       
  257.                                 LED_display(table1[U%1000000/100000],3);       
  258.                                 LED_display(table[U%100000/10000],4);
  259.                                 LED_display(table[U%10000/1000],5);
  260.                                 LED_display(table[U%1000/100],6);
  261.                                 LED_display(0xfe,7);
  262.                                 LED_display(0xff,8);
  263.                                 LED_display(0x7b,9);
  264.                                 }
  265.                                 else
  266.                                 {       
  267.                                 LED_display(191,1);       
  268.                                 LED_display(191,2);       
  269.                                 LED_display(191,3);       
  270.                                 LED_display(191,4);
  271.                                 LED_display(191,5);
  272.                                 LED_display(191,6);
  273.                                 LED_display(0xff,8);
  274.                                 LED_display(0xfe,7);
  275.                                 LED_display(0x7b,9);
  276.                                 }
  277.                                 break;
  278.                        
  279.                 case 4:
  280.                                 ohms_2w_5M();
  281.                                 U=U-null/10000;
  282.                                 if(U<0)                                                                                                                                                                                         
  283.                                         U=0;
  284.                                 if(U<56000000)
  285.                                 {
  286.                                 LED_display(table1[U/10000000],1);       
  287.                                 LED_display(table[U%10000000/1000000],2);       
  288.                                 LED_display(table[U%1000000/100000],3);       
  289.                                 LED_display(table[U%100000/10000],4);
  290.                                 LED_display(table[U%10000/1000],5);
  291.                                 LED_display(table[U%1000/100],6);
  292.                                 LED_display(0xbf,8);
  293.                                 LED_display(0xff,7);
  294.                                 LED_display(0x7b,9);
  295.                                 }
  296.                                 else
  297.                                 {       
  298.                                 LED_display(191,1);       
  299.                                 LED_display(191,2);       
  300.                                 LED_display(191,3);       
  301.                                 LED_display(191,4);
  302.                                 LED_display(191,5);
  303.                                 LED_display(191,6);
  304.                                 LED_display(0xbf,8);
  305.                                 LED_display(0xff,7);
  306.                                 LED_display(0x7b,9);
  307.                                 }
  308.                                 break;
  309.         }
  310. }
  311. long get_v()
  312. {
  313.          uchar i;         long V=0;
  314. loop:if(SDO==0)           
  315.                 {
  316.                           
  317.                         for(i=0;i<2;i++)
  318.                                 {
  319.                                         SCK=1;
  320.                                         delay_us(5);                       
  321.                                         SCK=0;
  322.                                         delay_us(5);
  323.                                 }
  324.                
  325.                         for(i=0;i<26;i++)
  326.                                 {       
  327.                                         V<<=1;
  328.                                         SCK=1;
  329.                                         delay_us(5);
  330.                                         if(SDO==1)
  331.                                                 V++;       
  332.                                         SCK=0;                               
  333.                                         delay_us(5);
  334.                                 }
  335.                          for(i=0;i<4;i++)
  336.                                 {
  337.                                         SCK=1;
  338.                                         delay_us(5);
  339.                                         SCK=0;
  340.                                         delay_us(5);
  341.                                 }                         
  342.                  }
  343.         else goto loop;
  344.         return V;
  345.          
  346. }


  347. void delay_ms(unsigned int i)  //执行此函数延时 i ms。    (比较精确)                            
  348. {
  349.         unsigned char j,k;
  350.         do
  351.         {
  352.                 j = 44;
  353.                 do
  354.                 {
  355.                         k = 54;
  356.                         do
  357.                         {
  358.                                 _nop_();
  359.                                 _nop_();
  360.                                 _nop_();
  361.                                 _nop_();
  362.                                 _nop_();
  363.                                 _nop_();
  364.                         }
  365.                         while(--k);     
  366.                 }
  367.                 while(--j);
  368.         }
  369.         while(--i);


  370. }

  371. void delay_us( uchar i)   //执行次函数延时( i+1) us ,注:此函数i最小取值为1 ,且不能改变为其它数据类型,所以此函数最大延时为256us。 (相当精确)
  372. {

  373.         do
  374.         {
  375.                 _nop_();
  376.                 _nop_();
  377.                 _nop_();
  378.                 _nop_();
  379.                 _nop_();
  380.                 _nop_();
  381.                 _nop_();
  382.                 _nop_();
  383.                 _nop_();
  384.                 _nop_();
  385.                 _nop_();
  386.                 _nop_();
  387.                 _nop_();
  388.                 _nop_();
  389.                 _nop_();
  390.                 _nop_();
  391.                 _nop_();
  392.                 _nop_();
  393.                 _nop_();
  394.                 _nop_();
  395.                 _nop_();
  396.                 _nop_();  
  397.         }
  398.         while(--i);

  399. }

  400. /**********************************************************************************
  401. 名称:LED显示屏驱动函数
  402. 输入:i 为显示数据,j 为显示区域地址
  403.                 j |            0     |      1     |     2     |      3     |     4     |     5     |     6     |      7     |      8      |     9      |
  404.         ------|-----------|------------|-----------|------------|-----------|-----------|-----------|------------|-------------|------------|
  405.                   |         数码管1  |         数码管2   |  数码管3  |   数码管4  |  数码管5  |  数码管6  |  数码管7  |  量程标识  |  量程标识   |  档位标识        |
  406.         ------|-----------|------------|-----------|------------|-----------|-----------|-----------|------------|-------------|------------|
  407.                  
  408.        
  409.        
  410. *********************************************************************************/
  411. void LED_display(uchar i,uchar j)
  412. {
  413.         switch(j)
  414.         {
  415.                 case 0:
  416.                         P2=i;
  417.                         P4=0x00;
  418.                         delay_us(10);
  419.                         P4=0xff;
  420.                         break;
  421.                 case 1:
  422.                         P2=i;
  423.                         P4=0x20;
  424.                         delay_us(10);
  425.                         P4=0xff;
  426.                         break;
  427.                 case 2:
  428.                         P2=i;
  429.                         P4=0x02;
  430.                         delay_us(10);
  431.                         P4=0xff;
  432.                         break;
  433.                 case 3:
  434.                         P2=i;
  435.                         P4=0x22;
  436.                         delay_us(10);
  437.                         P4=0xff;
  438.                         break;
  439.                                
  440.                 case 4:
  441.                         P2=i;
  442.                         P4=0x04;
  443.                         delay_us(10);
  444.                         P4=0xff;
  445.                         break;
  446.                 case 5:
  447.                         P2=i;
  448.                         P4=0x24;
  449.                         delay_us(10);
  450.                         P4=0xff;
  451.                         break;
  452.                 case 6:
  453.                         P2=i;
  454.                         P4=0x06;
  455.                         delay_us(10);
  456.                         P4=0xff;
  457.                         break;
  458.                 case 7:
  459.                         P2=i;
  460.                         P4=0x26;
  461.                         delay_us(10);
  462.                         P4=0xff;
  463.                         break;
  464.                 case 8:
  465.                         P2=i;
  466.                         P4=0x10;
  467.                         delay_us(10);
  468.                         P4=0xff;
  469.                         break;
  470.                 case 9:
  471.                         P2=i;
  472.                         P4=0x30;
  473.                         delay_us(10);
  474.                         P4=0xff;
  475.                         break;
  476.                                                                                        
  477.         }
  478. }

  479. void welcome()
  480. {
  481.         LED_display(0xff,0);
  482.         LED_display(0x89,1);
  483.         LED_display(0x86,2);
  484.         LED_display(0xc7,3);
  485.         LED_display(0xc7,4);
  486.         LED_display(0xc0,5);
  487.         LED_display(0xff,6);       
  488. }

  489. void AUTO_ZERO()
  490. {
  491.         uchar PP1;
  492.         PP1=P1;
  493.         P1=P1&0xf0;
  494.         P1=P1|0x03;
  495.         LE2=1;
  496.         delay_us(10);
  497.         LE2=0;
  498.         delay_ms(5);
  499.         ZERO=get_v();
  500.                 ZERO=ZERO-33554432;               
  501.         P1=PP1;
  502.         LE2=1;
  503.         delay_us(10);
  504.         LE2=0;
  505.         delay_ms(5);
  506. }
  507. void T0_int() interrupt 1
  508. {       
  509.         num++;
  510.         if(num==50)
  511.         {
  512.                 num=0;
  513.                 n++;
  514.                 if(n==4)
  515.                         n=0;
  516.         }
  517.        
  518. }


复制代码
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2016-2-11 15:01:26 | 显示全部楼层
由于时间太紧程序只写了表能测量的最基本功能,还很不完善,待后续逐渐完善。且本人水平有限,有写得不妥的地方往各位老师多多指点。
回复 支持 反对

使用道具 举报

发表于 2016-2-13 16:49:44 | 显示全部楼层
高手在民间,支持业余的一下哦。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-5-10 22:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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