经典 函数信号发生器

经典 函数信号发生器

可生成三角波,方波,正弦波。同时还可以调节频率和幅度。

超经典,学电子技术的必须要会的一个电路。


/*****************************************************************************
*    频率计程序
*    作者 :张建高
*    Email:9902013327@163.com
*    单片机采用AT89S52,晶振频率为:12.00MHz。
/******************************************************************************/
#include <AT89X51.H>

unsigned char code SEG_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
                          0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//数字代码段
unsigned char code DS_Tab[]={0x01,0x02,0x04,0x08};//位选代码

unsigned char display_buf[]={0,0,0,0};//要显示的数值

unsigned char digit;

sfr SEG_OUT = 0x80;
sfr DS_OUT  = 0xa0;

unsigned char temp[4];
unsigned char T0count;
unsigned char timecount;
unsigned long x;
bit flag; //定义变量

void main(void)
{
  unsigned char i;
  TMOD=0x15;
  TH0=0;
  TL0=0;
  TH1=(65536-4000)/256;
  TL1=(65536-4000)%256;
  TR1=1;
  TR0=1;
  ET0=1;
  ET1=1;
  EA=1;//开中断
  
while(1)
   {
     if(flag==1)
       {
         flag=0;
         x=T0count*65536+TH0*256+TL0;//频率转换为数值
         for(i=0;i<4;i++)
           {
             temp =0;
           }
         i=0;
         while(x/10)//数值赋给那一位
           {
             temp=x%10;
             x=x/10;
             i++;
           }
         temp=x;
         for(i=0;i<4;i++)
           {
             display_buf=temp;
           }
         timecount=0;
         T0count=0;
         TH0=0;
         TL0=0;
         TR0=1;//把T0计数器清0
       }
   }
}

void time0(void) interrupt 1 using 1
{
  T0count++;
}

void t1(void) interrupt 3 using 0
{
  TH1=(65536-4000)/256;//产生一秒的定时
  TL1=(65536-4000)%256;
  timecount++;
  if(timecount==250)
    {
      TR0=0;
      timecount=0;
      flag=1;
    }
  SEG_OUT = SEG_Tab[display_buf[digit]];//P0口的数据显示
  DS_OUT = DS_Tab[digit];//P2口的位选
  if(++digit > 3)
    digit = 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值