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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4059|回復: 1
收起左側

51單片機+Proteus仿真實時1秒鐘讀取的脈沖數量源程序

[復制鏈接]
ID:298663 發表于 2019-10-25 16:07 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
protues.png

單片機源程序如下:
  1. /************************************************************************************************************\
  2. **文件名稱:xx.c
  3. **功能描述:計算一秒鐘延時瞬間脈沖數量
  4. **日期:2019.10.25
  5. **版本:v1
  6. ***************************************************************************************************************/

  7. #include <reg51.h>

  8. #define uchar unsigned char
  9. #define uint  unsigned int
  10. uchar code numtab[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//定義共陽數碼管0-9


  11. uint pulse_time;    //定義一個定時中斷變量
  12. uint pulse_count;  //定義脈沖低電平變量
  13. uint pulse;        //定義1秒脈沖數變量

  14. /***************************************************************************************************\
  15. **函數名稱;初始化定時和外部中斷
  16. **
  17. ****************************************************************************************************/
  18. void MCU_init()
  19. {
  20.     EX0=1;//開外部中斷0
  21.     PX0=1;// 外部中斷0高優先級
  22.     IT0=1;//觸發模式0= 電平 1=邊沿觸發
  23.     TMOD = 0x11;
  24.     ET1=1;
  25.     TR1=1;

  26.          TH1 = (65535-25000)/256;   //載入初值,設置定時器1 25ms中斷一次
  27.          TL1 = (65535-25000)%256;
  28.          EA=1;                                                                                
  29.         
  30.         
  31. }
  32. /*******************************************************************************************\
  33. **函數名稱:定時器1入口
  34. **功能:50us中斷一次
  35. ***************************************************************************************************/
  36. void TIME1() interrupt 3
  37. {
  38.         
  39.         pulse_time++;
  40.         if(pulse_time==40)  //達到1000ms,即1s鐘
  41.            {
  42.                     pulse_time=0;   //定時中斷變量復位
  43.                     pulse=pulse_count/2;    //一個周期脈沖有兩次低電平信號,所以1秒鐘脈沖數量為總低電平次數除以2
  44.                           pulse_count=0;      //復位脈沖低電平變量
  45.             }
  46.         
  47.         
  48. }
  49. /*******************************************************************************************\
  50. **函數名稱:外部中斷入口
  51. **功能:檢測沒沖低電平信號
  52. ***************************************************************************************************/
  53. void IINT0() interrupt 0
  54. {
  55.         
  56.         pulse_count++;  //當脈沖信號低電平時候+1;
  57.                
  58. }
  59. /*********************************************************************\
  60. **函數名稱:delay(uint m)
  61. **功能:延時函數
  62. **********************************************************************/
  63. void delay(uchar m)
  64. {
  65.         uchar i,y;
  66.         for(i=m;i>0;i--)
  67.          for(y=110;y>0;y--);
  68. }
  69. /*********************************************************************\
  70. **函數名稱:display(uint xx)
  71. **功能:4位數碼管顯示程序
  72. **********************************************************************/
  73. void display(uint xx)
  74. {
  75.         if(xx>=0&&xx<10)
  76.         {
  77.                 P2=0X08;
  78.                 P0=numtab[xx];        
  79.                 delay(3);
  80.                 P0=0XFF;
  81.         }
  82.         if(xx>=10&&xx<100)
  83.         {
  84.                 P2=0X04;
  85.                 P0=numtab[xx/10];
  86.                 delay(3);P0=0XFF;
  87.                 P2=0X08;
  88.                 P0=numtab[xx%10];
  89.                 delay(3);P0=0XFF;
  90.         }
  91.         if(xx>=100&&xx<1000)
  92.         {
  93.                 P2=0X02;
  94.                 P0=numtab[xx/100];
  95.                 delay(3);P0=0XFF;
  96.                 P2=0X04;
  97.                 P0=numtab[xx%100/10];
  98.                 delay(3);P0=0XFF;
  99.                 P2=0X08;
  100.                 P0=numtab[xx%100%10];
  101.                 delay(3);P0=0XFF;
  102.         }
  103.         if(xx>=1000&&xx<10000)
  104.         {
  105.                 P2=0X01;
  106.                 P0=numtab[xx/1000];
  107.                 delay(3);P0=0XFF;
  108.                 P2=0X02;
  109.                 P0=numtab[xx%1000/100];
  110.                 delay(3);P0=0XFF;
  111.                 P2=0X04;
  112.                 P0=numtab[xx%1000%100/10];
  113.                 delay(3);P0=0XFF;
  114.                 P2=0X08;
  115.                 P0=numtab[xx%1000%100%10];
  116.                 delay(3);P0=0XFF;
  117.         }
  118.         

  119. }
  120. //主函數入口
  121. void main()
  122. {

  123.          MCU_init(); //初始化
  124.          delay(1000);
  125.         while(1)
  126.         {
  127.          
  128.                 display(pulse);
  129.         }
  130. }
復制代碼
0.png
所有資料51hei提供下載:
脈沖計數.zip (79.66 KB, 下載次數: 51)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:801963 發表于 2020-7-17 16:07 | 顯示全部樓層
emmmm說好的Proteus工程文件可在附件中下載呢?下載了沒找到Proteus的文件
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色橹橹欧美在线观看视频高清 | 国产二区三区 | 中文字幕av网 | 亚洲高清视频一区二区 | 国产一区2区 | 久久伊人一区二区 | 日韩国产高清在线观看 | 久久在线 | 欧美一级网站 | 欧美网站一区二区 | 一区二区视频在线 | 免费不卡av | 91免费高清视频 | 看黄在线| 97国产精品视频人人做人人爱 | a在线观看 | 精品欧美乱码久久久久久 | 一级毛片中国 | 国产精品夜夜春夜夜爽久久电影 | 91不卡| 99亚洲国产精品 | 日韩欧美国产精品 | 亚洲欧美一区二区三区国产精品 | 中文字幕一区二区三区四区 | 综合色播| 国产精品欧美一区二区三区 | 国产在线成人 | 日韩a| 国产精品久久久精品 | 欧美成人h版在线观看 | 91婷婷韩国欧美一区二区 | 久久天天躁狠狠躁夜夜躁2014 | 久草中文网 | 国产精品毛片无码 | 国内精品成人 | 欧美精品久久久久久久久老牛影院 | 亚洲国产视频一区二区 | 亚洲精品国产综合区久久久久久久 | 九九九久久国产免费 | 国内精品成人 | 美女日批免费视频 |