基于S52单片机的毫欧表(万用表)设计_第1页
基于S52单片机的毫欧表(万用表)设计_第2页
基于S52单片机的毫欧表(万用表)设计_第3页
基于S52单片机的毫欧表(万用表)设计_第4页
基于S52单片机的毫欧表(万用表)设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于S52单片机的毫欧表设计摘要基于AT89S52单片机的毫欧表设计是采用伏安法测量电阻。采用TLC5615数模转换芯片和LM358运算放大器及三极管TIP41构成的压控恒流源提拱恒定的电流。测量电阻时可选择的电流分别为1mA,10mA,100mA。测量电阻的量程分别为40.00、4000m、400.0m。测量的电压信号通过LM358运算放器放大100倍后经过TLC1549模数芯片传入单片机进行计算处理并在数码管上输出电阻值!关键字:毫欧表压控恒流源目 录:一.总体方案设计:4二.方案选择:52.1.1 方案一比较法测电阻:52.1.2 方案二替代法测电阻:52.1.3 方案三直流电桥测电阻5

2、2.1.4 方案四伏安法测电阻62.2 压控恒流源方案:62.2.1 方案一62.2.2 方案二62.2.3 方案三6三.单元模块设计:73.1 数控恒流源73.2 电压放大模块设计83.3 AD转换与单片机处理93.4 DA转换93.5 按键的输入及数码管的显示输出9四.软件设计114.1 主程序流程图115.1 系统实现的功能,125.2 测量电阻方法:125.3 实际测试结果135.4 对测理结果的分析:15六.设计总结16七.参考文献17八.附:188.1 电路仿真原理图189.2 程序:19一.总体方案设计: 采用伏安法测电阻,通以恒定的电流,测量电阻上的电压。因为URI由于电阻为毫

3、欧,如果电流为毫安的话,则所得的电压值很小,难以通过ADC识别出来。可以采用大电流的方法和把电压信号放大的方法来使ADC芯片识别出来并由通过单片机计算得出电阻值。采用大电流的话,由于很多小电阻无法承受较大的电流,通过电阻的电流较大时,产生的热量也多,会带来较大的误差。所以采用把电压信号放大的方法,把微小的电压信号放大后经过AD转换,把信号送入单片机,然后由单片机计算并显示出电阻值。测量范围测量电流最大输出电压电压放大100倍40.001mA40mV4V4000m10 mA40mV4V400.0m100 mA40mV4V上图为测试电阻的范围及测量时的电流:二.方案选择:2.1电阻测量方案2.1.

4、1 方案一比较法测电阻:在乙图中,K1闭合,K2断开测得U1;K1断开,K2闭合测得U2,使用条件:在乙图中应保证AB间电压恒定。上图中的比较法测量电阻值的阻值非常小时,电阻R0难以选取。并且要用电压表测量两处电阻的电压。其中的导体接触间的电阻也会对测量结果造成一定的误差,并且对电压表的要求高。没有采用此方案。2.1.2 方案二替代法测电阻:步骤:K1打开,K2接1,调节R1为最大,电阻箱R0为最大。闭合K1。调节R1使、指针指在2/3处,读数。K2接2,保持R1不动,调节R-0,使、读数不变。RX=电阻箱读数。条件:被测量的部份电路电流或电压不变。上图但不适合于测量小电阻。因为电阻箱的阻值一

5、般都较大。测量的电阻精度低。2.1.3 方案三直流电桥测电阻直流电桥又分直流单电桥和直流双电桥。采用上面的两种方法时要用很多操作需要手动操作,并且对元件选取要求高,是通过数字电位器来改变需要的电阻参数,虽然可以达到数控的目的,但数字电位器的每一级步进电阻比较大,调节困难,需要采用数控电阻,用单片机处理计算杂复并且测量时操作不方便。2.1.4 方案四伏安法测电阻采用伏安法测量电阻时,恒流源电路产生恒定的电流源通过被测电阻Rx,只需要测量出Rx上的电压大小,然后用RxU / I 即可算出电阻的阻值大小。方便单片机进行处理。实际操作起来相对也比较简单。方案四,操作简单,计算方便。精度比方案一和方案二

6、高,但操作和计算比方安三更简单和方案。所以采用方案四伏安法测电阻。2.2 压控恒流源方案:2.2.1 方案一 IU/(R1+R2),若R1R2,则电流I约为IU/R1;可以采用一个恒定的电压,然后除以一个大电阻,测试时由时所测的电阻很小,基本上可以看作电流是恒定的。但这种方案测量的电阻阻值越大,电流变化较大,电流精度不高。2.2.2 方案二 采用恒流二极管或者恒流三极管,精度比较高,但这种电路能实现的恒流范围很小,只能达到十几毫安,不能达到题目的要求。2.2.3 方案三压控恒流源,通过改变恒流源的外围电压,利用电压的大小来控制输出电流的大小。电压控制电路采用数控的方式,利用单片机送出数字量,经

7、过D/A转换转变成模拟信号,再送到运算放大器和大功率三极管进行放大输出电流。该方案通过软件方法实现输出电流稳定,易于功能的实现,便于操作,故选择此方案。原理图如下面的数控恒流源中的原理图。三.单元模块设计:3.1 数控恒流源数控恒流源为电阻测量提供恒定的电流。单片机由测量所需的电流而控制输出恒定电流的大小。实际电路中采用的三极管为TIP41,三极管本身在这里不具备控制电流大小的作用,但是起到驱动和扩流的作用。前面是一个电压跟随,后面一个负反馈。R9上的电压为输入的电压Vin。理论计算I1=VR1/R1=(Vi-V+)/R1;I2=VR2/R2=(V+-Va)/R2;因为I+=0,得I1 = I

8、2所以Va=(V+-Vi)R2/R1+V+;I3=VR3/R3=V-/R1;I4=VR4/R4=(VO-V-)/R4;因为I-=0,得I3 = I4所以VO= V- (R3/R4+1);从而可得R5上电压为UR5VO-Va=(R4/R3)V- - (R2/R1)V+ +(V-V+) + (R2/R1)Vi,若R2=R1,R3=R4,且 V-V+则UR5Vi(输入电压)假设I5=IL可得VA/RLVI/R5,由上式的Va=(V+-V-)R2/R1+V+;及R2=R1;可得(V+-V-)/RL Vi / R5 即(V+/V-)-1 RL/ R5;当V+Vi 和RLR5, R3+R4RL,时可满足R

9、L上电流恒定。3.2 电压放大模块设计需要把测量到的直流电压信号放大100倍后,即可传给AD芯片再由单片机处量。原理图如下通过调节R2与R1的比值即可以改变电压放大倍数。上图为LM358的PDF里提供的电路原理图,实际电路中采用的电阻R21M,R1由3296电位器构成,阻值调成10K。上图是采用的单个运算放大一百倍。也可以采用两个运算,每个放大十倍。实际电路制作过程中,上面两种方法都进行测试,发现采用单个运算放大一百倍效果相对要好。所以实际电路中是采用的单个运算放大100倍的方法。3.3 AD转换与单片机处理电阻测量所取得的电压信号放大100倍后,通过AD-IN传入ADC转换芯片。再由单片机计

10、算,用所得的电压除以测量时恒定的电流可得电阻的阻值大小,但此时的电阻阻值还不是实际所测得的电阻阻值,因为电压是放大一百倍后所得的。所以结果应缩小100倍即可得到真实的电阻阻值大小。3.4 DA转换由单片机控制DAC5615芯片分别产生40mV、400mV、4000mV的电压即可获得需要测量的电流分别为1mA (40mV/40)、10mA (400mV/40)、100mA (4000mV/40)。实际电路中只需要选择好相应的电阻测量范围即可。不需要手机选择测试电流,电流将由单片机控制电压控制电流源电路输出所需要的电流。3.5 按键的输入及数码管的显示输出采用了串行接口8位LED数码管及64键键盘

11、智能控制芯片HD7279芯片来处理按键的输入及位数码管的输出显示。本电路只采用了44的按键及位数码管显示输出。四.软件设计4.1 主程序流程图开始初始化延时等待是否有按键按键识别调用相应的程序YESNOYESNO延时等待按键说明1:1mA 电流测量电阻2:10mA电流测量电阻3:100mA电流测量电阻4:显示测量电压值5:备用(清除显示)6:备用(清除显示)7:暂停时钟进入调整8:调整时钟的数值9:启动并显示时钟0:自动调零(测量值减去导线电值)上:产生正弦波下:产生方波左:产生三角波右:皮生距齿波Enter:备用(清除显示)Esc:备用(清除显示)五.系统功能,指标参数5.1 系统实现的功能

12、,(1)电阻的测量,测量电阻范量为0.1m40。(理论值可达到0.1m)(2)产生方波,正弦波,方波,锯齿波。(3)时钟的显示功能。并可调整时间。(4)测量0-4V间的直流电压值。(5)压控恒流源输入0-4V的电压,产生恒定的电流为0-100mA。5.2 测量电阻方法:用小鳄鱼夹接好电阻,选估计被测电阻的范围,再按下按键来选择测试的电流。其中,在100mA电流(按键3)中设了自动调零技术。可以选用把测试导线直接短接后,选按下数字键,再按一下自动调零按键(数字0)即可。测量出的电阻显示的是,测量值减去导线间的电阻值。注意:1必须在测试之前,确定被测电阻可以安全流过最大测试电流!尤其在使用 0.4

13、 (100mA)档时! 2调零时,先把两根测试导线短接。按下要用的量程键(数字键3)之后,再按下调零键(数字键0)。此时,数码管会显示出当前导线间的电阻值一秒钟并保存。再按下量程键(数字键3)即可进行测量。5.3 实际测试结果被测电阻全部为四色坏的碳膜电阻。0.24、2、2.2、3.9由于测试时电阻有限,所以下面测试中部分电阻阻值是采用以上电阻串联或并联起来作为一个被测电阻。三个量程测试的数据分别如下:1mA电流的量程,测得电阻阻值如下表量程电阻标称值测量电阻值绝对误差相对误差 %1mA4010.990.011.00 1mA400 1mA402.22.060.146.3

14、6 1mA403.93.880.020.51 1mA4044.040.041.00 1mA4066.280.284.67 1mA4088.450.455.62 1mA401010.560.565.60 1mA401212.880.887.33 1mA401413.940.060.43 1mA401616.340.342.13 1mA401818.820.824.56 1mA402020.740.743.70 1mA402222.780.783.55 平均3.71 10mA电流的量程,测得电阻阻值如下表量程电阻标称值测量电阻值绝对误差相对误差 %10mA40.120.1200.00 10mA40

15、.240.2400.00 10mA40.480.5080.0285.83 10mA40.720.7680.0486.67 10mA411.0240.0242.40 10mA422.0520.0522.60 10mA42.22.2160.0160.73 10mA43.93.9280.0280.72 10mA444.0480.0481.20 平均2.24 100mA电流的量程,测得电阻阻值如下表量程电阻标称值m测量电阻值m绝对误差相对误差 %100mA0.4603 100mA0.4808 100mA0.41200 100mA0.4240

16、255.815.86.58 平均4.45 5.4 对测理结果的分析:1在采用1mA电流测试时,当被测电阻小于2时,所得的测试结果平均比电阻标称值要小0.23。当被测的电阻大于14欧时,所得的测试结果平均比电阻标称值要大1.38。在编程中对上面问题进行了软件修正。2分析原因,当测量电流为1mA,电阻小于2欧时,产生的电压也小于2mV。由于LM358器件原因,而使得输出结果小0.23。被测电阻大于14欧时,所得结果偏大的原因,估计由时测试时的14,16,18,20,22的电阻都是由一单独阻值为2的碳膜电阻串联而成的。在两电阻间的接触处没有用电烙铁等工具焊接起来,而且直接用把电阻引脚绑定在一起。每个

17、电阻连结处的电阻给测量结果带来的较大的偏差。3测试结果表明,所测得的电阻在一定程度上与电阻本身标称值相同,当工作电流太小,或在比较大的电流范围时误差有所增加。引起这些误差的因素是多方面的,主要由测量仪器的系统误差以及电阻采用的是四环的碳膜电阻受温度影响较大,电流源工作在大电流时受温度影响所致。4本系统如果采如精度更高,温度特性更好的电阻和导线,可提高测量的精度。六.设计总结在制作毫欧表的过程中,我深切的体会到电路理论与实际相结合的重要。以及用电脑软件仿真与电路理论及电路实际的不同。自己制作过程是先实际再理论最后再实际的过程。自己最初制作的毫欧表是采用的是稳定的电压除以大电阻的恒流源方案。测量的

18、结果不是很稳定。而且每次换量程时还需要手动改变电流,操作繁琐。后面打算单片机通过控制继电器来改变电流开关。需要占用较多的单片机资源。而且成本增加。后面发现了压控恒流源方案来恒定电流,接着花了很长时间查资料学习及实验采用的压控恒流源的方法来提拱恒定的电流。在整个制作过程中,主要是离不开上学期电子培训课上老师所教的知识及提供的条件,让自己学到了更多的知识。其次是网上电子爱好者及电子类的论坛给了自己很大的帮助,在整个制作过程中所遇到的问题大部分是通过网络上虽互不认识但都爱好电子的电子爱好者给予的解答。用途:测量直流类 m数十 的小电阻,主要用于电动机,扬声器,继电器等线圈的直流电阻,由于它们的直流电

19、阻数值不大,普通万用表实际很难测量到准确读数.使用毫欧表可以解决大部分这种测量.七.参考文献1:周尘.单片机C语言轻松入门.北京航空航一大学出版社.20062:康华光,陈大钦编.电子技术基本.高等教育出版社.20043:周润景.张丽娜.基于PROTEUSR的电路及单片机系统设计与仿真.20064: /0606/2711houb.htm杰龙电子单片机毫欧表5: /blog/user_default.aspx?u=asyun&page=3八.附:8.1 电路仿真原理图在proteus电路仿真软件中的仿真的压控恒流源电

20、路原理图如下:在Multisim 9电路仿真软件中的仿真的压控恒流源电路原理图如下:9.2 程序:#include #include/*函数声明*/void write7279(unsigned char, unsigned char);/写入到HD7279unsigned char read7279(unsigned char);/从HD7279读出void send_byte(unsigned char); /发送一个字节unsigned char receive_byte(void); /接收一个字节void delay10ms(unsigned char time); /延时程序voi

21、d short_delay(void); /短延时unsigned int adc1549(void);/ADC TLC1549的驱动程序void DaConv(unsigned int DaDat);/DAC TLC5615的驱动程序unsigned int lubo(void);/滤波程序void zhenxianbo(void);/正弦波void sanjiaobo(void);/三角波void juchibo(void);/锯齿波void fangbo(void);/方波void displaytime();/显示时钟void adc(void);/显示测量出的电压值void resi

22、stance1mA(); /1mA计算电阻值void resistance10mA();/10mA 计算电阻值void resistance100mA();/100mA 计算电阻值void ABC();/ 计算导线间的电阻值void overflow(unsigned char d3,unsigned char d2,unsigned char d1,unsigned char d0);/ 溢出显示1/* HD7279A指令 *#define CMD_RESET 0xa4#define CMD_TEST 0xbf#define DECODE0 0x80#define DECODE1 0xc8#

23、define CMD_READ 0x15#define UNDECODE 0x90#define RTL_CYCLE 0xa3#define RTR_CYCLE 0xa2#define RTL_UNCYL 0xa1#define RTR_UNCYL 0xa0#define ACTCTL 0x98#define SEGON 0xe0#define SEGOFF 0xc0#define BLINKCTL 0x88/* 键盘按键代码 *#define one 0x3a#definetwo 0x39#definethree 0x38#definefour 0x32#define five 0x31#d

24、efine six 0x30#define seven 0x2a#define eight 0x29#define nine 0x28#define Esc 0x22#define zero 0x21#define Enter 0x20#define up 0x3f#define left 0x37#define right 0x2f#define down 0x27#define uint unsigned int#define uchar unsigned char/* 变量及I/O口定义 *unsigned char key_number,hour=0,minute=0,second=0

25、;unsigned int tmr;unsigned int u1=0,u=0,res=0,DaDate;sbit cs=P03; / HD7279sbit clk=P02; / HD7279sbit dat=P00; / HD7279sbit key=P01; / HD7279sbit ad_clk = P22; /ADC1549sbit ad_cs= P20; /adsbit ad_dout= P21; /adsbit DIN=P23;/DAC5615 sbit DaCS=P24;/dasbit DaSCLK=P25;/da/*正弦波数值表*/void da5615(unsigned in

26、t);void fangbo(void);void juchibo(void);void sanjiaobo(void);void zhenxianbo(void);void set_time (void);code unsigned char TAB= 0x80,0x83,0X86,0X89,0X8D,0X90,0X93,0X96,0X99,0X9C,0X9F,0XA2,0XA5,0XA8,0XAB,0XAE, 0XB1,0XB4,0XB7,0XBA,0XBC,0XBF,0XC2,0XC5,0XC7,0XCA,0XCC,0XCF,0XD1,0XD4,0XD6,0XD8, 0XDA,0XDD,

27、0XDF,0XE1,0XE3,0XE5,0XE7,0XE9,0XEA,0XEC,0XEF,0XF1,0XF2,0XF3,0XF4,0XF5, 0XF6,0XF7,0XF8,0XF9,0XFA,0XFB,0XFC,0XFD,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFD,0XFC,0XFB,0XFA,0XF9,0XF8,0XF7,0XF6, 0XF5,0XF4,0XF2,0XF1,0XEF,0XEE,0XEC,0XEA,0XE9,0XE7,0XE5,0XE3,0XE1,0X

28、DE,0XDD,0XDA, 0XD8,0XD6,0XD4,0XD1,0XCF,0XCC,0XCA,0XC9,0XC5,0Xc2,0XBF,0XBC,0XBA,0XB7,0XB4,0XB1, 0XAE,0XAB,0XA8,0XA5,0XA2,0X9F,0X9C,0X99,0X96,0X93,0X90,0X8D,0X89,0X86,0X83,0X80, 0X80,0X7C,0X79,0X76,0X72,0X6F,0X6C,0X69,0X66,0X63,0X60,0X5D,0X5A,0X57,0X55,0X51, 0X4E,0X4C,0X48,0X45,0X43,0X40,0X3D,0X3A,0X3

29、8,0X35,0X33,0X30,0X2E,0X2B,0X29,0X27, 0X25,0X22,0X20,0X1E,0X1C,0X1A,0X18,0X16,0X15,0X13,0X11,0X10,0X0E,0X0D,0X0B,0X0A, 0X09,0X08,0X07,0X06,0X05,0X04,0X03,0X02,0X02,0X01,0X00,0X00,0X00,0X00,0X00,0X00, 0X00,0X00,0X00,0X01,0X00,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0D, 0X0E,0X10,0X11,0X13

30、,0X15,0X16,0X18,0X1A,0X1C,0X1E,0X20,0X22,0X25,0X27,0X29,0X2B, 0X2E,0X30,0X33,0X35,0X38,0X3A,0X3D,0X40,0X43,0X45,0X48,0X4C,0X4E,0X51,0X55,0X57, 0X5A,0X5D,0X60,0X63,0X66,0X69,0X6C,0X6F,0X72,0X76,0X79,0X7C,0X80;main() unsigned char a,*p;while(1) for (tmr=0;tmr3)a=0; write7279(BLINKCTL,0xff); /清除闪烁设置 di

31、splaytime();/显示时钟DaConv(0);delay10ms(100);break;case eight:*p=*p+1;if(second59|minute59)*p=0;/当 分 或 秒 显示为59时变为0if(hour23)*p=0;/当 时 显示为23时变为0 displaytime();/显示时钟delay10ms(100); DaConv(0);break;case nine: do EA=1;/开总中断 displaytime();/显示时钟 delay10ms(100); DaConv(0);while(key);break;case up:do zhenxianb

32、o();/正弦波 while(key);break;case left:do sanjiaobo();/三角波 while(key);break;case right:do juchibo();/锯齿波 while(key);break;case down:do fangbo();/方波 while(key);break; /* 定时器0中断 */void timer0() interrupt 1 /定时器0中断 static Count=0;/静态变量计数器TH0=0xdc;TL0=0x00;Count+; if(Count=100)Count=0; second=second+1; /判断

33、时间是否到 1s 了? if(second=60)second=0; minute+=1;if(minute=60)minute=0;hour+=1; if( hour=23 & minute=59 & second=59) second=0; minute=0; hour=0; /* 显示时钟 */void displaytime()/显示时钟 write7279(DECODE0+1,second/10); /显示 秒的 十位write7279(DECODE0+0,second%10); /显示 秒的 个位write7279(DECODE0+2,10); write7279(DECODE0+

34、4,minute/10); /显示 分的 十位write7279(DECODE0+3,minute%10); /显示 分的 个位write7279(DECODE0+5,10); write7279(DECODE0+7,hour/10); /显示 时的 十位write7279(DECODE0+6,hour%10); /显示 时的 个位 /* ADC数码管显示转换后的电压值数值*/void adc(void) unsigned char d0,d1,d2,d3; unsigned int a; u1=lubo();a=u1200&a14000&a40770)a=a-1380;/修正电阻值 当电阻值

35、大于14欧姆时,显示结果为测量值减去1.38欧d3=a/10000; d2=a/1000%10;d2=d2|0x80; /显示小数点d1=a/100%10;d0=a/10%10;overflow(d3,d2,d1,d0);/* 10mA 计算电阻值*/void resistance10mA() unsigned char d0,d1,d2,d3;unsigned int a; u1=lubo();a=u12; /* a=u1*4; */d3=a/1000;d2=a/100%10;d1=a/10%10;d0=a%10;overflow(d3,d2,d1,d0);/* 100mA 计算电阻值*/v

36、oid resistance100mA() unsigned char d0,d1,d2,d3; unsigned int a; u1=lubo();a=u12; /* a=u1*4; */if(a!=4092) a=a-res;d3=a/1000; d2=a/100%10;d1=a/10%10; d1=d1|0x80; /显示小数点 d0=a%10;write7279(DECODE0+7,d3);/ 第八位数码管write7279(DECODE0+6,d2);/ 第七位数码管write7279(DECODE0+5,d1); / 第六位数码管write7279(DECODE0+4,d0); /

37、 第五位数码管 elsewrite7279(DECODE0+7,1); / 超出范转显示1 write7279(DECODE0+6,0x0f);/ 第七位数码管 空write7279(DECODE0+5,0x0f); / 第六位数码管空write7279(DECODE0+4,0x0f); / 第五位数码管 空/* 溢出显示1*/void overflow(unsigned char d3,unsigned char d2,unsigned char d1,unsigned char d0) if(d3=4 & d1=9)/ 超出范转显示1 write7279(DECODE0+7,1); / 超

38、出范转显示1 write7279(DECODE0+6,0x0f);/ 第七位数码管 空write7279(DECODE0+5,0x0f); / 第六位数码管空write7279(DECODE0+4,0x0f); / 第五位数码管 空 else write7279(DECODE0+7,d3);/ 第八位数码管write7279(DECODE0+6,d2);/ 第七位数码管write7279(DECODE0+5,d1); / 第六位数码管write7279(DECODE0+4,d0); / 第五位数码管 /* 计算导线间的电阻值*/void ABC() unsigned int a; unsign

39、ed char d0,d1,d2,d3; a=lubo();a=a=3000) res=0; write7279(DECODE0+3,d3);/ 第八位数码管 write7279(DECODE0+2,d2);/ 第七位数码管 write7279(DECODE0+1,d1); / 第六位数码管 write7279(DECODE0+0,d0); / 第五位数码管 elseres=a; write7279(DECODE0+3,d3);/ 第八位数码管write7279(DECODE0+2,d2);/ 第七位数码管write7279(DECODE0+1,d1); / 第六位数码管write7279(D

40、ECODE0+0,d0); / 第五位数码管 delay10ms(100); /*A/DC1549转换子程序*unsigned int adc1549(void) uchar i; ad_cs=0; ad_clk=0; ad_dout=1; u=0; for(i=0;i10;i+) /*read data */ ad_clk=0; short_delay(); u=u*2; if (ad_dout=1) u + ; ad_clk =1 ; /上升沿接受数据short_delay(); ad_dout=1; ad_cs=1; return u; /*return ad data */ short

41、_delay(); /*滤波程序*unsigned int lubo(void)/滤波程序 unsigned char i; unsigned int a10,sum=0,value; for(i=0;i10;i+)/取值 ai=adc1549(); short_delay(); for(i=0;i10;i+) /求和 sum=sum+ai; value=sum/10;/计算平均值 return value; /*TLC5615转换子程序*void DaConv(uint DaDat)/TLC5615的驱动程序,命令:DAConv uchar i=0; DaCS=1; _nop_(); _nop_(); DIN=0; DaSCLK=0; DaCS=0; _nop_(); _nop_(); for(i=0;i12;i+) DaDat=_irol_(DaDat,1); if(DaDat&0x0400)!=0) DIN=1; else DI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论