找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于51单片机的频率计设计

[复制链接]
跳转到指定楼层
楼主
原理简单,附有源程序,同时能够直接仿真看结果。可以测试三角波,正弦波等,同时测量1-100khz。

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



单片机源程序如下:
  1. /********************************************************************
  2.                             汇诚科技
  3. 网址:http://www.ourhc.cn
  4. 产品有售淘宝店:http://shop36330473.taobao.com   
  5. *********************************************************************/
  6. #include <reg52.h>
  7. #define uchar unsigned char
  8. #define uint  unsigned  int        
  9. uchar duan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};         //所需的段的位码
  10. //uchar wei[4]={0XEf,0XDf,0XBf,0X7f};                                 //位的控制端        (开发板)
  11. uchar wei[4]={0X80,0X40,0X20,0X10};                                 //位的控制端        (仿真)
  12. uint z,x,c,v, date;        //定义数据类型
  13. uint dispcount=0;
  14. uint lck=0;
  15. uint disp=0;
  16. /******************************************************************

  17. 延时函数

  18. ******************************************************************/
  19. void delay(uchar t)
  20. {
  21.   uchar i,j;
  22.    for(i=0;i<t;i++)
  23.    {
  24.             for(j=13;j>0;j--);
  25.          { ;
  26.          }
  27.    }
  28. }

  29. /**********************************************************************
  30.                 数码管动态扫描
  31. *********************************************************************/
  32. void xianshi()
  33. {
  34. /*****************数据转换*****************************/
  35.   z=date/1000;                         //求千位
  36.   x=date%1000/100;                 //求百位
  37.   c=date%100/10;                 //求十位
  38.   v=date%10;                         //求个位

  39.       P2=wei[0];
  40.           P0=duan[z];
  41.           delay(50);  
  42.             P2=wei[1];
  43.       P0=duan[x];
  44.           delay(50);  
  45.              P2=wei[2];
  46.       P0=duan[c];
  47.           delay(50);  
  48.       P2=wei[3];
  49.       P0=duan[v];
  50.           delay(50);  
  51.                                        

  52.        }

  53. /*************************************************************************
  54.                                 定时器初值1ms        
  55. **************************************************************************/
  56. void initTimer(void)
  57. {
  58. TMOD=0x0;
  59. TH0=0xe3;
  60. TL0=0xc;
  61. }

  62. /*************************************************************************
  63.                                 定时器函数        
  64. **************************************************************************/
  65. void timer0(void) interrupt 1
  66. {
  67. TH0=0xe3;
  68. TL0=0xc;
  69. lck++;
  70. if(lck==1000)
  71.        {
  72.         disp=dispcount;
  73.              lck=0;
  74.                 dispcount=0;
  75.        }

  76. }

  77. /*************************************************************************
  78.                                 中断函数        
  79. **************************************************************************/
  80. void int0(void) interrupt 0
  81. {

  82. dispcount++; //每一次中断,计数加一

  83. }

  84. /*************************************************************************
  85.                                 主函数        
  86. **************************************************************************/
  87. void main(void)
  88. {

  89. IT0=1;     //INT0下降沿中断
  90. ……………………

  91. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
trycry.rar (70.62 KB, 下载次数: 49)





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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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