单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 52|回复: 0
收起左侧

单片机数字频率计,包含源程序、仿真原理图以及整体文档

[复制链接]
哎呦喂我是谁 发表于 2018-2-13 14:22 | 显示全部楼层 |阅读模式
实训期间根据课程相关要求完成的数字频率计的设计。
利用定时/计数器完成简易频率计的设计、仿真、调试。
测量结果通过六位数码管动态显示出来。
上传文件包括仿真原理图、源程序代码、以及所有压缩文件。
望可以提供参考性意见。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):

360截图20180213135949594.jpg


单片机源程序:
  1. #include<AT89X51.H>
  2. #define uchar unsigned char
  3. uchar code dispcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  4. uchar count,num,dat1,dat2,dat3,dat4,dat5,dat6;
  5. void delayms(uchar ms)
  6. {   uchar i,j;
  7.         for(j=ms;j>0;j--)
  8.         for(i=60;i>0;i--);
  9. }
  10. void display()
  11. { P2=0xff;
  12.   P0=dispcode[dat1];
  13.   P2=0xdf;
  14.    delayms(10);        
  15.   P2=0xff;
  16.   P0=dispcode[dat2];
  17.   P2=0xef;
  18.    delayms(10);
  19.   P2=0xff;
  20.   P0=dispcode[dat3];
  21.   P2=0xf7;
  22.    delayms(10);
  23.   P2=0xff;
  24.   P0=dispcode[dat4];
  25.   P2=0xfb;
  26.    delayms(10);
  27.   P2=0xff;
  28.   P0=dispcode[dat5];
  29.   P2=0xfd;
  30.    delayms(10);
  31.   P2=0xff;
  32.   P0=dispcode[dat6];
  33.   P2=0xfe;
  34.    delayms(10);
  35. }
  36. void calc()
  37. { long frequency;
  38.   frequency=num*65536+TH0*256+TL0;
  39.   dat6=frequency%10;
  40.    frequency=frequency/10;
  41.   dat5=frequency%10;
  42.    frequency=frequency/10;
  43.   dat4=frequency%10;
  44.    frequency=frequency/10;
  45.   dat3=frequency%10;
  46.    frequency=frequency/10;
  47.   dat2=frequency%10;
  48.    frequency=frequency/10;
  49.   dat1=frequency;
  50. }
  51. main()                           
  52. {          TMOD=0x15;
  53.          TH1=(65536-50000)/256;
  54.          TL1=(65536-50000)%256;
  55.          TH0=0x00;
  56.          TL0=0x00;
  57.          IE=0x8a;
  58.      TCON=0x50;
  59. while(1)
  60. {     display();
  61.   }
  62. }
  63. void time0() interrupt 1
  64.         {
  65.          num++;
  66.         }         
  67. void time1() interrupt 3
  68. { count++;
  69.   TH1=(65536-50000)/256;
  70.   TL1=(65536-50000)%256;
  71.     if(count==20)
  72.                 {TR0=0;
  73.                  calc();
  74.                  TH0=0x00;
  75.                  TL0=0x00;
  76.                  count=0x00;
  77.                  num=0x00;
  78.                  TR0=1;
  79.                 }
  80. }

  81.                                                          
复制代码

0.png

全部资料51hei下载地址:
频率计.zip (60.4 KB, 下载次数: 4)
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛

Powered by 单片机教程网

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