找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 602|回复: 0
打印 上一主题 下一主题
收起左侧

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, 下载次数: 25)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表