找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1562|回复: 4
收起左侧

这个功率放大电路哪个地方错了?为啥不叫呢 附单片机程序

[复制链接]
ID:541231 发表于 2019-5-18 10:58 | 显示全部楼层 |阅读模式
L7[$XSWSUKRG5WS7APML`F9.png
下面是对应的程序,我完全按照贴吧上面连接的电路图。咋调都不叫,按键控制也没有显示,哪个大神说一下啊马上就要交了
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit E=P1^2; sbit RS=P1^0; sbit RW=P1^1; sbit key1=P1^3; sbit key2=P1^4; sbit key3=P1^5; sbit key4=P1^6; sbit key5=P1^7;
void lcd_init();
void write_comm(uchar);
void write_data(uchar);
void write_string(uchar,uchar,uchar *);
void lcd_delay();
void delay_ms(uint);

void delay_ms(uint i)  
{
  uint j;
  while(i--)
  {
   for(j=0; j<=74; j++)
    _nop_();
  }
}
void lcd_init()
{
lcd_delay();
write_comm(0x38);        
write_comm(0x08);            
write_comm(0x01);        
write_comm(0x06);         
write_comm(0x0c);         
write_comm(0x80);
write_comm(0x02);      
}

void write_comm(uchar i)
{
RS=0;
RW=0;
P0=i;
lcd_delay();
E=0;
lcd_delay();
E=1;
}

void write_data(uchar i)
{
  RS=1;
  RW=0;
  P0=i;
  lcd_delay();
  E=0;
  lcd_delay();
  E=1;
}

void write_string(uchar row,uchar column,uchar *dis_buffer)
{
  switch(row)      
  {
   case 1:write_comm(0x80+column);break;
   case 2:write_comm(0x80+0x40+column);break;
   default:break;
   }

  while(*dis_buffer!='\0')
  {
    write_data(*dis_buffer);
    dis_buffer++;
    column++;
   
    if(column==16)
    {
     column=0; row++; if(row>=3)
     return;
    }
    else switch(row)      
    {
      case 1:write_comm(0x80);break;
      case 2:write_comm(0x80+0x40);break;
      default:break;
    }
  }
}

void lcd_delay()
{
  uchar i;
  for(i=0;i<255;i++);
}

void main()
{
  lcd_init();
  //cntl1=1;cntl3=1; cntl2=0;cntl4=0;cntl5=1;cntl6=0;
  write_string(1,0,"Gain:");
  while(1)
  {
    if(key1==0)
    {
      delay_ms(15);
      if(key1==0)
      {
        while(!key1);
        P2=0x02;
        write_string(2,0,"0dB");
            }
        }
    if(key2==0)
     {
     delay_ms(15);
     if(key2==0)
     {
       while(!key2);
       P2=0x08;
       write_string(2,0,"10dB");
     }
    }

    if(key3==0)
    {
     delay_ms(15);
     if(key3==0)
     {
       while(!key3); P2=0x1A;
       write_string(2,0,"20dB");
     }
    }
    if(key4==0)
    {
     delay_ms(15);
     if(key4==0)
     {
     while(!key4); P2=0x51;
     write_string(2,0,"30dB");
     }
    }
    if(key5==0)
    {
     delay_ms(15);
     if(key5==0)
     {
      while(!key5);
      P2=0xff;
      write_string(2,0,"40dB");
     }
    }
  }
}

回复

使用道具 举报

ID:415123 发表于 2019-5-18 18:40 | 显示全部楼层
问题出在0832后面的运放上,应该使用跨阻电路,否则后极电容上没有变化电压。也就是你需要使用pwm或高低电压交替,后面的喇叭才会响
回复

使用道具 举报

ID:475247 发表于 2019-5-18 19:45 | 显示全部楼层
来51学习 发表于 2019-5-18 17:58
1、要让人帮你,怎么也要把功能要求说明白吧
2、把你的程序设计思路也要说一下

一看就了解的事,多说无益!
回复

使用道具 举报

ID:541231 发表于 2019-5-19 14:14 | 显示全部楼层
honey_teck 发表于 2019-5-18 18:40
问题出在0832后面的运放上,应该使用跨阻电路,否则后极电容上没有变化电压。也就是你需要使用pwm或高低电 ...

就是在0832后面的运放上加个跨组电路吗
回复

使用道具 举报

ID:541231 发表于 2019-5-19 14:58 | 显示全部楼层
求大神啊!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表