标题: 51单片机外部正脉冲宽度测量并显示在LED数码管 仿真程序 [打印本页]

作者: onlybully    时间: 2023-6-3 23:20
标题: 51单片机外部正脉冲宽度测量并显示在LED数码管 仿真程序
看到这类资料比较少,拿去学习使用
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define uLint unsigned long int

  5. void delayMs(uint x);

  6. uchar countInterrupt=0;
  7. sbit P3_3=P3^3;

  8. uchar code seg_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  9. uint displayTable[]={0,0,0,0,0,0,0,0};

  10. void main(void)
  11. {
  12.   uchar cBitCode,i;
  13.   uLint count;
  14.         ET1=1;
  15.         EA=1;
  16.         
  17.         TH1=0;
  18.         TL1=0;
  19.         TMOD=0x90;//gate=1,method 1
  20.         
  21.         while(P3_3==1);        
  22.         
  23.         TR1=1;
  24.         while(P3_3==0);        
  25.         while(P3_3==1);        
  26.         TR1=0;
  27.         
  28.         count=(uLint)TH1*256+TL1;
  29.         count=count*2;
  30.         count=(uLint)countInterrupt*65536*2+count;
  31.         displayTable[0]=count/10000000;
  32.         displayTable[1]=count%10000000/1000000;
  33.         displayTable[2]=count%1000000/100000;
  34.         displayTable[3]=count%100000/10000;
  35.   displayTable[4]=count%10000/1000;
  36.         displayTable[5]=count%1000/100;
  37.         displayTable[6]=count%100/10;
  38.         displayTable[7]=count%10;
  39.         
  40.         while(1)
  41.         {
  42.                 cBitCode=0x01;
  43.                 for(i=0;i<8;i++)
  44.                 {
  45.                          P2= ~ seg_table[displayTable[i]];
  46.                          P1= ~cBitCode;
  47.                          delayMs(1);
  48.                          P1=0xFF;
  49.                          cBitCode<<=1;
  50.                  }
  51.          }
  52. }


  53. void delayMs(uint x)
  54. {
  55.   uchar j;
  56.   while(x--)
  57.   {
  58.      for(j=0;j<125;j++)
  59.            ;
  60.   }
  61. }

  62. void timer1_src(void) interrupt 3
  63. {
  64.         countInterrupt++;
  65. }
复制代码

Keil代码与Proteus仿真下载:
仿真程序.7z (76.68 KB, 下载次数: 27)
[attach]315157[/attach]







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1