找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1897|回复: 1
收起左侧

单片机频率计源码

[复制链接]
ID:74868 发表于 2018-8-21 16:37 | 显示全部楼层 |阅读模式
  1. #include<reg51.h>
  2. #include <stdio.h>
  3. #define uchar unsigned char
  4. uchar display_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
  5. //定义数组存放显示数据的编码
  6. uchar display_data[8]={0,0,0,0,0,0,0,0};   //定义数组存放显示数据的各位
  7. uchar c1,b1;
  8. sbit P1_1=P1^1;
  9. void delay(void)   //延时
  10. {
  11. uchar i;
  12. for(i=500;i>0;i--);
  13. }
  14. void display()   //显示程序
  15. {
  16.   uchar i,k;
  17.   k=0x01;
  18.   for(i=0;i<8;i++)
  19.   {
  20.   P2=0;
  21.   P0=display_code[display_data[i]];
  22.   P2=k;
  23.   k=k<<1;
  24. delay();
  25. }
  26.   P2=0;
  27. }
  28. void convert()  //转换程序
  29. {
  30. uchar i,f2;
  31. long f,f1,k;
  32. f=c1*65536+TH1*256+TL1 ;
  33. f1=f-f%10;                                //此变量是为了让八位LED的高位为0时不显示而设置
  34. for(i=7;i>0;i--)                //此循环将计数值转换为显示数组,从高位到低位依次存放在
  35. //display_data[0]至display_data[7]
  36. {display_data[i]=f%10;
  37. f=f/10;
  38. }
  39.                    display_data[0]=f;
  40. k=1e7;                //从这开始到本子程序结束的语句完成让八位LED的高位为0时不显示
  41. for(i=0;i<7;i++)
  42. {f2=f1/k;
  43. if(f2==0)
  44. {
  45. display_data[i]=10;
  46. k=k/10;
  47. }
  48. }
  49. }
  50. void timer1(void) interrupt 3  //定时器1中断服务程序
  51.    {
  52. c1++;                        
  53.    }
  54. void timer0(void) interrupt 1  //定时器0中断服务程序
  55.    {
  56. TH0=0xb1;                         //装入时间常数
  57. TL0=0xe0;                        
  58. P1_1=!P1_1;                        //P1.1取反,从P1.1引脚输出25Hz的方波信号,通过导线连接
  59. //到P3.5引脚输入,以方便调试程序。若使用其它信号源,则去掉即可。
  60. if (b1==49)
  61. {
  62. convert();
  63. c1=0;                                //将计数值清零
  64. b1=0;
  65. TH1=0;
  66. TL1=0;
  67. }
  68. else b1++;
  69. }
  70. void main(void)  //主函数
  71. {
  72. P1_1=0;
  73. c1=0;
  74. b1=0;
  75. TH1=0;
  76. TL1=0;
  77. TMOD=0x51;
  78. TH0=0Xb1;
  79. TL0=0Xe0;
  80. IE=0x8a;
  81. TCON=0x50;
  82. while(1)
  83. {
  84. display();
  85. }
复制代码
回复

使用道具 举报

ID:1 发表于 2018-8-21 17:23 | 显示全部楼层
补全原理图与介绍后即可获得100+黑币,,不然此贴是无意义的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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