AD603的查表程序

今天做到AD603要求编写一个程序来控制增益,0~40db.可通过0~2.5v来调解。AD60330MHZ的情况下是gain=40VG+20.-500mv<=vg<=500mv.那么将Gneg调成0.5vGPOS就可在0-1v之间调整,为使调节方便选用0~2.5v再通过滤波上的滑阻分压成0-1v。任务要求0-60db,可再603后面增加个固定增益AD811,,AD811简单的说,可以加个继电器,控制其放大倍数,例如开关为闭合1,即为放大10背,开关断开即为放大1倍。那么在0-40db这段区间范围内就可以将开关断开,使用ad603 0-40db的增益。在0~2.5V这之间除两端外基本可以成线性关系。因为5615要发送10位所以需要1个字,前面还有6位的空位,就可以选其中一位作为标志位来作为继电器的状态。然后有60个状态?打表!!!先用线性关系算出全部数据,再修正下两端不正常数据即可。


Db_num040枚举

Vref=2.048

有两个问题:

1.建的是字型表,DW定义,用movc a,@a+dptr查的时候要将a*2其他和db的字节型表一样。

2.60个数据,两个公式,工作量还是有点大的。手工算虽然现实却也要吐血。想到自己电脑还有codeblock...瞬间完成。这便是下面摘得文章的介绍利用高级语言自动生成单片机查表程序。

AD603和AD811的组合成的程控增益电路,实在难调。再另作说明=。=


以下摘自:http://blog.21ic.com/user1/349/archives/2010/68498.html

单片机查表程序的自动生成技术

作者:江和

摘  要:介绍用高级语言C自动生成单片机的查表程序,用查表的方法取代繁琐复杂的数学运算,计算精度高、时间短。包括自动生成程序的原理以及D/A输出复杂波形、非线性插值的示例。

关键词:单片机 自动编程 查表 高级语言

在单片机应用系统中,常用到许多复杂的数学计算,如计算sin(x)cos(x)有效值计算非线性插值等。这些在高级语言中是简单的工作,而在单片机的汇编语言中却是非常复杂的。因为,这些运算大都要用乘除运算来进行近似运算,计算的精度很难满足要求。更难以接受的是其运算时间太长,这对于无乘除指令的单片机系统更是如此。采用查表取代复杂的计算是一个明智的选择。但是,这种查表程序表格往往都较长,通常为几十条到一二百条,如果采用手工输入不但要花费大量的时间,而且还容易出错。利用高级语言的单片机查表程序的自动生成技术可以大大减小工作量,而且不易出错。

用过

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值