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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 25581|回復(fù): 36
收起左側(cè)

帶分頻整形的單片機(jī)頻率計(jì)(1Hz—20MHz)源程序,仿真與設(shè)計(jì)論文等全套資料

  [復(fù)制鏈接]
ID:320678 發(fā)表于 2018-5-2 18:51 | 顯示全部樓層 |閱讀模式
單片機(jī)頻率計(jì) 系統(tǒng)采用單片機(jī)+分頻模塊+整形模塊+lcd1602液晶顯示+按鍵設(shè)計(jì)而成。
頻率的測(cè)量范圍為1Hz—20MHz能測(cè)量各種周期信號(hào)能測(cè)出正弦波、三角波或方波等波形的頻率。通過(guò)LCD1602液晶顯示屏顯示檢測(cè)到的即時(shí)頻率數(shù)值(最多8位數(shù),單位為Hz)。
頻率計(jì) (3).jpg 頻率計(jì) (1).jpg 頻率計(jì) (2).jpg

頻率計(jì)電路原理圖如下:
截圖格式 雙擊可以打.png 頻率計(jì) PCB圖.jpg

74HC14電路設(shè)計(jì)
              由于三極管放大電路輸出的信號(hào)不是標(biāo)準(zhǔn)的方波信號(hào),存在著上升沿不夠陡峭,波形類(lèi)似于正弦波等問(wèn)題,為了使單片機(jī)對(duì)信號(hào)更好的采集,這里使用了施密特觸發(fā)器74HC14對(duì)三極管放大電路輸出的信號(hào)進(jìn)行整形。電路圖如圖3-10所示。
圖3-10施密特觸發(fā)器電路原理圖
              其中輸入信號(hào)從芯片的1號(hào)腳輸入,74HC14本身是一個(gè)芯片內(nèi)部帶有6個(gè)施密特觸發(fā)器,我這里為了充分利用芯片使用了其中三個(gè),實(shí)際上可以只使用一個(gè)。整形后的信號(hào)從芯片的6號(hào)腳輸出。
3.5分頻模塊設(shè)計(jì)
3.5.1 74HC390芯片介紹
分頻電路一般采用十進(jìn)制計(jì)數(shù)器如74HC290、74HC390等來(lái)實(shí)現(xiàn)時(shí)間計(jì)數(shù)單元的計(jì)數(shù)功能。本次設(shè)計(jì)中選擇74HC390。由其內(nèi)部邏輯框圖(如圖3)可知,其為雙2-5-10異步計(jì)數(shù)器,并每一計(jì)數(shù)器均有一個(gè)異步清零端(高電平有效)。由于我們要設(shè)計(jì)的是100分頻電路,因此74HC390內(nèi)部?jī)蓚(gè)計(jì)數(shù)器都用上,分別都設(shè)置成10計(jì)數(shù)器。
圖3-11 74HC390內(nèi)部邏輯框圖
3.5.2 74HC390分頻電路設(shè)計(jì)
由于單片機(jī)運(yùn)行速度有限,單片機(jī)運(yùn)行一條基礎(chǔ)指令需要1個(gè)機(jī)器周期即12個(gè)是時(shí)鐘周期,換算成時(shí)間為1us。因此當(dāng)頻率過(guò)高的時(shí)候單片機(jī)就不能很精確的換算出頻率。為了解決這個(gè)問(wèn)題,這設(shè)計(jì)加入了一個(gè)100分頻的計(jì)數(shù)器。當(dāng)頻率高于200KHZ的時(shí)候單片機(jī)計(jì)算分頻后的信號(hào),當(dāng)頻率低于200KHZ的時(shí)候計(jì)算分頻前的信號(hào)。這樣高低搭配可以擴(kuò)大單片機(jī)的測(cè)量頻率。最終換算出其真實(shí)對(duì)應(yīng)的頻率并在液晶上顯示。其中電路圖如圖3-12所示。
圖3-12 74HC390分頻電路原理圖

4.系統(tǒng)軟件設(shè)計(jì)
4.1系統(tǒng)軟件總體設(shè)計(jì)
4-1系統(tǒng)主流程圖


頻率計(jì)元件清單:
0.png

單片機(jī)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真截圖.png

頻率計(jì)仿真操作說(shuō)明:
   鼠標(biāo)右擊這個(gè)元件,
選擇最后一項(xiàng)就可以了

單片機(jī)頻率計(jì)源程序如下:
  1. //******************************************************************************************
  2. //連接框圖:       ___________________
  3. //                |              P1.0 |->RS
  4. //                |              P1.1 |->RW
  5. //                |              P1.2 |->E
  6. //                |              P0   |->DB
  7. //                |                     P3.4 |->1~9999hz的輸入
  8. //                |              P3.5 |->1~9999KHZ輸入 (分頻后)
  9. //******************************************************************************************
  10. #include <reg52.h>
  11. unsigned long int fre;
  12. unsigned char time;
  13. unsigned int count;
  14. unsigned int count1;

  15. //端口及函數(shù)說(shuō)明----------------------------------------------------------------------------

  16. sbit   LCD_RS=P1^0;          //片選信號(hào)
  17. sbit   LCD_RW=P1^1;          //讀寫(xiě)信號(hào)
  18. sbit   LCD_E=P1^2;           //使能信號(hào)

  19. #define LCD_DB     P0        //數(shù)據(jù)信號(hào)
  20. unsigned char character[10]={0};//在屏幕上顯示的字符串
  21. unsigned char character_1[]={"fre= Hz"};
  22. unsigned char FLAG = 0;

  23. void LCD_init(void);//初始化函數(shù)   
  24. void LCD_write_command(unsigned char command);//寫(xiě)指令函數(shù)         
  25. void LCD_write_data(unsigned char dat);//寫(xiě)數(shù)據(jù)函數(shù)           
  26. void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat);//在某個(gè)屏幕位置上顯示一個(gè)字符,X(0-15),y(1-2)
  27. void delay_n40us(unsigned int n);//延時(shí)函數(shù)
  28.      
  29. void timer_init();            //中斷初始化函數(shù)  


  30. //-------------------------------------------------------------------------------

  31. void delay_n40us(unsigned int n)                  //延時(shí)函數(shù)
  32. {
  33.         unsigned int i;
  34.         unsigned char j;            
  35.         for(i=n;i>0;i--)
  36.         for(j=0;j<2;j++);         
  37. }

  38. void delay_1s()
  39. {
  40.         unsigned int i,j;
  41.         for(i = 0;i<100;i++)
  42.                 for(j = 0;j<1000;j++);
  43. }                                      

  44. void LCD_init(void)         //液晶初始化函數(shù)
  45. {
  46.         LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7
  47.         LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7
  48.         LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7         切記要寫(xiě)三遍!!!!
  49.         LCD_write_command(0x0c);//整體顯示,關(guān)光標(biāo),不閃爍
  50.         LCD_write_command(0x06);//設(shè)定輸入方式,增量不移位
  51.         LCD_write_command(0x01);//清除屏幕顯示         
  52.         delay_n40us(100);//清屏延時(shí)
  53. }

  54. void LCD_write_command(unsigned char dat)  //寫(xiě)命令函數(shù)
  55. {
  56.         LCD_DB=dat;
  57.         LCD_RS=0;//指令         
  58.         LCD_RW=0;//寫(xiě)入         
  59.         LCD_E=1; //使能         
  60.         LCD_E=0;
  61.         delay_n40us(1);//寫(xiě)命令延時(shí)   
  62. }         

  63. void LCD_write_data(unsigned char dat)          //寫(xiě)數(shù)據(jù)函數(shù)
  64. {
  65.         LCD_DB=dat;
  66.         LCD_RS=1;//數(shù)據(jù)         
  67.         LCD_RW=0;//寫(xiě)入         
  68.         LCD_E=1;//使能  
  69.         LCD_E=0;
  70.         delay_n40us(1);         //寫(xiě)數(shù)據(jù)延時(shí)
  71. }

  72. void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat)//顯示一個(gè)字符
  73. {
  74.         unsigned char address;
  75.         if(y==1)
  76.                  address=0x80+x;         //顯示在第一排的時(shí)候的x的地址
  77.         else
  78.                  address=0xc0+x;         //顯示在第二排的時(shí)候的x的地址
  79.         LCD_write_command(address);         //輸入地址
  80.         LCD_write_data(dat);                 //輸入數(shù)據(jù)
  81. }
  82. void LCD_disp_num(unsigned char x,unsigned char y,unsigned char dat)//顯示一個(gè)數(shù)字
  83. {
  84.         unsigned char address;
  85.         if(y==1)
  86.                  address=0x80+x;         //顯示在第一排的時(shí)候的x的地址
  87.         else
  88.                  address=0xc0+x;         //顯示在第二排的時(shí)候的x的地址
  89.         LCD_write_command(address);         //輸入地址
  90.         LCD_write_data(dat+48);                 //輸入數(shù)據(jù)
  91. }

  92. void dis_num(void)
  93. {
  94.         unsigned char i=0,j=0,k=0;
  95.         LCD_write_command(0x01);//清除屏幕顯示
  96.         
  97.         character[0] = fre/1000000;
  98.         character[1] = fre/100000%10;
  99.         character[2] = fre/10000%10;
  100.         character[3] = fre/1000%10;
  101.         character[4] = fre/100%10;
  102.         character[5] = fre/10%10;
  103.         character[6] = fre%10;
  104.     character[7] = 'H';
  105.         character[8] = 'z';
  106.         
  107.         for(i = 0;i<4;i++)                 //顯示fre
  108.         {
  109.                  LCD_disp_char(i+0,1,character_1[i]);
  110.         }
  111.         for(i = 0;i<10;i++)         //判斷第一個(gè)不為0的數(shù)
  112.         {
  113.                 if(character[i]!=0)
  114.                         break;
  115.         }
  116.         k = 10-i-2;
  117.         for(j = 0;j<k;j++)         //顯示所有的數(shù)字
  118.         {
  119.                         LCD_disp_num(4+j,1,character[i++]);        
  120.         }
  121.         
  122.     for(i = 5;i<7;i++)         //顯示Hz
  123.         {
  124.                  LCD_disp_char(j+4,1,character_1[i]);
  125.                 j++;
  126.         }
  127. }



  128. void main()
  129. {
  130.         unsigned char i;
  131.         LCD_init();
  132.         timer_init();             //定時(shí)/計(jì)數(shù)器初始化

  133.         for(i = 0;i<4;i++)
  134.         {
  135.                  LCD_disp_char(i+0,1,character_1[i]);
  136.         }
  137.         while(1)
  138.         {
  139.                 dis_num();         //顯示
  140.                  delay_1s();
  141.                         
  142.         }                                                
  143. }

  144. void timer_init(void)         //定時(shí)/計(jì)數(shù)器初始化
  145. {
  146.         TMOD=0x66;                //計(jì)數(shù)器0工作工作方式2,自動(dòng)重裝初值
  147.         TH0=0;                    //計(jì)數(shù)器初值為0
  148.         TL0=0;
  149.         TR0=1;                    //計(jì)數(shù)器開(kāi)始計(jì)數(shù)            
  150.         ET0=1;                    //打開(kāi)計(jì)數(shù)器0中斷   

  151.         TH1=0;                    //計(jì)數(shù)器初值為0
  152.         TL1=0;
  153.         TR1=1;                    //計(jì)數(shù)器開(kāi)始計(jì)數(shù)            
  154.         ET1=1;                    //打開(kāi)計(jì)數(shù)器0中斷   

  155.         RCAP2H=(65536-62500)/256; //在程序初始化的時(shí)候給RCAP2L和RCAP2H賦值,
  156.         RCAP2L=(65536-62500)%256; //TH2和TL2將會(huì)在中斷產(chǎn)生時(shí)自動(dòng)使TH2=RCAP2H,TL2=RCAP2L。
  157.         TH2=RCAP2H;               //12M晶振下每次中斷62.5ms
  158.         TL2=RCAP2L;
  159.         ET2=1;                    //打開(kāi)定時(shí)器2中斷         
  160.         TR2=1;                    //定時(shí)器2開(kāi)始計(jì)時(shí)  
  161.         EA=1;                     //開(kāi)總中斷   
  162. }
  163. //----------------------------------------------------------------
  164. void timer2(void) interrupt 5 //定時(shí)器2中斷(62.5ms)
  165. {
  166.         double temp;
  167.         time++;
  168.         TF2=0;                    //定時(shí)器2的中斷標(biāo)志位TF2不能夠由硬件清零,所以要在中斷服務(wù)程序中將其清零
  169.         if (time==16)             //定時(shí)1s時(shí)間到  
  170.         {
  171.            time=0;                //計(jì)時(shí)清0                 
  172.            fre=(long)count*256+TL1;     //count*256強(qiáng)制轉(zhuǎn)換成long型,否則將不產(chǎn)生進(jìn)位 先判斷分頻后的
  173.            FLAG = 0;
  174.          
  175.            if(fre<2000)//200K之后讀取分頻后的頻率
  176.            {
  177.                            fre = (long)count1*256+TL0;
  178.                         FLAG = 1;         
  179.            }   
  180.            
  181.            count=0;               //清零計(jì)數(shù)器0計(jì)數(shù)         
  182.            count1=0;
  183.            EA=1;                  //開(kāi)中斷            
  184.         }
  185. }
  186. //----------------------------------------------------------------
  187. void timer0(void) interrupt 1 //計(jì)數(shù)器0中斷         
  188. {
  189.         count++;
  190. }               
  191. //----------------------------------------------------------------
  192. void timer1(void) interrupt 3 //計(jì)數(shù)器1中斷
  193. {
  194.         count1++;
  195. }
  196.         
  197. ……………………

  198. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png


所有資料51hei提供下載:
##單片機(jī)頻率計(jì).rar (10.69 MB, 下載次數(shù): 996)

評(píng)分

參與人數(shù) 2黑幣 +65 收起 理由
都市郎 + 15 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:419299 發(fā)表于 2018-11-2 14:02 | 顯示全部樓層
資料配套齊全,很有參考價(jià)值。
回復(fù)

使用道具 舉報(bào)

ID:65956 發(fā)表于 2018-11-27 11:50 | 顯示全部樓層
很不錯(cuò),收藏了
回復(fù)

使用道具 舉報(bào)

ID:324142 發(fā)表于 2018-12-10 11:02 | 顯示全部樓層
下載打開(kāi)根本是亂碼,一點(diǎn)用都沒(méi)有
回復(fù)

使用道具 舉報(bào)

ID:443340 發(fā)表于 2018-12-10 15:06 | 顯示全部樓層
新手來(lái)看看
回復(fù)

使用道具 舉報(bào)

ID:272625 發(fā)表于 2018-12-11 01:27 | 顯示全部樓層
資料非常全,很好,感謝樓主分享!
回復(fù)

使用道具 舉報(bào)

ID:195887 發(fā)表于 2018-12-13 21:39 | 顯示全部樓層
贊一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:68189 發(fā)表于 2019-3-29 16:52 | 顯示全部樓層
已經(jīng)下載了資料,很不錯(cuò)很有學(xué)習(xí)價(jià)值!謝謝.
回復(fù)

使用道具 舉報(bào)

ID:336842 發(fā)表于 2019-4-13 20:47 | 顯示全部樓層
為什么我測(cè)不到1MHZ以上的頻率啊,仿真一直崩潰
回復(fù)

使用道具 舉報(bào)

ID:442911 發(fā)表于 2019-4-14 22:21 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:501358 發(fā)表于 2019-4-18 10:19 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:501358 發(fā)表于 2019-4-18 10:28 | 顯示全部樓層
感謝樓樓
回復(fù)

使用道具 舉報(bào)

ID:552029 發(fā)表于 2019-5-31 18:30 | 顯示全部樓層
內(nèi)容很詳細(xì),看的非常清楚,會(huì)一直關(guān)注這個(gè)網(wǎng)站的。
回復(fù)

使用道具 舉報(bào)

ID:399179 發(fā)表于 2019-5-31 21:26 來(lái)自手機(jī) | 顯示全部樓層
感謝樓主分享,有時(shí)間做個(gè)!
回復(fù)

使用道具 舉報(bào)

ID:656668 發(fā)表于 2019-12-9 23:10 來(lái)自手機(jī) | 顯示全部樓層
資料很全面,這兩天正好在學(xué)習(xí)這個(gè),感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:661037 發(fā)表于 2019-12-31 16:47 | 顯示全部樓層
很給力
回復(fù)

使用道具 舉報(bào)

ID:661037 發(fā)表于 2020-1-2 14:11 | 顯示全部樓層
很不錯(cuò)喲
回復(fù)

使用道具 舉報(bào)

ID:702610 發(fā)表于 2020-3-4 22:50 來(lái)自手機(jī) | 顯示全部樓層
能幫我設(shè)計(jì)一下嗎?
回復(fù)

使用道具 舉報(bào)

ID:196787 發(fā)表于 2020-3-10 22:16 | 顯示全部樓層
資料非常全,很好,感謝樓主分享!
回復(fù)

使用道具 舉報(bào)

ID:724058 發(fā)表于 2020-4-28 19:22 | 顯示全部樓層
仿真圖文件夾里邊的hex跟程序文件夾里邊的不是同一個(gè)吧,仿真圖文件夾里邊的那個(gè)很準(zhǔn),程序文件夾里邊的那個(gè)老是出錯(cuò)
回復(fù)

使用道具 舉報(bào)

ID:736675 發(fā)表于 2020-5-4 18:44 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報(bào)

ID:159857 發(fā)表于 2020-5-14 21:38 | 顯示全部樓層

很不錯(cuò),收藏了
回復(fù)

使用道具 舉報(bào)

ID:712295 發(fā)表于 2020-5-17 13:41 | 顯示全部樓層
樓主怎么計(jì)算這個(gè)頻率計(jì)能測(cè)多少頻率范圍???
回復(fù)

使用道具 舉報(bào)

ID:759316 發(fā)表于 2020-5-23 18:03 | 顯示全部樓層
這里的分頻期間我認(rèn)為可以設(shè)計(jì)成50分頻,可以更好地利用資源
回復(fù)

使用道具 舉報(bào)

ID:739368 發(fā)表于 2020-6-13 15:16 | 顯示全部樓層
很實(shí)用的資料,棒棒噠!!!
回復(fù)

使用道具 舉報(bào)

ID:302325 發(fā)表于 2020-6-17 09:03 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:774633 發(fā)表于 2020-6-18 08:37 | 顯示全部樓層
正想學(xué)習(xí)這方面,謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:628703 發(fā)表于 2020-7-2 22:14 | 顯示全部樓層
超好的東西,收藏慢慢學(xué)!
回復(fù)

使用道具 舉報(bào)

ID:517951 發(fā)表于 2020-11-15 17:32 | 顯示全部樓層
不錯(cuò),值得學(xué)習(xí)。51hei有你更精彩!!
回復(fù)

使用道具 舉報(bào)

ID:362333 發(fā)表于 2021-1-26 14:31 來(lái)自手機(jī) | 顯示全部樓層
很不錯(cuò),收藏了
回復(fù)

使用道具 舉報(bào)

ID:691287 發(fā)表于 2021-3-9 07:18 | 顯示全部樓層
不錯(cuò)不錯(cuò),正好想學(xué)習(xí)一下頻率計(jì)。
回復(fù)

使用道具 舉報(bào)

ID:1067504 發(fā)表于 2023-7-4 11:56 來(lái)自手機(jī) | 顯示全部樓層
能不能測(cè)試晶振頻率?
回復(fù)

使用道具 舉報(bào)

ID:149799 發(fā)表于 2023-7-27 08:46 | 顯示全部樓層
能不能測(cè)試晶振頻率?如果不超測(cè)量上限,應(yīng)該能測(cè)試晶振頻率。
回復(fù)

使用道具 舉報(bào)

ID:1067504 發(fā)表于 2023-11-27 19:26 來(lái)自手機(jī) | 顯示全部樓層
防制了一個(gè),感覺(jué)有點(diǎn)誤差,不知道什么原因,有誰(shuí)做成功的分享一下經(jīng)驗(yàn)
回復(fù)

使用道具 舉報(bào)

ID:1067504 發(fā)表于 2024-5-25 19:23 來(lái)自手機(jī) | 顯示全部樓層
4M以下不能測(cè)試,4M以上測(cè)試精度還可以,點(diǎn)贊!!!
回復(fù)

使用道具 舉報(bào)

ID:870445 發(fā)表于 2024-6-18 10:42 | 顯示全部樓層
能否改成數(shù)碼管的,1602顯示的字能改大字嗎
回復(fù)

使用道具 舉報(bào)

ID:582276 發(fā)表于 2024-6-19 19:35 | 顯示全部樓層
看起來(lái)好全的資,收下了謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品综合久久久久久五月天 | 亚洲视频在线看 | 夜久久 | 一区二区三区国产 | 国产高清精品一区二区三区 | 成人h电影在线观看 | 国产精品不卡一区 | 国产精彩视频 | 特级a欧美做爰片毛片 | 成人欧美一区二区三区黑人孕妇 | 日韩亚洲一区二区 | 亚洲久久在线 | 亚洲福利在线观看 | 国产精品久久精品 | 岛国av一区二区 | 国产农村一级片 | 久久久久久女 | 日韩视频精品 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 欧美日韩不卡合集视频 | 国产视频线观看永久免费 | 欧美日韩电影一区 | 91视频免费 | 91精品国产综合久久久动漫日韩 | 毛片国产| 亚洲一区二区在线播放 | 狠狠的操 | 日韩一二三区 | 成人精品鲁一区一区二区 | 日韩毛片 | 在线观看国产三级 | 毛片1| 久久久精品久 | 在线观看成人小视频 | 欧洲成人免费视频 | 天堂资源视频 | 国产视频中文字幕在线观看 | 99久久国产免费 | 91久久国产综合久久 | 欧美日韩精品影院 | 免费在线观看一区二区三区 |