找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡易頻率計(jì)+AD原理圖+單片機(jī)代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
單片機(jī)簡易頻率計(jì)原理圖如下:



----------------------------------------------------------------------------------------------------
第一部分:文件夾命名規(guī)則
----------------------------------------------------------------------------------------------------
APP        應(yīng)用程序文件夾
BRD        板載設(shè)備驅(qū)動(dòng)與使用文件夾
CPU        微控制器相關(guān)文件夾
CPU-CFF    微控制器內(nèi)存等配置文件夾
CPU-STP    微控制器啟動(dòng)代碼文件夾
ELS        其他代碼文件夾
FUC        通用自定義代碼文件夾
GEN        通用標(biāo)準(zhǔn)代碼文件夾
PRJ        工程文件夾
PRJ-EXE    IAR工程輸出可執(zhí)行文件文件夾
PRJ-OBJ    工程輸出文件文件夾
PRJ-LST    工程輸出鏈表文件夾
SYS        操作系統(tǒng)文件夾

51單片機(jī)源程序
  1. //==================================================================================================
  2. //  工程功能:
  3. //  工程等級:工程級/驅(qū)動(dòng)級
  4. //  工程硬件:STC89C52RC
  5. //  工程軟件:Keil C51 uVision4
  6. //  工程作者:智心科技(ZhiXinKeJi)(http://bengbucollege.taobao.com/)
  7. //  工程創(chuàng)建:2014-10-31
  8. //  工程版次:1
  9. //  工程修改:2014-10-31
  10. //  修改內(nèi)容:
  11. //==================================================================================================

  12. //==============================包含的頭文件========================================================
  13. #include"MAIN.H"                            // 包含全局頭文件,

  14. //==============================定義全局變量========================================================
  15. unsigned long Freq_CUNT;

  16. //==================================================================================================
  17. //  實(shí)現(xiàn)功能:主函數(shù)
  18. //  函數(shù)說明:
  19. //  函數(shù)備注:
  20. //==================================================================================================
  21. void main(void)
  22. {
  23.         TIME_Cnfg();                // 配置 定時(shí)器(TIME)
  24.         SEGx4_Init();                // 初始化 SEGx4

  25.         while(1)
  26.         {        
  27.                 if(Freq_CUNT<=10000)                        
  28.                 {
  29.                         SEGx4_ShowNumbx4(Freq_CUNT);                // 1Hz單位
  30.                         LEDx2_Sets(LEDc1,LEDs0);                        // 黃燈亮
  31.                         LEDx2_Sets(LEDc2,LEDs1);                        // 綠燈滅
  32.                 }
  33.                 else if(Freq_CUNT<=400000)
  34.                 {
  35.                         SEGx4_ShowNumbx4(Freq_CUNT/1000);        // 1KHz單位
  36.                         LEDx2_Sets(LEDc1,LEDs1);                        // 黃燈滅
  37.                         LEDx2_Sets(LEDc2,LEDs0);                        // 綠燈亮
  38.                         DELAY_nMS(1000);
  39.                 }
  40.                 else
  41.                 {
  42.                         SEGx4_ShowStrg("----");                                //
  43.                         LEDx2_Sets(LEDc1,LEDs1);                        // 黃燈滅
  44.                         LEDx2_Sets(LEDc2,LEDs1);                        // 綠燈滅
  45.                 }
  46.         }
  47. }
復(fù)制代碼
  1. /*================================================================================================*/
  2. /*  文件功能:SEGx4-四位數(shù)碼管                                                                    */
  3. /*  文件說明:端口直接連接方式                                                                    */
  4. /*  硬件平臺(tái):STC89C52RC                                                                          */
  5. /*  軟件平臺(tái):Keil uVision4-C51 V9.0                                                              */
  6. /*================================================================================================*/

  7. //==============================包含的頭文件========================================================
  8. #include"MAIN.H"                            // 包含全局頭文件,
  9. #include"SEGx4.H"                           // 包含外設(shè)頭文件,SEGx4-四位數(shù)碼管
  10. #include"SEGx4_FONT.H"                      // 包含外設(shè)頭文件,SEGx4-四位數(shù)碼管/字庫文件


  11. //==============================硬件端口定義========================================================
  12. #define SEGx4_DATAPORT P0                   // 定義 SEGx4 段碼 8位端口
  13. sbit SEGx4_BIT0=P2^4;                       // 定義 SEGx4 位碼 0號端口
  14. sbit SEGx4_BIT1=P2^5;                       // 定義 SEGx4 位碼 1號端口
  15. sbit SEGx4_BIT2=P2^6;                       // 定義 SEGx4 位碼 2號端口
  16. sbit SEGx4_BIT3=P2^7;                       // 定義 SEGx4 位碼 3號端口


  17. //==============================宏自定義聲明========================================================
  18. //  SEGx4 位數(shù)
  19. #define SEGx4_UNIT              4           // 數(shù)據(jù)引腳,數(shù)據(jù)端口使用的數(shù)量。


  20. //==============================定義引用變量========================================================
  21. unsigned char SEGx4_ShowData[SEGx4_UNIT];   // 定義字符數(shù)組,存放待顯示字符編碼



  22. //==================================================================================================
  23. //  函數(shù)功能:SEGx4 初始化
  24. //  函數(shù)標(biāo)記:應(yīng)用函數(shù),完成,
  25. //  函數(shù)說明:   
  26. //--------------------------------------------------------------------------------------------------
  27. //  輸入?yún)⒘浚簾o
  28. //  輸出參量:無
  29. //==================================================================================================
  30. void SEGx4_Init(void)
  31. {        

  32. }

  33. //==================================================================================================
  34. //  函數(shù)功能:SEGx4 顯示字符串
  35. //  函數(shù)標(biāo)記:應(yīng)用函數(shù),完成,
  36. //  函數(shù)說明:   
  37. //--------------------------------------------------------------------------------------------------
  38. //  輸入?yún)⒘浚篲STRG:待顯示的字符串;
  39. //  輸出參量:無
  40. //==================================================================================================
  41. void SEGx4_ShowStrg(unsigned char *_STRG)
  42. {
  43.         unsigned char i=0;        //定義局部變量,一定賦予初始值為0
  44.         unsigned char j;                //定義局部變量,用于循環(huán)
  45.         while(*_STRG)
  46.         {
  47.                 for(j=0;j<32;j++)                                                        //循環(huán)32次,查詢數(shù)碼管字模位置
  48.                 {
  49.                         if(SEGx4_CODE[j].CHAR==*_STRG)        //判斷第k個(gè)字符的編碼是否與輸入字符相等
  50.                         {
  51.                                 SEGx4_ShowData[i]=SEGx4_CODE[j].CODE;        
  52.                                 i++;
  53.                                 break;
  54.                         }
  55.                 }
  56.                 _STRG++;
  57.         }        
  58. }

  59. //==================================================================================================
  60. //  函數(shù)功能:SEGx4 顯示 4位整型數(shù)字
  61. //  函數(shù)標(biāo)記:應(yīng)用函數(shù),完成,
  62. //  函數(shù)說明:   
  63. //--------------------------------------------------------------------------------------------------
  64. //  輸入?yún)⒘浚篲STRG:待顯示的字符串;
  65. //  輸出參量:無
  66. //==================================================================================================
  67. void SEGx4_ShowNumbx4(unsigned int _NUMB)
  68. {
  69.         unsigned char i,j;                                //定義局部變量,用于循環(huán)計(jì)數(shù)
  70.         unsigned char Numb_Arry[4];        //定義局部數(shù)組,用于存儲(chǔ)變量

  71.         Numb_Arry[0]=_NUMB/1000 %10+0x30;
  72.         Numb_Arry[1]=_NUMB/100  %10+0x30;
  73.         Numb_Arry[2]=_NUMB/10   %10+0x30;
  74.         Numb_Arry[3]=_NUMB/1    %10+0x30;

  75.         for(i=0;i<4;i++)
  76.         {
  77.                 for(j=0;j<32;j++)                                                                        //循環(huán)32次,查詢數(shù)碼管字模位置
  78.                 {
  79.                         if(SEGx4_CODE[j].CHAR==Numb_Arry[i])        //判斷第k個(gè)字符的編碼是否與輸入字符相等
  80.                         {
  81.                                 SEGx4_ShowData[i]=SEGx4_CODE[j].CODE;
  82.                                 break;        
  83.                         }
  84.                 }
  85.         }
  86. }

  87. //==================================================================================================
  88. //  函數(shù)功能:SEGx4 T2 中斷服務(wù)函數(shù)
  89. //  函數(shù)標(biāo)記:中斷函數(shù),完成,
  90. //  函數(shù)說明:   
  91. //--------------------------------------------------------------------------------------------------
  92. //  輸入?yún)⒘浚簾o
  93. //  輸出參量:無
  94. //==================================================================================================
  95. void SEGx4_IRQHandler(void)
  96. {
  97.         static unsigned char SEGx4_BITS=0;                // 定義全局變量,用于循環(huán)數(shù)碼管位數(shù)         
  98.         SEGx4_BIT0=1;
  99.         SEGx4_BIT1=1;
  100.         SEGx4_BIT2=1;
  101.         SEGx4_BIT3=1;
  102.         //----------------------------------------------------------------------------------------------
  103.         // 段碼
  104.         //----------------------------------------------------------------------------------------------        
  105.         SEGx4_DATAPORT=SEGx4_ShowData[SEGx4_BITS];        

  106.         //----------------------------------------------------------------------------------------------
  107.         // 位碼
  108.         //----------------------------------------------------------------------------------------------
  109.         switch(SEGx4_BITS)                                       
  110.         {
  111.                 case 0:SEGx4_BIT0=0;SEGx4_BIT1=1;SEGx4_BIT2=1;SEGx4_BIT3=1;break;
  112.                 case 1:SEGx4_BIT0=1;SEGx4_BIT1=0;SEGx4_BIT2=1;SEGx4_BIT3=1;break;
  113.                 case 2:SEGx4_BIT0=1;SEGx4_BIT1=1;SEGx4_BIT2=0;SEGx4_BIT3=1;break;
  114.                 case 3:SEGx4_BIT0=1;SEGx4_BIT1=1;SEGx4_BIT2=1;SEGx4_BIT3=0;break;
  115.                 default:break;
  116.         }

  117.         //----------------------------------------------------------------------------------------------
  118.         // 循環(huán)移位
  119.         //----------------------------------------------------------------------------------------------
  120.         SEGx4_BITS++;
  121.         if(SEGx4_BITS>5)
  122.         {

  123. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復(fù)制代碼

下載:
簡易頻率計(jì)-第01A版.zip (451.63 KB, 下載次數(shù): 45)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表