• 单片机diy电压表头 > 要:介绍用高级语言C自动生成单片机的查表程序
  • 要:介绍用高级语言C自动生成单片机的查表程序

    免费下载 下载该文档 文档格式:DOC   更新时间:2008-04-01   下载次数:0   点击次数:1
    文档基本属性
    文档语言:Simplified Chinese
    文档格式:doc
    文档作者:Ray
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    v=sin(w)*255*Vmax*5; /*根据电压峰值计算该点的输出值*/
    k=v+0.5; /*四舍五入*/
    if(k255)k=255;
    fprinft(fp,"RETLW.%d;%.d",k,i); /*输出查表表格*/
    }
    fclose(fp);
    printf("Press any key to end ……");
    getch();
    }
    利用以上程序,计算时输入文件名为A.ASM,Vmax=3,得至的A.ASM的内容如下(共90行表格,略去其中的大部分表格):
    ;A.ASM
    SUB1 MOVWF BUF
    SUBLW .90
    BTFSS STATUS,C
    RETLW .0
    MOVLW HIGH($+4)
    MOVWF PCLATH
    MOVF BUF,W
    ADDWF PCL,F
    RETLW .0;0
    RETLW .5;1
    ……
    RETLW .90;72
    RETLW .86;73
    RETLW .81;74
    ……
    RETLW .11;88
    RETLW .5;89
    RETLW .0;90
    把以下程序插入单片机程序的适当地方,查表时中要赋以W相应的值,再CALL SUB1就可以得到sin(x)第W点上的值.整个计算约10个指令周期(如采用4MHz晶振,为10μs左右).如果采用乘除的方法计算,至少要花几百甚至上千个指令周期,而且得到的结果精度也差.
    2.2 非线性插值
    在单片机应用中会遇到非线性元件,例如热敏电阻的电阻-温度特性,断路器的保护特性等都是非线性关系.这里以断路器的保护特性为例,说明自动编程的应用.假设现在要仿真的断路器的特性为双曲线,如图1所示.
    据此,可以设延时时间与电流的关系为
    (I+I0)(t+t0)=K (1)
    由图1的三个点可以得到以下联立方程组:
    (I+20)(t+33)=K
    (I+40)(t+20)=K (2)
    (I+90)(t+10)=K
    采用迭代法解得I0=11.111 1,t0=0.222 2,K=1 033.58,代入式(1)得
    t=[1 033.58/(I+11.111 1)]-0.222 2 (3)
    现在假设在硬件线路中,电流信号是转换为电压信号经A/D后得到的,其相应点的关系为:0A→0V,100A→3V,A/D为8位,A/D参考电压为5V.转换计算首先将A/D值转换为对应的电压值,再将电压值转换为对应的电流值I,再根据式(3)求相应的延时时间T,最后将延时时间T再转换为延时的间常数T0.T0按式(4)计算:

    上一页下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • 单片机diy  lcd数字电压表头  电压表数显表头  数字电压表头  电压表头  交流电压表  高精度数字电压表  数显电压表  指针电压表