找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1905|回复: 0
打印 上一主题 下一主题
收起左侧

简易频率计

[复制链接]
跳转到指定楼层
楼主
ID:315336 发表于 2018-4-24 14:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
功能:
1.启动测频按钮之前,显示88888888;
2.启动测频按钮后,测量 P1.0输出方波的频率。产生的频率是1000;
3.测量时间10S,测量期间显示66666666.方法可以是10S内计数,计数值除以10;

4.10S后显示测频值。
刚做出来不久,因为使用开发板做的但是仿真就不行了,求各位大佬指教。

#include<reg52.h>                       
#include<intrins.h>
#define uint unsigned int                                               
#define uchar unsigned char

sbit LS138A=P2^2;   
sbit LS138B=P2^3;
sbit LS138C=P2^4;
sbit Pulse=P1^0;
sbit key =P1^1;


uint state=0,times=0;
long int mn=0;                  
uint LedOut[8];
uchar code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   //′˱íÎa LED μÄ×ÖÄ£, 12òõêyÂë1ü 0-9  

void display(long int mn);     //êyÂë1üÏÔê¾oˉêy//
uchar Key_Scan();              //é¨Ãè¼üÅì//
void display_Delay1ms(uchar );            //ÏÔê¾oˉêy//

/*******************************************************************************
* oˉ êy Ãû         :uchar Key_Scan
* oˉêy1|Äü                   :é¨Ãè¼üÅì
* êä    èë         : ÎT
* êä    3ö         : ÎT
*******************************************************************************/
uchar Key_Scan()       
{
  uchar keyValue = 0 , m;  
        if (key!= 0xFF)               
        {
                display_Delay1ms(10);
                if (key!= 0xFF)       
                {
                        keyValue =key;
                        m = 0;
                        while ((m<50) && (key!= 0xFF))       
                        {
                                display_Delay1ms(10);
                                m++;
                        }
                }
        }
        return keyValue;   
}
          
/*******************************************************************************
* oˉ êy Ãû         : display(long int mn)
* oˉêy1|Äü                   : ÏÔê¾êyÂë1ü
* êä    èë         : ÎT
* êä    3ö         : ÎT
*******************************************************************************/
void display(long int mn)
{
        uchar i;
        for( i=0; i<8; i++)
        {         
                switch(i)                                          
            {            
                        case 0:LS138C=0; LS138B=0; LS138A=0; P0 = Disp_Tab[(mn / 10000000)]; break;         
                case 1:LS138C=0; LS138B=0; LS138A=1; P0 = Disp_Tab[(mn % 10000000) / 1000000]; break;                    
                case 2:LS138C=0; LS138B=1; LS138A=0; P0 = Disp_Tab[(mn % 1000000) / 100000]; break;
                case 3:LS138C=0; LS138B=1; LS138A=1; P0 = Disp_Tab[(mn % 100000) / 10000]; break;
                        case 4:LS138C=1; LS138B=0; LS138A=0; P0 = Disp_Tab[(mn % 10000) / 1000]; break;
                    case 5:LS138C=1; LS138B=0; LS138A=1; P0 = Disp_Tab[(mn % 1000) / 100]; break;
                    case 6:LS138C=1; LS138B=1; LS138A=0; P0 = Disp_Tab[(mn % 100) / 10]; break;
                         case 7:LS138C=1; LS138B=1; LS138A=1; P0 = Disp_Tab[mn % 10]; break;          
            }
                display_Delay1ms(1);
                P0 = 0x00;          // Ïûó°
        }
}



/*******************************************************************************
* oˉ êy Ãû         : display_Delay1ms
* oˉêy1|Äü                   : Ñóê±oˉêy
* êä    èë         : ÎT
* êä    3ö         : ÎT
*******************************************************************************/
void display_Delay1ms(uchar t)               

{
        uchar x;
        for(t;t > 0;t--)
        {
          for(x=120; x>0; x--);
        }

}


/*******************************************************************************
* oˉ êy Ãû         : timer1 () interrupt 3
* oˉêy1|Äü                   : T1ÖD¶Ïoˉêy
* êä    èë         : ÎT
* êä    3ö         : ÎT
*******************************************************************************/
void timer1 () interrupt 3
{
        TH1=0x3e; //50ms
        TL1=0x12;
        times++;
}

/*******************************************************************************
* oˉ êy Ãû         : inter0() interrupt 0
* oˉêy1|Äü                   : ía2¿ÖD¶Ïoˉêy
* êä    èë         : ÎT
* êä    3ö         : ÎT
*******************************************************************************/
void inter0() interrupt 0
{
        mn++;
}


/*******************************************************************************
* oˉ êy Ãû         : timer0 () interrupt 1
* oˉêy1|Äü                   : T0ÖD¶Ïoˉêy
* êä    èë         : ÎT
* êä    3ö         : ÎT
*******************************************************************************/
void timer0 () interrupt 1
{
        TH0=0xec;
        TL0=0xa2;
        Pulse=~Pulse;
}
/*******************************************************************************
* oˉ êy Ãû         : main
* oˉêy1|Äü                   : Ö÷oˉêy
*******************************************************************************/
void main()
{
        TMOD=0x11;          //Ñ¡óüÆêyÄ£ê½oí Ñ¡óÃÄ£ê½1
        TH0=0xec;           //¸ø¼ÆêyÆ÷×°3õÖμ
        TL0=0xa2;
        TH1=0x3e;
        TL1=0x12;      //50ms
        ET0=1;                   //ÔêDíT0ÖD¶Ï
    ET1=1;                   //ÔêDíT1ÖD¶Ï
        EA=1;                  //¿a·¢ËùóDÖD¶Ï
        EX0=1;                   //ÔêDíía2¿ÖD¶Ï0ÖD¶Ï
        IT0=1;                   //μçƽ′¥·¢
        Pulse=1;
        state=0;
        while(1)
        {   
                if(key!=1)           
                {
                        times=0;
                        mn=0;
                        TR0=1;
                        TR1=1;
                    while(times<200)
                   {
                        display(66666666);       
               }
                        TR0=0;
                        TR1=0;
                        state=2;
                 }
                if(state==2)
                display(mn/10);       
                else
                display(88888888);                               
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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