您的位置:程序门 -> 硬件/嵌入开发 -> 片机/工控



各位老师,我是新手,请教plc931直接ad转换的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


各位老师,我是新手,请教plc931直接ad转换的问题
发表于:2007-04-17 11:47:11 楼主
我在公司里做毕业设计,采用lpc931单片机,想把一个十六位的数字量用单片机的pwm功能给转换成模拟量,pwm输出采用rc滤波,但具体的c程序该怎么写呢?请指教!!
发表于:2007-04-17 11:55:251楼 得分:0
你的c程序仅能控制pwm的空占比,其它的是硬件电路的事

另外,你没给出硬件电路怎么弄,有什么限制,

所以,基本上除了给点pwm的荐意外,帮不上啥忙了...
发表于:2007-04-17 13:21:202楼 得分:0
这位老师先谢谢你了,硬件电路很简单,就是一个滤波电路,我不知道怎么把那图给传上来。
我这有一个程序,麻烦您给看一下,看有没有什么问题:
#include   <reg932.h>

sbit pleen=tcr20^7;//定义锁相环使能位

main()
{
p1m1=0x00; //设置端口模式
p1m2=0xff; //设置p16,oca为推挽输出,详见p20

tcr21=0x04; //分频操作,5分频,pll输出频率=pclk频率/4+1=0.737mhz,则输出为0.737*32=23.584
                               

tor2h=0x00; //   重装值   0x0000实现了16位的分辨率
tor2l=0x00; //   ->   pwm   周期
tcr21 ¦=0x80;//工作在pwm模式下,置位tcou2使映像寄存器的内容在下次ccu溢出时更新

ocrbh=adh; //数据为ad转换后的高8位字节
ocrbl=adl; //ad转换后的低8位字节
tcr21 ¦=0x80;

cccrb=0x02;//输出引脚状态,反向pwm,比较匹配时清零,定时器溢出时置位

pleen=1; //锁相环使能,   启动   pll
oca=1;
while(pleen==0); //   等待直到pll锁定

tcr20=0x82; //   锁相环使能,启动锁相环;设置输出模式,非对称pwm(使用pll作为时钟源)
while(1);
}


快速检索

最新资讯
热门点击