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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2271|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)測(cè)頻率程序誤差較大,但是方波沒問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:561033 發(fā)表于 2019-7-27 09:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
麻煩大家看看 我寫的這個(gè)程序 測(cè)量方波頻率沒什么問題可是測(cè)量其他波形頻率的時(shí)候 誤差很大
順便想問問測(cè)量脈寬的思路是什么?
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit DU = P2^6;//數(shù)碼管段選
  6. sbit WE = P2^7;//數(shù)碼管段選
  7. sbit LED1 = P1^0;//LED1
  8. //共陰數(shù)碼管段選表0-9
  9. uchar  code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};
  10. long uint mSec;//毫秒和秒儲(chǔ)存變量
  11. long uint freq;
  12. /*====================================
  13. 函數(shù)        : delay(uint z)
  14. 參數(shù)        :z 延時(shí)毫秒設(shè)定,取值范圍0-65535
  15. 返回值        :無
  16. 描述        :12T/Fosc11.0592M毫秒級(jí)延時(shí)
  17. ====================================*/
  18. void delay(uint z)
  19. {
  20.         uint x,y;
  21.         for(x = z; x > 0; x--)
  22.                 for(y = 114; y > 0 ; y--);                 
  23. }

  24. /*====================================
  25. 函數(shù)        :display(uchar i)
  26. 參數(shù)        :i 顯示數(shù)值,取值范圍0-255
  27. 返回值        :無
  28. 描述        :三位共陰數(shù)碼管動(dòng)態(tài)顯示
  29. ====================================*/
  30. void display(uchar i)
  31. {
  32.         uchar A,B,C,D,E,F,G,H;
  33.         A = i % 100000000 / 1000000;
  34.         B = i % 10000000 / 1000000;
  35.         C = i % 1000000 / 100000;
  36.         D =        i % 100000 / 10000;
  37.         E =        i % 10000 / 1000;
  38.         F = i % 1000 / 100; //236 / 100  = 2
  39.     G = i % 100 / 10;        //236 % 100 / 10 = 3
  40.         H = i % 10;//236 % 10 =6
  41.         
  42.         //第一位數(shù)碼管                  
  43.         P0 = 0XFF;//清除斷碼
  44.         WE = 1;//打開位選鎖存器
  45.         P0 = 0XFE; //1111 1110
  46.         WE = 0;//鎖存位選數(shù)據(jù)        
  47.         DU = 1;//打開段選鎖存器
  48.         P0 = tabel[A];//
  49.         DU = 0;//鎖存段選數(shù)據(jù)
  50.         delay(1);

  51.         //第二位數(shù)碼管
  52.         P0 = 0XFF;//清除斷碼
  53.         WE = 1;//打開位選鎖存器
  54.         P0 = 0XFD; //1111 1101
  55.         WE = 0;//鎖存位選數(shù)據(jù)        
  56.         DU = 1;//打開段選鎖存器
  57.         P0 = tabel[B];//
  58.         DU = 0;//鎖存段選數(shù)據(jù)
  59.         delay(1);

  60.         //第三位數(shù)碼管
  61.         P0 = 0XFF;//清除斷碼
  62.         WE = 1;//打開位選鎖存器
  63.         P0 = 0XFB; //1111 1011
  64.         WE = 0;//鎖存位選數(shù)據(jù)
  65.         DU = 1;//打開段選鎖存器
  66.         P0 = tabel[C];//
  67.         DU = 0;//鎖存段選數(shù)據(jù)
  68.         delay(1);

  69.   //第四位數(shù)碼管
  70.         P0 = 0XFF;//清除斷碼
  71.         WE = 1;//打開位選鎖存器
  72.         P0 = 0XF7; //1111 1101
  73.         WE = 0;//鎖存位選數(shù)據(jù)
  74.         DU = 1;//打開段選鎖存器
  75.         P0 = tabel[D];//
  76.         DU = 0;//鎖存段選數(shù)據(jù)
  77.         delay(1);

  78.         //第五位數(shù)碼管
  79.         P0 = 0XFF;//清除斷碼
  80.         WE = 1;//打開位選鎖存器
  81.         P0 = 0XEF; //1111 1101
  82.         WE = 0;//鎖存位選數(shù)據(jù)
  83.         DU = 1;//打開段選鎖存器
  84.         P0 = tabel[E];//
  85.         DU = 0;//鎖存段選數(shù)據(jù)
  86.         delay(1);

  87.         //第六位數(shù)碼管
  88.         P0 = 0XFF;//清除斷碼
  89.         WE = 1;//打開位選鎖存器
  90.         P0 = 0XDF; //1111 1101
  91.         WE = 0;//鎖存位選數(shù)據(jù)
  92.         DU = 1;//打開段選鎖存器
  93.         P0 = tabel[F];//
  94.         DU = 0;//鎖存段選數(shù)據(jù)
  95.         delay(1);

  96.         //第七位數(shù)碼管
  97.         P0 = 0XFF;//清除斷碼
  98.         WE = 1;//打開位選鎖存器
  99.         P0 = 0XBF; //1111 1101
  100.         WE = 0;//鎖存位選數(shù)據(jù)
  101.         DU = 1;
  102.         P0 = tabel[G];
  103.         DU = 0;//鎖存段選數(shù)據(jù)
  104.         delay(1);

  105.         //第八位數(shù)碼管
  106.         P0 = 0XFF;//清除斷碼
  107.         WE = 1;//打開位選鎖存器
  108.         P0 = 0X7F; //1111 1101
  109.         WE = 0;//鎖存位選數(shù)據(jù)
  110.         DU = 1;
  111.         P0 = tabel[H];//打開段選鎖存器
  112.         DU = 0;//鎖存段選數(shù)據(jù)
  113.         delay(1);
  114. }

  115. void Timer_Config()
  116. {
  117.         //--定時(shí)器T1做計(jì)數(shù)器,工作方式1(16位定時(shí)器),只由TRx打開計(jì)數(shù)器--//
  118.         //--定時(shí)器T0做定時(shí)器,工作方式1(16位定時(shí)器),只由TRx打開定時(shí)器--//        
  119.         TMOD=0x51;

  120.         //--設(shè)置定時(shí)器晶振為12MHZ時(shí)定時(shí)50ms--//
  121.         TH0=0x4b;//高八位 定時(shí)器
  122.         TL0=0xfd;//低八位

  123. //        TH1=0XFF;//計(jì)數(shù)器
  124.         //TL1=0XFF;//計(jì)數(shù)器

  125.         //--打開中斷-//
  126.         ET0=1;
  127.         ET1=1;
  128.         EA=1;

  129.         //--打開定時(shí)器*/
  130.         TR0=1;
  131.         TR1=1;
  132. }

  133. void main()//main函數(shù)自身會(huì)循環(huán)
  134. {
  135.   unsigned long z;//設(shè)置一個(gè)局部變量z        
  136.   Timer_Config();//進(jìn)入中斷
  137.         while(1)
  138.         {
  139.                 if(TR1 == 0) //當(dāng)計(jì)數(shù)器停下的時(shí)候,表明計(jì)數(shù)完畢        判斷是否到達(dá)一秒到達(dá)后讀取TL TH的值
  140.                 {
  141.                         freq = freq + TL1;         //讀取TL的值
  142.                         freq = freq + (TH1 * 256); //讀取TH的值 高八位
  143.                         z=freq;
  144.                                 //--顯示完,重新計(jì)算下一次頻率。--//        
  145.                     freq = 0;//將計(jì)算的頻率清零
  146.                         TH1 = 0; //將計(jì)數(shù)器的值清零
  147.                         TL1 = 0;
  148.                         TR0 = 1; //開啟定時(shí)器 TR運(yùn)行寄存器
  149.                         TR1 = 1; //開啟計(jì)數(shù)器        
  150.                 }
  151.             display(z); //數(shù)碼管顯示函數(shù)
  152.         }        
  153. }  

  154. /*******************************************
  155. *函數(shù)名                :Timer0
  156. *功  能         :定時(shí)器0的中斷函數(shù)
  157. *輸         入         :無
  158. *輸  出                :無
  159. *******************************************/

  160. void Timer0() interrupt 1
  161. {
  162.         //--12MHZ設(shè)置定時(shí)50ms的初值--//
  163.         TH0=0x4b;
  164.         TL0=0xfd;
  165.         LED1=~LED1;
  166.         mSec++;
  167.         if(mSec == 20) //定時(shí)1秒到        20個(gè)50ms等于1秒 1000ms=1s
  168.         {
  169.                 TR0=0;        //關(guān)閉定時(shí)器
  170.                 TR1=0;        //關(guān)閉計(jì)數(shù)器
  171.                 mSec = 0;  //秒數(shù)清零
  172.         }                                       
  173. }
  174. /*******************************************
  175. *函數(shù)名                :Timer1
  176. *功  能         :定時(shí)器1的中斷函數(shù)
  177. *輸         入         :無
  178. *輸  出                :無
  179. *******************************************/

  180. void Timer1() interrupt 3
  181. {        
  182.         //--進(jìn)入一次中斷,表明計(jì)數(shù)到了65536--//
  183.         freq=freq+65536;
  184. //    TH1=0XFF;
  185. //        TL0=0XFF;        
  186. }  

復(fù)制代碼

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

使用道具 舉報(bào)

沙發(fā)
ID:546770 發(fā)表于 2019-7-27 15:23 | 只看該作者
上升沿和下降沿觸發(fā)你弄明白了沒有?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美精品区一区二区三区 | 久久中文字幕一区 | 精品视频在线一区 | 成人做爰69片免费观看 | 红桃成人在线 | 国产福利小视频 | 九九综合 | 看毛片网站 | 91国内外精品自在线播放 | 国产精品美女久久久久aⅴ国产馆 | 欧美日韩一区二区在线播放 | 九九久久精品视频 | 天堂一区在线观看 | 成人国产精品色哟哟 | 超碰97人人人人人蜜桃 | 欧美日韩综合视频 | 欧美一级黄视频 | av中文在线| 伊人春色成人 | 久久久久国产一级毛片高清网站 | 日本欧美国产 | 久久亚洲欧美日韩精品专区 | 午夜视频免费在线 | 久久精品成人热国产成 | 久视频在线观看 | 日本久草视频 | 精品国产色 | 国产一区二区三区视频 | 成人在线播放网站 | 亚洲欧美综合 | 亚洲美女在线视频 | av乱码| 国产欧美一区二区三区日本久久久 | 狠狠爱一区二区三区 | 一级看片免费视频囗交动图 | 欧美一二区 | 在线视频亚洲 | 人碰人操 | 亚洲欧美日韩电影 | 亚洲精品一二区 | 成人在线视频网 |