欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6208|回復: 4
收起左側

51單片機+74LS160頻率計,最高可測頻10M

  [復制鏈接]
ID:374056 發表于 2018-7-19 20:51 | 顯示全部樓層 |閱讀模式
因為51單片機晶振的原因,測頻的范圍有限制,這時就需要外置74LS160分頻器,進行分頻。
本程序采用了定時器的方式2定時,8位自動重裝計數器,精準定時。

電路原理圖如下:
Q]2$LO$~`6%LM__~WXKVXOJ.png


單片機源程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define Duan P2
  4. #define Wei P1
  5. sbit mr = P3^0;
  6. unsigned char code smg_duan[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  7. unsigned char code smg_wei[] ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  8. unsigned int Num;
  9. long int pin;
  10. long int count;
  11. void delay_ms(int i)
  12. {
  13.         int j;
  14.         for(i;i>0;i--)
  15.                 for(j=100;j>0;j--);
  16. }

  17. void display(long int num)
  18. {
  19.         long num1[8],i;
  20.         num1[7] = num/10000000;
  21.         num1[6] = (num/1000000)%10;
  22.         num1[5] = (num/100000)%10;
  23.         num1[4] = (num/10000)%10;
  24.         num1[3] = (num/1000)%10;
  25.         num1[2] = (num/100)%10;
  26.         num1[1] = (num/10)%10;
  27.         num1[0] = num%10;
  28.         for(i=0;i<8;i++){
  29.         Wei = smg_wei[i];
  30.         Duan = smg_duan[num1[i]];
  31.         delay_ms(1);
  32.         }
  33. }

  34. void main()
  35. {
  36.         TMOD = 0x72;
  37.         TH0 = 0x06;
  38.         TL0 = 0x06;
  39.         TH1 = 0x00;
  40.         TL1 = 0x00;
  41.         ET1 = 1;
  42.         ET0 = 1;
  43.         EA = 1;
  44.         //PT1=1;
  45.         TCON = 0x50;
  46.         while(1)
  47.         {
  48.                 display(pin);
  49.         }

  50. }

  51. void timer0() interrupt 1   //定時器
  52. {
  53.                 unsigned char a;
  54.                 if(Num==3999)
  55.                 {
  56.                 TCON = 0x00;
  57.                 EA=0;
  58.                 Num = 0;
  59.                 a=P0&0x0f;               //分頻器讀數
  60.                 pin = (256*count+TL1)*10+a;    //溢出的次數*256+還未溢出的次數+分頻器的計數
  61.                 TH1 = 0x00;
  62.                 TL1 = 0x00;
  63.                 TL0 = 0x06;
  64.                 TH0 = 0x06;
  65.                 count = 0;
  66.                 mr=0;
  67.                 _nop_();
  68.                 EA=1;
  69.                 TCON = 0x50;
  70.                 mr=1;
  71.                 }
  72.                 else Num++;
  73.                 //display(pin);
  74. }

  75. void timer1() interrupt 3    //計數器
  76. {
  77.         count++;    中斷溢出的次數
  78. }
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:855982 發表于 2020-12-7 14:28 | 顯示全部樓層
為啥我按著你的仿真做 數碼管亂碼呀
回復

使用道具 舉報

ID:855982 發表于 2020-12-7 15:32 來自觸屏版 | 顯示全部樓層
大佬,為啥我的數碼管不行
回復

使用道具 舉報

ID:899981 發表于 2022-6-13 14:34 | 顯示全部樓層
沒有代碼?
回復

使用道具 舉報

ID:1110848 發表于 2024-2-10 01:46 | 顯示全部樓層
可以、拋磚引玉之作
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表