欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)INT0外部中斷脈沖計(jì)數(shù)Proteus仿真+源程序 [打印本頁]

作者: 張無    時(shí)間: 2019-3-10 18:47
標(biāo)題: 單片機(jī)INT0外部中斷脈沖計(jì)數(shù)Proteus仿真+源程序
主要是用單片機(jī) INT0中斷進(jìn)行脈沖計(jì)數(shù)
脈沖是由Clock元器件產(chǎn)生。
INT0外部中斷輸入脈沖。


設(shè)置舉例,設(shè)置高低高時(shí)鐘,頻率為10,則設(shè)置第一個(gè)邊沿出現(xiàn)時(shí)間為1.1。
INT0是低電平觸發(fā),設(shè)置出現(xiàn)時(shí)間為1.1剛好每秒增加數(shù)為10,并且每次都是10的倍數(shù)。


開關(guān)型霍爾元器件剛好是低電平,可以直接使用。

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


單片機(jī)源程序如下:
  1. // 脈沖計(jì)數(shù)
  2. // INT0中斷計(jì)數(shù)
  3. #include <reg51.h>

  4. sbit P2_0 = P2^0;//數(shù)碼管選定位
  5. sbit P2_1 = P2^1;//數(shù)碼管選定位
  6. sbit P2_2 = P2^2;//數(shù)碼管選定位
  7. sbit P2_3 = P2^3;//數(shù)碼管選定位

  8. //共陽極數(shù)碼管
  9. unsigned char code table[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};

  10. unsigned int motorspeed = 0;
  11. unsigned char GE, SHI, BAI, QIAN;
  12. unsigned int counter = 0;//脈沖數(shù)
  13. unsigned int calsp;//設(shè)定多長時(shí)間計(jì)數(shù)一次

  14. void display();//數(shù)碼管顯示
  15. void delay();//延遲函數(shù)
  16. void calspeed();

  17. void main()
  18. {
  19.         EA = 1;//開啟總中斷
  20.         EX0 = 1;//開啟外部中斷0
  21.         IT0 = 1;//設(shè)置成下降沿觸發(fā)方式
  22.         TMOD = 0x01;//設(shè)置定時(shí)器0為模式1,即16位計(jì)數(shù)模式
  23.         TH0 = (65536-10000)/256;//計(jì)數(shù)時(shí)間為10ms
  24.         TL0 = (65536-10000)%256;

  25.         ET0 = 1;//開啟定時(shí)器0中斷
  26.         TR0 = 1;//啟動(dòng)定時(shí)器0

  27.         P2 = P2&0xf0;//將P2的1~4置1

  28.         while(1)
  29.         {
  30.                 display();
  31.                 calspeed();
  32.         }

  33.         return ;
  34. }

  35. void calspeed()
  36. {
  37.         if (calsp == 100)//100*10=1s計(jì)算1次
  38.         {
  39.                 motorspeed = motorspeed + counter;
  40.                 counter = 0;//清零脈沖數(shù)
  41.                 calsp = 0;//清零標(biāo)志
  42.         }
  43. }

  44. //數(shù)碼管顯示函數(shù),依次點(diǎn)亮數(shù)碼管
  45. void display()
  46. {
  47.         GE = motorspeed%10;
  48.         SHI = motorspeed/10%10;
  49.         BAI = motorspeed/100%10;
  50.         QIAN = motorspeed/1000%10;

  51.         P2_0 = 1;
  52.         P0 = table[QIAN];
  53.         delay();
  54.         P2_0 = 0;

  55.         P2_1 = 1;
  56.         P0 = table[BAI];
  57.         delay();
  58.         P2_1 = 0;

  59.         P2_2 = 1;
  60.         P0 = table[SHI];
  61.         delay();
  62.         P2_2 = 0;

  63.         P2_3 = 1;
  64.         P0 = table[GE];
  65.         delay();
  66.         P2_3 = 0;
  67. }

  68. //延遲函數(shù)
  69. void delay()
  70. {
  71.         unsigned char i = 10;
  72.         while(i--)
  73.                 ;
  74. }

  75. void _TIMER0() interrupt 1
  76. {
  77.         TH0 = (65536-10000)/256;//重新裝入初值,計(jì)數(shù)時(shí)間為10ms
  78.         TL0 = (65536-10000)%256;
  79.         calsp++;
  80. }

  81. //INT0輸入
  82. void _INT0() interrupt 0
  83. {
  84.         counter++;
  85. }
復(fù)制代碼

所有資料51hei提供下載:
脈沖計(jì)數(shù)-20190310183300.zip (20.7 KB, 下載次數(shù): 145)


作者: 野良W    時(shí)間: 2019-5-2 13:52
請問下,周期變化的脈沖可以直接按這種方法用單片機(jī)采集嗎
作者: kevintang    時(shí)間: 2020-2-22 22:18
謝謝分享,學(xué)習(xí)學(xué)習(xí)。
作者: 1311260    時(shí)間: 2020-7-28 00:06
支持樓組的付出




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1