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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機數字頻率計仿真與程序 還有實物圖

[復制鏈接]
ID:221985 發表于 2017-7-24 13:28 | 顯示全部樓層 |閱讀模式
51單片機主控的數字頻率計設計資料,我的畢業設計 仿真加源碼

下面是實物圖:
0.png

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
0.png 0.png

單片機源程序如下:
  1. #include <reg52.h>
  2. sbit led0=P2^6;//換擋燈
  3. sbit led1=P2^7;
  4. void delay_ms(int x);
  5. unsigned char code table[]={   //不顯示小數點的數碼管段值表
  6. 0x3f,0x06,0x5b,0x4f,0x66,
  7. 0x6d,0x7d,0x07,0x7f,0x6f};
  8. unsigned char code tablewe[]={  //顯示小數點的數碼管段值表
  9. 0xbf,0x86,0xdb,0xcf,
  10. 0xe6,0xed,0xfd,0x87,
  11. 0xff,0xef};
  12. int count1=0;
  13. int time0=0;
  14. unsigned char a,b,c,d;
  15. unsigned long int f=0;
  16. void main()
  17. {       
  18.         TMOD=0x51;            //定時器1工作方式為16位計數器,定時器0工作方式為16位定時器
  19.         TH0=(65536-46080)/256;//定時50ms
  20.         TL0=(65536-46080)%256;
  21.         EA=1;//開總中斷
  22.         ET0=1;//開定時器0中斷
  23.         TR0=1;//啟動定時器0
  24.         ET1=1;//開定時器1中斷
  25.         IT1=1;//設置計數方式為下降沿計數
  26.         TR1=1;//啟動計數器1
  27.         led0=1;//開始讓兩個燈都滅
  28.         led1=1;
  29.         while(1)
  30.         {
  31.                 if(time0==20)      //定時1s時間到
  32.                 {
  33.                         TR1=0;        //關閉定時計數器
  34.                         TR0=0;
  35.                         f=count1*65536+TH1*256+TL1;  //1s時間測得的信號下降沿個數,即頻率
  36.                         if(f<1000)    //如果頻率小于1000Hz
  37.                         {       
  38.                                 led0=0;//Hz檔燈亮
  39.                                 led1=1;
  40.                                 while(1)
  41.                                 {
  42.                                         a=f/100;
  43.                                         P2=0x8f;      //消隱
  44.                                         P0=table[a];  //數碼管的百位值
  45.                                         P2=0x8d;
  46.                                         delay_ms(1);  //延時1ms
  47.                                         b=(f%100)/10;
  48.                                         P2=0x8f;      
  49.                                         P0=table[b];  //數碼管的十位值
  50.                                         P2=0x8b;
  51.                                         delay_ms(1);
  52.                                         c=f%100%10;
  53.                                         P2=0x8f;
  54.                                         P0=table[c];  //數碼管的個位值
  55.                                         P2=0x87;
  56.                                         delay_ms(1);
  57.                                 }                       
  58.                         }
  59.                     if(f>=1000&&f<10000) //從1000Hz開始,小數點的位置有所變化,采用四位數碼管顯示
  60.                     {
  61.                                    led0=1;//KHz檔燈亮
  62.                                 led1=0;
  63.                                 while(1)
  64.                                 {       
  65.                                         a=f/1000;
  66.                                         P2=0x6f;
  67.                                         P0=tablewe[a]; //小數點的位置在第一位
  68.                                         P2=0x6e;
  69.                                         delay_ms(1);
  70.                                         b=(f%1000)/100;
  71.                                         P2=0x6f;
  72.                                         P0=table[b];
  73.                                         P2=0x6d;
  74.                                         delay_ms(1);
  75.                                         c=(f%1000%100)/10;
  76.                                         P2=0x6f;
  77.                                         P0=table[c];
  78.                                         P2=0x6b;
  79.                                         delay_ms(1);
  80.                                         d=f%1000%100%10;
  81.                                         P2=0x6f;
  82.                                         P0=table[d];
  83.                                         P2=0x67;
  84.                                         delay_ms(1);
  85.                                 }
  86.                     }
  87.                         if(f>=10000&&f<100000)
  88.                         {
  89.                                 while(1)
  90.                                 {
  91.                                         a=f/10000;
  92.                                         P2=0x6f;
  93.                                         P0=table[a];
  94.                                         P2=0x6e;
  95.                                         delay_ms(1);
  96.                                         b=(f%10000)/1000;
  97.                                         P2=0x6f;
  98.                                         P0=tablewe[b];   //小數點的位置在第二位
  99.                                         P2=0x6d;
  100.                                         delay_ms(1);
  101.                                         c=f%10000%1000/100;
  102.                                         P2=0x6f;
  103.                                         P0=table[c];
  104.                                         P2=0x6b;
  105.                                         delay_ms(1);
  106.                                         d=f%10000%1000%100/10;
  107.                                         P2=0x6f;
  108.                                         P0=table[d];
  109.                                         P2=0x67;
  110.                                         delay_ms(1);
  111.                            }
  112.                         }
  113.                         if(f>=100000&&f<1000000)
  114.                         {
  115.                                 while(1)
  116.                                 {       
  117.                                         a=f/100000;
  118.                                         P2=0x6f;
  119.                                         P0=table[a];
  120.                                         P2=0x6e;
  121.                                         delay_ms(1);
  122.                                         b=(f%100000)/10000;
  123.                                         P2=0x6f;
  124.                                         P0=table[b];
  125.                                         P2=0x6d;
  126.                                         delay_ms(1);
  127.                                         c=(f%100000%10000)/1000;
  128.                                         P2=0x6f;
  129.                                         P0=tablewe[c];   //小數點的位置在第三位
  130.                                         P2=0x6b;
  131.                                         delay_ms(1);
  132.                                         d=(f%100000%10000%1000)/100;
  133.                                         P2=0x6f;
  134.                                         P0=table[d];
  135.                                         P2=0x67;
  136.                                         delay_ms(1);
  137.                            }       
  138.                         }
  139.                         if(f>=1000000)  //超出范圍的顯示
  140.                         {
  141.                                 while(1)
  142.                                 {       
  143.                                         P2=0xcf;
  144.                                         P0=0x7f;
  145.                                         P2=0xce;
  146.                                         delay_ms(1);
  147.                                         P2=0xcf;
  148.                                         P0=0x7f;
  149.                                         P2=0xcd;
  150.                                         delay_ms(1);
  151.                                         P2=0xcf;
  152.                                         P0=0x7f;
  153.                                         P2=0xcb;
  154.                                         delay_ms(1);
  155.                                         P2=0xcf;
  156.                                         P0=0x7f;
  157.                                         P2=0xc7;
  158.                                         delay_ms(1);
  159.                            }       
  160.                         }
  161.                 }
  162.         }
  163.        
  164. }


  165. ……………………

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

所有資料51hei提供下載:
51單片機數字頻率計.rar (3.25 MB, 下載次數: 230)




回復

使用道具 舉報

ID:313824 發表于 2018-4-22 16:38 | 顯示全部樓層
厲害了
回復

使用道具 舉報

ID:419299 發表于 2018-11-2 16:16 | 顯示全部樓層
一路看下來發現這個論壇資源豐富,真是目不暇接!感覺這個程序思路清晰,很有條理,便于移植。
回復

使用道具 舉報

ID:345430 發表于 2018-12-28 19:11 | 顯示全部樓層
厲害了
回復

使用道具 舉報

ID:350556 發表于 2019-3-23 09:55 | 顯示全部樓層
思路不錯,萌新拿走了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线免费 | 成人网av | 国产一级黄色网 | 国产九九九 | 国产a区| 九九热精品在线 | 久久成人18免费网站 | 99精品欧美一区二区三区综合在线 | 久久久久久国产精品久久 | 中文字幕动漫成人 | 国产精品日韩欧美 | 综合久久av | 国产最新网址 | 久久精品亚洲国产奇米99 | 国产高清免费 | 国产精品久久久久久久免费大片 | 蜜桃视频在线观看免费视频网站www | 久久99久久99精品免视看婷婷 | 日韩av中文 | 天天插天天操 | 亚洲综合二区 | 国产精品亚洲精品 | 男女网站视频 | 欧美八区 | 国内自拍偷拍 | 在线一区二区三区 | 日韩av成人 | 羞羞视频网站免费观看 | 亚洲精品乱码久久久久久9色 | 欧美大片黄 | 亚洲狠狠爱一区二区三区 | 国产在线精品一区二区 | 成人精品一区 | 国产精品成人在线播放 | 99免费在线视频 | 欧美精品一区二区三区在线播放 | 天天色天天 | 日韩福利在线观看 | 日韩欧美视频 | 久草99| 精品久久久久久久久久久 |