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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自己做的簡易頻率計 單片機源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:165310 發表于 2017-2-19 11:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
希望高手指點一下!
完整代碼下載:
頻率計.zip (50.7 KB, 下載次數: 43)

主程序預覽:
  1. #include "reg52.h"
  2. #include "lsh.h"                         
  3. #include "intrins.h"

  4. sbit SER   = P3^4;
  5. sbit RCLK1  = P3^5;
  6. sbit SRCLK = P3^6;

  7. uchar code smgduan[17]=
  8. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  9. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值

  10. uchar code smgwei[] =           //--- 數碼管顯示的位選通段代碼表 ---
  11. {
  12. 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
  13. };

  14. uchar DispData[8];

  15. //--定義全局變量--//
  16. ulong   Freq;        //用來存放要顯示的頻率值
  17. ulong        TimeCount;   //用于計算1S鐘的

  18. void SerialSend(uchar DAT)                             //--- 串并轉換函數(595控制數碼管顯示) ---
  19. {
  20.     uchar i;
  21.         for(i=0;i<8;i++)
  22.         {
  23.                  DAT <<= 1;
  24.                 SER   = CY;
  25.                 SRCLK = 0;
  26.                 _nop_();  
  27.                 _nop_();
  28.                 SRCLK = 1;
  29.         }
  30. }

  31. /*******************************************************************************
  32. * 函 數 名         : DigDisplay
  33. * 函數功能                   : 數碼管動態掃描函數,循環掃描8個數碼管顯示
  34. *******************************************************************************/
  35. void Scan_Disp()
  36. {
  37.         uchar i;
  38.     for(i=0; i<6; i++)
  39.     {  
  40.        RCLK1 = 0;
  41.        SerialSend(DispData[i]);                  //--- 送顯示代碼到串口引腳 ---
  42.        SerialSend(smgwei[i]);                             //--- 送選通代碼到串口引腳 ---
  43.        RCLK1 = 0;
  44.        _nop_();  
  45.        _nop_();
  46.        RCLK1 = 1;                                             //--- 掃描計數變量加1 ---
  47.        Delay(100);
  48.     }
  49. }
  50. /*******************************************
  51. *函數名                :TIMER_Configuration
  52. *功  能         :配置定時/計數器T0和T1
  53. *輸         入         :無
  54. *輸  出                :無
  55. *******************************************/

  56. void Timer_Init()
  57. {
  58.         //--定時器T1做計數器,工作方式1(16位定時器),只由TRx打開計數器--//
  59.         //--定時器T0做定時器,工作方式1(16位定時器),只由TRx打開定時器--//       
  60.         TMOD=0x51;
  61.     T2MOD = 0x02;//選擇為定時器2模式,工作方式1,僅用TR1打開啟動。
  62.     RCAP2H = 0xFD;
  63.     RCAP2L = 0xC8;

  64.         //--設置定時器晶振為12MHZ時定時50ms--//
  65.         TH0=0xD8;
  66.         TL0=0xF0;

  67.     TH2 = 0xFD;
  68.         TL2 = 0xC8;   //1us

  69.         //--打開中斷-//
  70.         ET0=1;
  71.         ET1=1;
  72.     ET2=1;//打開定時器1中斷允許
  73.         EA=1;

  74.         //--打開定時器*/
  75.         TR0=1;
  76.         TR1=1;
  77.         TR2=1;//打開定時器
  78. }

  79. /*******************************************
  80. *函數名                :Disp_Fre
  81. *功  能         :顯示所計算的頻率值
  82. *輸         入         :無
  83. *輸  出                :無
  84. *******************************************/
  85. void Disp_Fre()
  86. {
  87.     if(TR1 == 0)         //當計數器停下的時候,表明計數完畢
  88.                 {
  89.                         Freq = Freq + TL1;         //讀取TL的值
  90.                         Freq = Freq + (TH1 * 256); //讀取TH的值

  91.                         //--求頻率的個十百千萬十萬位--//
  92.                         DispData[0] = smgduan[Freq%1000000/100000];       
  93.                         DispData[1] = smgduan[Freq%100000/10000];       
  94.                         DispData[2] = smgduan[Freq%10000/1000];       
  95.                         DispData[3] = smgduan[Freq%1000/100];       
  96.                         DispData[4] = smgduan[Freq%100/10];       
  97.                         DispData[5] = smgduan[Freq%10];
  98.                        
  99.                         //--顯示完,重新計算下一次頻率。--//       
  100.                         Freq = 0;//將計算的頻率清零
  101.                         TH1 = 0; //將計數器的值清零
  102.                         TL1 = 0;
  103.                         TR0 = 1; //開啟定時器
  104.                         TR1 = 1; //開啟計數器       
  105.                 }

  106.                 //--顯示求得的數值--//
  107.                 Scan_Disp();
  108. }

  109. /*******************************************
  110. *函數名                :Timer0
  111. *功  能         :定時器0的中斷函數
  112. *輸         入         :無
  113. *輸  出                :無
  114. *******************************************/

  115. void Timer0() interrupt 1
  116. {
  117.     Scan_Disp();
  118.         //--12MHZ設置定時50ms的初值--//
  119.         TH0=0xD8;
  120.         TL0=0xF0;
  121.        
  122.         TimeCount++;
  123.         if(TimeCount==100)//計時到1S
  124.         {
  125.                 TR0=0;
  126.                 TR1=0;
  127.                 TimeCount=0;               
  128.         }               
  129. }
  130. /*******************************************
  131. *函數名                :Timer1
  132. *功  能         :計數器1的中斷函數
  133. *輸         入         :無
  134. *輸  出                :無
  135. *******************************************/

  136. void Timer1() interrupt 3
  137. {       
  138.         //--進入一次中斷,表明計數到了65536--//
  139.         Freq=Freq+65536;               
  140. }

  141. void Timer2(void) interrupt 5 //3 為定時器1的中斷號  1 定時器0的中斷號 0 外部中斷1 2 外部中斷2  4 串口中斷
  142. {
  143.     TF2 = 0;
  144.        
  145. }

  146. /*******************************************************************************
  147. * 函 數 名       : main
  148. * 函數功能                 : 主函數
  149. * 輸    入       : 無
  150. * 輸    出             : 無
  151. *******************************************************************************/
  152. void main()
  153. {       
  154.         Timer_Init();       
  155.         while(1)
  156.         {
  157.             Disp_Fre();       
  158.         }                               
  159. }
復制代碼



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

使用道具 舉報

沙發
ID:190034 發表于 2017-4-16 10:22 | 只看該作者
下載的附件里沒有“LSH.h”的文件,重發一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色播视频在线观看 | 久久久久久亚洲精品 | 黄色片亚洲 | 国产日韩欧美一区二区 | 毛片一区二区三区 | 在线一区二区三区 | 精品一区二区三区在线观看国产 | 久久精品亚洲一区二区三区浴池 | 蜜桃视频在线观看免费视频网站www | 精品国产一二三区 | 久久久精品| 亚洲一区二区久久 | 日日摸天天添天天添破 | 大象视频一区二区 | 日韩手机在线看片 | av一区二区三区在线观看 | 不卡一区二区三区四区 | 成人免费观看视频 | 国产精品视频网 | 一区二区三区免费在线观看 | 欧美a级成人淫片免费看 | 盗摄精品av一区二区三区 | 中文字幕国产视频 | 日本偷偷操 | 看羞羞视频免费 | 亚洲播放 | 一区二区三区高清 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久久久国产精品午夜一区 | 九九九视频精品 | 国产色网 | 国产精品视频网站 | 超级碰在线 | 精品欧美一区二区久久久伦 | 成人精品视频在线观看 | av国产精品| 日韩精品成人一区二区三区视频 | 久久久五月天 | 成人午夜在线观看 | 毛片高清| 欧美色人 |