久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

交流信號測量儀~~實物、代碼~~

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年06月16日   【字體:

本作品為匆忙制作,考試逼近,為了應付競賽,用了幾天時間,整出這個一個東西交差,程序算法有待提高

如有朋友做AD方面的東西,相互交流


完整的源碼下載:http://www.zg4o1577.cn/f/jiaoliu.rar
 以下是部分代碼:

#include<reg52.h>            
#include<intrins.h>    
#include<math.h>      
#define nop() _nop_()

#define N0 65336
#define uint unsigned int
#define uchar unsigned char  
#define ulong unsigned long

uchar code xian[]={"Welcome"};
uchar code xian1[]={"Designed by WJJ"};
uchar tab[7];
uchar tab2[7];
uchar tab3[5];
uchar tab4[8]={"        "};

sbit EOC=P2^6;
sbit OE=P2^5;
sbit START=P2^7;
sbit lcdrs=P3^5;
sbit lcdrw=P3^6;
sbit lcden=P3^7;

uint vmax=0; //  電壓測量運算變量
uint count1;  //電壓測量控制變量
uint count;   //頻率測量控制變量
ulong mt=0;    //  頻率測量運算變量
ulong vs=0;
ulong t;


bit flag=0;    //是否顯示標志位  對頻率


void  DelayNS(uint dly)  
{ 
   uint i;
   for(; dly>0; dly--)
      for(i=0; i<100; i++);
}

bit lcd_busy()
{
 bit result;
 lcdrw = 1;
 lcdrs = 0;
 lcden = 1;
 nop();nop();nop();nop();
 result = (bit)(P1&0x80);
 lcden = 0;
 return(result);
}

void write_com(uchar com)
{
    while(lcd_busy());      //LCD忙等待
 lcdrs = 0;
 lcdrw = 0;
 P1 = com;
 DelayNS(5);
 lcden = 1;
 DelayNS(5);
 lcden = 0;
}
void write_data(uchar date)
{
    while(lcd_busy());      //LCD忙等待
 lcdrs = 1;
 lcdrw = 0;
 P1 = date;
 DelayNS(5);
 lcden = 1;
 DelayNS(5);
 lcden = 0;
}
void lcd_init()
{
 lcden = 0;
 write_com(0x38);
 DelayNS(5);
 write_com(0x0c);
 DelayNS(5);
 write_com(0x04);
 DelayNS(5);
 write_com(0x01);
}
void timer_init()  
{
 EA = 1;

 EX0=1;
 IT0=1;

 TMOD = 0x11;

 TH0=0;
 TL0=0;
}
void main()
{
    uint i;
 ulong v=0;
 ulong av;
 uint hz;
    bit flag=0;
 ulong t1=0,t2=0;
 lcd_init();
 write_com(0x84);
 for(i=0;i<7;i++)
 {
  write_data(xian[i]);
  DelayNS(2);  
 }
 write_com(0x80+0x40);
 for(i=0;i<15;i++)
 {
  write_data(xian1[i]);
  DelayNS(2);  
 }
 DelayNS(1000); 
 DelayNS(1000);  
 timer_init();
 write_com(0x01);
 while(1)
    {
  if(count==40)
  {
   count=0;
      EX0=0;
   ET0=0;
   TR0=0;

   t1=100000000/mt;
   tab[0]=t1/1000+0x30;
   tab[1]=t1%1000/100+0x30;
   tab[2]=0x2e;
   tab[3]=t1%1000%100/10+0x30;
   tab[4]=t1%1000%100%10+0x30;        //周期顯示十位
   tab[5]=0x48;
         tab[6]=0x7a;
   hz=t1/100;


   t=1000000/(50*hz)+100;


      TH1=65536-t/256;
            TL1=65535-t%256;
   t2=mt/10;
   tab2[0]=t2/1000+0x30;
   tab2[1]=t2%1000/100+0x30;
   tab2[2]=0x2e;
   tab2[3]=t2%1000%100/10+0x30;
   tab2[4]=t2%1000%100%10+0x30;
      tab2[5]=0x6d;
         tab2[6]=0x73;    
   ET1=1;
   TR1=1;
  }
     if(count1==80)     
  {
   ET1 = 0;
   TR1 = 0;
   count1=0;

            v=(vmax+1)*196/100;
   tab3[4]=0x56;
   tab3[3]=(v%100)%10+0x30;
   tab3[2]=(v%100)/10+0x30; 
   tab3[1]=0x2e;
   tab3[0]=v/100+0x30;

   vs=vs*0.0195*0.0195;
   av=(sqrt(vs/50))*100;

   tab4[4]=0x56;
   tab4[3]=(av%100)%10+0x30;
   tab4[2]=(av%100)/10+0x30; 
   tab4[1]=0x2e;
   tab4[0]=av/100+0x30;
   if((v/sqrt(2)-av)>25)
   {
    tab4[7]=0x32;
   }
   else
   {
    tab4[7]=0x31;
   }
   av=0;
   flag=1;
  }
  if(flag==1)
  {
   flag=0;

   write_com(0x80);
   for(i=0;i<7;i++)
   {
    write_data(tab[i]);
    DelayNS(2); 
   }


   write_com(0x80+0x09);
   for(i=0;i<7;i++)
   {
    write_data(tab2[i]);
    DelayNS(2); 
   }

      write_com(0x80+0x40);
   for(i=0;i<5;i++)
   {
    write_data(tab3[i]);
    DelayNS(20);
   }

      write_com(0x80+0x47);
   for(i=0;i<8;i++)
   {
    write_data(tab4[i]);
    DelayNS(20);
   }
   //write_com(0x80+0x54);
   //write_data(tab4[7]);
   //DelayNS(20);
   vmax=0;
   EX0=1;
  }
 }
}


void ex0() interrupt 0
{ 
 count++;
 if(count%2==0)
 {
     ET0=1;
  TR0=1;
  TH0=0;
     TL0=0;
 }
 else
 {
     ET0=0;
  TR0=0;
  mt=TH0*256+TL0; 
 }
}

void timer0() interrupt 1 //測頻率時計時
{  
    TH0=0;
    TL0=0;
}

void  timer1() interrupt 3 //控制AD轉換
{
 uint data1;
 count1++;
 OE = 0;
 START = 0;
 _nop_();
 START = 1;
 _nop_(); 
 START = 0; 
 while(EOC==0); 
 OE = 1; 
 _nop_();
 data1 = P0;
 _nop_();
 OE = 0;
 if(data1>vmax)
 {
  vmax=data1;
 }
 if(count1<=52)
 {
  vs=vs+data1*data1;
 }
    TH1=65536-t/256;
    TL1=65535-t%256;
}
關閉窗口

相關文章

主站蜘蛛池模板: 日韩一级 | 韩日一区二区 | 麻豆精品国产91久久久久久 | 精品久久久久久亚洲精品 | 久久久国产一区二区三区 | 久久伦理中文字幕 | 成年网站在线观看 | 男女羞羞视频在线免费观看 | 亚洲综合色丁香婷婷六月图片 | 亚洲精品久久久久久首妖 | 中文字幕一区二区三区四区五区 | 91综合网 | 亚洲国产网 | 一区二区国产在线 | 国产精品综合久久 | 国产人成精品一区二区三 | 欧美久久精品一级黑人c片 91免费在线视频 | 国产高清在线精品 | 亚洲第一区久久 | 国产九九精品视频 | 午夜在线免费观看视频 | 国产综合在线视频 | 欧美一区二区成人 | 黄色视频a级毛片 | 91久久精品国产91久久 | 男人的天堂中文字幕 | 一区二区三区四区免费观看 | 欧美一级毛片免费观看 | 亚洲欧美中文日韩在线 | a在线免费观看 | 91社区在线观看 | 中日av | 国产精品一区二区久久 | 午夜天堂| 日韩毛片在线视频 | 91精品久久久久久综合五月天 | 国产91在线精品 | 免费一级黄色 | 精品久久久久久一区二区 | 狠狠操电影 | 亚洲精品福利视频 |