打印
[MSP430]

急求

[复制链接]
1235|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tiange1991|  楼主 | 2014-5-26 20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用MSP430单片机实现数字带通滤波器,包括AD和DA模块,用proteus软件仿真,真的很急,求大婶们指导,给一些可以参考的程序。

相关帖子

沙发
tiange1991|  楼主 | 2014-5-26 20:06 | 只看该作者
对于单片机几乎没有接触过,但是现在都要交毕设了,还没有做出仿真结果啊,希望给出完整的程序。

使用特权

评论回复
板凳
flame123| | 2014-5-26 21:14 | 只看该作者
不是说你,这都快毕业了你才来找毕业设计,坛子里的人绝对不会帮你的,虽然毕业设计也就是那么回事,但是像你这种都快毕业答辩了还来找毕业设计的人,说句话:留校再来一年吧。

使用特权

评论回复
地板
tiange1991|  楼主 | 2014-5-26 21:42 | 只看该作者
flame123 发表于 2014-5-26 21:14
不是说你,这都快毕业了你才来找毕业设计,坛子里的人绝对不会帮你的,虽然毕业设计也就是那么回事,但是像 ...

。。。。还能不能再治疗一下啊

使用特权

评论回复
5
flame123| | 2014-5-27 21:54 | 只看该作者
tiange1991 发表于 2014-5-26 21:42
。。。。还能不能再治疗一下啊

呵呵,确实应该治疗一下,在学校治疗比来社会上治疗的代价要小很多,你说是不是~!!!

使用特权

评论回复
6
tiange1991|  楼主 | 2014-5-27 23:19 | 只看该作者
flame123 发表于 2014-5-27 21:54
呵呵,确实应该治疗一下,在学校治疗比来社会上治疗的代价要小很多,你说是不是~!!! ...

。。。。能不能帮忙治疗一下。
#include <msp430f249.h>
#include <stdio.h>
int h[40]={0,1,-2,1,-12,-30,79,66,-172,-52,145,2,176,-61,-800,398,1465,-1000,-1793,1587,
           1587,-1793,-1000,1465,398,-800,-61,176,2,145,-52,-172,66,79,-30,-12,1,-2,1,0}; //  *10000
int yn=0,input_sample,output_sample;
int dly[40];
void main()
{
  WDTCTL=WDTPW+WDTHOLD;   //停止看门狗
  ADC12IE=0x01;         //使能中断
  P6SEL |=0x01;           //I/O口设置为AD功能
  P4DIR=0xff;
  ADC12CTL0=ADC12ON+REFON+REF2_5V;      //ADC12工作,使用内部参考电压2.5V
  ADC12CTL1=SHP;                         //使用采样定时器,采用ADC12OSC时钟源
  ADC12MCTL0=SREF_1;
  //for(i=0;i<0x3600;i++) {}             //延时等待参考电压建立
  ADC12CTL0|=ENC;                      //允许转换
  while(1)
  {
    ADC12CTL0 |=ADC12SC;    //启动转换
    while((ADC12IFG&BIT0)==0);    //  等待转换结束
    input_sample=ADC12MEM0;
    int j;                  //滤波算法处理
    dly[0]=input_sample;
    yn=0;
    for(j=0;j<40;j++)
      yn+=(h[j]*dly[j]);
    for (j=39;j>0;j--)
      dly[j]=dly[j-1];
    output_sample=yn/10000;     //滤波结果
    P4OUT = output_sample;                //外接的DAC0832
   
  }
}
我再proteus中仿真出来不对

使用特权

评论回复
7
tiange1991|  楼主 | 2014-5-27 23:21 | 只看该作者
tiange1991 发表于 2014-5-27 23:19
。。。。能不能帮忙治疗一下。
#include
#include

AD是用的MSP430自带的ADC模块,DA是使用的DAC0832,仿真出来不对,程序哪里不对啊,大神,指导一下吧。

使用特权

评论回复
8
tiange1991|  楼主 | 2014-5-28 16:53 | 只看该作者
现在改成了下面的这个程序了,优点正弦波的样子了,但是还是差好多。
#include <msp430f249.h>
#include <stdio.h>
int h[]={0,8,-11,7,-82,-199,518,430,-1127,-338,952,13,1156,-401,-5245,2611,9603,-6554,-11750,
        10401,10401,-11750,-6554,9603,2611,-5245,-401,1156,13,952,-338,-1127,430,518,-199,-82,7,-11,8,0};
long yn=0,input_sample,output_sample;
long dly[40];
void main()
{
  WDTCTL=WDTPW+WDTHOLD;   //停止看门狗
  ADC12IE=0x01;         //使能中断
  P6SEL |=0x01;           //I/O口设置为AD功能
  P4DIR=0xff;
  ADC12CTL0=ADC12ON+REFON+SHT0_0;      //ADC12工作,使用内部参考电压2.5V
  ADC12CTL1=SHP+ADC12SSEL_1;                        //使用采样定时器,采用ADC12OSC时钟源

  ADC12MCTL0=SREF_5;
  //for(i=0;i<0x3600;i++) {}             //延时等待参考电压建立
  ADC12CTL0|=ENC;                      //允许转换

  while(1)
  {
     ADC12CTL0 |=ADC12SC;    //启动转换
    while((ADC12IFG&BIT0)==0);    //  等待转换结束
    input_sample=ADC12MEM0;
    int j;                  //滤波算法处理
    dly[0]=input_sample;
   
    yn=0;
    for(j=0;j<40;j++)
      yn+=(h[j]*dly[j]);
    for (j=39;j>0;j--)
      dly[j]=dly[j-1];
    output_sample=yn;     //滤波结果
    P4OUT=(output_sample>>16);
  }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

0

粉丝