久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7711|回復: 0
打印 上一主題 下一主題
收起左側

基于51單片機的正弦波頻率測量源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:344163 發表于 2018-6-3 19:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int

  4. uchar code table[11] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  5. long uint pulse=0;//計數輸入的方波的個數;

  6. long uint freq=0;//頻率

  7. uchar temp=0; //臨時變量

  8. uchar f;

  9. void delay_1ms(uint i) //延時函數,約1ms
  10. {
  11.         uint x,j;
  12.         for(j=0;j<i;j++)
  13.         for(x=0;x<=148;x++);      
  14. }

  15. void Time0_Init()//定時器和計數器的初始化函數
  16. {
  17.         EA=1; //打開全局中斷
  18.         TMOD = 0x15;//設定定時器1和計數器0的工作方式為方式1
  19.                
  20.         TH0  = 0xff;//計數器0的初值
  21.         TL0  = 0xff;//計數器0的初值
  22.         ET0=1; //允許計數器0中斷
  23.         TR0=1; //打開計數器0,開始計數

  24.         TH1  = 0x3c;//定時器1的初值
  25.         TL1  = 0xb0;//定時器1的初值
  26.         ET1=1;        //允許定時器1中斷
  27.         TR1 = 1;//打開定時器1,開始計數               
  28. }

  29. void main()
  30. {
  31.         Time0_Init(); //初始化定時器和計數器
  32.       
  33.         while(1)
  34.         {
  35.                        
  36.                 P2=0xf7;  //以下為數碼管顯示函數
  37.                 P0=0x00;
  38.                 P0=table[freq/1000%10];
  39.                 delay_1ms(2);

  40.                 P2=0xfb;
  41.                 P0=0x00;
  42.                 P0=table[freq/100%10];
  43.                 delay_1ms(2);

  44.                 P2=0xfd;
  45.                 P0=0x00;
  46.                 P0=table[freq/10%10];
  47.                 delay_1ms(2);

  48.                 P2=0xfe;
  49.                 P0=0x00;
  50.                 P0=table[freq%10];
  51.                 delay_1ms(1);      
  52.         }
  53. }

  54. void ISQ_timer0(void) interrupt 1 //用來計數脈沖數,每一個方波脈沖,計數器進入中斷,脈沖數加一
  55. {
  56.         TR0 = 0;
  57.         pulse++;
  58.         TH0  = 0xff;
  59.         TL0  = 0xff;
  60.         TR0 = 1;
  61. }
  62. /****************************************************************
  63.         用來設定時間,定時器的周期為50ms,當經過20次后,
  64.         也即1s后,關斷定時器和計數器,將一秒內計數的脈沖數賦給頻率pulse,
  65.         一秒內采集的脈沖數即為輸入方波的頻率
  66. ****************************************************************/
  67. void ISQ_time1() interrupt 3  
  68. {
  69.         TH1  = 0x3c;
  70.         TL1  = 0xb0;
  71.         temp++;
  72.         if(temp==20)
  73.         {
  74.                 TR0 = 0;
  75.                 TR1 = 0;
  76.                 temp=0;
  77.                 freq=202642400/pulse*100/pulse;
  78.                 pulse=0;//將脈沖數清零,重新計數
  79.                 TR0 = 1;//打開計數器0,進入下一個循環
  80.                 TR1 = 1;//打開定時器1,進入下一個循環                       
  81.         }      
  82. }

復制代碼





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲网在线| 国产精品一区二区无线 | 精精国产xxxx视频在线野外 | 亚洲一区二区三区桃乃木香奈 | 国产精品日韩 | 欧美在线一二三 | www国产精品 | 中文字幕一区二区三区在线视频 | 99久久精品国产一区二区三区 | 国产午夜视频 | 日韩欧美一级精品久久 | 丁香久久| 丝袜美腿一区二区三区动态图 | 亚洲精品一区二区三区免 | 精品一区二区三区四区五区 | 国产激情在线看 | h片在线看 | 久久高清精品 | 欧美日韩精品一区二区三区蜜桃 | 日韩综合色 | 中文在线a在线 | 婷婷综合| 久久久久香蕉视频 | 国产日韩一区二区三区 | 成人不卡| 一区视频在线免费观看 | 国产高清av免费观看 | 久久九九免费 | 黄色一级大片在线免费看产 | 国精久久 | 九九热re | 欧美福利三区 | 国产精品福利视频 | 国产1页 | 日韩精品一区二区三区视频播放 | 国产欧美日韩精品一区 | 国产精品久久久久久久久久三级 | 99久久精品免费看国产四区 | 国产我和子的乱视频网站 | 精品免费看 | 国产成人自拍一区 |