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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6772|回復: 4
收起左側

單片機數字頻率計仿真設計0~9000hz 數碼管顯示 帶源碼

[復制鏈接]
ID:140725 發表于 2017-3-17 23:21 | 顯示全部樓層 |閱讀模式
今天給51黑電子論壇的朋友們分享一個51單片機做的數字頻率計,用數碼管顯示,有詳細的程序代碼.
仿真原理圖如下:
0.png


部分單片機源碼預覽:
freCountMain.c文件:
  1. /*************************************************************************
  2. *實例名稱:頻率計
  3. *實例說明:實現0~9000hz頻率計的統計
  4. *作者:yd
  5. *時間:09.06.20
  6. *************************************************************************/
  7. #include "target.h"
  8. #include "led.h"
  9. uchar displayBuff[4]={'0','0','0','0'}; //數碼管顯示緩沖區,千,百,十,個
  10. const uchar displayMode=0x00;           //后四位分別對應緩沖區中每位的數據類型,1為任意字符顯示,0為數字顯示
  11. void main()
  12. {
  13.   uint get_fre;
  14.   target_init();
  15.   init_led();
  16.   sei();
  17.   while(1)
  18.   {
  19.     get_fre=get_fre_number();
  20.         if(get_fre/1000<0x0A)
  21.         {
  22.           displayBuff[0]=get_fre/1000+'0';            //計算頻率千位,放在緩沖區第0位
  23.         }
  24.         displayBuff[1]=(get_fre/100)%10+'0';          //計算頻率百位,放在緩沖區第1位
  25.     displayBuff[2]=(get_fre%100)/10+'0';          //計算頻率十位,放在緩沖區第2位
  26.         displayBuff[3]=get_fre%10+'0';                          //計算頻率個位,放在緩沖區第3位
  27.     ledSweepDisplay(displayBuff,displayMode,0x04);//循環顯示數碼管緩沖區中數據
  28.   }

  29. }
復制代碼

led.c文件:
  1. #define LED_GLOBAL 1
  2. #include "led.h"
  3. /*******************************************************************************************
  4. *函數名稱:delay_us(uint us)
  5. *函數功能:實現微秒級的延時
  6. *函數入口:us,延時函數循環后期數
  7. *函數出口:無
  8. *******************************************************************************************/
  9. void delay_us(uint us)
  10. {
  11.   uint i;
  12.   while(us--)
  13.   {
  14.     for(i=0;i<100;i++);
  15.   }
  16. }
  17. /*******************************************************************************************
  18. *函數名稱:led_init(void)
  19. *函數功能:四位七段數碼管顯示初始化
  20. *函數入口:無
  21. *函數出口:無
  22. *******************************************************************************************/
  23. void init_led(void)
  24. {
  25.    LED=segLedCode[0];
  26.    LED_CS1=0;
  27.    LED_CS2=0;
  28.    LED_CS3=0;
  29.    LED_CS4=0;
  30. }
  31. /*******************************************************************************************
  32. *函數名稱:ledWrite(uchar c,uchar n,uchar mod)
  33. *函數功能:對一組數碼管的某一位進行短暫顯示
  34. *函數入口:c,要顯示的數據;n,顯示一組數碼管中的第n位;mod,c的數據形式
  35. *函數出口:無
  36. *說明:當mod==DIGITAL時,c為數字0~9的ANCII碼形式,此時在n位數碼管上顯示想用數字
  37.        當mod==CHARACTER,直接將c輸出數據口
  38. *******************************************************************************************/
  39. void ledWrite(uchar c,uchar n,uchar mod)
  40. {
  41.    if(CHARACTER==mod)
  42.    {
  43.           LED=c;  
  44.    }
  45.    else if(DIGITAL==mod)
  46.            {
  47.               if((c-'0')<0x0a)
  48.                   {
  49.                     LED=segLedCode[c-'0'];
  50.                   }
  51.                   else
  52.                   {  
  53.                         LED=segLedCode[0];
  54.                   }
  55.            }
  56.    switch(n)
  57.    {
  58.                 case 0x01:
  59.                 {
  60.                   LED_CS1=0;
  61.                   delay_us(10);
  62.                   LED_CS1=1;
  63.                   break;
  64.                 }
  65.                 case 0x02:
  66.                 {
  67.                   LED_CS2=0;
  68.                   delay_us(10);
  69.                   LED_CS2=1;
  70.                   break;
  71.                 }
  72.                 case 0x03:
  73.                 {
  74.                   LED_CS3=0;
  75.                   delay_us(10);
  76.                   LED_CS3=1;
  77.                   break;
  78.                 }
  79.             case 0x04:
  80.                 {
  81.                   LED_CS4=0;
  82.                   delay_us(10);
  83.                   LED_CS4=1;
  84.                   break;
  85.                 }
  86.                 default:
  87.                   break;

  88.    }

  89. }
  90. /*******************************************************************************************
  91. *函數名稱:ledSweepDisplay(uchar *segCode,uchar segCodeMod,uchar segNumber)
  92. *函數功能:循環在數碼管上顯示緩沖區中的數據
  93. *函數入口:segCode,指向顯示緩沖區中的指針;segCodeMod,0~7位為1或0標示1~8位數碼管顯示的數據的類型(DIGITAL或者CHARACTER);segNumber,代表要顯示數碼管的位數
  94. *函數出口:無
  95. *說明:本函數主要實現將顯示緩沖區中的數據在數碼管上顯示出來
  96. *******************************************************************************************/                     
  97. void ledSweepDisplay(uchar *segCode,uchar segCodeMod,uchar segNumber)
  98. {
  99.            uchar segCount;
  100.         for(segCount=0;segCount<segNumber;segCount++)
  101.         {
  102.            if(segCodeMod&0x01)           /*1代表此處顯示任意字符 */
  103.            {
  104.              ledWrite(segCode[segCount],segCount+1,CHARACTER);
  105.            }
  106.            else
  107.            {
  108.              ledWrite(segCode[segCount],segCount+1,DIGITAL);
  109.            }
  110.            segCodeMod=segCodeMod>>1;
  111.         }
  112. }
復制代碼

0.png 0.png

全部資料下載(含仿真工程文件和完整代碼而且經過51hei.com測試通過):
數字頻率計.rar (20.4 KB, 下載次數: 98)

回復

使用道具 舉報

ID:487698 發表于 2020-5-29 17:28 來自觸屏版 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:764636 發表于 2020-5-29 21:37 來自觸屏版 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:764492 發表于 2020-5-29 21:42 | 顯示全部樓層
看暈了 ,天書一樣
回復

使用道具 舉報

ID:868397 發表于 2020-12-29 21:47 | 顯示全部樓層
優秀,我的設計跟這個也有關
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久一区二区三区 | 国产午夜精品视频 | 91精品久久久久久久久久小网站 | 一二三在线视频 | 亚洲一区二区三区在线视频 | 日韩国产一区二区三区 | 免费午夜视频在线观看 | 综合五月婷 | 免费99精品国产自在在线 | 日韩电影中文字幕 | 欧美人人 | 国产色99| 日韩第一区 | 国产精品国色综合久久 | 日韩中文字幕在线免费 | 精品一区av| 亚洲精品一区在线 | 欧美vide | 国产在线视频一区二区董小宛性色 | 爱爱视频在线观看 | 狠狠干五月天 | 久久精品小视频 | 中文字幕在线一区二区三区 | 男女视频免费 | 国产成都精品91一区二区三 | 精品欧美一区免费观看α√ | 日韩av大片免费看 | 精品久久久一区 | 九色.com | 一区二区国产精品 | 在线一区二区三区 | 逼逼网| av黄色在线 | 天堂色区 | 日韩中文在线视频 | 中文av电影| 黄色一级大片在线免费看产 | 国产丝袜一区二区三区免费视频 | 国产福利在线 | 国产精品久久久久久久久久久久久久 | 久在线观看 |