找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stc15f2k60s2单片机检测电流的频率(已经把电流信号整流成只有上部分的方波信号)

[复制链接]
跳转到指定楼层
楼主
电路原理图如下:

//************************
authour:yeah
//************************
用数码管显示频率直接上源码:
  1. #include<reg52.h>
  2. sfr         AUXR        =        0x8E        ;
  3. sfr         P0M0        =        0x93        ;
  4. sfr                P0M1        =        0x94        ;
  5. sfr                P2M0        =        0x95        ;
  6. sfr                P2M1        =        0x96        ;
  7. sbit        P00                =                P0^0;
  8. sbit        P01                =                P0^1;
  9. sbit        P02                =                P0^2;
  10. sbit        P03                =                P0^3;
  11. sbit        P04                =                P0^4;
  12. sbit        P05                =                P0^5;
  13. sbit        P06                =                P0^6;
  14. sbit        P07                =                P0^7;
  15. sbit        P10                =                P1^0;
  16. sbit        P11                =                P1^1;
  17. sbit        P12                =                P1^2;
  18. sbit        P13                =                P1^3;
  19. sbit        P14                =                P1^4;
  20. sbit        P15                =                P1^5;
  21. sbit        P16                =                P1^6;
  22. sbit        P17                =                P1^7;
  23. sbit        P20                =                P2^0;
  24. sbit        P21                =                P2^1;
  25. sbit        P22                =                P2^2;
  26. sbit        P23                =                P2^3;
  27. sbit        P24                =                P2^4;
  28. sbit        P25                =                P2^5;
  29. sbit        P26                =                P2^6;
  30. sbit        P27                =                P2^7;
  31. sbit    P33                =                P3^3;




  32.         int length=20080;          //时间长度计数值
  33.         int        hz_length;
  34.         float hz_length1,cha;
  35.         unsigned char code Tab[]={0x5F,0x06,0x9B,0x8F,0x0C6,0x0CD,0x0DD,0x07,0x0DF,0x0CF};
  36.         char        cishu=0;
  37.         int         QIAN,BAI,SHI,G;
  38.         char        BIT_COUNT=0;
  39.         int a,b,low,high;

  40. void main()
  41. {        
  42.         P2M0=0x00;
  43.         P2M1=0xFF;                 
  44.         P0M0=0x00;
  45.         P0M1=0xFF;        
  46.         P0=0x00 ;
  47.         AUXR=0x00 ;               
  48.         TMOD=0x10 ;
  49.         TH0=0xEC;
  50.         TL0=0x78;        
  51.         EA=1;
  52.         EX1=1;
  53.         IT1=1;
  54.         ET0=1;
  55.         TR0=1;
  56.         PX1=1;
  57.         P33=1;
  58.         while(1)
  59.         ;


  60. }
  61. void int1(void) interrupt 2
  62. {
  63.         if(cishu==0)
  64.         {
  65.                 TH1=0;
  66.                 TL1=0;
  67.                 TR1=1;
  68.                 cishu=1;
  69.         }
  70.         else if(cishu==1)
  71.         {
  72.                 TR1=0;
  73.                 high=TH1;
  74.                 low=TL1;
  75.                 a=low/16;
  76.                 b=low-a*16;
  77.                 length=a*16+b;
  78.                 a=high/16;
  79.                 b=high-16*a;
  80.                 length=length+b*16*16+a*16*16*16;
  81.                 cishu=0;
  82.         }
  83.         
  84. }
  85. /*
  86.                         显示
  87.                                                                         */        
  88. void Time0(void) interrupt 1
  89. {
  90.         hz_length1=(1000000.0/length);                   //转化为HZ
  91.         hz_length=1000000/length;
  92.         cha=hz_length1-length;
  93.         if (cha>=0.5)
  94.          hz_length=hz_length+1;
  95.         QIAN=(int)(hz_length/1000);
  96.         BAI=(int)((hz_length-1000*QIAN)/100);
  97.         SHI=(int)((hz_length-1000*QIAN-100*BAI)/10);
  98.         G=(int)(hz_length-1000*QIAN-100*BAI-10*SHI);         


  99.         if(BIT_COUNT==0)
  100.         {
  101.                 P04=0;
  102.                 if (QIAN==0)
  103.                 {
  104.                         P2=0x00;
  105.                         P07=0;
  106.                         BIT_COUNT=BIT_COUNT+1;
  107.                 }
  108.                 else
  109.                 {
  110.                         P2=Tab[QIAN];
  111.                         P07=1;
  112.                         BIT_COUNT=BIT_COUNT+1;
  113.                 }
  114.         }
  115.         else if(BIT_COUNT==1)
  116.         {
  117.                 P07=0;
  118.                 if((QIAN==0)&&(BAI==0))
  119.                 {
  120.                         P2=0x00;
  121.                         P06=0;
  122.                         BIT_COUNT=BIT_COUNT+1;
  123.                 }
  124.                 else
  125.                 {
  126.                         P2=Tab[BAI];
  127.                         P06=1;
  128.                         BIT_COUNT=BIT_COUNT+1;
  129.                 }
  130.         }
  131.         else if(BIT_COUNT==2)
  132.         {
  133.                         P06=0;
  134.                         P2=Tab[SHI];
  135.                         P05=1;
  136.                         BIT_COUNT=BIT_COUNT+1;

  137.         }
  138.         else if(BIT_COUNT==3)
  139.         {
  140.             BIT_COUNT=0;
  141.                 P05=0;
  142.                 P2=Tab[G];
  143.                 P04=1;
  144.         }
复制代码






原理图.doc

61.5 KB, 下载次数: 8, 下载积分: 黑币 -5

评分

参与人数 1黑币 +80 收起 理由
admin + 80 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2018-9-20 23:36 | 只看该作者
楼主能分享下原理图吗?
回复

使用道具 举报

板凳
ID:400746 发表于 2018-9-21 08:03 | 只看该作者
share already
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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