3188|3

35

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

波形发生器只出正弦波不知道是键盘还是那得错误 [复制链接]

#include
#include
#include
#define  dac0832 XBYTE[0x7fff]
#define uchar unsigned char
uchar code to_sin[256]
uchar b=0,c=0,d=0,e=0,i,k,tl,th;
int bw=10;//bw为频率百位变量
int t,f,m,choice=1,zk=50;// t为时间变量,f为频率变量,choice为波形类型选择变量,zk为占空比变量,默认占空比为50%
void delay10ms() //延时10ms程序
/*1键选择发波类型,1为正弦波,2为三角波,3为方波*/
void key1(void)
/*百位频率调整+*/
void key2(void)

/*百位频率调整-*/
void key3(void)
/*方波占空比加大*/
void key4(void)
/*方波占空比减小*/
void key5(void)
void judge(void)
{
   {
         unsigned   char X;
P1=0xff;
if(P1!=0xff)     //判断是否有键按下
{delay10ms();    //延时,软件去干扰
  if(P1!=0xff)   //确认按键按下X = P1;

  {       X=P1  ;
        switch (X)   //判断键值(那一个键按下)
{case 0xfe: key1(); break;
      case 0xfd: key2(); break; //对键值赋值
case 0xfb: key3(); break;
        case 0xf7: key4(); break;
        case 0xef: key5(); break;
} }  
}}
}
void main(void)
{
TMOD=0X01;
TR0=1;
th=-t/256;
tl=-t%256;
TH0=th;
TL0=tl;
ET0=1;
EA=1;
while(1)
  {jisuan();
for(i=0;i<=50;i++);
   judge();
  } }
void time0_int(void) interrupt 1   //中断服务程序
{
TR0=0;
if(choice==1)
    {  dac0832=to_sin;             //正弦波
    b++; }
else if(choice==2)                //三角波
      {if(c<=128) dac0832=c;
       else  dac0832=255-c;
         c++;
         }
else if(choice==3)                // 方波
      {k=zk*256/100;
       d++;
       if(d<=k) dac0832=0x00;
       else  dac0832=0xff;}
else if(choice==4)                //锯齿波
      {if(e<=255)dac0832=255-e;
       else  dac0832=0;
         e++;
         }
TH0=th;
TL0=tl;
TR0=1;
}
此帖出自单片机论坛

最新回复

int t,f,m,choice=1,zk=50;// 然后你就没有其他地方对choice赋值啊。。。 可以这样 void key1(void) {     choice=1; } 另外,确认下中断函数是否可以进入,按键是否被读取到。  详情 回复 发表于 2009-4-20 17:47
点赞 关注
 

回复
举报

35

帖子

0

TA的资源

纯净的硅(初级)

沙发
 

Re: [求助] 波形发生器只出正弦波不知道是键盘还是那得错误

只出正弦波;是不是for(i=0;i<=50;i++);有错误,P0口跟0832连接,P1接键盘,P27CS单片机WR接0832WR1,0832为单缓冲方式,
此帖出自单片机论坛
 
 

回复

35

帖子

0

TA的资源

纯净的硅(初级)

板凳
 

Re: [求助] 波形发生器只出正弦波不知道是键盘还是那得错误

:'( 这都让我郁闷了,只出正弦波,还找不到错误
此帖出自单片机论坛
 
 
 

回复

477

帖子

0

TA的资源

五彩晶圆(高级)

4
 

Re: [求助] 波形发生器只出正弦波不知道是键盘还是那得错误

int t,f,m,choice=1,zk=50;//
然后你就没有其他地方对choice赋值啊。。。
可以这样
void key1(void)
{
    choice=1;
}
另外,确认下中断函数是否可以进入,按键是否被读取到。
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表