找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 54582|回复: 103
收起左侧

基于51单片机的数字频率计(电路图+pcb+论文+仿真+源码)

  [复制链接]
ID:196106 发表于 2018-5-2 13:26 | 显示全部楼层 |阅读模式
基于51单片机的数字频率计
设计的频率计范围能够达到1HZ-1MHZ(实际上51单片机达不到这个范围,不要在实验环境下进行),这个是课设来着,用Proteus仿真实现的,给有需要的同学参考一下

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载).
1.png
Altium Designer画的数字频率计电路原理图和PCB图如下:(51hei附件中可下载工程文件)
0.png 0.png


0.png

论文内容截图:
0.jpg 0.jpg

单片机源码:
  1. #include<reg51.h>
  2. #include<stdio.h>
  3. #include<intrins.h>
  4. typedef unsigned char uchar;
  5. typedef unsigned int  uint;
  6. sbit RS=P2^5;
  7. sbit RW=P2^6;
  8. sbit E=P2^7;
  9. sbit CLK=P2^0;
  10. sbit DO=P2^1;
  11. sbit DI=P2^1;
  12. sbit CS=P2^2;
  13. sbit CLR=P3^0;
  14. sbit GATE=P3^1;
  15. sbit K1=P3^7;
  16. uint  num=0;
  17. uint  c=0;
  18. float d=0;
  19. uchar e=1,f=1;
  20. unsigned long int aaa=0,bbb=0;
  21. uchar LCD_wait()//LCD1602内部等待函数
  22. {
  23.         RS=0;
  24.         RW=1;        
  25.         _nop_();
  26.         E=1;
  27.         _nop_();
  28.         E=0;
  29.         return P0;               
  30. }
  31. void LCD_write(bit aa,uchar bb)//向LCD写入命令或数据
  32. {
  33.         E=0;
  34.         RS=aa;
  35.         RW=0;               
  36.         _nop_();
  37.         P0=bb;        
  38.         _nop_();//注意顺序
  39.         E=1;               
  40.         _nop_();//注意顺序
  41.         E=0;               
  42.         _nop_();
  43.         LCD_wait();//LCD1602内部等待函数        
  44. }
  45. void LCD_display(uchar temp)
  46. {
  47.         LCD_write(0,0x08|temp);        
  48. }
  49. void LCD_input(uchar cc)
  50. {
  51.         LCD_write(0,0x04|cc);
  52. }
  53. void LCD_init()//初始化LCD
  54. {
  55.         //RW=0;
  56.         LCD_write(0,0x38);//8位数据端口,2行显示,5*7点阵
  57.         LCD_write(0,0x38);
  58.         
  59.         LCD_write(0,0x0C);//开启显示, 无光标
  60.         LCD_write(0,0x01);//清屏
  61.         LCD_write(0,0x0C);//AC递增,画面不动
  62.         
  63. }
  64. void LCD_sfj1(uchar x,uchar y)
  65. {
  66.         if(y==0)
  67.                 LCD_write(0,0x80|x);
  68.         if(y==1)
  69.                 LCD_write(0,0x80|(x-0x40));
  70. }
  71. void LCD_print(uchar *p)
  72. {
  73.         while(*p!='\0')
  74.         {
  75.                 LCD_write(1,*p);
  76.                 p++;
  77.         }
  78. }
  79. void delay1(uchar x)//ms延时子函数
  80. {                    
  81.     uchar i;
  82.     for(i=0;i<x;i++); //延时,脉冲一位持续的时间
  83. }
  84. uchar start(bit temp) //把模拟电压值转换成8位二进制数并返回,dat为通道选择。
  85. {         
  86.         uchar i,aa=0;
  87.     CS=0;
  88.     DO=0;//片选,DO为高阻态
  89.     delay1(10);
  90.     CLK=0;
  91.     delay1(2);
  92.     DI=1;         
  93.     CLK=1;         
  94.     delay1(2);//第一个脉冲,起始位
  95.     CLK=0;                                          
  96.     delay1(2);                                          
  97.     DI=1;                                          
  98.     CLK=1;                                          
  99.     delay1(2);//第二个脉冲,DI=1表示双通道单极性输入         
  100.     CLK=0;                                                                                 
  101.     delay1(2);                                                                                 
  102.     DI=temp;        /*******************************/                                                                                         
  103.     CLK=1;
  104.     delay1(2);//第三个脉冲,DI=1表示选择通道1(CH2)         
  105.     DI=0;                                                                                   
  106.     DO=1;//DI转为高阻态,DO脱离高阻态为输出数据作准备
  107.     CLK=1;                                                                                                                                                                                    
  108.     delay1(2);                                                                           
  109.     CLK=0;                                                                           
  110.     delay1(2);//经实验,这里加一个脉冲AD便能正确读出数据,
  111.         //不加的话读出的数据少一位(最低位d0读不出)                  
  112.         for(i=0;i<8;i++)                                                                          
  113.     {
  114.             CLK=1;
  115.                delay1(2);
  116.                CLK=0;
  117.                delay1(2);
  118.                aa=(aa<<1)|DO;//在每个脉冲的下降沿DO输出一位数据,最终ch为8位二进制数
  119.         }
  120.     CS=1;//取消片选,一个转换周期结束
  121.     return(aa);//把转换结果返回
  122. }
  123. uint fenjie(bit cc)
  124. {
  125.         uchar dd;
  126.         uint  ee;
  127.         dd=start(cc);
  128.         ee=(uint)dd*100/51; //51是由5/255的倒数得来的,5是5V,255是8位AD。
  129.         return(ee);
  130. }        
  131. void delay2(uint z)//按键消抖
  132. {
  133.         uint x;
  134.         uchar y;
  135.         for(x=0;x<z;x++)
  136.                 for(y=0;y<110;y++);
  137. }
  138. void delay3()//1s延时子函数            
  139. {
  140.         uchar h,i,j,k;
  141.         for(h=5;h>0;h--)
  142.                 for(i=4;i>0;i--)
  143.                         for(j=116;j>0;j--)
  144.                                 for(k=214;k>0;k--);
  145. }
复制代码
碍于篇幅,上述只有部分代码,其他在压缩包中

论文内容预览:http://www.51hei.com/bbs/dpj-115892-1.html
全部资料51hei下载地址:
基于51单片机数字频率计的设计.zip (984.6 KB, 下载次数: 2082)


评分

参与人数 5黑币 +77 收起 理由
qq17620639340 + 12
326636983 + 5 很给力!
ls13579 + 5 牛!
249796790 + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:711821 发表于 2024-9-11 22:27 | 显示全部楼层
很强 打开了新道路
回复

使用道具 举报

ID:1125082 发表于 2024-6-13 17:21 | 显示全部楼层
你好,怎么验证这个数字频率计
回复

使用道具 举报

ID:884711 发表于 2024-5-2 20:45 | 显示全部楼层
感谢楼主分享,学习了!
回复

使用道具 举报

ID:1119046 发表于 2024-5-1 20:12 | 显示全部楼层
这个是等精度数字频率计吗??
回复

使用道具 举报

ID:1061150 发表于 2023-1-13 23:05 | 显示全部楼层
感谢楼主分享,非常的详细、实用。
回复

使用道具 举报

ID:1055120 发表于 2022-12-4 19:12 | 显示全部楼层
你好,我看了你的数字频率计,在原理图转换成PCB的时候出现了线程出错的情况,不知道是什么原因
回复

使用道具 举报

ID:69600 发表于 2022-4-11 13:13 来自触屏版 | 显示全部楼层
很给力,慢慢研究,谢谢分享
回复

使用道具 举报

ID:972281 发表于 2021-10-15 14:21 | 显示全部楼层
实用的,可以平常做实验用
回复

使用道具 举报

ID:972281 发表于 2021-10-15 14:19 | 显示全部楼层
作者做的新手小白都可以看得懂
回复

使用道具 举报

ID:65369 发表于 2021-10-9 09:08 | 显示全部楼层
做得不错的工具
回复

使用道具 举报

ID:895892 发表于 2021-3-24 14:21 | 显示全部楼层
樓主好厲害! 要收藏
回复

使用道具 举报

ID:895919 发表于 2021-3-24 11:44 | 显示全部楼层
怎么修改频率计上限为1m,2m,3m以上或者改为500k
回复

使用道具 举报

ID:477512 发表于 2020-11-2 19:07 | 显示全部楼层
a1159900630 发表于 2020-10-24 17:27
这个pcb打印出来  能直接用吗

图片上的PCB打印出来不能用,必须是扩展名为PCB的文件,而且还在软件里需要设置,然后打印。
回复

使用道具 举报

ID:169261 发表于 2020-10-24 17:27 来自触屏版 | 显示全部楼层
这个pcb打印出来  能直接用吗
回复

使用道具 举报

ID:825327 发表于 2020-10-23 10:32 来自触屏版 | 显示全部楼层
谢谢作者!!
回复

使用道具 举报

ID:779690 发表于 2020-10-13 13:06 | 显示全部楼层
很实用,感谢作者的分享。
回复

使用道具 举报

ID:812127 发表于 2020-8-7 13:30 | 显示全部楼层
最近正好在学习相关的东西,谢谢楼主!
回复

使用道具 举报

ID:812135 发表于 2020-8-7 12:58 | 显示全部楼层
楼主为什么我照着你这个弄了一个 lcd不显示啊
回复

使用道具 举报

ID:812135 发表于 2020-8-7 12:50 | 显示全部楼层
这个RP1是什么东西啊
回复

使用道具 举报

ID:473987 发表于 2020-7-13 11:00 | 显示全部楼层
感谢楼主的分享,51有你更精彩
回复

使用道具 举报

ID:476699 发表于 2020-7-12 22:56 来自触屏版 | 显示全部楼层
1628235666 发表于 2018-10-30 12:12
刚刚试过 特别好用 如果用12M晶振 可以测下限130HZ 上限16MHZ   估计改成24M晶振 可以测的更高

感谢楼主分享的资料,并且也感谢朋友们的文档,谢谢
回复

使用道具 举报

ID:419064 发表于 2020-6-28 02:44 | 显示全部楼层
试验中不知道能否防制OK
回复

使用道具 举报

ID:790486 发表于 2020-6-26 20:32 | 显示全部楼层

很详细还得慢慢研究
回复

使用道具 举报

ID:264426 发表于 2020-6-23 18:18 | 显示全部楼层
感谢楼主
回复

使用道具 举报

ID:784835 发表于 2020-6-20 19:45 | 显示全部楼层
楼主这个好详细呀
回复

使用道具 举报

ID:783878 发表于 2020-6-19 10:26 | 显示全部楼层
做的十分详细了,可以一步步看明白
回复

使用道具 举报

ID:782711 发表于 2020-6-18 00:58 | 显示全部楼层

非常好,很实用!
回复

使用道具 举报

ID:88256 发表于 2020-6-17 23:31 | 显示全部楼层
回复

使用道具 举报

ID:666564 发表于 2020-6-17 15:42 | 显示全部楼层
进来学习,感谢楼主
回复

使用道具 举报

ID:773716 发表于 2020-6-14 05:22 | 显示全部楼层
...我们要求10HZ-100KHZ 怎么改啊?
回复

使用道具 举报

ID:773716 发表于 2020-6-14 05:19 | 显示全部楼层
....我们要求范围是10HZ-100KHZ   怎么改啊?
回复

使用道具 举报

ID:773367 发表于 2020-6-10 12:55 | 显示全部楼层
频率计单片机,这下不愁看
回复

使用道具 举报

ID:774544 发表于 2020-6-9 23:54 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:664365 发表于 2020-6-7 15:07 | 显示全部楼层
感谢作者分享的学习资料
回复

使用道具 举报

ID:770901 发表于 2020-6-6 09:57 | 显示全部楼层
很好很详细
回复

使用道具 举报

ID:770901 发表于 2020-6-6 09:55 | 显示全部楼层
大神啊太厉害了叭
回复

使用道具 举报

ID:750648 发表于 2020-5-13 11:37 | 显示全部楼层
非常感谢,很有帮助的资料
回复

使用道具 举报

ID:750648 发表于 2020-5-13 11:33 | 显示全部楼层
感谢你的资料,很有帮助
回复

使用道具 举报

ID:750648 发表于 2020-5-13 11:33 | 显示全部楼层
非常感谢 学习了很多
回复

使用道具 举报

ID:750214 发表于 2020-5-12 18:05 | 显示全部楼层
谢谢分享!!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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