收藏 分销(赏)

信号源(正弦波,三角波,锯齿波,方波,步进10HZ,0.1V).doc

上传人:xrp****65 文档编号:5963887 上传时间:2024-11-24 格式:DOC 页数:6 大小:34.50KB
下载 相关 举报
信号源(正弦波,三角波,锯齿波,方波,步进10HZ,0.1V).doc_第1页
第1页 / 共6页
信号源(正弦波,三角波,锯齿波,方波,步进10HZ,0.1V).doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
信号源(正弦波,三角波,锯齿波,方波,步进10HZ,0.1V)   2009-08-27 19:14:00|  分类: 默认分类|字号 订阅 #include <reg52.h>  #define uchar unsigned char  #define uint unsigned int  #define DAC1 P0 #define DAC2 P2 sbit rs=P3^0;  sbit rw=P3^1;  sbit en=P3^2;  sbit k1=P3^3; sbit k2=P3^4; sbit k3=P3^5; sbit k4=P3^6; uchar mm,gao,di,temp,k1num,k2num,num,Anum,Fnum;  uchar bai,shi,ge,Fbai,Fshi,Fge,date2,Ashi,Age; uchar code tbsin[]= {128,144,160,175,190,203,216,227,236,244,250,254,255,255,254,250,244,236, 227,216,203,190,175,160,144,128,112,96,81,66,53,40,29,20,12,6,2,0,0,2,6,12, 20,29,40,53,66,81,96,112};  uchar code tbsanjiao[]= {0,10.625,21.25,31.875,42.5,53.125,63.75,74.375,85,95.625,106.25, 116.875,127.5,138.125,148.75,159.375,170,180.625,191.25,201.875,212.5 ,223.125,233.75,244.375,255,255,244.375,233.75,223.125,212.5,201.875, 191.25,180.625,170,159.375,148.75,138.125,127.5,116.875,106.25,95.625,85, 74.375,63.75,53.125,42.5,31.875,21.25,10.625,0,}; uchar code tbjuchi[]= {0,5,10,16,21,26,31,36,42,47,52,57,62,68,73,78,83,88,94,99,104,109,115,120,125, 130,135,141,146,151,156,161,167,172,177,182,187,193,198,203,208,213,219,224,229, 234,239,245,250,255,}; uchar code tbfangbo[]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}; uchar code tbDAC2[]= {1,5,10,16,21,26,31,36,42,47,52,57,62,68,73,78,83,88,94,99,104,109,115,120,125, 130,135,141,146,151,156,161,167,172,177,182,187,193,198,203,208,213,219,224,229, 234,239,245,250,255,}; uchar code tbF[]= {56,74,89,102,113,123,131,138,145,151,156,161,165,169,173,176,179,182,185,187,189, 191,194,195,197,199,200,202,203,205,206,207,208,209,211,212,213,213,214,215,216}; void delay(uint z)//延时  {    uint x,y;    for(x=z;x>0;x--)       for(y=110;y>0;y--); } void write_com(uchar com)//LCD写命令 {  rs=0;     rw=0;     en=0;     P1=com;     delay(2);     en=1;     delay(2);     en=0;     } void write_date( uchar date)//LCD写数据 {  rs=1;     rw=0;     en=0;     P1=date;     delay(2);     en=1;     delay(2);     en=0; } void lcd_wr_str(uchar i,uchar *date)//写一个字符串 {  if(i==0)  {   write_com(0x80);   while(*date!='\0')    {       write_date(*date);    date++;    delay(5);    }  }  if(i==1)  {    write_com(0x80+0x40);   while(*date!='\0')   {    write_date(*date);    date++;    delay(5);    }  }  } void init()//初始化 {      TMOD=0x02;     TH0=56;     TL0=56;     EA=1;     ET0=1;     TR0=1;    en=0;  write_com(0x38);  write_com(0x06);  write_com(0x0f);     write_com(0x0c);  write_com(0x80);     write_com(0x01);     write_com(0x80+5);      delay(5);     lcd_wr_str(0,"    Press K1");     lcd_wr_str(1," Chose One Wave");    } void timer0() interrupt 1//中断 {    switch (k1num)  {   case 1:{num++;if(num==50)num=0;DAC1=tbsin[num]; }break;//正弦波   case 2:{num++;if(num==50)num=0;DAC1=tbsanjiao[num];}break;//三角波   case 3:{num++;if(num==50)num=0;DAC1=tbjuchi[num]; }break;//锯齿波   case 4:{num++;if(num==50)num=0;DAC1=tbfangbo[num]; }break;//方波  } } void sel_wave(void) {    if(k1==0)//选择波形  {     TR0=0;   delay(5);   if(k1==0)   {    while(!k1);    delay(5);    k1num++;    if(k1num==5)    {     k1num=0;    }      }  }  TR0=1; } void sel_FV()//选择调幅 调频  {   TR0=0;  if(k2==0)  {   delay(10);   if(k2==0)   { while(k2==0);    k2num++;    if(k2num==3)k2num=0;      }  }    TR0=1; } void keyadd() {  if(k3==0)  {   delay(10);   if(k3==0)   { while(!k3);    if(k2num==1)//调幅+    {             DAC2=tbDAC2[Anum];        Anum++;        if(Anum==50)Anum=0;                    write_com(0x01);                 lcd_wr_str(0,"  tbDAC2[Anum]/10 . tbDAC2[Anum]%10 V");       }    else if(k2num==2)  //调频+      {    //while(!k3);                   Fnum++;         TH0=tbF[Fnum];       if(Fnum==50)Fnum=0;                   write_com(0x01);                  lcd_wr_str(1,"    tbDAC2[Anum]/100 tbDAC2[Anum]/10%10 tbDAC2[Anum]%10 F");           }   }    } }   void keysub() {  if(k4==0)  {   delay(10);   if(k4==0)   {    if(k2num==1)//调幅--    {             DAC2=tbDAC2[Anum];                 Anum--;        if(Anum==0)Anum=50;                    write_com(0x01);                 lcd_wr_str(0,"  tbDAC2[Anum]/10 . tbDAC2[Anum]%10 V");       }    else if(k2num==2)  //调频--      {                      TH0=tbF[Fnum];               Fnum--;       if(Fnum==0)Fnum=50;                    write_com(0x01);                  lcd_wr_str(1,"    tbDAC2[Anum]/100 tbDAC2[Anum]/10%10 tbDAC2[Anum]%10 F");           }   }   while(!k4);    } } void main() {  init();     DAC2=0xff;  while(1)  {    sel_wave();       sel_FV();       keyadd();     keysub();  } }  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服